diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7904fd4
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,18 @@
+user.config
+engine
+bin
+obj
+mods/*/*.dll
+mods/*/*.mdb
+mods/*/*.pdb
+/*.dll
+/*.dll.config
+/*.so
+/*.dylib
+/*.pdb
+/*.mdb
+/*.exe
+DOCUMENTATION.md
+Lua-API.md
+StyleCopViolations.xml
+.DS_Store
\ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..e69de29
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..1b9efa0
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,35 @@
+# Travis-CI Build for OpenRAModSDK
+# see travis-ci.org for details
+
+language: csharp
+mono: 4.6.1
+sudo: false
+
+addons:
+ apt:
+ packages:
+ - liblua5.1-0
+ - nsis
+ - nsis-common
+
+script:
+ - make
+ - . mod.config;
+ if [ "${TRAVIS_TEST_MOD}" == "True" ]; then make test || travis_terminate 1; fi;
+ if [ "${TRAVIS_TEST_PACKAGING}" == "True" ]; then ./packaging/package-all.sh test-0 || travis_terminate 1; fi
+
+before_deploy:
+ - mkdir build
+ - cd build && ../packaging/package-all.sh ${TRAVIS_TAG} ${PWD} && cd ..
+ - . mod.config
+
+deploy:
+ provider: releases
+ api_key: ${GH_DEPLOY_API_KEY}
+ file:
+ - build/${PACKAGING_INSTALLER_NAME}-${TRAVIS_TAG}.exe
+ - build/${PACKAGING_INSTALLER_NAME}-${TRAVIS_TAG}-macOS.zip
+ - build/${PACKAGING_INSTALLER_NAME}-${TRAVIS_TAG}-winportable.zip
+ skip_cleanup: true
+ on:
+ tags: true
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..18c4b5e
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,76 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as
+contributors and maintainers pledge to making participation in our project and
+our community a harassment-free experience for everyone, regardless of age, body
+size, disability, ethnicity, gender identity and expression, level of experience,
+nationality, personal appearance, race, religion, or sexual identity and
+orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment
+include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or
+advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic
+ address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable
+behavior and are expected to take appropriate and fair corrective action in
+response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct, or to ban temporarily or
+permanently any contributor for other behaviors that they deem inappropriate,
+threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community. Examples of
+representing a project or community include using an official project e-mail
+address, posting via an official social media account, or acting as an appointed
+representative at an online or offline event. Representation of a project may be
+further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by private-messaging a project team member (users with a + in front
+of their name) via our IRC channel (#openra on freenode –
+[webchat](http://webchat.freenode.net/?channels=openra)). All
+complaints will be reviewed and investigated and will result in a response that
+is deemed necessary and appropriate to the circumstances. The project team is
+obligated to maintain confidentiality with regard to the reporter of an incident.
+Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good
+faith may face temporary or permanent repercussions as determined by other
+members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
+available at [http://contributor-covenant.org/version/1/4][version]
+
+[homepage]: http://contributor-covenant.org
+[version]: http://contributor-covenant.org/version/1/4/
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..14ee84e
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,15 @@
+# OpenRA Mod SDK Contributing Guidelines
+
+Thank you for your interest in OpenRA, OpenRA modding, and the OpenRA Mod SDK. OpenRA is an open source project, and our community members – you – are the driving force behind it. There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug reports and feature requests or writing code which can be incorporated into OpenRA, the Mod SDK, or our other sub-projects.
+
+Please note that this repository is specifically for the scripts and infrastructure used to develop and build mods; bugs and feature requests against OpenRA itself should be directed to [the main OpenRA/OpenRA repository](https://github.com/OpenRA/OpenRA). If you do come across a bug with the Mod SDK, or would like to request a new feature, then please take a look at the issue tracker first to see if it has already been reported.
+
+When developing new features, it is important to make sure that they work on all our supported platforms. Right now, this means Windows >= 7 (with PowerShell >= 3), macOS >= 10.7, and Linux. We would like to also support *BSD, but do not currently have a means to test this.
+
+Some issues to be aware of include:
+* Use http://www.shellcheck.net/ to confirm POSIX compatibility of *.sh scripts.
+* Avoid non-standard gnu extensions to common Unix tools (e.g. the `-f` flag from GNU `readlink`)
+
+While your pull-request is in review it will be helpful if you join IRC to discuss the changes.
+
+See also the in-depth guide on [contributing](https://github.com/OpenRA/OpenRA/wiki/Contributing) on the main OpenRA project wiki. Most of the content on this page also applies to the Mod SDK.
\ No newline at end of file
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..e637d82
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,94 @@
+############################# INSTRUCTIONS #############################
+#
+# to compile, run:
+# make
+#
+# to remove the files created by compiling, run:
+# make clean
+#
+# to set the mods version, run:
+# make version [VERSION="custom-version"]
+#
+# to check lua scripts for syntax errors, run:
+# make check-scripts
+#
+# to check the official mods for erroneous yaml files, run:
+# make test
+#
+# to check the official mod dlls for StyleCop violations, run:
+# make check
+#
+
+.PHONY: utility stylecheck build clean engine version check-scripts check test
+.DEFAULT_GOAL := build
+
+VERSION = $(shell git name-rev --name-only --tags --no-undefined HEAD 2>/dev/null || echo git-`git rev-parse --short HEAD`)
+MOD_ID = $(shell cat user.config mod.config 2> /dev/null | awk -F= '/MOD_ID/ { print $$2; exit }')
+ENGINE_DIRECTORY = $(shell cat user.config mod.config 2> /dev/null | awk -F= '/ENGINE_DIRECTORY/ { print $$2; exit }')
+INCLUDE_DEFAULT_MODS = $(shell cat user.config mod.config 2> /dev/null | awk -F= '/INCLUDE_DEFAULT_MODS/ { print $$2; exit }')
+
+MOD_SEARCH_PATHS = "$(shell python -c "import os; print(os.path.realpath('.'))")/mods"
+ifeq ($(INCLUDE_DEFAULT_MODS),"True")
+ MOD_SEARCH_PATHS := "$(MOD_SEARCH_PATHS),./mods"
+endif
+
+MANIFEST_PATH = "mods/$(MOD_ID)/mod.yaml"
+
+HAS_MSBUILD = $(shell command -v msbuild 2> /dev/null)
+HAS_LUAC = $(shell command -v luac 2> /dev/null)
+LUA_FILES = $(shell find mods/*/maps/* -iname '*.lua')
+PROJECT_DIRS = $(shell dirname $$(find . -iname "*.csproj" -not -path "$(ENGINE_DIRECTORY)/*"))
+
+engine:
+ @./fetch-engine.sh || (printf "Unable to continue without engine files\n"; exit 1)
+ @cd $(ENGINE_DIRECTORY) && make core
+
+utility: engine
+ @test -f "$(ENGINE_DIRECTORY)/OpenRA.Utility.exe" || (printf "OpenRA.Utility.exe not found!\n"; exit 1)
+
+stylecheck: engine
+ @test -f "$(ENGINE_DIRECTORY)/OpenRA.StyleCheck.exe" || (cd $(ENGINE_DIRECTORY) && make stylecheck)
+
+build: engine
+ifeq ("$(HAS_MSBUILD)","")
+ @find . -maxdepth 1 -name '*.sln' -exec xbuild /nologo /verbosity:quiet /p:TreatWarningsAsErrors=true \;
+else
+ @find . -maxdepth 1 -name '*.sln' -exec msbuild /t:Rebuild /nr:false \;
+endif
+
+clean: engine
+ifeq ("$(HAS_MSBUILD)","")
+ @find . -maxdepth 1 -name '*.sln' -exec xbuild /nologo /verbosity:quiet /p:TreatWarningsAsErrors=true /t:Clean \;
+else
+ @find . -maxdepth 1 -name '*.sln' -exec msbuild /t:Clean /nr:false \;
+endif
+ @cd $(ENGINE_DIRECTORY) && make clean
+ @printf "The engine has been cleaned.\n"
+
+version:
+ @awk '{sub("Version:.*$$","Version: $(VERSION)"); print $0}' $(MANIFEST_PATH) > $(MANIFEST_PATH).tmp && \
+ awk '{sub("/[^/]*: User$$", "/$(VERSION): User"); print $0}' $(MANIFEST_PATH).tmp > $(MANIFEST_PATH) && \
+ rm $(MANIFEST_PATH).tmp
+ @printf "Version changed to $(VERSION).\n"
+
+check-scripts:
+ifeq ("$(HAS_LUAC)","")
+ @printf "'luac' not found.\n" && exit 1
+endif
+ @echo
+ @echo "Checking for Lua syntax errors..."
+ifneq ("$(LUA_FILES)","")
+ @luac -p $(LUA_FILES)
+endif
+
+check: utility stylecheck
+ @echo "Checking for explicit interface violations..."
+ @MOD_SEARCH_PATHS="$(MOD_SEARCH_PATHS)" mono --debug "$(ENGINE_DIRECTORY)/OpenRA.Utility.exe" $(MOD_ID) --check-explicit-interfaces
+ @for i in $(PROJECT_DIRS) ; do \
+ echo "Checking for code style violations in $${i}...";\
+ mono --debug "$(ENGINE_DIRECTORY)/OpenRA.StyleCheck.exe" $${i};\
+ done
+
+test: utility
+ @echo "Testing $(MOD_ID) mod MiniYAML..."
+ @MOD_SEARCH_PATHS="$(MOD_SEARCH_PATHS)" mono --debug "$(ENGINE_DIRECTORY)/OpenRA.Utility.exe" $(MOD_ID) --check-yaml
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..0e9a510
--- /dev/null
+++ b/README.md
@@ -0,0 +1,17 @@
+This repository contains a bare development environment for creating a new mod/game on the [OpenRA](https://github.com/OpenRA/OpenRA) engine.
+
+These scripts and support files wrap and automatically manage a copy of the OpenRA game engine and common files, and provide entrypoints to run development versions of your project and to generate platform-specific installers for your players.
+
+The key scripts in this SDK are:
+
+| Windows | Linux / macOS | Purpose
+| --------------------- | ------------------------ | ------------- |
+| make.cmd | Makefile | Compiles your project and fetches dependencies (including the OpenRA engine).
+| launch-game.cmd | launch-game.sh | Launches your project from the SDK directory.
+| launch-server.cmd | launch-server.sh | Launches a dedicated server for your project from the SDK directory.
+| utility.cmd | utility.sh | Launches the OpenRA Utility for your project.
+| <not available> | packaging/package-all.sh | Generates release installers for your project.
+
+To launch your project from the development environment you must first compile the project by running `make.cmd` (Windows), or opening a terminal in the SDK directory and running `make` (Linux / macOS). You can then run `launch-game.cmd` (Windows) or `launch-game.sh` (Linux / macOS) to run your game.
+
+The `example` mod included in this repository provides the bare minimum structure to launch to the in-game main menu for the sole purpose of demonstrating the SDK. See [Getting Started](https://github.com/OpenRA/OpenRAModTemplate/wiki/Getting-Started) on the Wiki for instructions on how to adapt this template for your own projects. For common questions, please see the [FAQ](https://github.com/OpenRA/OpenRAModSDK/wiki/FAQ).
diff --git a/fetch-engine.sh b/fetch-engine.sh
new file mode 100644
index 0000000..0e53acd
--- /dev/null
+++ b/fetch-engine.sh
@@ -0,0 +1,61 @@
+#!/bin/sh
+# Helper script used to check and update engine dependencies
+# This should not be called manually
+
+command -v curl >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires curl."; exit 1; }
+command -v python >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires python."; exit 1; }
+
+TEMPLATE_LAUNCHER=$(python -c "import os; print(os.path.realpath('$0'))")
+TEMPLATE_ROOT=$(dirname "${TEMPLATE_LAUNCHER}")
+
+# shellcheck source=mod.config
+. "${TEMPLATE_ROOT}/mod.config"
+
+if [ -f "${TEMPLATE_ROOT}/user.config" ]; then
+ # shellcheck source=user.config
+ . "${TEMPLATE_ROOT}/user.config"
+fi
+
+CURRENT_ENGINE_VERSION=$(cat "${ENGINE_DIRECTORY}/VERSION" 2> /dev/null)
+
+if [ -f "${ENGINE_DIRECTORY}/VERSION" ] && [ "${CURRENT_ENGINE_VERSION}" = "${ENGINE_VERSION}" ]; then
+ exit 0
+fi
+
+if [ "${AUTOMATIC_ENGINE_MANAGEMENT}" = "True" ]; then
+ echo "OpenRA engine version ${ENGINE_VERSION} is required."
+
+ if [ -d "${ENGINE_DIRECTORY}" ]; then
+ if [ "${CURRENT_ENGINE_VERSION}" != "" ]; then
+ echo "Deleting engine version ${CURRENT_ENGINE_VERSION}."
+ else
+ echo "Deleting existing engine (unknown version)."
+ fi
+
+ rm -rf "${ENGINE_DIRECTORY}"
+ fi
+
+ echo "Downloading engine..."
+ curl -s -L -o "${AUTOMATIC_ENGINE_TEMP_ARCHIVE_NAME}" -O "${AUTOMATIC_ENGINE_SOURCE}" || exit 3
+
+ # Github zipballs package code with a top level directory named based on the refspec
+ # Extract to a temporary directory and then move the subdir to our target location
+ REFNAME=$(unzip -qql "${AUTOMATIC_ENGINE_TEMP_ARCHIVE_NAME}" | head -n1 | tr -s ' ' | cut -d' ' -f5-)
+
+ rm -rf "${AUTOMATIC_ENGINE_EXTRACT_DIRECTORY}"
+ mkdir "${AUTOMATIC_ENGINE_EXTRACT_DIRECTORY}"
+ unzip -qq -d "${AUTOMATIC_ENGINE_EXTRACT_DIRECTORY}" "${AUTOMATIC_ENGINE_TEMP_ARCHIVE_NAME}"
+ mv "${AUTOMATIC_ENGINE_EXTRACT_DIRECTORY}/${REFNAME}" "${ENGINE_DIRECTORY}"
+ rmdir "${AUTOMATIC_ENGINE_EXTRACT_DIRECTORY}"
+ rm "${AUTOMATIC_ENGINE_TEMP_ARCHIVE_NAME}"
+
+ echo "Compiling engine..."
+ cd "${ENGINE_DIRECTORY}" || exit 1
+ make version VERSION="${ENGINE_VERSION}"
+ exit 0
+fi
+
+echo "Automatic engine management is disabled."
+echo "Please manually update the engine to version ${ENGINE_VERSION}."
+exit 1
+
diff --git a/launch-dedicated.cmd b/launch-dedicated.cmd
new file mode 100644
index 0000000..f5f07cc
--- /dev/null
+++ b/launch-dedicated.cmd
@@ -0,0 +1,34 @@
+:: example launch script, see https://github.com/OpenRA/OpenRA/wiki/Dedicated for details
+
+@echo on
+
+set Name="Dedicated Server"
+set ListenPort=1234
+set ExternalPort=1234
+set AdvertiseOnline=True
+set EnableSingleplayer=False
+set Password=""
+
+@echo off
+
+title %Name%
+FOR /F "tokens=1,2 delims==" %%A IN (mod.config) DO (set %%A=%%B)
+if exist user.config (FOR /F "tokens=1,2 delims==" %%A IN (user.config) DO (set %%A=%%B))
+
+set MOD_SEARCH_PATHS=%~dp0mods
+if %INCLUDE_DEFAULT_MODS% neq "True" goto start
+set MOD_SEARCH_PATHS=%MOD_SEARCH_PATHS%,./mods
+
+:start
+if not exist %ENGINE_DIRECTORY%\OpenRA.Game.exe goto noengine
+cd %ENGINE_DIRECTORY%
+
+:loop
+OpenRA.Server.exe Game.Mod=%MOD_ID% Server.Name=%Name% Server.ListenPort=%ListenPort% Server.ExternalPort=%ExternalPort% Server.AdvertiseOnline=%AdvertiseOnline% Server.EnableSingleplayer=%EnableSingleplayer% Server.Password=%Password%
+goto loop
+
+:noengine
+echo Required engine files not found.
+echo Run `make all` in the mod directory to fetch and build the required files, then try again.
+pause
+exit /b
\ No newline at end of file
diff --git a/launch-dedicated.sh b/launch-dedicated.sh
new file mode 100644
index 0000000..407befc
--- /dev/null
+++ b/launch-dedicated.sh
@@ -0,0 +1,49 @@
+#!/bin/sh
+# Usage:
+# $ ./launch-dedicated.sh # Launch a dedicated server with default settings
+# $ Mod="" ./launch-dedicated.sh # Launch a dedicated server with default settings but override the Mod
+# Read the file to see which settings you can override
+
+set -e
+command -v python >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires python."; exit 1; }
+command -v mono >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires mono."; exit 1; }
+
+TEMPLATE_LAUNCHER=$(python -c "import os; print(os.path.realpath('$0'))")
+TEMPLATE_ROOT=$(dirname "${TEMPLATE_LAUNCHER}")
+
+# shellcheck source=mod.config
+. "${TEMPLATE_ROOT}/mod.config"
+
+if [ -f "${TEMPLATE_ROOT}/user.config" ]; then
+ # shellcheck source=user.config
+ . "${TEMPLATE_ROOT}/user.config"
+fi
+
+MOD_SEARCH_PATHS="${TEMPLATE_ROOT}/mods"
+if [ "${INCLUDE_DEFAULT_MODS}" = "True" ]; then
+ MOD_SEARCH_PATHS="${MOD_SEARCH_PATHS},./mods"
+fi
+
+NAME="${Name:-"Dedicated Server"}"
+LAUNCH_MOD="${Mod:-"${MOD_ID}"}"
+LISTEN_PORT="${ListenPort:-"1234"}"
+EXTERNAL_PORT="${ExternalPort:-"1234"}"
+ADVERTISE_ONLINE="${AdvertiseOnline:-"True"}"
+ENABLE_SINGLE_PLAYER="${EnableSingleplayer:-"False"}"
+PASSWORD="${Password:-""}"
+
+cd "${TEMPLATE_ROOT}"
+if [ ! -f "${ENGINE_DIRECTORY}/OpenRA.Game.exe" ]; then
+ echo "Required engine files not found."
+ echo "Run \`make\` in the mod directory to fetch and build the required files, then try again.";
+ exit 1
+fi
+
+cd "${ENGINE_DIRECTORY}"
+
+while true; do
+ MOD_SEARCH_PATHS="${MOD_SEARCH_PATHS}" mono --debug OpenRA.Server.exe Game.Mod="${LAUNCH_MOD}" \
+ Server.Name="${NAME}" Server.ListenPort="${LISTEN_PORT}" Server.ExternalPort="${EXTERNAL_PORT}" \
+ Server.AdvertiseOnline="${ADVERTISE_ONLINE}" \
+ Server.EnableSingleplayer="${ENABLE_SINGLE_PLAYER}" Server.Password="${PASSWORD}"
+done
diff --git a/launch-game.cmd b/launch-game.cmd
new file mode 100644
index 0000000..56a982a
--- /dev/null
+++ b/launch-game.cmd
@@ -0,0 +1,35 @@
+@echo off
+title OpenRA
+FOR /F "tokens=1,2 delims==" %%A IN (mod.config) DO (set %%A=%%B)
+if exist user.config (FOR /F "tokens=1,2 delims==" %%A IN (user.config) DO (set %%A=%%B))
+
+set TEMPLATE_LAUNCHER=%0
+set MOD_SEARCH_PATHS=%~dp0mods
+if %INCLUDE_DEFAULT_MODS% neq "True" goto launch
+set MOD_SEARCH_PATHS=%MOD_SEARCH_PATHS%,./mods
+
+:launch
+set TEMPLATE_DIR=%CD%
+if not exist %ENGINE_DIRECTORY%\OpenRA.Game.exe goto noengine
+
+cd %ENGINE_DIRECTORY%
+OpenRA.Game.exe Game.Mod=%MOD_ID% Engine.LaunchPath="%TEMPLATE_LAUNCHER%" "Engine.ModSearchPaths=%MOD_SEARCH_PATHS%" "%*"
+set ERROR=%errorlevel%
+cd %TEMPLATE_DIR%
+
+if %ERROR% neq 0 goto crashdialog
+exit /b
+
+:noengine
+echo Required engine files not found.
+echo Run `make all` in the mod directory to fetch and build the required files, then try again.
+pause
+exit /b
+
+:crashdialog
+echo ----------------------------------------
+echo OpenRA has encountered a fatal error.
+echo * Log Files are available in Documents\OpenRA\Logs
+echo * FAQ is available at https://github.com/OpenRA/OpenRA/wiki/FAQ
+echo ----------------------------------------
+pause
diff --git a/launch-game.sh b/launch-game.sh
new file mode 100644
index 0000000..3094b39
--- /dev/null
+++ b/launch-game.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+set -e
+command -v python >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires python."; exit 1; }
+command -v mono >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires mono."; exit 1; }
+
+TEMPLATE_LAUNCHER=$(python -c "import os; print(os.path.realpath('$0'))")
+TEMPLATE_ROOT=$(dirname "${TEMPLATE_LAUNCHER}")
+
+# shellcheck source=mod.config
+. "${TEMPLATE_ROOT}/mod.config"
+
+if [ -f "${TEMPLATE_ROOT}/user.config" ]; then
+ # shellcheck source=user.config
+ . "${TEMPLATE_ROOT}/user.config"
+fi
+
+MOD_SEARCH_PATHS="${TEMPLATE_ROOT}/mods"
+if [ "${INCLUDE_DEFAULT_MODS}" = "True" ]; then
+ MOD_SEARCH_PATHS="${MOD_SEARCH_PATHS},./mods"
+fi
+
+cd "${TEMPLATE_ROOT}"
+if [ ! -f "${ENGINE_DIRECTORY}/OpenRA.Game.exe" ]; then
+ echo "Required engine files not found."
+ echo "Run \`make\` in the mod directory to fetch and build the required files, then try again.";
+ exit 1
+fi
+
+cd "${ENGINE_DIRECTORY}"
+mono OpenRA.Game.exe Engine.LaunchPath="${TEMPLATE_LAUNCHER}" "Engine.ModSearchPaths=${MOD_SEARCH_PATHS}" Game.Mod="${MOD_ID}" "$@"
diff --git a/make.cmd b/make.cmd
new file mode 100644
index 0000000..92b05b7
--- /dev/null
+++ b/make.cmd
@@ -0,0 +1 @@
+@powershell -NoProfile -ExecutionPolicy Bypass -File make.ps1 %*
diff --git a/make.ps1 b/make.ps1
new file mode 100644
index 0000000..58ed470
--- /dev/null
+++ b/make.ps1
@@ -0,0 +1,378 @@
+####### The starting point for the script is the bottom #######
+
+###############################################################
+########################## FUNCTIONS ##########################
+###############################################################
+function All-Command
+{
+ If (!(Test-Path "*.sln"))
+ {
+ return
+ }
+
+ $msBuild = FindMSBuild
+ $msBuildArguments = "/t:Rebuild /nr:false"
+ if ($msBuild -eq $null)
+ {
+ echo "Unable to locate an appropriate version of MSBuild."
+ }
+ else
+ {
+ $proc = Start-Process $msBuild $msBuildArguments -NoNewWindow -PassThru -Wait
+ if ($proc.ExitCode -ne 0)
+ {
+ echo "Build failed. If just the development tools failed to build, try installing Visual Studio. You may also still be able to run the game."
+ }
+ else
+ {
+ echo "Build succeeded."
+ }
+ }
+}
+
+function Clean-Command
+{
+ If (!(Test-Path "*.sln"))
+ {
+ return
+ }
+
+ $msBuild = FindMSBuild
+ $msBuildArguments = "/t:Clean /nr:false"
+ if ($msBuild -eq $null)
+ {
+ echo "Unable to locate an appropriate version of MSBuild."
+ }
+ else
+ {
+ $proc = Start-Process $msBuild $msBuildArguments -NoNewWindow -PassThru -Wait
+ rm *.dll
+ rm *.dll.config
+ rm mods/*/*.dll
+ rm *.pdb
+ rm mods/*/*.pdb
+ rm *.exe
+ rm ./*/bin -r
+ rm ./*/obj -r
+ echo "Clean complete."
+ }
+}
+
+function Version-Command
+{
+ if ($command.Length -gt 1)
+ {
+ $version = $command[1]
+ }
+ elseif (Get-Command 'git' -ErrorAction SilentlyContinue)
+ {
+ $gitRepo = git rev-parse --is-inside-work-tree
+ if ($gitRepo)
+ {
+ $version = git name-rev --name-only --tags --no-undefined HEAD 2>$null
+ if ($version -eq $null)
+ {
+ $version = "git-" + (git rev-parse --short HEAD)
+ }
+ }
+ else
+ {
+ echo "Not a git repository. The version will remain unchanged."
+ }
+ }
+ else
+ {
+ echo "Unable to locate Git. The version will remain unchanged."
+ }
+
+ if ($version -ne $null)
+ {
+ $mod = "mods/" + $modID + "/mod.yaml"
+ $replacement = (gc $mod) -Replace "Version:.*", ("Version: {0}" -f $version)
+ sc $mod $replacement
+
+ $prefix = $(gc $mod) | Where { $_.ToString().EndsWith(": User") }
+ if ($prefix -and $prefix.LastIndexOf("/") -ne -1)
+ {
+ $prefix = $prefix.Substring(0, $prefix.LastIndexOf("/"))
+ }
+ $replacement = (gc $mod) -Replace ".*: User", ("{0}/{1}: User" -f $prefix, $version)
+ sc $mod $replacement
+
+ echo ("Version strings set to '{0}'." -f $version)
+ }
+}
+
+function Test-Command
+{
+ if (Test-Path $utilityPath)
+ {
+ echo "Testing $modID mod MiniYAML"
+ Invoke-Expression "$utilityPath $modID --check-yaml"
+ }
+ else
+ {
+ UtilityNotFound
+ }
+}
+
+function Check-Command
+{
+ if (Test-Path $utilityPath)
+ {
+ echo "Checking for explicit interface violations..."
+ Invoke-Expression "$utilityPath $modID --check-explicit-interfaces"
+ }
+ else
+ {
+ UtilityNotFound
+ }
+
+ if (Test-Path $styleCheckPath)
+ {
+ echo "Checking for code style violations in OpenRA.Mods.$modID..."
+ Invoke-Expression "$styleCheckPath OpenRA.Mods.$modID"
+ }
+ else
+ {
+ echo "$styleCheckPath could not be found. Build the project first using the `"all`" command."
+ }
+}
+
+function Check-Scripts-Command
+{
+ if ((Get-Command "luac.exe" -ErrorAction SilentlyContinue) -ne $null)
+ {
+ echo "Testing Lua scripts..."
+ foreach ($script in ls "mods/*/maps/*/*.lua")
+ {
+ luac -p $script
+ }
+ echo "Check completed!"
+ }
+ else
+ {
+ echo "luac.exe could not be found. Please install Lua."
+ }
+}
+
+function Docs-Command
+{
+ if (Test-Path $utilityPath)
+ {
+ Invoke-Expression "$utilityPath $modID --docs | Out-File -Encoding 'UTF8' DOCUMENTATION.md"
+ Invoke-Expression "$utilityPath $modID --lua-docs | Out-File -Encoding 'UTF8' Lua-API.md"
+ echo "Docs generated."
+ }
+ else
+ {
+ UtilityNotFound
+ }
+}
+
+function FindMSBuild
+{
+ $key = "HKLM:\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0"
+ $property = Get-ItemProperty $key -ErrorAction SilentlyContinue
+ if ($property -eq $null -or $property.MSBuildToolsPath -eq $null)
+ {
+ return $null
+ }
+
+ $path = Join-Path $property.MSBuildToolsPath -ChildPath "MSBuild.exe"
+ if (Test-Path $path)
+ {
+ return $path
+ }
+
+ return $null
+}
+
+function UtilityNotFound
+{
+ echo "$utilityPath could not be found. Build the project first using the `"all`" command."
+}
+
+function WaitForInput
+{
+ echo "Press enter to continue."
+ while ($true)
+ {
+ if ([System.Console]::KeyAvailable)
+ {
+ exit
+ }
+ Start-Sleep -Milliseconds 50
+ }
+}
+
+function ReadConfigLine($line, $name)
+{
+ $prefix = $name + '='
+ if ($line.StartsWith($prefix))
+ {
+ [Environment]::SetEnvironmentVariable($name, $line.Replace($prefix, '').Replace('"', ''))
+ }
+}
+
+function ParseConfigFile($fileName)
+{
+ $names = @("MOD_ID", "INCLUDE_DEFAULT_MODS", "ENGINE_VERSION", "AUTOMATIC_ENGINE_MANAGEMENT", "AUTOMATIC_ENGINE_SOURCE",
+ "AUTOMATIC_ENGINE_EXTRACT_DIRECTORY", "AUTOMATIC_ENGINE_TEMP_ARCHIVE_NAME", "ENGINE_DIRECTORY")
+
+ $reader = [System.IO.File]::OpenText($fileName)
+ while($null -ne ($line = $reader.ReadLine()))
+ {
+ foreach ($name in $names)
+ {
+ ReadConfigLine $line $name
+ }
+ }
+}
+
+###############################################################
+############################ Main #############################
+###############################################################
+if ($PSVersionTable.PSVersion.Major -clt 3)
+{
+ echo "The makefile requires PowerShell version 3 or higher."
+ echo "Please download and install the latest Windows Management Framework version from Microsoft."
+ WaitForInput
+}
+
+if ($args.Length -eq 0)
+{
+ echo "Command list:"
+ echo ""
+ echo " all Builds the game, its development tools and the mod dlls."
+ echo " version Sets the version strings for all mods to the latest"
+ echo " version for the current Git branch."
+ echo " clean Removes all built and copied files."
+ echo " from the mods and the engine directories."
+ echo " test Tests the mod's MiniYAML for errors."
+ echo " check Checks .cs files for StyleCop violations."
+ echo " check-scripts Checks .lua files for syntax errors."
+ echo " docs Generates the trait and Lua API documentation."
+ echo ""
+ $command = (Read-Host "Enter command").Split(' ', 2)
+}
+else
+{
+ $command = $args
+}
+
+# Load the environment variables from the config file
+# and get the mod ID from the local environment variable
+ParseConfigFile "mod.config"
+
+if (Test-Path "user.config")
+{
+ ParseConfigFile "user.config"
+}
+
+$modID = $env:MOD_ID
+
+$env:MOD_SEARCH_PATHS = (Get-Item -Path ".\" -Verbose).FullName + "\mods"
+if ($env:INCLUDE_DEFAULT_MODS -eq "True")
+{
+ $env:MOD_SEARCH_PATHS = $env:MOD_SEARCH_PATHS + ",./mods"
+}
+
+# Run the same command on the engine's make file
+if ($command -eq "all" -or $command -eq "clean")
+{
+ $templateDir = $pwd.Path
+ $versionFile = $env:ENGINE_DIRECTORY + "/VERSION"
+ if ((Test-Path $versionFile) -and [System.IO.File]::OpenText($versionFile).ReadLine() -eq $env:ENGINE_VERSION)
+ {
+ cd $env:ENGINE_DIRECTORY
+ Invoke-Expression ".\make.cmd $command"
+ echo ""
+ cd $templateDir
+ }
+ elseif ($env:AUTOMATIC_ENGINE_MANAGEMENT -ne "True")
+ {
+ echo "Automatic engine management is disabled."
+ echo "Please manually update the engine to version $env:ENGINE_VERSION."
+ WaitForInput
+ }
+ else
+ {
+ echo "OpenRA engine version $env:ENGINE_VERSION is required."
+
+ if (Test-Path $env:ENGINE_DIRECTORY)
+ {
+ if ((Test-Path $versionFile) -and [System.IO.File]::OpenText($versionFile).ReadLine() -ne "")
+ {
+ echo "Deleting engine version $currentEngine."
+ }
+ else
+ {
+ echo "Deleting existing engine (unknown version)."
+ }
+
+ rm $env:ENGINE_DIRECTORY -r
+ }
+
+ echo "Downloading engine..."
+
+ if (Test-Path $env:AUTOMATIC_ENGINE_EXTRACT_DIRECTORY)
+ {
+ rm $env:AUTOMATIC_ENGINE_EXTRACT_DIRECTORY -r
+ }
+
+ $url = $env:AUTOMATIC_ENGINE_SOURCE
+ $url = $url.Replace("$", "").Replace("{ENGINE_VERSION}", $env:ENGINE_VERSION)
+
+ mkdir $env:AUTOMATIC_ENGINE_EXTRACT_DIRECTORY > $null
+ $dlPath = Join-Path $pwd (Split-Path -leaf $env:AUTOMATIC_ENGINE_EXTRACT_DIRECTORY)
+ $dlPath = Join-Path $dlPath (Split-Path -leaf $env:AUTOMATIC_ENGINE_TEMP_ARCHIVE_NAME)
+
+ $client = new-object System.Net.WebClient
+ [Net.ServicePointManager]::SecurityProtocol = 'Tls12'
+ $client.DownloadFile($url, $dlPath)
+
+ Add-Type -assembly "system.io.compression.filesystem"
+ [io.compression.zipfile]::ExtractToDirectory($dlPath, $env:AUTOMATIC_ENGINE_EXTRACT_DIRECTORY)
+ rm $dlPath
+
+ $extractedDir = Get-ChildItem $env:AUTOMATIC_ENGINE_EXTRACT_DIRECTORY -Recurse | ?{ $_.PSIsContainer } | Select-Object -First 1
+ Move-Item $extractedDir.FullName -Destination $templateDir
+ Rename-Item $extractedDir.Name (Split-Path -leaf $env:ENGINE_DIRECTORY)
+
+ rm $env:AUTOMATIC_ENGINE_EXTRACT_DIRECTORY -r
+
+ cd $env:ENGINE_DIRECTORY
+ Invoke-Expression ".\make.cmd version $env:ENGINE_VERSION"
+ Invoke-Expression ".\make.cmd $command"
+ echo ""
+ cd $templateDir
+ }
+}
+
+$utilityPath = $env:ENGINE_DIRECTORY + "/OpenRA.Utility.exe"
+$styleCheckPath = $env:ENGINE_DIRECTORY + "/OpenRA.StyleCheck.exe"
+
+$execute = $command
+if ($command.Length -gt 1)
+{
+ $execute = $command[0]
+}
+
+switch ($execute)
+{
+ "all" { All-Command }
+ "version" { Version-Command }
+ "clean" { Clean-Command }
+ "test" { Test-Command }
+ "check" { Check-Command }
+ "check-scripts" { Check-Scripts-Command }
+ "docs" { Docs-Command }
+ Default { echo ("Invalid command '{0}'" -f $command) }
+}
+
+# In case the script was called without any parameters we keep the window open
+if ($args.Length -eq 0)
+{
+ WaitForInput
+}
diff --git a/mod.config b/mod.config
new file mode 100644
index 0000000..a986aa7
--- /dev/null
+++ b/mod.config
@@ -0,0 +1,107 @@
+##############################################################################
+# Core Configuration
+#
+# Basic settings that should be changed by all projects.
+##############################################################################
+
+# The id of the mod packaged by this project.
+# This must exist as a directory in the mods directory and should not contain spaces.
+MOD_ID="ura"
+
+# The OpenRA engine version to use for this project.
+ENGINE_VERSION="release-20180307"
+
+# Enable this to make the default OpenRA mods available for use in your mod.yaml
+# Packages list (via $mod references). Accepts values "True" or "False".
+# WARNING: This setting is provided to simplify early project development,
+# and must be disabled before you can package installers for your project!
+INCLUDE_DEFAULT_MODS="False"
+
+##############################################################################
+# Continuous Integration
+#
+# Settings controlling the behaviour of Travis CI
+# (if it has been enabled on your GitHub repository)
+##############################################################################
+
+# Enable tests for common errors when a new commit is pushed to the GitHub repository
+# Accepts values "True" or "False".
+TRAVIS_TEST_MOD="True"
+
+# Perform a dry run of the installer generation when a new commit is pushed to the GitHub repository
+# Accepts values "True" or "False".
+TRAVIS_TEST_PACKAGING="False"
+
+##############################################################################
+# Packaging
+#
+# Settings controlling the creation of installers.
+##############################################################################
+
+# The prefix used for the installer filenames.
+# - Windows installers will be named as {PACKAGING_INSTALLER_NAME}-{TAG}.exe
+# - macOS installers will be named as {PACKAGING_INSTALLER_NAME}-{TAG}.zip
+PACKAGING_INSTALLER_NAME="ExampleMod"
+
+# The human-readable name for this project.
+# This is used in:
+# - Crash dialogs (all platforms)
+# - macOS .app bundle name
+# - macOS menu bar
+# - macOS "About" window
+# - Windows installer
+# - Windows start menu
+# - Windows desktop shortcut
+# - Windows "Programs and Features" list
+PACKAGING_DISPLAY_NAME="Example Mod"
+
+# The URL for the project homepage.
+# This is used in:
+# - Windows "Add/Remove Programs" list
+PACKAGING_WEBSITE_URL="http://openra.net"
+
+# The URL that is opened when a player presses the "FAQ" button in the crash dialog.
+PACKAGING_FAQ_URL="http://wiki.openra.net/FAQ"
+
+# The human-readable project authors.
+# This is used in:
+# - Windows "Add/Remove Programs" list
+PACKAGING_AUTHORS="Example Mod authors"
+
+# The git tag to use for the macOS Launcher files.
+PACKAGING_OSX_LAUNCHER_TAG="osx-launcher-20171118"
+
+# Filename to use for the launcher executable on Windows.
+PACKAGING_WINDOWS_LAUNCHER_NAME="ExampleMod"
+
+# The name of the Windows Program Files directory to install the project files to.
+PACKAGING_WINDOWS_INSTALL_DIR_NAME="OpenRA Example Mod"
+
+# The key prefix used for Windows registry metadata.
+# This should not contain spaces or special characters.
+PACKAGING_WINDOWS_REGISTRY_KEY="OpenRAExampleMod"
+
+##############################################################################
+# Advanced Configuration
+#
+# Most projects will not need to modify these
+##############################################################################
+
+# Automatic engine managment will treat the OpenRA engine files like a read-only dependency.
+# Disable this if you would like to modify or manager your own engine files.
+AUTOMATIC_ENGINE_MANAGEMENT="True"
+
+# The URL to download the engine files from when AUTOMATIC_ENGINE_MANAGEMENT is enabled.
+AUTOMATIC_ENGINE_SOURCE="https://github.com/OpenRA/OpenRA/archive/${ENGINE_VERSION}.zip"
+
+# Temporary file/directory names used by automatic engine management.
+# Paths outside the SDK directory are not officially supported.
+AUTOMATIC_ENGINE_EXTRACT_DIRECTORY="./engine_temp"
+AUTOMATIC_ENGINE_TEMP_ARCHIVE_NAME="engine.zip"
+ENGINE_DIRECTORY="./engine"
+
+# The url to download the OpenRA macOS launcher files.
+PACKAGING_OSX_LAUNCHER_SOURCE="https://github.com/OpenRA/OpenRALauncherOSX/releases/download/${PACKAGING_OSX_LAUNCHER_TAG}/launcher.zip"
+
+# Temporary file name used when downloading the OpenRA macOS launcher files.
+PACKAGING_OSX_LAUNCHER_TEMP_ARCHIVE_NAME="launcher.zip"
diff --git a/mods/ura/ZoodRangmah.ttf b/mods/ura/ZoodRangmah.ttf
new file mode 100644
index 0000000..8b28063
Binary files /dev/null and b/mods/ura/ZoodRangmah.ttf differ
diff --git a/mods/ura/audio/music.yaml b/mods/ura/audio/music.yaml
new file mode 100644
index 0000000..81f0dc7
--- /dev/null
+++ b/mods/ura/audio/music.yaml
@@ -0,0 +1,47 @@
+await_r: Afterlife (Await)
+bigf226m: Bigfoot
+crus226m: Crush
+dense_r: Dense
+fac1226m: Face to the Enemy 1
+fac2226m: Face to the Enemy 2
+fogger1a: Fogger
+hell226m: Hell March
+intro: Intro
+ Hidden: true
+map: Map
+ Hidden: true
+mud1a: Mud
+radio2: Radio 2
+credits: Reload Fire (Credits)
+rollout: Roll Out
+run1226m: Run (For Your Life)
+score: Militant Force (Scores)
+ Hidden: true
+smsh226m: Smash
+snake: Snake
+terminat: Terminate
+tren226m: Trenches
+twin: Twin Cannon
+vector1a: Vector
+work226m: Workmen
+
+# Counterstrike tracks
+araziod: Arazoid
+backstab: Backstab
+chaos2: Chaos
+shut_it: Shut It
+2nd_hand: The Second Hand
+twinmix1: Twin Cannon (Remix)
+under3: Underlying Thoughts
+vr2: Voice Rhythm 2
+
+# Aftermath tracks
+await: Afterlife (Await)
+bog: Bog
+float_v2: Floating
+gloom: Gloom
+grndwire: Groundwire
+rpt: Running Through Pipes
+search: The Search
+traction: Traction
+wastelnd: Wasteland
diff --git a/mods/ura/audio/notifications.yaml b/mods/ura/audio/notifications.yaml
new file mode 100644
index 0000000..8fb769f
--- /dev/null
+++ b/mods/ura/audio/notifications.yaml
@@ -0,0 +1,132 @@
+Speech:
+ Notifications:
+ AbombAvailable: aavail1
+ AbombLaunchDetected: alaunch1
+ AbombPrepping: aprep1
+ AbombReady: aready1
+ AirUnitLost: aunitl1
+ AlliedForcesApproaching: aappro1
+ AlliedForcesFallen: afallen1
+ AlliedForcesSelected: aselect1
+ AlliedReinforcementsArrived: aarrive1
+ AlliedReinforcementsEast: aarive1
+ AlliedReinforcementsNorth: aarrivn1
+ AlliedReinforcementsSouth: aarrivs1
+ AlliedReinforcementsWest: aarrivw1
+ AtomBombLaunchDetected: atlnch1
+ AtomBombPrepping: atprep1
+ BaseAttack: baseatk1
+ Building: abldgin1
+ BuildingCannotPlaceAudio: nodeply1
+ BuildingCaptured: strucap1
+ BuildingInfiltrated: bldginf1
+ BuildingInProgress: progres1
+ BuildingProgress: bldgprg1
+ Cancelled: cancld1
+ ChronosphereCharging: chrochr1
+ ChronosphereReady: chrordy1
+ ChronosphereTestSuccessful: chroyes1
+ CommandCenterAttack: cmdcntr1
+ CommandoFreed: comndof1
+ CommandoRescued: comndor1
+ ConstructionComplete: conscmp1
+ ControlCenterDeactivated: cntlded1
+ ConvoyApproaching: convyap1
+ ConvoyUnitLost: convlst1
+ CreditsStolen: credit1
+ EnemyUnitsApproaching: enmyapp1
+ EnemyDetected: enmydet
+ ExplosiveChargePlaced: xploplc1
+ FirstObjectiveMet: 1objmet1
+ FourtyMinutesRemaining: 40minr
+ HarvesterAttack:
+ InsufficientFunds: nofunds1
+ InsufficientPower: nopowr1
+ IronCurtainCharging: ironchg1
+ IronCurtainReady: ironrdy1
+ KosyginFreed: kosyfre1
+ KosyginRescued: kosyres1
+ Leave: bct1
+ Lose: misnlst1
+ LowPower: lopower1
+ MercenaryFreed: mercf1
+ MercenaryRescued: mercr1
+ MissionAccomplished: misnwon1
+ MissionFailed: misnlst1
+ MissionLoaded: load1
+ MissionSaved: save1
+ MissionTimerInitialised: mtimein1
+ NavalUnitLost: navylst1
+ NewOptions: newopt1
+ NoBuild: nobuild1
+ ObjectiveMet: objmet1
+ ObjectiveNotMet: objnmet1
+ ObjectiveNotReached: objnrch1
+ ObjectiveReached: objrch1
+ OnHold: onhold1
+ OperationControlTerminated: opterm1
+ PrimaryBuildingSelected: pribldg1
+ ReinforcementsArrived: reinfor1
+ Repairing: repair1
+ SatelliteLaunched: satlnch1
+ SecondObjectiveMet: 2objmet1
+ SelectTarget: slcttgt1
+ SignalFlare: flare1
+ SignalFlareEast: flaree1
+ SignalFlareNorth: flaren1
+ SignalFlareSouth: flares1
+ SignalFlareWest: flarew1
+ SilosNeeded: silond1
+ SonarPulseReady: pulse1
+ SovietEmpireFallen: sovefal1
+ SovietEmpireSelected: sovemp1
+ SovietForcesApproaching: sovfapp1
+ SovietForcesFallen: sovforc1
+ SovietReinforcementsArrived: sovrein1
+ SpyPlaneReady: spypln1
+ StartGame: bctrinit
+ StructureDestroyed: strckil1
+ StructureSold: strusld1
+ TanyaFreed: tanyaf1
+ TanyaRescued: tanyar1
+ TargetFreed: targfre1
+ TargetRescued: targres1
+ TenMinutesRemaining: 10minr
+ ThirdObjectiveMet: 3objmet1
+ ThirtyMinutesRemaining: 30minr
+ TimerStarted: timergo1
+ TimerStopped: timerno1
+ Training: train1
+ TwentyMinutesRemaining: 20minr
+ UnitArmorUpgraded: armorup1
+ UnitFirepowerUpgraded: firepo1
+ UnitFull: unitful1
+ UnitLost: unitlst1
+ UnitReady: unitrdy1
+ UnitRepaired: unitrep1
+ UnitSold: unitsld1
+ UnitSpeedUpgraded: unitspd1
+ UnitStolen: unitsto
+ WarningOneMinuteRemaining: 1minr
+ WarningTwoMinutesRemaining: 2minr
+ WarningThreeMinutesRemaining: 3minr
+ WarningFourMinutesRemaining: 4minr
+ WarningFiveMinutesRemaining: 5minr
+ Win: misnwon1
+
+Sounds:
+ Notifications:
+ RadarUp: radaron2
+ RadarDown: radardn1
+ CashTickUp: cashup1
+ CashTickDown:cashdn1
+ LevelUp: hydrod1
+ DisablePower: bleep11
+ EnablePower: bleep12
+ ChatLine: rabeep1
+ ClickSound: ramenu1
+ ClickDisabledSound:
+ Beacon: beepslct
+ AlertBuzzer: buzzy1
+ AlertBleep: bleep6
+ BaseSetup: bleep9
diff --git a/mods/ura/audio/voices.yaml b/mods/ura/audio/voices.yaml
new file mode 100644
index 0000000..e57e3c2
--- /dev/null
+++ b/mods/ura/audio/voices.yaml
@@ -0,0 +1,142 @@
+GenericVoice:
+ Variants:
+ allies: .v01,.v03
+ england: .v01,.v03
+ france: .v01,.v03
+ germany: .v01,.v03
+ soviet: .r01,.r03
+ russia: .r01,.r03
+ ukraine: .r01,.r03
+ Voices:
+ Select: await1,ready,report1,yessir1
+ Action: ackno,affirm1,noprob,overout,ritaway,roger,ugotit
+ Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
+ Burned: dedman10
+ Zapped: dedman6
+ DisableVariants: Die, Burned, Zapped
+
+VehicleVoice:
+ Variants:
+ allies: .v00,.v02
+ england: .v00,.v02
+ france: .v00,.v02
+ germany: .v00,.v02
+ soviet: .r00,.r02
+ russia: .r00,.r02
+ ukraine: .r00,.r02
+ Voices:
+ Select: vehic1,yessir1,report1,await1
+ Action: ackno,affirm1
+
+EngineerVoice:
+ Voices:
+ Select: eengin1,eyessir1
+ Action: eaffirm1,emovout1
+ Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
+ Burned: dedman10
+ Zapped: dedman6
+
+MedicVoice:
+ Voices:
+ Select: mrespon1,myessir1
+ Action: maffirm1,mmovout1
+ Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
+ Burned: dedman10
+ Zapped: dedman6
+
+MechanicVoice:
+ Voices:
+ Select: mhuh1,mhowdy1,myes1,mrise1
+ Move: mboss1,mhear1
+ Action: mhotdig1,mwrench1
+ Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
+ Burned: dedman10
+ Zapped: dedman6
+
+TanyaVoice:
+ Voices:
+ Select: yo1,yes1,yeah1
+ Move: onit1,cmon1,rokroll1
+ Action: tuffguy1,bombit1
+ Die: tandeth1
+ Burned: tandeth1
+ Zapped: tandeth1
+ Build: laugh1
+ Kill: gotit1,lefty1
+ Demolish: keepem1,tuffguy1
+
+DogVoice:
+ Voices:
+ Select: dogw3px
+ Move: dogy1
+ Attack: dogg5p
+ Die: dogw5,dogw7
+ Burned: dogw6
+ Zapped: dogw6
+
+SpyVoice:
+ Voices:
+ Select: syessir1,scomnd1
+ Move: sonway1,sindeed1
+ Action: sking1
+ Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
+ Burned: dedman10
+ Zapped: dedman6
+
+ThiefVoice:
+ Voices:
+ Select: swhat1,syeah1
+ Action: saffirm1,smout1,sokay1
+ Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
+ Burned: dedman10
+ Zapped: dedman6
+
+CivilianMaleVoice:
+ Voices:
+ Select: guyyeah1
+ Action: guyokay1
+ Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
+ Burned: dedman10
+ Zapped: dedman6
+
+CivilianFemaleVoice:
+ Voices:
+ Select: girlyeah
+ Action: girlokay
+ Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
+ Burned: dedman10
+ Zapped: dedman6
+
+EinsteinVoice:
+ Voices:
+ Select: einah1
+ Action: einok1,einyes1
+ Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
+ Burned: dedman10
+ Zapped: dedman6
+
+ShokVoice:
+ Voices:
+ Select: jchrge1,jjuice1,jjump1,jpower1
+ Move: jdance1,jyes1
+ Attack: jburn1,jcrisp1,jshock1,jlight1
+ Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
+ Burned: dedman10
+ Zapped: dedman6
+
+AntVoice:
+ Voices:
+ Select: antbite
+ Action: antbite
+ Die: antdie
+ Burned: antdie
+ Zapped: antdie
+
+StavrosVoice:
+ Voices:
+ Select: stavcmdr
+ Move: stavcrse, stavyes, stavmov
+ Attack: stavcrse, stavyes
+ Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
+ Burned: dedman10
+ Zapped: dedman6
diff --git a/mods/ura/bits/2tnkger.shp b/mods/ura/bits/2tnkger.shp
new file mode 100644
index 0000000..81e32da
Binary files /dev/null and b/mods/ura/bits/2tnkger.shp differ
diff --git a/mods/ura/bits/2tnkgericon.shp b/mods/ura/bits/2tnkgericon.shp
new file mode 100644
index 0000000..b6907d6
Binary files /dev/null and b/mods/ura/bits/2tnkgericon.shp differ
diff --git a/mods/ura/bits/4tnk.kv-8.shp b/mods/ura/bits/4tnk.kv-8.shp
new file mode 100644
index 0000000..cba9fa4
Binary files /dev/null and b/mods/ura/bits/4tnk.kv-8.shp differ
diff --git a/mods/ura/bits/4tnk.kv-8icon.shp b/mods/ura/bits/4tnk.kv-8icon.shp
new file mode 100644
index 0000000..34478e8
Binary files /dev/null and b/mods/ura/bits/4tnk.kv-8icon.shp differ
diff --git a/mods/ura/bits/afldidle.shp b/mods/ura/bits/afldidle.shp
new file mode 100644
index 0000000..5c338d4
Binary files /dev/null and b/mods/ura/bits/afldidle.shp differ
diff --git a/mods/ura/bits/agate.shp b/mods/ura/bits/agate.shp
new file mode 100644
index 0000000..853b11c
Binary files /dev/null and b/mods/ura/bits/agate.shp differ
diff --git a/mods/ura/bits/allyrepair.shp b/mods/ura/bits/allyrepair.shp
new file mode 100644
index 0000000..1bcec19
Binary files /dev/null and b/mods/ura/bits/allyrepair.shp differ
diff --git a/mods/ura/bits/ammobox1.shp b/mods/ura/bits/ammobox1.shp
new file mode 100644
index 0000000..58b4ecb
Binary files /dev/null and b/mods/ura/bits/ammobox1.shp differ
diff --git a/mods/ura/bits/ammobox2.shp b/mods/ura/bits/ammobox2.shp
new file mode 100644
index 0000000..9e3d4ae
Binary files /dev/null and b/mods/ura/bits/ammobox2.shp differ
diff --git a/mods/ura/bits/ammobox3.shp b/mods/ura/bits/ammobox3.shp
new file mode 100644
index 0000000..6a4daf3
Binary files /dev/null and b/mods/ura/bits/ammobox3.shp differ
diff --git a/mods/ura/bits/anticon.shp b/mods/ura/bits/anticon.shp
new file mode 100644
index 0000000..6e64e1f
Binary files /dev/null and b/mods/ura/bits/anticon.shp differ
diff --git a/mods/ura/bits/apwrdead.shp b/mods/ura/bits/apwrdead.shp
new file mode 100644
index 0000000..71bff5e
Binary files /dev/null and b/mods/ura/bits/apwrdead.shp differ
diff --git a/mods/ura/bits/asianhut.shp b/mods/ura/bits/asianhut.shp
new file mode 100644
index 0000000..11e5656
Binary files /dev/null and b/mods/ura/bits/asianhut.shp differ
diff --git a/mods/ura/bits/ateficon.shp b/mods/ura/bits/ateficon.shp
new file mode 100644
index 0000000..00eab65
Binary files /dev/null and b/mods/ura/bits/ateficon.shp differ
diff --git a/mods/ura/bits/attackmove.shp b/mods/ura/bits/attackmove.shp
new file mode 100644
index 0000000..9c47a75
Binary files /dev/null and b/mods/ura/bits/attackmove.shp differ
diff --git a/mods/ura/bits/bctrinit.aud b/mods/ura/bits/bctrinit.aud
new file mode 100644
index 0000000..bdc233b
Binary files /dev/null and b/mods/ura/bits/bctrinit.aud differ
diff --git a/mods/ura/bits/beaconclock.shp b/mods/ura/bits/beaconclock.shp
new file mode 100644
index 0000000..c18bc3e
Binary files /dev/null and b/mods/ura/bits/beaconclock.shp differ
diff --git a/mods/ura/bits/bikinitany.shp b/mods/ura/bits/bikinitany.shp
new file mode 100644
index 0000000..f0055a6
Binary files /dev/null and b/mods/ura/bits/bikinitany.shp differ
diff --git a/mods/ura/bits/bubbles.shp b/mods/ura/bits/bubbles.shp
new file mode 100644
index 0000000..e59f7a8
Binary files /dev/null and b/mods/ura/bits/bubbles.shp differ
diff --git a/mods/ura/bits/c3.shp b/mods/ura/bits/c3.shp
new file mode 100644
index 0000000..1aa5516
Binary files /dev/null and b/mods/ura/bits/c3.shp differ
diff --git a/mods/ura/bits/camera.shp b/mods/ura/bits/camera.shp
new file mode 100644
index 0000000..f08a4c3
Binary files /dev/null and b/mods/ura/bits/camera.shp differ
diff --git a/mods/ura/bits/chan.shp b/mods/ura/bits/chan.shp
new file mode 100644
index 0000000..d1f7202
Binary files /dev/null and b/mods/ura/bits/chan.shp differ
diff --git a/mods/ura/bits/cliffsl1.sno b/mods/ura/bits/cliffsl1.sno
new file mode 100644
index 0000000..0227714
Binary files /dev/null and b/mods/ura/bits/cliffsl1.sno differ
diff --git a/mods/ura/bits/cliffsl1.tem b/mods/ura/bits/cliffsl1.tem
new file mode 100644
index 0000000..5a825fa
Binary files /dev/null and b/mods/ura/bits/cliffsl1.tem differ
diff --git a/mods/ura/bits/cliffsl2.sno b/mods/ura/bits/cliffsl2.sno
new file mode 100644
index 0000000..203b709
Binary files /dev/null and b/mods/ura/bits/cliffsl2.sno differ
diff --git a/mods/ura/bits/cliffsl2.tem b/mods/ura/bits/cliffsl2.tem
new file mode 100644
index 0000000..581f5b5
Binary files /dev/null and b/mods/ura/bits/cliffsl2.tem differ
diff --git a/mods/ura/bits/cliffsl3.sno b/mods/ura/bits/cliffsl3.sno
new file mode 100644
index 0000000..323f447
Binary files /dev/null and b/mods/ura/bits/cliffsl3.sno differ
diff --git a/mods/ura/bits/cliffsl3.tem b/mods/ura/bits/cliffsl3.tem
new file mode 100644
index 0000000..2289806
Binary files /dev/null and b/mods/ura/bits/cliffsl3.tem differ
diff --git a/mods/ura/bits/cliffsl4.sno b/mods/ura/bits/cliffsl4.sno
new file mode 100644
index 0000000..e4c2c3f
Binary files /dev/null and b/mods/ura/bits/cliffsl4.sno differ
diff --git a/mods/ura/bits/cliffsl4.tem b/mods/ura/bits/cliffsl4.tem
new file mode 100644
index 0000000..b68cb9a
Binary files /dev/null and b/mods/ura/bits/cliffsl4.tem differ
diff --git a/mods/ura/bits/cliffsw1.sno b/mods/ura/bits/cliffsw1.sno
new file mode 100644
index 0000000..f75d9f4
Binary files /dev/null and b/mods/ura/bits/cliffsw1.sno differ
diff --git a/mods/ura/bits/cliffsw1.tem b/mods/ura/bits/cliffsw1.tem
new file mode 100644
index 0000000..2f13147
Binary files /dev/null and b/mods/ura/bits/cliffsw1.tem differ
diff --git a/mods/ura/bits/cliffsw2.sno b/mods/ura/bits/cliffsw2.sno
new file mode 100644
index 0000000..65039f5
Binary files /dev/null and b/mods/ura/bits/cliffsw2.sno differ
diff --git a/mods/ura/bits/cliffsw2.tem b/mods/ura/bits/cliffsw2.tem
new file mode 100644
index 0000000..046076f
Binary files /dev/null and b/mods/ura/bits/cliffsw2.tem differ
diff --git a/mods/ura/bits/cliffsw3.sno b/mods/ura/bits/cliffsw3.sno
new file mode 100644
index 0000000..98f84d8
Binary files /dev/null and b/mods/ura/bits/cliffsw3.sno differ
diff --git a/mods/ura/bits/cliffsw3.tem b/mods/ura/bits/cliffsw3.tem
new file mode 100644
index 0000000..b205d01
Binary files /dev/null and b/mods/ura/bits/cliffsw3.tem differ
diff --git a/mods/ura/bits/cliffsw4.sno b/mods/ura/bits/cliffsw4.sno
new file mode 100644
index 0000000..61fd5f9
Binary files /dev/null and b/mods/ura/bits/cliffsw4.sno differ
diff --git a/mods/ura/bits/cliffsw4.tem b/mods/ura/bits/cliffsw4.tem
new file mode 100644
index 0000000..ff516d1
Binary files /dev/null and b/mods/ura/bits/cliffsw4.tem differ
diff --git a/mods/ura/bits/cr4.sno b/mods/ura/bits/cr4.sno
new file mode 100644
index 0000000..4f23207
Binary files /dev/null and b/mods/ura/bits/cr4.sno differ
diff --git a/mods/ura/bits/cr5.sno b/mods/ura/bits/cr5.sno
new file mode 100644
index 0000000..7ca4946
Binary files /dev/null and b/mods/ura/bits/cr5.sno differ
diff --git a/mods/ura/bits/ctflag.shp b/mods/ura/bits/ctflag.shp
new file mode 100644
index 0000000..625a2b8
Binary files /dev/null and b/mods/ura/bits/ctflag.shp differ
diff --git a/mods/ura/bits/deca.tem b/mods/ura/bits/deca.tem
new file mode 100644
index 0000000..5301abb
Binary files /dev/null and b/mods/ura/bits/deca.tem differ
diff --git a/mods/ura/bits/decb.tem b/mods/ura/bits/decb.tem
new file mode 100644
index 0000000..a687d97
Binary files /dev/null and b/mods/ura/bits/decb.tem differ
diff --git a/mods/ura/bits/decc.tem b/mods/ura/bits/decc.tem
new file mode 100644
index 0000000..0ac2a0c
Binary files /dev/null and b/mods/ura/bits/decc.tem differ
diff --git a/mods/ura/bits/decd.tem b/mods/ura/bits/decd.tem
new file mode 100644
index 0000000..3ba691c
Binary files /dev/null and b/mods/ura/bits/decd.tem differ
diff --git a/mods/ura/bits/dece.tem b/mods/ura/bits/dece.tem
new file mode 100644
index 0000000..cbae5ef
Binary files /dev/null and b/mods/ura/bits/dece.tem differ
diff --git a/mods/ura/bits/decf.tem b/mods/ura/bits/decf.tem
new file mode 100644
index 0000000..79e34f8
Binary files /dev/null and b/mods/ura/bits/decf.tem differ
diff --git a/mods/ura/bits/decg.tem b/mods/ura/bits/decg.tem
new file mode 100644
index 0000000..8ed1ec3
Binary files /dev/null and b/mods/ura/bits/decg.tem differ
diff --git a/mods/ura/bits/dech.tem b/mods/ura/bits/dech.tem
new file mode 100644
index 0000000..082ab2d
Binary files /dev/null and b/mods/ura/bits/dech.tem differ
diff --git a/mods/ura/bits/desert/b01.des b/mods/ura/bits/desert/b01.des
new file mode 100644
index 0000000..a6b8aee
Binary files /dev/null and b/mods/ura/bits/desert/b01.des differ
diff --git a/mods/ura/bits/desert/b02.des b/mods/ura/bits/desert/b02.des
new file mode 100644
index 0000000..621c5a2
Binary files /dev/null and b/mods/ura/bits/desert/b02.des differ
diff --git a/mods/ura/bits/desert/b03.des b/mods/ura/bits/desert/b03.des
new file mode 100644
index 0000000..c96236b
Binary files /dev/null and b/mods/ura/bits/desert/b03.des differ
diff --git a/mods/ura/bits/desert/b04.des b/mods/ura/bits/desert/b04.des
new file mode 100644
index 0000000..504ec97
Binary files /dev/null and b/mods/ura/bits/desert/b04.des differ
diff --git a/mods/ura/bits/desert/b05.des b/mods/ura/bits/desert/b05.des
new file mode 100644
index 0000000..23832b2
Binary files /dev/null and b/mods/ura/bits/desert/b05.des differ
diff --git a/mods/ura/bits/desert/b06.des b/mods/ura/bits/desert/b06.des
new file mode 100644
index 0000000..d923da1
Binary files /dev/null and b/mods/ura/bits/desert/b06.des differ
diff --git a/mods/ura/bits/desert/br01.des b/mods/ura/bits/desert/br01.des
new file mode 100644
index 0000000..45bc9ab
Binary files /dev/null and b/mods/ura/bits/desert/br01.des differ
diff --git a/mods/ura/bits/desert/br02.des b/mods/ura/bits/desert/br02.des
new file mode 100644
index 0000000..bf0d60f
Binary files /dev/null and b/mods/ura/bits/desert/br02.des differ
diff --git a/mods/ura/bits/desert/br03.des b/mods/ura/bits/desert/br03.des
new file mode 100644
index 0000000..26a2ca1
Binary files /dev/null and b/mods/ura/bits/desert/br03.des differ
diff --git a/mods/ura/bits/desert/br04.des b/mods/ura/bits/desert/br04.des
new file mode 100644
index 0000000..bf09e56
Binary files /dev/null and b/mods/ura/bits/desert/br04.des differ
diff --git a/mods/ura/bits/desert/br05.des b/mods/ura/bits/desert/br05.des
new file mode 100644
index 0000000..e27edc8
Binary files /dev/null and b/mods/ura/bits/desert/br05.des differ
diff --git a/mods/ura/bits/desert/br06.des b/mods/ura/bits/desert/br06.des
new file mode 100644
index 0000000..26783b1
Binary files /dev/null and b/mods/ura/bits/desert/br06.des differ
diff --git a/mods/ura/bits/desert/br07.des b/mods/ura/bits/desert/br07.des
new file mode 100644
index 0000000..3c73158
Binary files /dev/null and b/mods/ura/bits/desert/br07.des differ
diff --git a/mods/ura/bits/desert/br08.des b/mods/ura/bits/desert/br08.des
new file mode 100644
index 0000000..3414e40
Binary files /dev/null and b/mods/ura/bits/desert/br08.des differ
diff --git a/mods/ura/bits/desert/br09.des b/mods/ura/bits/desert/br09.des
new file mode 100644
index 0000000..6cf65af
Binary files /dev/null and b/mods/ura/bits/desert/br09.des differ
diff --git a/mods/ura/bits/desert/br10.des b/mods/ura/bits/desert/br10.des
new file mode 100644
index 0000000..021cf3b
Binary files /dev/null and b/mods/ura/bits/desert/br10.des differ
diff --git a/mods/ura/bits/desert/br1a.des b/mods/ura/bits/desert/br1a.des
new file mode 100644
index 0000000..cecb13e
Binary files /dev/null and b/mods/ura/bits/desert/br1a.des differ
diff --git a/mods/ura/bits/desert/br1b.des b/mods/ura/bits/desert/br1b.des
new file mode 100644
index 0000000..ea77231
Binary files /dev/null and b/mods/ura/bits/desert/br1b.des differ
diff --git a/mods/ura/bits/desert/br1c.des b/mods/ura/bits/desert/br1c.des
new file mode 100644
index 0000000..328ee46
Binary files /dev/null and b/mods/ura/bits/desert/br1c.des differ
diff --git a/mods/ura/bits/desert/br1x.des b/mods/ura/bits/desert/br1x.des
new file mode 100644
index 0000000..8306a0f
Binary files /dev/null and b/mods/ura/bits/desert/br1x.des differ
diff --git a/mods/ura/bits/desert/br2a.des b/mods/ura/bits/desert/br2a.des
new file mode 100644
index 0000000..59b2bc4
Binary files /dev/null and b/mods/ura/bits/desert/br2a.des differ
diff --git a/mods/ura/bits/desert/br2b.des b/mods/ura/bits/desert/br2b.des
new file mode 100644
index 0000000..9a8e106
Binary files /dev/null and b/mods/ura/bits/desert/br2b.des differ
diff --git a/mods/ura/bits/desert/br2c.des b/mods/ura/bits/desert/br2c.des
new file mode 100644
index 0000000..077a079
Binary files /dev/null and b/mods/ura/bits/desert/br2c.des differ
diff --git a/mods/ura/bits/desert/br2x.des b/mods/ura/bits/desert/br2x.des
new file mode 100644
index 0000000..35573ea
Binary files /dev/null and b/mods/ura/bits/desert/br2x.des differ
diff --git a/mods/ura/bits/desert/br3a.des b/mods/ura/bits/desert/br3a.des
new file mode 100644
index 0000000..d21f749
Binary files /dev/null and b/mods/ura/bits/desert/br3a.des differ
diff --git a/mods/ura/bits/desert/br3b.des b/mods/ura/bits/desert/br3b.des
new file mode 100644
index 0000000..1ba2b57
Binary files /dev/null and b/mods/ura/bits/desert/br3b.des differ
diff --git a/mods/ura/bits/desert/br3c.des b/mods/ura/bits/desert/br3c.des
new file mode 100644
index 0000000..ed94dd0
Binary files /dev/null and b/mods/ura/bits/desert/br3c.des differ
diff --git a/mods/ura/bits/desert/br3d.des b/mods/ura/bits/desert/br3d.des
new file mode 100644
index 0000000..46f6904
Binary files /dev/null and b/mods/ura/bits/desert/br3d.des differ
diff --git a/mods/ura/bits/desert/br3e.des b/mods/ura/bits/desert/br3e.des
new file mode 100644
index 0000000..b67d450
Binary files /dev/null and b/mods/ura/bits/desert/br3e.des differ
diff --git a/mods/ura/bits/desert/br3f.des b/mods/ura/bits/desert/br3f.des
new file mode 100644
index 0000000..ba11b06
Binary files /dev/null and b/mods/ura/bits/desert/br3f.des differ
diff --git a/mods/ura/bits/desert/bridge1.des b/mods/ura/bits/desert/bridge1.des
new file mode 100644
index 0000000..c494130
Binary files /dev/null and b/mods/ura/bits/desert/bridge1.des differ
diff --git a/mods/ura/bits/desert/bridge1d.des b/mods/ura/bits/desert/bridge1d.des
new file mode 100644
index 0000000..5c4702a
Binary files /dev/null and b/mods/ura/bits/desert/bridge1d.des differ
diff --git a/mods/ura/bits/desert/bridge1h.des b/mods/ura/bits/desert/bridge1h.des
new file mode 100644
index 0000000..79f38f8
Binary files /dev/null and b/mods/ura/bits/desert/bridge1h.des differ
diff --git a/mods/ura/bits/desert/bridge1x.des b/mods/ura/bits/desert/bridge1x.des
new file mode 100644
index 0000000..1bd7729
Binary files /dev/null and b/mods/ura/bits/desert/bridge1x.des differ
diff --git a/mods/ura/bits/desert/bridge2.des b/mods/ura/bits/desert/bridge2.des
new file mode 100644
index 0000000..e04f389
Binary files /dev/null and b/mods/ura/bits/desert/bridge2.des differ
diff --git a/mods/ura/bits/desert/bridge2d.des b/mods/ura/bits/desert/bridge2d.des
new file mode 100644
index 0000000..72753e5
Binary files /dev/null and b/mods/ura/bits/desert/bridge2d.des differ
diff --git a/mods/ura/bits/desert/bridge2h.des b/mods/ura/bits/desert/bridge2h.des
new file mode 100644
index 0000000..e6275b3
Binary files /dev/null and b/mods/ura/bits/desert/bridge2h.des differ
diff --git a/mods/ura/bits/desert/bridge2x.des b/mods/ura/bits/desert/bridge2x.des
new file mode 100644
index 0000000..6df8f73
Binary files /dev/null and b/mods/ura/bits/desert/bridge2x.des differ
diff --git a/mods/ura/bits/desert/clear1a.des b/mods/ura/bits/desert/clear1a.des
new file mode 100644
index 0000000..9642058
Binary files /dev/null and b/mods/ura/bits/desert/clear1a.des differ
diff --git a/mods/ura/bits/desert/cliffsl1.des b/mods/ura/bits/desert/cliffsl1.des
new file mode 100644
index 0000000..e92a632
Binary files /dev/null and b/mods/ura/bits/desert/cliffsl1.des differ
diff --git a/mods/ura/bits/desert/cliffsl2.des b/mods/ura/bits/desert/cliffsl2.des
new file mode 100644
index 0000000..bcf80aa
Binary files /dev/null and b/mods/ura/bits/desert/cliffsl2.des differ
diff --git a/mods/ura/bits/desert/cliffsl3.des b/mods/ura/bits/desert/cliffsl3.des
new file mode 100644
index 0000000..89156e8
Binary files /dev/null and b/mods/ura/bits/desert/cliffsl3.des differ
diff --git a/mods/ura/bits/desert/cliffsl4.des b/mods/ura/bits/desert/cliffsl4.des
new file mode 100644
index 0000000..c9f92f7
Binary files /dev/null and b/mods/ura/bits/desert/cliffsl4.des differ
diff --git a/mods/ura/bits/desert/cliffsw1.des b/mods/ura/bits/desert/cliffsw1.des
new file mode 100644
index 0000000..3c969ed
Binary files /dev/null and b/mods/ura/bits/desert/cliffsw1.des differ
diff --git a/mods/ura/bits/desert/cliffsw2.des b/mods/ura/bits/desert/cliffsw2.des
new file mode 100644
index 0000000..cfdbc07
Binary files /dev/null and b/mods/ura/bits/desert/cliffsw2.des differ
diff --git a/mods/ura/bits/desert/cliffsw3.des b/mods/ura/bits/desert/cliffsw3.des
new file mode 100644
index 0000000..9bbe77c
Binary files /dev/null and b/mods/ura/bits/desert/cliffsw3.des differ
diff --git a/mods/ura/bits/desert/cliffsw4.des b/mods/ura/bits/desert/cliffsw4.des
new file mode 100644
index 0000000..7c73aec
Binary files /dev/null and b/mods/ura/bits/desert/cliffsw4.des differ
diff --git a/mods/ura/bits/desert/d44.des b/mods/ura/bits/desert/d44.des
new file mode 100644
index 0000000..39aa63d
Binary files /dev/null and b/mods/ura/bits/desert/d44.des differ
diff --git a/mods/ura/bits/desert/d45.des b/mods/ura/bits/desert/d45.des
new file mode 100644
index 0000000..dab2130
Binary files /dev/null and b/mods/ura/bits/desert/d45.des differ
diff --git a/mods/ura/bits/desert/dt01.des b/mods/ura/bits/desert/dt01.des
new file mode 100644
index 0000000..ce4090b
Binary files /dev/null and b/mods/ura/bits/desert/dt01.des differ
diff --git a/mods/ura/bits/desert/dt02.des b/mods/ura/bits/desert/dt02.des
new file mode 100644
index 0000000..c460d62
Binary files /dev/null and b/mods/ura/bits/desert/dt02.des differ
diff --git a/mods/ura/bits/desert/dt03.des b/mods/ura/bits/desert/dt03.des
new file mode 100644
index 0000000..9c5a498
Binary files /dev/null and b/mods/ura/bits/desert/dt03.des differ
diff --git a/mods/ura/bits/desert/dt04.des b/mods/ura/bits/desert/dt04.des
new file mode 100644
index 0000000..c50c0ec
Binary files /dev/null and b/mods/ura/bits/desert/dt04.des differ
diff --git a/mods/ura/bits/desert/f01.des b/mods/ura/bits/desert/f01.des
new file mode 100644
index 0000000..951b6ca
Binary files /dev/null and b/mods/ura/bits/desert/f01.des differ
diff --git a/mods/ura/bits/desert/f02.des b/mods/ura/bits/desert/f02.des
new file mode 100644
index 0000000..9d4f283
Binary files /dev/null and b/mods/ura/bits/desert/f02.des differ
diff --git a/mods/ura/bits/desert/f03.des b/mods/ura/bits/desert/f03.des
new file mode 100644
index 0000000..7c50e63
Binary files /dev/null and b/mods/ura/bits/desert/f03.des differ
diff --git a/mods/ura/bits/desert/f04.des b/mods/ura/bits/desert/f04.des
new file mode 100644
index 0000000..bfdd05b
Binary files /dev/null and b/mods/ura/bits/desert/f04.des differ
diff --git a/mods/ura/bits/desert/f05.des b/mods/ura/bits/desert/f05.des
new file mode 100644
index 0000000..c12293f
Binary files /dev/null and b/mods/ura/bits/desert/f05.des differ
diff --git a/mods/ura/bits/desert/f06.des b/mods/ura/bits/desert/f06.des
new file mode 100644
index 0000000..cbac9a5
Binary files /dev/null and b/mods/ura/bits/desert/f06.des differ
diff --git a/mods/ura/bits/desert/falls3.des b/mods/ura/bits/desert/falls3.des
new file mode 100644
index 0000000..6383c44
Binary files /dev/null and b/mods/ura/bits/desert/falls3.des differ
diff --git a/mods/ura/bits/desert/falls4.des b/mods/ura/bits/desert/falls4.des
new file mode 100644
index 0000000..14b4ffc
Binary files /dev/null and b/mods/ura/bits/desert/falls4.des differ
diff --git a/mods/ura/bits/desert/gmine.des b/mods/ura/bits/desert/gmine.des
new file mode 100644
index 0000000..549e484
Binary files /dev/null and b/mods/ura/bits/desert/gmine.des differ
diff --git a/mods/ura/bits/desert/hbox.des b/mods/ura/bits/desert/hbox.des
new file mode 100644
index 0000000..51749f1
Binary files /dev/null and b/mods/ura/bits/desert/hbox.des differ
diff --git a/mods/ura/bits/desert/hboxmake.des b/mods/ura/bits/desert/hboxmake.des
new file mode 100644
index 0000000..05d4810
Binary files /dev/null and b/mods/ura/bits/desert/hboxmake.des differ
diff --git a/mods/ura/bits/desert/mbAGUN.des b/mods/ura/bits/desert/mbAGUN.des
new file mode 100644
index 0000000..c60a4d9
Binary files /dev/null and b/mods/ura/bits/desert/mbAGUN.des differ
diff --git a/mods/ura/bits/desert/mbFIX.des b/mods/ura/bits/desert/mbFIX.des
new file mode 100644
index 0000000..16372c3
Binary files /dev/null and b/mods/ura/bits/desert/mbFIX.des differ
diff --git a/mods/ura/bits/desert/mbFTUR.des b/mods/ura/bits/desert/mbFTUR.des
new file mode 100644
index 0000000..cd9aa3e
Binary files /dev/null and b/mods/ura/bits/desert/mbFTUR.des differ
diff --git a/mods/ura/bits/desert/mbGAP.des b/mods/ura/bits/desert/mbGAP.des
new file mode 100644
index 0000000..99b62b2
Binary files /dev/null and b/mods/ura/bits/desert/mbGAP.des differ
diff --git a/mods/ura/bits/desert/mbGUN.des b/mods/ura/bits/desert/mbGUN.des
new file mode 100644
index 0000000..e50c3fd
Binary files /dev/null and b/mods/ura/bits/desert/mbGUN.des differ
diff --git a/mods/ura/bits/desert/mbHOSP.des b/mods/ura/bits/desert/mbHOSP.des
new file mode 100644
index 0000000..6a7c12c
Binary files /dev/null and b/mods/ura/bits/desert/mbHOSP.des differ
diff --git a/mods/ura/bits/desert/mbIRON.des b/mods/ura/bits/desert/mbIRON.des
new file mode 100644
index 0000000..4bf337b
Binary files /dev/null and b/mods/ura/bits/desert/mbIRON.des differ
diff --git a/mods/ura/bits/desert/mbPBOX.des b/mods/ura/bits/desert/mbPBOX.des
new file mode 100644
index 0000000..e802591
Binary files /dev/null and b/mods/ura/bits/desert/mbPBOX.des differ
diff --git a/mods/ura/bits/desert/mbPDOX.des b/mods/ura/bits/desert/mbPDOX.des
new file mode 100644
index 0000000..4451c43
Binary files /dev/null and b/mods/ura/bits/desert/mbPDOX.des differ
diff --git a/mods/ura/bits/desert/mbSAM.des b/mods/ura/bits/desert/mbSAM.des
new file mode 100644
index 0000000..89ad9d8
Binary files /dev/null and b/mods/ura/bits/desert/mbSAM.des differ
diff --git a/mods/ura/bits/desert/mbSILO.des b/mods/ura/bits/desert/mbSILO.des
new file mode 100644
index 0000000..1d1cb9b
Binary files /dev/null and b/mods/ura/bits/desert/mbSILO.des differ
diff --git a/mods/ura/bits/desert/mbTSLA.des b/mods/ura/bits/desert/mbTSLA.des
new file mode 100644
index 0000000..0324936
Binary files /dev/null and b/mods/ura/bits/desert/mbTSLA.des differ
diff --git a/mods/ura/bits/desert/mine.des b/mods/ura/bits/desert/mine.des
new file mode 100644
index 0000000..fbdd2e7
Binary files /dev/null and b/mods/ura/bits/desert/mine.des differ
diff --git a/mods/ura/bits/desert/mslo.des b/mods/ura/bits/desert/mslo.des
new file mode 100644
index 0000000..1db251c
Binary files /dev/null and b/mods/ura/bits/desert/mslo.des differ
diff --git a/mods/ura/bits/desert/mslomake.des b/mods/ura/bits/desert/mslomake.des
new file mode 100644
index 0000000..28724af
Binary files /dev/null and b/mods/ura/bits/desert/mslomake.des differ
diff --git a/mods/ura/bits/desert/p08.des b/mods/ura/bits/desert/p08.des
new file mode 100644
index 0000000..fc67329
Binary files /dev/null and b/mods/ura/bits/desert/p08.des differ
diff --git a/mods/ura/bits/desert/p09.des b/mods/ura/bits/desert/p09.des
new file mode 100644
index 0000000..6d80670
Binary files /dev/null and b/mods/ura/bits/desert/p09.des differ
diff --git a/mods/ura/bits/desert/p10.des b/mods/ura/bits/desert/p10.des
new file mode 100644
index 0000000..c9884da
Binary files /dev/null and b/mods/ura/bits/desert/p10.des differ
diff --git a/mods/ura/bits/desert/railmine.des b/mods/ura/bits/desert/railmine.des
new file mode 100644
index 0000000..597f9bd
Binary files /dev/null and b/mods/ura/bits/desert/railmine.des differ
diff --git a/mods/ura/bits/desert/rc01.des b/mods/ura/bits/desert/rc01.des
new file mode 100644
index 0000000..eb42239
Binary files /dev/null and b/mods/ura/bits/desert/rc01.des differ
diff --git a/mods/ura/bits/desert/rc02.des b/mods/ura/bits/desert/rc02.des
new file mode 100644
index 0000000..3824d44
Binary files /dev/null and b/mods/ura/bits/desert/rc02.des differ
diff --git a/mods/ura/bits/desert/rc03.des b/mods/ura/bits/desert/rc03.des
new file mode 100644
index 0000000..5e20c03
Binary files /dev/null and b/mods/ura/bits/desert/rc03.des differ
diff --git a/mods/ura/bits/desert/rc04.des b/mods/ura/bits/desert/rc04.des
new file mode 100644
index 0000000..aa26c21
Binary files /dev/null and b/mods/ura/bits/desert/rc04.des differ
diff --git a/mods/ura/bits/desert/rv26.des b/mods/ura/bits/desert/rv26.des
new file mode 100644
index 0000000..d1de6ce
Binary files /dev/null and b/mods/ura/bits/desert/rv26.des differ
diff --git a/mods/ura/bits/desert/rv27.des b/mods/ura/bits/desert/rv27.des
new file mode 100644
index 0000000..8a3670c
Binary files /dev/null and b/mods/ura/bits/desert/rv27.des differ
diff --git a/mods/ura/bits/desert/rvm01.des b/mods/ura/bits/desert/rvm01.des
new file mode 100644
index 0000000..3c33fed
Binary files /dev/null and b/mods/ura/bits/desert/rvm01.des differ
diff --git a/mods/ura/bits/desert/rvm02.des b/mods/ura/bits/desert/rvm02.des
new file mode 100644
index 0000000..ee64d3b
Binary files /dev/null and b/mods/ura/bits/desert/rvm02.des differ
diff --git a/mods/ura/bits/desert/rvm03.des b/mods/ura/bits/desert/rvm03.des
new file mode 100644
index 0000000..036bdfe
Binary files /dev/null and b/mods/ura/bits/desert/rvm03.des differ
diff --git a/mods/ura/bits/desert/rvm04.des b/mods/ura/bits/desert/rvm04.des
new file mode 100644
index 0000000..723773a
Binary files /dev/null and b/mods/ura/bits/desert/rvm04.des differ
diff --git a/mods/ura/bits/desert/sbrd1.des b/mods/ura/bits/desert/sbrd1.des
new file mode 100644
index 0000000..f588449
Binary files /dev/null and b/mods/ura/bits/desert/sbrd1.des differ
diff --git a/mods/ura/bits/desert/sbrd1d.des b/mods/ura/bits/desert/sbrd1d.des
new file mode 100644
index 0000000..0e3a2db
Binary files /dev/null and b/mods/ura/bits/desert/sbrd1d.des differ
diff --git a/mods/ura/bits/desert/sbrd1h.des b/mods/ura/bits/desert/sbrd1h.des
new file mode 100644
index 0000000..0dd2438
Binary files /dev/null and b/mods/ura/bits/desert/sbrd1h.des differ
diff --git a/mods/ura/bits/desert/sbrd1x.des b/mods/ura/bits/desert/sbrd1x.des
new file mode 100644
index 0000000..01e90b9
Binary files /dev/null and b/mods/ura/bits/desert/sbrd1x.des differ
diff --git a/mods/ura/bits/desert/sbrd2.des b/mods/ura/bits/desert/sbrd2.des
new file mode 100644
index 0000000..a8980f2
Binary files /dev/null and b/mods/ura/bits/desert/sbrd2.des differ
diff --git a/mods/ura/bits/desert/sbrd2d.des b/mods/ura/bits/desert/sbrd2d.des
new file mode 100644
index 0000000..6528da5
Binary files /dev/null and b/mods/ura/bits/desert/sbrd2d.des differ
diff --git a/mods/ura/bits/desert/sbrd2h.des b/mods/ura/bits/desert/sbrd2h.des
new file mode 100644
index 0000000..32ed717
Binary files /dev/null and b/mods/ura/bits/desert/sbrd2h.des differ
diff --git a/mods/ura/bits/desert/sbrd2x.des b/mods/ura/bits/desert/sbrd2x.des
new file mode 100644
index 0000000..74601f9
Binary files /dev/null and b/mods/ura/bits/desert/sbrd2x.des differ
diff --git a/mods/ura/bits/desert/sh64.des b/mods/ura/bits/desert/sh64.des
new file mode 100644
index 0000000..4e37fb5
Binary files /dev/null and b/mods/ura/bits/desert/sh64.des differ
diff --git a/mods/ura/bits/desert/sh65.des b/mods/ura/bits/desert/sh65.des
new file mode 100644
index 0000000..c1b6ace
Binary files /dev/null and b/mods/ura/bits/desert/sh65.des differ
diff --git a/mods/ura/bits/desert/tc01.des b/mods/ura/bits/desert/tc01.des
new file mode 100644
index 0000000..4ea92bf
Binary files /dev/null and b/mods/ura/bits/desert/tc01.des differ
diff --git a/mods/ura/bits/desert/tent.des b/mods/ura/bits/desert/tent.des
new file mode 100644
index 0000000..e736876
Binary files /dev/null and b/mods/ura/bits/desert/tent.des differ
diff --git a/mods/ura/bits/desert/tentmake.des b/mods/ura/bits/desert/tentmake.des
new file mode 100644
index 0000000..ef676cc
Binary files /dev/null and b/mods/ura/bits/desert/tentmake.des differ
diff --git a/mods/ura/bits/desert/v19.des b/mods/ura/bits/desert/v19.des
new file mode 100644
index 0000000..12cd2c2
Binary files /dev/null and b/mods/ura/bits/desert/v19.des differ
diff --git a/mods/ura/bits/desert/w1.des b/mods/ura/bits/desert/w1.des
new file mode 100644
index 0000000..7302f3b
Binary files /dev/null and b/mods/ura/bits/desert/w1.des differ
diff --git a/mods/ura/bits/desert/wc01.des b/mods/ura/bits/desert/wc01.des
new file mode 100644
index 0000000..2ee7d1f
Binary files /dev/null and b/mods/ura/bits/desert/wc01.des differ
diff --git a/mods/ura/bits/desert/wc02.des b/mods/ura/bits/desert/wc02.des
new file mode 100644
index 0000000..d1f0d62
Binary files /dev/null and b/mods/ura/bits/desert/wc02.des differ
diff --git a/mods/ura/bits/desert/wc03.des b/mods/ura/bits/desert/wc03.des
new file mode 100644
index 0000000..c0aecc9
Binary files /dev/null and b/mods/ura/bits/desert/wc03.des differ
diff --git a/mods/ura/bits/desert/wc04.des b/mods/ura/bits/desert/wc04.des
new file mode 100644
index 0000000..7b71a19
Binary files /dev/null and b/mods/ura/bits/desert/wc04.des differ
diff --git a/mods/ura/bits/desert/wc05.des b/mods/ura/bits/desert/wc05.des
new file mode 100644
index 0000000..f10403d
Binary files /dev/null and b/mods/ura/bits/desert/wc05.des differ
diff --git a/mods/ura/bits/desert/wc06.des b/mods/ura/bits/desert/wc06.des
new file mode 100644
index 0000000..32bca7a
Binary files /dev/null and b/mods/ura/bits/desert/wc06.des differ
diff --git a/mods/ura/bits/desert/wc07.des b/mods/ura/bits/desert/wc07.des
new file mode 100644
index 0000000..ff3a83f
Binary files /dev/null and b/mods/ura/bits/desert/wc07.des differ
diff --git a/mods/ura/bits/desert/wc08.des b/mods/ura/bits/desert/wc08.des
new file mode 100644
index 0000000..4ceee39
Binary files /dev/null and b/mods/ura/bits/desert/wc08.des differ
diff --git a/mods/ura/bits/desert/wc09.des b/mods/ura/bits/desert/wc09.des
new file mode 100644
index 0000000..0d8c1fb
Binary files /dev/null and b/mods/ura/bits/desert/wc09.des differ
diff --git a/mods/ura/bits/desert/wc10.des b/mods/ura/bits/desert/wc10.des
new file mode 100644
index 0000000..40df846
Binary files /dev/null and b/mods/ura/bits/desert/wc10.des differ
diff --git a/mods/ura/bits/desert/wc11.des b/mods/ura/bits/desert/wc11.des
new file mode 100644
index 0000000..5f93a1b
Binary files /dev/null and b/mods/ura/bits/desert/wc11.des differ
diff --git a/mods/ura/bits/desert/wc12.des b/mods/ura/bits/desert/wc12.des
new file mode 100644
index 0000000..9d45939
Binary files /dev/null and b/mods/ura/bits/desert/wc12.des differ
diff --git a/mods/ura/bits/desert/wc13.des b/mods/ura/bits/desert/wc13.des
new file mode 100644
index 0000000..6c7d81f
Binary files /dev/null and b/mods/ura/bits/desert/wc13.des differ
diff --git a/mods/ura/bits/desert/wc14.des b/mods/ura/bits/desert/wc14.des
new file mode 100644
index 0000000..683bac6
Binary files /dev/null and b/mods/ura/bits/desert/wc14.des differ
diff --git a/mods/ura/bits/desert/wc15.des b/mods/ura/bits/desert/wc15.des
new file mode 100644
index 0000000..968e220
Binary files /dev/null and b/mods/ura/bits/desert/wc15.des differ
diff --git a/mods/ura/bits/desert/wc16.des b/mods/ura/bits/desert/wc16.des
new file mode 100644
index 0000000..dfda16a
Binary files /dev/null and b/mods/ura/bits/desert/wc16.des differ
diff --git a/mods/ura/bits/desert/wc17.des b/mods/ura/bits/desert/wc17.des
new file mode 100644
index 0000000..8f349c3
Binary files /dev/null and b/mods/ura/bits/desert/wc17.des differ
diff --git a/mods/ura/bits/desert/wc18.des b/mods/ura/bits/desert/wc18.des
new file mode 100644
index 0000000..a47c879
Binary files /dev/null and b/mods/ura/bits/desert/wc18.des differ
diff --git a/mods/ura/bits/desert/wc19.des b/mods/ura/bits/desert/wc19.des
new file mode 100644
index 0000000..d1d43d3
Binary files /dev/null and b/mods/ura/bits/desert/wc19.des differ
diff --git a/mods/ura/bits/desert/wc20.des b/mods/ura/bits/desert/wc20.des
new file mode 100644
index 0000000..f94cf56
Binary files /dev/null and b/mods/ura/bits/desert/wc20.des differ
diff --git a/mods/ura/bits/desert/wc21.des b/mods/ura/bits/desert/wc21.des
new file mode 100644
index 0000000..36b3732
Binary files /dev/null and b/mods/ura/bits/desert/wc21.des differ
diff --git a/mods/ura/bits/desert/wc22.des b/mods/ura/bits/desert/wc22.des
new file mode 100644
index 0000000..c80d162
Binary files /dev/null and b/mods/ura/bits/desert/wc22.des differ
diff --git a/mods/ura/bits/desert/wc23.des b/mods/ura/bits/desert/wc23.des
new file mode 100644
index 0000000..3ecd8b8
Binary files /dev/null and b/mods/ura/bits/desert/wc23.des differ
diff --git a/mods/ura/bits/desert/wc24.des b/mods/ura/bits/desert/wc24.des
new file mode 100644
index 0000000..9f396b7
Binary files /dev/null and b/mods/ura/bits/desert/wc24.des differ
diff --git a/mods/ura/bits/desert/wc25.des b/mods/ura/bits/desert/wc25.des
new file mode 100644
index 0000000..588d467
Binary files /dev/null and b/mods/ura/bits/desert/wc25.des differ
diff --git a/mods/ura/bits/desert/wc26.des b/mods/ura/bits/desert/wc26.des
new file mode 100644
index 0000000..a621b41
Binary files /dev/null and b/mods/ura/bits/desert/wc26.des differ
diff --git a/mods/ura/bits/desert/wc27.des b/mods/ura/bits/desert/wc27.des
new file mode 100644
index 0000000..e779703
Binary files /dev/null and b/mods/ura/bits/desert/wc27.des differ
diff --git a/mods/ura/bits/desert/wc28.des b/mods/ura/bits/desert/wc28.des
new file mode 100644
index 0000000..5633f99
Binary files /dev/null and b/mods/ura/bits/desert/wc28.des differ
diff --git a/mods/ura/bits/desert/wc29.des b/mods/ura/bits/desert/wc29.des
new file mode 100644
index 0000000..3a7b03e
Binary files /dev/null and b/mods/ura/bits/desert/wc29.des differ
diff --git a/mods/ura/bits/desert/wc30.des b/mods/ura/bits/desert/wc30.des
new file mode 100644
index 0000000..4073697
Binary files /dev/null and b/mods/ura/bits/desert/wc30.des differ
diff --git a/mods/ura/bits/desert/wc31.des b/mods/ura/bits/desert/wc31.des
new file mode 100644
index 0000000..5baca0d
Binary files /dev/null and b/mods/ura/bits/desert/wc31.des differ
diff --git a/mods/ura/bits/desert/wc32.des b/mods/ura/bits/desert/wc32.des
new file mode 100644
index 0000000..e4ff1bb
Binary files /dev/null and b/mods/ura/bits/desert/wc32.des differ
diff --git a/mods/ura/bits/desert/wc33.des b/mods/ura/bits/desert/wc33.des
new file mode 100644
index 0000000..f6defbf
Binary files /dev/null and b/mods/ura/bits/desert/wc33.des differ
diff --git a/mods/ura/bits/desert/wc34.des b/mods/ura/bits/desert/wc34.des
new file mode 100644
index 0000000..aa72ca8
Binary files /dev/null and b/mods/ura/bits/desert/wc34.des differ
diff --git a/mods/ura/bits/desert/wc35.des b/mods/ura/bits/desert/wc35.des
new file mode 100644
index 0000000..4ba02de
Binary files /dev/null and b/mods/ura/bits/desert/wc35.des differ
diff --git a/mods/ura/bits/desert/wc36.des b/mods/ura/bits/desert/wc36.des
new file mode 100644
index 0000000..efaa338
Binary files /dev/null and b/mods/ura/bits/desert/wc36.des differ
diff --git a/mods/ura/bits/desert/wc37.des b/mods/ura/bits/desert/wc37.des
new file mode 100644
index 0000000..79a5bd3
Binary files /dev/null and b/mods/ura/bits/desert/wc37.des differ
diff --git a/mods/ura/bits/desert/wc38.des b/mods/ura/bits/desert/wc38.des
new file mode 100644
index 0000000..f0403e3
Binary files /dev/null and b/mods/ura/bits/desert/wc38.des differ
diff --git a/mods/ura/bits/desert/wc39.des b/mods/ura/bits/desert/wc39.des
new file mode 100644
index 0000000..9771295
Binary files /dev/null and b/mods/ura/bits/desert/wc39.des differ
diff --git a/mods/ura/bits/desert/wc40.des b/mods/ura/bits/desert/wc40.des
new file mode 100644
index 0000000..15bea16
Binary files /dev/null and b/mods/ura/bits/desert/wc40.des differ
diff --git a/mods/ura/bits/desert/wc41.des b/mods/ura/bits/desert/wc41.des
new file mode 100644
index 0000000..8997359
Binary files /dev/null and b/mods/ura/bits/desert/wc41.des differ
diff --git a/mods/ura/bits/desert/wc42.des b/mods/ura/bits/desert/wc42.des
new file mode 100644
index 0000000..a013614
Binary files /dev/null and b/mods/ura/bits/desert/wc42.des differ
diff --git a/mods/ura/bits/desert/wc43.des b/mods/ura/bits/desert/wc43.des
new file mode 100644
index 0000000..2a5e69e
Binary files /dev/null and b/mods/ura/bits/desert/wc43.des differ
diff --git a/mods/ura/bits/desert/wc44.des b/mods/ura/bits/desert/wc44.des
new file mode 100644
index 0000000..c02c6ef
Binary files /dev/null and b/mods/ura/bits/desert/wc44.des differ
diff --git a/mods/ura/bits/desert/wc45.des b/mods/ura/bits/desert/wc45.des
new file mode 100644
index 0000000..8e1ec2f
Binary files /dev/null and b/mods/ura/bits/desert/wc45.des differ
diff --git a/mods/ura/bits/desert/wc46.des b/mods/ura/bits/desert/wc46.des
new file mode 100644
index 0000000..87665b2
Binary files /dev/null and b/mods/ura/bits/desert/wc46.des differ
diff --git a/mods/ura/bits/e6.shp b/mods/ura/bits/e6.shp
new file mode 100644
index 0000000..34b27d0
Binary files /dev/null and b/mods/ura/bits/e6.shp differ
diff --git a/mods/ura/bits/einstein.shp b/mods/ura/bits/einstein.shp
new file mode 100644
index 0000000..a8193b6
Binary files /dev/null and b/mods/ura/bits/einstein.shp differ
diff --git a/mods/ura/bits/enmydet.aud b/mods/ura/bits/enmydet.aud
new file mode 100644
index 0000000..e02b341
Binary files /dev/null and b/mods/ura/bits/enmydet.aud differ
diff --git a/mods/ura/bits/fact.shp b/mods/ura/bits/fact.shp
new file mode 100644
index 0000000..0dbb262
Binary files /dev/null and b/mods/ura/bits/fact.shp differ
diff --git a/mods/ura/bits/factdead.shp b/mods/ura/bits/factdead.shp
new file mode 100644
index 0000000..f6ff1dd
Binary files /dev/null and b/mods/ura/bits/factdead.shp differ
diff --git a/mods/ura/bits/factmake.shp b/mods/ura/bits/factmake.shp
new file mode 100644
index 0000000..94bd607
Binary files /dev/null and b/mods/ura/bits/factmake.shp differ
diff --git a/mods/ura/bits/fapwicon.shp b/mods/ura/bits/fapwicon.shp
new file mode 100644
index 0000000..c4d0cb7
Binary files /dev/null and b/mods/ura/bits/fapwicon.shp differ
diff --git a/mods/ura/bits/fb3.shp b/mods/ura/bits/fb3.shp
new file mode 100644
index 0000000..a554c40
Binary files /dev/null and b/mods/ura/bits/fb3.shp differ
diff --git a/mods/ura/bits/fb4.shp b/mods/ura/bits/fb4.shp
new file mode 100644
index 0000000..c6d863e
Binary files /dev/null and b/mods/ura/bits/fb4.shp differ
diff --git a/mods/ura/bits/fcommake.shp b/mods/ura/bits/fcommake.shp
new file mode 100644
index 0000000..10a919a
Binary files /dev/null and b/mods/ura/bits/fcommake.shp differ
diff --git a/mods/ura/bits/fixficon.shp b/mods/ura/bits/fixficon.shp
new file mode 100644
index 0000000..b9aedad
Binary files /dev/null and b/mods/ura/bits/fixficon.shp differ
diff --git a/mods/ura/bits/fjord1.tem b/mods/ura/bits/fjord1.tem
new file mode 100644
index 0000000..027788b
Binary files /dev/null and b/mods/ura/bits/fjord1.tem differ
diff --git a/mods/ura/bits/fjord2.tem b/mods/ura/bits/fjord2.tem
new file mode 100644
index 0000000..e8f3ac0
Binary files /dev/null and b/mods/ura/bits/fjord2.tem differ
diff --git a/mods/ura/bits/fpwricon.shp b/mods/ura/bits/fpwricon.shp
new file mode 100644
index 0000000..7e3fe88
Binary files /dev/null and b/mods/ura/bits/fpwricon.shp differ
diff --git a/mods/ura/bits/ftrk.shp b/mods/ura/bits/ftrk.shp
new file mode 100644
index 0000000..01ee723
Binary files /dev/null and b/mods/ura/bits/ftrk.shp differ
diff --git a/mods/ura/bits/ftrkicon.shp b/mods/ura/bits/ftrkicon.shp
new file mode 100644
index 0000000..fe871d2
Binary files /dev/null and b/mods/ura/bits/ftrkicon.shp differ
diff --git a/mods/ura/bits/gap.shp b/mods/ura/bits/gap.shp
new file mode 100644
index 0000000..48d0983
Binary files /dev/null and b/mods/ura/bits/gap.shp differ
diff --git a/mods/ura/bits/gapmake.shp b/mods/ura/bits/gapmake.shp
new file mode 100644
index 0000000..18d89e8
Binary files /dev/null and b/mods/ura/bits/gapmake.shp differ
diff --git a/mods/ura/bits/gmine.sno b/mods/ura/bits/gmine.sno
new file mode 100644
index 0000000..541ed27
Binary files /dev/null and b/mods/ura/bits/gmine.sno differ
diff --git a/mods/ura/bits/gmine.tem b/mods/ura/bits/gmine.tem
new file mode 100644
index 0000000..6baab91
Binary files /dev/null and b/mods/ura/bits/gmine.tem differ
diff --git a/mods/ura/bits/gpsdot.shp b/mods/ura/bits/gpsdot.shp
new file mode 100644
index 0000000..47652d5
Binary files /dev/null and b/mods/ura/bits/gpsdot.shp differ
diff --git a/mods/ura/bits/gunfire2.shp b/mods/ura/bits/gunfire2.shp
new file mode 100644
index 0000000..1138744
Binary files /dev/null and b/mods/ura/bits/gunfire2.shp differ
diff --git a/mods/ura/bits/harv.shp b/mods/ura/bits/harv.shp
new file mode 100644
index 0000000..71e17b9
Binary files /dev/null and b/mods/ura/bits/harv.shp differ
diff --git a/mods/ura/bits/harvempty.shp b/mods/ura/bits/harvempty.shp
new file mode 100644
index 0000000..3a954f8
Binary files /dev/null and b/mods/ura/bits/harvempty.shp differ
diff --git a/mods/ura/bits/harvhalf.shp b/mods/ura/bits/harvhalf.shp
new file mode 100644
index 0000000..413fbc2
Binary files /dev/null and b/mods/ura/bits/harvhalf.shp differ
diff --git a/mods/ura/bits/heli.shp b/mods/ura/bits/heli.shp
new file mode 100644
index 0000000..2da63f5
Binary files /dev/null and b/mods/ura/bits/heli.shp differ
diff --git a/mods/ura/bits/hhusk.shp b/mods/ura/bits/hhusk.shp
new file mode 100644
index 0000000..4236c84
Binary files /dev/null and b/mods/ura/bits/hhusk.shp differ
diff --git a/mods/ura/bits/hhusk2.shp b/mods/ura/bits/hhusk2.shp
new file mode 100644
index 0000000..57a926d
Binary files /dev/null and b/mods/ura/bits/hhusk2.shp differ
diff --git a/mods/ura/bits/hijackericon.shp b/mods/ura/bits/hijackericon.shp
new file mode 100644
index 0000000..5772b25
Binary files /dev/null and b/mods/ura/bits/hijackericon.shp differ
diff --git a/mods/ura/bits/hospicon.shp b/mods/ura/bits/hospicon.shp
new file mode 100644
index 0000000..efce8ce
Binary files /dev/null and b/mods/ura/bits/hospicon.shp differ
diff --git a/mods/ura/bits/iconchevrons.shp b/mods/ura/bits/iconchevrons.shp
new file mode 100644
index 0000000..b96fa50
Binary files /dev/null and b/mods/ura/bits/iconchevrons.shp differ
diff --git a/mods/ura/bits/invun.shp b/mods/ura/bits/invun.shp
new file mode 100644
index 0000000..4796747
Binary files /dev/null and b/mods/ura/bits/invun.shp differ
diff --git a/mods/ura/bits/jmin.shp b/mods/ura/bits/jmin.shp
new file mode 100644
index 0000000..e889126
Binary files /dev/null and b/mods/ura/bits/jmin.shp differ
diff --git a/mods/ura/bits/levelup.shp b/mods/ura/bits/levelup.shp
new file mode 100644
index 0000000..eec8a7f
Binary files /dev/null and b/mods/ura/bits/levelup.shp differ
diff --git a/mods/ura/bits/lhus.shp b/mods/ura/bits/lhus.shp
new file mode 100644
index 0000000..82159be
Binary files /dev/null and b/mods/ura/bits/lhus.shp differ
diff --git a/mods/ura/bits/lrotorlg.shp b/mods/ura/bits/lrotorlg.shp
new file mode 100644
index 0000000..524cfa1
Binary files /dev/null and b/mods/ura/bits/lrotorlg.shp differ
diff --git a/mods/ura/bits/mbAGUN.int b/mods/ura/bits/mbAGUN.int
new file mode 100644
index 0000000..070099c
Binary files /dev/null and b/mods/ura/bits/mbAGUN.int differ
diff --git a/mods/ura/bits/mbAGUN.sno b/mods/ura/bits/mbAGUN.sno
new file mode 100644
index 0000000..0b2242d
Binary files /dev/null and b/mods/ura/bits/mbAGUN.sno differ
diff --git a/mods/ura/bits/mbAGUN.tem b/mods/ura/bits/mbAGUN.tem
new file mode 100644
index 0000000..5e6416d
Binary files /dev/null and b/mods/ura/bits/mbAGUN.tem differ
diff --git a/mods/ura/bits/mbFIX.int b/mods/ura/bits/mbFIX.int
new file mode 100644
index 0000000..a1853ec
Binary files /dev/null and b/mods/ura/bits/mbFIX.int differ
diff --git a/mods/ura/bits/mbFIX.sno b/mods/ura/bits/mbFIX.sno
new file mode 100644
index 0000000..a5019b8
Binary files /dev/null and b/mods/ura/bits/mbFIX.sno differ
diff --git a/mods/ura/bits/mbFIX.tem b/mods/ura/bits/mbFIX.tem
new file mode 100644
index 0000000..35a2ce5
Binary files /dev/null and b/mods/ura/bits/mbFIX.tem differ
diff --git a/mods/ura/bits/mbFTUR.int b/mods/ura/bits/mbFTUR.int
new file mode 100644
index 0000000..9571ed7
Binary files /dev/null and b/mods/ura/bits/mbFTUR.int differ
diff --git a/mods/ura/bits/mbFTUR.sno b/mods/ura/bits/mbFTUR.sno
new file mode 100644
index 0000000..c776644
Binary files /dev/null and b/mods/ura/bits/mbFTUR.sno differ
diff --git a/mods/ura/bits/mbFTUR.tem b/mods/ura/bits/mbFTUR.tem
new file mode 100644
index 0000000..679c4f5
Binary files /dev/null and b/mods/ura/bits/mbFTUR.tem differ
diff --git a/mods/ura/bits/mbGAP.int b/mods/ura/bits/mbGAP.int
new file mode 100644
index 0000000..15d3833
Binary files /dev/null and b/mods/ura/bits/mbGAP.int differ
diff --git a/mods/ura/bits/mbGAP.sno b/mods/ura/bits/mbGAP.sno
new file mode 100644
index 0000000..d4d40ee
Binary files /dev/null and b/mods/ura/bits/mbGAP.sno differ
diff --git a/mods/ura/bits/mbGAP.tem b/mods/ura/bits/mbGAP.tem
new file mode 100644
index 0000000..b722323
Binary files /dev/null and b/mods/ura/bits/mbGAP.tem differ
diff --git a/mods/ura/bits/mbGUN.int b/mods/ura/bits/mbGUN.int
new file mode 100644
index 0000000..2d955cc
Binary files /dev/null and b/mods/ura/bits/mbGUN.int differ
diff --git a/mods/ura/bits/mbGUN.sno b/mods/ura/bits/mbGUN.sno
new file mode 100644
index 0000000..4944564
Binary files /dev/null and b/mods/ura/bits/mbGUN.sno differ
diff --git a/mods/ura/bits/mbGUN.tem b/mods/ura/bits/mbGUN.tem
new file mode 100644
index 0000000..dd93e39
Binary files /dev/null and b/mods/ura/bits/mbGUN.tem differ
diff --git a/mods/ura/bits/mbHOSP.int b/mods/ura/bits/mbHOSP.int
new file mode 100644
index 0000000..0d86416
Binary files /dev/null and b/mods/ura/bits/mbHOSP.int differ
diff --git a/mods/ura/bits/mbHOSP.sno b/mods/ura/bits/mbHOSP.sno
new file mode 100644
index 0000000..e93160f
Binary files /dev/null and b/mods/ura/bits/mbHOSP.sno differ
diff --git a/mods/ura/bits/mbHOSP.tem b/mods/ura/bits/mbHOSP.tem
new file mode 100644
index 0000000..1828569
Binary files /dev/null and b/mods/ura/bits/mbHOSP.tem differ
diff --git a/mods/ura/bits/mbIRON.int b/mods/ura/bits/mbIRON.int
new file mode 100644
index 0000000..c5fdd5c
Binary files /dev/null and b/mods/ura/bits/mbIRON.int differ
diff --git a/mods/ura/bits/mbIRON.sno b/mods/ura/bits/mbIRON.sno
new file mode 100644
index 0000000..a81b1be
Binary files /dev/null and b/mods/ura/bits/mbIRON.sno differ
diff --git a/mods/ura/bits/mbIRON.tem b/mods/ura/bits/mbIRON.tem
new file mode 100644
index 0000000..b7db666
Binary files /dev/null and b/mods/ura/bits/mbIRON.tem differ
diff --git a/mods/ura/bits/mbPBOX.int b/mods/ura/bits/mbPBOX.int
new file mode 100644
index 0000000..7f41e79
Binary files /dev/null and b/mods/ura/bits/mbPBOX.int differ
diff --git a/mods/ura/bits/mbPBOX.sno b/mods/ura/bits/mbPBOX.sno
new file mode 100644
index 0000000..ef5b31d
Binary files /dev/null and b/mods/ura/bits/mbPBOX.sno differ
diff --git a/mods/ura/bits/mbPBOX.tem b/mods/ura/bits/mbPBOX.tem
new file mode 100644
index 0000000..72f71c6
Binary files /dev/null and b/mods/ura/bits/mbPBOX.tem differ
diff --git a/mods/ura/bits/mbPDOX.int b/mods/ura/bits/mbPDOX.int
new file mode 100644
index 0000000..18421fe
Binary files /dev/null and b/mods/ura/bits/mbPDOX.int differ
diff --git a/mods/ura/bits/mbPDOX.sno b/mods/ura/bits/mbPDOX.sno
new file mode 100644
index 0000000..9f963fa
Binary files /dev/null and b/mods/ura/bits/mbPDOX.sno differ
diff --git a/mods/ura/bits/mbPDOX.tem b/mods/ura/bits/mbPDOX.tem
new file mode 100644
index 0000000..29b9d4e
Binary files /dev/null and b/mods/ura/bits/mbPDOX.tem differ
diff --git a/mods/ura/bits/mbSAM.int b/mods/ura/bits/mbSAM.int
new file mode 100644
index 0000000..95283a6
Binary files /dev/null and b/mods/ura/bits/mbSAM.int differ
diff --git a/mods/ura/bits/mbSAM.sno b/mods/ura/bits/mbSAM.sno
new file mode 100644
index 0000000..3adb3a2
Binary files /dev/null and b/mods/ura/bits/mbSAM.sno differ
diff --git a/mods/ura/bits/mbSAM.tem b/mods/ura/bits/mbSAM.tem
new file mode 100644
index 0000000..dbafbf8
Binary files /dev/null and b/mods/ura/bits/mbSAM.tem differ
diff --git a/mods/ura/bits/mbSILO.int b/mods/ura/bits/mbSILO.int
new file mode 100644
index 0000000..78dc41c
Binary files /dev/null and b/mods/ura/bits/mbSILO.int differ
diff --git a/mods/ura/bits/mbSILO.sno b/mods/ura/bits/mbSILO.sno
new file mode 100644
index 0000000..9f7c657
Binary files /dev/null and b/mods/ura/bits/mbSILO.sno differ
diff --git a/mods/ura/bits/mbSILO.tem b/mods/ura/bits/mbSILO.tem
new file mode 100644
index 0000000..78699ff
Binary files /dev/null and b/mods/ura/bits/mbSILO.tem differ
diff --git a/mods/ura/bits/mbTSLA.int b/mods/ura/bits/mbTSLA.int
new file mode 100644
index 0000000..40ae610
Binary files /dev/null and b/mods/ura/bits/mbTSLA.int differ
diff --git a/mods/ura/bits/mbTSLA.sno b/mods/ura/bits/mbTSLA.sno
new file mode 100644
index 0000000..3553774
Binary files /dev/null and b/mods/ura/bits/mbTSLA.sno differ
diff --git a/mods/ura/bits/mbTSLA.tem b/mods/ura/bits/mbTSLA.tem
new file mode 100644
index 0000000..c8cae5e
Binary files /dev/null and b/mods/ura/bits/mbTSLA.tem differ
diff --git a/mods/ura/bits/mcvhusk.shp b/mods/ura/bits/mcvhusk.shp
new file mode 100644
index 0000000..c88bf40
Binary files /dev/null and b/mods/ura/bits/mcvhusk.shp differ
diff --git a/mods/ura/bits/mgg.shp b/mods/ura/bits/mgg.shp
new file mode 100644
index 0000000..03d049f
Binary files /dev/null and b/mods/ura/bits/mgg.shp differ
diff --git a/mods/ura/bits/mine.int b/mods/ura/bits/mine.int
new file mode 100644
index 0000000..f174688
Binary files /dev/null and b/mods/ura/bits/mine.int differ
diff --git a/mods/ura/bits/missmake.shp b/mods/ura/bits/missmake.shp
new file mode 100644
index 0000000..cf8b67c
Binary files /dev/null and b/mods/ura/bits/missmake.shp differ
diff --git a/mods/ura/bits/mpspawn.shp b/mods/ura/bits/mpspawn.shp
new file mode 100644
index 0000000..7b9e9e7
Binary files /dev/null and b/mods/ura/bits/mpspawn.shp differ
diff --git a/mods/ura/bits/mslficon.shp b/mods/ura/bits/mslficon.shp
new file mode 100644
index 0000000..1599d05
Binary files /dev/null and b/mods/ura/bits/mslficon.shp differ
diff --git a/mods/ura/bits/msloicon2.shp b/mods/ura/bits/msloicon2.shp
new file mode 100644
index 0000000..e764afe
Binary files /dev/null and b/mods/ura/bits/msloicon2.shp differ
diff --git a/mods/ura/bits/napalm1.shp b/mods/ura/bits/napalm1.shp
new file mode 100644
index 0000000..f880d8a
Binary files /dev/null and b/mods/ura/bits/napalm1.shp differ
diff --git a/mods/ura/bits/nopower.shp b/mods/ura/bits/nopower.shp
new file mode 100644
index 0000000..49792f8
Binary files /dev/null and b/mods/ura/bits/nopower.shp differ
diff --git a/mods/ura/bits/oilb.shp b/mods/ura/bits/oilb.shp
new file mode 100644
index 0000000..b0df3be
Binary files /dev/null and b/mods/ura/bits/oilb.shp differ
diff --git a/mods/ura/bits/overlay.shp b/mods/ura/bits/overlay.shp
new file mode 100644
index 0000000..fd5dc18
Binary files /dev/null and b/mods/ura/bits/overlay.shp differ
diff --git a/mods/ura/bits/parach-shadow.shp b/mods/ura/bits/parach-shadow.shp
new file mode 100644
index 0000000..7d848c8
Binary files /dev/null and b/mods/ura/bits/parach-shadow.shp differ
diff --git a/mods/ura/bits/pdoficon.shp b/mods/ura/bits/pdoficon.shp
new file mode 100644
index 0000000..463b90f
Binary files /dev/null and b/mods/ura/bits/pdoficon.shp differ
diff --git a/mods/ura/bits/pip-disguise.shp b/mods/ura/bits/pip-disguise.shp
new file mode 100644
index 0000000..95ecd66
Binary files /dev/null and b/mods/ura/bits/pip-disguise.shp differ
diff --git a/mods/ura/bits/pips2.shp b/mods/ura/bits/pips2.shp
new file mode 100644
index 0000000..c6f99ce
Binary files /dev/null and b/mods/ura/bits/pips2.shp differ
diff --git a/mods/ura/bits/playersmoke.shp b/mods/ura/bits/playersmoke.shp
new file mode 100644
index 0000000..36acc68
Binary files /dev/null and b/mods/ura/bits/playersmoke.shp differ
diff --git a/mods/ura/bits/poweroff.shp b/mods/ura/bits/poweroff.shp
new file mode 100644
index 0000000..47da2b0
Binary files /dev/null and b/mods/ura/bits/poweroff.shp differ
diff --git a/mods/ura/bits/powrdead.shp b/mods/ura/bits/powrdead.shp
new file mode 100644
index 0000000..6f52493
Binary files /dev/null and b/mods/ura/bits/powrdead.shp differ
diff --git a/mods/ura/bits/procdead.shp b/mods/ura/bits/procdead.shp
new file mode 100644
index 0000000..c394806
Binary files /dev/null and b/mods/ura/bits/procdead.shp differ
diff --git a/mods/ura/bits/proctop.shp b/mods/ura/bits/proctop.shp
new file mode 100644
index 0000000..99b5c6a
Binary files /dev/null and b/mods/ura/bits/proctop.shp differ
diff --git a/mods/ura/bits/railmine.sno b/mods/ura/bits/railmine.sno
new file mode 100644
index 0000000..ae1da6d
Binary files /dev/null and b/mods/ura/bits/railmine.sno differ
diff --git a/mods/ura/bits/railmine.tem b/mods/ura/bits/railmine.tem
new file mode 100644
index 0000000..5f650d4
Binary files /dev/null and b/mods/ura/bits/railmine.tem differ
diff --git a/mods/ura/bits/rank.shp b/mods/ura/bits/rank.shp
new file mode 100644
index 0000000..958aba6
Binary files /dev/null and b/mods/ura/bits/rank.shp differ
diff --git a/mods/ura/bits/rice.tem b/mods/ura/bits/rice.tem
new file mode 100644
index 0000000..1e8af21
Binary files /dev/null and b/mods/ura/bits/rice.tem differ
diff --git a/mods/ura/bits/rushouse.shp b/mods/ura/bits/rushouse.shp
new file mode 100644
index 0000000..1164a4b
Binary files /dev/null and b/mods/ura/bits/rushouse.shp differ
diff --git a/mods/ura/bits/sam2.shp b/mods/ura/bits/sam2.shp
new file mode 100644
index 0000000..dacb3b9
Binary files /dev/null and b/mods/ura/bits/sam2.shp differ
diff --git a/mods/ura/bits/sbridge1.tem b/mods/ura/bits/sbridge1.tem
new file mode 100644
index 0000000..2c17c01
Binary files /dev/null and b/mods/ura/bits/sbridge1.tem differ
diff --git a/mods/ura/bits/sbridge1d.tem b/mods/ura/bits/sbridge1d.tem
new file mode 100644
index 0000000..29891fb
Binary files /dev/null and b/mods/ura/bits/sbridge1d.tem differ
diff --git a/mods/ura/bits/sbridge1h.tem b/mods/ura/bits/sbridge1h.tem
new file mode 100644
index 0000000..7f81df1
Binary files /dev/null and b/mods/ura/bits/sbridge1h.tem differ
diff --git a/mods/ura/bits/sbridge1x.tem b/mods/ura/bits/sbridge1x.tem
new file mode 100644
index 0000000..a73a297
Binary files /dev/null and b/mods/ura/bits/sbridge1x.tem differ
diff --git a/mods/ura/bits/sbridge2.tem b/mods/ura/bits/sbridge2.tem
new file mode 100644
index 0000000..6b98758
Binary files /dev/null and b/mods/ura/bits/sbridge2.tem differ
diff --git a/mods/ura/bits/sbridge2d.tem b/mods/ura/bits/sbridge2d.tem
new file mode 100644
index 0000000..4298aeb
Binary files /dev/null and b/mods/ura/bits/sbridge2d.tem differ
diff --git a/mods/ura/bits/sbridge2h.tem b/mods/ura/bits/sbridge2h.tem
new file mode 100644
index 0000000..fb0e4bb
Binary files /dev/null and b/mods/ura/bits/sbridge2h.tem differ
diff --git a/mods/ura/bits/sbridge2x.tem b/mods/ura/bits/sbridge2x.tem
new file mode 100644
index 0000000..cb3bdb7
Binary files /dev/null and b/mods/ura/bits/sbridge2x.tem differ
diff --git a/mods/ura/bits/sbridge3.tem b/mods/ura/bits/sbridge3.tem
new file mode 100644
index 0000000..bc1dfad
Binary files /dev/null and b/mods/ura/bits/sbridge3.tem differ
diff --git a/mods/ura/bits/sbridge3d.tem b/mods/ura/bits/sbridge3d.tem
new file mode 100644
index 0000000..42ce99c
Binary files /dev/null and b/mods/ura/bits/sbridge3d.tem differ
diff --git a/mods/ura/bits/sbridge3h.tem b/mods/ura/bits/sbridge3h.tem
new file mode 100644
index 0000000..0e2f554
Binary files /dev/null and b/mods/ura/bits/sbridge3h.tem differ
diff --git a/mods/ura/bits/sbridge3x.tem b/mods/ura/bits/sbridge3x.tem
new file mode 100644
index 0000000..d3585df
Binary files /dev/null and b/mods/ura/bits/sbridge3x.tem differ
diff --git a/mods/ura/bits/sbridge4.tem b/mods/ura/bits/sbridge4.tem
new file mode 100644
index 0000000..d55100b
Binary files /dev/null and b/mods/ura/bits/sbridge4.tem differ
diff --git a/mods/ura/bits/sbridge4d.tem b/mods/ura/bits/sbridge4d.tem
new file mode 100644
index 0000000..56a0eb8
Binary files /dev/null and b/mods/ura/bits/sbridge4d.tem differ
diff --git a/mods/ura/bits/sbridge4h.tem b/mods/ura/bits/sbridge4h.tem
new file mode 100644
index 0000000..8b338e5
Binary files /dev/null and b/mods/ura/bits/sbridge4h.tem differ
diff --git a/mods/ura/bits/sbridge4x.tem b/mods/ura/bits/sbridge4x.tem
new file mode 100644
index 0000000..f252304
Binary files /dev/null and b/mods/ura/bits/sbridge4x.tem differ
diff --git a/mods/ura/bits/sc4.sno b/mods/ura/bits/sc4.sno
new file mode 100644
index 0000000..f8c06d4
Binary files /dev/null and b/mods/ura/bits/sc4.sno differ
diff --git a/mods/ura/bits/sccln.tem b/mods/ura/bits/sccln.tem
new file mode 100644
index 0000000..48fb942
Binary files /dev/null and b/mods/ura/bits/sccln.tem differ
diff --git a/mods/ura/bits/sccls.tem b/mods/ura/bits/sccls.tem
new file mode 100644
index 0000000..dc93299
Binary files /dev/null and b/mods/ura/bits/sccls.tem differ
diff --git a/mods/ura/bits/sccnl.tem b/mods/ura/bits/sccnl.tem
new file mode 100644
index 0000000..0777e20
Binary files /dev/null and b/mods/ura/bits/sccnl.tem differ
diff --git a/mods/ura/bits/sccnr.tem b/mods/ura/bits/sccnr.tem
new file mode 100644
index 0000000..015c938
Binary files /dev/null and b/mods/ura/bits/sccnr.tem differ
diff --git a/mods/ura/bits/sccrn.tem b/mods/ura/bits/sccrn.tem
new file mode 100644
index 0000000..1a7dfaa
Binary files /dev/null and b/mods/ura/bits/sccrn.tem differ
diff --git a/mods/ura/bits/sccrs.tem b/mods/ura/bits/sccrs.tem
new file mode 100644
index 0000000..2f2acab
Binary files /dev/null and b/mods/ura/bits/sccrs.tem differ
diff --git a/mods/ura/bits/sccsl.tem b/mods/ura/bits/sccsl.tem
new file mode 100644
index 0000000..0080811
Binary files /dev/null and b/mods/ura/bits/sccsl.tem differ
diff --git a/mods/ura/bits/sccsr.tem b/mods/ura/bits/sccsr.tem
new file mode 100644
index 0000000..991ac2e
Binary files /dev/null and b/mods/ura/bits/sccsr.tem differ
diff --git a/mods/ura/bits/scrate.shp b/mods/ura/bits/scrate.shp
new file mode 100644
index 0000000..15fe8f3
Binary files /dev/null and b/mods/ura/bits/scrate.shp differ
diff --git a/mods/ura/bits/sgate.shp b/mods/ura/bits/sgate.shp
new file mode 100644
index 0000000..39323e6
Binary files /dev/null and b/mods/ura/bits/sgate.shp differ
diff --git a/mods/ura/bits/sh57.tem b/mods/ura/bits/sh57.tem
new file mode 100644
index 0000000..7bd24f4
Binary files /dev/null and b/mods/ura/bits/sh57.tem differ
diff --git a/mods/ura/bits/sh58.tem b/mods/ura/bits/sh58.tem
new file mode 100644
index 0000000..b6ea0b0
Binary files /dev/null and b/mods/ura/bits/sh58.tem differ
diff --git a/mods/ura/bits/sh59.tem b/mods/ura/bits/sh59.tem
new file mode 100644
index 0000000..30b03da
Binary files /dev/null and b/mods/ura/bits/sh59.tem differ
diff --git a/mods/ura/bits/sh60.tem b/mods/ura/bits/sh60.tem
new file mode 100644
index 0000000..7b1196d
Binary files /dev/null and b/mods/ura/bits/sh60.tem differ
diff --git a/mods/ura/bits/sh61.tem b/mods/ura/bits/sh61.tem
new file mode 100644
index 0000000..9ac5223
Binary files /dev/null and b/mods/ura/bits/sh61.tem differ
diff --git a/mods/ura/bits/sh62.tem b/mods/ura/bits/sh62.tem
new file mode 100644
index 0000000..6fb2d17
Binary files /dev/null and b/mods/ura/bits/sh62.tem differ
diff --git a/mods/ura/bits/sh63.tem b/mods/ura/bits/sh63.tem
new file mode 100644
index 0000000..727f13a
Binary files /dev/null and b/mods/ura/bits/sh63.tem differ
diff --git a/mods/ura/bits/sh64.tem b/mods/ura/bits/sh64.tem
new file mode 100644
index 0000000..b2cac77
Binary files /dev/null and b/mods/ura/bits/sh64.tem differ
diff --git a/mods/ura/bits/silo2.shp b/mods/ura/bits/silo2.shp
new file mode 100644
index 0000000..13cc571
Binary files /dev/null and b/mods/ura/bits/silo2.shp differ
diff --git a/mods/ura/bits/silomake.shp b/mods/ura/bits/silomake.shp
new file mode 100644
index 0000000..f462cb6
Binary files /dev/null and b/mods/ura/bits/silomake.shp differ
diff --git a/mods/ura/bits/silppk.aud b/mods/ura/bits/silppk.aud
new file mode 100644
index 0000000..cffa1e3
Binary files /dev/null and b/mods/ura/bits/silppk.aud differ
diff --git a/mods/ura/bits/sniper.shp b/mods/ura/bits/sniper.shp
new file mode 100644
index 0000000..da5c10e
Binary files /dev/null and b/mods/ura/bits/sniper.shp differ
diff --git a/mods/ura/bits/sniperdropicon.shp b/mods/ura/bits/sniperdropicon.shp
new file mode 100644
index 0000000..c183907
Binary files /dev/null and b/mods/ura/bits/sniperdropicon.shp differ
diff --git a/mods/ura/bits/snipericon.shp b/mods/ura/bits/snipericon.shp
new file mode 100644
index 0000000..e7537e0
Binary files /dev/null and b/mods/ura/bits/snipericon.shp differ
diff --git a/mods/ura/bits/snowhut.shp b/mods/ura/bits/snowhut.shp
new file mode 100644
index 0000000..f2559e1
Binary files /dev/null and b/mods/ura/bits/snowhut.shp differ
diff --git a/mods/ura/bits/stnkicon.shp b/mods/ura/bits/stnkicon.shp
new file mode 100644
index 0000000..050c82b
Binary files /dev/null and b/mods/ura/bits/stnkicon.shp differ
diff --git a/mods/ura/bits/tanktrap1.shp b/mods/ura/bits/tanktrap1.shp
new file mode 100644
index 0000000..65978f8
Binary files /dev/null and b/mods/ura/bits/tanktrap1.shp differ
diff --git a/mods/ura/bits/tanktrap2.shp b/mods/ura/bits/tanktrap2.shp
new file mode 100644
index 0000000..44d151b
Binary files /dev/null and b/mods/ura/bits/tanktrap2.shp differ
diff --git a/mods/ura/bits/tenficon.shp b/mods/ura/bits/tenficon.shp
new file mode 100644
index 0000000..1afb8bb
Binary files /dev/null and b/mods/ura/bits/tenficon.shp differ
diff --git a/mods/ura/bits/tent.sno b/mods/ura/bits/tent.sno
new file mode 100644
index 0000000..d70de72
Binary files /dev/null and b/mods/ura/bits/tent.sno differ
diff --git a/mods/ura/bits/tent.tem b/mods/ura/bits/tent.tem
new file mode 100644
index 0000000..1c02381
Binary files /dev/null and b/mods/ura/bits/tent.tem differ
diff --git a/mods/ura/bits/tentmake.sno b/mods/ura/bits/tentmake.sno
new file mode 100644
index 0000000..f9319f8
Binary files /dev/null and b/mods/ura/bits/tentmake.sno differ
diff --git a/mods/ura/bits/tentmake.tem b/mods/ura/bits/tentmake.tem
new file mode 100644
index 0000000..fbb33d3
Binary files /dev/null and b/mods/ura/bits/tentmake.tem differ
diff --git a/mods/ura/bits/tire.shp b/mods/ura/bits/tire.shp
new file mode 100644
index 0000000..da9493c
Binary files /dev/null and b/mods/ura/bits/tire.shp differ
diff --git a/mods/ura/bits/tran1husk.shp b/mods/ura/bits/tran1husk.shp
new file mode 100644
index 0000000..105d01c
Binary files /dev/null and b/mods/ura/bits/tran1husk.shp differ
diff --git a/mods/ura/bits/tran2.shp b/mods/ura/bits/tran2.shp
new file mode 100644
index 0000000..2e6a6e2
Binary files /dev/null and b/mods/ura/bits/tran2.shp differ
diff --git a/mods/ura/bits/tran2husk.shp b/mods/ura/bits/tran2husk.shp
new file mode 100644
index 0000000..12200f2
Binary files /dev/null and b/mods/ura/bits/tran2husk.shp differ
diff --git a/mods/ura/bits/truk.shp b/mods/ura/bits/truk.shp
new file mode 100644
index 0000000..bd4f3c7
Binary files /dev/null and b/mods/ura/bits/truk.shp differ
diff --git a/mods/ura/bits/unitsto.aud b/mods/ura/bits/unitsto.aud
new file mode 100644
index 0000000..7c53219
Binary files /dev/null and b/mods/ura/bits/unitsto.aud differ
diff --git a/mods/ura/bits/utilpol1.shp b/mods/ura/bits/utilpol1.shp
new file mode 100644
index 0000000..20a9bf4
Binary files /dev/null and b/mods/ura/bits/utilpol1.shp differ
diff --git a/mods/ura/bits/utilpol2.shp b/mods/ura/bits/utilpol2.shp
new file mode 100644
index 0000000..d0bac93
Binary files /dev/null and b/mods/ura/bits/utilpol2.shp differ
diff --git a/mods/ura/bits/vgate.shp b/mods/ura/bits/vgate.shp
new file mode 100644
index 0000000..ae020c1
Binary files /dev/null and b/mods/ura/bits/vgate.shp differ
diff --git a/mods/ura/bits/waypoint.shp b/mods/ura/bits/waypoint.shp
new file mode 100644
index 0000000..8a29fc1
Binary files /dev/null and b/mods/ura/bits/waypoint.shp differ
diff --git a/mods/ura/bits/wcrate.shp b/mods/ura/bits/wcrate.shp
new file mode 100644
index 0000000..d3fd3b9
Binary files /dev/null and b/mods/ura/bits/wcrate.shp differ
diff --git a/mods/ura/bits/weap3.shp b/mods/ura/bits/weap3.shp
new file mode 100644
index 0000000..d8573e1
Binary files /dev/null and b/mods/ura/bits/weap3.shp differ
diff --git a/mods/ura/bits/windmill.shp b/mods/ura/bits/windmill.shp
new file mode 100644
index 0000000..fc33683
Binary files /dev/null and b/mods/ura/bits/windmill.shp differ
diff --git a/mods/ura/bits/wpiff.shp b/mods/ura/bits/wpiff.shp
new file mode 100644
index 0000000..7c26dd1
Binary files /dev/null and b/mods/ura/bits/wpiff.shp differ
diff --git a/mods/ura/bits/wpifpif.shp b/mods/ura/bits/wpifpif.shp
new file mode 100644
index 0000000..8496a48
Binary files /dev/null and b/mods/ura/bits/wpifpif.shp differ
diff --git a/mods/ura/bits/xcratea.shp b/mods/ura/bits/xcratea.shp
new file mode 100644
index 0000000..0f3c7e9
Binary files /dev/null and b/mods/ura/bits/xcratea.shp differ
diff --git a/mods/ura/bits/xcrateb.shp b/mods/ura/bits/xcrateb.shp
new file mode 100644
index 0000000..c05cb48
Binary files /dev/null and b/mods/ura/bits/xcrateb.shp differ
diff --git a/mods/ura/bits/xcratec.shp b/mods/ura/bits/xcratec.shp
new file mode 100644
index 0000000..746e2a1
Binary files /dev/null and b/mods/ura/bits/xcratec.shp differ
diff --git a/mods/ura/bits/xcrated.shp b/mods/ura/bits/xcrated.shp
new file mode 100644
index 0000000..75b44d9
Binary files /dev/null and b/mods/ura/bits/xcrated.shp differ
diff --git a/mods/ura/bits/yak.shp b/mods/ura/bits/yak.shp
new file mode 100644
index 0000000..c760b4e
Binary files /dev/null and b/mods/ura/bits/yak.shp differ
diff --git a/mods/ura/bits/zombicon.shp b/mods/ura/bits/zombicon.shp
new file mode 100644
index 0000000..501542a
Binary files /dev/null and b/mods/ura/bits/zombicon.shp differ
diff --git a/mods/ura/bits/zombie.shp b/mods/ura/bits/zombie.shp
new file mode 100644
index 0000000..5342f57
Binary files /dev/null and b/mods/ura/bits/zombie.shp differ
diff --git a/mods/ura/chrome.yaml b/mods/ura/chrome.yaml
new file mode 100644
index 0000000..988579f
--- /dev/null
+++ b/mods/ura/chrome.yaml
@@ -0,0 +1,1052 @@
+sidebar-allies: chrome.png
+ background-top: 0,167,238,290
+ background-iconrow: 0,457,238,47
+ background-bottom: 0,504,238,8
+ background-supportoverlay: 0,75,64,48
+
+sidebar-button-allies: chrome.png
+ background: 59,31,22,22
+ border-r: 81,31,3,22
+ border-l: 56,31,3,22
+ border-b: 59,53,22,3
+ border-t: 59,28,22,3
+ corner-tl: 56,28,3,3
+ corner-tr: 81,28,3,3
+ corner-bl: 56,53,3,3
+ corner-br: 81,53,3,3
+sidebar-button-allies-hover: chrome.png
+ background: 59,3,22,22
+ border-r: 81,3,3,22
+ border-l: 56,3,3,22
+ border-b: 59,25,22,3
+ border-t: 59,0,22,3
+ corner-tl: 56,0,3,3
+ corner-tr: 81,0,3,3
+ corner-bl: 56,25,3,3
+ corner-br: 81,25,3,3
+sidebar-button-allies-pressed: chrome.png
+ background: 59,31,22,22
+ border-r: 81,31,3,22
+ border-l: 56,31,3,22
+ border-b: 59,53,22,3
+ border-t: 59,28,22,3
+ corner-tl: 56,28,3,3
+ corner-tr: 81,28,3,3
+ corner-bl: 56,53,3,3
+ corner-br: 81,53,3,3
+sidebar-button-allies-highlighted: chrome.png
+ background: 87,31,22,22
+ border-r: 109,31,3,22
+ border-l: 84,31,3,22
+ border-b: 87,53,22,3
+ border-t: 87,28,22,3
+ corner-tl: 84,28,3,3
+ corner-tr: 109,28,3,3
+ corner-bl: 84,53,3,3
+ corner-br: 109,53,3,3
+sidebar-button-allies-highlighted-hover: chrome.png
+ background: 87,3,22,22
+ border-r: 109,3,3,22
+ border-l: 84,3,3,22
+ border-b: 87,25,22,3
+ border-t: 87,0,22,3
+ corner-tl: 84,0,3,3
+ corner-tr: 109,0,3,3
+ corner-bl: 84,25,3,3
+ corner-br: 109,25,3,3
+sidebar-button-allies-highlighted-pressed: chrome.png
+ background: 87,31,22,22
+ border-r: 109,31,3,22
+ border-l: 84,31,3,22
+ border-b: 87,53,22,3
+ border-t: 87,28,22,3
+ corner-tl: 84,28,3,3
+ corner-tr: 109,28,3,3
+ corner-bl: 84,53,3,3
+ corner-br: 109,53,3,3
+sidebar-button-allies-disabled: chrome.png
+ background: 171,3,22,22
+ border-r: 193,3,3,22
+ border-l: 168,3,3,22
+ border-b: 171,25,22,3
+ border-t: 171,0,22,3
+ corner-tl: 168,0,3,3
+ corner-tr: 193,0,3,3
+ corner-bl: 168,25,3,3
+ corner-br: 193,25,3,3
+sidebar-button-allies-highlighted-disabled: chrome.png
+ background: 171,3,22,22
+ border-r: 193,3,3,22
+ border-l: 168,3,3,22
+ border-b: 171,25,22,3
+ border-t: 171,0,22,3
+ corner-tl: 168,0,3,3
+ corner-tr: 193,0,3,3
+ corner-bl: 168,25,3,3
+ corner-br: 193,25,3,3
+
+command-button-allies: chrome.png
+ background: 59,31,22,22
+command-button-allies-hover: chrome.png
+ background: 59,3,22,22
+command-button-allies-pressed: chrome.png
+ background: 59,31,22,22
+command-button-allies-highlighted: chrome.png
+ background: 87,31,22,22
+command-button-allies-highlighted-hover: chrome.png
+ background: 87,3,22,22
+command-button-allies-highlighted-pressed: chrome.png
+ background: 87,31,22,22
+command-button-allies-disabled: chrome.png
+ background: 59,31,22,22
+command-button-allies-highlighted-disabled: chrome.png
+ background: 87,31,22,22
+
+sidebar-soviet: chrome.png
+ background-top: 274,167,238,290
+ background-iconrow: 274,457,238,47
+ background-bottom: 274,504,238,8
+ background-supportoverlay: 64,75,64,48
+
+sidebar-button-soviet: chrome.png
+ background: 3,31,22,22
+ border-r: 25,31,3,22
+ border-l: 0,31,3,22
+ border-b: 3,53,22,3
+ border-t: 3,28,22,3
+ corner-tl: 0,28,3,3
+ corner-tr: 25,28,3,3
+ corner-bl: 0,53,3,3
+ corner-br: 25,53,3,3
+sidebar-button-soviet-hover: chrome.png
+ background: 3,3,22,22
+ border-r: 25,3,3,22
+ border-l: 0,3,3,22
+ border-b: 3,25,22,3
+ border-t: 3,0,22,3
+ corner-tl: 0,0,3,3
+ corner-tr: 25,0,3,3
+ corner-bl: 0,25,3,3
+ corner-br: 25,25,3,3
+sidebar-button-soviet-pressed: chrome.png
+ background: 3,31,22,22
+ border-r: 25,31,3,22
+ border-l: 0,31,3,22
+ border-b: 3,53,22,3
+ border-t: 3,28,22,3
+ corner-tl: 0,28,3,3
+ corner-tr: 25,28,3,3
+ corner-bl: 0,53,3,3
+ corner-br: 25,53,3,3
+sidebar-button-soviet-highlighted: chrome.png
+ background: 31,31,22,22
+ border-r: 53,31,3,22
+ border-l: 28,31,3,22
+ border-b: 31,53,22,3
+ border-t: 31,28,22,3
+ corner-tl: 28,28,3,3
+ corner-tr: 53,28,3,3
+ corner-bl: 28,53,3,3
+ corner-br: 53,53,3,3
+sidebar-button-soviet-highlighted-hover: chrome.png
+ background: 31,3,22,22
+ border-r: 53,3,3,22
+ border-l: 28,3,3,22
+ border-b: 31,25,22,3
+ border-t: 31,0,22,3
+ corner-tl: 28,0,3,3
+ corner-tr: 53,0,3,3
+ corner-bl: 28,25,3,3
+ corner-br: 53,25,3,3
+sidebar-button-soviet-highlighted-pressed: chrome.png
+ background: 31,31,22,22
+ border-r: 53,31,3,22
+ border-l: 28,31,3,22
+ border-b: 31,53,22,3
+ border-t: 31,28,22,3
+ corner-tl: 28,28,3,3
+ corner-tr: 53,28,3,3
+ corner-bl: 28,53,3,3
+ corner-br: 53,53,3,3
+sidebar-button-soviet-disabled: chrome.png
+ background: 171,3,22,22
+ border-r: 193,3,3,22
+ border-l: 168,3,3,22
+ border-b: 171,25,22,3
+ border-t: 171,0,22,3
+ corner-tl: 168,0,3,3
+ corner-tr: 193,0,3,3
+ corner-bl: 168,25,3,3
+ corner-br: 193,25,3,3
+sidebar-button-soviet-highlighted-disabled: chrome.png
+ background: 171,3,22,22
+ border-r: 193,3,3,22
+ border-l: 168,3,3,22
+ border-b: 171,25,22,3
+ border-t: 171,0,22,3
+ corner-tl: 168,0,3,3
+ corner-tr: 193,0,3,3
+ corner-bl: 168,25,3,3
+ corner-br: 193,25,3,3
+
+command-button-soviet: chrome.png
+ background: 3,31,22,22
+command-button-soviet-hover: chrome.png
+ background: 3,3,22,22
+command-button-soviet-pressed: chrome.png
+ background: 3,31,22,22
+command-button-soviet-highlighted: chrome.png
+ background: 31,31,22,22
+command-button-soviet-highlighted-hover: chrome.png
+ background: 31,3,22,22
+command-button-soviet-highlighted-pressed: chrome.png
+ background: 31,31,22,22
+command-button-soviet-disabled: chrome.png
+ background: 3,31,22,22
+command-button-soviet-highlighted-disabled: chrome.png
+ background: 31,31,22,22
+
+sidebar-bits: chrome.png
+ production-tooltip-time: 416, 80, 16, 16
+ production-tooltip-power: 432, 80, 16, 16
+ production-tooltip-cost: 448, 80, 16, 16
+ production-iconoverlay: 128,75,238,48
+ commandbar-background: 0,123,434,44
+
+power-icons: chrome.png
+ power-normal: 350,0,12,18
+ power-critical: 363,0,12,18
+
+production-icons: chrome.png
+ building: 384,0,16,16
+ building-disabled: 384,16,16,16
+ building-alert: 384,32,16,16
+ defense: 400,0,16,16
+ defense-disabled: 400,16,16,16
+ defense-alert: 400,32,16,16
+ infantry: 416,0,16,16
+ infantry-disabled: 416,16,16,16
+ infantry-alert: 416,32,16,16
+ vehicle: 432,0,16,16
+ vehicle-disabled: 432,16,16,16
+ vehicle-alert: 432,32,16,16
+ aircraft: 448,0,16,16
+ aircraft-disabled: 448,16,16,16
+ aircraft-alert: 448,32,16,16
+ ship: 496,48,16,16
+ ship-disabled: 496,64,16,16
+ ship-alert: 496,80,16,16
+
+order-icons: chrome.png
+ options: 480,0,16,16
+ options-disabled: 480,16,16,16
+ options-active: 480,32,16,16
+ debug: 351,48,16,16
+ debug-disabled: 351,64,16,16
+ debug-active: 351,80,16,16
+ diplomacy: 464,48,16,16
+ diplomacy-disabled: 464,64,16,16
+ diplomacy-active: 464,80,16,16
+ sell: 496,0,16,16
+ sell-disabled: 496,16,16,16
+ sell-active: 496,32,16,16
+ repair: 384,48,16,16
+ repair-disabled: 384,64,16,16
+ repair-active: 384,80,16,16
+ beacon: 400,48,16,16
+ beacon-disabled: 400,64,16,16
+ beacon-active: 400,80,16,16
+ power: 480,48,16,16
+ power-disabled: 480,64,16,16
+ power-active: 480,80,16,16
+ stats: 368,48,16,16
+ stats-disabled: 368,64,16,16
+ stats-active: 368,80,16,16
+
+command-icons: chrome.png
+ attack-move: 512,0,24,24
+ attack-move-disabled: 512,24,24,24
+ force-move: 536,0,24,24
+ force-move-disabled: 536,24,24,24
+ force-attack: 560,0,24,24
+ force-attack-disabled: 560,24,24,24
+ guard: 584,0,24,24
+ guard-disabled: 584,24,24,24
+ deploy: 608,0,24,24
+ deploy-disabled: 608,24,24,24
+ scatter: 632,0,24,24
+ scatter-disabled: 632,24,24,24
+ stop: 656,0,24,24
+ stop-disabled: 656,24,24,24
+ queue-orders: 680,0,24,24
+ queue-orders-disabled: 680,24,24,24
+
+stance-icons: chrome.png
+ attack-anything: 512,48,16,16
+ attack-anything-disabled: 528,48,16,16
+ attack-anything-active: 544,48,16,16
+ defend: 560,48,16,16
+ defend-disabled: 576,48,16,16
+ defend-active: 592,48,16,16
+ return-fire: 608,48,16,16
+ return-fire-disabled: 624,48,16,16
+ return-fire-active: 640,48,16,16
+ hold-fire: 656,48,16,16
+ hold-fire-disabled: 672,48,16,16
+ hold-fire-active: 688,48,16,16
+
+sidebar-observer: chrome.png
+ background: 512,167,238,287
+ replay-bottom: 512,454,238,40
+ observer-bottom: 512,495,238,8
+
+sidebar-button-observershroud: chrome.png
+sidebar-button-observershroud-pressed: chrome.png
+sidebar-button-observershroud-hover: chrome.png
+
+sidebar-button-observer: chrome.png
+ background: 117,33,18,18
+ border-r: 135,33,5,18
+ border-l: 112,33,5,18
+ border-b: 117,51,18,5
+ border-t: 117,28,18,5
+ corner-tl: 112,28,5,5
+ corner-tr: 135,28,5,5
+ corner-bl: 112,51,5,5
+ corner-br: 135,51,5,5
+sidebar-button-observer-hover: chrome.png
+ background: 117,5,18,18
+ border-r: 135,5,5,18
+ border-l: 112,5,5,18
+ border-b: 117,23,18,5
+ border-t: 117,0,18,5
+ corner-tl: 112,0,5,5
+ corner-tr: 135,0,5,5
+ corner-bl: 112,23,5,5
+ corner-br: 135,23,5,5
+sidebar-button-observer-pressed: chrome.png
+ background: 117,33,18,18
+ border-r: 135,33,5,18
+ border-l: 112,33,5,18
+ border-b: 117,51,18,5
+ border-t: 117,28,18,5
+ corner-tl: 112,28,5,5
+ corner-tr: 135,28,5,5
+ corner-bl: 112,51,5,5
+ corner-br: 135,51,5,5
+sidebar-button-observer-highlighted: chrome.png
+ background: 145,33,18,18
+ border-r: 163,33,5,18
+ border-l: 140,33,5,18
+ border-b: 145,51,18,5
+ border-t: 145,28,18,5
+ corner-tl: 140,28,5,5
+ corner-tr: 163,28,5,5
+ corner-bl: 140,51,5,5
+ corner-br: 163,51,5,5
+sidebar-button-observer-highlighted-hover: chrome.png
+ background: 145,5,18,18
+ border-r: 163,5,5,18
+ border-l: 140,5,5,18
+ border-b: 145,23,18,5
+ border-t: 145,0,18,5
+ corner-tl: 140,0,5,5
+ corner-tr: 163,0,5,5
+ corner-bl: 140,23,5,5
+ corner-br: 163,23,5,5
+sidebar-button-observer-highlighted-pressed: chrome.png
+ background: 33,33,18,18
+ border-r: 51,33,5,18
+ border-l: 28,33,5,18
+ border-b: 33,51,18,5
+ border-t: 33,28,18,5
+ corner-tl: 28,28,5,5
+ corner-tr: 51,28,5,5
+ corner-bl: 28,51,5,5
+ corner-br: 51,51,5,5
+sidebar-button-observer-disabled: chrome.png
+ background: 173,5,18,18
+ border-r: 191,5,5,18
+ border-l: 168,5,5,18
+ border-b: 173,23,18,5
+ border-t: 173,0,18,5
+ corner-tl: 168,0,5,5
+ corner-tr: 191,0,5,5
+ corner-bl: 168,23,5,5
+ corner-br: 191,23,5,5
+sidebar-button-observer-highlighted-disabled: chrome.png
+ background: 173,5,18,18
+ border-r: 191,5,5,18
+ border-l: 168,5,5,18
+ border-b: 173,23,18,5
+ border-t: 173,0,18,5
+ corner-tl: 168,0,5,5
+ corner-tr: 191,0,5,5
+ corner-bl: 168,23,5,5
+ corner-br: 191,23,5,5
+
+observer-scrollpanel-button: dialog.png
+ background: 769,257,126,126
+ border-r: 895,257,1,126
+ border-l: 768,257,1,126
+ border-b: 769,383,126,1
+ border-t: 769,256,126,1
+ corner-tl: 768,256,1,1
+ corner-tr: 895,256,1,1
+ corner-bl: 768,383,1,1
+ corner-br: 895,383,1,1
+
+observer-scrollpanel-button-hover: dialog.png
+ background: 769,257,126,126
+ border-r: 895,257,1,126
+ border-l: 768,257,1,126
+ border-b: 769,383,126,1
+ border-t: 769,256,126,1
+ corner-tl: 768,256,1,1
+ corner-tr: 895,256,1,1
+ corner-bl: 768,383,1,1
+ corner-br: 895,383,1,1
+
+observer-scrollpanel-button-pressed: dialog.png
+ background: 897,257,126,126
+ border-r: 1023,257,1,126
+ border-l: 896,257,1,126
+ border-b: 897,383,126,1
+ border-t: 897,256,126,1
+ corner-tl: 896,256,1,1
+ corner-tr: 1023,256,1,1
+ corner-bl: 896,383,1,1
+ corner-br: 1023,383,1,1
+
+observer-scrollpanel-button-disabled: dialog.png
+ background: 769,385,126,126
+ border-r: 895,385,1,126
+ border-l: 768,385,1,126
+ border-b: 769,511,126,1
+ border-t: 769,384,126,1
+ corner-tl: 768,384,1,1
+ corner-tr: 895,384,1,1
+ corner-bl: 768,511,1,1
+ corner-br: 895,511,1,1
+
+observer-scrollheader-selected: dialog.png
+ background: 769,385,126,126
+ border-r: 895,385,1,126
+ border-l: 768,385,1,126
+ border-b: 769,511,126,1
+ border-t: 769,384,126,1
+ corner-tl: 768,384,1,1
+ corner-tr: 895,384,1,1
+ corner-bl: 768,511,1,1
+ corner-br: 895,511,1,1
+
+observer-scrollitem-selected: dialog.png
+ background: 897,257,126,126
+ border-r: 1023,257,1,126
+ border-l: 896,257,1,126
+ border-b: 897,383,126,1
+ border-t: 897,256,126,1
+ corner-tl: 896,256,1,1
+ corner-tr: 1023,256,1,1
+ corner-bl: 896,383,1,1
+ corner-br: 1023,383,1,1
+
+observer-scrollitem-hover: dialog.png
+ background: 769,257,126,126
+ border-r: 895,257,1,126
+ border-l: 768,257,1,126
+ border-b: 769,383,126,1
+ border-t: 769,256,126,1
+ corner-tl: 768,256,1,1
+ corner-tr: 895,256,1,1
+ corner-bl: 768,383,1,1
+ corner-br: 895,383,1,1
+
+# Used for the main menu frame
+dialog: dialog.png
+ background: 0,0,480,480
+ border-r: 489,0,9,192
+ border-l: 480,0,9,192
+ border-b: 0,489,191,9
+ border-t: 0,480,191,9
+ corner-tl: 191,480,9,9
+ corner-tr: 200,480,9,9
+ corner-bl: 191,489,9,9
+ corner-br: 200,489,9,9
+
+# Used for Music and Map selection (normal button)
+dialog2: dialog.png
+ background: 513,1,126,126
+ border-r: 639,1,1,126
+ border-l: 512,1,1,126
+ border-b: 513,127,126,1
+ border-t: 513,0,126,1
+ corner-tl: 512,0,1,1
+ corner-tr: 639,0,1,1
+ corner-bl: 512,127,1,1
+ corner-br: 639,127,1,1
+
+# It's a Container, used in various places, like Hotkeys, ColorPicker, Asset Browser frames (looks like a pressed button)
+dialog3: dialog.png
+ background: 641,1,126,126
+ border-r: 767,1,1,126
+ border-l: 640,1,1,126
+ border-b: 641,127,126,1
+ border-t: 641,0,126,1
+ corner-tl: 640,0,1,1
+ corner-tr: 767,0,1,1
+ corner-bl: 640,127,1,1
+ corner-br: 767,127,1,1
+
+# Used for tooltips and the video player
+dialog4: dialog.png
+ background: 517,392,54,54
+ border-t: 517,387,54,6
+ border-b: 517,446,54,6
+ border-l: 512,392,6,54
+ border-r: 571,392,6,54
+ corner-tl: 512,387,6,6
+ corner-tr: 571,387,6,6
+ corner-bl: 512,446,6,6
+ corner-br: 571,446,6,6
+
+# completely black tile
+dialog5: dialog.png
+ background: 579,387,64,64
+ border-t: 579,387,64,1
+ border-b: 579,451,64,1
+ border-l: 579,387,1,64
+ border-r: 643,387,1,64
+ corner-tl: 579,387,1,1
+ corner-tr: 643,387,1,1
+ corner-bl: 579,446,1,1
+ corner-br: 643,446,1,1
+
+lobby-bits: buttons.png
+ spawn-unclaimed: 159,5,23,22
+ spawn-claimed: 127,5,23,22
+ admin: 187,5,7,5
+ colorpicker: 127,5,23,22
+ huepicker: 194,0,7,15
+ protected: 202,0,10,13
+ protected-disabled: 213,0,10,13
+
+reload-icon: chrome.png
+ enabled: 512,80,16,16
+ disabled-0: 512,64,16,16
+ disabled-1: 528,64,16,16
+ disabled-2: 544,64,16,16
+ disabled-3: 560,64,16,16
+ disabled-4: 576,64,16,16
+ disabled-5: 592,64,16,16
+ disabled-6: 608,64,16,16
+ disabled-7: 624,64,16,16
+ disabled-8: 640,64,16,16
+ disabled-9: 656,64,16,16
+ disabled-10: 672,64,16,16
+ disabled-11: 688,64,16,16
+
+strategic: buttons.png
+ unowned: 127,5,23,22
+ critical_unowned: 127,27,23,22
+ enemy_owned: 159,27,23,22
+ player_owned: 159,49,23,22
+
+flags: buttons.png
+ soviet: 0,112,30,15
+ allies: 30,112,30,15
+ Random: 60,112,30,15
+ RandomAllies: 30,172,30,15
+ RandomSoviet: 0,172,30,15
+ spectator: 60,112,30,15
+
+ russia: 0,127,30,15
+ ukraine: 30,127,30,15
+ england: 60,127,30,15
+
+ germany: 0,142,30,15
+ spain: 30,142,30,15
+ france: 60,142,30,15
+
+ turkey: 0,157,30,15
+ greece: 30,157,30,15
+
+music: buttons.png
+ pause: 0,193,25,25
+ stop: 25,193,25,25
+ play: 55,193,25,25
+ next: 82,193,25,25
+ prev: 110,193,25,25
+ fastforward: 131,193,25,25
+ slowmo: 159,193,25,25
+
+scrollbar: buttons.png
+ down_arrow: 116,140,16,16
+ down_pressed: 116,140,16,16
+ up_arrow: 132,140,16,16
+ up_pressed: 132,140,16,16
+
+# A copy of dialog3 (pressed button)
+progressbar-bg: dialog.png
+ background: 641,1,126,126
+ border-r: 767,1,1,126
+ border-l: 640,1,1,126
+ border-b: 641,127,126,1
+ border-t: 641,0,126,1
+ corner-tl: 640,0,1,1
+ corner-tr: 767,0,1,1
+ corner-bl: 640,127,1,1
+ corner-br: 767,127,1,1
+
+# A copy of dialog2 (normal button)
+progressbar-thumb: dialog.png
+ background: 513,1,126,126
+ border-r: 639,1,1,126
+ border-l: 512,1,1,126
+ border-b: 513,127,126,1
+ border-t: 513,0,126,1
+ corner-tl: 512,0,1,1
+ corner-tr: 639,0,1,1
+ corner-bl: 512,127,1,1
+ corner-br: 639,127,1,1
+
+# A copy of dialog2 (normal button)
+button: dialog.png
+ background: 513,1,126,126
+ border-r: 639,1,1,126
+ border-l: 512,1,1,126
+ border-b: 513,127,126,1
+ border-t: 513,0,126,1
+ corner-tl: 512,0,1,1
+ corner-tr: 639,0,1,1
+ corner-bl: 512,127,1,1
+ corner-br: 639,127,1,1
+
+# 5% lighter than a normal button (mouseover)
+button-hover: dialog.png
+ background: 513,129,126,126
+ border-r: 639,129,1,126
+ border-l: 512,129,1,126
+ border-b: 513,255,126,1
+ border-t: 513,128,126,1
+ corner-tl: 512,128,1,1
+ corner-tr: 639,128,1,1
+ corner-bl: 512,255,1,1
+ corner-br: 639,255,1,1
+
+# A copy of dialog3 (pressed button)
+button-pressed: dialog.png
+ background: 641,1,126,126
+ border-r: 767,1,1,126
+ border-l: 640,1,1,126
+ border-b: 641,127,126,1
+ border-t: 641,0,126,1
+ corner-tl: 640,0,1,1
+ corner-tr: 767,0,1,1
+ corner-bl: 640,127,1,1
+ corner-br: 767,127,1,1
+
+# 50% grey (disabled button)
+button-disabled: dialog.png
+ background: 513,257,126,126
+ border-r: 639,257,1,126
+ border-l: 512,257,1,126
+ border-b: 513,383,126,1
+ border-t: 513,256,126,1
+ corner-tl: 512,256,1,1
+ corner-tr: 639,256,1,1
+ corner-bl: 512,383,1,1
+ corner-br: 639,383,1,1
+
+# 10% darker than a normal button - Used in Settings when you select Display Audio Input or Advanced
+button-highlighted: dialog.png
+ background: 769,129,126,126
+ border-r: 895,129,1,126
+ border-l: 768,129,1,126
+ border-b: 769,255,126,1
+ border-t: 769,128,126,1
+ corner-tl: 768,128,1,1
+ corner-tr: 895,128,1,1
+ corner-bl: 768,255,1,1
+ corner-br: 895,255,1,1
+
+# A copy of button-highlighted - Used in Settings when you select Display Audio Input or Advanced
+button-highlighted-hover: dialog.png
+ background: 769,129,126,126
+ border-r: 895,129,1,126
+ border-l: 768,129,1,126
+ border-b: 769,255,126,1
+ border-t: 769,128,126,1
+ corner-tl: 768,128,1,1
+ corner-tr: 895,128,1,1
+ corner-bl: 768,255,1,1
+ corner-br: 895,255,1,1
+
+# Used in Settings when you select Display Audio Input or Advanced
+button-highlighted-pressed: dialog.png
+ background: 897,129,126,126
+ border-r: 1023,129,1,126
+ border-l: 896,129,1,126
+ border-b: 897,255,126,1
+ border-t: 897,128,126,1
+ corner-tl: 896,128,1,1
+ corner-tr: 1023,128,1,1
+ corner-bl: 896,255,1,1
+ corner-br: 1023,255,1,1
+
+# A copy of button-highlighted - Used in Settings when you select Display Audio Input or Advanced
+button-highlighted-disabled: dialog.png
+ background: 769,129,126,126
+ border-r: 895,129,1,126
+ border-l: 768,129,1,126
+ border-b: 769,255,126,1
+ border-t: 769,128,126,1
+ corner-tl: 768,128,1,1
+ corner-tr: 895,128,1,1
+ corner-bl: 768,255,1,1
+ corner-br: 895,255,1,1
+
+# vivid red - Used for the Battlefields News button
+newsbutton: dialog.png
+ background: 513,1,126,126
+ border-r: 639,1,1,126
+ border-l: 512,1,1,126
+ border-b: 513,127,126,1
+ border-t: 513,0,126,1
+ corner-tl: 512,0,1,1
+ corner-tr: 639,0,1,1
+ corner-bl: 512,127,1,1
+ corner-br: 639,127,1,1
+
+newsbutton-hover: dialog.png
+ background: 513,1,126,126
+ border-r: 639,1,1,126
+ border-l: 512,1,1,126
+ border-b: 513,127,126,1
+ border-t: 513,0,126,1
+ corner-tl: 512,0,1,1
+ corner-tr: 639,0,1,1
+ corner-bl: 512,127,1,1
+ corner-br: 639,127,1,1
+
+newsbutton-highlighted: dialog.png
+ background: 769,1,126,126
+ border-r: 895,1,1,126
+ border-l: 768,1,1,126
+ border-b: 769,127,126,1
+ border-t: 769,0,126,1
+ corner-tl: 768,0,1,1
+ corner-tr: 895,0,1,1
+ corner-bl: 768,127,1,1
+ corner-br: 895,127,1,1
+
+newsbutton-highlighted-hover: dialog.png
+ background: 769,1,126,126
+ border-r: 895,1,1,126
+ border-l: 768,1,1,126
+ border-b: 769,127,126,1
+ border-t: 769,0,126,1
+ corner-tl: 768,0,1,1
+ corner-tr: 895,0,1,1
+ corner-bl: 768,127,1,1
+ corner-br: 895,127,1,1
+
+newsbutton-highlighted-pressed: dialog.png
+ background: 641,1,126,126
+ border-r: 767,1,1,126
+ border-l: 640,1,1,126
+ border-b: 641,127,126,1
+ border-t: 641,0,126,1
+ corner-tl: 640,0,1,1
+ corner-tr: 767,0,1,1
+ corner-bl: 640,127,1,1
+ corner-br: 767,127,1,1
+
+newsbutton-pressed: dialog.png
+ background: 641,1,126,126
+ border-r: 767,1,1,126
+ border-l: 640,1,1,126
+ border-b: 641,127,126,1
+ border-t: 641,0,126,1
+ corner-tl: 640,0,1,1
+ corner-tr: 767,0,1,1
+ corner-bl: 640,127,1,1
+ corner-br: 767,127,1,1
+
+# A copy of dialog3 (pressed button)
+textfield: dialog.png
+ background: 641,1,126,126
+ border-r: 767,1,1,126
+ border-l: 640,1,1,126
+ border-b: 641,127,126,1
+ border-t: 641,0,126,1
+ corner-tl: 640,0,1,1
+ corner-tr: 767,0,1,1
+ corner-bl: 640,127,1,1
+ corner-br: 767,127,1,1
+
+# A copy of checkbox-hover
+textfield-hover: dialog.png
+ background: 641,129,126,126
+ border-r: 767,129,1,126
+ border-l: 640,129,1,126
+ border-b: 641,255,126,1
+ border-t: 641,128,126,1
+ corner-tl: 640,128,1,1
+ corner-tr: 767,128,1,1
+ corner-bl: 640,255,1,1
+ corner-br: 767,255,1,1
+
+# Same as button-disabled-pressed
+textfield-disabled: dialog.png
+ background: 641,257,126,126
+ border-r: 767,257,1,126
+ border-l: 640,257,1,126
+ border-b: 641,383,126,1
+ border-t: 641,256,126,1
+ corner-tl: 640,256,1,1
+ corner-tr: 767,256,1,1
+ corner-bl: 640,383,1,1
+ corner-br: 767,383,1,1
+
+# A copy of dialog3 (pressed button)
+textfield-focused: dialog.png
+ background: 641,1,126,126
+ border-r: 767,1,1,126
+ border-l: 640,1,1,126
+ border-b: 641,127,126,1
+ border-t: 641,0,126,1
+ corner-tl: 640,0,1,1
+ corner-tr: 767,0,1,1
+ corner-bl: 640,127,1,1
+ corner-br: 767,127,1,1
+
+# A copy of dialog3 (pressed button)
+scrollpanel-bg: dialog.png
+ background: 641,1,126,126
+ border-r: 767,1,1,126
+ border-l: 640,1,1,126
+ border-b: 641,127,126,1
+ border-t: 641,0,126,1
+ corner-tl: 640,0,1,1
+ corner-tr: 767,0,1,1
+ corner-bl: 640,127,1,1
+ corner-br: 767,127,1,1
+
+
+# A copy of dialog2 (normal button)
+scrollpanel-button: dialog.png
+ background: 513,1,126,126
+ border-r: 639,1,1,126
+ border-l: 512,1,1,126
+ border-b: 513,127,126,1
+ border-t: 513,0,126,1
+ corner-tl: 512,0,1,1
+ corner-tr: 639,0,1,1
+ corner-bl: 512,127,1,1
+ corner-br: 639,127,1,1
+
+# A copy of button-hover
+scrollpanel-button-hover: dialog.png
+ background: 513,129,126,126
+ border-r: 639,129,1,126
+ border-l: 512,129,1,126
+ border-b: 513,255,126,1
+ border-t: 513,128,126,1
+ corner-tl: 512,128,1,1
+ corner-tr: 639,128,1,1
+ corner-bl: 512,255,1,1
+ corner-br: 639,255,1,1
+
+# A copy of dialog3 (pressed button)
+scrollpanel-button-pressed: dialog.png
+ background: 641,1,126,126
+ border-r: 767,1,1,126
+ border-l: 640,1,1,126
+ border-b: 641,127,126,1
+ border-t: 641,0,126,1
+ corner-tl: 640,0,1,1
+ corner-tr: 767,0,1,1
+ corner-bl: 640,127,1,1
+ corner-br: 767,127,1,1
+
+# A copy of dialog2 (normal button)
+scrollpanel-button-disabled: dialog.png
+ background: 513,1,126,126
+ border-r: 639,1,1,126
+ border-l: 512,1,1,126
+ border-b: 513,127,126,1
+ border-t: 513,0,126,1
+ corner-tl: 512,0,1,1
+ corner-tr: 639,0,1,1
+ corner-bl: 512,127,1,1
+ corner-br: 639,127,1,1
+
+slider: dialog.png
+ tick: 512,1,2,4
+
+# A copy of dialog3 (pressed button)
+slider-track: dialog.png
+ background: 513,1,126,126
+ border-r: 639,1,1,126
+ border-l: 512,1,1,126
+ border-b: 513,127,126,1
+ border-t: 513,0,126,1
+ corner-tl: 512,0,1,1
+ corner-tr: 639,0,1,1
+ corner-bl: 512,127,1,1
+ corner-br: 639,127,1,1
+
+# A copy of dialog2 (normal button)
+slider-thumb: dialog.png
+ background: 513,1,126,126
+ border-r: 639,1,1,126
+ border-l: 512,1,1,126
+ border-b: 513,127,126,1
+ border-t: 513,0,126,1
+ corner-tl: 512,0,1,1
+ corner-tr: 639,0,1,1
+ corner-bl: 512,127,1,1
+ corner-br: 639,127,1,1
+
+# A copy of button-hover
+slider-thumb-hover: dialog.png
+ background: 513,129,126,126
+ border-r: 639,129,1,126
+ border-l: 512,129,1,126
+ border-b: 513,255,126,1
+ border-t: 513,128,126,1
+ corner-tl: 512,128,1,1
+ corner-tr: 639,128,1,1
+ corner-bl: 512,255,1,1
+ corner-br: 639,255,1,1
+
+# A copy of dialog3 (pressed button)
+slider-thumb-pressed: dialog.png
+ background: 641,1,126,126
+ border-r: 767,1,1,126
+ border-l: 640,1,1,126
+ border-b: 641,127,126,1
+ border-t: 641,0,126,1
+ corner-tl: 640,0,1,1
+ corner-tr: 767,0,1,1
+ corner-bl: 640,127,1,1
+ corner-br: 767,127,1,1
+
+# A copy of dialog2 (normal button)
+slider-thumb-disabled: dialog.png
+ background: 513,1,126,126
+ border-r: 639,1,1,126
+ border-l: 512,1,1,126
+ border-b: 513,127,126,1
+ border-t: 513,0,126,1
+ corner-tl: 512,0,1,1
+ corner-tr: 639,0,1,1
+ corner-bl: 512,127,1,1
+ corner-br: 639,127,1,1
+
+# A copy of dialog3 (pressed button)
+checkbox: dialog.png
+ background: 641,1,126,126
+ border-r: 767,1,1,126
+ border-l: 640,1,1,126
+ border-b: 641,127,126,1
+ border-t: 641,0,126,1
+ corner-tl: 640,0,1,1
+ corner-tr: 767,0,1,1
+ corner-bl: 640,127,1,1
+ corner-br: 767,127,1,1
+
+checkbox-bits: buttons.png
+ checked: 100,157,16,16
+ checked-disabled: 100,173,16,16
+ crossed: 116,157,16,16
+ crossed-disabled: 116,173,16,16
+
+checkbox-hover: dialog.png
+ background: 641,129,126,126
+ border-r: 767,129,1,126
+ border-l: 640,129,1,126
+ border-b: 641,255,126,1
+ border-t: 641,128,126,1
+ corner-tl: 640,128,1,1
+ corner-tr: 767,128,1,1
+ corner-bl: 640,255,1,1
+ corner-br: 767,255,1,1
+
+# Same as button-disabled-pressed
+checkbox-disabled: dialog.png
+ background: 641,257,126,126
+ border-r: 767,257,1,126
+ border-l: 640,257,1,126
+ border-b: 641,383,126,1
+ border-t: 641,256,126,1
+ corner-tl: 640,256,1,1
+ corner-tr: 767,256,1,1
+ corner-bl: 640,383,1,1
+ corner-br: 767,383,1,1
+
+# Same as button-highlighted-pressed
+checkbox-highlighted: dialog.png
+ background: 897,1,126,126
+ border-r: 1023,1,1,126
+ border-l: 896,1,1,126
+ border-b: 897,127,126,1
+ border-t: 897,0,126,1
+ corner-tl: 896,0,1,1
+ corner-tr: 1023,0,1,1
+ corner-bl: 896,127,1,1
+ corner-br: 1023,127,1,1
+
+# A copy of dialog3 (pressed button)
+scrollitem-selected: dialog.png
+ background: 641,1,126,126
+ border-r: 767,1,1,126
+ border-l: 640,1,1,126
+ border-b: 641,127,126,1
+ border-t: 641,0,126,1
+ corner-tl: 640,0,1,1
+ corner-tr: 767,0,1,1
+ corner-bl: 640,127,1,1
+ corner-br: 767,127,1,1
+
+# A copy of dialog2 (normal button)
+scrollitem-hover: dialog.png
+ background: 513,1,126,126
+ border-r: 639,1,1,126
+ border-l: 512,1,1,126
+ border-b: 513,127,126,1
+ border-t: 513,0,126,1
+ corner-tl: 512,0,1,1
+ corner-tr: 639,0,1,1
+ corner-bl: 512,127,1,1
+ corner-br: 639,127,1,1
+
+# A copy of dialog2 (normal button)
+scrollheader-selected: dialog.png
+ background: 513,1,126,126
+ border-r: 639,1,1,126
+ border-l: 512,1,1,126
+ border-b: 513,127,126,1
+ border-t: 513,0,126,1
+ corner-tl: 512,0,1,1
+ corner-tr: 639,0,1,1
+ corner-bl: 512,127,1,1
+ corner-br: 639,127,1,1
+
+logos: loadscreen.png
+ logo: 0,0,256,256
+
+mainmenu-border: dialog.png
+ border-r: 728,427,40,40
+ border-l: 648,427,40,40
+ border-b: 688,467,40,40
+ border-t: 688,387,40,40
+ corner-tl: 648,387,40,40
+ corner-tr: 728,387,40,40
+ corner-bl: 648,467,40,40
+ corner-br: 728,467,40,40
+
+dropdown: dialog.png
+ separator: 512,1,1,19
+ observer-separator: 768,256,1,19
\ No newline at end of file
diff --git a/mods/ura/chrome/ingame-observer.yaml b/mods/ura/chrome/ingame-observer.yaml
new file mode 100644
index 0000000..e72c558
--- /dev/null
+++ b/mods/ura/chrome/ingame-observer.yaml
@@ -0,0 +1,216 @@
+Container@OBSERVER_WIDGETS:
+ Children:
+ SupportPowerTimer@SUPPORT_POWER_TIMER:
+ X: 10
+ Y: 10
+ Order: Descending
+ Image@SIDEBAR_BACKGROUND_TOP:
+ X: WINDOW_RIGHT - 250
+ Y: 10
+ Width: 238
+ Height: 287
+ ImageCollection: sidebar-observer
+ ImageName: background
+ ClickThrough: false
+ Children:
+ Background@GAME_TIMER_BLOCK:
+ Logic: GameTimerLogic
+ X: 26
+ Y: 10
+ Width: 120
+ Height: 22
+ Background: sidebar-button-observer
+ Children:
+ LabelWithTooltip@GAME_TIMER:
+ Y: 0 - 1
+ Width: PARENT_RIGHT
+ Height: PARENT_BOTTOM
+ Align: Center
+ Font: TinyBold
+ TooltipContainer: TOOLTIP_CONTAINER
+ TooltipTemplate: SIMPLE_TOOLTIP
+ Container@TOP_BUTTONS:
+ Logic: MenuButtonsChromeLogic
+ StatisticsBasicKey: StatisticsBasic
+ StatisticsEconomyKey: StatisticsEconomy
+ StatisticsProductionKey: StatisticsProduction
+ StatisticsCombatKey: StatisticsCombat
+ StatisticsGraphKey: StatisticsGraph
+ X: 9
+ Y: 7
+ Children:
+ LogicKeyListener@OBSERVER_KEY_LISTENER:
+ MenuButton@OBSERVER_STATS_BUTTON:
+ Key: StatisticsBasic
+ MenuContainer: INGAME_OBSERVERSTATS_BG
+ HideIngameUI: false
+ Pause: false
+ X: 160
+ Width: 28
+ Height: 28
+ Background: sidebar-button-observer
+ TooltipText: Statistics
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: order-icons
+ ImageName: stats
+ MenuButton@OPTIONS_BUTTON:
+ Key: escape
+ X: 192
+ Width: 28
+ Height: 28
+ Background: sidebar-button-observer
+ TooltipText: Options
+ TooltipContainer: TOOLTIP_CONTAINER
+ DisableWorldSounds: true
+ VisualHeight: 0
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: order-icons
+ ImageName: options
+ Container@RADAR:
+ Children:
+ Radar@INGAME_RADAR:
+ WorldInteractionController: INTERACTION_CONTROLLER
+ X: 9
+ Y: 41
+ Width: 220
+ Height: 220
+ DropDownButton@SHROUD_SELECTOR:
+ Logic: ObserverShroudSelectorLogic
+ CombinedViewKey: ObserverCombinedView
+ WorldViewKey: ObserverWorldView
+ X: 6
+ Y: 262
+ Width: 226
+ Height: 25
+ Font: Bold
+ VisualHeight: 0
+ Background: sidebar-button-observershroud
+ SeparatorImage: observer-separator
+ Children:
+ LogicKeyListener@SHROUD_KEYHANDLER:
+ Image@FLAG:
+ X: 4
+ Y: 6
+ Width: 32
+ Height: 16
+ Label@LABEL:
+ X: 40
+ Width: 60
+ Height: 25
+ Shadow: True
+ Label@NOFLAG_LABEL:
+ X: 5
+ Width: PARENT_RIGHT
+ Height: 25
+ Shadow: True
+ Image@SIDEBAR_BACKGROUND_BOTTOM:
+ X: WINDOW_RIGHT - 250
+ Y: 297
+ Width: 238
+ Height: 8
+ ImageCollection: sidebar-observer
+ ImageName: observer-bottom
+ Image@REPLAY_PLAYER:
+ Logic: ReplayControlBarLogic
+ X: WINDOW_RIGHT - 250
+ Y: 297
+ Width: 238
+ Height: 40
+ Visible: false
+ ImageCollection: sidebar-observer
+ ImageName: replay-bottom
+ ClickThrough: false
+ Visible: false
+ Children:
+ Button@BUTTON_PAUSE:
+ X: 9
+ Y: 5
+ Width: 28
+ Height: 28
+ Background: sidebar-button-observer
+ Key: Pause
+ TooltipText: Pause
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Children:
+ Image@IMAGE_PAUSE:
+ X: 2
+ Y: 2
+ ImageCollection: music
+ ImageName: pause
+ Button@BUTTON_PLAY:
+ X: 9
+ Y: 5
+ Width: 28
+ Height: 28
+ Background: sidebar-button-observer
+ Key: Pause
+ TooltipText: Play
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Children:
+ Image@IMAGE_PLAY:
+ X: 2
+ Y: 1
+ ImageCollection: music
+ ImageName: play
+ Button@BUTTON_SLOW:
+ X: 49
+ Y: 8
+ Width: 42
+ Height: 22
+ BaseLine: 1
+ Background: sidebar-button-observer
+ Key: ReplaySpeedSlow
+ TooltipText: Slow speed
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Text: 50%
+ Font: TinyBold
+ Button@BUTTON_REGULAR:
+ X: 95
+ Y: 8
+ Width: 42
+ Height: 22
+ BaseLine: 1
+ Background: sidebar-button-observer
+ Key: ReplaySpeedRegular
+ TooltipText: Regular speed
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Text: 100%
+ Font: TinyBold
+ Button@BUTTON_FAST:
+ X: 141
+ Y: 8
+ Width: 42
+ Height: 22
+ BaseLine: 1
+ Background: sidebar-button-observer
+ Key: ReplaySpeedFast
+ TooltipText: Fast speed
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Text: 200%
+ Font: TinyBold
+ Button@BUTTON_MAXIMUM:
+ X: 187
+ Y: 8
+ Width: 42
+ Height: 22
+ BaseLine: 1
+ Background: sidebar-button-observer
+ Key: ReplaySpeedMax
+ TooltipText: Maximum speed
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Text: MAX
+ Font: TinyBold
diff --git a/mods/ura/chrome/ingame-player.yaml b/mods/ura/chrome/ingame-player.yaml
new file mode 100644
index 0000000..e1c6630
--- /dev/null
+++ b/mods/ura/chrome/ingame-player.yaml
@@ -0,0 +1,618 @@
+Container@PLAYER_WIDGETS:
+ Children:
+ LogicKeyListener@CONTROLGROUP_KEYHANDLER:
+ Logic: ControlGroupLogic
+ LogicTicker@SIDEBAR_TICKER:
+ Container@SUPPORT_POWERS:
+ Logic: SupportPowerBinLogic
+ X: 10
+ Y: 10
+ Children:
+ SupportPowers@SUPPORT_PALETTE:
+ IconSize: 62, 46
+ IconSpriteOffset: -1, -1
+ TooltipContainer: TOOLTIP_CONTAINER
+ ReadyText: READY
+ HoldText: ON HOLD
+ HotkeyPrefix: SupportPower
+ HotkeyCount: 6
+ Container@PALETTE_FOREGROUND:
+ Children:
+ Image@ICON_TEMPLATE:
+ Logic: AddFactionSuffixLogic
+ X: 0 - 2
+ Y: 0 - 2
+ Width: 62
+ Height: 46
+ IgnoreMouseOver: true
+ ImageCollection: sidebar
+ ImageName: background-supportoverlay
+ SupportPowerTimer@SUPPORT_POWER_TIMER:
+ X: 80
+ Y: 10
+ Order: Descending
+ Image@COMMAND_BAR_BACKGROUND:
+ X: 5
+ Y: WINDOW_BOTTOM - HEIGHT - 5
+ Width: 416
+ Height: 44
+ ImageCollection: sidebar-bits
+ ImageName: commandbar-background
+ Container@COMMAND_BAR:
+ Logic: CommandBarLogic
+ X: 14
+ Y: WINDOW_BOTTOM - HEIGHT - 14
+ Width: 275
+ Height: 26
+ Children:
+ LogicKeyListener@MODIFIER_OVERRIDES:
+ Button@ATTACK_MOVE:
+ Logic: AddFactionSuffixLogic
+ Width: 34
+ Height: 26
+ VisualHeight: 0
+ Background: command-button
+ Key: AttackMove
+ DisableKeySound: true
+ TooltipText: Attack Move
+ TooltipDesc: Selected units will move to the desired location\nand attack any enemies they encounter en route.\n\nHold {(Ctrl)} while targeting to order an Assault Move\nthat attacks any units or structures encountered en route.\n\nLeft-click icon then right-click on target location.
+ TooltipContainer: TOOLTIP_CONTAINER
+ TooltipTemplate: BUTTON_WITH_DESC_HIGHLIGHT_TOOLTIP
+ Children:
+ Image@ICON:
+ X: 5
+ Y: 1
+ ImageCollection: command-icons
+ ImageName: attack-move
+ Button@FORCE_MOVE:
+ Logic: AddFactionSuffixLogic
+ X: 34
+ Width: 34
+ Height: 26
+ VisualHeight: 0
+ Background: command-button
+ DisableKeySound: true
+ TooltipText: Force Move
+ TooltipDesc: Selected units will move to the desired location\n - Default activity for the target is suppressed\n - Vehicles will attempt to crush enemies at the target location\n - Units entering transports will consider nearby alternatives\n - Chrono Tanks will teleport towards the target location\n\nLeft-click icon then right-click on target.\nHold {(Alt)} to activate temporarily while commanding units.
+ TooltipContainer: TOOLTIP_CONTAINER
+ TooltipTemplate: BUTTON_WITH_DESC_HIGHLIGHT_TOOLTIP
+ Children:
+ Image@ICON:
+ X: 5
+ Y: 1
+ ImageCollection: command-icons
+ ImageName: force-move
+ Button@FORCE_ATTACK:
+ Logic: AddFactionSuffixLogic
+ X: 68
+ Width: 34
+ Height: 26
+ VisualHeight: 0
+ Background: command-button
+ DisableKeySound: true
+ TooltipText: Force Attack
+ TooltipDesc: Selected units will attack the targeted unit or location\nignoring their default activity for the target.\n\nLeft-click icon then right-click on target.\nHold {(Ctrl)} to activate temporarily while commanding units.
+ TooltipContainer: TOOLTIP_CONTAINER
+ TooltipTemplate: BUTTON_WITH_DESC_HIGHLIGHT_TOOLTIP
+ Children:
+ Image@ICON:
+ X: 5
+ Y: 1
+ ImageCollection: command-icons
+ ImageName: force-attack
+ Button@GUARD:
+ Logic: AddFactionSuffixLogic
+ X: 102
+ Width: 34
+ Height: 26
+ VisualHeight: 0
+ Background: command-button
+ Key: Guard
+ DisableKeySound: true
+ TooltipText: Guard
+ TooltipDesc: Selected units will follow the targeted unit.\n\nLeft-click icon then right-click on target unit.
+ TooltipContainer: TOOLTIP_CONTAINER
+ Children:
+ Image@ICON:
+ X: 5
+ Y: 1
+ ImageCollection: command-icons
+ ImageName: guard
+ Button@DEPLOY:
+ Logic: AddFactionSuffixLogic
+ X: 136
+ Width: 34
+ Height: 26
+ VisualHeight: 0
+ Background: command-button
+ Key: Deploy
+ DisableKeyRepeat: true
+ DisableKeySound: true
+ TooltipText: Deploy
+ TooltipDesc: Selected units will perform their default deploy activity\n - MCVs will unpack into a Construction Yard\n - Construction Yards will re-pack into a MCV\n - Transports will unload their passengers\n - Demolition Trucks and MAD Tanks will self-destruct\n - Minelayers will deploy a mine\n - Aircraft will return to base\n\nActs immediately on selected units.
+ TooltipContainer: TOOLTIP_CONTAINER
+ Children:
+ Image@ICON:
+ X: 5
+ Y: 1
+ ImageCollection: command-icons
+ ImageName: deploy
+ Button@SCATTER:
+ Logic: AddFactionSuffixLogic
+ X: 170
+ Width: 34
+ Height: 26
+ VisualHeight: 0
+ Background: command-button
+ Key: Scatter
+ DisableKeyRepeat: true
+ DisableKeySound: true
+ TooltipText: Scatter
+ TooltipDesc: Selected units will stop their current activity\nand move to a nearby location.\n\nActs immediately on selected units.
+ TooltipContainer: TOOLTIP_CONTAINER
+ Children:
+ Image@ICON:
+ X: 5
+ Y: 1
+ ImageCollection: command-icons
+ ImageName: scatter
+ Button@STOP:
+ Logic: AddFactionSuffixLogic
+ X: 204
+ Width: 34
+ Height: 26
+ VisualHeight: 0
+ Background: command-button
+ Key: Stop
+ DisableKeyRepeat: true
+ DisableKeySound: true
+ TooltipText: Stop
+ TooltipDesc: Selected units will stop their current activity.\n\nActs immediately on selected units.
+ TooltipContainer: TOOLTIP_CONTAINER
+ Children:
+ Image@ICON:
+ X: 5
+ Y: 1
+ ImageCollection: command-icons
+ ImageName: stop
+ Button@QUEUE_ORDERS:
+ Logic: AddFactionSuffixLogic
+ X: 238
+ Width: 34
+ Height: 26
+ VisualHeight: 0
+ Background: command-button
+ DisableKeySound: true
+ TooltipText: Waypoint Mode
+ TooltipDesc: Use Waypoint Mode to give multiple linking commands\nto the selected units. Units will execute the commands\nimmediately upon receiving them.\n\nLeft-click icon then give commands in the game world.\nHold {(Shift)} to activate temporarily while commanding units.
+ TooltipContainer: TOOLTIP_CONTAINER
+ TooltipTemplate: BUTTON_WITH_DESC_HIGHLIGHT_TOOLTIP
+ Children:
+ Image@ICON:
+ X: 5
+ Y: 1
+ ImageCollection: command-icons
+ ImageName: queue-orders
+ Container@STANCE_BAR:
+ Logic: StanceSelectorLogic
+ X: 294
+ Y: WINDOW_BOTTOM - HEIGHT - 14
+ Width: 138
+ Height: 26
+ Children:
+ Button@STANCE_ATTACKANYTHING:
+ Logic: AddFactionSuffixLogic
+ Width: 34
+ Height: 26
+ VisualHeight: 0
+ Background: command-button
+ Key: StanceAttackAnything
+ DisableKeyRepeat: true
+ DisableKeySound: true
+ TooltipText: Attack Anything Stance
+ TooltipDesc: Set the selected units to Attack Anything stance:\n - Units will attack enemy units and structures on sight\n - Units will pursue attackers across the battlefield
+ TooltipContainer: TOOLTIP_CONTAINER
+ Children:
+ Image@ICON:
+ X: 9
+ Y: 5
+ ImageCollection: stance-icons
+ ImageName: attack-anything
+ Button@STANCE_DEFEND:
+ Logic: AddFactionSuffixLogic
+ X: 34
+ Width: 34
+ Height: 26
+ VisualHeight: 0
+ Background: command-button
+ Key: StanceDefend
+ DisableKeyRepeat: true
+ DisableKeySound: true
+ TooltipText: Defend Stance
+ TooltipDesc: Set the selected units to Defend stance:\n - Units will attack enemy units on sight\n - Units will not move or pursue enemies
+ TooltipContainer: TOOLTIP_CONTAINER
+ Children:
+ Image@ICON:
+ X: 9
+ Y: 5
+ ImageCollection: stance-icons
+ ImageName: defend
+ Button@STANCE_RETURNFIRE:
+ Logic: AddFactionSuffixLogic
+ X: 68
+ Width: 34
+ Height: 26
+ VisualHeight: 0
+ Background: command-button
+ Key: StanceReturnFire
+ DisableKeyRepeat: true
+ DisableKeySound: true
+ TooltipText: Return Fire Stance
+ TooltipDesc: Set the selected units to Return Fire stance:\n - Units will retaliate against enemies that attack them\n - Units will not move or pursue enemies
+ TooltipContainer: TOOLTIP_CONTAINER
+ Children:
+ Image@ICON:
+ X: 9
+ Y: 5
+ ImageCollection: stance-icons
+ ImageName: return-fire
+ Button@STANCE_HOLDFIRE:
+ Logic: AddFactionSuffixLogic
+ X: 102
+ Width: 34
+ Height: 26
+ VisualHeight: 0
+ Background: command-button
+ Key: StanceHoldFire
+ DisableKeyRepeat: true
+ DisableKeySound: true
+ TooltipText: Hold Fire Stance
+ TooltipDesc: Set the selected units to Hold Fire stance:\n - Units will not fire upon enemies\n - Units will not move or pursue enemies
+ TooltipContainer: TOOLTIP_CONTAINER
+ Children:
+ Image@ICON:
+ X: 9
+ Y: 5
+ ImageCollection: stance-icons
+ ImageName: hold-fire
+ Image@SIDEBAR_BACKGROUND_TOP:
+ Logic: AddFactionSuffixLogic
+ X: WINDOW_RIGHT - 250
+ Y: 10
+ Width: 238
+ Height: 291
+ ImageCollection: sidebar
+ ImageName: background-top
+ ClickThrough: false
+ Children:
+ Container@TOP_BUTTONS:
+ Logic: MenuButtonsChromeLogic
+ X: 9
+ Y: 7
+ Children:
+ Button@BEACON_BUTTON:
+ Logic: BeaconOrderButtonLogic, AddFactionSuffixLogic
+ Width: 28
+ Height: 28
+ Background: sidebar-button
+ Key: PlaceBeacon
+ TooltipText: Place Beacon
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: order-icons
+ Button@SELL_BUTTON:
+ Logic: SellOrderButtonLogic, AddFactionSuffixLogic
+ X: 32
+ Width: 28
+ Height: 28
+ Background: sidebar-button
+ Key: Sell
+ TooltipText: Sell
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: order-icons
+ Button@POWER_BUTTON:
+ Logic: PowerdownOrderButtonLogic, AddFactionSuffixLogic
+ X: 64
+ Width: 28
+ Height: 28
+ Background: sidebar-button
+ Key: PowerDown
+ TooltipText: Power Down
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: order-icons
+ Button@REPAIR_BUTTON:
+ Logic: RepairOrderButtonLogic, AddFactionSuffixLogic
+ X: 96
+ Width: 28
+ Height: 28
+ Background: sidebar-button
+ Key: Repair
+ TooltipText: Repair
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: order-icons
+ MenuButton@DEBUG_BUTTON:
+ Logic: AddFactionSuffixLogic
+ X: 128
+ Width: 28
+ Height: 28
+ Background: sidebar-button
+ Key: escape Shift
+ TooltipText: Debug Menu
+ TooltipContainer: TOOLTIP_CONTAINER
+ DisableWorldSounds: true
+ VisualHeight: 0
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: order-icons
+ ImageName: debug
+ MenuButton@OPTIONS_BUTTON:
+ Logic: AddFactionSuffixLogic
+ X: 192
+ Width: 28
+ Height: 28
+ Background: sidebar-button
+ Key: escape
+ TooltipText: Options
+ TooltipContainer: TOOLTIP_CONTAINER
+ DisableWorldSounds: true
+ VisualHeight: 0
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: order-icons
+ ImageName: options
+ Container@RADAR:
+ Logic: IngameRadarDisplayLogic
+ Children:
+ LogicTicker@RADAR_TICKER:
+ ColorBlock@RADAR_FADETOBLACK:
+ X: 8
+ Y: 40
+ Width: 222
+ Height: 222
+ Radar@RADAR_MINIMAP:
+ WorldInteractionController: INTERACTION_CONTROLLER
+ X: 9
+ Y: 41
+ Width: 220
+ Height: 220
+ Children:
+ VqaPlayer@PLAYER:
+ X: 8
+ Y: 40
+ Width: 220
+ Height: 220
+ Skippable: false
+ Label@GAME_TIMER:
+ Logic: GameTimerLogic
+ X: 3
+ Y: 263
+ Width: PARENT_RIGHT
+ Height: 22
+ Align: Center
+ Font: TinyBold
+ LabelWithTooltip@CASH:
+ Logic: IngameCashCounterLogic
+ X: 35
+ Y: 262
+ Width: 50
+ Height: 22
+ Font: Bold
+ Text: {0}
+ TooltipContainer: TOOLTIP_CONTAINER
+ TooltipTemplate: SIMPLE_TOOLTIP
+ LabelWithTooltip@POWER:
+ Logic: IngamePowerCounterLogic
+ X: PARENT_RIGHT - WIDTH - 30
+ Y: 262
+ Width: 50
+ Height: 22
+ Align: Right
+ Font: Bold
+ Text: {0}
+ TooltipContainer: TOOLTIP_CONTAINER
+ TooltipTemplate: SIMPLE_TOOLTIP
+ Children:
+ Image@POWER_ICON:
+ X: PARENT_RIGHT + 4
+ Y: 5
+ ImageCollection: power-icons
+ ImageName: power-normal
+ Container@SIDEBAR_PRODUCTION:
+ Logic: ClassicProductionLogic
+ X: WINDOW_RIGHT - 250
+ Y: 300
+ Width: 238
+ Height: 250
+ Children:
+ Container@PALETTE_BACKGROUND:
+ Children:
+ Image@ROW_TEMPLATE:
+ Logic: AddFactionSuffixLogic
+ Width: 238
+ Height: 47
+ ClickThrough: false
+ ImageCollection: sidebar
+ ImageName: background-iconrow
+ Image@BOTTOM_CAP:
+ Logic: AddFactionSuffixLogic
+ Width: 238
+ Height: 8
+ ClickThrough: false
+ ImageCollection: sidebar
+ ImageName: background-bottom
+ LogicTicker@PRODUCTION_TICKER:
+ ProductionPalette@PRODUCTION_PALETTE:
+ X: 42
+ Y: 1
+ TooltipContainer: TOOLTIP_CONTAINER
+ ReadyText: READY
+ HoldText: ON HOLD
+ IconSize: 62, 46
+ IconMargin: 1, 1
+ IconSpriteOffset: -1, -1
+ HotkeyPrefix: Production
+ HotkeyCount: 24
+ Container@PALETTE_FOREGROUND:
+ X: 40
+ Y: 0 - 1
+ Children:
+ Image@ROW_TEMPLATE:
+ Width: 238
+ Height: 47
+ IgnoreMouseOver: true
+ ImageCollection: sidebar-bits
+ ImageName: production-iconoverlay
+ Container@PRODUCTION_TYPES:
+ X: 7
+ Y: 2
+ Width: 29
+ Height: 240
+ Children:
+ ProductionTypeButton@BUILDING:
+ Logic: AddFactionSuffixLogic
+ Width: 28
+ Height: 28
+ VisualHeight: 0
+ Background: sidebar-button
+ TooltipText: Buildings
+ TooltipContainer: TOOLTIP_CONTAINER
+ ProductionGroup: Building
+ Key: ProductionTypeBuilding
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: production-icons
+ ProductionTypeButton@DEFENSE:
+ Logic: AddFactionSuffixLogic
+ Y: 31
+ Width: 28
+ Height: 28
+ VisualHeight: 0
+ Background: sidebar-button
+ TooltipText: Defense
+ TooltipContainer: TOOLTIP_CONTAINER
+ ProductionGroup: Defense
+ Key: ProductionTypeDefense
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: production-icons
+ ProductionTypeButton@INFANTRY:
+ Logic: AddFactionSuffixLogic
+ Y: 62
+ Width: 28
+ Height: 28
+ VisualHeight: 0
+ Background: sidebar-button
+ TooltipText: Infantry
+ TooltipContainer: TOOLTIP_CONTAINER
+ ProductionGroup: Infantry
+ Key: ProductionTypeInfantry
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: production-icons
+ ProductionTypeButton@VEHICLE:
+ Logic: AddFactionSuffixLogic
+ Y: 93
+ Width: 28
+ Height: 28
+ VisualHeight: 0
+ Background: sidebar-button
+ TooltipText: Vehicles
+ TooltipContainer: TOOLTIP_CONTAINER
+ ProductionGroup: Vehicle
+ Key: ProductionTypeVehicle
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: production-icons
+ ProductionTypeButton@AIRCRAFT:
+ Logic: AddFactionSuffixLogic
+ Y: 124
+ Width: 28
+ Height: 28
+ VisualHeight: 0
+ Background: sidebar-button
+ TooltipText: Aircraft
+ TooltipContainer: TOOLTIP_CONTAINER
+ ProductionGroup: Aircraft
+ Key: ProductionTypeAircraft
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: production-icons
+ ProductionTypeButton@NAVAL:
+ Logic: AddFactionSuffixLogic
+ Y: 155
+ Width: 28
+ Height: 28
+ VisualHeight: 0
+ Background: sidebar-button
+ TooltipText: Naval
+ TooltipContainer: TOOLTIP_CONTAINER
+ ProductionGroup: Ship
+ Key: ProductionTypeNaval
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: production-icons
+ Button@SCROLL_UP_BUTTON:
+ Logic: AddFactionSuffixLogic
+ Y: 186
+ Width: 28
+ Height: 22
+ VisualHeight: 0
+ Background: sidebar-button
+ TooltipText: Scroll up
+ TooltipContainer: TOOLTIP_CONTAINER
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 3
+ ImageCollection: scrollbar
+ ImageName: up_arrow
+ Button@SCROLL_DOWN_BUTTON:
+ Logic: AddFactionSuffixLogic
+ Y: 211
+ Width: 28
+ Height: 22
+ VisualHeight: 0
+ Background: sidebar-button
+ TooltipText: Scroll down
+ TooltipContainer: TOOLTIP_CONTAINER
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 3
+ ImageCollection: scrollbar
+ ImageName: down_arrow
diff --git a/mods/ura/cursors.yaml b/mods/ura/cursors.yaml
new file mode 100644
index 0000000..ebc8e9f
--- /dev/null
+++ b/mods/ura/cursors.yaml
@@ -0,0 +1,233 @@
+Palettes:
+ cursor: temperat.pal
+
+Cursors:
+ mouse.shp: cursor
+ scroll-t:
+ Start: 1
+ Y: -7
+ scroll-tr:
+ Start: 2
+ X: 6
+ Y: -5
+ scroll-r:
+ Start: 3
+ X: 7
+ scroll-br:
+ Start: 4
+ X: 6
+ Y: 5
+ scroll-b:
+ Start: 5
+ Y: 7
+ scroll-bl:
+ Start: 6
+ X: -6
+ Y: 5
+ scroll-l:
+ Start: 7
+ X: -8
+ scroll-tl:
+ Start: 8
+ X: -6
+ y: 5
+ scroll-t-blocked:
+ Start: 124
+ Y: -7
+ scroll-tr-blocked:
+ Start: 125
+ X: 6
+ Y: -5
+ scroll-r-blocked:
+ Start: 126
+ X: 7
+ scroll-br-blocked:
+ Start: 127
+ X: 6
+ Y: 5
+ scroll-b-blocked:
+ Start: 128
+ Y: 7
+ scroll-bl-blocked:
+ Start: 129
+ X: -6
+ Y: 5
+ scroll-l-blocked:
+ Start: 130
+ X: -8
+ scroll-tl-blocked:
+ Start: 131
+ X: -6
+ Y: 5
+ select:
+ Start: 15
+ Length: 6
+ default:
+ Start: 0
+ X: -16
+ Y: -12
+ default-minimap:
+ Start: 80
+ X: -16
+ Y: -12
+ generic-blocked:
+ Start: 9
+ generic-blocked-minimap:
+ Start: 33
+ move:
+ Start: 10
+ Length: 4
+ move-minimap:
+ Start: 29
+ Length: 4
+ move-rough:
+ Start: 10
+ Length: 4
+ move-blocked:
+ Start: 14
+ move-blocked-minimap:
+ Start: 33
+ attack:
+ Start: 195
+ Length: 8
+ attack-minimap:
+ Start: 203
+ Length: 8
+ attackoutsiderange:
+ Start: 21
+ Length: 8
+ attackoutsiderange-minimap:
+ Start: 134
+ Length: 8
+ harvest:
+ Start: 21
+ Length: 8
+ harvest-minimap:
+ Start: 134
+ Length: 8
+ enter:
+ Start: 113
+ Length: 3
+ enter-minimap:
+ Start: 139
+ Length: 3
+ enter-blocked:
+ Start: 212
+ Length: 1
+ enter-blocked-minimap:
+ Start: 33
+ c4:
+ Start: 116
+ Length: 3
+ c4-minimap:
+ Start: 121
+ Length: 3
+ guard:
+ Start: 147
+ Length: 1
+ guard-minimap:
+ Start: 146
+ Length: 1
+ capture:
+ Start: 164
+ Length: 3
+ capture-minimap:
+ Start: 167
+ Length: 3
+ heal:
+ Start: 160
+ Length: 4
+ heal-minimap:
+ Start: 194
+ Length: 1
+ ability:
+ Start: 82
+ Length: 8
+ ability-minimap:
+ Start: 214
+ Length: 8
+ joystick-all:
+ Start: 0
+ X: -16
+ Y: -12
+ joystick-t-blocked:
+ Start: 124
+ joystick-tr-blocked:
+ Start: 125
+ joystick-r-blocked:
+ Start: 126
+ joystick-br-blocked:
+ Start: 127
+ joystick-b-blocked:
+ Start: 128
+ joystick-bl-blocked:
+ Start: 129
+ joystick-l-blocked:
+ Start: 130
+ joystick-tl-blocked:
+ Start: 131
+# Cursors that need minimap variants
+ deploy:
+ Start: 59
+ Length: 9
+ deploy-blocked:
+ Start: 211
+ Length: 1
+ goldwrench:
+ Start: 170
+ Length: 24
+ goldwrench-blocked:
+ Start: 213
+ Length: 1
+ nuke:
+ Start: 90
+ Length: 7
+ chrono-select:
+ Start: 97
+ Length: 8
+ chrono-target:
+ Start: 105
+ Length: 8
+ sell:
+ Start: 68
+ Length: 12
+ sell-blocked:
+ Start: 119
+ Length: 1
+ repair:
+ Start: 35
+ Length: 24
+ repair-blocked:
+ Start: 120
+ Length: 1
+ sell2:
+ Start: 148
+ Length: 12
+ nopower.shp: cursor
+ powerdown-blocked:
+ Start: 0
+ Length: 1
+ powerdown:
+ Start: 1
+ Length: 3
+ attackmove.shp: cursor
+ attackmove:
+ Start: 0
+ Length: 4
+ attackmove-minimap:
+ Start: 4
+ Length: 4
+ attackmove-blocked:
+ Start: 16
+ attackmove-blocked-minimap:
+ Start: 18
+ assaultmove:
+ Start: 8
+ Length: 4
+ assaultmove-minimap:
+ Start: 12
+ Length: 4
+ assaultmove-blocked:
+ Start: 17
+ assaultmove-blocked-minimap:
+ Start: 19
diff --git a/mods/ura/hotkeys.yaml b/mods/ura/hotkeys.yaml
new file mode 100644
index 0000000..f8da28a
--- /dev/null
+++ b/mods/ura/hotkeys.yaml
@@ -0,0 +1,27 @@
+ProductionTypeBuilding: E
+ Description: Building Tab
+ Types: Production
+
+ProductionTypeDefense: R
+ Description: Defense Tab
+ Types: Production
+
+ProductionTypeInfantry: T
+ Description: Infantry Tab
+ Types: Production
+
+ProductionTypeVehicle: Y
+ Description: Vehicle Tab
+ Types: Production
+
+ProductionTypeAircraft: U
+ Description: Aircraft Tab
+ Types: Production
+
+ProductionTypeNaval: I
+ Description: Naval Tab
+ Types: Production
+
+PowerDown: X
+ Description: Power-down mode
+ Types: OrderGenerator
diff --git a/mods/ura/icon.png b/mods/ura/icon.png
new file mode 100644
index 0000000..220da01
Binary files /dev/null and b/mods/ura/icon.png differ
diff --git a/mods/ura/installer/aftermath.yaml b/mods/ura/installer/aftermath.yaml
new file mode 100644
index 0000000..dadbb5e
--- /dev/null
+++ b/mods/ura/installer/aftermath.yaml
@@ -0,0 +1,230 @@
+aftermath: Aftermath Expansion Disc (English)
+ IDFiles:
+ README.TXT: 9902fb74c019df1b76ff5634e68f0371d790b5e0
+ SETUP/INSTALL/PATCH.RTP: 5bce93f834f9322ddaa7233242e5b6c7fea0bf17
+ Install:
+ extract-raw: SETUP/INSTALL/PATCH.RTP
+ ^Content/ra/v2/expand/expand2.mix:
+ Offset: 4712984
+ Length: 469922
+ ^Content/ra/v2/expand/hires1.mix:
+ Offset: 5182981
+ Length: 90264
+ ^Content/ra/v2/expand/lores1.mix:
+ Offset: 5273320
+ Length: 57076
+ extract-raw: MAIN.MIX
+ ^Content/ra/v2/expand/await.aud:
+ Offset: 158698809
+ Length: 2972788
+ ^Content/ra/v2/expand/bog.aud:
+ Offset: 244351833
+ Length: 2386955
+ ^Content/ra/v2/expand/float_v2.aud:
+ Offset: 246738788
+ Length: 3090115
+ ^Content/ra/v2/expand/gloom.aud:
+ Offset: 249828903
+ Length: 2662851
+ ^Content/ra/v2/expand/grndwire.aud:
+ Offset: 252491754
+ Length: 2573611
+ ^Content/ra/v2/expand/rpt.aud:
+ Offset: 255065365
+ Length: 3092259
+ ^Content/ra/v2/expand/search.aud:
+ Offset: 258157624
+ Length: 3104091
+ ^Content/ra/v2/expand/traction.aud:
+ Offset: 261261715
+ Length: 2668003
+ ^Content/ra/v2/expand/wastelnd.aud:
+ Offset: 263929718
+ Length: 2721563
+ ^Content/ra/v2/expand/chrotnk1.aud:
+ Offset: 267714446
+ Length: 22900
+ ^Content/ra/v2/expand/fixit1.aud:
+ Offset: 267959424
+ Length: 10707
+ ^Content/ra/v2/expand/jburn1.aud:
+ Offset: 268105462
+ Length: 23091
+ ^Content/ra/v2/expand/jchrge1.aud:
+ Offset: 268128553
+ Length: 14219
+ ^Content/ra/v2/expand/jcrisp1.aud:
+ Offset: 268142772
+ Length: 18211
+ ^Content/ra/v2/expand/jdance1.aud:
+ Offset: 268160983
+ Length: 14315
+ ^Content/ra/v2/expand/jjuice1.aud:
+ Offset: 268175298
+ Length: 9699
+ ^Content/ra/v2/expand/jjump1.aud:
+ Offset: 268184997
+ Length: 8219
+ ^Content/ra/v2/expand/jlight1.aud:
+ Offset: 268193216
+ Length: 9875
+ ^Content/ra/v2/expand/jpower1.aud:
+ Offset: 268203091
+ Length: 13571
+ ^Content/ra/v2/expand/jshock1.aud:
+ Offset: 268216662
+ Length: 14771
+ ^Content/ra/v2/expand/jyes1.aud:
+ Offset: 268231433
+ Length: 13795
+ ^Content/ra/v2/expand/madchrg2.aud:
+ Offset: 268361344
+ Length: 19782
+ ^Content/ra/v2/expand/madexplo.aud:
+ Offset: 268381126
+ Length: 26572
+ ^Content/ra/v2/expand/mboss1.aud:
+ Offset: 268413174
+ Length: 20147
+ ^Content/ra/v2/expand/mhear1.aud:
+ Offset: 268438509
+ Length: 6714
+ ^Content/ra/v2/expand/mhotdig1.aud:
+ Offset: 268445223
+ Length: 10674
+ ^Content/ra/v2/expand/mhowdy1.aud:
+ Offset: 268455897
+ Length: 6714
+ ^Content/ra/v2/expand/mhuh1.aud:
+ Offset: 268462611
+ Length: 4117
+ ^Content/ra/v2/expand/mlaff1.aud:
+ Offset: 268527415
+ Length: 24133
+ ^Content/ra/v2/expand/mrise1.aud:
+ Offset: 268564948
+ Length: 13523
+ ^Content/ra/v2/expand/mwrench1.aud:
+ Offset: 268578471
+ Length: 10780
+ ^Content/ra/v2/expand/myeehaw1.aud:
+ Offset: 268589251
+ Length: 18912
+ ^Content/ra/v2/expand/myes1.aud:
+ Offset: 268608163
+ Length: 9073
+aftermath-linux: Aftermath Expansion Disc (English)
+ IDFiles:
+ readme.txt: 9902fb74c019df1b76ff5634e68f0371d790b5e0
+ setup/install/patch.rtp: 5bce93f834f9322ddaa7233242e5b6c7fea0bf17
+ Install:
+ extract-raw: setup/install/patch.rtp
+ ^Content/ra/v2/expand/expand2.mix:
+ Offset: 4712984
+ Length: 469922
+ ^Content/ra/v2/expand/hires1.mix:
+ Offset: 5182981
+ Length: 90264
+ ^Content/ra/v2/expand/lores1.mix:
+ Offset: 5273320
+ Length: 57076
+ extract-raw: main.mix
+ ^Content/ra/v2/expand/await.aud:
+ Offset: 158698809
+ Length: 2972788
+ ^Content/ra/v2/expand/bog.aud:
+ Offset: 244351833
+ Length: 2386955
+ ^Content/ra/v2/expand/float_v2.aud:
+ Offset: 246738788
+ Length: 3090115
+ ^Content/ra/v2/expand/gloom.aud:
+ Offset: 249828903
+ Length: 2662851
+ ^Content/ra/v2/expand/grndwire.aud:
+ Offset: 252491754
+ Length: 2573611
+ ^Content/ra/v2/expand/rpt.aud:
+ Offset: 255065365
+ Length: 3092259
+ ^Content/ra/v2/expand/search.aud:
+ Offset: 258157624
+ Length: 3104091
+ ^Content/ra/v2/expand/traction.aud:
+ Offset: 261261715
+ Length: 2668003
+ ^Content/ra/v2/expand/wastelnd.aud:
+ Offset: 263929718
+ Length: 2721563
+ ^Content/ra/v2/expand/chrotnk1.aud:
+ Offset: 267714446
+ Length: 22900
+ ^Content/ra/v2/expand/fixit1.aud:
+ Offset: 267959424
+ Length: 10707
+ ^Content/ra/v2/expand/jburn1.aud:
+ Offset: 268105462
+ Length: 23091
+ ^Content/ra/v2/expand/jchrge1.aud:
+ Offset: 268128553
+ Length: 14219
+ ^Content/ra/v2/expand/jcrisp1.aud:
+ Offset: 268142772
+ Length: 18211
+ ^Content/ra/v2/expand/jdance1.aud:
+ Offset: 268160983
+ Length: 14315
+ ^Content/ra/v2/expand/jjuice1.aud:
+ Offset: 268175298
+ Length: 9699
+ ^Content/ra/v2/expand/jjump1.aud:
+ Offset: 268184997
+ Length: 8219
+ ^Content/ra/v2/expand/jlight1.aud:
+ Offset: 268193216
+ Length: 9875
+ ^Content/ra/v2/expand/jpower1.aud:
+ Offset: 268203091
+ Length: 13571
+ ^Content/ra/v2/expand/jshock1.aud:
+ Offset: 268216662
+ Length: 14771
+ ^Content/ra/v2/expand/jyes1.aud:
+ Offset: 268231433
+ Length: 13795
+ ^Content/ra/v2/expand/madchrg2.aud:
+ Offset: 268361344
+ Length: 19782
+ ^Content/ra/v2/expand/madexplo.aud:
+ Offset: 268381126
+ Length: 26572
+ ^Content/ra/v2/expand/mboss1.aud:
+ Offset: 268413174
+ Length: 20147
+ ^Content/ra/v2/expand/mhear1.aud:
+ Offset: 268438509
+ Length: 6714
+ ^Content/ra/v2/expand/mhotdig1.aud:
+ Offset: 268445223
+ Length: 10674
+ ^Content/ra/v2/expand/mhowdy1.aud:
+ Offset: 268455897
+ Length: 6714
+ ^Content/ra/v2/expand/mhuh1.aud:
+ Offset: 268462611
+ Length: 4117
+ ^Content/ra/v2/expand/mlaff1.aud:
+ Offset: 268527415
+ Length: 24133
+ ^Content/ra/v2/expand/mrise1.aud:
+ Offset: 268564948
+ Length: 13523
+ ^Content/ra/v2/expand/mwrench1.aud:
+ Offset: 268578471
+ Length: 10780
+ ^Content/ra/v2/expand/myeehaw1.aud:
+ Offset: 268589251
+ Length: 18912
+ ^Content/ra/v2/expand/myes1.aud:
+ Offset: 268608163
+ Length: 9073
\ No newline at end of file
diff --git a/mods/ura/installer/allies95.yaml b/mods/ura/installer/allies95.yaml
new file mode 100644
index 0000000..7a2bb22
--- /dev/null
+++ b/mods/ura/installer/allies95.yaml
@@ -0,0 +1,394 @@
+allied: Red Alert 95 (Allied Disc, English)
+ IDFiles:
+ MAIN.MIX: 20ebe16f91ff79be2d672f1db5bae9048ff9357c
+ Length: 4096
+ INSTALL/REDALERT.MIX: 0e58f4b54f44f6cd29fecf8cf379d33cf2d4caef
+ Install:
+ extract-raw: INSTALL/REDALERT.MIX
+ ^Content/ra/v2/hires.mix:
+ Offset: 650612
+ Length: 5817417
+ ^Content/ra/v2/local.mix:
+ Offset: 6468029
+ Length: 3829837
+ ^Content/ra/v2/lores.mix:
+ Offset: 10297866
+ Length: 754800
+ ^Content/ra/v2/speech.mix:
+ Offset: 23042864
+ Length: 2003464
+ extract-raw: MAIN.MIX
+ ^Content/ra/v2/conquer.mix:
+ Offset: 236
+ Length: 2177047
+ ^Content/ra/v2/interior.mix:
+ Offset: 17172192
+ Length: 247425
+ ^Content/ra/v2/movies/aagun.vqa:
+ Offset: 37694331
+ Length: 3295512
+ ^Content/ra/v2/movies/aftrmath.vqa:
+ Offset: 40989843
+ Length: 2455774
+ ^Content/ra/v2/movies/ally1.vqa:
+ Offset: 43445617
+ Length: 13536324
+ ^Content/ra/v2/movies/ally10.vqa:
+ Offset: 56981941
+ Length: 21506358
+ ^Content/ra/v2/movies/ally10b.vqa:
+ Offset: 78488299
+ Length: 2565152
+ ^Content/ra/v2/movies/ally11.vqa:
+ Offset: 81053451
+ Length: 13600398
+ ^Content/ra/v2/movies/ally12.vqa:
+ Offset: 94653849
+ Length: 7719544
+ ^Content/ra/v2/movies/ally14.vqa:
+ Offset: 102373393
+ Length: 11659080
+ ^Content/ra/v2/movies/ally2.vqa:
+ Offset: 114032473
+ Length: 8014018
+ ^Content/ra/v2/movies/ally4.vqa:
+ Offset: 122046491
+ Length: 9441906
+ ^Content/ra/v2/movies/ally5.vqa:
+ Offset: 131488397
+ Length: 21900328
+ ^Content/ra/v2/movies/ally6.vqa:
+ Offset: 153388725
+ Length: 26454212
+ ^Content/ra/v2/movies/ally8.vqa:
+ Offset: 179842937
+ Length: 15401062
+ ^Content/ra/v2/movies/ally9.vqa:
+ Offset: 195243999
+ Length: 14901460
+ ^Content/ra/v2/movies/allyend.vqa:
+ Offset: 210145459
+ Length: 27285692
+ ^Content/ra/v2/movies/allymorf.vqa:
+ Offset: 237431151
+ Length: 916964
+ ^Content/ra/v2/movies/apcescpe.vqa:
+ Offset: 238348115
+ Length: 1627564
+ ^Content/ra/v2/movies/assess.vqa:
+ Offset: 239975679
+ Length: 2929218
+ ^Content/ra/v2/movies/battle.vqa:
+ Offset: 242904897
+ Length: 2881110
+ ^Content/ra/v2/movies/binoc.vqa:
+ Offset: 245786007
+ Length: 4045856
+ ^Content/ra/v2/movies/bmap.vqa:
+ Offset: 249831863
+ Length: 2414312
+ ^Content/ra/v2/movies/brdgtilt.vqa:
+ Offset: 252246175
+ Length: 1581318
+ ^Content/ra/v2/movies/crontest.vqa:
+ Offset: 253827493
+ Length: 2036620
+ ^Content/ra/v2/movies/cronfail.vqa:
+ Offset: 255864113
+ Length: 1717214
+ ^Content/ra/v2/movies/destroyr.vqa:
+ Offset: 257581327
+ Length: 2178828
+ ^Content/ra/v2/movies/dud.vqa:
+ Offset: 259760155
+ Length: 3110418
+ ^Content/ra/v2/movies/elevator.vqa:
+ Offset: 262870573
+ Length: 1741894
+ ^Content/ra/v2/movies/flare.vqa:
+ Offset: 264612467
+ Length: 1731744
+ ^Content/ra/v2/movies/frozen.vqa:
+ Offset: 266344211
+ Length: 1836994
+ ^Content/ra/v2/movies/grvestne.vqa:
+ Offset: 268181205
+ Length: 3155668
+ ^Content/ra/v2/movies/landing.vqa:
+ Offset: 271336873
+ Length: 2374106
+ ^Content/ra/v2/movies/masasslt.vqa:
+ Offset: 273710979
+ Length: 5354700
+ ^Content/ra/v2/movies/mcv.vqa:
+ Offset: 279065679
+ Length: 1296036
+ ^Content/ra/v2/movies/mcv_land.vqa:
+ Offset: 280361715
+ Length: 1424358
+ ^Content/ra/v2/movies/montpass.vqa:
+ Offset: 281786073
+ Length: 1701852
+ ^Content/ra/v2/movies/oildrum.vqa:
+ Offset: 283487925
+ Length: 2430792
+ ^Content/ra/v2/movies/overrun.vqa:
+ Offset: 285918717
+ Length: 2174548
+ ^Content/ra/v2/movies/prolog.vqa:
+ Offset: 288093265
+ Length: 28658198
+ ^Content/ra/v2/movies/redintro.vqa:
+ Offset: 316751463
+ Length: 2269452
+ ^Content/ra/v2/movies/shipsink.vqa:
+ Offset: 319020915
+ Length: 3150030
+ ^Content/ra/v2/movies/shorbom1.vqa:
+ Offset: 322170945
+ Length: 4046650
+ ^Content/ra/v2/movies/shorbom2.vqa:
+ Offset: 326217595
+ Length: 2150364
+ ^Content/ra/v2/movies/shorbomb.vqa:
+ Offset: 328367959
+ Length: 6111616
+ ^Content/ra/v2/movies/snowbomb.vqa:
+ Offset: 334479575
+ Length: 2465762
+ ^Content/ra/v2/movies/soviet1.vqa:
+ Offset: 336945337
+ Length: 24112060
+ ^Content/ra/v2/movies/sovtstar.vqa:
+ Offset: 361057397
+ Length: 670794
+ ^Content/ra/v2/movies/spy.vqa:
+ Offset: 361728191
+ Length: 1646808
+ ^Content/ra/v2/movies/tanya1.vqa:
+ Offset: 363374999
+ Length: 13389684
+ ^Content/ra/v2/movies/tanya2.vqa:
+ Offset: 376764683
+ Length: 4103388
+ ^Content/ra/v2/movies/toofar.vqa:
+ Offset: 380868071
+ Length: 4244572
+ ^Content/ra/v2/movies/trinity.vqa:
+ Offset: 385112643
+ Length: 1669310
+ ^Content/ra/v2/scores.mix:
+ Offset: 386781953
+ Length: 64171360
+ ^Content/ra/v2/snow.mix:
+ Offset: 450953313
+ Length: 1030861
+ ^Content/ra/v2/sounds.mix:
+ Offset: 451984174
+ Length: 1006778
+ ^Content/ra/v2/russian.mix:
+ Offset: 452990952
+ Length: 266077
+ ^Content/ra/v2/allies.mix:
+ Offset: 453257029
+ Length: 309406
+ ^Content/ra/v2/temperat.mix:
+ Offset: 453566435
+ Length: 1038859
+
+allied-linux: Red Alert 95 (Allied Disc, English)
+ IDFiles:
+ eahelp.gid: 13a8a4a1e7d9d6d893c38df5a39262c4689aeba5
+ install/redalert.mix: 0e58f4b54f44f6cd29fecf8cf379d33cf2d4caef
+ Install:
+ extract-raw: install/redalert.mix
+ ^Content/ra/v2/hires.mix:
+ Offset: 650612
+ Length: 5817417
+ ^Content/ra/v2/local.mix:
+ Offset: 6468029
+ Length: 3829837
+ ^Content/ra/v2/lores.mix:
+ Offset: 10297866
+ Length: 754800
+ ^Content/ra/v2/speech.mix:
+ Offset: 23042864
+ Length: 2003464
+ extract-raw: main.mix
+ ^Content/ra/v2/conquer.mix:
+ Offset: 236
+ Length: 2177047
+ ^Content/ra/v2/interior.mix:
+ Offset: 17172192
+ Length: 247425
+ ^Content/ra/v2/movies/aagun.vqa:
+ Offset: 37694331
+ Length: 3295512
+ ^Content/ra/v2/movies/aftrmath.vqa:
+ Offset: 40989843
+ Length: 2455774
+ ^Content/ra/v2/movies/ally1.vqa:
+ Offset: 43445617
+ Length: 13536324
+ ^Content/ra/v2/movies/ally10.vqa:
+ Offset: 56981941
+ Length: 21506358
+ ^Content/ra/v2/movies/ally10b.vqa:
+ Offset: 78488299
+ Length: 2565152
+ ^Content/ra/v2/movies/ally11.vqa:
+ Offset: 81053451
+ Length: 13600398
+ ^Content/ra/v2/movies/ally12.vqa:
+ Offset: 94653849
+ Length: 7719544
+ ^Content/ra/v2/movies/ally14.vqa:
+ Offset: 102373393
+ Length: 11659080
+ ^Content/ra/v2/movies/ally2.vqa:
+ Offset: 114032473
+ Length: 8014018
+ ^Content/ra/v2/movies/ally4.vqa:
+ Offset: 122046491
+ Length: 9441906
+ ^Content/ra/v2/movies/ally5.vqa:
+ Offset: 131488397
+ Length: 21900328
+ ^Content/ra/v2/movies/ally6.vqa:
+ Offset: 153388725
+ Length: 26454212
+ ^Content/ra/v2/movies/ally8.vqa:
+ Offset: 179842937
+ Length: 15401062
+ ^Content/ra/v2/movies/ally9.vqa:
+ Offset: 195243999
+ Length: 14901460
+ ^Content/ra/v2/movies/allyend.vqa:
+ Offset: 210145459
+ Length: 27285692
+ ^Content/ra/v2/movies/allymorf.vqa:
+ Offset: 237431151
+ Length: 916964
+ ^Content/ra/v2/movies/apcescpe.vqa:
+ Offset: 238348115
+ Length: 1627564
+ ^Content/ra/v2/movies/assess.vqa:
+ Offset: 239975679
+ Length: 2929218
+ ^Content/ra/v2/movies/battle.vqa:
+ Offset: 242904897
+ Length: 2881110
+ ^Content/ra/v2/movies/binoc.vqa:
+ Offset: 245786007
+ Length: 4045856
+ ^Content/ra/v2/movies/bmap.vqa:
+ Offset: 249831863
+ Length: 2414312
+ ^Content/ra/v2/movies/brdgtilt.vqa:
+ Offset: 252246175
+ Length: 1581318
+ ^Content/ra/v2/movies/crontest.vqa:
+ Offset: 253827493
+ Length: 2036620
+ ^Content/ra/v2/movies/cronfail.vqa:
+ Offset: 255864113
+ Length: 1717214
+ ^Content/ra/v2/movies/destroyr.vqa:
+ Offset: 257581327
+ Length: 2178828
+ ^Content/ra/v2/movies/dud.vqa:
+ Offset: 259760155
+ Length: 3110418
+ ^Content/ra/v2/movies/elevator.vqa:
+ Offset: 262870573
+ Length: 1741894
+ ^Content/ra/v2/movies/flare.vqa:
+ Offset: 264612467
+ Length: 1731744
+ ^Content/ra/v2/movies/frozen.vqa:
+ Offset: 266344211
+ Length: 1836994
+ ^Content/ra/v2/movies/grvestne.vqa:
+ Offset: 268181205
+ Length: 3155668
+ ^Content/ra/v2/movies/landing.vqa:
+ Offset: 271336873
+ Length: 2374106
+ ^Content/ra/v2/movies/masasslt.vqa:
+ Offset: 273710979
+ Length: 5354700
+ ^Content/ra/v2/movies/mcv.vqa:
+ Offset: 279065679
+ Length: 1296036
+ ^Content/ra/v2/movies/mcv_land.vqa:
+ Offset: 280361715
+ Length: 1424358
+ ^Content/ra/v2/movies/montpass.vqa:
+ Offset: 281786073
+ Length: 1701852
+ ^Content/ra/v2/movies/oildrum.vqa:
+ Offset: 283487925
+ Length: 2430792
+ ^Content/ra/v2/movies/overrun.vqa:
+ Offset: 285918717
+ Length: 2174548
+ ^Content/ra/v2/movies/prolog.vqa:
+ Offset: 288093265
+ Length: 28658198
+ ^Content/ra/v2/movies/redintro.vqa:
+ Offset: 316751463
+ Length: 2269452
+ ^Content/ra/v2/movies/shipsink.vqa:
+ Offset: 319020915
+ Length: 3150030
+ ^Content/ra/v2/movies/shorbom1.vqa:
+ Offset: 322170945
+ Length: 4046650
+ ^Content/ra/v2/movies/shorbom2.vqa:
+ Offset: 326217595
+ Length: 2150364
+ ^Content/ra/v2/movies/shorbomb.vqa:
+ Offset: 328367959
+ Length: 6111616
+ ^Content/ra/v2/movies/snowbomb.vqa:
+ Offset: 334479575
+ Length: 2465762
+ ^Content/ra/v2/movies/soviet1.vqa:
+ Offset: 336945337
+ Length: 24112060
+ ^Content/ra/v2/movies/sovtstar.vqa:
+ Offset: 361057397
+ Length: 670794
+ ^Content/ra/v2/movies/spy.vqa:
+ Offset: 361728191
+ Length: 1646808
+ ^Content/ra/v2/movies/tanya1.vqa:
+ Offset: 363374999
+ Length: 13389684
+ ^Content/ra/v2/movies/tanya2.vqa:
+ Offset: 376764683
+ Length: 4103388
+ ^Content/ra/v2/movies/toofar.vqa:
+ Offset: 380868071
+ Length: 4244572
+ ^Content/ra/v2/movies/trinity.vqa:
+ Offset: 385112643
+ Length: 1669310
+ ^Content/ra/v2/scores.mix:
+ Offset: 386781953
+ Length: 64171360
+ ^Content/ra/v2/snow.mix:
+ Offset: 450953313
+ Length: 1030861
+ ^Content/ra/v2/sounds.mix:
+ Offset: 451984174
+ Length: 1006778
+ ^Content/ra/v2/russian.mix:
+ Offset: 452990952
+ Length: 266077
+ ^Content/ra/v2/allies.mix:
+ Offset: 453257029
+ Length: 309406
+ ^Content/ra/v2/temperat.mix:
+ Offset: 453566435
+ Length: 1038859
\ No newline at end of file
diff --git a/mods/ura/installer/cnc95.yaml b/mods/ura/installer/cnc95.yaml
new file mode 100644
index 0000000..344dd4e
--- /dev/null
+++ b/mods/ura/installer/cnc95.yaml
@@ -0,0 +1,12 @@
+cnc95: C&C Gold (GDI or Nod Disc, English)
+ IDFiles:
+ CONQUER.MIX: 833e02a09aae694659eb312d3838367f681d1b30
+ Install:
+ copy: .
+ ^Content/ra/v2/cnc/desert.mix: DESERT.MIX
+cnc95-linux: C&C Gold (GDI or Nod Disc, English)
+ IDFiles:
+ conquer.mix: 833e02a09aae694659eb312d3838367f681d1b30
+ Install:
+ copy: .
+ ^Content/ra/v2/cnc/desert.mix: desert.mix
\ No newline at end of file
diff --git a/mods/ura/installer/counterstrike.yaml b/mods/ura/installer/counterstrike.yaml
new file mode 100644
index 0000000..299dcd5
--- /dev/null
+++ b/mods/ura/installer/counterstrike.yaml
@@ -0,0 +1,60 @@
+counterstrike: Counterstrike Expansion Disc (English)
+ IDFiles:
+ README.TXT: 0efe8087383f0b159a9633f891fb5f53c6097cd4
+ SETUP/INSTALL/CSTRIKE.RTP: fae8ba82db71574f6ecd8fb4ff4026fcb65d2adc
+ Install:
+ extract-raw: MAIN.MIX
+ ^Content/ra/v2/expand/2nd_hand.aud:
+ Offset: 209070947
+ Length: 3070092
+ ^Content/ra/v2/expand/araziod.aud:
+ Offset: 212141039
+ Length: 2941132
+ ^Content/ra/v2/expand/backstab.aud:
+ Offset: 215082171
+ Length: 3178252
+ ^Content/ra/v2/expand/chaos2.aud:
+ Offset: 218260423
+ Length: 2860068
+ ^Content/ra/v2/expand/shut_it.aud:
+ Offset: 221120491
+ Length: 2991979
+ ^Content/ra/v2/expand/twinmix1.aud:
+ Offset: 224112470
+ Length: 2536972
+ ^Content/ra/v2/expand/under3.aud:
+ Offset: 226649442
+ Length: 2812788
+ ^Content/ra/v2/expand/vr2.aud:
+ Offset: 229462230
+ Length: 2920396
+counterstrike-linux: Counterstrike Expansion Disc (English)
+ IDFiles:
+ readme.txt: 0efe8087383f0b159a9633f891fb5f53c6097cd4
+ setup/install/cstrike.rtp: fae8ba82db71574f6ecd8fb4ff4026fcb65d2adc
+ Install:
+ extract-raw: main.mix
+ ^Content/ra/v2/expand/2nd_hand.aud:
+ Offset: 209070947
+ Length: 3070092
+ ^Content/ra/v2/expand/araziod.aud:
+ Offset: 212141039
+ Length: 2941132
+ ^Content/ra/v2/expand/backstab.aud:
+ Offset: 215082171
+ Length: 3178252
+ ^Content/ra/v2/expand/chaos2.aud:
+ Offset: 218260423
+ Length: 2860068
+ ^Content/ra/v2/expand/shut_it.aud:
+ Offset: 221120491
+ Length: 2991979
+ ^Content/ra/v2/expand/twinmix1.aud:
+ Offset: 224112470
+ Length: 2536972
+ ^Content/ra/v2/expand/under3.aud:
+ Offset: 226649442
+ Length: 2812788
+ ^Content/ra/v2/expand/vr2.aud:
+ Offset: 229462230
+ Length: 2920396
\ No newline at end of file
diff --git a/mods/ura/installer/downloads.yaml b/mods/ura/installer/downloads.yaml
new file mode 100644
index 0000000..3a03201
--- /dev/null
+++ b/mods/ura/installer/downloads.yaml
@@ -0,0 +1,94 @@
+quickinstall: Quick Install Package
+ MirrorList: http://www.openra.net/packages/ra-quickinstall-mirrors.txt
+ Extract:
+ ^Content/ra/v2/allies.mix: allies.mix
+ ^Content/ra/v2/conquer.mix: conquer.mix
+ ^Content/ra/v2/hires.mix: hires.mix
+ ^Content/ra/v2/interior.mix: interior.mix
+ ^Content/ra/v2/local.mix: local.mix
+ ^Content/ra/v2/lores.mix: lores.mix
+ ^Content/ra/v2/russian.mix: russian.mix
+ ^Content/ra/v2/snow.mix: snow.mix
+ ^Content/ra/v2/sounds.mix: sounds.mix
+ ^Content/ra/v2/speech.mix: speech.mix
+ ^Content/ra/v2/temperat.mix: temperat.mix
+ ^Content/ra/v2/expand/chrotnk1.aud: expand/chrotnk1.aud
+ ^Content/ra/v2/expand/expand2.mix: expand/expand2.mix
+ ^Content/ra/v2/expand/fixit1.aud: expand/fixit1.aud
+ ^Content/ra/v2/expand/hires1.mix: expand/hires1.mix
+ ^Content/ra/v2/expand/jburn1.aud: expand/jburn1.aud
+ ^Content/ra/v2/expand/jchrge1.aud: expand/jchrge1.aud
+ ^Content/ra/v2/expand/jcrisp1.aud: expand/jcrisp1.aud
+ ^Content/ra/v2/expand/jdance1.aud: expand/jdance1.aud
+ ^Content/ra/v2/expand/jjuice1.aud: expand/jjuice1.aud
+ ^Content/ra/v2/expand/jjump1.aud: expand/jjump1.aud
+ ^Content/ra/v2/expand/jlight1.aud: expand/jlight1.aud
+ ^Content/ra/v2/expand/jpower1.aud: expand/jpower1.aud
+ ^Content/ra/v2/expand/jshock1.aud: expand/jshock1.aud
+ ^Content/ra/v2/expand/jyes1.aud: expand/jyes1.aud
+ ^Content/ra/v2/expand/lores1.mix: expand/lores1.mix
+ ^Content/ra/v2/expand/madchrg2.aud: expand/madchrg2.aud
+ ^Content/ra/v2/expand/madexplo.aud: expand/madexplo.aud
+ ^Content/ra/v2/expand/mboss1.aud: expand/mboss1.aud
+ ^Content/ra/v2/expand/mhear1.aud: expand/mhear1.aud
+ ^Content/ra/v2/expand/mhotdig1.aud: expand/mhotdig1.aud
+ ^Content/ra/v2/expand/mhowdy1.aud: expand/mhowdy1.aud
+ ^Content/ra/v2/expand/mhuh1.aud: expand/mhuh1.aud
+ ^Content/ra/v2/expand/mlaff1.aud: expand/mlaff1.aud
+ ^Content/ra/v2/expand/mrise1.aud: expand/mrise1.aud
+ ^Content/ra/v2/expand/mwrench1.aud: expand/mwrench1.aud
+ ^Content/ra/v2/expand/myeehaw1.aud: expand/myeehaw1.aud
+ ^Content/ra/v2/expand/myes1.aud: expand/myes1.aud
+ ^Content/ra/v2/cnc/desert.mix: cnc/desert.mix
+basefiles: Base Freeware Content
+ MirrorList: http://www.openra.net/packages/ra-base-mirrors.txt
+ Extract:
+ ^Content/ra/v2/allies.mix: allies.mix
+ ^Content/ra/v2/conquer.mix: conquer.mix
+ ^Content/ra/v2/hires.mix: hires.mix
+ ^Content/ra/v2/interior.mix: interior.mix
+ ^Content/ra/v2/local.mix: local.mix
+ ^Content/ra/v2/lores.mix: lores.mix
+ ^Content/ra/v2/russian.mix: russian.mix
+ ^Content/ra/v2/snow.mix: snow.mix
+ ^Content/ra/v2/sounds.mix: sounds.mix
+ ^Content/ra/v2/speech.mix: speech.mix
+ ^Content/ra/v2/temperat.mix: temperat.mix
+aftermath: Aftermath Expansion Files
+ MirrorList: http://www.openra.net/packages/ra-aftermath-mirrors.txt
+ Extract:
+ ^Content/ra/v2/expand/chrotnk1.aud: expand/chrotnk1.aud
+ ^Content/ra/v2/expand/expand2.mix: expand/expand2.mix
+ ^Content/ra/v2/expand/fixit1.aud: expand/fixit1.aud
+ ^Content/ra/v2/expand/hires1.mix: expand/hires1.mix
+ ^Content/ra/v2/expand/jburn1.aud: expand/jburn1.aud
+ ^Content/ra/v2/expand/jchrge1.aud: expand/jchrge1.aud
+ ^Content/ra/v2/expand/jcrisp1.aud: expand/jcrisp1.aud
+ ^Content/ra/v2/expand/jdance1.aud: expand/jdance1.aud
+ ^Content/ra/v2/expand/jjuice1.aud: expand/jjuice1.aud
+ ^Content/ra/v2/expand/jjump1.aud: expand/jjump1.aud
+ ^Content/ra/v2/expand/jlight1.aud: expand/jlight1.aud
+ ^Content/ra/v2/expand/jpower1.aud: expand/jpower1.aud
+ ^Content/ra/v2/expand/jshock1.aud: expand/jshock1.aud
+ ^Content/ra/v2/expand/jyes1.aud: expand/jyes1.aud
+ ^Content/ra/v2/expand/lores1.mix: expand/lores1.mix
+ ^Content/ra/v2/expand/madchrg2.aud: expand/madchrg2.aud
+ ^Content/ra/v2/expand/madexplo.aud: expand/madexplo.aud
+ ^Content/ra/v2/expand/mboss1.aud: expand/mboss1.aud
+ ^Content/ra/v2/expand/mhear1.aud: expand/mhear1.aud
+ ^Content/ra/v2/expand/mhotdig1.aud: expand/mhotdig1.aud
+ ^Content/ra/v2/expand/mhowdy1.aud: expand/mhowdy1.aud
+ ^Content/ra/v2/expand/mhuh1.aud: expand/mhuh1.aud
+ ^Content/ra/v2/expand/mlaff1.aud: expand/mlaff1.aud
+ ^Content/ra/v2/expand/mrise1.aud: expand/mrise1.aud
+ ^Content/ra/v2/expand/mwrench1.aud: expand/mwrench1.aud
+ ^Content/ra/v2/expand/myeehaw1.aud: expand/myeehaw1.aud
+ ^Content/ra/v2/expand/myes1.aud: expand/myes1.aud
+cncdesert: C&C Desert Tileset
+ MirrorList: http://www.openra.net/packages/ra-cncdesert-mirrors.txt
+ Extract:
+ ^Content/ra/v2/cnc/desert.mix: cnc/desert.mix
+music: Freeware Music
+ MirrorList: http://www.openra.net/packages/ra-scores-mirrors.txt
+ Extract:
+ ^Content/ra/v2/scores.mix: scores.mix
\ No newline at end of file
diff --git a/mods/ura/installer/firstdecade.yaml b/mods/ura/installer/firstdecade.yaml
new file mode 100644
index 0000000..622f787
--- /dev/null
+++ b/mods/ura/installer/firstdecade.yaml
@@ -0,0 +1,448 @@
+tfd: C&C The First Decade (English)
+ IDFiles:
+ data1.hdr: bef3a08c3fc1b1caf28ca0dbb97c1f900005930e
+ data1.cab: 12ad6113a6890a1b4d5651a75378c963eaf513b9
+ Install:
+ extract-iscab: data1.hdr
+ Volumes:
+ 2: data2.cab
+ 3: data3.cab
+ 4: data4.cab
+ 5: data5.cab
+ Extract:
+ ^Content/ra/v2/main.mix: Red Alert\\MAIN.MIX
+ ^Content/ra/v2/redalert.mix: Red Alert\\REDALERT.MIX
+ ^Content/ra/v2/expand/hires1.mix: Red Alert\\HIRES1.MIX
+ ^Content/ra/v2/expand/lores1.mix: Red Alert\\LORES1.MIX
+ ^Content/ra/v2/expand/expand2.mix: Red Alert\\EXPAND2.MIX
+ ^Content/ra/v2/cnc/desert.mix: CnC\\DESERT.MIX
+ extract-raw: ^Content/ra/v2/redalert.mix
+ ^Content/ra/v2/hires.mix:
+ Offset: 650612
+ Length: 5817417
+ ^Content/ra/v2/local.mix:
+ Offset: 6468029
+ Length: 3829837
+ ^Content/ra/v2/lores.mix:
+ Offset: 10297866
+ Length: 754800
+ ^Content/ra/v2/speech.mix:
+ Offset: 23042864
+ Length: 2003464
+ delete: ^Content/ra/v2/redalert.mix
+ extract-raw: ^Content/ra/v2/main.mix
+ ^Content/ra/v2/movies/aagun.vqa:
+ Offset: 668669829
+ Length: 3295512
+ ^Content/ra/v2/movies/aftrmath.vqa:
+ Offset: 671965341
+ Length: 2455774
+ ^Content/ra/v2/movies/ally12.vqa:
+ Offset: 430652277
+ Length: 7719544
+ ^Content/ra/v2/movies/ally14.vqa:
+ Offset: 438371821
+ Length: 11659080
+ ^Content/ra/v2/movies/allyend.vqa:
+ Offset: 450030901
+ Length: 27285692
+ ^Content/ra/v2/movies/allymorf.vqa:
+ Offset: 477316593
+ Length: 916964
+ ^Content/ra/v2/movies/apcescpe.vqa:
+ Offset: 483950063
+ Length: 1627564
+ ^Content/ra/v2/movies/assess.vqa:
+ Offset: 485577627
+ Length: 2929218
+ ^Content/ra/v2/movies/battle.vqa:
+ Offset: 488506845
+ Length: 2881110
+ ^Content/ra/v2/movies/binoc.vqa:
+ Offset: 491387955
+ Length: 4045856
+ ^Content/ra/v2/movies/bmap.vqa:
+ Offset: 495433811
+ Length: 2411294
+ ^Content/ra/v2/movies/brdgtilt.vqa:
+ Offset: 497845105
+ Length: 1581318
+ ^Content/ra/v2/movies/cronfail.vqa:
+ Offset: 499426423
+ Length: 1717214
+ ^Content/ra/v2/movies/crontest.vqa:
+ Offset: 501143637
+ Length: 2036620
+ ^Content/ra/v2/movies/destroyr.vqa:
+ Offset: 503180257
+ Length: 2178828
+ ^Content/ra/v2/movies/dud.vqa:
+ Offset: 505359085
+ Length: 3110418
+ ^Content/ra/v2/movies/elevator.vqa:
+ Offset: 508469503
+ Length: 1741894
+ ^Content/ra/v2/movies/flare.vqa:
+ Offset: 511722609
+ Length: 1731744
+ ^Content/ra/v2/movies/frozen.vqa:
+ Offset: 513454353
+ Length: 1836994
+ ^Content/ra/v2/movies/grvestne.vqa:
+ Offset: 515291347
+ Length: 3155668
+ ^Content/ra/v2/movies/landing.vqa:
+ Offset: 518447015
+ Length: 2374106
+ ^Content/ra/v2/movies/masasslt.vqa:
+ Offset: 520821121
+ Length: 5354700
+ ^Content/ra/v2/movies/mcv.vqa:
+ Offset: 526175821
+ Length: 1296036
+ ^Content/ra/v2/movies/mcv_land.vqa:
+ Offset: 527471857
+ Length: 1424358
+ ^Content/ra/v2/movies/montpass.vqa:
+ Offset: 528896215
+ Length: 1701852
+ ^Content/ra/v2/movies/oildrum.vqa:
+ Offset: 530598067
+ Length: 2430792
+ ^Content/ra/v2/movies/overrun.vqa:
+ Offset: 533028859
+ Length: 2174548
+ ^Content/ra/v2/movies/prolog.vqa:
+ Offset: 535203407
+ Length: 28658198
+ ^Content/ra/v2/movies/redintro.vqa:
+ Offset: 563861605
+ Length: 2269452
+ ^Content/ra/v2/movies/shipsink.vqa:
+ Offset: 567961011
+ Length: 3150030
+ ^Content/ra/v2/movies/shorbom1.vqa:
+ Offset: 571111041
+ Length: 4046650
+ ^Content/ra/v2/movies/shorbom2.vqa:
+ Offset: 575157691
+ Length: 2150364
+ ^Content/ra/v2/movies/shorbomb.vqa:
+ Offset: 577308055
+ Length: 6111616
+ ^Content/ra/v2/movies/snowbomb.vqa:
+ Offset: 583419671
+ Length: 2465762
+ ^Content/ra/v2/movies/soviet1.vqa:
+ Offset: 594906599
+ Length: 24112060
+ ^Content/ra/v2/movies/sovtstar.vqa:
+ Offset: 619018659
+ Length: 670794
+ ^Content/ra/v2/movies/spy.vqa:
+ Offset: 619689453
+ Length: 1646808
+ ^Content/ra/v2/movies/tanya1.vqa:
+ Offset: 621336261
+ Length: 13389684
+ ^Content/ra/v2/movies/tanya2.vqa:
+ Offset: 634725945
+ Length: 4103388
+ ^Content/ra/v2/movies/toofar.vqa:
+ Offset: 640625425
+ Length: 4244572
+ ^Content/ra/v2/movies/trinity.vqa:
+ Offset: 644869997
+ Length: 1669310
+ ^Content/ra/v2/movies/ally1.vqa:
+ Offset: 674421115
+ Length: 13536324
+ ^Content/ra/v2/movies/ally2.vqa:
+ Offset: 687957439
+ Length: 8014018
+ ^Content/ra/v2/movies/ally4.vqa:
+ Offset: 695971457
+ Length: 9441906
+ ^Content/ra/v2/movies/ally5.vqa:
+ Offset: 705413363
+ Length: 21900328
+ ^Content/ra/v2/movies/ally6.vqa:
+ Offset: 727313691
+ Length: 26454212
+ ^Content/ra/v2/movies/ally8.vqa:
+ Offset: 753767903
+ Length: 15401062
+ ^Content/ra/v2/movies/ally9.vqa:
+ Offset: 769168965
+ Length: 14901460
+ ^Content/ra/v2/movies/ally10.vqa:
+ Offset: 784070425
+ Length: 21506358
+ ^Content/ra/v2/movies/ally10b.vqa:
+ Offset: 805576783
+ Length: 2565152
+ ^Content/ra/v2/movies/ally11.vqa:
+ Offset: 808142713
+ Length: 13600398
+ ^Content/ra/v2/interior.mix:
+ Offset: 821743111
+ Length: 249490
+ ^Content/ra/v2/conquer.mix:
+ Offset: 840028549
+ Length: 2192279
+ ^Content/ra/v2/allies.mix:
+ Offset: 842220828
+ Length: 319181
+ ^Content/ra/v2/temperat.mix:
+ Offset: 842540009
+ Length: 1043672
+ ^Content/ra/v2/sounds.mix:
+ Offset: 843583681
+ Length: 1385637
+ ^Content/ra/v2/snow.mix:
+ Offset: 844969318
+ Length: 1035716
+ ^Content/ra/v2/scores.mix:
+ Offset: 846005034
+ Length: 67742203
+ ^Content/ra/v2/russian.mix:
+ Offset: 913747237
+ Length: 274732
+ ^Content/ra/v2/movies/double.vqa:
+ Offset: 915739478
+ Length: 1608508
+ ^Content/ra/v2/movies/dpthchrg.vqa:
+ Offset: 917347986
+ Length: 3048762
+ ^Content/ra/v2/movies/execute.vqa:
+ Offset: 920396748
+ Length: 1511212
+ ^Content/ra/v2/movies/flare.vqa:
+ Offset: 921907960
+ Length: 1731744
+ ^Content/ra/v2/movies/landing.vqa:
+ Offset: 923639704
+ Length: 2374106
+ ^Content/ra/v2/movies/mcvbrdge.vqa:
+ Offset: 926013810
+ Length: 2124412
+ ^Content/ra/v2/movies/mig.vqa:
+ Offset: 928138222
+ Length: 6745398
+ ^Content/ra/v2/movies/movingin.vqa:
+ Offset: 934883620
+ Length: 1185550
+ ^Content/ra/v2/movies/mtnkfact.vqa:
+ Offset: 936069170
+ Length: 3168076
+ ^Content/ra/v2/movies/nukestok.vqa:
+ Offset: 939237246
+ Length: 1877536
+ ^Content/ra/v2/movies/onthprwl.vqa:
+ Offset: 941114782
+ Length: 2648948
+ ^Content/ra/v2/movies/periscop.vqa:
+ Offset: 943763730
+ Length: 2099110
+ ^Content/ra/v2/movies/prolog.vqa:
+ Offset: 945862840
+ Length: 28658198
+ ^Content/ra/v2/movies/radrraid.vqa:
+ Offset: 974521038
+ Length: 1561740
+ ^Content/ra/v2/movies/redintro.vqa:
+ Offset: 976082778
+ Length: 2269452
+ ^Content/ra/v2/movies/search.vqa:
+ Offset: 978352230
+ Length: 2298940
+ ^Content/ra/v2/movies/sfrozen.vqa:
+ Offset: 980651170
+ Length: 1829954
+ ^Content/ra/v2/movies/sitduck.vqa:
+ Offset: 982481124
+ Length: 3650212
+ ^Content/ra/v2/movies/slntsrvc.vqa:
+ Offset: 986131336
+ Length: 1774986
+ ^Content/ra/v2/movies/snowbomb.vqa:
+ Offset: 987906322
+ Length: 2465762
+ ^Content/ra/v2/movies/snstrafe.vqa:
+ Offset: 990372084
+ Length: 2473362
+ ^Content/ra/v2/movies/sovbatl.vqa:
+ Offset: 992845446
+ Length: 3439876
+ ^Content/ra/v2/movies/sovcemet.vqa:
+ Offset: 996285322
+ Length: 3107928
+ ^Content/ra/v2/movies/sovfinal.vqa:
+ Offset: 999393250
+ Length: 35169890
+ ^Content/ra/v2/movies/soviet1.vqa:
+ Offset: 1034563140
+ Length: 24112060
+ ^Content/ra/v2/movies/soviet2.vqa:
+ Offset: 1058675200
+ Length: 9494814
+ ^Content/ra/v2/movies/soviet3.vqa:
+ Offset: 1068170014
+ Length: 17229910
+ ^Content/ra/v2/movies/soviet4.vqa:
+ Offset: 1085399924
+ Length: 7236290
+ ^Content/ra/v2/movies/soviet5.vqa:
+ Offset: 1092636214
+ Length: 18986154
+ ^Content/ra/v2/movies/soviet6.vqa:
+ Offset: 1111622368
+ Length: 6782016
+ ^Content/ra/v2/movies/soviet7.vqa:
+ Offset: 1118404384
+ Length: 5637552
+ ^Content/ra/v2/movies/soviet8.vqa:
+ Offset: 1124041936
+ Length: 28905880
+ ^Content/ra/v2/movies/soviet9.vqa:
+ Offset: 1152947816
+ Length: 31809450
+ ^Content/ra/v2/movies/soviet10.vqa:
+ Offset: 1184757266
+ Length: 10102944
+ ^Content/ra/v2/movies/soviet11.vqa:
+ Offset: 1194860210
+ Length: 16685840
+ ^Content/ra/v2/movies/soviet12.vqa:
+ Offset: 1211546050
+ Length: 11532038
+ ^Content/ra/v2/movies/soviet13.vqa:
+ Offset: 1223078088
+ Length: 15210482
+ ^Content/ra/v2/movies/soviet14.vqa:
+ Offset: 1238288570
+ Length: 24358232
+ ^Content/ra/v2/movies/sovmcv.vqa:
+ Offset: 1262646802
+ Length: 1292126
+ ^Content/ra/v2/movies/sovtstar.vqa:
+ Offset: 1263938928
+ Length: 670794
+ ^Content/ra/v2/movies/spotter.vqa:
+ Offset: 1264609722
+ Length: 1346422
+ ^Content/ra/v2/movies/strafe.vqa:
+ Offset: 1265956144
+ Length: 1226956
+ ^Content/ra/v2/movies/take_off.vqa:
+ Offset: 1267183100
+ Length: 1419370
+ ^Content/ra/v2/movies/tesla.vqa:
+ Offset: 1268602470
+ Length: 1796092
+ ^Content/ra/v2/movies/v2rocket.vqa:
+ Offset: 1270398562
+ Length: 1856524
+ ^Content/ra/v2/movies/aagun.vqa:
+ Offset: 1292529084
+ Length: 3295512
+ ^Content/ra/v2/movies/airfield.vqa:
+ Offset: 1295824596
+ Length: 2696058
+ ^Content/ra/v2/movies/ally1.vqa:
+ Offset: 1298520654
+ Length: 13536324
+ ^Content/ra/v2/movies/allymorf.vqa:
+ Offset: 1312056978
+ Length: 916964
+ ^Content/ra/v2/movies/averted.vqa:
+ Offset: 1312973942
+ Length: 1902556
+ ^Content/ra/v2/movies/beachead.vqa:
+ Offset: 1314876498
+ Length: 4891790
+ ^Content/ra/v2/movies/bmap.vqa:
+ Offset: 1319768288
+ Length: 2414312
+ ^Content/ra/v2/movies/bombrun.vqa:
+ Offset: 1322182600
+ Length: 5167450
+ ^Content/ra/v2/movies/countdwn.vqa:
+ Offset: 1327350050
+ Length: 2005906
+ ^Content/ra/v2/movies/cronfail.vqa:
+ Offset: 1329356707
+ Length: 1717214
+ ^Content/ra/v2/expand/chrotnk1.aud:
+ Offset: 843615985
+ Length: 22900
+ ^Content/ra/v2/expand/fixit1.aud:
+ Offset: 843860963
+ Length: 10707
+ ^Content/ra/v2/expand/jburn1.aud:
+ Offset: 844007001
+ Length: 23091
+ ^Content/ra/v2/expand/jchrge1.aud:
+ Offset: 844030092
+ Length: 14219
+ ^Content/ra/v2/expand/jcrisp1.aud:
+ Offset: 844044311
+ Length: 18211
+ ^Content/ra/v2/expand/jdance1.aud:
+ Offset: 844062522
+ Length: 14315
+ ^Content/ra/v2/expand/jjuice1.aud:
+ Offset: 844076837
+ Length: 9699
+ ^Content/ra/v2/expand/jjump1.aud:
+ Offset: 844086536
+ Length: 8219
+ ^Content/ra/v2/expand/jlight1.aud:
+ Offset: 844094755
+ Length: 9875
+ ^Content/ra/v2/expand/jpower1.aud:
+ Offset: 844104630
+ Length: 13571
+ ^Content/ra/v2/expand/jshock1.aud:
+ Offset: 844118201
+ Length: 14771
+ ^Content/ra/v2/expand/jyes1.aud:
+ Offset: 844132972
+ Length: 13795
+ ^Content/ra/v2/expand/madchrg2.aud:
+ Offset: 844262883
+ Length: 19782
+ ^Content/ra/v2/expand/madexplo.aud:
+ Offset: 844282665
+ Length: 26572
+ ^Content/ra/v2/expand/mboss1.aud:
+ Offset: 844314713
+ Length: 20147
+ ^Content/ra/v2/expand/mhear1.aud:
+ Offset: 844340048
+ Length: 6714
+ ^Content/ra/v2/expand/mhotdig1.aud:
+ Offset: 844346762
+ Length: 10674
+ ^Content/ra/v2/expand/mhowdy1.aud:
+ Offset: 844357436
+ Length: 6714
+ ^Content/ra/v2/expand/mhuh1.aud:
+ Offset: 844364150
+ Length: 4117
+ ^Content/ra/v2/expand/mlaff1.aud:
+ Offset: 844428954
+ Length: 24133
+ ^Content/ra/v2/expand/mrise1.aud:
+ Offset: 844466487
+ Length: 13523
+ ^Content/ra/v2/expand/mwrench1.aud:
+ Offset: 844480010
+ Length: 10780
+ ^Content/ra/v2/expand/myeehaw1.aud:
+ Offset: 844490790
+ Length: 18912
+ ^Content/ra/v2/expand/myes1.aud:
+ Offset: 844509702
+ Length: 9073
+ delete: ^Content/ra/v2/main.mix
\ No newline at end of file
diff --git a/mods/ura/installer/origin.yaml b/mods/ura/installer/origin.yaml
new file mode 100644
index 0000000..a9ff9f1
--- /dev/null
+++ b/mods/ura/installer/origin.yaml
@@ -0,0 +1,470 @@
+ra-origin: C&C The Ultimate Collection (Origin version, English)
+ Type: Install
+ RegistryPrefixes: HKEY_LOCAL_MACHINE\Software\, HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\
+ RegistryKey: EA Games\Command and Conquer Red Alert
+ RegistryValue: Install Dir
+ IDFiles:
+ RA95Launcher.exe: 22bf7a1f9f1c2498823e3216541e6012f291c2c0
+ REDALERT.MIX: 0e58f4b54f44f6cd29fecf8cf379d33cf2d4caef
+ Install:
+ copy: .
+ ^Content/ra/v2/expand/2nd_hand.aud: 2nd_hand.aud
+ ^Content/ra/v2/expand/araziod.aud: araziod.aud
+ ^Content/ra/v2/expand/await.aud: await.aud
+ ^Content/ra/v2/expand/backstab.aud: backstab.aud
+ ^Content/ra/v2/expand/bog.aud: bog.aud
+ ^Content/ra/v2/expand/chaos2.aud: chaos2.aud
+ ^Content/ra/v2/expand/float_v2.aud: float_v2.aud
+ ^Content/ra/v2/expand/gloom.aud: gloom.aud
+ ^Content/ra/v2/expand/grndwire.aud: grndwire.aud
+ ^Content/ra/v2/expand/rpt.aud: rpt.aud
+ ^Content/ra/v2/expand/search.aud: search.aud
+ ^Content/ra/v2/expand/shut_it.aud: shut_it.aud
+ ^Content/ra/v2/expand/traction.aud: traction.aud
+ ^Content/ra/v2/expand/twinmix1.aud: twinmix1.aud
+ ^Content/ra/v2/expand/under3.aud: under3.aud
+ ^Content/ra/v2/expand/vr2.aud: vr2.aud
+ ^Content/ra/v2/expand/wastelnd.aud: wastelnd.aud
+ ^Content/ra/v2/expand/expand2.mix: EXPAND2.MIX
+ ^Content/ra/v2/expand/hires1.mix: HIRES1.MIX
+ ^Content/ra/v2/expand/lores1.mix: LORES1.MIX
+ extract-raw: REDALERT.MIX
+ ^Content/ra/v2/hires.mix:
+ Offset: 650612
+ Length: 5817417
+ ^Content/ra/v2/local.mix:
+ Offset: 6468029
+ Length: 3829837
+ ^Content/ra/v2/lores.mix:
+ Offset: 10297866
+ Length: 754800
+ ^Content/ra/v2/speech.mix:
+ Offset: 23042864
+ Length: 2003464
+ extract-raw: MAIN.MIX
+ ^Content/ra/v2/movies/aagun.vqa:
+ Offset: 668669829
+ Length: 3295512
+ ^Content/ra/v2/movies/aftrmath.vqa:
+ Offset: 671965341
+ Length: 2455774
+ ^Content/ra/v2/movies/ally12.vqa:
+ Offset: 430652277
+ Length: 7719544
+ ^Content/ra/v2/movies/ally14.vqa:
+ Offset: 438371821
+ Length: 11659080
+ ^Content/ra/v2/movies/allyend.vqa:
+ Offset: 450030901
+ Length: 27285692
+ ^Content/ra/v2/movies/allymorf.vqa:
+ Offset: 477316593
+ Length: 916964
+ ^Content/ra/v2/movies/apcescpe.vqa:
+ Offset: 483950063
+ Length: 1627564
+ ^Content/ra/v2/movies/assess.vqa:
+ Offset: 485577627
+ Length: 2929218
+ ^Content/ra/v2/movies/battle.vqa:
+ Offset: 488506845
+ Length: 2881110
+ ^Content/ra/v2/movies/binoc.vqa:
+ Offset: 491387955
+ Length: 4045856
+ ^Content/ra/v2/movies/bmap.vqa:
+ Offset: 495433811
+ Length: 2411294
+ ^Content/ra/v2/movies/brdgtilt.vqa:
+ Offset: 497845105
+ Length: 1581318
+ ^Content/ra/v2/movies/cronfail.vqa:
+ Offset: 499426423
+ Length: 1717214
+ ^Content/ra/v2/movies/crontest.vqa:
+ Offset: 501143637
+ Length: 2036620
+ ^Content/ra/v2/movies/destroyr.vqa:
+ Offset: 503180257
+ Length: 2178828
+ ^Content/ra/v2/movies/dud.vqa:
+ Offset: 505359085
+ Length: 3110418
+ ^Content/ra/v2/movies/elevator.vqa:
+ Offset: 508469503
+ Length: 1741894
+ ^Content/ra/v2/movies/flare.vqa:
+ Offset: 511722609
+ Length: 1731744
+ ^Content/ra/v2/movies/frozen.vqa:
+ Offset: 513454353
+ Length: 1836994
+ ^Content/ra/v2/movies/grvestne.vqa:
+ Offset: 515291347
+ Length: 3155668
+ ^Content/ra/v2/movies/landing.vqa:
+ Offset: 518447015
+ Length: 2374106
+ ^Content/ra/v2/movies/masasslt.vqa:
+ Offset: 520821121
+ Length: 5354700
+ ^Content/ra/v2/movies/mcv.vqa:
+ Offset: 526175821
+ Length: 1296036
+ ^Content/ra/v2/movies/mcv_land.vqa:
+ Offset: 527471857
+ Length: 1424358
+ ^Content/ra/v2/movies/montpass.vqa:
+ Offset: 528896215
+ Length: 1701852
+ ^Content/ra/v2/movies/oildrum.vqa:
+ Offset: 530598067
+ Length: 2430792
+ ^Content/ra/v2/movies/overrun.vqa:
+ Offset: 533028859
+ Length: 2174548
+ ^Content/ra/v2/movies/prolog.vqa:
+ Offset: 535203407
+ Length: 28658198
+ ^Content/ra/v2/movies/redintro.vqa:
+ Offset: 563861605
+ Length: 2269452
+ ^Content/ra/v2/movies/shipsink.vqa:
+ Offset: 567961011
+ Length: 3150030
+ ^Content/ra/v2/movies/shorbom1.vqa:
+ Offset: 571111041
+ Length: 4046650
+ ^Content/ra/v2/movies/shorbom2.vqa:
+ Offset: 575157691
+ Length: 2150364
+ ^Content/ra/v2/movies/shorbomb.vqa:
+ Offset: 577308055
+ Length: 6111616
+ ^Content/ra/v2/movies/snowbomb.vqa:
+ Offset: 583419671
+ Length: 2465762
+ ^Content/ra/v2/movies/soviet1.vqa:
+ Offset: 594906599
+ Length: 24112060
+ ^Content/ra/v2/movies/sovtstar.vqa:
+ Offset: 619018659
+ Length: 670794
+ ^Content/ra/v2/movies/spy.vqa:
+ Offset: 619689453
+ Length: 1646808
+ ^Content/ra/v2/movies/tanya1.vqa:
+ Offset: 621336261
+ Length: 13389684
+ ^Content/ra/v2/movies/tanya2.vqa:
+ Offset: 634725945
+ Length: 4103388
+ ^Content/ra/v2/movies/toofar.vqa:
+ Offset: 640625425
+ Length: 4244572
+ ^Content/ra/v2/movies/trinity.vqa:
+ Offset: 644869997
+ Length: 1669310
+ ^Content/ra/v2/movies/ally1.vqa:
+ Offset: 674421115
+ Length: 13536324
+ ^Content/ra/v2/movies/ally2.vqa:
+ Offset: 687957439
+ Length: 8014018
+ ^Content/ra/v2/movies/ally4.vqa:
+ Offset: 695971457
+ Length: 9441906
+ ^Content/ra/v2/movies/ally5.vqa:
+ Offset: 705413363
+ Length: 21900328
+ ^Content/ra/v2/movies/ally6.vqa:
+ Offset: 727313691
+ Length: 26454212
+ ^Content/ra/v2/movies/ally8.vqa:
+ Offset: 753767903
+ Length: 15401062
+ ^Content/ra/v2/movies/ally9.vqa:
+ Offset: 769168965
+ Length: 14901460
+ ^Content/ra/v2/movies/ally10.vqa:
+ Offset: 784070425
+ Length: 21506358
+ ^Content/ra/v2/movies/ally10b.vqa:
+ Offset: 805576783
+ Length: 2565152
+ ^Content/ra/v2/movies/ally11.vqa:
+ Offset: 808142713
+ Length: 13600398
+ ^Content/ra/v2/interior.mix:
+ Offset: 821743111
+ Length: 249490
+ ^Content/ra/v2/conquer.mix:
+ Offset: 840028549
+ Length: 2192279
+ ^Content/ra/v2/allies.mix:
+ Offset: 842220828
+ Length: 319181
+ ^Content/ra/v2/temperat.mix:
+ Offset: 842540009
+ Length: 1043672
+ ^Content/ra/v2/sounds.mix:
+ Offset: 843583681
+ Length: 1385637
+ ^Content/ra/v2/snow.mix:
+ Offset: 844969318
+ Length: 1035716
+ ^Content/ra/v2/scores.mix:
+ Offset: 846005034
+ Length: 67742203
+ ^Content/ra/v2/russian.mix:
+ Offset: 913747237
+ Length: 274732
+ ^Content/ra/v2/movies/double.vqa:
+ Offset: 915739478
+ Length: 1608508
+ ^Content/ra/v2/movies/dpthchrg.vqa:
+ Offset: 917347986
+ Length: 3048762
+ ^Content/ra/v2/movies/execute.vqa:
+ Offset: 920396748
+ Length: 1511212
+ ^Content/ra/v2/movies/flare.vqa:
+ Offset: 921907960
+ Length: 1731744
+ ^Content/ra/v2/movies/landing.vqa:
+ Offset: 923639704
+ Length: 2374106
+ ^Content/ra/v2/movies/mcvbrdge.vqa:
+ Offset: 926013810
+ Length: 2124412
+ ^Content/ra/v2/movies/mig.vqa:
+ Offset: 928138222
+ Length: 6745398
+ ^Content/ra/v2/movies/movingin.vqa:
+ Offset: 934883620
+ Length: 1185550
+ ^Content/ra/v2/movies/mtnkfact.vqa:
+ Offset: 936069170
+ Length: 3168076
+ ^Content/ra/v2/movies/nukestok.vqa:
+ Offset: 939237246
+ Length: 1877536
+ ^Content/ra/v2/movies/onthprwl.vqa:
+ Offset: 941114782
+ Length: 2648948
+ ^Content/ra/v2/movies/periscop.vqa:
+ Offset: 943763730
+ Length: 2099110
+ ^Content/ra/v2/movies/prolog.vqa:
+ Offset: 945862840
+ Length: 28658198
+ ^Content/ra/v2/movies/radrraid.vqa:
+ Offset: 974521038
+ Length: 1561740
+ ^Content/ra/v2/movies/redintro.vqa:
+ Offset: 976082778
+ Length: 2269452
+ ^Content/ra/v2/movies/search.vqa:
+ Offset: 978352230
+ Length: 2298940
+ ^Content/ra/v2/movies/sfrozen.vqa:
+ Offset: 980651170
+ Length: 1829954
+ ^Content/ra/v2/movies/sitduck.vqa:
+ Offset: 982481124
+ Length: 3650212
+ ^Content/ra/v2/movies/slntsrvc.vqa:
+ Offset: 986131336
+ Length: 1774986
+ ^Content/ra/v2/movies/snowbomb.vqa:
+ Offset: 987906322
+ Length: 2465762
+ ^Content/ra/v2/movies/snstrafe.vqa:
+ Offset: 990372084
+ Length: 2473362
+ ^Content/ra/v2/movies/sovbatl.vqa:
+ Offset: 992845446
+ Length: 3439876
+ ^Content/ra/v2/movies/sovcemet.vqa:
+ Offset: 996285322
+ Length: 3107928
+ ^Content/ra/v2/movies/sovfinal.vqa:
+ Offset: 999393250
+ Length: 35169890
+ ^Content/ra/v2/movies/soviet1.vqa:
+ Offset: 1034563140
+ Length: 24112060
+ ^Content/ra/v2/movies/soviet2.vqa:
+ Offset: 1058675200
+ Length: 9494814
+ ^Content/ra/v2/movies/soviet3.vqa:
+ Offset: 1068170014
+ Length: 17229910
+ ^Content/ra/v2/movies/soviet4.vqa:
+ Offset: 1085399924
+ Length: 7236290
+ ^Content/ra/v2/movies/soviet5.vqa:
+ Offset: 1092636214
+ Length: 18986154
+ ^Content/ra/v2/movies/soviet6.vqa:
+ Offset: 1111622368
+ Length: 6782016
+ ^Content/ra/v2/movies/soviet7.vqa:
+ Offset: 1118404384
+ Length: 5637552
+ ^Content/ra/v2/movies/soviet8.vqa:
+ Offset: 1124041936
+ Length: 28905880
+ ^Content/ra/v2/movies/soviet9.vqa:
+ Offset: 1152947816
+ Length: 31809450
+ ^Content/ra/v2/movies/soviet10.vqa:
+ Offset: 1184757266
+ Length: 10102944
+ ^Content/ra/v2/movies/soviet11.vqa:
+ Offset: 1194860210
+ Length: 16685840
+ ^Content/ra/v2/movies/soviet12.vqa:
+ Offset: 1211546050
+ Length: 11532038
+ ^Content/ra/v2/movies/soviet13.vqa:
+ Offset: 1223078088
+ Length: 15210482
+ ^Content/ra/v2/movies/soviet14.vqa:
+ Offset: 1238288570
+ Length: 24358232
+ ^Content/ra/v2/movies/sovmcv.vqa:
+ Offset: 1262646802
+ Length: 1292126
+ ^Content/ra/v2/movies/sovtstar.vqa:
+ Offset: 1263938928
+ Length: 670794
+ ^Content/ra/v2/movies/spotter.vqa:
+ Offset: 1264609722
+ Length: 1346422
+ ^Content/ra/v2/movies/strafe.vqa:
+ Offset: 1265956144
+ Length: 1226956
+ ^Content/ra/v2/movies/take_off.vqa:
+ Offset: 1267183100
+ Length: 1419370
+ ^Content/ra/v2/movies/tesla.vqa:
+ Offset: 1268602470
+ Length: 1796092
+ ^Content/ra/v2/movies/v2rocket.vqa:
+ Offset: 1270398562
+ Length: 1856524
+ ^Content/ra/v2/movies/aagun.vqa:
+ Offset: 1292529084
+ Length: 3295512
+ ^Content/ra/v2/movies/airfield.vqa:
+ Offset: 1295824596
+ Length: 2696058
+ ^Content/ra/v2/movies/ally1.vqa:
+ Offset: 1298520654
+ Length: 13536324
+ ^Content/ra/v2/movies/allymorf.vqa:
+ Offset: 1312056978
+ Length: 916964
+ ^Content/ra/v2/movies/averted.vqa:
+ Offset: 1312973942
+ Length: 1902556
+ ^Content/ra/v2/movies/beachead.vqa:
+ Offset: 1314876498
+ Length: 4891790
+ ^Content/ra/v2/movies/bmap.vqa:
+ Offset: 1319768288
+ Length: 2414312
+ ^Content/ra/v2/movies/bombrun.vqa:
+ Offset: 1322182600
+ Length: 5167450
+ ^Content/ra/v2/movies/countdwn.vqa:
+ Offset: 1327350050
+ Length: 2005906
+ ^Content/ra/v2/movies/cronfail.vqa:
+ Offset: 1329356707
+ Length: 1717214
+ ^Content/ra/v2/expand/chrotnk1.aud:
+ Offset: 843615985
+ Length: 22900
+ ^Content/ra/v2/expand/fixit1.aud:
+ Offset: 843860963
+ Length: 10707
+ ^Content/ra/v2/expand/jburn1.aud:
+ Offset: 844007001
+ Length: 23091
+ ^Content/ra/v2/expand/jchrge1.aud:
+ Offset: 844030092
+ Length: 14219
+ ^Content/ra/v2/expand/jcrisp1.aud:
+ Offset: 844044311
+ Length: 18211
+ ^Content/ra/v2/expand/jdance1.aud:
+ Offset: 844062522
+ Length: 14315
+ ^Content/ra/v2/expand/jjuice1.aud:
+ Offset: 844076837
+ Length: 9699
+ ^Content/ra/v2/expand/jjump1.aud:
+ Offset: 844086536
+ Length: 8219
+ ^Content/ra/v2/expand/jlight1.aud:
+ Offset: 844094755
+ Length: 9875
+ ^Content/ra/v2/expand/jpower1.aud:
+ Offset: 844104630
+ Length: 13571
+ ^Content/ra/v2/expand/jshock1.aud:
+ Offset: 844118201
+ Length: 14771
+ ^Content/ra/v2/expand/jyes1.aud:
+ Offset: 844132972
+ Length: 13795
+ ^Content/ra/v2/expand/madchrg2.aud:
+ Offset: 844262883
+ Length: 19782
+ ^Content/ra/v2/expand/madexplo.aud:
+ Offset: 844282665
+ Length: 26572
+ ^Content/ra/v2/expand/mboss1.aud:
+ Offset: 844314713
+ Length: 20147
+ ^Content/ra/v2/expand/mhear1.aud:
+ Offset: 844340048
+ Length: 6714
+ ^Content/ra/v2/expand/mhotdig1.aud:
+ Offset: 844346762
+ Length: 10674
+ ^Content/ra/v2/expand/mhowdy1.aud:
+ Offset: 844357436
+ Length: 6714
+ ^Content/ra/v2/expand/mhuh1.aud:
+ Offset: 844364150
+ Length: 4117
+ ^Content/ra/v2/expand/mlaff1.aud:
+ Offset: 844428954
+ Length: 24133
+ ^Content/ra/v2/expand/mrise1.aud:
+ Offset: 844466487
+ Length: 13523
+ ^Content/ra/v2/expand/mwrench1.aud:
+ Offset: 844480010
+ Length: 10780
+ ^Content/ra/v2/expand/myeehaw1.aud:
+ Offset: 844490790
+ Length: 18912
+ ^Content/ra/v2/expand/myes1.aud:
+ Offset: 844509702
+ Length: 9073
+
+cnc-origin: Command & Conquer (Origin version, English)
+ Type: Install
+ RegistryPrefixes: HKEY_LOCAL_MACHINE\Software\, HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\
+ RegistryKey: EA Games\CNC and The Covert Operations
+ RegistryValue: Install Dir
+ IDFiles:
+ CNC95Launcher.exe: 1d711adf09ac08738b2599b3092a1b448169b32a
+ CONQUER.MIX: 833e02a09aae694659eb312d3838367f681d1b30
+ Install:
+ copy: .
+ ^Content/ra/v2/cnc/desert.mix: DESERT.MIX
\ No newline at end of file
diff --git a/mods/ura/installer/soviet95.yaml b/mods/ura/installer/soviet95.yaml
new file mode 100644
index 0000000..5d4182b
--- /dev/null
+++ b/mods/ura/installer/soviet95.yaml
@@ -0,0 +1,417 @@
+soviet: Red Alert 95 (Soviet Disc, English)
+ IDFiles:
+ MAIN.MIX: 9d108f18560716b684ab8b1da42cc7f3d1b52519
+ Length: 4096
+ INSTALL/REDALERT.MIX: 0e58f4b54f44f6cd29fecf8cf379d33cf2d4caef
+ Install:
+ extract-raw: INSTALL/REDALERT.MIX
+ ^Content/ra/v2/hires.mix:
+ Offset: 650612
+ Length: 5817417
+ ^Content/ra/v2/local.mix:
+ Offset: 6468029
+ Length: 3829837
+ ^Content/ra/v2/lores.mix:
+ Offset: 10297866
+ Length: 754800
+ ^Content/ra/v2/speech.mix:
+ Offset: 23042864
+ Length: 2003464
+ extract-raw: MAIN.MIX
+ ^Content/ra/v2/conquer.mix:
+ Offset: 236
+ Length: 2177047
+ ^Content/ra/v2/interior.mix:
+ Offset: 17172192
+ Length: 247425
+ ^Content/ra/v2/movies/aagun.vqa:
+ Offset: 37694379
+ Length: 3295512
+ ^Content/ra/v2/movies/cronfail.vqa:
+ Offset: 40989891
+ Length: 1717214
+ ^Content/ra/v2/movies/airfield.vqa:
+ Offset: 42707105
+ Length: 2696058
+ ^Content/ra/v2/movies/ally1.vqa:
+ Offset: 45403163
+ Length: 13536324
+ ^Content/ra/v2/movies/allymorf.vqa:
+ Offset: 58939487
+ Length: 916964
+ ^Content/ra/v2/movies/averted.vqa:
+ Offset: 59856451
+ Length: 1902556
+ ^Content/ra/v2/movies/beachead.vqa:
+ Offset: 61759007
+ Length: 4891790
+ ^Content/ra/v2/movies/bmap.vqa:
+ Offset: 66650797
+ Length: 2414312
+ ^Content/ra/v2/movies/bombrun.vqa:
+ Offset: 69065109
+ Length: 5167450
+ ^Content/ra/v2/movies/countdwn.vqa:
+ Offset: 74232559
+ Length: 2005906
+ ^Content/ra/v2/movies/double.vqa:
+ Offset: 76238465
+ Length: 1608508
+ ^Content/ra/v2/movies/dpthchrg.vqa:
+ Offset: 77846973
+ Length: 3048762
+ ^Content/ra/v2/movies/execute.vqa:
+ Offset: 80895735
+ Length: 1511212
+ ^Content/ra/v2/movies/flare.vqa:
+ Offset: 82406947
+ Length: 1731744
+ ^Content/ra/v2/movies/landing.vqa:
+ Offset: 84138691
+ Length: 2374106
+ ^Content/ra/v2/movies/mcvbrdge.vqa:
+ Offset: 86512797
+ Length: 2124412
+ ^Content/ra/v2/movies/mig.vqa:
+ Offset: 88637209
+ Length: 6745398
+ ^Content/ra/v2/movies/movingin.vqa:
+ Offset: 95382607
+ Length: 1185550
+ ^Content/ra/v2/movies/mtnkfact.vqa:
+ Offset: 96568157
+ Length: 3168076
+ ^Content/ra/v2/movies/nukestok.vqa:
+ Offset: 99736233
+ Length: 1877536
+ ^Content/ra/v2/movies/onthprwl.vqa:
+ Offset: 101613769
+ Length: 2648948
+ ^Content/ra/v2/movies/periscop.vqa:
+ Offset: 104262717
+ Length: 2099110
+ ^Content/ra/v2/movies/prolog.vqa:
+ Offset: 106361827
+ Length: 28658198
+ ^Content/ra/v2/movies/radrraid.vqa:
+ Offset: 135020025
+ Length: 1561740
+ ^Content/ra/v2/movies/redintro.vqa:
+ Offset: 136581765
+ Length: 2269452
+ ^Content/ra/v2/movies/search.vqa:
+ Offset: 138851217
+ Length: 2298940
+ ^Content/ra/v2/movies/sfrozen.vqa:
+ Offset: 141150157
+ Length: 1829954
+ ^Content/ra/v2/movies/sitduck.vqa:
+ Offset: 142980111
+ Length: 3650212
+ ^Content/ra/v2/movies/slntsrvc.vqa:
+ Offset: 146630323
+ Length: 1774986
+ ^Content/ra/v2/movies/snowbomb.vqa:
+ Offset: 148405309
+ Length: 2465762
+ ^Content/ra/v2/movies/snstrafe.vqa:
+ Offset: 150871071
+ Length: 2473362
+ ^Content/ra/v2/movies/sovbatl.vqa:
+ Offset: 153344433
+ Length: 3439876
+ ^Content/ra/v2/movies/sovcemet.vqa:
+ Offset: 156784309
+ Length: 3107928
+ ^Content/ra/v2/movies/sovfinal.vqa:
+ Offset: 159892237
+ Length: 35169890
+ ^Content/ra/v2/movies/soviet1.vqa:
+ Offset: 195062127
+ Length: 24112060
+ ^Content/ra/v2/movies/soviet10.vqa:
+ Offset: 219174187
+ Length: 10102944
+ ^Content/ra/v2/movies/soviet11.vqa:
+ Offset: 229277131
+ Length: 16685840
+ ^Content/ra/v2/movies/soviet12.vqa:
+ Offset: 245962971
+ Length: 11532038
+ ^Content/ra/v2/movies/soviet13.vqa:
+ Offset: 257495009
+ Length: 15210482
+ ^Content/ra/v2/movies/soviet14.vqa:
+ Offset: 272705491
+ Length: 24358232
+ ^Content/ra/v2/movies/soviet2.vqa:
+ Offset: 297063723
+ Length: 9494814
+ ^Content/ra/v2/movies/soviet3.vqa:
+ Offset: 306558537
+ Length: 17229910
+ ^Content/ra/v2/movies/soviet4.vqa:
+ Offset: 323788447
+ Length: 7236290
+ ^Content/ra/v2/movies/soviet5.vqa:
+ Offset: 331024737
+ Length: 18986154
+ ^Content/ra/v2/movies/soviet6.vqa:
+ Offset: 350010891
+ Length: 6782016
+ ^Content/ra/v2/movies/soviet7.vqa:
+ Offset: 356792907
+ Length: 5637552
+ ^Content/ra/v2/movies/soviet8.vqa:
+ Offset: 362430459
+ Length: 28905880
+ ^Content/ra/v2/movies/soviet9.vqa:
+ Offset: 391336339
+ Length: 31809450
+ ^Content/ra/v2/movies/sovmcv.vqa:
+ Offset: 423145789
+ Length: 1292126
+ ^Content/ra/v2/movies/sovtstar.vqa:
+ Offset: 424437915
+ Length: 670794
+ ^Content/ra/v2/movies/spotter.vqa:
+ Offset: 425108709
+ Length: 1346422
+ ^Content/ra/v2/movies/strafe.vqa:
+ Offset: 426455131
+ Length: 1226956
+ ^Content/ra/v2/movies/take_off.vqa:
+ Offset: 427682087
+ Length: 1419370
+ ^Content/ra/v2/movies/tesla.vqa:
+ Offset: 429101457
+ Length: 1796092
+ ^Content/ra/v2/movies/v2rocket.vqa:
+ Offset: 430897549
+ Length: 1856524
+ ^Content/ra/v2/scores.mix:
+ Offset: 432754073
+ Length: 64171360
+ ^Content/ra/v2/snow.mix:
+ Offset: 496925433
+ Length: 1030861
+ ^Content/ra/v2/russian.mix:
+ Offset: 497956294
+ Length: 266077
+ ^Content/ra/v2/allies.mix:
+ Offset: 498222371
+ Length: 309406
+ ^Content/ra/v2/sounds.mix:
+ Offset: 498531777
+ Length: 1006778
+ ^Content/ra/v2/temperat.mix:
+ Offset: 499538555
+ Length: 1038859
+soviet-linux: Red Alert 95 (Soviet Disc, English)
+ IDFiles:
+ automenu.apm: bb61132a492bfb37069a0139f95671da3655d916
+ install/redalert.mix: 0e58f4b54f44f6cd29fecf8cf379d33cf2d4caef
+ Install:
+ extract-raw: install/redalert.mix
+ ^Content/ra/v2/hires.mix:
+ Offset: 650612
+ Length: 5817417
+ ^Content/ra/v2/local.mix:
+ Offset: 6468029
+ Length: 3829837
+ ^Content/ra/v2/lores.mix:
+ Offset: 10297866
+ Length: 754800
+ ^Content/ra/v2/speech.mix:
+ Offset: 23042864
+ Length: 2003464
+ extract-raw: main.mix
+ ^Content/ra/v2/conquer.mix:
+ Offset: 236
+ Length: 2177047
+ ^Content/ra/v2/interior.mix:
+ Offset: 17172192
+ Length: 247425
+ ^Content/ra/v2/movies/aagun.vqa:
+ Offset: 37694379
+ Length: 3295512
+ ^Content/ra/v2/movies/cronfail.vqa:
+ Offset: 40989891
+ Length: 1717214
+ ^Content/ra/v2/movies/airfield.vqa:
+ Offset: 42707105
+ Length: 2696058
+ ^Content/ra/v2/movies/ally1.vqa:
+ Offset: 45403163
+ Length: 13536324
+ ^Content/ra/v2/movies/allymorf.vqa:
+ Offset: 58939487
+ Length: 916964
+ ^Content/ra/v2/movies/averted.vqa:
+ Offset: 59856451
+ Length: 1902556
+ ^Content/ra/v2/movies/beachead.vqa:
+ Offset: 61759007
+ Length: 4891790
+ ^Content/ra/v2/movies/bmap.vqa:
+ Offset: 66650797
+ Length: 2414312
+ ^Content/ra/v2/movies/bombrun.vqa:
+ Offset: 69065109
+ Length: 5167450
+ ^Content/ra/v2/movies/countdwn.vqa:
+ Offset: 74232559
+ Length: 2005906
+ ^Content/ra/v2/movies/double.vqa:
+ Offset: 76238465
+ Length: 1608508
+ ^Content/ra/v2/movies/dpthchrg.vqa:
+ Offset: 77846973
+ Length: 3048762
+ ^Content/ra/v2/movies/execute.vqa:
+ Offset: 80895735
+ Length: 1511212
+ ^Content/ra/v2/movies/flare.vqa:
+ Offset: 82406947
+ Length: 1731744
+ ^Content/ra/v2/movies/landing.vqa:
+ Offset: 84138691
+ Length: 2374106
+ ^Content/ra/v2/movies/mcvbrdge.vqa:
+ Offset: 86512797
+ Length: 2124412
+ ^Content/ra/v2/movies/mig.vqa:
+ Offset: 88637209
+ Length: 6745398
+ ^Content/ra/v2/movies/movingin.vqa:
+ Offset: 95382607
+ Length: 1185550
+ ^Content/ra/v2/movies/mtnkfact.vqa:
+ Offset: 96568157
+ Length: 3168076
+ ^Content/ra/v2/movies/nukestok.vqa:
+ Offset: 99736233
+ Length: 1877536
+ ^Content/ra/v2/movies/onthprwl.vqa:
+ Offset: 101613769
+ Length: 2648948
+ ^Content/ra/v2/movies/periscop.vqa:
+ Offset: 104262717
+ Length: 2099110
+ ^Content/ra/v2/movies/prolog.vqa:
+ Offset: 106361827
+ Length: 28658198
+ ^Content/ra/v2/movies/radrraid.vqa:
+ Offset: 135020025
+ Length: 1561740
+ ^Content/ra/v2/movies/redintro.vqa:
+ Offset: 136581765
+ Length: 2269452
+ ^Content/ra/v2/movies/search.vqa:
+ Offset: 138851217
+ Length: 2298940
+ ^Content/ra/v2/movies/sfrozen.vqa:
+ Offset: 141150157
+ Length: 1829954
+ ^Content/ra/v2/movies/sitduck.vqa:
+ Offset: 142980111
+ Length: 3650212
+ ^Content/ra/v2/movies/slntsrvc.vqa:
+ Offset: 146630323
+ Length: 1774986
+ ^Content/ra/v2/movies/snowbomb.vqa:
+ Offset: 148405309
+ Length: 2465762
+ ^Content/ra/v2/movies/snstrafe.vqa:
+ Offset: 150871071
+ Length: 2473362
+ ^Content/ra/v2/movies/sovbatl.vqa:
+ Offset: 153344433
+ Length: 3439876
+ ^Content/ra/v2/movies/sovcemet.vqa:
+ Offset: 156784309
+ Length: 3107928
+ ^Content/ra/v2/movies/sovfinal.vqa:
+ Offset: 159892237
+ Length: 35169890
+ ^Content/ra/v2/movies/soviet1.vqa:
+ Offset: 195062127
+ Length: 24112060
+ ^Content/ra/v2/movies/soviet10.vqa:
+ Offset: 219174187
+ Length: 10102944
+ ^Content/ra/v2/movies/soviet11.vqa:
+ Offset: 229277131
+ Length: 16685840
+ ^Content/ra/v2/movies/soviet12.vqa:
+ Offset: 245962971
+ Length: 11532038
+ ^Content/ra/v2/movies/soviet13.vqa:
+ Offset: 257495009
+ Length: 15210482
+ ^Content/ra/v2/movies/soviet14.vqa:
+ Offset: 272705491
+ Length: 24358232
+ ^Content/ra/v2/movies/soviet2.vqa:
+ Offset: 297063723
+ Length: 9494814
+ ^Content/ra/v2/movies/soviet3.vqa:
+ Offset: 306558537
+ Length: 17229910
+ ^Content/ra/v2/movies/soviet4.vqa:
+ Offset: 323788447
+ Length: 7236290
+ ^Content/ra/v2/movies/soviet5.vqa:
+ Offset: 331024737
+ Length: 18986154
+ ^Content/ra/v2/movies/soviet6.vqa:
+ Offset: 350010891
+ Length: 6782016
+ ^Content/ra/v2/movies/soviet7.vqa:
+ Offset: 356792907
+ Length: 5637552
+ ^Content/ra/v2/movies/soviet8.vqa:
+ Offset: 362430459
+ Length: 28905880
+ ^Content/ra/v2/movies/soviet9.vqa:
+ Offset: 391336339
+ Length: 31809450
+ ^Content/ra/v2/movies/sovmcv.vqa:
+ Offset: 423145789
+ Length: 1292126
+ ^Content/ra/v2/movies/sovtstar.vqa:
+ Offset: 424437915
+ Length: 670794
+ ^Content/ra/v2/movies/spotter.vqa:
+ Offset: 425108709
+ Length: 1346422
+ ^Content/ra/v2/movies/strafe.vqa:
+ Offset: 426455131
+ Length: 1226956
+ ^Content/ra/v2/movies/take_off.vqa:
+ Offset: 427682087
+ Length: 1419370
+ ^Content/ra/v2/movies/tesla.vqa:
+ Offset: 429101457
+ Length: 1796092
+ ^Content/ra/v2/movies/v2rocket.vqa:
+ Offset: 430897549
+ Length: 1856524
+ ^Content/ra/v2/scores.mix:
+ Offset: 432754073
+ Length: 64171360
+ ^Content/ra/v2/snow.mix:
+ Offset: 496925433
+ Length: 1030861
+ ^Content/ra/v2/russian.mix:
+ Offset: 497956294
+ Length: 266077
+ ^Content/ra/v2/allies.mix:
+ Offset: 498222371
+ Length: 309406
+ ^Content/ra/v2/sounds.mix:
+ Offset: 498531777
+ Length: 1006778
+ ^Content/ra/v2/temperat.mix:
+ Offset: 499538555
+ Length: 1038859
\ No newline at end of file
diff --git a/mods/ura/languages/english.yaml b/mods/ura/languages/english.yaml
new file mode 100644
index 0000000..7dee16a
--- /dev/null
+++ b/mods/ura/languages/english.yaml
@@ -0,0 +1,2 @@
+english:
+ english: English
diff --git a/mods/ura/maps/Siberian-Pass.oramap b/mods/ura/maps/Siberian-Pass.oramap
new file mode 100644
index 0000000..dcf1e3a
Binary files /dev/null and b/mods/ura/maps/Siberian-Pass.oramap differ
diff --git a/mods/ura/maps/a-nuclear-winter/map.bin b/mods/ura/maps/a-nuclear-winter/map.bin
new file mode 100644
index 0000000..9f27601
Binary files /dev/null and b/mods/ura/maps/a-nuclear-winter/map.bin differ
diff --git a/mods/ura/maps/a-nuclear-winter/map.png b/mods/ura/maps/a-nuclear-winter/map.png
new file mode 100644
index 0000000..f6c77c9
Binary files /dev/null and b/mods/ura/maps/a-nuclear-winter/map.png differ
diff --git a/mods/ura/maps/a-nuclear-winter/map.yaml b/mods/ura/maps/a-nuclear-winter/map.yaml
new file mode 100644
index 0000000..e572ead
--- /dev/null
+++ b/mods/ura/maps/a-nuclear-winter/map.yaml
@@ -0,0 +1,2391 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: A Nuclear Winter
+
+Author: Lucian
+
+Tileset: SNOW
+
+MapSize: 102,72
+
+Bounds: 1,1,100,70
+
+Visibility: Lobby
+
+Categories: Conquest
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: england
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Faction: england
+ Enemies: Multi0, Multi1
+ PlayerReference@Multi0:
+ Name: Multi0
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi1:
+ Name: Multi1
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+
+Actors:
+ Actor210: v04
+ Owner: Neutral
+ Location: 47,14
+ Actor221: wood
+ Owner: Neutral
+ Location: 52,15
+ Actor239: c3
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 47,16
+ Actor240: c3
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 52,16
+ Actor241: v06
+ Owner: Neutral
+ Location: 53,16
+ Actor242: wood
+ Owner: Neutral
+ Location: 55,16
+ Actor263: wood
+ Owner: Neutral
+ Location: 53,19
+ Actor264: wood
+ Owner: Neutral
+ Location: 54,19
+ Actor269: wood
+ Owner: Neutral
+ Location: 53,20
+ Actor279: brl3
+ Owner: Neutral
+ Location: 47,21
+ Actor281: barl
+ Owner: Neutral
+ Location: 48,21
+ Actor282: v07
+ Owner: Neutral
+ Location: 51,21
+ Actor283: wood
+ Owner: Neutral
+ Location: 53,21
+ Actor289: barl
+ Owner: Neutral
+ Location: 47,22
+ Actor296: t08
+ Owner: Neutral
+ Location: 39,23
+ Actor297: t17
+ Owner: Neutral
+ Location: 40,22
+ Actor298: t05
+ Owner: Neutral
+ Location: 41,22
+ Actor299: tc01
+ Owner: Neutral
+ Location: 42,22
+ Actor300: t11
+ Owner: Neutral
+ Location: 43,22
+ Actor301: t05
+ Owner: Neutral
+ Location: 44,22
+ Actor302: t03
+ Owner: Neutral
+ Location: 44,22
+ Actor303: t13
+ Owner: Neutral
+ Location: 44,22
+ Actor304: t06
+ Owner: Neutral
+ Location: 45,22
+ Actor305: t17
+ Owner: Neutral
+ Location: 46,22
+ Actor307: v10
+ Owner: Neutral
+ Location: 49,23
+ Actor317: t08
+ Owner: Neutral
+ Location: 37,24
+ Actor318: t05
+ Owner: Neutral
+ Location: 38,23
+ Actor319: t01
+ Owner: Neutral
+ Location: 39,23
+ Actor320: t06
+ Owner: Neutral
+ Location: 39,23
+ Actor321: t07
+ Owner: Neutral
+ Location: 40,23
+ Actor322: t08.husk
+ Owner: Neutral
+ Location: 41,24
+ Actor323: t03
+ Owner: Neutral
+ Location: 41,23
+ Actor324: t10
+ Owner: Neutral
+ Location: 41,23
+ Actor325: tc02
+ Owner: Neutral
+ Location: 41,24
+ Actor326: t06
+ Owner: Neutral
+ Location: 42,23
+ Actor327: t06
+ Owner: Neutral
+ Location: 43,23
+ Actor328: tc01
+ Owner: Neutral
+ Location: 44,23
+ Actor329: tc01
+ Owner: Neutral
+ Location: 46,23
+ Actor330: c3
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 49,24
+ Actor341: t08
+ Owner: Neutral
+ Location: 35,25
+ Actor342: t17
+ Owner: Neutral
+ Location: 36,24
+ Actor343: t06
+ Owner: Neutral
+ Location: 37,24
+ Actor344: t03
+ Owner: Neutral
+ Location: 38,24
+ Actor346: t08.husk
+ Owner: Neutral
+ Location: 40,25
+ Actor347: t03
+ Owner: Neutral
+ Location: 40,24
+ Actor348: t12
+ Owner: Neutral
+ Location: 43,24
+ Actor349: t17.husk
+ Owner: Neutral
+ Location: 77,24
+ Actor350: tc02.husk
+ Owner: Neutral
+ Location: 77,25
+ Actor351: t16.husk
+ Owner: Neutral
+ Location: 78,24
+ Actor364: t08
+ Owner: Neutral
+ Location: 34,26
+ Actor365: t15
+ Owner: Neutral
+ Location: 34,25
+ Actor366: t08
+ Owner: Neutral
+ Location: 35,26
+ Actor367: t03
+ Owner: Neutral
+ Location: 35,25
+ Actor368: tc02
+ Owner: Neutral
+ Location: 35,26
+ Actor369: t11
+ Owner: Neutral
+ Location: 36,25
+ Actor370: t17
+ Owner: Neutral
+ Location: 37,25
+ Actor371: tc03
+ Owner: Neutral
+ Location: 38,26
+ Actor372: t06
+ Owner: Neutral
+ Location: 38,25
+ Actor373: t06
+ Owner: Neutral
+ Location: 40,25
+ Actor374: t08
+ Owner: Neutral
+ Location: 40,26
+ Actor379: tc01
+ Owner: Neutral
+ Location: 33,26
+ Actor380: t01
+ Owner: Neutral
+ Location: 37,26
+ Actor381: t10
+ Owner: Neutral
+ Location: 37,26
+ Actor382: t08
+ Owner: Neutral
+ Location: 39,27
+ Actor383: t02
+ Owner: Neutral
+ Location: 40,26
+ Actor384: t11.husk
+ Owner: Neutral
+ Location: 77,26
+ Actor385: t08.husk
+ Owner: Neutral
+ Location: 78,27
+ Actor389: t02
+ Owner: Neutral
+ Location: 32,27
+ Actor390: t17
+ Owner: Neutral
+ Location: 33,27
+ Actor391: t10
+ Owner: Neutral
+ Location: 34,27
+ Actor392: t03
+ Owner: Neutral
+ Location: 35,27
+ Actor393: t08
+ Owner: Neutral
+ Location: 36,28
+ Actor394: t17
+ Owner: Neutral
+ Location: 37,27
+ Actor395: t12
+ Owner: Neutral
+ Location: 38,27
+ Actor396: t01
+ Owner: Neutral
+ Location: 39,27
+ Actor397: t03
+ Owner: Neutral
+ Location: 40,27
+ Actor399: tc03
+ Owner: Neutral
+ Location: 31,29
+ Actor400: t17
+ Owner: Neutral
+ Location: 31,28
+ Actor401: t06
+ Owner: Neutral
+ Location: 32,28
+ Actor402: t15
+ Owner: Neutral
+ Location: 33,28
+ Actor407: t07
+ Owner: Neutral
+ Location: 32,29
+ Actor410: mine
+ Owner: Neutral
+ Location: 44,31
+ Actor412: t08
+ Owner: Neutral
+ Location: 50,33
+ Actor413: tc03
+ Owner: Neutral
+ Location: 51,33
+ Actor414: t12
+ Owner: Neutral
+ Location: 53,32
+ Actor416: t12
+ Owner: Neutral
+ Location: 50,33
+ Actor417: t08
+ Owner: Neutral
+ Location: 53,34
+ Actor430: t08
+ Owner: Neutral
+ Location: 48,37
+ Actor431: tc03
+ Owner: Neutral
+ Location: 49,37
+ Actor432: t08
+ Owner: Neutral
+ Location: 51,37
+ Actor437: t12
+ Owner: Neutral
+ Location: 48,37
+ Actor438: t17
+ Owner: Neutral
+ Location: 51,37
+ Actor441: t17
+ Owner: Neutral
+ Location: 69,40
+ Actor442: tc02
+ Owner: Neutral
+ Location: 69,41
+ Actor443: t12
+ Owner: Neutral
+ Location: 70,40
+ Actor445: mine
+ Owner: Neutral
+ Location: 57,42
+ Actor447: t17
+ Owner: Neutral
+ Location: 67,41
+ Actor448: t14
+ Owner: Neutral
+ Location: 67,41
+ Actor450: t15
+ Owner: Neutral
+ Location: 61,42
+ Actor451: t08
+ Owner: Neutral
+ Location: 62,43
+ Actor452: tc02
+ Owner: Neutral
+ Location: 61,43
+ Actor453: t17
+ Owner: Neutral
+ Location: 63,42
+ Actor454: t02
+ Owner: Neutral
+ Location: 64,42
+ Actor455: t08
+ Owner: Neutral
+ Location: 65,43
+ Actor456: t12
+ Owner: Neutral
+ Location: 65,42
+ Actor457: t13
+ Owner: Neutral
+ Location: 65,42
+ Actor458: tc02
+ Owner: Neutral
+ Location: 65,43
+ Actor459: t06
+ Owner: Neutral
+ Location: 66,42
+ Actor460: t15
+ Owner: Neutral
+ Location: 67,42
+ Actor461: t12
+ Owner: Neutral
+ Location: 67,42
+ Actor462: tc02
+ Owner: Neutral
+ Location: 67,43
+ Actor463: t01
+ Owner: Neutral
+ Location: 69,42
+ Actor469: t02
+ Owner: Neutral
+ Location: 63,43
+ Actor470: t01
+ Owner: Neutral
+ Location: 64,43
+ Actor476: tc01
+ Owner: Neutral
+ Location: 61,44
+ Actor477: snowhut
+ Owner: Neutral
+ Location: 62,45
+ Actor478: t01
+ Owner: Neutral
+ Location: 63,44
+ Actor479: t15
+ Owner: Neutral
+ Location: 63,44
+ Actor480: tc04
+ Owner: Neutral
+ Location: 65,44
+ Actor491: tc04
+ Owner: Neutral
+ Location: 58,45
+ Actor492: t10
+ Owner: Neutral
+ Location: 60,45
+ Actor493: t13
+ Owner: Neutral
+ Location: 63,45
+ Actor494: t06
+ Owner: Neutral
+ Location: 63,45
+ Actor495: t08
+ Owner: Neutral
+ Location: 63,46
+ Actor496: t06
+ Owner: Neutral
+ Location: 64,45
+ Actor497: t12
+ Owner: Neutral
+ Location: 66,45
+ Actor509: c3
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 52,47
+ Actor510: t12
+ Owner: Neutral
+ Location: 54,46
+ Actor511: t17
+ Owner: Neutral
+ Location: 54,46
+ Actor512: t06
+ Owner: Neutral
+ Location: 55,46
+ Actor513: tc01
+ Owner: Neutral
+ Location: 56,46
+ Actor514: t10
+ Owner: Neutral
+ Location: 57,46
+ Actor515: t06
+ Owner: Neutral
+ Location: 59,46
+ Actor516: t08
+ Owner: Neutral
+ Location: 60,47
+ Actor518: t08
+ Owner: Neutral
+ Location: 62,47
+ Actor519: t12
+ Owner: Neutral
+ Location: 63,46
+ Actor520: t08
+ Owner: Neutral
+ Location: 63,47
+ Actor521: t03
+ Owner: Neutral
+ Location: 64,46
+ Actor522: t12
+ Owner: Neutral
+ Location: 65,46
+ Actor523: fenc
+ Owner: Neutral
+ Location: 78,47
+ Actor524: fenc
+ Owner: Neutral
+ Location: 79,47
+ Actor525: fenc
+ Owner: Neutral
+ Location: 80,47
+ Actor526: fenc
+ Owner: Neutral
+ Location: 81,47
+ Actor533: v10
+ Owner: Neutral
+ Location: 52,48
+ Actor534: t12
+ Owner: Neutral
+ Location: 55,47
+ Actor535: t06
+ Owner: Neutral
+ Location: 56,47
+ Actor536: t05
+ Owner: Neutral
+ Location: 57,47
+ Actor537: tc01
+ Owner: Neutral
+ Location: 58,47
+ Actor538: t17
+ Owner: Neutral
+ Location: 60,47
+ Actor539: t16
+ Owner: Neutral
+ Location: 61,47
+ Actor540: t12
+ Owner: Neutral
+ Location: 62,47
+ Actor549: barl
+ Owner: Neutral
+ Location: 54,49
+ Actor557: wood
+ Owner: Neutral
+ Location: 48,50
+ Actor558: v06
+ Owner: Neutral
+ Location: 49,50
+ Actor560: barl
+ Owner: Neutral
+ Location: 53,50
+ Actor562: brl3
+ Owner: Neutral
+ Location: 54,50
+ Actor574: wood
+ Owner: Neutral
+ Location: 48,51
+ Actor582: wood
+ Owner: Neutral
+ Location: 47,52
+ Actor583: wood
+ Owner: Neutral
+ Location: 48,52
+ Actor595: t10
+ Owner: Neutral
+ Location: 52,52
+ Actor617: wood
+ Owner: Neutral
+ Location: 46,55
+ Actor618: v07
+ Owner: Neutral
+ Location: 47,55
+ Actor620: c3
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 49,55
+ Actor621: c3
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 54,55
+ Actor641: wood
+ Owner: Neutral
+ Location: 49,56
+ Actor642: v04
+ Owner: Neutral
+ Location: 53,56
+ Actor709: tc03
+ Owner: Neutral
+ Location: 5,1
+ Actor710: t08
+ Owner: Neutral
+ Location: 13,1
+ Actor716: t08
+ Owner: Neutral
+ Location: 26,1
+ Actor720: t08
+ Owner: Neutral
+ Location: 2,2
+ Actor742: tc01
+ Owner: Neutral
+ Location: 3,1
+ Actor827: tc05
+ Owner: Neutral
+ Location: 2,2
+ Actor828: t12
+ Owner: Neutral
+ Location: 7,1
+ Actor829: t08
+ Owner: Neutral
+ Location: 7,2
+ Actor830: t12
+ Owner: Neutral
+ Location: 10,1
+ Actor831: t16
+ Owner: Neutral
+ Location: 20,1
+ Actor832: t14
+ Owner: Neutral
+ Location: 22,1
+ Actor833: t03
+ Owner: Neutral
+ Location: 26,1
+ Actor836: t16
+ Owner: Neutral
+ Location: 1,2
+ Actor837: t08
+ Owner: Neutral
+ Location: 5,3
+ Actor838: t06
+ Owner: Neutral
+ Location: 6,2
+ Actor839: t12
+ Owner: Neutral
+ Location: 7,2
+ Actor840: tc02
+ Owner: Neutral
+ Location: 17,3
+ Actor841: t05
+ Owner: Neutral
+ Location: 20,2
+ Actor842: t12
+ Owner: Neutral
+ Location: 21,2
+ Actor843: t08
+ Owner: Neutral
+ Location: 21,3
+ Actor844: t17
+ Owner: Neutral
+ Location: 22,2
+ Actor845: t12
+ Owner: Neutral
+ Location: 23,2
+ Actor847: tc01
+ Owner: Neutral
+ Location: 1,3
+ Actor848: tc05
+ Owner: Neutral
+ Location: 8,4
+ Actor849: t15
+ Owner: Neutral
+ Location: 10,3
+ Actor850: t16
+ Owner: Neutral
+ Location: 12,3
+ Actor851: t08
+ Owner: Neutral
+ Location: 13,4
+ Actor852: t12
+ Owner: Neutral
+ Location: 13,3
+ Actor853: t06
+ Owner: Neutral
+ Location: 14,3
+ Actor854: t07
+ Owner: Neutral
+ Location: 15,3
+ Actor855: t06
+ Owner: Neutral
+ Location: 16,3
+ Actor856: tc01
+ Owner: Neutral
+ Location: 19,3
+ Actor857: t04
+ Owner: Neutral
+ Location: 21,3
+ Actor858: t14
+ Owner: Neutral
+ Location: 23,3
+ Actor859: t12
+ Owner: Neutral
+ Location: 25,3
+ Actor860: t13
+ Owner: Neutral
+ Location: 10,4
+ Actor861: tc03
+ Owner: Neutral
+ Location: 11,5
+ Actor862: t12
+ Owner: Neutral
+ Location: 12,4
+ Actor863: t06
+ Owner: Neutral
+ Location: 13,4
+ Actor864: t17
+ Owner: Neutral
+ Location: 13,4
+ Actor865: t11
+ Owner: Neutral
+ Location: 14,4
+ Actor866: t01
+ Owner: Neutral
+ Location: 16,4
+ Actor867: t12
+ Owner: Neutral
+ Location: 17,4
+ Actor868: t14
+ Owner: Neutral
+ Location: 6,5
+ Actor869: t08
+ Owner: Neutral
+ Location: 8,6
+ Actor870: t12
+ Owner: Neutral
+ Location: 8,5
+ Actor871: t16
+ Owner: Neutral
+ Location: 1,6
+ Actor872: t15
+ Owner: Neutral
+ Location: 1,6
+ Actor873: tc05
+ Owner: Neutral
+ Location: 1,7
+ Actor874: t02
+ Owner: Neutral
+ Location: 3,6
+ Actor875: tc03
+ Owner: Neutral
+ Location: 4,7
+ Actor876: t08
+ Owner: Neutral
+ Location: 4,7
+ Actor877: t07
+ Owner: Neutral
+ Location: 4,6
+ Actor878: tc04
+ Owner: Neutral
+ Location: 6,6
+ Actor879: t17
+ Owner: Neutral
+ Location: 8,6
+ Actor880: tc03
+ Owner: Neutral
+ Location: 9,7
+ Actor881: t12
+ Owner: Neutral
+ Location: 9,6
+ Actor882: t08
+ Owner: Neutral
+ Location: 11,7
+ Actor883: t01
+ Owner: Neutral
+ Location: 11,6
+ Actor884: tc03
+ Owner: Neutral
+ Location: 11,6
+ Actor885: t16
+ Owner: Neutral
+ Location: 12,6
+ Actor886: tc03
+ Owner: Neutral
+ Location: 15,7
+ Actor887: t08
+ Owner: Neutral
+ Location: 17,7
+ Actor888: t12
+ Owner: Neutral
+ Location: 18,6
+ Actor889: t02
+ Owner: Neutral
+ Location: 19,6
+ Actor890: t06
+ Owner: Neutral
+ Location: 20,6
+ Actor891: t16
+ Owner: Neutral
+ Location: 7,7
+ Actor892: t08
+ Owner: Neutral
+ Location: 8,8
+ Actor893: t12
+ Owner: Neutral
+ Location: 11,7
+ Actor894: t08
+ Owner: Neutral
+ Location: 16,8
+ Actor895: t08
+ Owner: Neutral
+ Location: 16,8
+ Actor896: t06
+ Owner: Neutral
+ Location: 17,7
+ Actor897: t08
+ Owner: Neutral
+ Location: 17,8
+ Actor898: t03
+ Owner: Neutral
+ Location: 18,7
+ Actor899: t12
+ Owner: Neutral
+ Location: 1,8
+ Actor900: t08
+ Owner: Neutral
+ Location: 1,9
+ Actor901: t06
+ Owner: Neutral
+ Location: 6,8
+ Actor902: tc03
+ Owner: Neutral
+ Location: 13,9
+ Actor905: t12
+ Owner: Neutral
+ Location: 2,9
+ Actor906: tc03
+ Owner: Neutral
+ Location: 12,10
+ Actor907: t04
+ Owner: Neutral
+ Location: 14,9
+ Actor908: t01
+ Owner: Neutral
+ Location: 15,9
+ Actor909: tc02
+ Owner: Neutral
+ Location: 5,11
+ Actor910: t02
+ Owner: Neutral
+ Location: 7,10
+ Actor911: t07
+ Owner: Neutral
+ Location: 8,10
+ Actor912: t16
+ Owner: Neutral
+ Location: 9,10
+ Actor913: t06
+ Owner: Neutral
+ Location: 13,10
+ Actor914: t08
+ Owner: Neutral
+ Location: 14,11
+ Actor915: tc04
+ Owner: Neutral
+ Location: 2,11
+ Actor916: t06
+ Owner: Neutral
+ Location: 7,11
+ Actor917: t01
+ Owner: Neutral
+ Location: 8,11
+ Actor918: t12
+ Owner: Neutral
+ Location: 9,11
+ Actor919: t12
+ Owner: Neutral
+ Location: 12,11
+ Actor920: t03
+ Owner: Neutral
+ Location: 13,11
+ Actor923: t08
+ Owner: Neutral
+ Location: 4,13
+ Actor924: t15
+ Owner: Neutral
+ Location: 4,12
+ Actor925: t08
+ Owner: Neutral
+ Location: 6,13
+ Actor926: t12
+ Owner: Neutral
+ Location: 7,12
+ Actor927: t08
+ Owner: Neutral
+ Location: 11,13
+ Actor928: t12
+ Owner: Neutral
+ Location: 12,12
+ Actor922: tc03
+ Owner: Neutral
+ Location: 4,13
+ Actor929: t17
+ Owner: Neutral
+ Location: 10,13
+ Actor930: t03
+ Owner: Neutral
+ Location: 11,13
+ Actor931: t08
+ Owner: Neutral
+ Location: 1,15
+ Actor932: tc01
+ Owner: Neutral
+ Location: 2,14
+ Actor933: t06
+ Owner: Neutral
+ Location: 9,14
+ Actor934: t08
+ Owner: Neutral
+ Location: 10,15
+ Actor935: tc01
+ Owner: Neutral
+ Location: 1,15
+ Actor936: tc03
+ Owner: Neutral
+ Location: 6,16
+ Actor937: t12
+ Owner: Neutral
+ Location: 6,15
+ Actor938: t03
+ Owner: Neutral
+ Location: 8,15
+ Actor939: t03
+ Owner: Neutral
+ Location: 9,15
+ Actor940: t16
+ Owner: Neutral
+ Location: 2,16
+ Actor941: t07
+ Owner: Neutral
+ Location: 8,16
+ Actor942: t17
+ Owner: Neutral
+ Location: 2,17
+ Actor943: t12
+ Owner: Neutral
+ Location: 3,17
+ Actor944: t10
+ Owner: Neutral
+ Location: 6,17
+ Actor945: t12
+ Owner: Neutral
+ Location: 7,17
+ Actor946: t13
+ Owner: Neutral
+ Location: 4,18
+ Actor947: t03
+ Owner: Neutral
+ Location: 6,18
+ Actor948: t07
+ Owner: Neutral
+ Location: 3,19
+ Actor949: t03
+ Owner: Neutral
+ Location: 4,19
+ Actor950: t13
+ Owner: Neutral
+ Location: 4,19
+ Actor951: t12
+ Owner: Neutral
+ Location: 5,19
+ Actor952: t10
+ Owner: Neutral
+ Location: 2,20
+ Actor953: t12
+ Owner: Neutral
+ Location: 3,20
+ Actor954: t01
+ Owner: Neutral
+ Location: 4,20
+ Actor955: t01
+ Owner: Neutral
+ Location: 1,21
+ Actor956: t16
+ Owner: Neutral
+ Location: 2,21
+ Actor957: t03
+ Owner: Neutral
+ Location: 3,21
+ Actor958: t12
+ Owner: Neutral
+ Location: 1,22
+ Actor959: t04
+ Owner: Neutral
+ Location: 1,22
+ Actor960: t03
+ Owner: Neutral
+ Location: 2,22
+ Actor961: t06
+ Owner: Neutral
+ Location: 2,22
+ Actor962: t08
+ Owner: Neutral
+ Location: 3,23
+ Actor963: t11
+ Owner: Neutral
+ Location: 1,23
+ Actor964: t03
+ Owner: Neutral
+ Location: 2,23
+ Actor965: t03
+ Owner: Neutral
+ Location: 2,23
+ Actor966: t03
+ Owner: Neutral
+ Location: 1,24
+ Actor968: t02
+ Owner: Neutral
+ Location: 1,25
+ Actor783: t17
+ Owner: Neutral
+ Location: 79,65
+ Actor784: tc04
+ Owner: Neutral
+ Location: 84,65
+ Actor785: t08
+ Owner: Neutral
+ Location: 84,66
+ Actor786: tc02
+ Owner: Neutral
+ Location: 85,66
+ Actor787: t16
+ Owner: Neutral
+ Location: 87,65
+ Actor788: tc02
+ Owner: Neutral
+ Location: 87,66
+ Actor789: t02
+ Owner: Neutral
+ Location: 90,65
+ Actor790: tc05
+ Owner: Neutral
+ Location: 93,66
+ Actor795: t08
+ Owner: Neutral
+ Location: 77,67
+ Actor796: t08
+ Owner: Neutral
+ Location: 78,67
+ Actor797: t06
+ Owner: Neutral
+ Location: 78,66
+ Actor798: tc02
+ Owner: Neutral
+ Location: 84,67
+ Actor799: t06
+ Owner: Neutral
+ Location: 89,66
+ Actor800: t12
+ Owner: Neutral
+ Location: 90,66
+ Actor801: t12
+ Owner: Neutral
+ Location: 92,66
+ Actor802: tc02
+ Owner: Neutral
+ Location: 97,67
+ Actor803: t08
+ Owner: Neutral
+ Location: 100,67
+ Actor804: t08
+ Owner: Neutral
+ Location: 75,68
+ Actor805: t02
+ Owner: Neutral
+ Location: 76,67
+ Actor806: t03
+ Owner: Neutral
+ Location: 77,67
+ Actor807: t01
+ Owner: Neutral
+ Location: 78,67
+ Actor815: t12
+ Owner: Neutral
+ Location: 83,67
+ Actor816: t08
+ Owner: Neutral
+ Location: 86,68
+ Actor817: t12
+ Owner: Neutral
+ Location: 87,67
+ Actor818: t17
+ Owner: Neutral
+ Location: 93,67
+ Actor819: t15
+ Owner: Neutral
+ Location: 95,67
+ Actor820: t17
+ Owner: Neutral
+ Location: 100,67
+ Actor821: t08
+ Owner: Neutral
+ Location: 73,69
+ Actor822: t17
+ Owner: Neutral
+ Location: 74,68
+ Actor823: t08
+ Owner: Neutral
+ Location: 75,69
+ Actor824: t08
+ Owner: Neutral
+ Location: 75,69
+ Actor825: t06
+ Owner: Neutral
+ Location: 76,68
+ Actor826: tc01
+ Owner: Neutral
+ Location: 77,68
+ Actor974: t07
+ Owner: Neutral
+ Location: 81,68
+ Actor975: t17
+ Owner: Neutral
+ Location: 83,68
+ Actor976: t16
+ Owner: Neutral
+ Location: 84,68
+ Actor977: t03
+ Owner: Neutral
+ Location: 88,68
+ Actor978: t12
+ Owner: Neutral
+ Location: 95,68
+ Actor979: tc01
+ Owner: Neutral
+ Location: 96,68
+ Actor980: t14
+ Owner: Neutral
+ Location: 97,68
+ Actor981: t08
+ Owner: Neutral
+ Location: 71,70
+ Actor982: t17
+ Owner: Neutral
+ Location: 72,69
+ Actor983: t06
+ Owner: Neutral
+ Location: 73,69
+ Actor984: t12
+ Owner: Neutral
+ Location: 74,69
+ Actor985: t14
+ Owner: Neutral
+ Location: 74,69
+ Actor986: t17
+ Owner: Neutral
+ Location: 76,69
+ Actor987: t03
+ Owner: Neutral
+ Location: 77,69
+ Actor988: t05
+ Owner: Neutral
+ Location: 81,69
+ Actor989: tc03
+ Owner: Neutral
+ Location: 87,70
+ Actor990: t06
+ Owner: Neutral
+ Location: 91,69
+ Actor991: t16
+ Owner: Neutral
+ Location: 97,69
+ Actor992: t07
+ Owner: Neutral
+ Location: 98,69
+ Actor993: tc01
+ Owner: Neutral
+ Location: 88,70
+ Actor758: t05
+ Owner: Neutral
+ Location: 90,57
+ Actor759: t07
+ Owner: Neutral
+ Location: 91,57
+ Actor760: t04
+ Owner: Neutral
+ Location: 92,57
+ Actor761: t07
+ Owner: Neutral
+ Location: 93,57
+ Actor762: t17
+ Owner: Neutral
+ Location: 100,57
+ Actor768: t03
+ Owner: Neutral
+ Location: 90,58
+ Actor769: t06
+ Owner: Neutral
+ Location: 91,58
+ Actor770: t12
+ Owner: Neutral
+ Location: 92,58
+ Actor771: t12
+ Owner: Neutral
+ Location: 96,58
+ Actor772: t13
+ Owner: Neutral
+ Location: 97,58
+ Actor773: t08
+ Owner: Neutral
+ Location: 97,59
+ Actor774: t17
+ Owner: Neutral
+ Location: 98,58
+ Actor775: t03
+ Owner: Neutral
+ Location: 100,58
+ Actor781: t08
+ Owner: Neutral
+ Location: 101,59
+ Actor782: t08
+ Owner: Neutral
+ Location: 87,60
+ Actor814: t03
+ Owner: Neutral
+ Location: 88,59
+ Actor994: tc02
+ Owner: Neutral
+ Location: 94,60
+ Actor995: t12
+ Owner: Neutral
+ Location: 96,59
+ Actor996: t02
+ Owner: Neutral
+ Location: 97,59
+ Actor997: t02
+ Owner: Neutral
+ Location: 98,59
+ Actor998: t10
+ Owner: Neutral
+ Location: 100,59
+ Actor999: t04
+ Owner: Neutral
+ Location: 86,60
+ Actor1000: t02
+ Owner: Neutral
+ Location: 86,60
+ Actor1001: t04
+ Owner: Neutral
+ Location: 87,60
+ Actor1002: tc04
+ Owner: Neutral
+ Location: 96,60
+ Actor1003: t02
+ Owner: Neutral
+ Location: 97,60
+ Actor1004: t08
+ Owner: Neutral
+ Location: 98,61
+ Actor1005: t07
+ Owner: Neutral
+ Location: 85,61
+ Actor1006: t16
+ Owner: Neutral
+ Location: 87,61
+ Actor1007: t05
+ Owner: Neutral
+ Location: 90,61
+ Actor1008: t03
+ Owner: Neutral
+ Location: 93,61
+ Actor1009: t10
+ Owner: Neutral
+ Location: 94,61
+ Actor1010: tc01
+ Owner: Neutral
+ Location: 96,61
+ Actor1011: t17
+ Owner: Neutral
+ Location: 83,62
+ Actor1012: t06
+ Owner: Neutral
+ Location: 84,62
+ Actor1013: tc02
+ Owner: Neutral
+ Location: 88,63
+ Actor1014: t06
+ Owner: Neutral
+ Location: 90,62
+ Actor1015: t02
+ Owner: Neutral
+ Location: 93,62
+ Actor1016: t16
+ Owner: Neutral
+ Location: 94,62
+ Actor1017: t03
+ Owner: Neutral
+ Location: 95,62
+ Actor1018: tc02
+ Owner: Neutral
+ Location: 95,63
+ Actor1019: t03
+ Owner: Neutral
+ Location: 96,62
+ Actor1020: t01
+ Owner: Neutral
+ Location: 97,62
+ Actor1021: t03
+ Owner: Neutral
+ Location: 82,63
+ Actor1022: t03
+ Owner: Neutral
+ Location: 90,63
+ Actor1023: t17
+ Owner: Neutral
+ Location: 94,63
+ Actor1024: tc03
+ Owner: Neutral
+ Location: 97,64
+ Actor1025: t03
+ Owner: Neutral
+ Location: 97,63
+ Actor1026: t08
+ Owner: Neutral
+ Location: 80,65
+ Actor1027: t06
+ Owner: Neutral
+ Location: 81,64
+ Actor1028: t05
+ Owner: Neutral
+ Location: 90,64
+ Actor1029: t01
+ Owner: Neutral
+ Location: 96,64
+ Actor1030: t02
+ Owner: Neutral
+ Location: 96,51
+ Actor1031: t08
+ Owner: Neutral
+ Location: 96,52
+ Actor1032: t08
+ Owner: Neutral
+ Location: 97,52
+ Actor1033: t07
+ Owner: Neutral
+ Location: 97,51
+ Actor1034: t03
+ Owner: Neutral
+ Location: 98,51
+ Actor1035: t03
+ Owner: Neutral
+ Location: 99,51
+ Actor1036: t03
+ Owner: Neutral
+ Location: 100,51
+ Actor1037: t08
+ Owner: Neutral
+ Location: 95,53
+ Actor1038: t08
+ Owner: Neutral
+ Location: 95,53
+ Actor1039: t06
+ Owner: Neutral
+ Location: 95,52
+ Actor1040: t12
+ Owner: Neutral
+ Location: 96,52
+ Actor1041: t13
+ Owner: Neutral
+ Location: 97,52
+ Actor1042: t03
+ Owner: Neutral
+ Location: 97,52
+ Actor1043: tc03
+ Owner: Neutral
+ Location: 98,53
+ Actor1044: t12
+ Owner: Neutral
+ Location: 98,52
+ Actor1045: t06
+ Owner: Neutral
+ Location: 99,52
+ Actor1046: t02
+ Owner: Neutral
+ Location: 100,52
+ Actor1047: t01
+ Owner: Neutral
+ Location: 94,53
+ Actor1048: t03
+ Owner: Neutral
+ Location: 95,53
+ Actor1049: t13
+ Owner: Neutral
+ Location: 96,53
+ Actor1050: t06
+ Owner: Neutral
+ Location: 96,53
+ Actor1051: t05
+ Owner: Neutral
+ Location: 97,53
+ Actor1052: t03
+ Owner: Neutral
+ Location: 93,54
+ Actor1053: t08
+ Owner: Neutral
+ Location: 94,55
+ Actor1054: t02
+ Owner: Neutral
+ Location: 94,54
+ Actor1055: t16
+ Owner: Neutral
+ Location: 95,54
+ Actor1056: t12
+ Owner: Neutral
+ Location: 96,54
+ Actor1057: t03
+ Owner: Neutral
+ Location: 97,54
+ Actor1058: t16
+ Owner: Neutral
+ Location: 98,54
+ Actor1059: t05
+ Owner: Neutral
+ Location: 92,55
+ Actor1060: t17
+ Owner: Neutral
+ Location: 93,55
+ Actor1061: t02
+ Owner: Neutral
+ Location: 94,55
+ Actor1062: t10
+ Owner: Neutral
+ Location: 95,55
+ Actor1063: t08
+ Owner: Neutral
+ Location: 95,56
+ Actor1064: t08
+ Owner: Neutral
+ Location: 96,56
+ Actor1065: t01
+ Owner: Neutral
+ Location: 97,55
+ Actor1066: t17
+ Owner: Neutral
+ Location: 97,55
+ Actor1067: t06
+ Owner: Neutral
+ Location: 98,55
+ Actor1068: t17
+ Owner: Neutral
+ Location: 100,55
+ Actor1069: t17
+ Owner: Neutral
+ Location: 91,56
+ Actor1070: t12
+ Owner: Neutral
+ Location: 92,56
+ Actor1071: tc01
+ Owner: Neutral
+ Location: 93,56
+ Actor1072: t12
+ Owner: Neutral
+ Location: 97,56
+ Actor756: t07
+ Owner: Neutral
+ Location: 99,46
+ Actor1073: t08
+ Owner: Neutral
+ Location: 99,48
+ Actor1074: t12
+ Owner: Neutral
+ Location: 99,47
+ Actor1075: t06
+ Owner: Neutral
+ Location: 100,47
+ Actor1076: t08
+ Owner: Neutral
+ Location: 101,48
+ Actor1077: t06
+ Owner: Neutral
+ Location: 98,48
+ Actor1078: t03
+ Owner: Neutral
+ Location: 99,48
+ Actor1079: t08
+ Owner: Neutral
+ Location: 100,49
+ Actor1080: t10
+ Owner: Neutral
+ Location: 100,48
+ Actor1082: t12
+ Owner: Neutral
+ Location: 98,49
+ Actor1083: t02
+ Owner: Neutral
+ Location: 99,49
+ Actor1085: t08
+ Owner: Neutral
+ Location: 100,50
+ Actor1086: t12
+ Owner: Neutral
+ Location: 97,50
+ Actor1087: t03
+ Owner: Neutral
+ Location: 98,50
+ Actor1088: t06
+ Owner: Neutral
+ Location: 98,50
+ Actor1089: t12
+ Owner: Neutral
+ Location: 99,50
+ Actor1090: t10
+ Owner: Neutral
+ Location: 100,50
+ Actor1091: t08
+ Owner: Neutral
+ Location: 100,51
+ Actor1092: t03
+ Owner: Neutral
+ Location: 95,56
+ Actor1093: tc04
+ Owner: Neutral
+ Location: 88,64
+ Actor1094: tc01
+ Owner: Neutral
+ Location: 87,64
+ Actor1095: tc01
+ Owner: Neutral
+ Location: 91,65
+ Actor1096: tc01
+ Owner: Neutral
+ Location: 94,61
+ Actor1097: tc01
+ Owner: Neutral
+ Location: 75,69
+ Actor1098: tc01
+ Owner: Neutral
+ Location: 99,51
+ Actor1084: tc01
+ Owner: Neutral
+ Location: 100,49
+ Actor1099: t12
+ Owner: Neutral
+ Location: 91,68
+ Actor1100: t12
+ Owner: Neutral
+ Location: 94,68
+ Actor1101: t12
+ Owner: Neutral
+ Location: 80,66
+ Actor1102: t13
+ Owner: Neutral
+ Location: 80,65
+ Actor1103: t13
+ Owner: Neutral
+ Location: 85,61
+ Actor1104: t08
+ Owner: Neutral
+ Location: 94,58
+ Actor1105: t14
+ Owner: Neutral
+ Location: 94,57
+ Actor1106: t04
+ Owner: Neutral
+ Location: 89,61
+ Actor1108: t03
+ Owner: Neutral
+ Location: 29,0
+ Actor1109: t03
+ Owner: Neutral
+ Location: 14,0
+ Actor1110: t03
+ Owner: Neutral
+ Location: 2,0
+ Actor1111: t03
+ Owner: Neutral
+ Location: 1,1
+ Actor1112: t03
+ Owner: Neutral
+ Location: 1,13
+ Actor1114: t08
+ Owner: Neutral
+ Location: 16,1
+ Actor1115: t08
+ Owner: Neutral
+ Location: 8,1
+ Actor1116: t08
+ Owner: Neutral
+ Location: 1,1
+ Actor1117: t06
+ Owner: Neutral
+ Location: 4,0
+ Actor1118: t06
+ Owner: Neutral
+ Location: 9,0
+ Actor1119: tc03
+ Owner: Neutral
+ Location: 11,0
+ Actor1121: tc03
+ Owner: Neutral
+ Location: 0,17
+ Actor1120: t15
+ Owner: Neutral
+ Location: 2,12
+ Actor1122: t06
+ Owner: Neutral
+ Location: 15,0
+ Actor1123: t06
+ Owner: Neutral
+ Location: 2,1
+ Actor1194: t03
+ Owner: Neutral
+ Location: 17,0
+ Actor921: t13
+ Owner: Neutral
+ Location: 1,12
+ Actor1196: t12
+ Owner: Neutral
+ Location: 1,12
+ Actor1197: t17
+ Owner: Neutral
+ Location: 10,0
+ Actor835: tc05
+ Owner: Neutral
+ Location: 26,0
+ Actor834: t01
+ Owner: Neutral
+ Location: 26,2
+ Actor846: t08
+ Owner: Neutral
+ Location: 7,1
+ Actor1113: t08
+ Owner: Neutral
+ Location: 3,1
+ Actor1124: t08
+ Owner: Neutral
+ Location: 3,14
+ Actor1195: t06
+ Owner: Neutral
+ Location: 2,13
+ Actor1198: t06
+ Owner: Neutral
+ Location: 16,0
+ Actor1199: t06
+ Owner: Neutral
+ Location: 13,0
+ Actor1200: t06
+ Owner: Neutral
+ Location: 89,65
+ Actor724: t17.husk
+ Owner: Neutral
+ Location: 23,43
+ Actor725: tc02.husk
+ Owner: Neutral
+ Location: 23,44
+ Actor726: t16.husk
+ Owner: Neutral
+ Location: 24,43
+ Actor727: t11.husk
+ Owner: Neutral
+ Location: 23,45
+ Actor728: t08.husk
+ Owner: Neutral
+ Location: 24,46
+ Actor731: oilb
+ Owner: Neutral
+ Location: 18,26
+ Actor740: fenc
+ Owner: Neutral
+ Location: 20,24
+ Actor741: fenc
+ Owner: Neutral
+ Location: 21,24
+ Actor743: fenc
+ Owner: Neutral
+ Location: 22,24
+ Actor745: fenc
+ Owner: Neutral
+ Location: 23,24
+ Actor749: t06
+ Owner: Neutral
+ Location: 96,18
+ Actor714: t01
+ Owner: Neutral
+ Location: 94,15
+ Actor744: t08
+ Owner: Neutral
+ Location: 1,27
+ Actor746: t12
+ Owner: Neutral
+ Location: 1,26
+ Actor967: t03
+ Owner: Neutral
+ Location: 2,24
+ Actor1219: c3
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 36,35
+ Actor1220: c3
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 33,37
+ Actor1221: v08
+ Owner: Neutral
+ Location: 35,37
+ Actor1222: wood
+ Owner: Neutral
+ Location: 36,37
+ Actor1223: wood
+ Owner: Neutral
+ Location: 37,37
+ Actor1224: wood
+ Owner: Neutral
+ Location: 32,38
+ Actor1225: wood
+ Owner: Neutral
+ Location: 33,38
+ Actor1226: wood
+ Owner: Neutral
+ Location: 68,34
+ Actor1227: wood
+ Owner: Neutral
+ Location: 69,34
+ Actor1228: wood
+ Owner: Neutral
+ Location: 64,35
+ Actor1229: wood
+ Owner: Neutral
+ Location: 65,35
+ Actor1230: v08
+ Owner: Neutral
+ Location: 66,35
+ Actor1231: c3
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 68,35
+ Actor1232: c3
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 65,37
+ Actor1179: snowhut
+ Owner: Neutral
+ Location: 39,24
+ Actor1125: t08
+ Owner: Neutral
+ Location: 30,1
+ Actor1245: barl
+ Owner: Neutral
+ Location: 46,20
+ Actor1246: barl
+ Owner: Neutral
+ Location: 55,51
+ Actor1159: t08
+ Owner: Neutral
+ Location: 9,1
+ Actor1160: t03
+ Owner: Neutral
+ Location: 3,5
+ Actor1171: t03
+ Owner: Neutral
+ Location: 9,3
+ Actor1172: t03
+ Owner: Neutral
+ Location: 27,1
+ Actor903: tc02
+ Owner: Neutral
+ Location: 15,8
+ Actor705: mpspawn
+ Owner: Neutral
+ Location: 11,45
+ Actor701: t11
+ Owner: Neutral
+ Location: 8,10
+ Actor702: t11
+ Owner: Neutral
+ Location: 5,2
+ Actor711: t10
+ Owner: Neutral
+ Location: 5,7
+ Actor779: t12
+ Owner: Neutral
+ Location: 5,8
+ Actor793: t12
+ Owner: Neutral
+ Location: 7,8
+ Actor811: t12
+ Owner: Neutral
+ Location: 60,46
+ Actor812: t15
+ Owner: Neutral
+ Location: 45,22
+ Actor973: t10
+ Owner: Neutral
+ Location: 48,17
+ Actor753: wood
+ Owner: Neutral
+ Location: 50,8
+ Actor813: wood
+ Owner: Neutral
+ Location: 48,9
+ Actor904: wood
+ Owner: Neutral
+ Location: 49,9
+ Actor969: wood
+ Owner: Neutral
+ Location: 50,9
+ Actor1268: t12
+ Owner: Neutral
+ Location: 49,12
+ Actor1233: t12
+ Owner: Neutral
+ Location: 52,58
+ Actor1234: wood
+ Owner: Neutral
+ Location: 51,62
+ Actor1235: wood
+ Owner: Neutral
+ Location: 52,62
+ Actor1236: wood
+ Owner: Neutral
+ Location: 53,62
+ Actor1237: wood
+ Owner: Neutral
+ Location: 51,63
+ Actor1244: t03
+ Owner: Neutral
+ Location: 100,25
+ Actor1254: mine
+ Owner: Neutral
+ Location: 9,61
+ Actor1288: mine
+ Owner: Neutral
+ Location: 92,10
+ Actor1286: mine
+ Owner: Neutral
+ Location: 16,33
+ Actor1290: wood
+ Owner: Neutral
+ Location: 53,15
+ Actor1131: wood
+ Owner: Neutral
+ Location: 48,56
+ Actor1133: wood
+ Owner: Neutral
+ Location: 48,56
+ Actor971: mpspawn
+ Owner: Neutral
+ Location: 90,24
+ Actor1180: tc03
+ Owner: Neutral
+ Location: 50,35
+ Actor1287: mine
+ Owner: Neutral
+ Location: 16,39
+ Actor1303: mine
+ Owner: Neutral
+ Location: 85,32
+ Actor1289: mine
+ Owner: Neutral
+ Location: 85,38
+ Actor1308: v04
+ Owner: Neutral
+ Location: 48,46
+ Actor1310: oilb
+ Owner: Neutral
+ Location: 82,44
+ Actor1129: mine
+ Owner: Neutral
+ Location: 61,62
+ Actor1126: mine
+ Owner: Neutral
+ Location: 40,9
+ Actor1313: barl
+ Owner: Neutral
+ Location: 82,46
+ Actor1314: brl3
+ Owner: Neutral
+ Location: 83,46
+ Actor1316: brl3
+ Owner: Neutral
+ Location: 18,25
+ Actor1317: barl
+ Owner: Neutral
+ Location: 19,25
+ Actor1318: t08
+ Owner: Neutral
+ Location: 88,70
+ Actor1319: t08
+ Owner: Neutral
+ Location: 90,63
+ Actor1320: t08
+ Owner: Neutral
+ Location: 81,65
+ Actor1321: t08
+ Owner: Neutral
+ Location: 81,66
+ Actor1323: t08
+ Owner: Neutral
+ Location: 100,45
+ Actor1322: t17
+ Owner: Neutral
+ Location: 100,46
+ Actor1324: t12
+ Owner: Neutral
+ Location: 100,45
+ Actor1128: mine
+ Owner: Neutral
+ Location: 71,57
+ Actor1127: mine
+ Owner: Neutral
+ Location: 30,14
+ Actor747: t13
+ Owner: Neutral
+ Location: 55,7
+ Actor748: t12
+ Owner: Neutral
+ Location: 55,7
+ Actor755: t07
+ Owner: Neutral
+ Location: 56,7
+ Actor757: t10
+ Owner: Neutral
+ Location: 57,7
+ Actor1150: t01
+ Owner: Neutral
+ Location: 57,7
+ Actor1153: t08
+ Owner: Neutral
+ Location: 58,8
+ Actor1161: t08
+ Owner: Neutral
+ Location: 58,8
+ Actor1162: t08
+ Owner: Neutral
+ Location: 58,8
+ Actor1163: tc01
+ Owner: Neutral
+ Location: 58,7
+ Actor1164: tc05
+ Owner: Neutral
+ Location: 56,8
+ Actor1165: oilb
+ Owner: Neutral
+ Location: 60,8
+ Actor1166: brl3
+ Owner: Neutral
+ Location: 62,8
+ Actor1167: brl3
+ Owner: Neutral
+ Location: 62,8
+ Actor1168: t17
+ Owner: Neutral
+ Location: 55,8
+ Actor1169: t06
+ Owner: Neutral
+ Location: 55,8
+ Actor1170: t12
+ Owner: Neutral
+ Location: 59,8
+ Actor1175: barl
+ Owner: Neutral
+ Location: 62,9
+ Actor1176: t04
+ Owner: Neutral
+ Location: 55,9
+ Actor1177: t12
+ Owner: Neutral
+ Location: 56,9
+ Actor1181: t02
+ Owner: Neutral
+ Location: 59,9
+ Actor1182: t08
+ Owner: Neutral
+ Location: 60,10
+ Actor1183: tc02
+ Owner: Neutral
+ Location: 60,10
+ Actor1184: t08
+ Owner: Neutral
+ Location: 62,10
+ Actor1185: t14
+ Owner: Neutral
+ Location: 58,10
+ Actor1186: t12
+ Owner: Neutral
+ Location: 61,10
+ Actor1187: t12
+ Owner: Neutral
+ Location: 62,10
+ Actor1189: t13
+ Owner: Neutral
+ Location: 62,11
+ Actor1190: wood
+ Owner: Neutral
+ Location: 54,15
+ Actor1191: wood
+ Owner: Neutral
+ Location: 55,15
+ Actor1134: wood
+ Owner: Neutral
+ Location: 46,56
+ Actor1135: wood
+ Owner: Neutral
+ Location: 47,56
+ Actor1136: wood
+ Owner: Neutral
+ Location: 47,56
+ Actor1139: t13
+ Owner: Neutral
+ Location: 39,59
+ Actor1140: t12
+ Owner: Neutral
+ Location: 39,59
+ Actor1141: t17
+ Owner: Neutral
+ Location: 40,59
+ Actor1142: t08
+ Owner: Neutral
+ Location: 41,60
+ Actor1143: t08
+ Owner: Neutral
+ Location: 42,60
+ Actor1144: t11
+ Owner: Neutral
+ Location: 39,60
+ Actor1145: t12
+ Owner: Neutral
+ Location: 40,60
+ Actor1146: t06
+ Owner: Neutral
+ Location: 40,60
+ Actor1147: t11
+ Owner: Neutral
+ Location: 41,60
+ Actor1148: t12
+ Owner: Neutral
+ Location: 42,60
+ Actor1149: t07
+ Owner: Neutral
+ Location: 43,60
+ Actor1151: t17
+ Owner: Neutral
+ Location: 44,60
+ Actor1152: t08
+ Owner: Neutral
+ Location: 45,61
+ Actor1154: t08
+ Owner: Neutral
+ Location: 46,61
+ Actor1155: tc02
+ Owner: Neutral
+ Location: 45,61
+ Actor1156: barl
+ Owner: Neutral
+ Location: 39,62
+ Actor1157: oilb
+ Owner: Neutral
+ Location: 40,62
+ Actor1158: t01
+ Owner: Neutral
+ Location: 42,61
+ Actor1291: tc01
+ Owner: Neutral
+ Location: 43,61
+ Actor1292: brl3
+ Owner: Neutral
+ Location: 39,63
+ Actor1293: brl3
+ Owner: Neutral
+ Location: 39,63
+ Actor1294: t06
+ Owner: Neutral
+ Location: 42,62
+ Actor1295: t12
+ Owner: Neutral
+ Location: 43,62
+ Actor1296: t01
+ Owner: Neutral
+ Location: 44,62
+ Actor1297: t17
+ Owner: Neutral
+ Location: 45,62
+ Actor1301: t15
+ Owner: Neutral
+ Location: 45,62
+ Actor1130: v04
+ Owner: Neutral
+ Location: 52,24
+ Actor766: t17
+ Owner: Neutral
+ Location: 35,28
+ Actor1266: t17
+ Owner: Neutral
+ Location: 61,46
+ Actor1277: t08
+ Owner: Neutral
+ Location: 1,13
+ Actor1107: t12
+ Owner: Neutral
+ Location: 89,59
+ Actor767: t07
+ Owner: Neutral
+ Location: 89,58
+ Actor1325: fenc
+ Owner: Neutral
+ Location: 20,25
+ Actor1326: fenc
+ Owner: Neutral
+ Location: 81,46
+ Actor1327: barl
+ Owner: Neutral
+ Location: 84,45
+ Actor1309: barl
+ Owner: Neutral
+ Location: 17,26
+ Actor1311: barl
+ Owner: Neutral
+ Location: 20,26
+ Actor1312: barl
+ Owner: Neutral
+ Location: 81,45
+ Actor695: t08
+ Owner: Neutral
+ Location: 39,59
+ Actor707: tc04
+ Owner: Neutral
+ Location: 4,65
+ Actor721: tc01
+ Owner: Neutral
+ Location: 5,66
+ Actor733: t06
+ Owner: Neutral
+ Location: 7,69
+ Actor734: t06
+ Owner: Neutral
+ Location: 94,0
+ Actor735: tc01
+ Owner: Neutral
+ Location: 13,69
+ Actor736: tc01
+ Owner: Neutral
+ Location: 87,0
+ Actor737: t06
+ Owner: Neutral
+ Location: 88,1
+ Actor739: t12
+ Owner: Neutral
+ Location: 2,64
+ Actor750: t15
+ Owner: Neutral
+ Location: 9,64
+ Actor754: t06
+ Owner: Neutral
+ Location: 95,8
+ Actor763: t06
+ Owner: Neutral
+ Location: 6,61
+ Actor764: t03
+ Owner: Neutral
+ Location: 1,66
+ Actor776: t03
+ Owner: Neutral
+ Location: 5,67
+ Actor777: t03
+ Owner: Neutral
+ Location: 96,2
+ Actor778: tc04
+ Owner: Neutral
+ Location: 95,3
+ Actor780: tc01
+ Owner: Neutral
+ Location: 96,4
+ Actor791: t12
+ Owner: Neutral
+ Location: 99,5
+ Actor751: tc02
+ Owner: Neutral
+ Location: 98,0
+ Actor792: tc01
+ Owner: Neutral
+ Location: 2,69
+ Actor794: t12
+ Owner: Neutral
+ Location: 2,68
+ Actor809: t03
+ Owner: Neutral
+ Location: 100,3
+ Actor765: t17
+ Owner: Neutral
+ Location: 99,1
+ Actor730: t08
+ Owner: Neutral
+ Location: 90,3
+ Actor732: tc02
+ Owner: Neutral
+ Location: 90,3
+ Actor722: t08
+ Owner: Neutral
+ Location: 10,67
+ Actor729: tc02
+ Owner: Neutral
+ Location: 10,67
+ Actor808: t03
+ Owner: Neutral
+ Location: 7,62
+ Actor810: t03
+ Owner: Neutral
+ Location: 94,7
+ Actor972: tc01
+ Owner: Neutral
+ Location: 87,4
+ Actor970: tc01
+ Owner: Neutral
+ Location: 13,65
+ Actor1178: tc03
+ Owner: Neutral
+ Location: 17,66
+ Actor1192: tc03
+ Owner: Neutral
+ Location: 83,4
+ Actor1193: t01
+ Owner: Neutral
+ Location: 8,65
+ Actor1201: t01
+ Owner: Neutral
+ Location: 93,4
+ Actor752: t15
+ Owner: Neutral
+ Location: 90,5
+ Actor1204: t07
+ Owner: Neutral
+ Location: 17,68
+ Actor1205: t07
+ Owner: Neutral
+ Location: 84,1
+ Actor1206: t02
+ Owner: Neutral
+ Location: 83,1
+ Actor1207: t02
+ Owner: Neutral
+ Location: 18,68
+ Actor1209: t11
+ Owner: Neutral
+ Location: 79,0
+ Actor1208: t15
+ Owner: Neutral
+ Location: 21,69
+ Actor1210: t12
+ Owner: Neutral
+ Location: 20,67
+ Actor1211: t03
+ Owner: Neutral
+ Location: 81,2
+ Actor1213: t02
+ Owner: Neutral
+ Location: 97,6
+ Actor1216: tc02
+ Owner: Neutral
+ Location: 98,9
+ Actor1217: t08
+ Owner: Neutral
+ Location: 98,9
+ Actor1242: t08
+ Owner: Neutral
+ Location: 6,65
+ Actor1247: t12
+ Owner: Neutral
+ Location: 95,5
+ Actor1248: t17
+ Owner: Neutral
+ Location: 86,3
+ Actor1243: t17
+ Owner: Neutral
+ Location: 15,66
+ Actor1249: t08
+ Owner: Neutral
+ Location: 14,69
+ Actor1251: t06
+ Owner: Neutral
+ Location: 3,57
+ Actor1250: t01
+ Owner: Neutral
+ Location: 98,12
+ Actor1252: t12
+ Owner: Neutral
+ Location: 100,11
+ Actor1253: t12
+ Owner: Neutral
+ Location: 1,58
+ Actor1239: t08
+ Owner: Neutral
+ Location: 2,61
+ Actor1255: tc02
+ Owner: Neutral
+ Location: 2,61
+ Actor1238: t08
+ Owner: Neutral
+ Location: 2,61
+ Actor1256: t02
+ Owner: Neutral
+ Location: 4,63
+ Actor1212: t08
+ Owner: Neutral
+ Location: 3,57
+ Actor1257: t03
+ Owner: Neutral
+ Location: 98,13
+ Actor1202: t06
+ Owner: Neutral
+ Location: 2,54
+ Actor1203: t06
+ Owner: Neutral
+ Location: 99,15
+ Actor1259: tc02
+ Owner: Neutral
+ Location: 4,54
+ Actor1258: tc01
+ Owner: Neutral
+ Location: 96,15
+ Actor1260: t12
+ Owner: Neutral
+ Location: 96,16
+ Actor1261: t08
+ Owner: Neutral
+ Location: 99,23
+ Actor1265: t07
+ Owner: Neutral
+ Location: 98,17
+ Actor1263: t07
+ Owner: Neutral
+ Location: 3,52
+ Actor1267: t07
+ Owner: Neutral
+ Location: 10,68
+ Actor1269: t07
+ Owner: Neutral
+ Location: 10,68
+ Actor1270: t08
+ Owner: Neutral
+ Location: 91,2
+ Actor1271: t01
+ Owner: Neutral
+ Location: 1,50
+ Actor1272: t01
+ Owner: Neutral
+ Location: 100,19
+ Actor1274: t07
+ Owner: Neutral
+ Location: 7,54
+ Actor1276: tc01
+ Owner: Neutral
+ Location: 8,56
+ Actor1240: tc02
+ Owner: Neutral
+ Location: 5,57
+ Actor1241: tc01
+ Owner: Neutral
+ Location: 95,12
+ Actor1278: t12
+ Owner: Neutral
+ Location: 95,13
+ Actor1275: t08
+ Owner: Neutral
+ Location: 96,12
+ Actor1279: t17
+ Owner: Neutral
+ Location: 5,58
+ Actor1132: t17
+ Owner: Neutral
+ Location: 25,68
+ Actor1282: t12
+ Owner: Neutral
+ Location: 81,4
+ Actor1283: t07
+ Owner: Neutral
+ Location: 78,2
+ Actor1138: t03
+ Owner: Neutral
+ Location: 76,1
+ Actor1273: t12
+ Owner: Neutral
+ Location: 98,20
+ Actor1281: t12
+ Owner: Neutral
+ Location: 16,63
+ Actor1284: t17
+ Owner: Neutral
+ Location: 85,6
+ Actor1173: t17
+ Owner: Neutral
+ Location: 20,65
+ Actor1081: t05
+ Owner: Neutral
+ Location: 23,67
+ Actor1218: tc01
+ Owner: Neutral
+ Location: 92,13
+ Actor1214: t16
+ Owner: Neutral
+ Location: 87,5
+ Actor1215: t16
+ Owner: Neutral
+ Location: 14,64
+ Actor1285: t06
+ Owner: Neutral
+ Location: 86,7
+ Actor1174: t06
+ Owner: Neutral
+ Location: 15,62
+ Actor1262: t08
+ Owner: Neutral
+ Location: 1,45
+ Actor1298: t02
+ Owner: Neutral
+ Location: 2,47
+ Actor1280: t17
+ Owner: Neutral
+ Location: 5,51
+ Actor1299: t08
+ Owner: Neutral
+ Location: 100,25
+ Actor1300: t03
+ Owner: Neutral
+ Location: 1,45
+ Actor1264: t06
+ Owner: Neutral
+ Location: 3,49
+ Actor1188: t08
+ Owner: Neutral
+ Location: 28,70
+ Actor1137: t03
+ Owner: Neutral
+ Location: 73,0
+
+Rules: rules.yaml
diff --git a/mods/ura/maps/a-nuclear-winter/rules.yaml b/mods/ura/maps/a-nuclear-winter/rules.yaml
new file mode 100644
index 0000000..d43c18b
--- /dev/null
+++ b/mods/ura/maps/a-nuclear-winter/rules.yaml
@@ -0,0 +1,20 @@
+World:
+ WeatherOverlay:
+ ChangingWindLevel: true
+ WindLevels: -5, -3, -2, 0, 2, 3, 5, 6
+ WindTick: 150, 550
+ InstantWindChanges: false
+ UseSquares: true
+ ParticleSize: 2, 3
+ ScatterDirection: -1, 1
+ Gravity: 1.00, 2.00
+ SwingOffset: 1.0, 1.5
+ SwingSpeed: 0.001, 0.025
+ SwingAmplitude: 1.0, 1.5
+ ParticleColors: ECECEC, E4E4E4, D0D0D0, BCBCBC
+ LineTailAlphaValue: 0
+ GlobalLightingPaletteEffect:
+ Red: 0.88
+ Green: 0.93
+ Blue: 1.06
+ Ambient: 1.09
diff --git a/mods/ura/maps/a-path-beyond.oramap b/mods/ura/maps/a-path-beyond.oramap
new file mode 100644
index 0000000..c26dfc3
Binary files /dev/null and b/mods/ura/maps/a-path-beyond.oramap differ
diff --git a/mods/ura/maps/agenda.oramap b/mods/ura/maps/agenda.oramap
new file mode 100644
index 0000000..c19a5bf
Binary files /dev/null and b/mods/ura/maps/agenda.oramap differ
diff --git a/mods/ura/maps/alaska-anarchy-redux.oramap b/mods/ura/maps/alaska-anarchy-redux.oramap
new file mode 100644
index 0000000..e3ac8cc
Binary files /dev/null and b/mods/ura/maps/alaska-anarchy-redux.oramap differ
diff --git a/mods/ura/maps/all-connected.oramap b/mods/ura/maps/all-connected.oramap
new file mode 100644
index 0000000..fbb2504
Binary files /dev/null and b/mods/ura/maps/all-connected.oramap differ
diff --git a/mods/ura/maps/allies-01/allies01.lua b/mods/ura/maps/allies-01/allies01.lua
new file mode 100644
index 0000000..ac1262b
--- /dev/null
+++ b/mods/ura/maps/allies-01/allies01.lua
@@ -0,0 +1,214 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+InsertionHelicopterType = "tran.insertion"
+InsertionPath = { InsertionEntry.Location, InsertionLZ.Location }
+ExtractionHelicopterType = "tran.extraction"
+ExtractionPath = { SouthReinforcementsPoint.Location, ExtractionLZ.Location }
+JeepReinforcements = { "jeep", "jeep" }
+TanyaReinforcements = { "e7.noautotarget" }
+EinsteinType = "einstein"
+FlareType = "flare"
+CruisersReinforcements = { "ca", "ca", "ca", "ca" }
+
+SendInsertionHelicopter = function()
+ local passengers = Reinforcements.ReinforceWithTransport(player, InsertionHelicopterType,
+ TanyaReinforcements, InsertionPath, { InsertionEntry.Location })[2]
+ local tanya = passengers[1]
+ Trigger.OnKilled(tanya, TanyaKilledInAction)
+ Trigger.AfterDelay(DateTime.Seconds(4), function()
+ Media.DisplayMessage("According to the rules of engagement I need your explicit orders to fire, Commander!", "Tanya")
+ end)
+end
+
+SendJeeps = function()
+ Reinforcements.Reinforce(player, JeepReinforcements, InsertionPath, DateTime.Seconds(2))
+ Media.PlaySpeechNotification(player, "ReinforcementsArrived")
+end
+
+RunInitialActivities = function()
+ SendInsertionHelicopter()
+ Patrol1.Hunt()
+ Patrol2.Hunt()
+ Patrol3.Hunt()
+ Patrol4.Hunt()
+ Civilian1.Wait(DateTime.Seconds(6))
+ Civilian2.Wait(DateTime.Seconds(6))
+ Civilian1.Hunt()
+ Civilian2.Hunt()
+end
+
+LabGuardsKilled = function()
+ CreateEinstein()
+
+ Trigger.AfterDelay(DateTime.Seconds(2), function()
+ Actor.Create(FlareType, true, { Owner = england, Location = ExtractionFlarePoint.Location })
+ Media.PlaySpeechNotification(player, "SignalFlareNorth")
+ SendExtractionHelicopter()
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(10), function()
+ Media.PlaySpeechNotification(player, "AlliedReinforcementsArrived")
+ Actor.Create("camera", true, { Owner = player, Location = CruiserCameraPoint.Location })
+ SendCruisers()
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(12), function()
+ for i = 0, 2 do
+ Trigger.AfterDelay(DateTime.Seconds(i), function()
+ Media.PlaySoundNotification(player, "AlertBuzzer")
+ end)
+ end
+ Utils.Do(sovietArmy, function(a)
+ if not a.IsDead and a.HasProperty("Hunt") then
+ Trigger.OnIdle(a, a.Hunt)
+ end
+ end)
+ end)
+end
+
+SendExtractionHelicopter = function()
+ heli = Reinforcements.ReinforceWithTransport(player, ExtractionHelicopterType, nil, ExtractionPath)[1]
+ if not einstein.IsDead then
+ Trigger.OnRemovedFromWorld(einstein, EvacuateHelicopter)
+ end
+ Trigger.OnKilled(heli, RescueFailed)
+ Trigger.OnRemovedFromWorld(heli, HelicopterGone)
+end
+
+EvacuateHelicopter = function()
+ if heli.HasPassengers then
+ heli.Move(ExtractionExitPoint.Location)
+ Trigger.OnIdle(heli, heli.Destroy)
+ end
+end
+
+SendCruisers = function()
+ local i = 1
+ Utils.Do(CruisersReinforcements, function(cruiser)
+ local ca = Actor.Create(cruiser, true, { Owner = england, Location = SouthReinforcementsPoint.Location + CVec.New(2 * i, 0) })
+ ca.Move(Map.NamedActor("CruiserPoint" .. i).Location)
+ i = i + 1
+ end)
+end
+
+LabDestroyed = function()
+ if not einstein then
+ RescueFailed()
+ end
+end
+
+RescueFailed = function()
+ Media.PlaySpeechNotification(player, "ObjectiveNotMet")
+ player.MarkFailedObjective(EinsteinSurviveObjective)
+end
+
+TanyaKilledInAction = function()
+ Media.PlaySpeechNotification(player, "ObjectiveNotMet")
+ player.MarkFailedObjective(TanyaSurviveObjective)
+end
+
+OilPumpDestroyed = function()
+ Trigger.AfterDelay(DateTime.Seconds(5), SendJeeps)
+end
+
+CiviliansKilled = function()
+ player.MarkFailedObjective(CivilProtectionObjective)
+ Media.PlaySpeechNotification(player, "ObjectiveNotMet")
+ collateralDamage = true
+end
+
+CreateEinstein = function()
+ player.MarkCompletedObjective(FindEinsteinObjective)
+ Media.PlaySpeechNotification(player, "ObjectiveMet")
+ einstein = Actor.Create(EinsteinType, true, { Location = EinsteinSpawnPoint.Location, Owner = player })
+ einstein.Scatter()
+ Trigger.OnKilled(einstein, RescueFailed)
+ ExtractObjective = player.AddPrimaryObjective("Wait for the helicopter and extract Einstein.")
+ Trigger.AfterDelay(DateTime.Seconds(1), function() Media.PlaySpeechNotification(player, "TargetFreed") end)
+end
+
+HelicopterGone = function()
+ if not heli.IsDead then
+ Media.PlaySpeechNotification(player, "TargetRescued")
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ player.MarkCompletedObjective(ExtractObjective)
+ player.MarkCompletedObjective(EinsteinSurviveObjective)
+ if not player.IsObjectiveFailed(TanyaSurviveObjective) then
+ player.MarkCompletedObjective(TanyaSurviveObjective)
+ end
+ if not collateralDamage then
+ player.MarkCompletedObjective(CivilProtectionObjective)
+ end
+ end)
+ end
+end
+
+MissionAccomplished = function()
+ Media.PlaySpeechNotification(player, "MissionAccomplished")
+end
+
+MissionFailed = function()
+ Media.PlaySpeechNotification(player, "MissionFailed")
+end
+
+SetUnitStances = function()
+ Utils.Do(Map.NamedActors, function(a)
+ if a.Owner == player then
+ a.Stance = "Defend"
+ end
+ end)
+end
+
+Tick = function()
+ ussr.Resources = ussr.Resources - (0.01 * ussr.ResourceCapacity / 25)
+end
+
+WorldLoaded = function()
+ player = Player.GetPlayer("Greece")
+ england = Player.GetPlayer("England")
+ ussr = Player.GetPlayer("USSR")
+
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ Trigger.OnPlayerLost(player, MissionFailed)
+ Trigger.OnPlayerWon(player, MissionAccomplished)
+
+ FindEinsteinObjective = player.AddPrimaryObjective("Find Einstein.")
+ TanyaSurviveObjective = player.AddPrimaryObjective("Tanya must survive.")
+ EinsteinSurviveObjective = player.AddPrimaryObjective("Einstein must survive.")
+ CivilProtectionObjective = player.AddSecondaryObjective("Protect all civilians.")
+
+ RunInitialActivities()
+
+ Trigger.OnKilled(Lab, LabDestroyed)
+ Trigger.OnKilled(OilPump, OilPumpDestroyed)
+
+ sovietArmy = ussr.GetGroundAttackers()
+
+ labGuardsTeam = { LabGuard1, LabGuard2, LabGuard3 }
+ Trigger.OnAllKilled(labGuardsTeam, LabGuardsKilled)
+
+ collateralDamage = false
+ civilianTeam = { Civilian1, Civilian2 }
+ Trigger.OnAnyKilled(civilianTeam, CiviliansKilled)
+
+ SetUnitStances()
+
+ Trigger.AfterDelay(DateTime.Seconds(5), function() Actor.Create("camera", true, { Owner = player, Location = BaseCameraPoint.Location }) end)
+
+ Camera.Position = InsertionLZ.CenterPosition
+end
diff --git a/mods/ura/maps/allies-01/map.bin b/mods/ura/maps/allies-01/map.bin
new file mode 100644
index 0000000..9531b64
Binary files /dev/null and b/mods/ura/maps/allies-01/map.bin differ
diff --git a/mods/ura/maps/allies-01/map.png b/mods/ura/maps/allies-01/map.png
new file mode 100644
index 0000000..29bfd56
Binary files /dev/null and b/mods/ura/maps/allies-01/map.png differ
diff --git a/mods/ura/maps/allies-01/map.yaml b/mods/ura/maps/allies-01/map.yaml
new file mode 100644
index 0000000..94b37b7
--- /dev/null
+++ b/mods/ura/maps/allies-01/map.yaml
@@ -0,0 +1,445 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 01: In the thick of it
+
+Author: Westwood Studios
+
+Tileset: SNOW
+
+MapSize: 128,128
+
+Bounds: 49,45,30,36
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@USSR:
+ Name: USSR
+ Faction: soviet
+ Color: FE1100
+ Enemies: Greece, England
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Greece:
+ Name: Greece
+ Playable: True
+ AllowBots: False
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: ABB7E4
+ LockSpawn: True
+ LockTeam: True
+ Allies: England
+ Enemies: USSR
+ PlayerReference@England:
+ Name: England
+ Faction: allies
+ Color: A1EF8C
+ Allies: Greece
+ Enemies: USSR
+
+Actors:
+ Actor0: t16
+ Location: 66,46
+ Owner: Neutral
+ Actor1: t17
+ Location: 59,46
+ Owner: Neutral
+ Actor2: tc04
+ Location: 75,44
+ Owner: Neutral
+ Actor3: tc05
+ Location: 76,45
+ Owner: Neutral
+ Actor4: t01
+ Location: 52,50
+ Owner: Neutral
+ Actor5: t02
+ Location: 70,68
+ Owner: Neutral
+ Actor6: t05
+ Location: 73,64
+ Owner: Neutral
+ Actor7: t14
+ Location: 59,50
+ Owner: Neutral
+ Actor8: t17
+ Location: 56,61
+ Owner: Neutral
+ Actor9: tc01
+ Location: 53,64
+ Owner: Neutral
+ Actor10: tc02
+ Location: 49,66
+ Owner: Neutral
+ Actor11: t07
+ Location: 49,59
+ Owner: Neutral
+ Actor12: tc05
+ Location: 49,60
+ Owner: Neutral
+ Actor13: tc04
+ Location: 50,58
+ Owner: Neutral
+ Actor14: tc03
+ Location: 69,50
+ Owner: Neutral
+ Actor15: t11
+ Location: 77,60
+ Owner: Neutral
+ Actor16: t01
+ Location: 78,59
+ Owner: Neutral
+ Actor17: tc01
+ Location: 76,56
+ Owner: Neutral
+ Actor18: t08
+ Location: 66,50
+ Owner: Neutral
+ Actor19: t17
+ Location: 57,56
+ Owner: Neutral
+ Actor20: t01
+ Location: 73,67
+ Owner: Neutral
+ Actor21: tc01
+ Location: 54,45
+ Owner: Neutral
+ Actor22: tsla
+ Location: 71,60
+ Owner: USSR
+ Actor23: powr
+ Location: 75,64
+ Owner: USSR
+ Actor24: powr
+ Location: 67,57
+ Owner: USSR
+ Actor25: powr
+ Location: 61,57
+ Owner: USSR
+ Actor27: fact
+ Location: 69,62
+ Owner: USSR
+ Actor28: dome
+ Location: 67,65
+ Owner: USSR
+ Actor29: barr
+ Location: 61,64
+ Owner: USSR
+ Actor30: tsla
+ Location: 67,68
+ Owner: USSR
+ Actor31: tsla
+ Location: 60,67
+ Owner: USSR
+ Actor32: weap
+ Location: 65,62
+ Owner: USSR
+ Actor33: proc
+ Location: 73,58
+ Owner: USSR
+ Actor34: kenn
+ Location: 64,65
+ Owner: USSR
+ Actor35: powr
+ Location: 65,57
+ Owner: USSR
+ Actor36: powr
+ Location: 77,64
+ Owner: USSR
+ Actor37: powr
+ Location: 75,67
+ Owner: USSR
+ Actor38: silo
+ Location: 59,64
+ Owner: USSR
+ Actor39: powr
+ Location: 77,67
+ Owner: USSR
+ Actor41: brl3
+ Location: 60,57
+ Owner: USSR
+ Actor42: barl
+ Location: 60,56
+ Owner: USSR
+ Actor43: barl
+ Location: 61,56
+ Owner: USSR
+ Actor44: brl3
+ Location: 60,58
+ Owner: USSR
+ Actor45: barl
+ Location: 58,56
+ Owner: USSR
+ Actor46: barl
+ Location: 59,59
+ Owner: USSR
+ Actor47: jeep
+ Location: 63,50
+ Owner: Greece
+ Facing: 128
+ Actor49: jeep
+ Location: 62,50
+ Owner: Greece
+ Facing: 128
+ Actor50: jeep
+ Location: 64,50
+ Owner: Greece
+ Facing: 128
+ Actor55: e2
+ Location: 73,66
+ Owner: USSR
+ SubCell: 1
+ Actor56: e1
+ Location: 62,67
+ Owner: USSR
+ Facing: 128
+ SubCell: 4
+ Actor57: e1
+ Location: 67,67
+ Owner: USSR
+ Facing: 160
+ SubCell: 3
+ Actor58: e1
+ Location: 65,67
+ Owner: USSR
+ Facing: 160
+ SubCell: 3
+ Actor59: e1
+ Location: 56,60
+ Owner: USSR
+ Facing: 96
+ SubCell: 1
+ Actor63: e1
+ Location: 58,60
+ Owner: USSR
+ Facing: 64
+ SubCell: 1
+ Actor64: e1
+ Location: 64,49
+ Owner: Greece
+ Facing: 128
+ SubCell: 1
+ Actor65: e1
+ Location: 63,49
+ Owner: Greece
+ Facing: 128
+ SubCell: 0
+ Actor66: e1
+ Location: 62,49
+ Owner: Greece
+ Facing: 160
+ SubCell: 2
+ Actor69: e2
+ Location: 62,56
+ Owner: USSR
+ Facing: 32
+ SubCell: 1
+ Actor70: e2
+ Location: 62,56
+ Owner: USSR
+ SubCell: 4
+ Actor71: e1
+ Location: 64,49
+ Owner: Greece
+ Facing: 128
+ SubCell: 2
+ Actor72: e1
+ Location: 62,49
+ Owner: Greece
+ Facing: 128
+ SubCell: 1
+ Actor48: fenc
+ Location: 53,60
+ Owner: USSR
+ Actor51: fenc
+ Location: 53,59
+ Owner: USSR
+ Actor52: fenc
+ Location: 54,59
+ Owner: USSR
+ Actor60: fenc
+ Location: 53,63
+ Owner: USSR
+ Actor61: fenc
+ Location: 54,63
+ Owner: USSR
+ Actor73: fenc
+ Location: 55,63
+ Owner: USSR
+ Actor74: fenc
+ Location: 55,64
+ Owner: USSR
+ Actor75: fenc
+ Location: 55,65
+ Owner: USSR
+ Actor76: fenc
+ Location: 55,66
+ Owner: USSR
+ Actor77: fenc
+ Location: 55,67
+ Owner: USSR
+ Actor78: fenc
+ Location: 56,67
+ Owner: USSR
+ Actor79: fenc
+ Location: 57,67
+ Owner: USSR
+ Actor80: fenc
+ Location: 58,67
+ Owner: USSR
+ Actor81: fenc
+ Location: 58,68
+ Owner: USSR
+ Actor82: fenc
+ Location: 73,70
+ Owner: USSR
+ Actor83: fenc
+ Location: 74,70
+ Owner: USSR
+ Actor84: fenc
+ Location: 78,70
+ Owner: USSR
+ Actor85: fenc
+ Location: 77,70
+ Owner: USSR
+ Actor86: fenc
+ Location: 76,70
+ Owner: USSR
+ Actor87: fenc
+ Location: 78,58
+ Owner: USSR
+ Actor99: fenc
+ Location: 78,59
+ Owner: USSR
+ Actor88: fenc
+ Location: 77,58
+ Owner: USSR
+ Actor89: fenc
+ Location: 78,57
+ Owner: USSR
+ Actor90: fenc
+ Location: 78,56
+ Owner: USSR
+ Actor91: fenc
+ Location: 77,56
+ Owner: USSR
+ Actor98: fenc
+ Location: 76,56
+ Owner: USSR
+ Actor92: fenc
+ Location: 75,56
+ Owner: USSR
+ Actor93: fenc
+ Location: 74,56
+ Owner: USSR
+ Actor94: fenc
+ Location: 74,55
+ Owner: USSR
+ Actor95: fenc
+ Location: 68,55
+ Owner: USSR
+ Actor96: fenc
+ Location: 69,55
+ Owner: USSR
+ Actor97: fenc
+ Location: 68,54
+ Owner: USSR
+ Lab: stek
+ Location: 61,60
+ Owner: USSR
+ OilPump: v19
+ Location: 59,57
+ Owner: USSR
+ LabGuard1: e1
+ Location: 64,61
+ Owner: USSR
+ SubCell: 4
+ LabGuard2: e1
+ Location: 63,63
+ Owner: USSR
+ Facing: 96
+ SubCell: 0
+ LabGuard3: e1
+ Location: 61,63
+ Owner: USSR
+ Facing: 128
+ SubCell: 0
+ Patrol1: dog
+ Location: 63,59
+ Owner: USSR
+ SubCell: 2
+ Patrol2: e1
+ Location: 64,58
+ Owner: USSR
+ SubCell: 3
+ Patrol3: e1
+ Location: 64,59
+ Owner: USSR
+ SubCell: 2
+ Patrol4: e1
+ Location: 62,55
+ Owner: USSR
+ SubCell: 4
+ Civilian1: c8
+ Location: 74,50
+ Owner: England
+ SubCell: 0
+ Civilian2: c7
+ Location: 76,48
+ Owner: England
+ SubCell: 3
+ EinsteinSpawnPoint: waypoint
+ Location: 62,61
+ Owner: Neutral
+ InsertionEntry: waypoint
+ Location: 63,45
+ Owner: Neutral
+ InsertionLZ: waypoint
+ Location: 63,47
+ Owner: Neutral
+ BaseCameraPoint: waypoint
+ Location: 64,63
+ Owner: Neutral
+ SouthReinforcementsPoint: waypoint
+ Location: 66,80
+ Owner: Neutral
+ ExtractionLZ: waypoint
+ Location: 53,49
+ Owner: Neutral
+ ExtractionFlarePoint: waypoint
+ Location: 54,48
+ Owner: Neutral
+ ExtractionExitPoint: waypoint
+ Location: 78,49
+ Owner: Neutral
+ CruiserCameraPoint: waypoint
+ Location: 69,67
+ Owner: Neutral
+ CruiserPoint1: waypoint
+ Location: 60,74
+ Owner: Neutral
+ CruiserPoint2: waypoint
+ Location: 64,75
+ Owner: Neutral
+ CruiserPoint4: waypoint
+ Location: 72,75
+ Owner: Neutral
+ CruiserPoint3: waypoint
+ Location: 68,76
+ Owner: Neutral
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
+
+Weapons: weapons.yaml
diff --git a/mods/ura/maps/allies-01/rules.yaml b/mods/ura/maps/allies-01/rules.yaml
new file mode 100644
index 0000000..c9066f8
--- /dev/null
+++ b/mods/ura/maps/allies-01/rules.yaml
@@ -0,0 +1,52 @@
+World:
+ LuaScript:
+ Scripts: allies01.lua
+ MissionData:
+ Briefing: Rescue Einstein from the Headquarters inside this Soviet complex.\n\nOnce found, evacuate him via the helicopter at the signal flare.\n\nEinstein and Tanya must be kept alive at all costs.\n\nBeware the Soviet's Tesla Coils.\n\nDirect Tanya to destroy the westmost power plants to take them off-line.
+ BackgroundVideo: prolog.vqa
+ BriefingVideo: ally1.vqa
+ StartVideo: landing.vqa
+ WinVideo: snowbomb.vqa
+ LossVideo: bmap.vqa
+
+TRAN.Extraction:
+ Inherits: TRAN
+ WithFacingSpriteBody:
+ RevealsShroud:
+ Range: 0c0
+ RejectsOrders:
+ -Selectable:
+ Cargo:
+ Types: Einstein
+ MaxWeight: 1
+ RenderSprites:
+ Image: tran
+ Interactable:
+
+TRAN.Insertion:
+ Inherits: TRAN.Extraction
+ WithFacingSpriteBody:
+ Cargo:
+ MaxWeight: 0
+ RenderSprites:
+ Image: tran
+ Interactable:
+
+EINSTEIN:
+ Passenger:
+ CargoType: Einstein
+
+^CivInfantry:
+ RevealsShroud:
+ Range: 0c0
+
+C8:
+ Inherits@2: ^ArmedCivilian
+
+JEEP:
+ Cargo:
+ Types: Infantry, Einstein
+
+TSLA:
+ Power:
+ Amount: -150
diff --git a/mods/ura/maps/allies-01/weapons.yaml b/mods/ura/maps/allies-01/weapons.yaml
new file mode 100644
index 0000000..14bfcdb
--- /dev/null
+++ b/mods/ura/maps/allies-01/weapons.yaml
@@ -0,0 +1,2 @@
+8Inch:
+ Range: 25c0
diff --git a/mods/ura/maps/allies-02/allies02.lua b/mods/ura/maps/allies-02/allies02.lua
new file mode 100644
index 0000000..6e86347
--- /dev/null
+++ b/mods/ura/maps/allies-02/allies02.lua
@@ -0,0 +1,288 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+ConstructionVehicleReinforcements = { "mcv" }
+ConstructionVehiclePath = { ReinforcementsEntryPoint.Location, DeployPoint.Location }
+
+JeepReinforcements = { "e1", "e1", "e1", "jeep" }
+JeepPath = { ReinforcementsEntryPoint.Location, ReinforcementsRallyPoint.Location }
+
+TruckReinforcements = { "truk", "truk", "truk" }
+TruckPath = { TruckEntryPoint.Location, TruckRallyPoint.Location }
+
+PathGuards = { PathGuard1, PathGuard2, PathGuard3, PathGuard4, PathGuard5, PathGuard6, PathGuard7, PathGuard8, PathGuard9, PathGuard10, PathGuard11, PathGuard12, PathGuard13, PathGuard14, PathGuard15 }
+
+IdlingUnits = { }
+
+if Map.LobbyOption("difficulty") == "easy" then
+ TimerTicks = DateTime.Minutes(10)
+ Announcements =
+ {
+ { speech = "TenMinutesRemaining", delay = DateTime.Seconds(3) },
+ { speech = "WarningFiveMinutesRemaining", delay = DateTime.Minutes(5) },
+ { speech = "WarningFourMinutesRemaining", delay = DateTime.Minutes(6) },
+ { speech = "WarningThreeMinutesRemaining", delay = DateTime.Minutes(7) },
+ { speech = "WarningTwoMinutesRemaining", delay = DateTime.Minutes(8) },
+ { speech = "WarningOneMinuteRemaining", delay = DateTime.Minutes(9) }
+ }
+
+elseif Map.LobbyOption("difficulty") == "normal" then
+ TimerTicks = DateTime.Minutes(5)
+ Announcements =
+ {
+ { speech = "WarningFiveMinutesRemaining", delay = DateTime.Seconds(3) },
+ { speech = "WarningFourMinutesRemaining", delay = DateTime.Minutes(1) },
+ { speech = "WarningThreeMinutesRemaining", delay = DateTime.Minutes(2) },
+ { speech = "WarningTwoMinutesRemaining", delay = DateTime.Minutes(3) },
+ { speech = "WarningOneMinuteRemaining", delay = DateTime.Minutes(4) }
+ }
+
+ InfantryTypes = { "e1", "e1", "e1", "e2", "e2", "e1" }
+ InfantryDelay = DateTime.Seconds(18)
+ AttackGroupSize = 5
+
+elseif Map.LobbyOption("difficulty") == "hard" then
+ TimerTicks = DateTime.Minutes(3)
+ Announcements =
+ {
+ { speech = "WarningThreeMinutesRemaining", delay = DateTime.Seconds(3) },
+ { speech = "WarningTwoMinutesRemaining", delay = DateTime.Minutes(1) },
+ { speech = "WarningOneMinuteRemaining", delay = DateTime.Minutes(2) },
+ }
+
+ InfantryTypes = { "e1", "e1", "e1", "e2", "e2", "e1" }
+ InfantryDelay = DateTime.Seconds(10)
+ VehicleTypes = { "ftrk" }
+ VehicleDelay = DateTime.Seconds(30)
+ AttackGroupSize = 7
+
+else
+ TimerTicks = DateTime.Minutes(1)
+ Announcements = { { speech = "WarningOneMinuteRemaining", delay = DateTime.Seconds(3) } }
+ ConstructionVehicleReinforcements = { "jeep" }
+
+ InfantryTypes = { "e1", "e1", "e1", "e2", "e2", "dog", "dog" }
+ InfantryDelay = DateTime.Seconds(10)
+ VehicleTypes = { "ftrk" }
+ VehicleDelay = DateTime.Minutes(1) + DateTime.Seconds(10)
+ AttackGroupSize = 5
+end
+
+SendJeepReinforcements = function()
+ Media.PlaySpeechNotification(player, "ReinforcementsArrived")
+ Reinforcements.Reinforce(player, JeepReinforcements, JeepPath, DateTime.Seconds(1))
+end
+
+RunInitialActivities = function()
+ Harvester.FindResources()
+ Trigger.OnKilled(Harvester, function() HarvesterKilled = true end)
+
+ Trigger.OnAllKilled(PathGuards, function()
+ player.MarkCompletedObjective(SecureObjective)
+ SendTrucks()
+ end)
+
+ if InfantryTypes then
+ Trigger.AfterDelay(InfantryDelay, InfantryProduction)
+ end
+
+ if VehicleTypes then
+ Trigger.AfterDelay(VehicleDelay, VehicleProduction)
+ end
+end
+
+InfantryProduction = function()
+ if SovietBarracks.IsDead then
+ return
+ end
+
+ local toBuild = { Utils.Random(InfantryTypes) }
+
+ if SovietKennel.IsDead and toBuild == "dog" then
+ toBuild = "e1"
+ end
+
+ ussr.Build(toBuild, function(unit)
+ IdlingUnits[#IdlingUnits + 1] = unit[1]
+ Trigger.AfterDelay(InfantryDelay, InfantryProduction)
+
+ if #IdlingUnits >= (AttackGroupSize * 1.5) then
+ SendAttack()
+ end
+ end)
+end
+
+VehicleProduction = function()
+ if SovietWarfactory.IsDead then
+ return
+ end
+
+ if HarvesterKilled then
+ ussr.Build({ "harv" }, function(harv)
+ harv[1].FindResources()
+ Trigger.OnKilled(harv[1], function() HarvesterKilled = true end)
+
+ HarvesterKilled = false
+ VehicleProduction()
+ end)
+ return
+ end
+
+ local toBuild = { Utils.Random(VehicleTypes) }
+ ussr.Build(toBuild, function(unit)
+ IdlingUnits[#IdlingUnits + 1] = unit[1]
+ Trigger.AfterDelay(VehicleDelay, VehicleProduction)
+
+ if #IdlingUnits >= (AttackGroupSize * 1.5) then
+ SendAttack()
+ end
+ end)
+end
+
+SendAttack = function()
+ local units = { }
+
+ for i = 0, AttackGroupSize, 1 do
+ local number = Utils.RandomInteger(1, #IdlingUnits)
+
+ if IdlingUnits[number] and not IdlingUnits[number].IsDead then
+ units[i] = IdlingUnits[number]
+ table.remove(IdlingUnits, number)
+ end
+ end
+
+ Utils.Do(units, function(unit)
+ if Map.LobbyOption("difficulty") ~= "tough" then
+ unit.AttackMove(DeployPoint.Location)
+ end
+ Trigger.OnIdle(unit, unit.Hunt)
+ end)
+end
+
+ticked = TimerTicks
+Tick = function()
+ ussr.Resources = ussr.Resources - (0.01 * ussr.ResourceCapacity / 25)
+
+ if ussr.HasNoRequiredUnits() then
+ player.MarkCompletedObjective(ConquestObjective)
+ end
+
+ if player.HasNoRequiredUnits() then
+ ussr.MarkCompletedObjective(ussrObj)
+ end
+
+ if ticked > 0 then
+ UserInterface.SetMissionText("The convoy arrives in " .. Utils.FormatTime(ticked), TimerColor)
+ ticked = ticked - 1
+ elseif ticked == 0 then
+ FinishTimer()
+ SendTrucks()
+ ticked = ticked - 1
+ end
+end
+
+FinishTimer = function()
+ for i = 0, 5, 1 do
+ local c = TimerColor
+ if i % 2 == 0 then
+ c = HSLColor.White
+ end
+
+ Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText("The convoy arrived!", c) end)
+ end
+ Trigger.AfterDelay(DateTime.Seconds(6), function() UserInterface.SetMissionText("") end)
+end
+
+ConvoyOnSite = false
+SendTrucks = function()
+ if not ConvoyOnSite then
+ ConvoyOnSite = true
+
+ ticked = 0
+ ConvoyObjective = player.AddPrimaryObjective("Escort the convoy.")
+
+ Media.PlaySpeechNotification(player, "ConvoyApproaching")
+ Trigger.AfterDelay(DateTime.Seconds(3), function()
+ ConvoyUnharmed = true
+ local trucks = Reinforcements.Reinforce(england, TruckReinforcements, TruckPath, DateTime.Seconds(1),
+ function(truck)
+ Trigger.OnIdle(truck, function() truck.Move(TruckExitPoint.Location) end)
+ end)
+ count = 0
+ Trigger.OnEnteredFootprint( { TruckExitPoint.Location }, function(a, id)
+ if a.Owner == england then
+ count = count + 1
+ a.Destroy()
+ if count == 3 then
+ player.MarkCompletedObjective(ConvoyObjective)
+ Trigger.RemoveFootprintTrigger(id)
+ end
+ end
+ end)
+ Trigger.OnAnyKilled(trucks, ConvoyCasualites)
+ end)
+ end
+end
+
+ConvoyCasualites = function()
+ Media.PlaySpeechNotification(player, "ConvoyUnitLost")
+ if ConvoyUnharmed then
+ ConvoyUnharmed = false
+ Trigger.AfterDelay(DateTime.Seconds(1), function() player.MarkFailedObjective(ConvoyObjective) end)
+ end
+end
+
+ConvoyTimerAnnouncements = function()
+ for i = #Announcements, 1, -1 do
+ Trigger.AfterDelay(Announcements[i].delay, function()
+ if not ConvoyOnSite then
+ Media.PlaySpeechNotification(player, Announcements[i].speech)
+ end
+ end)
+ end
+end
+
+WorldLoaded = function()
+ player = Player.GetPlayer("Greece")
+ england = Player.GetPlayer("England")
+ ussr = Player.GetPlayer("USSR")
+
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "MissionFailed")
+ end)
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "MissionAccomplished")
+ end)
+
+ ussrObj = ussr.AddPrimaryObjective("Deny the allies!")
+
+ SecureObjective = player.AddPrimaryObjective("Secure the convoy's path.")
+ ConquestObjective = player.AddPrimaryObjective("Eliminate the entire soviet presence in this area.")
+
+ Trigger.AfterDelay(DateTime.Seconds(1), function() Media.PlaySpeechNotification(allies, "MissionTimerInitialised") end)
+
+ RunInitialActivities()
+
+ Reinforcements.Reinforce(player, ConstructionVehicleReinforcements, ConstructionVehiclePath)
+ Trigger.AfterDelay(DateTime.Seconds(5), SendJeepReinforcements)
+ Trigger.AfterDelay(DateTime.Seconds(10), SendJeepReinforcements)
+
+ Camera.Position = ReinforcementsEntryPoint.CenterPosition
+ TimerColor = player.Color
+
+ ConvoyTimerAnnouncements()
+end
diff --git a/mods/ura/maps/allies-02/map.bin b/mods/ura/maps/allies-02/map.bin
new file mode 100644
index 0000000..a76f3d1
Binary files /dev/null and b/mods/ura/maps/allies-02/map.bin differ
diff --git a/mods/ura/maps/allies-02/map.png b/mods/ura/maps/allies-02/map.png
new file mode 100644
index 0000000..29bfd56
Binary files /dev/null and b/mods/ura/maps/allies-02/map.png differ
diff --git a/mods/ura/maps/allies-02/map.yaml b/mods/ura/maps/allies-02/map.yaml
new file mode 100644
index 0000000..3825f6e
--- /dev/null
+++ b/mods/ura/maps/allies-02/map.yaml
@@ -0,0 +1,672 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 02: Five to one
+
+Author: Westwood Studios
+
+Tileset: SNOW
+
+MapSize: 128,128
+
+Bounds: 43,44,50,42
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@USSR:
+ Name: USSR
+ Faction: soviet
+ Color: FE1100
+ Enemies: Greece, England
+ PlayerReference@England:
+ Name: England
+ NonCombatant: True
+ Faction: allies
+ Color: A1EF8C
+ Allies: Greece
+ Enemies: USSR
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Greece:
+ Name: Greece
+ Playable: True
+ AllowBots: False
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: ABB7E4
+ LockSpawn: True
+ LockTeam: True
+ Allies: England
+ Enemies: USSR
+
+Actors:
+ EntryPoint: t06
+ Location: 75,80
+ Owner: Neutral
+ Actor1: t03
+ Location: 75,72
+ Owner: Neutral
+ Actor2: t08
+ Location: 92,60
+ Owner: Neutral
+ Actor3: t12
+ Location: 92,63
+ Owner: Neutral
+ Actor4: t01
+ Location: 89,62
+ Owner: Neutral
+ Actor5: t16
+ Location: 61,44
+ Owner: Neutral
+ Actor6: t14
+ Location: 58,49
+ Owner: Neutral
+ Actor7: t10
+ Location: 55,46
+ Owner: Neutral
+ Actor8: t10
+ Location: 43,56
+ Owner: Neutral
+ Actor9: t01
+ Location: 45,56
+ Owner: Neutral
+ Actor10: t17
+ Location: 53,66
+ Owner: Neutral
+ Actor11: tc01
+ Location: 59,60
+ Owner: Neutral
+ Actor12: tc01
+ Location: 63,74
+ Owner: Neutral
+ Actor13: t07
+ Location: 44,77
+ Owner: Neutral
+ Actor14: t08
+ Location: 50,78
+ Owner: Neutral
+ Actor15: t11
+ Location: 51,71
+ Owner: Neutral
+ Actor16: t10
+ Location: 68,77
+ Owner: Neutral
+ Actor17: tc02
+ Location: 69,72
+ Owner: Neutral
+ Actor18: tc03
+ Location: 71,52
+ Owner: Neutral
+ Actor19: tc04
+ Location: 67,76
+ Owner: Neutral
+ Actor20: t17
+ Location: 70,55
+ Owner: Neutral
+ Actor21: tc01
+ Location: 70,54
+ Owner: Neutral
+ Actor22: t06
+ Location: 67,54
+ Owner: Neutral
+ Actor23: t01
+ Location: 67,44
+ Owner: Neutral
+ Actor24: tc02
+ Location: 67,51
+ Owner: Neutral
+ Actor25: tc04
+ Location: 67,49
+ Owner: Neutral
+ Actor26: t17
+ Location: 69,50
+ Owner: Neutral
+ Actor27: t08
+ Location: 64,55
+ Owner: Neutral
+ Actor28: t16
+ Location: 72,62
+ Owner: Neutral
+ Actor29: t15
+ Location: 71,63
+ Owner: Neutral
+ Actor30: tc04
+ Location: 67,66
+ Owner: Neutral
+ Actor31: tc05
+ Location: 68,67
+ Owner: Neutral
+ Actor32: t17
+ Location: 67,62
+ Owner: Neutral
+ Actor33: tc02
+ Location: 44,68
+ Owner: Neutral
+ Actor34: t12
+ Location: 93,81
+ Owner: Neutral
+ Actor35: t03
+ Location: 93,55
+ Owner: Neutral
+ Actor36: t02
+ Location: 93,57
+ Owner: Neutral
+ Actor37: t02
+ Location: 79,47
+ Owner: Neutral
+ Actor38: t11
+ Location: 77,56
+ Owner: Neutral
+ Actor39: t01
+ Location: 92,45
+ Owner: Neutral
+ Actor40: t05
+ Location: 93,54
+ Owner: Neutral
+ Actor41: t06
+ Location: 93,82
+ Owner: Neutral
+ Actor42: t07
+ Location: 87,44
+ Owner: Neutral
+ Actor43: t14
+ Location: 46,84
+ Owner: Neutral
+ Actor44: t08
+ Location: 48,85
+ Owner: Neutral
+ Actor45: t07
+ Location: 51,84
+ Owner: Neutral
+ Actor46: tc01
+ Location: 62,84
+ Owner: Neutral
+ Actor47: t11
+ Location: 59,71
+ Owner: Neutral
+ Actor48: t01
+ Location: 45,44
+ Owner: Neutral
+ Actor49: tc04
+ Location: 45,53
+ Owner: Neutral
+ Actor50: t11
+ Location: 54,55
+ Owner: Neutral
+ Actor51: t10
+ Location: 84,71
+ Owner: Neutral
+ Actor52: tc05
+ Location: 90,83
+ Owner: Neutral
+ Actor53: tc01
+ Location: 89,84
+ Owner: Neutral
+ Actor54: tc04
+ Location: 85,81
+ Owner: Neutral
+ Actor55: tc05
+ Location: 43,71
+ Owner: Neutral
+ Actor56: tc03
+ Location: 43,70
+ Owner: Neutral
+ Actor58: fact
+ Location: 62,61
+ Owner: USSR
+ Actor59: proc
+ Location: 53,62
+ Owner: USSR
+ FreeActor: False
+ Actor60: powr
+ Location: 57,62
+ Owner: USSR
+ Actor62: powr
+ Location: 59,62
+ Owner: USSR
+ Actor64: brl3
+ Location: 65,59
+ Owner: USSR
+ Actor65: barl
+ Location: 66,60
+ Owner: USSR
+ Actor66: barl
+ Location: 65,60
+ Owner: USSR
+ Actor67: brl3
+ Location: 64,60
+ Owner: USSR
+ Actor68: barl
+ Location: 65,61
+ Owner: USSR
+ Actor69: v19
+ Location: 67,60
+ Owner: USSR
+ Actor70: v19
+ Location: 67,59
+ Owner: USSR
+ Actor71: barl
+ Location: 65,62
+ Owner: USSR
+ Actor72: silo
+ Location: 54,68
+ Owner: USSR
+ Actor73: brl3
+ Location: 55,70
+ Owner: USSR
+ Actor74: brl3
+ Location: 54,70
+ Owner: USSR
+ Actor75: barl
+ Location: 53,69
+ Owner: USSR
+ Actor76: barl
+ Location: 54,69
+ Owner: USSR
+ Actor77: barl
+ Location: 55,71
+ Owner: USSR
+ Actor78: brl3
+ Location: 56,71
+ Owner: USSR
+ Actor79: brl3
+ Location: 53,68
+ Owner: USSR
+ Actor80: v19
+ Location: 56,70
+ Owner: USSR
+ Actor81: barl
+ Location: 55,69
+ Owner: USSR
+ Actor82: brl3
+ Location: 72,51
+ Owner: USSR
+ Actor83: barl
+ Location: 72,50
+ Owner: USSR
+ Actor84: barl
+ Location: 74,48
+ Owner: USSR
+ Actor85: barl
+ Location: 72,49
+ Owner: USSR
+ Actor86: barl
+ Location: 73,48
+ Owner: USSR
+ Actor87: v19
+ Location: 75,48
+ Owner: USSR
+ Health: 52
+ Actor88: v19
+ Location: 62,57
+ Owner: USSR
+ Actor89: v19
+ Location: 60,58
+ Owner: USSR
+ Actor90: brl3
+ Location: 62,56
+ Owner: USSR
+ Actor91: brl3
+ Location: 61,58
+ Owner: USSR
+ Actor92: barl
+ Location: 61,57
+ Owner: USSR
+ Actor93: brl3
+ Location: 59,58
+ Owner: USSR
+ Actor94: barl
+ Location: 58,58
+ Owner: USSR
+ Actor96: dog
+ Location: 53,58
+ Owner: USSR
+ SubCell: 1
+ Actor97: dog
+ Location: 65,68
+ Owner: USSR
+ Facing: 64
+ SubCell: 3
+ Actor98: dog
+ Location: 65,66
+ Owner: USSR
+ Facing: 32
+ SubCell: 2
+ Actor99: dog
+ Location: 59,70
+ Owner: USSR
+ Facing: 160
+ SubCell: 2
+ Actor100: e2
+ Location: 61,56
+ Owner: USSR
+ Facing: 32
+ SubCell: 3
+ Actor101: e2
+ Location: 59,57
+ Owner: USSR
+ Facing: 224
+ SubCell: 4
+ Actor102: e2
+ Location: 64,67
+ Owner: USSR
+ Facing: 96
+ SubCell: 0
+ Actor103: e1
+ Location: 77,74
+ Owner: USSR
+ Facing: 128
+ SubCell: 2
+ Actor104: e1
+ Location: 80,74
+ Owner: USSR
+ Facing: 160
+ SubCell: 0
+ Actor105: e1
+ Location: 56,68
+ Owner: USSR
+ Facing: 160
+ SubCell: 3
+ Actor107: e1
+ Location: 73,60
+ Owner: USSR
+ Facing: 32
+ SubCell: 2
+ Actor108: e1
+ Location: 74,61
+ Owner: USSR
+ Facing: 224
+ SubCell: 1
+ Actor109: e1
+ Location: 72,60
+ Owner: USSR
+ Facing: 64
+ SubCell: 0
+ Actor115: e1
+ Location: 60,64
+ Owner: USSR
+ Facing: 224
+ SubCell: 3
+ Actor116: e2
+ Location: 68,45
+ Owner: USSR
+ Facing: 96
+ SubCell: 0
+ Actor118: e1
+ Location: 57,69
+ Owner: USSR
+ Facing: 96
+ SubCell: 1
+ Actor119: e2
+ Location: 60,70
+ Owner: USSR
+ Facing: 32
+ SubCell: 0
+ Actor120: e1
+ Location: 89,48
+ Owner: Greece
+ Facing: 160
+ SubCell: 1
+ Actor121: e1
+ Location: 87,48
+ Owner: Greece
+ Facing: 192
+ SubCell: 4
+ Actor122: e1
+ Location: 87,48
+ Owner: Greece
+ Facing: 192
+ SubCell: 1
+ Actor123: e1
+ Location: 88,48
+ Owner: Greece
+ Facing: 128
+ SubCell: 4
+ Actor124: e1
+ Location: 88,49
+ Owner: Greece
+ Facing: 128
+ SubCell: 1
+ Actor125: dog
+ Location: 78,75
+ Owner: USSR
+ Facing: 160
+ SubCell: 1
+ Actor126: e1
+ Location: 71,61
+ Owner: USSR
+ Facing: 160
+ SubCell: 0
+ Actor127: dog
+ Location: 70,61
+ Owner: USSR
+ Facing: 96
+ SubCell: 4
+ Actor136: e2
+ Location: 69,66
+ Owner: USSR
+ SubCell: 3
+ Actor137: e2
+ Location: 73,51
+ Owner: USSR
+ Facing: 224
+ SubCell: 4
+ Actor138: medi
+ Location: 88,48
+ Owner: Greece
+ Facing: 160
+ SubCell: 1
+ Actor139: fenc
+ Location: 57,75
+ Owner: USSR
+ Actor140: fenc
+ Location: 57,76
+ Owner: USSR
+ Actor141: fenc
+ Location: 57,77
+ Owner: USSR
+ Actor142: fenc
+ Location: 58,77
+ Owner: USSR
+ Actor143: fenc
+ Location: 58,78
+ Owner: USSR
+ Actor144: fenc
+ Location: 57,78
+ Owner: USSR
+ Actor145: fenc
+ Location: 58,75
+ Owner: USSR
+ Actor146: fenc
+ Location: 58,74
+ Owner: USSR
+ Actor147: fenc
+ Location: 57,74
+ Owner: USSR
+ Actor148: fenc
+ Location: 66,67
+ Owner: USSR
+ Actor149: fenc
+ Location: 66,68
+ Owner: USSR
+ Actor150: fenc
+ Location: 66,69
+ Owner: USSR
+ Actor151: fenc
+ Location: 66,70
+ Owner: USSR
+ Actor152: fenc
+ Location: 65,70
+ Owner: USSR
+ Actor153: fenc
+ Location: 64,70
+ Owner: USSR
+ Actor154: fenc
+ Location: 63,70
+ Owner: USSR
+ Actor155: fenc
+ Location: 51,68
+ Owner: USSR
+ Actor156: fenc
+ Location: 52,68
+ Owner: USSR
+ Actor157: fenc
+ Location: 52,67
+ Owner: USSR
+ Actor158: fenc
+ Location: 52,66
+ Owner: USSR
+ Actor159: fenc
+ Location: 51,66
+ Owner: USSR
+ Actor160: fenc
+ Location: 51,62
+ Owner: USSR
+ Actor161: fenc
+ Location: 51,63
+ Owner: USSR
+ Actor162: fenc
+ Location: 67,58
+ Owner: USSR
+ Actor163: fenc
+ Location: 66,58
+ Owner: USSR
+ Actor164: fenc
+ Location: 66,59
+ Owner: USSR
+ Actor165: fenc
+ Location: 47,51
+ Owner: USSR
+ Actor166: fenc
+ Location: 47,50
+ Owner: USSR
+ Actor167: fenc
+ Location: 46,50
+ Owner: USSR
+ Actor168: fenc
+ Location: 51,50
+ Owner: USSR
+ Actor169: fenc
+ Location: 50,50
+ Owner: USSR
+ Actor170: fenc
+ Location: 50,51
+ Owner: USSR
+ SovietKennel: kenn
+ Location: 58,68
+ Owner: USSR
+ SovietBarracks: barr
+ Location: 56,66
+ Owner: USSR
+ SovietWarfactory: weap
+ Location: 60,66
+ Owner: USSR
+ Harvester: harv
+ Location: 55,65
+ Owner: USSR
+ Facing: 160
+ PathGuard1: e1
+ Location: 50,72
+ Owner: USSR
+ Facing: 160
+ SubCell: 4
+ PathGuard2: e1
+ Location: 49,58
+ Owner: USSR
+ Facing: 192
+ SubCell: 0
+ PathGuard3: e1
+ Location: 51,58
+ Owner: USSR
+ Facing: 32
+ SubCell: 1
+ PathGuard4: e1
+ Location: 60,78
+ Owner: USSR
+ Facing: 192
+ SubCell: 4
+ PathGuard5: e2
+ Location: 62,79
+ Owner: USSR
+ Facing: 160
+ SubCell: 4
+ PathGuard6: e1
+ Location: 48,72
+ Owner: USSR
+ Facing: 96
+ SubCell: 0
+ PathGuard7: e1
+ Location: 50,46
+ Owner: USSR
+ Facing: 32
+ SubCell: 1
+ PathGuard8: e1
+ Location: 49,47
+ Owner: USSR
+ Facing: 64
+ SubCell: 0
+ PathGuard9: e2
+ Location: 49,49
+ Owner: USSR
+ Facing: 160
+ SubCell: 1
+ PathGuard10: e2
+ Location: 47,46
+ Owner: USSR
+ Facing: 96
+ SubCell: 3
+ PathGuard11: e2
+ Location: 48,63
+ Owner: USSR
+ SubCell: 1
+ PathGuard12: e1
+ Location: 49,63
+ Owner: USSR
+ Facing: 96
+ SubCell: 2
+ PathGuard13: e1
+ Location: 74,81
+ Owner: USSR
+ Facing: 64
+ SubCell: 3
+ PathGuard14: e2
+ Location: 75,83
+ Owner: USSR
+ Facing: 96
+ SubCell: 0
+ PathGuard15: e1
+ Location: 57,82
+ Owner: USSR
+ Facing: 160
+ SubCell: 1
+ TruckEntryPoint: waypoint
+ Location: 49,44
+ Owner: Neutral
+ TruckRallyPoint: waypoint
+ Location: 49,76
+ Owner: Neutral
+ TruckExitPoint: waypoint
+ Location: 80,85
+ Owner: Neutral
+ ReinforcementsEntryPoint: waypoint
+ Location: 90,44
+ Owner: Neutral
+ ReinforcementsRallyPoint: waypoint
+ Location: 88,49
+ Owner: Neutral
+ DeployPoint: waypoint
+ Location: 89,51
+ Owner: Neutral
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
diff --git a/mods/ura/maps/allies-02/rules.yaml b/mods/ura/maps/allies-02/rules.yaml
new file mode 100644
index 0000000..93ffa83
--- /dev/null
+++ b/mods/ura/maps/allies-02/rules.yaml
@@ -0,0 +1,129 @@
+Player:
+ PlayerResources:
+ DefaultCash: 5700
+
+World:
+ LuaScript:
+ Scripts: allies02.lua
+ MissionData:
+ Briefing: A critical supply convoy is due through this area in 10 minutes, but Soviet forces have blocked the road in several places.\n\nUnless you can clear them out, those supplies will never make it to the front.\n\nThe convoy will come from the northwest, and time is short so work quickly.
+ BriefingVideo: ally2.vqa
+ StartVideo: mcv.vqa
+ WinVideo: montpass.vqa
+ LossVideo: frozen.vqa
+ SmudgeLayer@CRATER:
+ InitialSmudges:
+ 60,79: cr1,0
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ hard: Hard
+ tough: Real tough guy
+ Default: easy
+
+APWR:
+ Buildable:
+ Prerequisites: ~disabled
+
+FIX:
+ Buildable:
+ Prerequisites: ~disabled
+
+SYRD:
+ Buildable:
+ Prerequisites: ~disabled
+
+WEAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+DOME:
+ Buildable:
+ Prerequisites: ~disabled
+
+HPAD:
+ Buildable:
+ Prerequisites: ~disabled
+
+ATEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+BRIK:
+ Buildable:
+ Prerequisites: ~disabled
+
+HBOX:
+ Buildable:
+ Prerequisites: ~disabled
+
+PBOX:
+ Buildable:
+ Prerequisites: ~disabled
+
+GUN:
+ Buildable:
+ Prerequisites: ~disabled
+
+AGUN:
+ Buildable:
+ Prerequisites: ~disabled
+
+GAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+PDOX:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+E6:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPY:
+ Buildable:
+ Prerequisites: ~disabled
+
+MECH:
+ Buildable:
+ Prerequisites: ~disabled
+
+E7:
+ Buildable:
+ Prerequisites: ~disabled
+
+FACF:
+ Buildable:
+ Prerequisites: ~disabled
+
+WEAF:
+ Buildable:
+ Prerequisites: ~disabled
+
+SYRF:
+ Buildable:
+ Prerequisites: ~disabled
+
+DOMF:
+ Buildable:
+ Prerequisites: ~disabled
+
+ATEF:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLF:
+ Buildable:
+ Prerequisites: ~disabled
+
+PDOF:
+ Buildable:
+ Prerequisites: ~disabled
diff --git a/mods/ura/maps/allies-03a/allies03a.lua b/mods/ura/maps/allies-03a/allies03a.lua
new file mode 100644
index 0000000..f53dd2d
--- /dev/null
+++ b/mods/ura/maps/allies-03a/allies03a.lua
@@ -0,0 +1,278 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+ProductionUnits = { "e1", "e1", "e2" }
+ProductionBuildings = { USSRBarracks1, USSRBarracks2 }
+TransportReinforcements = { "e1", "e1", "e1", "e2", "e2" }
+FirstUSSRBase = { USSRFlameTower1, USSRBarracks1, USSRPowerPlant1, USSRPowerPlant2, USSRConstructionYard1, USSRTechCenter, USSRBaseGuard1, USSRBaseGuard2, USSRBaseGuard3, USSRBaseGuard4, USSRBaseGuard5, USSRBaseGuard6, USSRBaseGuard7, USSRBaseGuard8 }
+SecondUSSRBase = { USSRBarracks2, USSRKennel, USSRRadarDome, USSRBaseGuard10, USSRBaseGuard11, USSRBaseGuard12, USSRBaseGuard13, USSRBaseGuard14 }
+Prisoners = { PrisonedMedi1, PrisonedMedi2, PrisonedEngi }
+CameraTriggerArea = { CPos.New(43, 64), CPos.New(44, 64), CPos.New(45, 64), CPos.New(46, 64), CPos.New(47, 64) }
+WaterTransportTriggerArea = { CPos.New(39, 54), CPos.New(40, 54), CPos.New(41, 54), CPos.New(42, 54), CPos.New(43, 54), CPos.New(44, 54), CPos.New(45, 54) }
+ParadropTriggerArea = { CPos.New(81, 60), CPos.New(82, 60), CPos.New(83, 60), CPos.New(63, 63), CPos.New(64, 63), CPos.New(65, 63), CPos.New(66, 63), CPos.New(67, 63), CPos.New(68, 63), CPos.New(69, 63), CPos.New(70, 63), CPos.New(71, 63), CPos.New(72, 63) }
+ReinforcementsTriggerArea = { CPos.New(96, 55), CPos.New(97, 55), CPos.New(97, 56), CPos.New(98, 56) }
+
+if Map.LobbyOption("difficulty") == "easy" then
+ TanyaType = "e7"
+else
+ TanyaType = "e7.noautotarget"
+end
+
+IdleHunt = function(actor)
+ Trigger.OnIdle(actor, function(a)
+ if a.IsInWorld then
+ a.Hunt()
+ end
+ end)
+end
+
+ProduceUnits = function(factory, count)
+ if ussr.IsProducing("e1") then
+ Trigger.AfterDelay(DateTime.Seconds(5), function() ProduceUnits(factory, count) end)
+ return
+ end
+
+ local units = { }
+ for i = 0, count, 1 do
+ local type = Utils.Random(ProductionUnits)
+ units[i] = type
+ end
+
+ if not factory.IsDead then
+ factory.IsPrimaryBuilding = true
+ ussr.Build(units, function(soldiers)
+ Utils.Do(soldiers, function(unit) IdleHunt(unit) end)
+ end)
+ end
+end
+
+SendAlliedUnits = function()
+ Camera.Position = TanyaWaypoint.CenterPosition
+
+ local Artillery = Actor.Create("arty", true, { Owner = player, Location = AlliedUnitsEntry.Location })
+ local Tanya = Actor.Create(TanyaType, true, { Owner = player, Location = AlliedUnitsEntry.Location })
+
+ if TanyaType == "e7.noautotarget" then
+ Trigger.AfterDelay(DateTime.Seconds(2), function()
+ Media.DisplayMessage("According to the rules of engagement I need your explicit orders to fire, Commander!", "Tanya")
+ end)
+ end
+ Artillery.Stance = "HoldFire"
+
+ Tanya.Move(TanyaWaypoint.Location)
+ Artillery.Move(ArtilleryWaypoint.Location)
+
+ Trigger.OnKilled(Tanya, function() player.MarkFailedObjective(TanyaSurvive) end)
+end
+
+SendUSSRParadrops = function()
+ local powerproxy = Actor.Create("powerproxy.paratroopers", false, { Owner = ussr })
+ local unitsA = powerproxy.SendParatroopers(ParadropLZ.CenterPosition, false, 128 + 32)
+ local unitsB = powerproxy.SendParatroopers(ParadropLZ.CenterPosition, false, 128 - 32)
+
+ Utils.Do(unitsA, function(unit)
+ IdleHunt(unit)
+ end)
+ Utils.Do(unitsB, function(unit)
+ IdleHunt(unit)
+ end)
+
+ powerproxy.Destroy()
+end
+
+SendUSSRWaterTransport = function()
+ local units = Reinforcements.ReinforceWithTransport(ussr, "lst", TransportReinforcements, { WaterTransportEntry.Location, WaterTransportLoadout.Location }, { WaterTransportExit.Location })[2]
+ Utils.Do(units, function(unit) IdleHunt(unit) end)
+end
+
+SendUSSRTankReinforcements = function()
+ local camera = Actor.Create("camera", true, { Owner = player, Location = USSRReinforcementsCameraWaypoint.Location })
+ local ussrTank = Reinforcements.Reinforce(ussr, { "3tnk" }, { USSRReinforcementsEntryWaypoint.Location, USSRReinforcementsRallyWaypoint1.Location, USSRReinforcementsRallyWaypoint2.Location })[1]
+ Trigger.OnRemovedFromWorld(ussrTank, function()
+ Trigger.AfterDelay(DateTime.Seconds(3), function()
+ if not camera.IsDead then
+ camera.Destroy()
+ end
+ end)
+ end)
+end
+
+InitPlayers = function()
+ player = Player.GetPlayer("Greece")
+ ussr = Player.GetPlayer("USSR")
+
+ ussr.Cash = 10000
+end
+
+InitObjectives = function()
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+
+ KillBridges = player.AddPrimaryObjective("Destroy all bridges.")
+ TanyaSurvive = player.AddPrimaryObjective("Tanya must survive.")
+ KillUSSR = player.AddSecondaryObjective("Destroy all Soviet oil pumps.")
+ FreePrisoners = player.AddSecondaryObjective("Free all Allied soldiers and keep them alive.")
+ ussr.AddPrimaryObjective("Bridges must not be destroyed.")
+
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ Trigger.OnPlayerLost(player, function()
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ Media.PlaySpeechNotification(player, "MissionFailed")
+ end)
+ end)
+ Trigger.OnPlayerWon(player, function()
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ Media.PlaySpeechNotification(player, "MissionAccomplished")
+ end)
+ end)
+end
+
+InitTriggers = function()
+ Utils.Do(ussr.GetGroundAttackers(), function(unit)
+ Trigger.OnDamaged(unit, function() IdleHunt(unit) end)
+ end)
+
+ Trigger.OnAnyKilled(Prisoners, function() player.MarkFailedObjective(FreePrisoners) end)
+
+ Trigger.OnKilled(USSRTechCenter, function()
+ Actor.Create("moneycrate", true, { Owner = ussr, Location = USSRMoneyCrateSpawn.Location })
+ end)
+
+ Trigger.OnKilled(ExplosiveBarrel, function()
+
+ -- We need the first bridge which is returned
+ local bridge = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "bridge1" end)[1]
+
+ if not bridge.IsDead then
+ bridge.Kill()
+ end
+ end)
+
+ local baseTrigger = Trigger.OnEnteredFootprint(CameraTriggerArea, function(a, id)
+ if a.Owner == player and not baseCamera then
+ Trigger.RemoveFootprintTrigger(id)
+ baseCamera = Actor.Create("camera", true, { Owner = player, Location = BaseCameraWaypoint.Location })
+ end
+ end)
+
+ Utils.Do(FirstUSSRBase, function(unit)
+ Trigger.OnDamaged(unit, function()
+ if not FirstBaseAlert then
+ FirstBaseAlert = true
+ if not baseCamera then
+ baseCamera = Actor.Create("camera", true, { Owner = player, Location = BaseCameraWaypoint.Location })
+ Trigger.RemoveFootprintTrigger(baseTrigger)
+ end
+ Utils.Do(FirstUSSRBase, function(unit)
+ if unit.HasProperty("Move") then
+ IdleHunt(unit)
+ end
+ end)
+ for i = 0, 2 do
+ Trigger.AfterDelay(DateTime.Seconds(i), function()
+ Media.PlaySoundNotification(player, "AlertBuzzer")
+ end)
+ end
+ ProduceUnits(ProductionBuildings[1], Utils.RandomInteger(4, 8))
+ end
+ end)
+ end)
+ Trigger.OnAllRemovedFromWorld(FirstUSSRBase, function()
+ if baseCamera then
+ baseCamera.Destroy()
+ end
+ end)
+
+ Utils.Do(SecondUSSRBase, function(unit)
+ Trigger.OnDamaged(unit, function()
+ if not SecondBaseAlert then
+ SecondBaseAlert = true
+ Utils.Do(SecondUSSRBase, function(unit)
+ if unit.HasProperty("Move") then
+ IdleHunt(unit)
+ end
+ end)
+ for i = 0, 2 do
+ Trigger.AfterDelay(DateTime.Seconds(i), function()
+ Media.PlaySoundNotification(player, "AlertBuzzer")
+ end)
+ end
+ ProduceUnits(ProductionBuildings[2], Utils.RandomInteger(5, 7))
+ end
+ end)
+ end)
+
+ Trigger.OnCapture(USSRRadarDome, function(self)
+ largeCamera = Actor.Create("camera.verylarge", true, { Owner = player, Location = LargeCameraWaypoint.Location })
+ Trigger.ClearAll(self)
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ Trigger.OnRemovedFromWorld(self, function()
+ Trigger.ClearAll(self)
+ if largeCamera.IsInWorld then largeCamera.Destroy() end
+ end)
+ end)
+ end)
+
+ Trigger.OnEnteredFootprint(WaterTransportTriggerArea, function(a, id)
+ if a.Owner == player and not waterTransportTriggered then
+ waterTransportTriggered = true
+ Trigger.RemoveFootprintTrigger(id)
+ SendUSSRWaterTransport()
+ end
+ end)
+ Trigger.OnEnteredFootprint(ParadropTriggerArea, function(a, id)
+ if a.Owner == player and not paradropsTriggered then
+ paradropsTriggered = true
+ Trigger.RemoveFootprintTrigger(id)
+ SendUSSRParadrops()
+ end
+ end)
+ Trigger.OnEnteredFootprint(ReinforcementsTriggerArea, function(a, id)
+ if a.Owner == player and not reinforcementsTriggered then
+ reinforcementsTriggered = true
+ Trigger.RemoveFootprintTrigger(id)
+ Trigger.AfterDelay(DateTime.Seconds(1), function() SendUSSRTankReinforcements() end)
+ end
+ end)
+
+ Trigger.AfterDelay(0, function()
+ local bridges = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "bridge1" end)
+
+ Trigger.OnAllKilled(bridges, function()
+ player.MarkCompletedObjective(KillBridges)
+ player.MarkCompletedObjective(TanyaSurvive)
+
+ -- The prisoners are free once their guards are dead
+ if PGuard1.IsDead and PGuard2.IsDead then
+ player.MarkCompletedObjective(FreePrisoners)
+ end
+ end)
+
+ local oilPumps = ussr.GetActorsByType("v19")
+
+ Trigger.OnAllKilled(oilPumps, function()
+ player.MarkCompletedObjective(KillUSSR)
+ end)
+ end)
+end
+
+WorldLoaded = function()
+
+ InitPlayers()
+
+ InitObjectives()
+ InitTriggers()
+ SendAlliedUnits()
+end
diff --git a/mods/ura/maps/allies-03a/map.bin b/mods/ura/maps/allies-03a/map.bin
new file mode 100644
index 0000000..21c7fc1
Binary files /dev/null and b/mods/ura/maps/allies-03a/map.bin differ
diff --git a/mods/ura/maps/allies-03a/map.png b/mods/ura/maps/allies-03a/map.png
new file mode 100644
index 0000000..29bfd56
Binary files /dev/null and b/mods/ura/maps/allies-03a/map.png differ
diff --git a/mods/ura/maps/allies-03a/map.yaml b/mods/ura/maps/allies-03a/map.yaml
new file mode 100644
index 0000000..873f7be
--- /dev/null
+++ b/mods/ura/maps/allies-03a/map.yaml
@@ -0,0 +1,1312 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 03a: Dead End
+
+Author: Westwood Studios
+
+Tileset: SNOW
+
+MapSize: 128,128
+
+Bounds: 35,48,72,36
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@USSR:
+ Name: USSR
+ Faction: soviet
+ Color: FE1100
+ Enemies: Greece
+ PlayerReference@Greece:
+ Name: Greece
+ Playable: True
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: E2E6F5
+ Enemies: USSR
+
+Actors:
+ Actor0: brik
+ Location: 89,71
+ Owner: Neutral
+ Actor1: brik
+ Location: 90,71
+ Owner: Neutral
+ Actor2: brik
+ Location: 88,72
+ Owner: Neutral
+ Actor3: brik
+ Location: 89,72
+ Owner: Neutral
+ Actor4: brik
+ Location: 90,72
+ Owner: Neutral
+ Actor5: brik
+ Location: 87,73
+ Owner: Neutral
+ Actor6: brik
+ Location: 88,73
+ Owner: Neutral
+ Actor7: brik
+ Location: 77,74
+ Owner: Neutral
+ Actor8: brik
+ Location: 93,74
+ Owner: Neutral
+ Actor9: brik
+ Location: 94,74
+ Owner: Neutral
+ Actor10: brik
+ Location: 77,75
+ Owner: Neutral
+ Actor11: brik
+ Location: 93,75
+ Owner: Neutral
+ Actor12: brik
+ Location: 94,75
+ Owner: Neutral
+ Actor13: brik
+ Location: 76,76
+ Owner: Neutral
+ Actor14: brik
+ Location: 77,76
+ Owner: Neutral
+ Actor15: brik
+ Location: 94,76
+ Owner: Neutral
+ Actor16: brik
+ Location: 76,77
+ Owner: Neutral
+ Actor17: brik
+ Location: 77,77
+ Owner: Neutral
+ Actor18: brik
+ Location: 76,81
+ Owner: Neutral
+ Actor19: brik
+ Location: 77,81
+ Owner: Neutral
+ Actor20: brik
+ Location: 76,82
+ Owner: Neutral
+ Actor21: brik
+ Location: 77,82
+ Owner: Neutral
+ Actor22: brik
+ Location: 77,83
+ Owner: Neutral
+ Actor23: tc01
+ Location: 52,63
+ Owner: Neutral
+ Actor24: t17
+ Location: 49,64
+ Owner: Neutral
+ Actor25: t14
+ Location: 45,59
+ Owner: Neutral
+ Actor26: tc02
+ Location: 47,59
+ Owner: Neutral
+ Actor27: tc03
+ Location: 46,56
+ Owner: Neutral
+ Actor28: tc02
+ Location: 80,57
+ Owner: Neutral
+ Actor29: t12
+ Location: 40,48
+ Owner: Neutral
+ Actor30: t08
+ Location: 76,68
+ Owner: Neutral
+ Actor31: t01
+ Location: 76,64
+ Owner: Neutral
+ Actor32: tc01
+ Location: 72,47
+ Owner: Neutral
+ Actor33: tc05
+ Location: 49,58
+ Owner: Neutral
+ Actor34: tc04
+ Location: 47,57
+ Owner: Neutral
+ Actor35: tc03
+ Location: 50,54
+ Owner: Neutral
+ Actor36: tc04
+ Location: 45,54
+ Owner: Neutral
+ Actor37: tc01
+ Location: 46,53
+ Owner: Neutral
+ Actor38: tc01
+ Location: 42,56
+ Owner: Neutral
+ Actor39: tc04
+ Location: 50,49
+ Owner: Neutral
+ Actor40: tc03
+ Location: 51,51
+ Owner: Neutral
+ Actor41: tc05
+ Location: 44,49
+ Owner: Neutral
+ Actor42: tc01
+ Location: 81,49
+ Owner: Neutral
+ Actor43: t16
+ Location: 78,53
+ Owner: Neutral
+ Actor44: tc05
+ Location: 58,65
+ Owner: Neutral
+ Actor45: tc02
+ Location: 50,64
+ Owner: Neutral
+ Actor46: tc01
+ Location: 95,73
+ Owner: Neutral
+ Actor47: tc05
+ Location: 96,70
+ Owner: Neutral
+ Actor48: tc04
+ Location: 70,59
+ Owner: Neutral
+ Actor49: tc03
+ Location: 64,61
+ Owner: Neutral
+ Actor50: t01
+ Location: 63,70
+ Owner: Neutral
+ Actor51: t02
+ Location: 67,72
+ Owner: Neutral
+ Actor52: t03
+ Location: 65,74
+ Owner: Neutral
+ Actor53: t10
+ Location: 62,71
+ Owner: Neutral
+ Actor54: tc02
+ Location: 62,77
+ Owner: Neutral
+ Actor55: tc03
+ Location: 68,76
+ Owner: Neutral
+ Actor56: tc05
+ Location: 56,82
+ Owner: Neutral
+ Actor57: tc01
+ Location: 58,78
+ Owner: Neutral
+ Actor58: t10
+ Location: 39,71
+ Owner: Neutral
+ Actor59: t14
+ Location: 46,76
+ Owner: Neutral
+ Actor60: t15
+ Location: 54,78
+ Owner: Neutral
+ Actor61: t13
+ Location: 43,68
+ Owner: Neutral
+ Actor62: tc05
+ Location: 38,79
+ Owner: Neutral
+ Actor63: tc04
+ Location: 35,77
+ Owner: Neutral
+ Actor64: tc03
+ Location: 36,80
+ Owner: Neutral
+ Actor65: tc02
+ Location: 37,81
+ Owner: Neutral
+ Actor66: tc01
+ Location: 41,81
+ Owner: Neutral
+ Actor67: t07
+ Location: 96,77
+ Owner: Neutral
+ Actor68: t12
+ Location: 97,76
+ Owner: Neutral
+ Actor69: tc03
+ Location: 80,52
+ Owner: Neutral
+ Actor70: tc03
+ Location: 44,57
+ Owner: Neutral
+ Actor71: tc03
+ Location: 97,82
+ Owner: Neutral
+ Actor72: tc04
+ Location: 98,78
+ Owner: Neutral
+ Actor73: t11
+ Location: 74,70
+ Owner: Neutral
+ Actor74: t16
+ Location: 74,71
+ Owner: Neutral
+ Actor75: t17
+ Location: 73,68
+ Owner: Neutral
+ Actor76: tc02
+ Location: 65,51
+ Owner: Neutral
+ Actor77: tc04
+ Location: 67,47
+ Owner: Neutral
+ Actor78: tc05
+ Location: 57,48
+ Owner: Neutral
+ Actor79: tc03
+ Location: 67,50
+ Owner: Neutral
+ Actor80: tc05
+ Location: 91,48
+ Owner: Neutral
+ Actor81: tc04
+ Location: 90,47
+ Owner: Neutral
+ Actor82: tc01
+ Location: 94,48
+ Owner: Neutral
+ Actor83: t17
+ Location: 89,48
+ Owner: Neutral
+ Actor84: tc05
+ Location: 61,55
+ Owner: Neutral
+ Actor85: tc04
+ Location: 64,54
+ Owner: Neutral
+ Actor86: tc05
+ Location: 104,56
+ Owner: Neutral
+ Actor87: tc04
+ Location: 104,58
+ Owner: Neutral
+ Actor88: tc01
+ Location: 75,82
+ Owner: Neutral
+ Actor89: tc02
+ Location: 73,82
+ Owner: Neutral
+ Actor90: t01
+ Location: 87,55
+ Owner: Neutral
+ Actor91: t02
+ Location: 84,53
+ Owner: Neutral
+ Actor92: t02
+ Location: 90,59
+ Owner: Neutral
+ Actor93: t02
+ Location: 96,61
+ Owner: Neutral
+ Actor94: t05
+ Location: 93,58
+ Owner: Neutral
+ Actor95: t05
+ Location: 90,53
+ Owner: Neutral
+ Actor96: t16
+ Location: 92,57
+ Owner: Neutral
+ Actor97: tc01
+ Location: 88,58
+ Owner: Neutral
+ Actor98: tc02
+ Location: 90,54
+ Owner: Neutral
+ Actor99: tc05
+ Location: 100,61
+ Owner: Neutral
+ Actor100: tc02
+ Location: 94,60
+ Owner: Neutral
+ Actor101: tc01
+ Location: 82,55
+ Owner: Neutral
+ Actor102: t01
+ Location: 90,62
+ Owner: Neutral
+ Actor103: t06
+ Location: 98,58
+ Owner: Neutral
+ Actor104: tc04
+ Location: 88,68
+ Owner: Neutral
+ Actor105: tc03
+ Location: 90,66
+ Owner: Neutral
+ Actor106: tc02
+ Location: 96,80
+ Owner: Neutral
+ Actor107: barl
+ Location: 81,67
+ Owner: USSR
+ Actor108: barl
+ Location: 81,66
+ Owner: USSR
+ Actor109: barl
+ Location: 85,70
+ Owner: USSR
+ Actor110: barl
+ Location: 83,66
+ Owner: USSR
+ Actor111: barl
+ Location: 85,69
+ Owner: USSR
+ Actor112: barl
+ Location: 72,55
+ Owner: USSR
+ Actor113: brl3
+ Location: 70,55
+ Owner: USSR
+ Actor114: barl
+ Location: 74,55
+ Owner: USSR
+ Actor115: barl
+ Location: 75,57
+ Owner: USSR
+ Actor116: barl
+ Location: 75,56
+ Owner: USSR
+ Actor117: brl3
+ Location: 76,56
+ Owner: USSR
+ Actor118: barl
+ Location: 75,54
+ Owner: USSR
+ Actor119: brl3
+ Location: 75,55
+ Owner: USSR
+ Actor120: barl
+ Location: 69,56
+ Owner: USSR
+ Actor121: brl3
+ Location: 71,54
+ Owner: USSR
+ Actor122: brl3
+ Location: 69,55
+ Owner: USSR
+ Actor123: barl
+ Location: 73,54
+ Owner: USSR
+ Actor124: brl3
+ Location: 73,53
+ Owner: USSR
+ Actor125: brl3
+ Location: 74,53
+ Owner: USSR
+ Actor126: brl3
+ Location: 75,53
+ Owner: USSR
+ Actor127: v19
+ Location: 70,56
+ Owner: USSR
+ Actor128: v19
+ Location: 70,54
+ Owner: USSR
+ Actor129: v19
+ Location: 72,54
+ Owner: USSR
+ Actor130: v19
+ Location: 74,54
+ Owner: USSR
+ Actor131: brl3
+ Location: 84,65
+ Owner: USSR
+ Actor132: barl
+ Location: 85,67
+ Owner: USSR
+ Actor133: v19
+ Location: 83,65
+ Owner: USSR
+ Actor134: barl
+ Location: 78,70
+ Owner: USSR
+ Actor135: brl3
+ Location: 77,71
+ Owner: USSR
+ Actor136: barl
+ Location: 76,71
+ Owner: USSR
+ Actor137: barl
+ Location: 78,71
+ Owner: USSR
+ Actor138: barl
+ Location: 76,72
+ Owner: USSR
+ Actor139: brl3
+ Location: 78,68
+ Owner: USSR
+ Actor140: brl3
+ Location: 82,67
+ Owner: USSR
+ Actor141: brl3
+ Location: 85,64
+ Owner: USSR
+ Actor141b: brl3
+ Location: 85,64
+ Owner: USSR
+ Actor142: v19
+ Location: 87,66
+ Owner: USSR
+ Actor143: v19
+ Location: 85,68
+ Owner: USSR
+ Actor144: v19
+ Location: 82,66
+ Owner: USSR
+ Actor145: v19
+ Location: 85,63
+ Owner: USSR
+ Actor146: v04
+ Location: 54,52
+ Owner: Neutral
+ Actor147: v07
+ Location: 53,57
+ Owner: Neutral
+ Actor148: brl3
+ Location: 73,55
+ Owner: USSR
+ Actor149: barl
+ Location: 71,56
+ Owner: USSR
+ Actor150: barl
+ Location: 74,58
+ Owner: USSR
+ Actor151: brl3
+ Location: 59,60
+ Owner: USSR
+ Actor152: brl3
+ Location: 57,60
+ Owner: USSR
+ Actor153: barl
+ Location: 59,59
+ Owner: USSR
+ Actor154: v19
+ Location: 59,61
+ Owner: USSR
+ Actor155: v19
+ Location: 57,61
+ Owner: USSR
+ Actor156: brl3
+ Location: 58,61
+ Owner: USSR
+ Actor157: barl
+ Location: 56,59
+ Owner: USSR
+ Actor162: brl3
+ Location: 55,67
+ Owner: USSR
+ Actor163: brl3
+ Location: 54,67
+ Owner: USSR
+ Actor164: barl
+ Location: 53,69
+ Owner: USSR
+ Actor165: brl3
+ Location: 58,70
+ Owner: USSR
+ Actor166: brl3
+ Location: 55,68
+ Owner: USSR
+ Actor167: brl3
+ Location: 53,68
+ Owner: USSR
+ Actor168: brl3
+ Location: 53,67
+ Owner: USSR
+ Actor169: barl
+ Location: 54,70
+ Owner: USSR
+ Actor170: v19
+ Location: 54,68
+ Owner: USSR
+ Actor179: brl3
+ Location: 77,66
+ Owner: USSR
+ Actor180: brl3
+ Location: 77,67
+ Owner: USSR
+ Actor181: barl
+ Location: 76,67
+ Owner: USSR
+ Actor182: barl
+ Location: 77,68
+ Owner: USSR
+ Actor183: barl
+ Location: 78,69
+ Owner: USSR
+ Actor185: brl3
+ Location: 57,70
+ Owner: USSR
+ Actor186: barl
+ Location: 56,70
+ Owner: USSR
+ Actor187: barl
+ Location: 55,69
+ Owner: USSR
+ Actor188: brl3
+ Location: 59,68
+ Owner: USSR
+ Actor189: barl
+ Location: 59,69
+ Owner: USSR
+ Actor191: brl3
+ Location: 56,67
+ Owner: USSR
+ Actor191b: brl3
+ Location: 56,67
+ Owner: USSR
+ Actor192: barl
+ Location: 56,68
+ Owner: USSR
+ Actor194: brl3
+ Location: 102,49
+ Owner: USSR
+ Actor195: barl
+ Location: 101,49
+ Owner: USSR
+ Actor196: brl3
+ Location: 100,49
+ Owner: USSR
+ Actor196b: brl3
+ Location: 100,49
+ Owner: USSR
+ Actor197: barl
+ Location: 100,48
+ Owner: USSR
+ Actor198: barl
+ Location: 99,48
+ Owner: USSR
+ Actor199: brl3
+ Location: 102,48
+ Owner: USSR
+ Actor200: brl3
+ Location: 99,51
+ Owner: USSR
+ Actor200b: brl3
+ Location: 99,51
+ Owner: USSR
+ Actor201: brl3
+ Location: 98,51
+ Owner: USSR
+ Actor202: v19
+ Location: 101,48
+ Owner: USSR
+ Actor203: brl3
+ Location: 96,50
+ Owner: USSR
+ Actor204: barl
+ Location: 97,51
+ Owner: USSR
+ Actor205: v19
+ Location: 95,50
+ Owner: USSR
+ Actor206: v19
+ Location: 94,51
+ Owner: USSR
+ Actor207: brl3
+ Location: 94,50
+ Owner: USSR
+ Actor208: barl
+ Location: 93,51
+ Owner: USSR
+ Actor209: v19
+ Location: 102,67
+ Owner: USSR
+ Actor210: v19
+ Location: 101,69
+ Owner: USSR
+ Actor211: v19
+ Location: 100,71
+ Owner: USSR
+ Actor212: brl3
+ Location: 102,66
+ Owner: USSR
+ Actor213: barl
+ Location: 102,68
+ Owner: USSR
+ Actor214: brl3
+ Location: 101,70
+ Owner: USSR
+ Actor215: brl3
+ Location: 99,72
+ Owner: USSR
+ Actor216: brl3
+ Location: 100,72
+ Owner: USSR
+ Actor217: brl3
+ Location: 101,72
+ Owner: USSR
+ Actor218: barl
+ Location: 101,71
+ Owner: USSR
+ Actor219: brl3
+ Location: 99,66
+ Owner: USSR
+ Actor220: barl
+ Location: 98,66
+ Owner: USSR
+ Actor221: barl
+ Location: 100,67
+ Owner: USSR
+ Actor222: brl3
+ Location: 101,68
+ Owner: USSR
+ Actor223: brl3
+ Location: 101,66
+ Owner: USSR
+ Actor224: brl3
+ Location: 100,70
+ Owner: USSR
+ Actor226: brl3
+ Location: 88,64
+ Owner: USSR
+ Actor227: barl
+ Location: 87,65
+ Owner: USSR
+ Actor228: brl3
+ Location: 86,66
+ Owner: USSR
+ Actor229: brl3
+ Location: 99,69
+ Owner: USSR
+ Actor230: barl
+ Location: 98,68
+ Owner: USSR
+ Actor231: brl3
+ Location: 99,71
+ Owner: USSR
+ Actor232: v19
+ Location: 91,68
+ Owner: USSR
+ Actor233: brl3
+ Location: 91,69
+ Owner: USSR
+ Actor233b: brl3
+ Location: 91,69
+ Owner: USSR
+ Actor234: v19
+ Location: 84,51
+ Owner: USSR
+ Actor235: v19
+ Location: 87,51
+ Owner: USSR
+ Actor236: v19
+ Location: 86,52
+ Owner: USSR
+ Actor237: brl3
+ Location: 84,52
+ Owner: USSR
+ Actor238: brl3
+ Location: 85,51
+ Owner: USSR
+ Actor239: brl3
+ Location: 86,51
+ Owner: USSR
+ Actor240: barl
+ Location: 88,52
+ Owner: USSR
+ Actor240b: brl3
+ Location: 87,52
+ Owner: USSR
+ Actor241: brl3
+ Location: 85,52
+ Owner: USSR
+ Actor242: barl
+ Location: 85,53
+ Owner: USSR
+ Actor243: barl
+ Location: 89,52
+ Owner: USSR
+ Actor244: brl3
+ Location: 68,66
+ Owner: USSR
+ Actor245: barl
+ Location: 69,67
+ Owner: USSR
+ Actor246: brl3
+ Location: 69,66
+ Owner: USSR
+ Actor247: barl
+ Location: 70,67
+ Owner: USSR
+ Actor249: v2rl
+ Location: 76,66
+ Owner: USSR
+ Health: 52
+ Facing: 224
+ Actor250: e1.autotarget
+ Location: 42,56
+ Owner: USSR
+ Facing: 32
+ SubCell: 3
+ Actor251: e1.autotarget
+ Location: 51,53
+ Owner: USSR
+ Facing: 64
+ SubCell: 4
+ Actor252: e1.autotarget
+ Location: 47,53
+ Owner: USSR
+ Facing: 192
+ SubCell: 3
+ Actor253: e2
+ Location: 79,66
+ Owner: USSR
+ Facing: 160
+ SubCell: 2
+ Actor254: e2
+ Location: 80,67
+ Owner: USSR
+ Facing: 128
+ SubCell: 1
+ Actor255: e2
+ Location: 79,68
+ Owner: USSR
+ Facing: 96
+ SubCell: 0
+ Actor256: e2
+ Location: 80,68
+ Owner: USSR
+ Facing: 224
+ SubCell: 1
+ Actor259: e1.autotarget
+ Location: 54,55
+ Owner: USSR
+ Facing: 32
+ SubCell: 2
+ Actor260: e1.autotarget
+ Location: 70,65
+ Owner: USSR
+ Facing: 160
+ SubCell: 4
+ Actor261: e2.autotarget
+ Location: 71,65
+ Owner: USSR
+ Facing: 32
+ SubCell: 2
+ Actor262: dog
+ Location: 69,63
+ Owner: USSR
+ Facing: 160
+ SubCell: 1
+ Actor263: e1.autotarget
+ Location: 72,62
+ Owner: USSR
+ Facing: 32
+ SubCell: 1
+ Actor264: e1.autotarget
+ Location: 74,62
+ Owner: USSR
+ Facing: 192
+ SubCell: 1
+ Actor270: e1.autotarget
+ Location: 65,71
+ Owner: USSR
+ Facing: 160
+ SubCell: 0
+ Actor271: e1.autotarget
+ Location: 64,70
+ Owner: USSR
+ Facing: 160
+ SubCell: 0
+ Actor272: e1.autotarget
+ Location: 66,70
+ Owner: USSR
+ Facing: 128
+ SubCell: 4
+ Actor277: e1
+ Location: 78,77
+ Owner: USSR
+ Facing: 160
+ SubCell: 3
+ Actor281: dog
+ Location: 85,81
+ Owner: USSR
+ Facing: 224
+ SubCell: 1
+ Actor282: dog
+ Location: 96,73
+ Owner: USSR
+ Facing: 160
+ SubCell: 1
+ Actor287: e1.autotarget
+ Location: 84,53
+ Owner: USSR
+ SubCell: 4
+ Actor288: e1.autotarget
+ Location: 90,53
+ Owner: USSR
+ Facing: 160
+ SubCell: 4
+ Actor289: e1.autotarget
+ Location: 88,58
+ Owner: USSR
+ SubCell: 4
+ Actor290: e2.autotarget
+ Location: 89,58
+ Owner: USSR
+ Facing: 96
+ SubCell: 3
+ Actor291: e2.autotarget
+ Location: 83,55
+ Owner: USSR
+ Facing: 160
+ SubCell: 3
+ Actor292: e2.autotarget
+ Location: 98,58
+ Owner: USSR
+ Facing: 160
+ SubCell: 4
+ Actor293: e2.autotarget
+ Location: 96,61
+ Owner: USSR
+ Facing: 128
+ SubCell: 4
+ Actor294: e1.autotarget
+ Location: 93,58
+ Owner: USSR
+ Facing: 64
+ SubCell: 4
+ Actor295: e1.autotarget
+ Location: 90,59
+ Owner: USSR
+ Facing: 160
+ SubCell: 4
+ Actor296: e1.autotarget
+ Location: 97,66
+ Owner: USSR
+ Facing: 32
+ SubCell: 0
+ Actor297: e1.autotarget
+ Location: 94,65
+ Owner: USSR
+ SubCell: 4
+ Actor298: e1.autotarget
+ Location: 96,65
+ Owner: USSR
+ Facing: 192
+ SubCell: 3
+ Actor299: e2.autotarget
+ Location: 99,67
+ Owner: USSR
+ Facing: 192
+ SubCell: 0
+ Actor300: e2.autotarget
+ Location: 99,68
+ Owner: USSR
+ Facing: 128
+ SubCell: 4
+ Actor301: e2.autotarget
+ Location: 98,67
+ Owner: USSR
+ Facing: 160
+ SubCell: 1
+ Actor302: e1.autotarget
+ Location: 87,61
+ Owner: USSR
+ Facing: 160
+ SubCell: 2
+ Actor309: fenc
+ Location: 72,63
+ Owner: USSR
+ Actor311: fenc
+ Location: 69,57
+ Owner: USSR
+ Actor307: fenc
+ Location: 83,50
+ Owner: USSR
+ Actor304: fenc
+ Location: 73,63
+ Owner: USSR
+ Actor306: fenc
+ Location: 71,63
+ Owner: USSR
+ Actor312: fenc
+ Location: 71,62
+ Owner: USSR
+ Actor313: fenc
+ Location: 70,62
+ Owner: USSR
+ Actor314: fenc
+ Location: 68,57
+ Owner: USSR
+ Actor315: fenc
+ Location: 70,57
+ Owner: USSR
+ Actor316: fenc
+ Location: 71,57
+ Owner: USSR
+ Actor317: fenc
+ Location: 76,57
+ Owner: USSR
+ Actor318: fenc
+ Location: 76,58
+ Owner: USSR
+ Actor319: fenc
+ Location: 75,58
+ Owner: USSR
+ Actor320: fenc
+ Location: 75,59
+ Owner: USSR
+ Actor321: fenc
+ Location: 60,68
+ Owner: USSR
+ Actor322: fenc
+ Location: 61,68
+ Owner: USSR
+ Actor323: fenc
+ Location: 61,69
+ Owner: USSR
+ Actor324: fenc
+ Location: 61,70
+ Owner: USSR
+ Actor325: fenc
+ Location: 61,71
+ Owner: USSR
+ Actor326: fenc
+ Location: 61,72
+ Owner: USSR
+ Actor327: fenc
+ Location: 61,73
+ Owner: USSR
+ Actor328: fenc
+ Location: 61,74
+ Owner: USSR
+ Actor329: fenc
+ Location: 60,74
+ Owner: USSR
+ Actor330: fenc
+ Location: 59,74
+ Owner: USSR
+ Actor331: fenc
+ Location: 59,75
+ Owner: USSR
+ Actor332: fenc
+ Location: 58,75
+ Owner: USSR
+ Actor333: fenc
+ Location: 57,75
+ Owner: USSR
+ Actor334: fenc
+ Location: 56,75
+ Owner: USSR
+ Actor335: fenc
+ Location: 55,75
+ Owner: USSR
+ Actor336: fenc
+ Location: 54,75
+ Owner: USSR
+ Actor337: fenc
+ Location: 53,75
+ Owner: USSR
+ Actor338: fenc
+ Location: 52,75
+ Owner: USSR
+ Actor339: fenc
+ Location: 51,75
+ Owner: USSR
+ Actor340: fenc
+ Location: 50,75
+ Owner: USSR
+ Actor342: fenc
+ Location: 50,67
+ Owner: USSR
+ Actor341: fenc
+ Location: 50,68
+ Owner: USSR
+ Actor343: fenc
+ Location: 50,72
+ Owner: USSR
+ Actor344: fenc
+ Location: 50,73
+ Owner: USSR
+ Actor345: fenc
+ Location: 50,74
+ Owner: USSR
+ Actor346: fenc
+ Location: 50,66
+ Owner: USSR
+ Actor347: fenc
+ Location: 51,66
+ Owner: USSR
+ Actor348: fenc
+ Location: 52,66
+ Owner: USSR
+ Actor349: fenc
+ Location: 53,66
+ Owner: USSR
+ Actor350: fenc
+ Location: 54,66
+ Owner: USSR
+ Actor351: fenc
+ Location: 55,66
+ Owner: USSR
+ Actor352: fenc
+ Location: 56,66
+ Owner: USSR
+ Actor353: fenc
+ Location: 57,66
+ Owner: USSR
+ Actor354: fenc
+ Location: 58,67
+ Owner: USSR
+ Actor355: fenc
+ Location: 58,68
+ Owner: USSR
+ Actor356: fenc
+ Location: 83,51
+ Owner: USSR
+ Actor357: fenc
+ Location: 83,52
+ Owner: USSR
+ Actor358: fenc
+ Location: 83,53
+ Owner: USSR
+ Actor359: fenc
+ Location: 84,50
+ Owner: USSR
+ Actor360: fenc
+ Location: 85,50
+ Owner: USSR
+ Actor361: fenc
+ Location: 86,50
+ Owner: USSR
+ Actor362: fenc
+ Location: 87,50
+ Owner: USSR
+ Actor363: fenc
+ Location: 103,60
+ Owner: USSR
+ Actor364: fenc
+ Location: 103,59
+ Owner: USSR
+ Actor365: fenc
+ Location: 103,58
+ Owner: USSR
+ Actor366: fenc
+ Location: 103,57
+ Owner: USSR
+ Actor367: fenc
+ Location: 102,57
+ Owner: USSR
+ Actor368: fenc
+ Location: 101,57
+ Owner: USSR
+ Actor369: fenc
+ Location: 100,57
+ Owner: USSR
+ USSRBarracks1: barr
+ Location: 51,67
+ Owner: USSR
+ USSRBarracks2: barr
+ Location: 78,75
+ Owner: USSR
+ USSRWarFactory: weap
+ Location: 83,73
+ Owner: USSR
+ USSRKennel: kenn
+ Location: 81,77
+ Owner: USSR
+ USSRAdvancedPowerPlant: apwr
+ Location: 81,81
+ Owner: USSR
+ USSRRadarDome: dome
+ Location: 78,80
+ Owner: USSR
+ USSRConstructionYard1: fact
+ Location: 55,71
+ Owner: USSR
+ USSRConstructionYard2: fact
+ Location: 88,80
+ Owner: USSR
+ USSRPowerPlant1: powr
+ Location: 53,72
+ Owner: USSR
+ USSRPowerPlant2: powr
+ Location: 51,72
+ Owner: USSR
+ USSRPowerPlant3: powr
+ Location: 90,77
+ Owner: USSR
+ USSRPowerPlant4: powr
+ Location: 92,76
+ Owner: USSR
+ USSRFlameTower1: ftur
+ Location: 50,69
+ Owner: USSR
+ USSRFlameTower2: ftur
+ Location: 100,69
+ Owner: USSR
+ USSRTechCenter: miss
+ Location: 58,71
+ Owner: USSR
+ USSRForwardCommand: fcom
+ Location: 79,69
+ Owner: USSR
+ USSRBaseGuard1: e1
+ Location: 49,66
+ Owner: USSR
+ Facing: 96
+ SubCell: 0
+ USSRBaseGuard2: e1
+ Location: 48,67
+ Owner: USSR
+ Facing: 224
+ SubCell: 0
+ USSRBaseGuard3: e2
+ Location: 48,70
+ Owner: USSR
+ SubCell: 4
+ USSRBaseGuard4: e2
+ Location: 49,69
+ Owner: USSR
+ Facing: 160
+ SubCell: 0
+ USSRBaseGuard5: e1
+ Location: 51,69
+ Owner: USSR
+ Facing: 160
+ SubCell: 3
+ USSRBaseGuard6: e2
+ Location: 49,72
+ Owner: USSR
+ Facing: 128
+ SubCell: 2
+ USSRBaseGuard7: e1
+ Location: 53,70
+ Owner: USSR
+ Facing: 160
+ SubCell: 1
+ USSRBaseGuard8: e1
+ Location: 56,69
+ Owner: USSR
+ Facing: 96
+ SubCell: 2
+ USSRBaseGuard10: e2
+ Location: 77,80
+ Owner: USSR
+ Facing: 64
+ SubCell: 0
+ USSRBaseGuard11: e1
+ Location: 78,77
+ Owner: USSR
+ Facing: 128
+ SubCell: 4
+ USSRBaseGuard12: e1
+ Location: 79,77
+ Owner: USSR
+ Facing: 96
+ SubCell: 4
+ USSRBaseGuard13: e2
+ Location: 80,76
+ Owner: USSR
+ SubCell: 0
+ USSRBaseGuard14: dog
+ Location: 81,76
+ Owner: USSR
+ Facing: 160
+ SubCell: 3
+ PGuard1: e1
+ Location: 58,59
+ Owner: USSR
+ Facing: 224
+ SubCell: 3
+ PGuard2: e1
+ Location: 57,68
+ Owner: USSR
+ Facing: 128
+ SubCell: 4
+ PrisonedMedi1: medi
+ Location: 58,60
+ Owner: Greece
+ SubCell: 0
+ PrisonedMedi2: medi
+ Location: 57,67
+ Owner: Greece
+ Facing: 128
+ SubCell: 0
+ PrisonedEngi: hacke6
+ Location: 57,67
+ Owner: Greece
+ Facing: 96
+ SubCell: 2
+ Jail1: prison
+ Location: 58,60
+ Owner: Greece
+ Jail2: prison
+ Location: 57,67
+ Owner: Greece
+ ExplosiveBarrel: brl3
+ Location: 102,49
+ Owner: USSR
+ AlliedUnitsEntry: waypoint
+ Location: 60,48
+ Owner: Neutral
+ TanyaWaypoint: waypoint
+ Location: 61,50
+ Owner: Neutral
+ ArtilleryWaypoint: waypoint
+ Location: 62,49
+ Owner: Neutral
+ WaterTransportEntry: waypoint
+ Location: 36,48
+ Owner: Neutral
+ WaterTransportLoadout: waypoint
+ Location: 37,58
+ Owner: Neutral
+ WaterTransportExit: waypoint
+ Location: 35,58
+ Owner: Neutral
+ BaseCameraWaypoint: waypoint
+ Location: 55,70
+ Owner: Neutral
+ LargeCameraWaypoint: waypoint
+ Location: 71,65
+ Owner: Neutral
+ ParadropLZ: waypoint
+ Location: 73,57
+ Owner: Neutral
+ USSRReinforcementsCameraWaypoint: waypoint
+ Location: 101,52
+ Owner: Neutral
+ USSRReinforcementsEntryWaypoint: waypoint
+ Location: 106,48
+ Owner: Neutral
+ USSRReinforcementsRallyWaypoint1: waypoint
+ Location: 104,49
+ Owner: Neutral
+ USSRReinforcementsRallyWaypoint2: waypoint
+ Location: 96,56
+ Owner: Neutral
+ USSRMoneyCrateSpawn: waypoint
+ Location: 59,72
+ Owner: Neutral
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
+
+Weapons: weapons.yaml
diff --git a/mods/ura/maps/allies-03a/rules.yaml b/mods/ura/maps/allies-03a/rules.yaml
new file mode 100644
index 0000000..4c6f6c6
--- /dev/null
+++ b/mods/ura/maps/allies-03a/rules.yaml
@@ -0,0 +1,219 @@
+World:
+ LuaScript:
+ Scripts: allies03a.lua
+ MissionData:
+ Briefing: LANDCOM 16 HQS.\nTOP SECRET.\nTO: FIELD COMMANDER A9\n\nINTELLIGENCE RECON SHOWS HEAVY\nSOVIET MOVEMENT IN YOUR AREA.\nNEARBY BRIDGES ARE KEY TO SOVIET\nADVANCEMENT. DESTROY ALL BRIDGES\nASAP. TANYA WILL ASSIST. KEEP HER\nALIVE AT ALL COSTS.\n\nCONFIRMATION CODE 1612.\n\nTRANSMISSION ENDS.\n
+ StartVideo: brdgtilt.vqa
+ WinVideo: toofar.vqa
+ LossVideo: sovtstar.vqa
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ Default: easy
+
+^Building:
+ Capturable:
+ CaptureThreshold: 25
+
+^TechBuilding:
+ Capturable:
+ Types: ~disabled
+
+powerproxy.paratroopers:
+ ParatroopersPower:
+ DropItems: E1,E1,E1,E2,E2
+
+HACKE6:
+ Inherits: E6
+ -RepairsBridges:
+ -ExternalCaptures:
+ Captures:
+ CaptureTypes: building
+ Targetable:
+ RequiresCondition: !jail
+ Targetable@PRISONER:
+ TargetTypes: Prisoner
+ RenderSprites:
+ Image: E6
+ ExternalCondition@JAIL:
+ Condition: jail
+
+MEDI:
+ Targetable:
+ RequiresCondition: !jail
+ Targetable@PRISONER:
+ TargetTypes: Prisoner
+ ExternalCondition@JAIL:
+ Condition: jail
+
+PRISON:
+ HiddenUnderShroud:
+ Type: CenterPosition
+ Immobile:
+ OccupiesSpace: false
+ ProximityExternalCondition:
+ Condition: jail
+ Range: 1c0
+
+CAMERA:
+ RevealsShroud:
+ Range: 8c7
+
+CAMERA.VeryLarge:
+ Inherits: CAMERA
+ RevealsShroud:
+ Range: 40c0
+
+MONEYCRATE:
+ Tooltip:
+ Name: Crate
+ WithCrateBody:
+ RenderSprites:
+ Image: scrate
+
+E1.Autotarget:
+ Inherits: E1
+ Buildable:
+ Prerequisites: ~disabled
+ RevealsShroud:
+ Range: 8c0
+ AutoTarget:
+ ScanRadius: 7
+ RenderSprites:
+ Image: E1
+
+E2.Autotarget:
+ Inherits: E2
+ Buildable:
+ Prerequisites: ~disabled
+ RevealsShroud:
+ Range: 8c0
+ AutoTarget:
+ ScanRadius: 7
+ RenderSprites:
+ Image: E2
+
+DOG:
+ RevealsShroud:
+ Range: 9c0
+ AutoTarget:
+ ScanRadius: 8
+
+DOME:
+ Buildable:
+ Prerequisites: ~disabled
+
+WEAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+FIX:
+ Buildable:
+ Prerequisites: ~disabled
+
+APC:
+ Buildable:
+ Prerequisites: ~disabled
+
+V2RL:
+ Buildable:
+ Prerequisites: ~disabled
+
+2TNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+3TNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+4TNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+MNLY:
+ Buildable:
+ Prerequisites: ~disabled
+
+TTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+FTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+DTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+QTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPEN:
+ Buildable:
+ Prerequisites: ~disabled
+
+IRON:
+ Buildable:
+ Prerequisites: ~disabled
+
+TSLA:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+AFLD:
+ Buildable:
+ Prerequisites: ~disabled
+
+APWR:
+ Buildable:
+ Prerequisites: ~disabled
+
+STEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+KENN:
+ Buildable:
+ Prerequisites: ~disabled
+
+E3:
+ Buildable:
+ Prerequisites: ~disabled
+
+E4:
+ Buildable:
+ Prerequisites: ~disabled
+
+E6:
+ Buildable:
+ Prerequisites: ~disabled
+
+SNIPER:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+SHOK:
+ Buildable:
+ Prerequisites: ~disabled
diff --git a/mods/ura/maps/allies-03a/weapons.yaml b/mods/ura/maps/allies-03a/weapons.yaml
new file mode 100644
index 0000000..a8004c0
--- /dev/null
+++ b/mods/ura/maps/allies-03a/weapons.yaml
@@ -0,0 +1,3 @@
+BarrelExplode:
+ Warhead@1Dam:
+ ValidTargets: Ground, Prisoner
diff --git a/mods/ura/maps/allies-03b/allies03b.lua b/mods/ura/maps/allies-03b/allies03b.lua
new file mode 100644
index 0000000..953e6de
--- /dev/null
+++ b/mods/ura/maps/allies-03b/allies03b.lua
@@ -0,0 +1,389 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+ProductionUnits = { "e1", "e1", "e2" }
+ProductionBuildings = { USSRBarracks1, USSRBarracks2, USSRBarracks3 }
+FirstUSSRBase = { USSRFlameTower1, USSRFlameTower2, USSRFlameTower3, USSRBarracks1, PGuard1, PGuard2, PGuard3, PGuard4, PGuard5 }
+SecondUSSRBase = { USSRFlameTower4, USSRFlameTower5, USSRFlameTower6, USSRRadarDome, USSRBarracks2, USSRPowerPlant, USSRSubPen, USSRBaseGuard1, USSRBaseGuard2, uSSRBaseGuard3, MediGuard }
+Prisoners = { PrisonedEngi1, PrisonedEngi2, PrisonedEngi3, PrisonedEngi4 }
+PGuards = { PGuard1, PGuard2, PGuard3, PGuard4, PGuard5 }
+AlliedIslandReinforcements = { "1tnk", "1tnk" }
+USSRTankReinforcements = { "3tnk", "3tnk", "3tnk" }
+USSRTankReinforcementsWaypoints = { USSRReinforcementsEntryWaypoint.Location, USSRReinforcementsCameraWaypoint.Location + CVec.New(1, -1), USSRReinforcementsRallyWaypoint.Location }
+TrukTriggerArea = { CPos.New(51, 89), CPos.New(52, 89), CPos.New(53, 89), CPos.New(54, 89), CPos.New(55, 89), CPos.New(56, 89), CPos.New(57, 89) }
+FreeMediTriggerArea = { CPos.New(56, 93), CPos.New(56, 94), CPos.New(57, 94), CPos.New(57, 95), CPos.New(57, 96), CPos.New(57, 97), CPos.New(57, 98), CPos.New(57, 99), CPos.New(57, 100), CPos.New(57, 101), CPos.New(57, 102) }
+CameraTriggerArea = { CPos.New(73, 88), CPos.New(73, 87), CPos.New(76, 92), CPos.New(76, 93), CPos.New(76, 94) }
+BeachTriggerArea = { CPos.New(111, 36), CPos.New(112, 36), CPos.New(112, 37), CPos.New(113, 37), CPos.New(113, 38), CPos.New(114, 38), CPos.New(114, 39), CPos.New(115, 39), CPos.New(116, 39), CPos.New(116, 40), CPos.New(117, 40), CPos.New(118, 40), CPos.New(119, 40), CPos.New(119, 41) }
+ParadropTriggerArea = { CPos.New(81, 66), CPos.New(82, 66), CPos.New(83, 66), CPos.New(84, 66), CPos.New(85, 66), CPos.New(86, 66), CPos.New(87, 66), CPos.New(93, 64), CPos.New(94, 64), CPos.New(94, 63), CPos.New(95, 63), CPos.New(95, 62), CPos.New(96, 62), CPos.New(96, 61), CPos.New(97, 61), CPos.New(97, 60), CPos.New(98, 60), CPos.New(99, 60), CPos.New(100, 60), CPos.New(101, 60), CPos.New(102, 60), CPos.New(103, 60) }
+ReinforcementsTriggerArea = { CPos.New(57, 46), CPos.New(58, 46), CPos.New(66, 35), CPos.New(65, 35), CPos.New(65, 36), CPos.New(64, 36), CPos.New(64, 37), CPos.New(64, 38), CPos.New(64, 39), CPos.New(64, 40), CPos.New(64, 41), CPos.New(63, 41), CPos.New(63, 42), CPos.New(63, 43), CPos.New(62, 43), CPos.New(62, 44) }
+Barracks3TriggerArea = { CPos.New(69, 50), CPos.New(69, 51), CPos.New(69, 52), CPos.New(69, 53), CPos.New(69, 54), CPos.New(61, 45), CPos.New(62, 45), CPos.New(62, 46), CPos.New(62, 47), CPos.New(62, 48), CPos.New(63, 48), CPos.New(57, 46), CPos.New(58, 46) }
+JeepTriggerArea = { CPos.New(75, 76), CPos.New(76, 76), CPos.New(77, 76), CPos.New(78, 76), CPos.New(79, 76), CPos.New(80, 76), CPos.New(81, 76), CPos.New(82, 76), CPos.New(91, 78), CPos.New(92, 78), CPos.New(93, 78), CPos.New(95, 84), CPos.New(96, 84), CPos.New(97, 84), CPos.New(98, 84), CPos.New(99, 84), CPos.New(100, 84) }
+JeepBarrels = { JeepBarrel1, JeepBarrel2, JeepBarrel3, JeepBarrel4 }
+GuardTanks = { Heavy1, Heavy2, Heavy3 }
+CheckpointGuards = { USSRCheckpointGuard1, USSRCheckpointGuard2 }
+CheckpointGuardWaypoints = { CheckpointGuardWaypoint1, CheckpointGuardWaypoint2 }
+
+if Map.LobbyOption("difficulty") == "easy" then
+ TanyaType = "e7"
+else
+ TanyaType = "e7.noautotarget"
+end
+
+IdleHunt = function(actor)
+ Trigger.OnIdle(actor, function(a)
+ if a.IsInWorld then
+ a.Hunt()
+ end
+ end)
+end
+
+Tick = function()
+ if TeleportJeepCamera and Jeep.IsInWorld then
+ JeepCamera.Teleport(Jeep.Location)
+ end
+end
+
+ProduceUnits = function(factory, count)
+ if ussr.IsProducing("e1") then
+ Trigger.AfterDelay(DateTime.Seconds(5), function() ProduceUnits(factory, count) end)
+ return
+ end
+
+ local units = { }
+ for i = 0, count, 1 do
+ units[i] = Utils.Random(ProductionUnits)
+ end
+
+ if not factory.IsDead then
+ factory.IsPrimaryBuilding = true
+ ussr.Build(units, function(soldiers)
+ Utils.Do(soldiers, function(unit) IdleHunt(unit) end)
+ end)
+ end
+end
+
+SetupAlliedUnits = function()
+ Tanya = Actor.Create(TanyaType, true, { Owner = player, Location = TanyaWaypoint.Location, Facing = 128 })
+
+ if TanyaType == "e7.noautotarget" then
+ Trigger.AfterDelay(DateTime.Seconds(2), function()
+ Media.DisplayMessage("According to the rules of engagement I need your explicit orders to fire, Commander!", "Tanya")
+ end)
+ end
+
+ Camera.Position = Tanya.CenterPosition
+
+ InsertionHeli.Wait(DateTime.Seconds(2))
+ InsertionHeli.Move(InsertionHeliExit.Location)
+ InsertionHeli.Destroy()
+
+ Trigger.OnKilled(Tanya, function() player.MarkFailedObjective(TanyaSurvive) end)
+end
+
+SetupTopRightIsland = function()
+ player.MarkCompletedObjective(FindAllies)
+ Media.PlaySpeechNotification(player, "AlliedReinforcementsArrived")
+ Reinforcements.Reinforce(player, AlliedIslandReinforcements, { AlliedIslandReinforcementsEntry.Location, IslandParadropReinforcementsDropzone.Location })
+ SendUSSRParadrops(128 + 52, IslandParadropReinforcementsDropzone)
+end
+
+SendUSSRParadrops = function(facing, dropzone)
+ local paraproxy = Actor.Create("powerproxy.paratroopers", false, { Owner = ussr })
+
+ local units = paraproxy.SendParatroopers(dropzone.CenterPosition, false, facing)
+ Utils.Do(units, function(unit)
+ IdleHunt(unit)
+ end)
+
+ paraproxy.Destroy()
+end
+
+SendUSSRTankReinforcements = function()
+ local camera = Actor.Create("camera", true, { Owner = player, Location = USSRReinforcementsCameraWaypoint.Location })
+ local ussrTanks = Reinforcements.Reinforce(ussr, USSRTankReinforcements, USSRTankReinforcementsWaypoints)
+ Trigger.OnAllRemovedFromWorld(ussrTanks, function()
+ Trigger.AfterDelay(DateTime.Seconds(3), function()
+ if not camera.IsDead then
+ camera.Destroy()
+ end
+ end)
+ end)
+end
+
+JeepCheckpointMove = function()
+ JeepCamera = Actor.Create("camera.jeep", true, { Owner = player })
+ TeleportJeepCamera = true
+
+ Trigger.OnIdle(Jeep, function()
+ if Jeep.Location == JeepCheckpoint.Location then
+ Trigger.ClearAll(Jeep)
+ for i = 1, 2, 1 do
+ if not CheckpointGuards[i].IsDead then
+ CheckpointGuards[i].Move(CheckpointGuardWaypoints[i].Location)
+ end
+ end
+ else
+ Jeep.Move(JeepCheckpoint.Location)
+ end
+ end)
+end
+
+JeepSuicideMove = function()
+ if not JeepCamera then
+ JeepCamera = Actor.Create("camera.jeep", true, { Owner = player })
+ TeleportJeepCamera = true
+ end
+
+ Trigger.OnIdle(Jeep, function()
+ if Jeep.Location == JeepSuicideWaypoint.Location then
+ Trigger.ClearAll(Jeep)
+ TeleportJeepCamera = false
+ Jeep.Kill()
+ if not USSRFlameTower4.IsDead then USSRFlameTower4.Kill() end
+ Trigger.AfterDelay(DateTime.Seconds(1), JeepCamera.Destroy)
+ else
+ Jeep.Move(JeepSuicideWaypoint.Location)
+ end
+ end)
+end
+
+AlertFirstBase = function()
+ if not FirstBaseAlert then
+ FirstBaseAlert = true
+ Utils.Do(FirstUSSRBase, function(unit)
+ if unit.HasProperty("Move") then
+ IdleHunt(unit)
+ end
+ end)
+ for i = 0, 2 do
+ Trigger.AfterDelay(DateTime.Seconds(i), function()
+ Media.PlaySoundNotification(player, "AlertBuzzer")
+ end)
+ end
+ ProduceUnits(ProductionBuildings[1], Utils.RandomInteger(4, 8))
+ end
+end
+
+InitPlayers = function()
+ player = Player.GetPlayer("Greece")
+ ussr = Player.GetPlayer("USSR")
+
+ ussr.Cash = 10000
+end
+
+InitObjectives = function()
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+
+ KillBridges = player.AddPrimaryObjective("Destroy all bridges.")
+ TanyaSurvive = player.AddPrimaryObjective("Tanya must survive.")
+ FindAllies = player.AddSecondaryObjective("Find our lost tanks.")
+ FreePrisoners = player.AddSecondaryObjective("Free all Allied soldiers and keep them alive.")
+ ussr.AddPrimaryObjective("Bridges must not be destroyed.")
+
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ Trigger.OnPlayerLost(player, function()
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ Media.PlaySpeechNotification(player, "Lose")
+ end)
+ end)
+ Trigger.OnPlayerWon(player, function()
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ Media.PlaySpeechNotification(player, "Win")
+ end)
+ end)
+end
+
+InitTriggers = function()
+ Utils.Do(ussr.GetGroundAttackers(), function(unit)
+ Trigger.OnDamaged(unit, function() IdleHunt(unit) end)
+ end)
+
+ Trigger.OnAnyKilled(Prisoners, function() player.MarkFailedObjective(FreePrisoners) end)
+ Trigger.OnKilled(PrisonedMedi, function() player.MarkFailedObjective(FreePrisoners) end)
+ Trigger.OnKilled(MediHideaway, function()
+ if not MediFreed then
+ MediFreed = true
+ player.MarkFailedObjective(FreePrisoners)
+ end
+ end)
+
+ Trigger.OnKilled(ExplosiveBarrel, function()
+ if not ExplodingBridge.IsDead then ExplodingBridge.Kill() end
+ reinforcementsTriggered = true
+ Trigger.AfterDelay(DateTime.Seconds(1), SendUSSRTankReinforcements)
+ end)
+
+ Trigger.OnKilled(ExplosiveBarrel2, function()
+ if not USSRFlameTower3.IsDead then USSRFlameTower3.Kill() end
+ end)
+
+ Trigger.OnAnyKilled(JeepBarrels, function()
+ Utils.Do(JeepBarrels, function(barrel)
+ if not barrel.IsDead then barrel.Kill() end
+ end)
+ Utils.Do(GuardTanks, function(tank)
+ if not tank.IsDead then tank.Kill() end
+ end)
+
+ jeepTriggered = true
+ JeepSuicideMove()
+ end)
+
+ Utils.Do(FirstUSSRBase, function(unit)
+ Trigger.OnDamaged(unit, function()
+ if not baseCamera then baseCamera = Actor.Create("camera", true, { Owner = player, Location = BaseCameraWaypoint.Location }) end
+ AlertFirstBase()
+ end)
+ end)
+ Trigger.OnAllRemovedFromWorld(FirstUSSRBase, function()
+ if baseCamera then
+ baseCamera.Destroy()
+ end
+ end)
+
+ Trigger.OnDamaged(USSRBarracks3, function()
+ if not Barracks3Producing then
+ Barracks3Producing = true
+ ProduceUnits(ProductionBuildings[3], Utils.RandomInteger(2, 5))
+ end
+ end)
+
+ Trigger.OnCapture(USSRRadarDome, function()
+ largeCameraA = Actor.Create("camera.verylarge", true, { Owner = player, Location = LargeCameraWaypoint1.Location })
+ largeCameraB = Actor.Create("camera.verylarge", true, { Owner = player, Location = LargeCameraWaypoint2.Location })
+ largeCameraC = Actor.Create("camera.verylarge", true, { Owner = player, Location = LargeCameraWaypoint3.Location })
+ end)
+ Trigger.OnRemovedFromWorld(USSRRadarDome, function()
+ if largeCameraA and largeCameraA.IsInWorld then largeCameraA.Destroy() end
+ if largeCameraB and largeCameraB.IsInWorld then largeCameraB.Destroy() end
+ if largeCameraC and largeCameraC.IsInWorld then largeCameraC.Destroy() end
+ end)
+
+ Trigger.OnEnteredFootprint(TrukTriggerArea, function(a, id)
+ if a.Owner == player and not trukTriggered then
+ trukTriggered = true
+ Trigger.RemoveFootprintTrigger(id)
+
+ if USSRTruk.IsDead then
+ return
+ end
+
+ Trigger.OnIdle(USSRTruk, function()
+ if USSRTruk.Location == BaseCameraWaypoint.Location then
+ Trigger.ClearAll(USSRTruk)
+
+ local driver = Actor.Create("e1", true, { Owner = ussr, Location = USSRTruk.Location })
+ if not PGuard5.IsDead then
+ driver.AttackMove(PGuard5.Location)
+ else
+ driver.Scatter()
+ end
+
+ FirstUSSRBase[#FirstUSSRBase + 1] = driver
+ Trigger.AfterDelay(DateTime.Seconds(3), AlertFirstBase)
+ else
+ USSRTruk.Move(BaseCameraWaypoint.Location)
+ end
+ end)
+ Trigger.OnEnteredProximityTrigger(BaseCameraWaypoint.CenterPosition, WDist.New(7 * 1024), function(a, id)
+ if a.Type == "truk" and not baseCamera then
+ Trigger.RemoveProximityTrigger(id)
+ baseCamera = Actor.Create("camera", true, { Owner = player, Location = BaseCameraWaypoint.Location })
+ end
+ end)
+ end
+ end)
+ Trigger.OnEnteredFootprint(FreeMediTriggerArea, function(a, id)
+ if a.Owner == player and not MediFreed then
+ MediFreed = true
+ Trigger.RemoveFootprintTrigger(id)
+ Reinforcements.Reinforce(player, { "medi" }, { MediSpawnpoint.Location, MediRallypoint.Location })
+ end
+ end)
+ Trigger.OnEnteredFootprint(CameraTriggerArea, function(a, id)
+ if a.Owner == player and not baseCamera then
+ Trigger.RemoveFootprintTrigger(id)
+ baseCamera = Actor.Create("camera", true, { Owner = player, Location = BaseCameraWaypoint.Location })
+ end
+ end)
+ Trigger.OnEnteredFootprint(BeachTriggerArea, function(a, id)
+ if a.Owner == player and not beachTransportTriggered then
+ beachTransportTriggered = true
+ Trigger.RemoveFootprintTrigger(id)
+ SetupTopRightIsland()
+ end
+ end)
+ Trigger.OnEnteredFootprint(ParadropTriggerArea, function(a, id)
+ if a.Owner == player and a.Type ~= "jeep.mission" and not paradropsTriggered then
+ paradropsTriggered = true
+ Trigger.RemoveFootprintTrigger(id)
+ SendUSSRParadrops(54, ParadropReinforcementsDropzone)
+ end
+ end)
+ Trigger.OnEnteredFootprint(ReinforcementsTriggerArea, function(a, id)
+ if a.Owner == player and not reinforcementsTriggered then
+ reinforcementsTriggered = true
+ Trigger.RemoveFootprintTrigger(id)
+ Trigger.AfterDelay(DateTime.Seconds(1), SendUSSRTankReinforcements)
+ end
+ end)
+ Trigger.OnEnteredFootprint(Barracks3TriggerArea, function(a, id)
+ if a.Owner == player and not Barracks3Producing then
+ Barracks3Producing = true
+ Trigger.RemoveFootprintTrigger(id)
+ ProduceUnits(ProductionBuildings[3], Utils.RandomInteger(2, 5))
+ end
+ end)
+ Trigger.OnEnteredFootprint(JeepTriggerArea, function(a, id)
+ if a.Owner == player and not jeepTriggered then
+ jeepTriggered = true
+ Trigger.RemoveFootprintTrigger(id)
+ JeepCheckpointMove()
+ end
+ end)
+
+ -- The engineers need to leave the enemy base to count as 'freed'
+ Trigger.OnExitedProximityTrigger(BaseCameraWaypoint.CenterPosition, WDist.New(7 * 1024), function(a, id)
+ if a.Type == "hacke6" and not EngisFreed then
+ EngisFreed = true
+ Trigger.RemoveProximityTrigger(id)
+ end
+ end)
+
+ Trigger.AfterDelay(0, function()
+ local bridges = Utils.Where(Map.ActorsInWorld, function(actor) return actor.Type == "bridge1" or actor.Type == "bridge2" end)
+ ExplodingBridge = bridges[1]
+
+ Trigger.OnAllKilled(bridges, function()
+ player.MarkCompletedObjective(KillBridges)
+ player.MarkCompletedObjective(TanyaSurvive)
+
+ -- The medic is freed once his guard is dead
+ if MediFreed and MediGuard.IsDead and EngisFreed then
+ player.MarkCompletedObjective(FreePrisoners)
+ end
+ end)
+ end)
+end
+
+WorldLoaded = function()
+
+ InitPlayers()
+
+ InitObjectives()
+ InitTriggers()
+ SetupAlliedUnits()
+end
diff --git a/mods/ura/maps/allies-03b/map.bin b/mods/ura/maps/allies-03b/map.bin
new file mode 100644
index 0000000..03718af
Binary files /dev/null and b/mods/ura/maps/allies-03b/map.bin differ
diff --git a/mods/ura/maps/allies-03b/map.png b/mods/ura/maps/allies-03b/map.png
new file mode 100644
index 0000000..29bfd56
Binary files /dev/null and b/mods/ura/maps/allies-03b/map.png differ
diff --git a/mods/ura/maps/allies-03b/map.yaml b/mods/ura/maps/allies-03b/map.yaml
new file mode 100644
index 0000000..ad847ad
--- /dev/null
+++ b/mods/ura/maps/allies-03b/map.yaml
@@ -0,0 +1,1211 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 03b: Dead End
+
+Author: Westwood Studios
+
+Tileset: SNOW
+
+MapSize: 128,128
+
+Bounds: 46,31,75,75
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@USSR:
+ Name: USSR
+ Faction: soviet
+ Color: FE1100
+ Enemies: Greece
+ PlayerReference@Greece:
+ Name: Greece
+ Playable: True
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: E2E6F5
+ Enemies: USSR
+ PlayerReference@England:
+ Name: England
+ Color: A1EF8C
+ Faction: allies
+
+Actors:
+ Actor0: cycl
+ Location: 49,38
+ Owner: Neutral
+ Actor1: cycl
+ Location: 50,38
+ Owner: Neutral
+ Actor2: cycl
+ Location: 51,38
+ Owner: Neutral
+ Actor3: cycl
+ Location: 49,39
+ Owner: Neutral
+ Actor4: cycl
+ Location: 51,39
+ Owner: Neutral
+ Actor5: cycl
+ Location: 49,40
+ Owner: Neutral
+ Actor6: cycl
+ Location: 50,40
+ Owner: Neutral
+ Actor7: cycl
+ Location: 51,40
+ Owner: Neutral
+ Actor8: cycl
+ Location: 59,40
+ Owner: Neutral
+ Actor9: cycl
+ Location: 60,40
+ Owner: Neutral
+ Actor10: cycl
+ Location: 61,40
+ Owner: Neutral
+ Actor11: cycl
+ Location: 62,40
+ Owner: Neutral
+ Actor12: cycl
+ Location: 59,41
+ Owner: Neutral
+ Actor13: cycl
+ Location: 62,41
+ Owner: Neutral
+ Actor14: cycl
+ Location: 59,42
+ Owner: Neutral
+ Actor15: cycl
+ Location: 60,42
+ Owner: Neutral
+ Actor16: cycl
+ Location: 61,42
+ Owner: Neutral
+ Actor17: cycl
+ Location: 62,42
+ Owner: Neutral
+ Actor18: sbag
+ Location: 94,66
+ Owner: Neutral
+ Actor19: sbag
+ Location: 100,66
+ Owner: Neutral
+ Actor20: sbag
+ Location: 94,67
+ Owner: Neutral
+ Actor21: sbag
+ Location: 95,67
+ Owner: Neutral
+ Actor22: sbag
+ Location: 96,67
+ Owner: Neutral
+ Actor23: sbag
+ Location: 98,67
+ Owner: Neutral
+ Actor24: sbag
+ Location: 99,67
+ Owner: Neutral
+ Actor25: sbag
+ Location: 100,67
+ Owner: Neutral
+ Actor26: sbag
+ Location: 96,68
+ Owner: Neutral
+ Actor27: sbag
+ Location: 98,68
+ Owner: Neutral
+ Actor28: brik
+ Location: 92,85
+ Owner: Neutral
+ Actor29: brik
+ Location: 93,85
+ Owner: Neutral
+ Actor30: brik
+ Location: 92,86
+ Owner: Neutral
+ Actor31: brik
+ Location: 93,86
+ Owner: Neutral
+ Actor32: brik
+ Location: 92,87
+ Owner: Neutral
+ Actor33: brik
+ Location: 93,87
+ Owner: Neutral
+ Actor34: t02
+ Location: 93,79
+ Owner: Neutral
+ Actor35: tc02
+ Location: 90,87
+ Owner: Neutral
+ Actor36: t01
+ Location: 90,78
+ Owner: Neutral
+ Actor37: tc04
+ Location: 96,91
+ Owner: Neutral
+ Actor38: tc01
+ Location: 95,89
+ Owner: Neutral
+ Actor39: tc02
+ Location: 88,92
+ Owner: Neutral
+ Actor40: tc01
+ Location: 85,91
+ Owner: Neutral
+ Actor41: tc05
+ Location: 95,99
+ Owner: Neutral
+ Actor42: t08
+ Location: 95,101
+ Owner: Neutral
+ Actor43: tc04
+ Location: 78,94
+ Owner: Neutral
+ Actor44: tc01
+ Location: 67,82
+ Owner: Neutral
+ Actor45: tc02
+ Location: 67,86
+ Owner: Neutral
+ Actor46: t01
+ Location: 96,56
+ Owner: Neutral
+ Actor47: tc02
+ Location: 72,73
+ Owner: Neutral
+ Actor48: tc04
+ Location: 77,69
+ Owner: Neutral
+ Actor49: tc01
+ Location: 72,66
+ Owner: Neutral
+ Actor50: t08
+ Location: 73,68
+ Owner: Neutral
+ Actor51: t01
+ Location: 106,49
+ Owner: Neutral
+ Actor52: tc01
+ Location: 104,43
+ Owner: Neutral
+ Actor53: tc02
+ Location: 86,50
+ Owner: Neutral
+ Actor54: tc03
+ Location: 95,76
+ Owner: Neutral
+ Actor55: tc02
+ Location: 104,74
+ Owner: Neutral
+ Actor56: tc03
+ Location: 84,44
+ Owner: Neutral
+ Actor57: t01
+ Location: 100,67
+ Owner: Neutral
+ Actor58: tc01
+ Location: 90,66
+ Owner: Neutral
+ Actor59: tc05
+ Location: 72,77
+ Owner: Neutral
+ Actor60: tc02
+ Location: 73,63
+ Owner: Neutral
+ Actor61: tc02
+ Location: 99,57
+ Owner: Neutral
+ Actor62: tc03
+ Location: 86,57
+ Owner: Neutral
+ Actor63: tc04
+ Location: 82,61
+ Owner: Neutral
+ Actor64: tc01
+ Location: 77,67
+ Owner: Neutral
+ Actor65: tc04
+ Location: 62,98
+ Owner: Neutral
+ Actor66: tc01
+ Location: 68,96
+ Owner: Neutral
+ Actor67: tc02
+ Location: 64,94
+ Owner: Neutral
+ Actor68: tc02
+ Location: 55,91
+ Owner: Neutral
+ Actor69: tc05
+ Location: 51,95
+ Owner: Neutral
+ Actor70: tc04
+ Location: 50,90
+ Owner: Neutral
+ Actor71: t15
+ Location: 59,96
+ Owner: Neutral
+ Actor72: tc05
+ Location: 62,31
+ Owner: Neutral
+ Actor73: tc02
+ Location: 54,35
+ Owner: Neutral
+ Actor74: tc01
+ Location: 50,40
+ Owner: Neutral
+ Actor75: tc04
+ Location: 47,32
+ Owner: Neutral
+ Actor76: tc05
+ Location: 46,48
+ Owner: Neutral
+ Actor77: tc03
+ Location: 50,46
+ Owner: Neutral
+ Actor78: tc02
+ Location: 50,51
+ Owner: Neutral
+ Actor79: tc01
+ Location: 62,36
+ Owner: Neutral
+ Actor80: t13
+ Location: 56,41
+ Owner: Neutral
+ Actor81: t15
+ Location: 51,87
+ Owner: Neutral
+ Actor82: t13
+ Location: 104,95
+ Owner: Neutral
+ Actor83: tc02
+ Location: 102,93
+ Owner: Neutral
+ Actor85: tc01
+ Location: 89,45
+ Owner: Neutral
+ Actor86: tc01
+ Location: 75,34
+ Owner: Neutral
+ Actor87: t01
+ Location: 84,34
+ Owner: Neutral
+ Actor88: tc05
+ Location: 102,33
+ Owner: Neutral
+ Actor89: tc04
+ Location: 105,31
+ Owner: Neutral
+ Actor90: tc02
+ Location: 108,34
+ Owner: Neutral
+ Actor91: tc01
+ Location: 119,37
+ Owner: Neutral
+ Actor92: tc03
+ Location: 117,32
+ Owner: Neutral
+ Actor93: tc04
+ Location: 83,86
+ Owner: Neutral
+ Actor94: tc05
+ Location: 56,79
+ Owner: Neutral
+ Actor95: tc01
+ Location: 52,77
+ Owner: Neutral
+ Actor97: brl3
+ Location: 86,82
+ Owner: USSR
+ Actor98: brl3
+ Location: 86,81
+ Owner: USSR
+ Actor99: brl3
+ Location: 89,82
+ Owner: USSR
+ Actor100: barl
+ Location: 87,81
+ Owner: USSR
+ Actor101: barl
+ Location: 88,82
+ Owner: USSR
+ Actor102: barl
+ Location: 89,81
+ Owner: USSR
+ Actor103: barl
+ Location: 88,81
+ Owner: USSR
+ Actor104: brl3
+ Location: 90,81
+ Owner: USSR
+ Actor106: barl
+ Location: 92,81
+ Owner: USSR
+ Actor109: barl
+ Location: 90,80
+ Owner: USSR
+ Actor116: brl3
+ Location: 106,47
+ Owner: USSR
+ Actor117: brl3
+ Location: 105,48
+ Owner: USSR
+ Actor118: brl3
+ Location: 104,46
+ Owner: USSR
+ Actor119: brl3
+ Location: 103,47
+ Owner: USSR
+ Actor120: brl3
+ Location: 102,46
+ Owner: USSR
+ Actor121: brl3
+ Location: 102,48
+ Owner: USSR
+ Actor122: barl
+ Location: 102,47
+ Owner: USSR
+ Actor123: barl
+ Location: 101,46
+ Owner: USSR
+ Actor124: barl
+ Location: 103,46
+ Owner: USSR
+ Actor125: barl
+ Location: 104,49
+ Owner: USSR
+ Actor127: barl
+ Location: 105,46
+ Owner: USSR
+ Actor128: brl3
+ Location: 57,40
+ Owner: USSR
+ Actor129: brl3
+ Location: 56,40
+ Owner: USSR
+ Actor130: brl3
+ Location: 57,41
+ Owner: USSR
+ Actor132: brl3
+ Location: 58,42
+ Owner: USSR
+ Actor133: brl3
+ Location: 58,41
+ Owner: USSR
+ Actor134: barl
+ Location: 58,40
+ Owner: USSR
+ Actor135: barl
+ Location: 58,44
+ Owner: USSR
+ Actor136: barl
+ Location: 57,42
+ Owner: USSR
+ Actor137: barl
+ Location: 56,41
+ Owner: USSR
+ Actor138: v19
+ Location: 50,39
+ Owner: USSR
+ Actor139: v19
+ Location: 60,41
+ Owner: USSR
+ Actor140: v19
+ Location: 61,41
+ Owner: USSR
+ Actor141: brl3
+ Location: 58,43
+ Owner: USSR
+ Actor142: brl3
+ Location: 96,59
+ Owner: USSR
+ Actor143: barl
+ Location: 96,58
+ Owner: USSR
+ Actor149: v01
+ Location: 64,95
+ Owner: Neutral
+ Actor150: brl3
+ Location: 66,91
+ Owner: USSR
+ Actor151: brl3
+ Location: 61,93
+ Owner: USSR
+ Actor152: brl3
+ Location: 62,92
+ Owner: USSR
+ Actor153: brl3
+ Location: 63,92
+ Owner: USSR
+ Actor154: brl3
+ Location: 65,91
+ Owner: USSR
+ Actor155: barl
+ Location: 60,93
+ Owner: USSR
+ Actor156: barl
+ Location: 62,93
+ Owner: USSR
+ Actor157: barl
+ Location: 64,92
+ Owner: USSR
+ Actor158: v02
+ Location: 65,98
+ Owner: Neutral
+ Actor159: v03
+ Location: 60,97
+ Owner: Neutral
+ Actor160: v04
+ Location: 70,96
+ Owner: Neutral
+ Actor161: v05
+ Location: 51,95
+ Owner: Neutral
+ Actor162: t17
+ Location: 59,92
+ Owner: Neutral
+ Actor163: v07
+ Location: 51,89
+ Owner: Neutral
+ Actor164: brl3
+ Location: 79,61
+ Owner: USSR
+ Actor165: brl3
+ Location: 75,63
+ Owner: USSR
+ Actor166: brl3
+ Location: 79,63
+ Owner: USSR
+ Actor167: brl3
+ Location: 77,64
+ Owner: USSR
+ Actor168: barl
+ Location: 76,64
+ Owner: USSR
+ Actor169: barl
+ Location: 78,64
+ Owner: USSR
+ Actor170: barl
+ Location: 79,62
+ Owner: USSR
+ Actor171: fcom
+ Location: 95,46
+ Owner: USSR
+ Actor172: v01
+ Location: 103,94
+ Owner: Neutral
+ Actor174: brl3
+ Location: 54,48
+ Owner: USSR
+ Actor175: brl3
+ Location: 55,49
+ Owner: USSR
+ Actor176: brl3
+ Location: 56,50
+ Owner: USSR
+ Actor177: barl
+ Location: 54,49
+ Owner: USSR
+ Actor178: barl
+ Location: 57,50
+ Owner: USSR
+ Actor189: e2
+ Location: 98,91
+ Owner: USSR
+ Facing: 192
+ SubCell: 0
+ Actor201: e1.autotarget
+ Location: 64,91
+ Owner: USSR
+ Facing: 160
+ SubCell: 4
+ Actor202: e1.autotarget
+ Location: 61,99
+ Owner: USSR
+ SubCell: 3
+ Actor203: e1.autotarget
+ Location: 54,89
+ Owner: USSR
+ SubCell: 2
+ Actor204: e2.autotarget
+ Location: 78,93
+ Owner: USSR
+ SubCell: 3
+ Actor205: e2.autotarget
+ Location: 90,92
+ Owner: USSR
+ Facing: 160
+ SubCell: 0
+ Actor206: e1.autotarget
+ Location: 56,45
+ Owner: USSR
+ Facing: 96
+ SubCell: 1
+ Actor207: e1.autotarget
+ Location: 57,44
+ Owner: USSR
+ Facing: 96
+ SubCell: 3
+ Actor208: e2.autotarget
+ Location: 57,43
+ Owner: USSR
+ Facing: 96
+ SubCell: 0
+ Actor210: e1
+ Location: 103,96
+ Owner: USSR
+ SubCell: 2
+ Actor211: e1
+ Location: 102,95
+ Owner: USSR
+ Facing: 32
+ SubCell: 4
+ Actor212: e1.autotarget
+ Location: 79,94
+ Owner: USSR
+ SubCell: 3
+ Actor213: e1.autotarget
+ Location: 91,62
+ Owner: USSR
+ SubCell: 1
+ Actor214: e1.autotarget
+ Location: 85,65
+ Owner: USSR
+ SubCell: 2
+ Actor107: fenc
+ Location: 84,48
+ Owner: USSR
+ Actor108: fenc
+ Location: 84,49
+ Owner: USSR
+ Actor110: fenc
+ Location: 83,49
+ Owner: USSR
+ Actor112: fenc
+ Location: 82,49
+ Owner: USSR
+ Actor113: fenc
+ Location: 81,49
+ Owner: USSR
+ Actor114: fenc
+ Location: 80,49
+ Owner: USSR
+ Actor126: fenc
+ Location: 79,49
+ Owner: USSR
+ Actor148: fenc
+ Location: 78,49
+ Owner: USSR
+ Actor173: fenc
+ Location: 77,49
+ Owner: USSR
+ Actor179: fenc
+ Location: 78,45
+ Owner: USSR
+ Actor183: fenc
+ Location: 78,46
+ Owner: USSR
+ Actor184: fenc
+ Location: 77,46
+ Owner: USSR
+ Actor187: fenc
+ Location: 77,47
+ Owner: USSR
+ Actor195: fenc
+ Location: 77,48
+ Owner: USSR
+ Actor196: fenc
+ Location: 78,48
+ Owner: USSR
+ Actor197: fenc
+ Location: 94,44
+ Owner: USSR
+ Actor198: fenc
+ Location: 94,45
+ Owner: USSR
+ Actor215: fenc
+ Location: 94,46
+ Owner: USSR
+ Actor216: fenc
+ Location: 94,47
+ Owner: USSR
+ Actor217: fenc
+ Location: 93,47
+ Owner: USSR
+ Actor218: fenc
+ Location: 93,48
+ Owner: USSR
+ Actor219: fenc
+ Location: 93,49
+ Owner: USSR
+ Actor220: fenc
+ Location: 93,50
+ Owner: USSR
+ Actor221: fenc
+ Location: 92,49
+ Owner: USSR
+ Actor222: fenc
+ Location: 91,49
+ Owner: USSR
+ Actor223: fenc
+ Location: 91,50
+ Owner: USSR
+ Actor224: fenc
+ Location: 91,51
+ Owner: USSR
+ Actor225: fenc
+ Location: 91,52
+ Owner: USSR
+ Actor226: fenc
+ Location: 92,52
+ Owner: USSR
+ Actor227: fenc
+ Location: 92,55
+ Owner: USSR
+ Actor228: fenc
+ Location: 91,55
+ Owner: USSR
+ Actor229: fenc
+ Location: 91,56
+ Owner: USSR
+ Actor230: fenc
+ Location: 91,57
+ Owner: USSR
+ Actor231: fenc
+ Location: 92,57
+ Owner: USSR
+ Actor232: fenc
+ Location: 95,59
+ Owner: USSR
+ Actor233: fenc
+ Location: 95,58
+ Owner: USSR
+ Actor234: fenc
+ Location: 98,58
+ Owner: USSR
+ Actor235: fenc
+ Location: 98,59
+ Owner: USSR
+ Actor236: fenc
+ Location: 99,59
+ Owner: USSR
+ Actor237: fenc
+ Location: 100,59
+ Owner: USSR
+ Actor238: fenc
+ Location: 101,59
+ Owner: USSR
+ Actor239: fenc
+ Location: 102,59
+ Owner: USSR
+ Actor240: fenc
+ Location: 103,60
+ Owner: USSR
+ Actor241: fenc
+ Location: 103,59
+ Owner: USSR
+ Actor242: fenc
+ Location: 104,59
+ Owner: USSR
+ Actor243: fenc
+ Location: 104,60
+ Owner: USSR
+ Actor244: fenc
+ Location: 95,45
+ Owner: USSR
+ Actor245: fenc
+ Location: 96,45
+ Owner: USSR
+ Actor246: fenc
+ Location: 97,45
+ Owner: USSR
+ Actor247: fenc
+ Location: 98,45
+ Owner: USSR
+ Actor248: fenc
+ Location: 99,45
+ Owner: USSR
+ Actor249: fenc
+ Location: 100,45
+ Owner: USSR
+ Actor250: fenc
+ Location: 99,44
+ Owner: USSR
+ Actor251: fenc
+ Location: 100,44
+ Owner: USSR
+ Actor252: fenc
+ Location: 101,44
+ Owner: USSR
+ Actor253: fenc
+ Location: 101,45
+ Owner: USSR
+ Actor254: fenc
+ Location: 98,46
+ Owner: USSR
+ Actor255: fenc
+ Location: 97,46
+ Owner: USSR
+ Actor256: fenc
+ Location: 102,45
+ Owner: USSR
+ Actor257: fenc
+ Location: 103,45
+ Owner: USSR
+ Actor258: fenc
+ Location: 104,45
+ Owner: USSR
+ Actor259: fenc
+ Location: 106,44
+ Owner: USSR
+ Actor260: fenc
+ Location: 106,45
+ Owner: USSR
+ Actor261: fenc
+ Location: 106,46
+ Owner: USSR
+ Actor262: fenc
+ Location: 107,45
+ Owner: USSR
+ Actor263: fenc
+ Location: 107,46
+ Owner: USSR
+ Actor264: fenc
+ Location: 107,47
+ Owner: USSR
+ Actor265: fenc
+ Location: 107,48
+ Owner: USSR
+ Actor266: fenc
+ Location: 106,48
+ Owner: USSR
+ Actor267: fenc
+ Location: 105,49
+ Owner: USSR
+ Actor268: fenc
+ Location: 105,50
+ Owner: USSR
+ Actor269: fenc
+ Location: 105,51
+ Owner: USSR
+ Actor270: fenc
+ Location: 106,51
+ Owner: USSR
+ Actor271: fenc
+ Location: 106,52
+ Owner: USSR
+ Actor272: fenc
+ Location: 107,52
+ Owner: USSR
+ Actor273: fenc
+ Location: 105,59
+ Owner: USSR
+ Actor274: fenc
+ Location: 106,59
+ Owner: USSR
+ Actor275: fenc
+ Location: 107,59
+ Owner: USSR
+ Actor276: fenc
+ Location: 108,59
+ Owner: USSR
+ Actor277: fenc
+ Location: 108,58
+ Owner: USSR
+ Actor278: fenc
+ Location: 107,58
+ Owner: USSR
+ Actor279: fenc
+ Location: 106,49
+ Owner: USSR
+ Actor282: fenc
+ Location: 94,81
+ Owner: USSR
+ Actor281: fenc
+ Location: 93,81
+ Owner: USSR
+ Actor280: fenc
+ Location: 93,82
+ Owner: USSR
+ Actor209: fenc
+ Location: 93,83
+ Owner: USSR
+ Actor96: fenc
+ Location: 93,84
+ Owner: USSR
+ Actor290: fenc
+ Location: 92,88
+ Owner: USSR
+ Actor289: fenc
+ Location: 93,88
+ Owner: USSR
+ Actor287: fenc
+ Location: 92,89
+ Owner: USSR
+ Actor288: fenc
+ Location: 93,89
+ Owner: USSR
+ Actor286: fenc
+ Location: 91,89
+ Owner: USSR
+ Actor285: fenc
+ Location: 90,89
+ Owner: USSR
+ Actor284: fenc
+ Location: 89,89
+ Owner: USSR
+ Actor283: fenc
+ Location: 89,88
+ Owner: USSR
+ Actor301: fenc
+ Location: 86,88
+ Owner: USSR
+ Actor293: fenc
+ Location: 85,88
+ Owner: USSR
+ Actor299: fenc
+ Location: 85,89
+ Owner: USSR
+ Actor300: fenc
+ Location: 86,89
+ Owner: USSR
+ Actor298: fenc
+ Location: 84,89
+ Owner: USSR
+ Actor297: fenc
+ Location: 83,89
+ Owner: USSR
+ Actor296: fenc
+ Location: 82,89
+ Owner: USSR
+ Actor295: fenc
+ Location: 81,89
+ Owner: USSR
+ Actor292: fenc
+ Location: 81,87
+ Owner: USSR
+ Actor294: fenc
+ Location: 81,88
+ Owner: USSR
+ Actor291: fenc
+ Location: 82,87
+ Owner: USSR
+ Actor199: fenc
+ Location: 81,81
+ Owner: USSR
+ Actor194: fenc
+ Location: 82,81
+ Owner: USSR
+ Actor180: fenc
+ Location: 89,79
+ Owner: USSR
+ Actor181: fenc
+ Location: 89,80
+ Owner: USSR
+ Actor182: fenc
+ Location: 88,80
+ Owner: USSR
+ Actor185: fenc
+ Location: 87,80
+ Owner: USSR
+ Actor186: fenc
+ Location: 86,80
+ Owner: USSR
+ Actor188: fenc
+ Location: 85,80
+ Owner: USSR
+ Actor190: fenc
+ Location: 84,80
+ Owner: USSR
+ Actor191: fenc
+ Location: 83,80
+ Owner: USSR
+ Actor192: fenc
+ Location: 82,80
+ Owner: USSR
+ Actor200: fenc
+ Location: 84,79
+ Owner: USSR
+ Actor193: fenc
+ Location: 81,80
+ Owner: USSR
+ Actor105: fenc
+ Location: 76,57
+ Owner: USSR
+ Actor111: fenc
+ Location: 76,56
+ Owner: USSR
+ Actor115: fenc
+ Location: 75,56
+ Owner: USSR
+ Actor131: fenc
+ Location: 74,56
+ Owner: USSR
+ Actor144: fenc
+ Location: 74,57
+ Owner: USSR
+ Actor145: fenc
+ Location: 73,57
+ Owner: USSR
+ Actor146: fenc
+ Location: 72,57
+ Owner: USSR
+ Actor147: fenc
+ Location: 72,56
+ Owner: USSR
+ Actor303: fenc
+ Location: 83,79
+ Owner: USSR
+ Actor302: apwr
+ Location: 5,6
+ Owner: USSR
+ Actor304: apwr
+ Location: 5,6
+ Owner: USSR
+ ExplosiveBarrel: brl3
+ Location: 55,40
+ Owner: USSR
+ ExplosiveBarrel2: brl3
+ Location: 91,81
+ Owner: USSR
+ JeepBarrel1: brl3
+ Location: 95,66
+ Owner: USSR
+ JeepBarrel2: brl3
+ Location: 99,66
+ Owner: USSR
+ JeepBarrel3: brl3
+ Location: 96,65
+ Owner: USSR
+ JeepBarrel4: barl
+ Location: 99,65
+ Owner: USSR
+ USSRSubPen: spen
+ Location: 109,53
+ Owner: USSR
+ Health: 52
+ USSRFlameTower1: ftur
+ Location: 82,82
+ Owner: USSR
+ USSRFlameTower2: ftur
+ Location: 82,86
+ Owner: USSR
+ USSRFlameTower3: ftur
+ Location: 91,80
+ Owner: USSR
+ USSRFlameTower4: ftur
+ Location: 97,58
+ Owner: USSR
+ USSRFlameTower5: ftur
+ Location: 92,56
+ Owner: USSR
+ USSRFlameTower6: ftur
+ Location: 92,51
+ Owner: USSR
+ USSRRadarDome: dome
+ Location: 105,56
+ Owner: USSR
+ Health: 56
+ USSRPowerPlant: powr
+ Location: 103,55
+ Owner: USSR
+ Health: 52
+ USSRBarracks1: barr
+ Location: 84,81
+ Owner: USSR
+ USSRBarracks2: barr
+ Location: 99,46
+ Owner: USSR
+ USSRBarracks3: barr
+ Location: 53,50
+ Owner: USSR
+ Jeep: jeep.mission
+ Location: 101,97
+ Owner: England
+ Facing: 32
+ Heavy1: 3tnk
+ Location: 96,66
+ Owner: USSR
+ Health: 13
+ Facing: 128
+ Heavy2: 3tnk
+ Location: 97,65
+ Owner: USSR
+ Health: 13
+ Facing: 128
+ Heavy3: 3tnk
+ Location: 98,66
+ Owner: USSR
+ Health: 6
+ Facing: 128
+ USSRTruk: truk
+ Location: 56,93
+ Owner: USSR
+ Facing: 96
+ MediGuard: e2
+ Location: 104,48
+ Owner: USSR
+ Facing: 160
+ SubCell: 1
+ PGuard1: e1
+ Location: 89,85
+ Owner: USSR
+ Facing: 64
+ SubCell: 3
+ PGuard2: e1
+ Location: 89,86
+ Owner: USSR
+ Facing: 64
+ SubCell: 3
+ PGuard3: e1
+ Location: 89,86
+ Owner: USSR
+ Facing: 64
+ SubCell: 1
+ PGuard4: e1
+ Location: 89,87
+ Owner: USSR
+ Facing: 64
+ SubCell: 1
+ PGuard5: e1
+ Location: 91,84
+ Owner: USSR
+ Facing: 128
+ SubCell: 4
+ USSRBaseGuard1: e2.autotarget
+ Location: 96,60
+ Owner: USSR
+ Facing: 96
+ SubCell: 1
+ USSRBaseGuard2: e2.autotarget
+ Location: 102,49
+ Owner: USSR
+ Facing: 160
+ SubCell: 3
+ USSRBaseGuard3: e2.autotarget
+ Location: 104,50
+ Owner: USSR
+ Facing: 160
+ SubCell: 3
+ USSRCheckpointGuard1: e1
+ Location: 95,68
+ Owner: USSR
+ Facing: 64
+ SubCell: 0
+ USSRCheckpointGuard2: e1
+ Location: 99,68
+ Owner: USSR
+ Facing: 192
+ SubCell: 0
+ Jail1: prison
+ Location: 104,47
+ Owner: Greece
+ Jail2: prison
+ Location: 91,86
+ Owner: Greece
+ PrisonedMedi: medi
+ Location: 104,47
+ Owner: Greece
+ Health: 15
+ Facing: 192
+ SubCell: 0
+ PrisonedEngi1: hacke6
+ Location: 91,86
+ Owner: Greece
+ Facing: 192
+ SubCell: 0
+ PrisonedEngi2: hacke6
+ Location: 91,86
+ Owner: Greece
+ Facing: 192
+ SubCell: 1
+ PrisonedEngi3: hacke6
+ Location: 91,86
+ Owner: Greece
+ Facing: 192
+ SubCell: 2
+ PrisonedEngi4: hacke6
+ Location: 91,86
+ Owner: Greece
+ Facing: 192
+ SubCell: 4
+ MediHideaway: v06
+ Location: 57,93
+ Owner: Neutral
+ InsertionHeli: tran
+ Location: 55,80
+ Owner: Greece
+ Facing: 32
+ TanyaWaypoint: waypoint
+ Location: 54,81
+ Owner: Greece
+ InsertionHeliExit: waypoint
+ Location: 46,76
+ Owner: Neutral
+ IslandParadropReinforcementsDropzone: waypoint
+ Location: 117,37
+ Owner: Neutral
+ AlliedIslandReinforcementsEntry: waypoint
+ Location: 112,31
+ Owner: Neutral
+ ParadropReinforcementsDropzone: waypoint
+ Location: 76,62
+ Owner: Neutral
+ MediSpawnpoint: waypoint
+ Location: 58,93
+ Owner: Neutral
+ MediRallypoint: waypoint
+ Location: 58,94
+ Owner: Neutral
+ USSRReinforcementsCameraWaypoint: waypoint
+ Location: 56,37
+ Owner: Neutral
+ USSRReinforcementsEntryWaypoint: waypoint
+ Location: 58,31
+ Owner: Neutral
+ USSRReinforcementsRallyWaypoint: waypoint
+ Location: 54,42
+ Owner: Neutral
+ BaseCameraWaypoint: waypoint
+ Location: 88,85
+ Owner: Neutral
+ JeepCheckpoint: waypoint
+ Location: 97,67
+ Owner: Neutral
+ JeepSuicideWaypoint: waypoint
+ Location: 97,59
+ Owner: Neutral
+ CheckpointGuardWaypoint1: waypoint
+ Location: 96,69
+ Owner: Neutral
+ CheckpointGuardWaypoint2: waypoint
+ Location: 98,69
+ Owner: Neutral
+ LargeCameraWaypoint1: waypoint
+ Location: 83,38
+ Owner: Neutral
+ LargeCameraWaypoint2: waypoint
+ Location: 83,66
+ Owner: Neutral
+ LargeCameraWaypoint3: waypoint
+ Location: 83,94
+ Owner: Neutral
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
+
+Weapons: weapons.yaml
diff --git a/mods/ura/maps/allies-03b/rules.yaml b/mods/ura/maps/allies-03b/rules.yaml
new file mode 100644
index 0000000..241ecb9
--- /dev/null
+++ b/mods/ura/maps/allies-03b/rules.yaml
@@ -0,0 +1,179 @@
+World:
+ LuaScript:
+ Scripts: allies03b.lua
+ MissionData:
+ Briefing: LANDCOM 16 HQS.\nTOP SECRET.\nTO: FIELD COMMANDER A9\n\nINTELLIGENCE RECON SHOWS HEAVY\nSOVIET MOVEMENT IN YOUR AREA.\nNEARBY BRIDGES ARE KEY TO SOVIET\nADVANCEMENT. DESTROY ALL BRIDGES\nASAP. TANYA WILL ASSIST. KEEP HER\nALIVE AT ALL COSTS.\n\nCONFIRMATION CODE 1612.\n\nTRANSMISSION ENDS.\n
+ StartVideo: brdgtilt.vqa
+ WinVideo: toofar.vqa
+ LossVideo: sovtstar.vqa
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ Default: easy
+
+^Building:
+ Capturable:
+ CaptureThreshold: 25
+
+^TechBuilding:
+ Capturable:
+ Types: ~disabled
+
+powerproxy.paratroopers:
+ ParatroopersPower:
+ DropItems: E1,E1,E1,E2,E2
+
+HACKE6:
+ Inherits: E6
+ -RepairsBridges:
+ -ExternalCaptures:
+ Captures:
+ CaptureTypes: building
+ WithInfantryBody:
+ Targetable:
+ RequiresCondition: !jail
+ Targetable@PRISONER:
+ TargetTypes: Prisoner
+ RenderSprites:
+ Image: E6
+ ExternalCondition@JAIL:
+ Condition: jail
+
+MEDI:
+ Targetable:
+ RequiresCondition: !jail
+ Targetable@PRISONER:
+ TargetTypes: Prisoner
+ ExternalCondition@JAIL:
+ Condition: jail
+
+PRISON:
+ HiddenUnderShroud:
+ Type: CenterPosition
+ Immobile:
+ OccupiesSpace: false
+ ProximityExternalCondition:
+ Condition: jail
+ Range: 1c0
+
+CAMERA:
+ RevealsShroud:
+ Range: 8c5
+
+CAMERA.VeryLarge:
+ Inherits: CAMERA
+ RevealsShroud:
+ Range: 40c0
+
+CAMERA.Jeep:
+ AlwaysVisible:
+ Mobile:
+ TerrainSpeeds:
+ RevealsShroud:
+ Range: 4c0
+ ScriptTriggers:
+
+MONEYCRATE:
+ Tooltip:
+ Name: Crate
+ WithCrateBody:
+ RenderSprites:
+ Image: scrate
+
+E1.Autotarget:
+ Inherits: E1
+ Buildable:
+ Prerequisites: ~disabled
+ RevealsShroud:
+ Range: 8c0
+ AutoTarget:
+ ScanRadius: 7
+ RenderSprites:
+ Image: E1
+
+E2.Autotarget:
+ Inherits: E2
+ Buildable:
+ Prerequisites: ~disabled
+ RevealsShroud:
+ Range: 8c0
+ AutoTarget:
+ ScanRadius: 7
+ RenderSprites:
+ Image: E2
+
+DOG:
+ Buildable:
+ Prerequisites: ~disabled
+ RevealsShroud:
+ Range: 9c0
+ AutoTarget:
+ ScanRadius: 8
+
+TRUK:
+ -Demolishable:
+ Targetable:
+ TargetTypes: Ground, Truk
+ Armor:
+ Type: Truk
+
+TRAN:
+ RejectsOrders:
+ -Selectable:
+ RevealsShroud:
+ Range: 0c0
+ Cargo:
+ Types: ~disabled
+ Interactable:
+
+JEEP.mission:
+ Inherits: JEEP
+ -Selectable:
+ -Demolishable:
+ -Huntable:
+ -Targetable:
+ -Armament:
+ -WithSpriteTurret:
+ -WithMuzzleOverlay:
+ Cargo:
+ Types: ~disabled
+ RevealsShroud:
+ Range: 0c0
+ RenderSprites:
+ Image: JEEP
+ Interactable:
+
+E3:
+ Buildable:
+ Prerequisites: ~disabled
+
+E4:
+ Buildable:
+ Prerequisites: ~disabled
+
+E6:
+ Buildable:
+ Prerequisites: ~disabled
+
+SNIPER:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+SHOK:
+ Buildable:
+ Prerequisites: ~disabled
+
+SS:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSUB:
+ Buildable:
+ Prerequisites: ~disabled
diff --git a/mods/ura/maps/allies-03b/weapons.yaml b/mods/ura/maps/allies-03b/weapons.yaml
new file mode 100644
index 0000000..2d19edd
--- /dev/null
+++ b/mods/ura/maps/allies-03b/weapons.yaml
@@ -0,0 +1,10 @@
+Colt45:
+ ValidTargets: Ground, Infantry, Truk
+ Warhead@1Dam: SpreadDamage
+ ValidTargets: Barrel, Infantry, Truk
+ Versus:
+ Truk: 50
+
+BarrelExplode:
+ Warhead@1Dam:
+ ValidTargets: Ground, Prisoner
diff --git a/mods/ura/maps/allies-04/allies04-AI.lua b/mods/ura/maps/allies-04/allies04-AI.lua
new file mode 100644
index 0000000..bb20e2d
--- /dev/null
+++ b/mods/ura/maps/allies-04/allies04-AI.lua
@@ -0,0 +1,279 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+
+IdlingUnits = { }
+Yaks = { }
+
+AttackGroupSizes =
+{
+ easy = 6,
+ normal = 8,
+ hard = 10,
+ tough = 12
+}
+
+AttackDelays =
+{
+ easy = { DateTime.Seconds(4), DateTime.Seconds(9) },
+ normal = { DateTime.Seconds(2), DateTime.Seconds(7) },
+ hard = { DateTime.Seconds(1), DateTime.Seconds(5) },
+ tough = { DateTime.Seconds(1), DateTime.Seconds(5) }
+}
+
+AttackRallyPoints =
+{
+ { SovietRally1.Location, SovietRally3.Location, SovietRally5.Location, SovietRally4.Location, SovietRally13.Location, PlayerBase.Location },
+ { SovietRally7.Location, SovietRally10.Location, PlayerBase.Location },
+ { SovietRally1.Location, SovietRally3.Location, SovietRally5.Location, SovietRally4.Location, SovietRally12.Location, PlayerBase.Location },
+ { SovietRally7.Location, ParadropPoint1.Location, PlayerBase.Location },
+ { SovietRally8.Location, SovietRally9.Location, ParadropPoint1.Location, PlayerBase.Location, }
+}
+
+SovietInfantryTypes = { "e1", "e1", "e2" }
+SovietVehicleTypes = { "3tnk", "3tnk", "3tnk", "ftrk", "ftrk", "apc" }
+SovietAircraftType = { "yak" }
+
+AttackOnGoing = false
+HoldProduction = false
+HarvesterKilled = false
+
+Powr1 = { name = "powr", pos = CPos.New(47, 21), prize = 500, exists = true }
+Barr = { name = "barr", pos = CPos.New(53, 26), prize = 400, exists = true }
+Proc = { name = "proc", pos = CPos.New(54, 21), prize = 1400, exists = true }
+Weap = { name = "weap", pos = CPos.New(48, 28), prize = 2000, exists = true }
+Powr2 = { name = "powr", pos = CPos.New(51, 21), prize = 500, exists = true }
+Powr3 = { name = "powr", pos = CPos.New(46, 25), prize = 500, exists = true }
+Powr4 = { name = "powr", pos = CPos.New(49, 21), prize = 500, exists = true }
+Ftur1 = { name = "powr", pos = CPos.New(56, 27), prize = 600, exists = true }
+Ftur2 = { name = "powr", pos = CPos.New(51, 32), prize = 600, exists = true }
+Ftur3 = { name = "powr", pos = CPos.New(54, 30), prize = 600, exists = true }
+Afld1 = { name = "afld", pos = CPos.New(43, 23), prize = 500, exists = true }
+Afld2 = { name = "afld", pos = CPos.New(43, 21), prize = 500, exists = true }
+BaseBuildings = { Powr1, Barr, Proc, Weap, Powr2, Powr3, Powr4, Ftur1, Ftur2, Ftur3, Afld1, Afld2 }
+InitialBase = { Barracks, Refinery, PowerPlant1, PowerPlant2, PowerPlant3, PowerPlant4, Warfactory, Flametur1, Flametur2, Flametur3, Airfield1, Airfield2 }
+
+BuildBase = function()
+ if Conyard.IsDead or Conyard.Owner ~= ussr then
+ return
+ elseif Harvester.IsDead and ussr.Resources <= 299 then
+ return
+ end
+
+ for i,v in ipairs(BaseBuildings) do
+ if not v.exists then
+ BuildBuilding(v)
+ return
+ end
+ end
+
+ Trigger.AfterDelay(DateTime.Seconds(10), BuildBase)
+end
+
+BuildBuilding = function(building)
+ Trigger.AfterDelay(Actor.BuildTime(building.name), function()
+ local actor = Actor.Create(building.name, true, { Owner = ussr, Location = building.pos })
+ ussr.Cash = ussr.Cash - building.prize
+
+ building.exists = true
+ Trigger.OnKilled(actor, function() building.exists = false end)
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == ussr and building.Health < building.MaxHealth * 3/4 then
+ building.StartBuildingRepairs()
+ DefendActor(actor)
+ end
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(10), BuildBase)
+ end)
+end
+
+IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
+
+SetupAttackGroup = function()
+ local units = { }
+
+ for i = 0, AttackGroupSize, 1 do
+ if #IdlingUnits == 0 then
+ return units
+ end
+
+ local number = Utils.RandomInteger(1, #IdlingUnits)
+
+ if IdlingUnits[number] and not IdlingUnits[number].IsDead then
+ units[i] = IdlingUnits[number]
+ table.remove(IdlingUnits, number)
+ end
+ end
+
+ return units
+end
+
+SendAttack = function()
+ if Attacking then
+ return
+ end
+ Attacking = true
+ HoldProduction = true
+
+ local units = SetupAttackGroup()
+ local path = Utils.Random(AttackRallyPoints)
+ Utils.Do(units, function(unit)
+ unit.Patrol(path)
+ IdleHunt(unit)
+ end)
+
+ Trigger.OnAllRemovedFromWorld(units, function()
+ Attacking = false
+ HoldProduction = false
+ end)
+end
+
+ProtectHarvester = function(unit)
+ DefendActor(unit)
+ Trigger.OnKilled(unit, function() HarvesterKilled = true end)
+end
+
+DefendActor = function(unit)
+ Trigger.OnDamaged(unit, function(self, attacker)
+ if AttackOnGoing then
+ return
+ end
+ AttackOnGoing = true
+
+ local Guards = SetupAttackGroup()
+
+ if #Guards <= 0 then
+ AttackOnGoing = false
+ return
+ end
+
+ Utils.Do(Guards, function(unit)
+ if not self.IsDead then
+ unit.AttackMove(self.Location)
+ end
+ IdleHunt(unit)
+ end)
+
+ Trigger.OnAllRemovedFromWorld(Guards, function() AttackOnGoing = false end)
+ end)
+end
+
+InitAIUnits = function()
+ IdlingUnits = ussr.GetGroundAttackers()
+
+ DefendActor(Conyard)
+ for i,v in ipairs(InitialBase) do
+ DefendActor(v)
+ Trigger.OnDamaged(v, function(building)
+ if building.Owner == ussr and building.Health < building.MaxHealth * 3/4 then
+ building.StartBuildingRepairs()
+ end
+ end)
+
+ Trigger.OnKilled(v, function()
+ BaseBuildings[i].exists = false
+ end)
+ end
+end
+
+ProduceInfantry = function()
+ if HoldProduction then
+ Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry)
+ return
+ end
+
+ -- See AttackDelay in WorldLoaded
+ local delay = Utils.RandomInteger(AttackDelay[1], AttackDelay[2])
+ local toBuild = { Utils.Random(SovietInfantryTypes) }
+ ussr.Build(toBuild, function(unit)
+ IdlingUnits[#IdlingUnits + 1] = unit[1]
+ Trigger.AfterDelay(delay, ProduceInfantry)
+
+ -- See AttackGroupSize in WorldLoaded
+ if #IdlingUnits >= (AttackGroupSize * 2.5) then
+ SendAttack()
+ end
+ end)
+end
+
+ProduceVehicles = function()
+ if HoldProduction then
+ Trigger.AfterDelay(DateTime.Minutes(1), ProduceVehicles)
+ return
+ end
+
+ -- See AttackDelay in WorldLoaded
+ local delay = Utils.RandomInteger(AttackDelay[1], AttackDelay[2])
+ if HarvesterKilled then
+ ussr.Build({ "harv" }, function(harv)
+ ProtectHarvester(harv[1])
+ HarvesterKilled = false
+ Trigger.AfterDelay(delay, ProduceVehicles)
+ end)
+ else
+ local toBuild = { Utils.Random(SovietVehicleTypes) }
+ ussr.Build(toBuild, function(unit)
+ IdlingUnits[#IdlingUnits + 1] = unit[1]
+ Trigger.AfterDelay(delay, ProduceVehicles)
+
+ -- See AttackGroupSize in WorldLoaded
+ if #IdlingUnits >= (AttackGroupSize * 2.5) then
+ SendAttack()
+ end
+ end)
+ end
+end
+
+ProduceAircraft = function()
+ ussr.Build(SovietAircraftType, function(units)
+ local yak = units[1]
+ Yaks[#Yaks + 1] = yak
+
+ Trigger.OnKilled(yak, ProduceAircraft)
+ if #Yaks == 1 then
+ Trigger.AfterDelay(DateTime.Minutes(1), ProduceAircraft)
+ end
+
+ TargetAndAttack(yak)
+ end)
+end
+
+TargetAndAttack = function(yak, target)
+ if not target or target.IsDead or (not target.IsInWorld) then
+ local enemies = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == player and self.HasProperty("Health") and yak.CanTarget(self) end)
+
+ if #enemies > 0 then
+ target = Utils.Random(enemies)
+ end
+ end
+
+ if target and yak.AmmoCount() > 0 and yak.CanTarget(target) then
+ yak.Attack(target)
+ else
+ yak.ReturnToBase()
+ end
+
+ yak.CallFunc(function()
+ TargetAndAttack(yak, target)
+ end)
+end
+
+ActivateAI = function()
+ InitAIUnits()
+ ProtectHarvester(Harvester)
+
+ local difficulty = Map.LobbyOption("difficulty")
+ AttackDelay = AttackDelays[difficulty]
+ AttackGroupSize = AttackGroupSizes[difficulty]
+ Trigger.AfterDelay(DateTime.Seconds(10), function()
+ ProduceInfantry()
+ ProduceVehicles()
+ ProduceAircraft()
+ end)
+end
diff --git a/mods/ura/maps/allies-04/allies04.lua b/mods/ura/maps/allies-04/allies04.lua
new file mode 100644
index 0000000..3f73b2a
--- /dev/null
+++ b/mods/ura/maps/allies-04/allies04.lua
@@ -0,0 +1,182 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+
+ConvoyUnits =
+{
+ { "ftrk", "ftrk", "truk", "truk", "apc", "ftrk" },
+ { "ftrk", "3tnk", "truk", "truk", "apc" },
+ { "3tnk", "3tnk", "truk", "truk", "ftrk" }
+}
+
+ConvoyRallyPoints =
+{
+ { SovietEntry1.Location, SovietRally1.Location, SovietRally3.Location, SovietRally5.Location, SovietRally4.Location, SovietRally6.Location },
+ { SovietEntry2.Location, SovietRally10.Location, SovietRally11.Location }
+}
+
+ConvoyDelays =
+{
+ easy = { DateTime.Minutes(4), DateTime.Minutes(5) + DateTime.Seconds(20) },
+ normal = { DateTime.Minutes(2) + DateTime.Seconds(30), DateTime.Minutes(4) },
+ hard = { DateTime.Minutes(1) + DateTime.Seconds(30), DateTime.Minutes(2) + DateTime.Seconds(30) },
+ tough = { DateTime.Minutes(1), DateTime.Minutes(1) + DateTime.Seconds(15) }
+}
+
+Convoys =
+{
+ easy = 2,
+ normal = 3,
+ hard = 5,
+ tough = 10
+}
+
+ParadropDelays =
+{
+ easy = { DateTime.Seconds(40), DateTime.Seconds(90) },
+ normal = { DateTime.Seconds(30), DateTime.Seconds(70) },
+ hard = { DateTime.Seconds(20), DateTime.Seconds(50) },
+ tough = { DateTime.Seconds(10), DateTime.Seconds(25) }
+}
+
+ParadropWaves =
+{
+ easy = 4,
+ normal = 6,
+ hard = 10,
+ tough = 25
+}
+
+ParadropLZs = { ParadropPoint1.CenterPosition, ParadropPoint2.CenterPosition, ParadropPoint3.CenterPosition }
+
+Paradropped = 0
+Paradrop = function()
+ Trigger.AfterDelay(Utils.RandomInteger(ParadropDelay[1], ParadropDelay[2]), function()
+ local units = PowerProxy.SendParatroopers(Utils.Random(ParadropLZs))
+ Utils.Do(units, function(unit)
+ Trigger.OnAddedToWorld(unit, IdleHunt)
+ end)
+
+ Paradropped = Paradropped + 1
+ if Paradropped <= ParadropWaves[Map.LobbyOption("difficulty")] then
+ Paradrop()
+ end
+ end)
+end
+
+ConvoysSent = 0
+SendConvoys = function()
+ Trigger.AfterDelay(Utils.RandomInteger(ConvoyDelay[1], ConvoyDelay[2]), function()
+ local path = Utils.Random(ConvoyRallyPoints)
+ local units = Reinforcements.Reinforce(ussr, Utils.Random(ConvoyUnits), { path[1] })
+ local lastWaypoint = path[#path]
+
+ Utils.Do(units, function(unit)
+ Trigger.OnAddedToWorld(unit, function()
+ if unit.Type == "truk" then
+ Utils.Do(path, function(waypoint)
+ unit.Move(waypoint)
+ end)
+
+ Trigger.OnIdle(unit, function()
+ unit.Move(lastWaypoint)
+ end)
+ else
+ unit.Patrol(path)
+ Trigger.OnIdle(unit, function()
+ unit.AttackMove(lastWaypoint)
+ end)
+ end
+ end)
+ end)
+
+ local id = Trigger.OnEnteredFootprint({ lastWaypoint }, function(a, id)
+ if a.Owner == ussr and Utils.Any(units, function(unit) return unit == a end) then
+
+ -- We are at our destination and thus don't care about other queued actions anymore
+ a.Stop()
+ a.Destroy()
+
+ if a.Type == "truk" then
+ player.MarkFailedObjective(DestroyConvoys)
+ end
+ end
+ end)
+
+ Trigger.OnAllRemovedFromWorld(units, function()
+ Trigger.RemoveFootprintTrigger(id)
+
+ ConvoysSent = ConvoysSent + 1
+ if ConvoysSent <= Convoys[Map.LobbyOption("difficulty")] then
+ SendConvoys()
+ else
+ player.MarkCompletedObjective(DestroyConvoys)
+ end
+ end)
+
+ Media.PlaySpeechNotification(player, "ConvoyApproaching")
+ end)
+end
+
+Tick = function()
+ if player.HasNoRequiredUnits() then
+ player.MarkFailedObjective(KillUSSR)
+ end
+
+ if ussr.HasNoRequiredUnits() then
+ player.MarkCompletedObjective(KillUSSR)
+
+ -- We don't care about future convoys anymore
+ player.MarkCompletedObjective(DestroyConvoys)
+ end
+end
+
+InitObjectives = function()
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+
+ KillUSSR = player.AddPrimaryObjective("Destroy all Soviet units and buildings in this region.")
+ DestroyConvoys = player.AddSecondaryObjective("Eliminate all passing Soviet convoys.")
+
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ Trigger.OnPlayerLost(player, function()
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ Media.PlaySpeechNotification(player, "MissionFailed")
+ end)
+ end)
+ Trigger.OnPlayerWon(player, function()
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ Media.PlaySpeechNotification(player, "MissionAccomplished")
+ end)
+ end)
+end
+
+WorldLoaded = function()
+ player = Player.GetPlayer("Greece")
+ ussr = Player.GetPlayer("USSR")
+
+ Camera.Position = AlliedConyard.CenterPosition
+
+ InitObjectives()
+
+ local difficulty = Map.LobbyOption("difficulty")
+ ConvoyDelay = ConvoyDelays[difficulty]
+ ParadropDelay = ParadropDelays[difficulty]
+ PowerProxy = Actor.Create("powerproxy.paratroopers", false, { Owner = ussr })
+ Paradrop()
+ SendConvoys()
+
+ Trigger.AfterDelay(0, ActivateAI)
+end
diff --git a/mods/ura/maps/allies-04/map.bin b/mods/ura/maps/allies-04/map.bin
new file mode 100644
index 0000000..2479ae9
Binary files /dev/null and b/mods/ura/maps/allies-04/map.bin differ
diff --git a/mods/ura/maps/allies-04/map.png b/mods/ura/maps/allies-04/map.png
new file mode 100644
index 0000000..29bfd56
Binary files /dev/null and b/mods/ura/maps/allies-04/map.png differ
diff --git a/mods/ura/maps/allies-04/map.yaml b/mods/ura/maps/allies-04/map.yaml
new file mode 100644
index 0000000..856750c
--- /dev/null
+++ b/mods/ura/maps/allies-04/map.yaml
@@ -0,0 +1,538 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 04: Ten to one
+
+Author: Westwood Studios
+
+Tileset: SNOW
+
+MapSize: 128,128
+
+Bounds: 37,21,56,65
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@USSR:
+ Name: USSR
+ Faction: soviet
+ Color: FE1100
+ Enemies: Greece
+ PlayerReference@Greece:
+ Name: Greece
+ Playable: True
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: E2E6F5
+ Enemies: USSR
+
+Actors:
+ Actor0: t17
+ Location: 65,35
+ Owner: Neutral
+ Actor1: tc02
+ Location: 65,36
+ Owner: Neutral
+ Actor2: tc04
+ Location: 85,81
+ Owner: Neutral
+ Actor3: tc01
+ Location: 89,84
+ Owner: Neutral
+ Actor4: tc05
+ Location: 90,83
+ Owner: Neutral
+ Actor5: t10
+ Location: 84,71
+ Owner: Neutral
+ Actor6: t11
+ Location: 54,55
+ Owner: Neutral
+ Actor7: tc04
+ Location: 45,53
+ Owner: Neutral
+ Actor8: t01
+ Location: 45,44
+ Owner: Neutral
+ Actor9: t11
+ Location: 59,71
+ Owner: Neutral
+ Actor10: tc01
+ Location: 62,84
+ Owner: Neutral
+ Actor11: t07
+ Location: 51,84
+ Owner: Neutral
+ Actor12: t08
+ Location: 48,85
+ Owner: Neutral
+ Actor13: t14
+ Location: 46,84
+ Owner: Neutral
+ Actor14: t11
+ Location: 40,84
+ Owner: Neutral
+ Actor15: t07
+ Location: 87,44
+ Owner: Neutral
+ Actor16: t01
+ Location: 92,45
+ Owner: Neutral
+ Actor17: t11
+ Location: 77,56
+ Owner: Neutral
+ Actor18: t02
+ Location: 79,47
+ Owner: Neutral
+ Actor19: tc02
+ Location: 44,68
+ Owner: Neutral
+ Actor20: t17
+ Location: 67,62
+ Owner: Neutral
+ Actor21: tc05
+ Location: 68,67
+ Owner: Neutral
+ Actor22: tc04
+ Location: 67,66
+ Owner: Neutral
+ Actor23: t15
+ Location: 71,63
+ Owner: Neutral
+ Actor24: t16
+ Location: 72,62
+ Owner: Neutral
+ Actor25: t08
+ Location: 64,55
+ Owner: Neutral
+ Actor26: t17
+ Location: 69,50
+ Owner: Neutral
+ Actor27: tc04
+ Location: 67,49
+ Owner: Neutral
+ Actor28: tc02
+ Location: 67,51
+ Owner: Neutral
+ Actor29: t01
+ Location: 67,44
+ Owner: Neutral
+ Actor30: t06
+ Location: 67,54
+ Owner: Neutral
+ Actor31: tc01
+ Location: 70,54
+ Owner: Neutral
+ Actor32: t17
+ Location: 70,55
+ Owner: Neutral
+ Actor33: tc04
+ Location: 67,76
+ Owner: Neutral
+ Actor34: tc03
+ Location: 71,52
+ Owner: Neutral
+ Actor35: t05
+ Location: 40,74
+ Owner: Neutral
+ Actor36: tc02
+ Location: 69,72
+ Owner: Neutral
+ Actor37: t10
+ Location: 68,77
+ Owner: Neutral
+ Actor38: t11
+ Location: 51,71
+ Owner: Neutral
+ Actor39: t08
+ Location: 50,78
+ Owner: Neutral
+ Actor40: t07
+ Location: 44,77
+ Owner: Neutral
+ Actor41: tc01
+ Location: 63,74
+ Owner: Neutral
+ Actor42: tc01
+ Location: 59,60
+ Owner: Neutral
+ Actor43: t17
+ Location: 53,66
+ Owner: Neutral
+ Actor44: t01
+ Location: 45,56
+ Owner: Neutral
+ Actor45: t10
+ Location: 43,56
+ Owner: Neutral
+ Actor46: t10
+ Location: 55,46
+ Owner: Neutral
+ Actor47: t14
+ Location: 58,49
+ Owner: Neutral
+ Actor48: t16
+ Location: 61,44
+ Owner: Neutral
+ Actor49: t01
+ Location: 89,62
+ Owner: Neutral
+ Actor50: t12
+ Location: 92,63
+ Owner: Neutral
+ Actor51: t08
+ Location: 92,60
+ Owner: Neutral
+ Actor52: t03
+ Location: 75,72
+ Owner: Neutral
+ Actor53: t06
+ Location: 75,80
+ Owner: Neutral
+ Actor54: t01
+ Location: 77,41
+ Owner: Neutral
+ Actor55: t03
+ Location: 76,42
+ Owner: Neutral
+ Actor56: t05
+ Location: 83,27
+ Owner: Neutral
+ Actor57: tc02
+ Location: 79,35
+ Owner: Neutral
+ Actor58: tc04
+ Location: 90,26
+ Owner: Neutral
+ Actor59: t17
+ Location: 92,22
+ Owner: Neutral
+ Actor60: tc03
+ Location: 91,31
+ Owner: Neutral
+ Actor61: t01
+ Location: 43,47
+ Owner: Neutral
+ Actor62: t02
+ Location: 37,52
+ Owner: Neutral
+ Actor63: t10
+ Location: 37,37
+ Owner: Neutral
+ Actor64: tc02
+ Location: 41,28
+ Owner: Neutral
+ Actor65: tc03
+ Location: 67,27
+ Owner: Neutral
+ Actor66: t16
+ Location: 63,27
+ Owner: Neutral
+ Actor67: t03
+ Location: 38,27
+ Owner: Neutral
+ Actor68: t06
+ Location: 42,31
+ Owner: Neutral
+ Actor69: t07
+ Location: 77,25
+ Owner: Neutral
+ Actor70: tc02
+ Location: 40,24
+ Owner: Neutral
+ Actor71: t17
+ Location: 37,24
+ Owner: Neutral
+ Actor81: silo
+ Location: 43,27
+ Owner: USSR
+ Actor82: silo
+ Location: 44,28
+ Owner: USSR
+ Actor83: silo
+ Location: 44,26
+ Owner: USSR
+ Actor89: 3tnk
+ Location: 42,35
+ Owner: USSR
+ Facing: 64
+ Actor90: 3tnk
+ Location: 39,34
+ Owner: USSR
+ Facing: 64
+ Actor91: 3tnk
+ Location: 49,31
+ Owner: USSR
+ Facing: 96
+ Actor93: e2
+ Location: 47,40
+ Owner: USSR
+ Facing: 64
+ SubCell: 0
+ Actor94: e2
+ Location: 47,36
+ Owner: USSR
+ Facing: 96
+ SubCell: 4
+ Actor95: e2
+ Location: 50,40
+ Owner: USSR
+ Facing: 96
+ SubCell: 0
+ Actor96: e2
+ Location: 48,40
+ Owner: USSR
+ Facing: 64
+ SubCell: 0
+ Actor97: e2
+ Location: 48,36
+ Owner: USSR
+ Facing: 64
+ SubCell: 0
+ Actor98: e2
+ Location: 46,39
+ Owner: USSR
+ Facing: 96
+ SubCell: 2
+ Actor99: e1
+ Location: 70,59
+ Owner: Greece
+ Facing: 192
+ SubCell: 4
+ Actor100: e1
+ Location: 44,34
+ Owner: USSR
+ Facing: 96
+ SubCell: 4
+ Actor101: e1
+ Location: 43,37
+ Owner: USSR
+ Facing: 96
+ SubCell: 4
+ waypoint17: waypoint
+ Location: 92,68
+ Owner: Neutral
+ waypoint98: waypoint
+ Location: 70,60
+ Owner: Neutral
+ Actor129: proc
+ Owner: Greece
+ Location: 82,54
+ Actor130: powr
+ Owner: Greece
+ Location: 87,53
+ Actor131: tent
+ Owner: Greece
+ Location: 83,49
+ Health: 12
+ Actor88: jeep
+ Location: 70,60
+ Owner: Greece
+ Facing: 224
+ Actor132: jeep
+ Location: 57,65
+ Owner: Greece
+ Actor133: jeep
+ Location: 62,67
+ Owner: Greece
+ Actor134: jeep
+ Location: 74,81
+ Owner: Greece
+ Actor135: jeep
+ Location: 45,71
+ Owner: Greece
+ Actor136: e1
+ Location: 47,71
+ Owner: Greece
+ Actor137: e1
+ Location: 44,72
+ Owner: Greece
+ Actor138: e1
+ Location: 49,73
+ Owner: Greece
+ Actor139: e1
+ Location: 47,73
+ Owner: Greece
+ Actor140: e1
+ Location: 45,73
+ Owner: Greece
+ Actor141: e1
+ Location: 56,69
+ Owner: Greece
+ Actor142: e3
+ Location: 48,72
+ Owner: Greece
+ Actor143: e1
+ Location: 73,80
+ Owner: Greece
+ Actor144: e1
+ Location: 76,79
+ Owner: Greece
+ Actor145: e1
+ Location: 74,80
+ Owner: Greece
+ Actor146: e1
+ Location: 62,69
+ Owner: Greece
+ Actor147: e3
+ Location: 58,69
+ Owner: Greece
+ Actor148: e3
+ Location: 60,68
+ Owner: Greece
+ Actor149: e3
+ Location: 75,79
+ Owner: Greece
+ Actor150: e1
+ Location: 85,54
+ Owner: Greece
+ Actor151: e1
+ Location: 85,51
+ Owner: Greece
+ Actor152: e1
+ Location: 84,48
+ Owner: Greece
+ Actor153: e3
+ Location: 84,55
+ Owner: Greece
+ Actor154: e2
+ Owner: USSR
+ Location: 82,47
+ SubCell: 3
+ Facing: 92
+ TurretFacing: 92
+ Actor155: e1
+ Owner: USSR
+ Location: 87,49
+ SubCell: 3
+ Facing: 92
+ TurretFacing: 92
+ Actor156: e1
+ Owner: USSR
+ Location: 87,49
+ SubCell: 1
+ Facing: 122
+ TurretFacing: 122
+ AlliedConyard: fact
+ Owner: Greece
+ Location: 88,49
+ Health: 88
+ Harvester: harv
+ Location: 57,24
+ Owner: USSR
+ Facing: 64
+ Conyard: fact
+ Location: 49,24
+ Owner: USSR
+ Barracks: barr
+ Location: 53,26
+ Owner: USSR
+ Refinery: proc
+ Location: 54,21
+ Owner: USSR
+ FreeActor: false
+ PowerPlant1: powr
+ Location: 47,21
+ Owner: USSR
+ PowerPlant2: powr
+ Location: 51,21
+ Owner: USSR
+ PowerPlant3: powr
+ Location: 46,25
+ Owner: USSR
+ PowerPlant4: powr
+ Location: 49,21
+ Owner: USSR
+ Warfactory: weap
+ Location: 48,28
+ Owner: USSR
+ Flametur1: ftur
+ Location: 56,27
+ Owner: USSR
+ Flametur2: ftur
+ Location: 51,32
+ Owner: USSR
+ Flametur3: ftur
+ Location: 54,30
+ Owner: USSR
+ Airfield1: afld
+ Location: 43,23
+ Owner: USSR
+ Airfield2: afld
+ Location: 43,21
+ Owner: USSR
+ ParadropPoint1: waypoint
+ Location: 77,40
+ Owner: Neutral
+ ParadropPoint2: waypoint
+ Location: 83,65
+ Owner: Neutral
+ ParadropPoint3: waypoint
+ Location: 76,52
+ Owner: Neutral
+ SovietEntry1: waypoint
+ Location: 37,34
+ Owner: Neutral
+ SovietEntry2: waypoint
+ Location: 88,21
+ Owner: Neutral
+ SovietRally1: waypoint
+ Location: 48,38
+ Owner: Neutral
+ SovietRally2: waypoint
+ Location: 43,51
+ Owner: Neutral
+ SovietRally3: waypoint
+ Location: 49,65
+ Owner: Neutral
+ SovietRally4: waypoint
+ Location: 61,80
+ Owner: Neutral
+ SovietRally5: waypoint
+ Location: 49,74
+ Owner: Neutral
+ SovietRally6: waypoint
+ Location: 80,85
+ Owner: Neutral
+ SovietRally7: waypoint
+ Location: 59,32
+ Owner: Neutral
+ SovietRally8: waypoint
+ Location: 56,34
+ Owner: Neutral
+ SovietRally9: waypoint
+ Location: 62,48
+ Owner: Neutral
+ SovietRally10: waypoint
+ Location: 84,30
+ Owner: Neutral
+ SovietRally11: waypoint
+ Location: 92,42
+ Owner: Neutral
+ SovietRally12: waypoint
+ Location: 72,66
+ Owner: Neutral
+ SovietRally13: waypoint
+ Location: 80,77
+ Owner: Neutral
+ USSRBase: waypoint
+ Location: 50,25
+ Owner: Neutral
+ PlayerBase: waypoint
+ Location: 88,52
+ Owner: Neutral
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
diff --git a/mods/ura/maps/allies-04/rules.yaml b/mods/ura/maps/allies-04/rules.yaml
new file mode 100644
index 0000000..1c2cd15
--- /dev/null
+++ b/mods/ura/maps/allies-04/rules.yaml
@@ -0,0 +1,108 @@
+Player:
+ PlayerResources:
+ DefaultCash: 5000
+
+World:
+ LuaScript:
+ Scripts: allies04.lua, allies04-AI.lua
+ MissionData:
+ Briefing: Soviet forces are trying to retake the pass you cleared for our convoys.\n\nDon't let this happen. Hold the pass and prevent the Soviets from taking this vital area.\n\nDestroy all Soviet units and buildings in this region.
+ BriefingVideo: ally4.vqa
+ StartVideo: binoc.vqa
+ WinVideo: oildrum.vqa
+ LossVideo: bmap.vqa
+ MapOptions:
+ TechLevel: medium
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ hard: Hard
+ tough: Real tough guy
+ Default: easy
+
+powerproxy.paratroopers:
+ ParatroopersPower:
+ DropItems: E1,E1,E1,E2,E2
+
+V2RL:
+ Buildable:
+ Prerequisites: ~disabled
+
+2TNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+3TNK:
+ Buildable:
+ Prerequisites: ~vehicles.soviet
+
+ARTY:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+TRUK:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPEN:
+ Buildable:
+ Prerequisites: ~disabled
+
+SYRD:
+ Buildable:
+ Prerequisites: ~disabled
+
+APWR:
+ Buildable:
+ Prerequisites: ~disabled
+
+TSLA:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+AGUN:
+ Buildable:
+ Prerequisites: ~disabled
+
+AFLD:
+ Buildable:
+ Prerequisites: ~disabled
+
+HPAD:
+ Buildable:
+ Prerequisites: ~disabled
+
+BRIK:
+ Buildable:
+ Prerequisites: ~disabled
+
+E4:
+ Buildable:
+ Prerequisites: ~disabled
+
+E6:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPY:
+ Buildable:
+ Prerequisites: ~disabled
+
+MECH:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
diff --git a/mods/ura/maps/allies-05a/allies05a-AI.lua b/mods/ura/maps/allies-05a/allies05a-AI.lua
new file mode 100644
index 0000000..e3b4060
--- /dev/null
+++ b/mods/ura/maps/allies-05a/allies05a-AI.lua
@@ -0,0 +1,298 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+
+IdlingUnits = { }
+AttackGroupSize = 6
+
+Barracks = { Barracks2, Barracks3 }
+
+Rallypoints = { VehicleRallypoint1, VehicleRallypoint2, VehicleRallypoint3, VehicleRallypoint4, VehicleRallypoint5 }
+WaterLZs = { WaterLZ1, WaterLZ2 }
+
+Airfields = { Airfield1, Airfield2 }
+Yaks = { }
+
+SovietInfantryTypes = { "e1", "e1", "e2", "e4" }
+SovietVehicleTypes = { "3tnk", "3tnk", "3tnk", "v2rl", "v2rl", "apc" }
+SovietAircraftType = { "yak" }
+
+HoldProduction = true
+BuildVehicles = true
+TrainInfantry = true
+
+IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
+
+SetupAttackGroup = function()
+ local units = { }
+
+ for i = 0, AttackGroupSize, 1 do
+ if #IdlingUnits == 0 then
+ return units
+ end
+
+ local number = Utils.RandomInteger(1, #IdlingUnits)
+
+ if IdlingUnits[number] and not IdlingUnits[number].IsDead then
+ units[i] = IdlingUnits[number]
+ table.remove(IdlingUnits, number)
+ end
+ end
+
+ return units
+end
+
+SendAttack = function()
+ if Attacking then
+ return
+ end
+ Attacking = true
+ HoldProduction = true
+
+ local units = { }
+ if SendWaterTransports and Utils.RandomInteger(0,2) == 1 then
+ units = WaterAttack()
+
+ Utils.Do(units, function(unit)
+ Trigger.OnAddedToWorld(unit, function()
+ Trigger.OnIdle(unit, unit.Hunt)
+ end)
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(20), function()
+ Attacking = false
+ HoldProduction = false
+ end)
+ else
+ units = SetupAttackGroup()
+
+ Utils.Do(units, function(unit)
+ IdleHunt(unit)
+ end)
+
+ Trigger.AfterDelay(DateTime.Minutes(1), function() Attacking = false end)
+ Trigger.AfterDelay(DateTime.Minutes(2), function() HoldProduction = false end)
+ end
+end
+
+WaterAttack = function()
+ local types = { }
+ for i = 1, 5, 1 do
+ types[i] = Utils.Random(SovietInfantryTypes)
+ end
+
+ return Reinforcements.ReinforceWithTransport(ussr, InsertionTransport, types, { WaterTransportSpawn.Location, Utils.Random(WaterLZs).Location }, { WaterTransportSpawn.Location })[2]
+end
+
+ProtectHarvester = function(unit)
+ Trigger.OnDamaged(unit, function(self, attacker)
+ -- TODO: Send the Harvester to the service depo
+
+ if AttackOnGoing then
+ return
+ end
+ AttackOnGoing = true
+
+ local Guards = SetupAttackGroup()
+ Utils.Do(Guards, function(unit)
+ if not self.IsDead then
+ unit.AttackMove(self.Location)
+ end
+ IdleHunt(unit)
+ end)
+
+ Trigger.OnAllRemovedFromWorld(Guards, function() AttackOnGoing = false end)
+ end)
+
+ Trigger.OnKilled(unit, function() HarvesterKilled = true end)
+end
+
+InitAIUnits = function()
+ IdlingUnits = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == ussr and self.HasProperty("Hunt") and self.Location.Y > MainBaseTopLeft.Location.Y end)
+
+ local buildings = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == ussr and self.HasProperty("StartBuildingRepairs") end)
+ Utils.Do(buildings, function(actor)
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == ussr and building.Health < building.MaxHealth * 3/4 then
+ building.StartBuildingRepairs()
+ end
+ end)
+ end)
+end
+
+InitAIEconomy = function()
+ ussr.Cash = 6000
+
+ if not Harvester.IsDead then
+ Harvester.FindResources()
+ ProtectHarvester(Harvester)
+ end
+end
+
+InitProductionBuildings = function()
+ if not Warfactory2.IsDead then
+ Warfactory2.IsPrimaryBuilding = true
+ Trigger.OnKilled(Warfactory2, function() BuildVehicles = false end)
+ else
+ BuildVehicles = false
+ end
+
+ if not Barracks2.IsDead then
+ Barracks2.IsPrimaryBuilding = true
+
+ Trigger.OnKilled(Barracks2, function()
+ if not Barracks3.IsDead then
+ Barracks3.IsPrimaryBuilding = true
+ else
+ TrainInfantry = false
+ end
+ end)
+ elseif not Barracks3.IsDead then
+ Barracks3.IsPrimaryBuilding = true
+ else
+ TrainInfantry = false
+ end
+
+ if not Barracks3.IsDead then
+ Trigger.OnKilled(Barracks3, function()
+ if Barracks2.IsDead then
+ TrainInfantry = false
+ end
+ end)
+ end
+
+ if Map.LobbyOption("difficulty") ~= "easy" then
+
+ if not Airfield1.IsDead then
+ Trigger.OnKilled(Airfield1, function()
+ if Airfield2.IsDead then
+ AirAttacks = false
+ else
+ Airfield2.IsPrimaryBuilding = true
+ Trigger.OnKilled(Airfield2, function() AirAttacks = false end)
+ end
+ end)
+
+ Airfield1.IsPrimaryBuilding = true
+ AirAttacks = true
+
+ elseif not Airfield2.IsDead then
+ Trigger.OnKilled(Airfield2, function() AirAttacks = false end)
+
+ Airfield2.IsPrimaryBuilding = true
+ AirAttacks = true
+ end
+ end
+end
+
+ProduceInfantry = function()
+ if not TrainInfantry then
+ return
+ end
+
+ if HoldProduction then
+ Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry)
+ return
+ end
+
+ local delay = Utils.RandomInteger(DateTime.Seconds(3), DateTime.Seconds(9))
+ local toBuild = { Utils.Random(SovietInfantryTypes) }
+ ussr.Build(toBuild, function(unit)
+ IdlingUnits[#IdlingUnits + 1] = unit[1]
+ Trigger.AfterDelay(delay, ProduceInfantry)
+
+ if #IdlingUnits >= (AttackGroupSize * 2.5) then
+ SendAttack()
+ end
+ end)
+end
+
+ProduceVehicles = function()
+ if not BuildVehicles then
+ return
+ end
+
+ if HoldProduction then
+ Trigger.AfterDelay(DateTime.Minutes(1), ProduceVehicles)
+ return
+ end
+
+ local delay = Utils.RandomInteger(DateTime.Seconds(5), DateTime.Seconds(9))
+ if HarvesterKilled then
+ HarvesterKilled = false
+ ussr.Build({ "harv" }, function(harv)
+ harv[1].FindResources()
+ ProtectHarvester(harv[1])
+ Trigger.AfterDelay(delay, ProduceVehicles)
+ end)
+ return
+ end
+
+ Warfactory2.RallyPoint = Utils.Random(Rallypoints).Location
+ local toBuild = { Utils.Random(SovietVehicleTypes) }
+ ussr.Build(toBuild, function(unit)
+ IdlingUnits[#IdlingUnits + 1] = unit[1]
+ Trigger.AfterDelay(delay, ProduceVehicles)
+
+ if #IdlingUnits >= (AttackGroupSize * 2.5) then
+ SendAttack()
+ end
+ end)
+end
+
+ProduceAircraft = function()
+ if not AirAttacks then
+ return
+ end
+
+ ussr.Build(SovietAircraftType, function(units)
+ local yak = units[1]
+ Yaks[#Yaks + 1] = yak
+
+ Trigger.OnKilled(yak, ProduceAircraft)
+ if #Yaks == 1 then
+ Trigger.AfterDelay(DateTime.Minutes(1), ProduceAircraft)
+ end
+
+ TargetAndAttack(yak)
+ end)
+end
+
+TargetAndAttack = function(yak, target)
+ if not target or target.IsDead or (not target.IsInWorld) then
+ local enemies = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == greece and self.HasProperty("Health") and yak.CanTarget(self) end)
+ if #enemies > 0 then
+ target = Utils.Random(enemies)
+ end
+ end
+
+ if target and yak.AmmoCount() > 0 and yak.CanTarget(target) then
+ yak.Attack(target)
+ else
+ yak.ReturnToBase()
+ end
+
+ yak.CallFunc(function()
+ TargetAndAttack(yak, target)
+ end)
+end
+
+ActivateAI = function()
+
+ InitAIUnits()
+ InitAIEconomy()
+ InitProductionBuildings()
+
+ Trigger.AfterDelay(DateTime.Minutes(5), function()
+ ProduceInfantry()
+ ProduceVehicles()
+ if AirAttacks then
+ Trigger.AfterDelay(DateTime.Minutes(3), ProduceAircraft)
+ end
+ end)
+end
diff --git a/mods/ura/maps/allies-05a/allies05a.lua b/mods/ura/maps/allies-05a/allies05a.lua
new file mode 100644
index 0000000..730e61c
--- /dev/null
+++ b/mods/ura/maps/allies-05a/allies05a.lua
@@ -0,0 +1,365 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+if Map.LobbyOption("difficulty") == "easy" then
+ TanyaType = "e7"
+ ReinforceCash = 5000
+ HoldAITime = DateTime.Minutes(3)
+ SpecialCameras = true
+elseif Map.LobbyOption("difficulty") == "normal" then
+ TanyaType = "e7.noautotarget"
+ ReinforceCash = 2250
+ HoldAITime = DateTime.Minutes(2)
+ SpecialCameras = true
+else
+ TanyaType = "e7.noautotarget"
+ ReinforceCash = 1500
+ HoldAITime = DateTime.Minutes(1) + DateTime.Seconds(30)
+ SendWaterTransports = true
+end
+
+SpyType = { "spy" }
+SpyEntryPath = { SpyEntry.Location, SpyLoadout.Location }
+InsertionTransport = "lst.in"
+ExtractionTransport = "lst"
+TrukPath = { TrukWaypoint1, TrukWaypoint2, TrukWaypoint3, TrukWaypoint4, TrukWaypoint5, TrukWaypoint6 }
+ExtractionHeliType = "tran"
+InsertionHeliType = "tran.in"
+ExtractionPath = { ExtractionEntry.Location, ExtractionLZ.Location }
+HeliReinforcements = { "medi", "mech", "mech" }
+
+GreeceReinforcements =
+{
+ { types = { "2tnk", "2tnk", "2tnk", "arty", "arty" }, entry = { SpyEntry.Location, SpyLoadout.Location } },
+ { types = { "e3", "e3", "e3", "e6", "e6" }, entry = { SpyEntry.Location, GreeceLoadout1.Location } },
+ { types = { "jeep", "jeep", "e1", "e1", "2tnk" }, entry = { SpyEntry.Location, GreeceLoadout2.Location } }
+}
+
+DogPatrol = { Dog1, Dog2 }
+PatrolA = { PatrolA1, PatrolA2, PatrolA3, PatrolA4, PatrolA5 }
+PatrolB = { PatrolB1, PatrolB2, PatrolB3 }
+
+DogPatrolPath = { DogPatrolRally1.Location, DogPatrolRally2.Location, DogPatrolRally3.Location }
+PatrolAPath = { PatrolRally.Location, PatrolARally1.Location, PatrolARally2.Location, PatrolARally3.Location }
+PatrolBPath = { PatrolBRally1.Location, PatrolBRally2.Location, PatrolBRally3.Location, PatrolRally.Location }
+
+TanyaVoices = { "tuffguy", "bombit", "laugh", "gotit", "lefty", "keepem" }
+SpyVoice = "sking"
+SamSites = { Sam1, Sam2, Sam3, Sam4 }
+
+GroupPatrol = function(units, waypoints, delay)
+ local i = 1
+ local stop = false
+
+ Utils.Do(units, function(unit)
+ Trigger.OnIdle(unit, function()
+ if stop then
+ return
+ end
+
+ if unit.Location == waypoints[i] then
+ local bool = Utils.All(units, function(actor) return actor.IsIdle end)
+
+ if bool then
+ stop = true
+
+ i = i + 1
+ if i > #waypoints then
+ i = 1
+ end
+
+ Trigger.AfterDelay(delay, function() stop = false end)
+ end
+ else
+ unit.AttackMove(waypoints[i])
+ end
+ end)
+ end)
+end
+
+Tick = function()
+ if FollowTruk then
+ Camera.Position = Truk.CenterPosition
+ end
+
+ if ussr.HasNoRequiredUnits() then
+ if not greece.IsObjectiveCompleted(KillAll) and Map.LobbyOption("difficulty") == "tough" then
+ SendWaterExtraction()
+ end
+ greece.MarkCompletedObjective(KillAll)
+ end
+
+ if GreeceReinforcementsArrived and greece.HasNoRequiredUnits() then
+ ussr.MarkCompletedObjective(ussrObj)
+ end
+
+ if ussr.Resources >= ussr.ResourceCapacity * 0.75 then
+ ussr.Cash = ussr.Cash + ussr.Resources - ussr.ResourceCapacity * 0.25
+ ussr.Resources = ussr.ResourceCapacity * 0.25
+ end
+end
+
+SendReinforcements = function()
+ GreeceReinforcementsArrived = true
+ Camera.Position = ReinforceCamera.CenterPosition
+ greece.Cash = greece.Cash + ReinforceCash
+
+ Utils.Do(GreeceReinforcements, function(reinforcements)
+ Reinforcements.ReinforceWithTransport(greece, InsertionTransport, reinforcements.types, reinforcements.entry, { SpyEntry.Location })
+ end)
+
+ Media.PlaySpeechNotification(greece, "AlliedReinforcementsArrived")
+
+ ActivateAI()
+end
+
+ExtractUnits = function(extractionUnit, pos, after)
+ if extractionUnit.IsDead or not extractionUnit.HasPassengers then
+ return
+ end
+
+ extractionUnit.Move(pos)
+ extractionUnit.Destroy()
+
+ Trigger.OnRemovedFromWorld(extractionUnit, after)
+end
+
+SendWaterExtraction = function()
+ local flare = Actor.Create("flare", true, { Owner = greece, Location = SpyEntryPath[2] + CVec.New(2, 0) })
+ Trigger.AfterDelay(DateTime.Seconds(5), flare.Destroy)
+ Media.PlaySpeechNotification(greece, "SignalFlareNorth")
+ Camera.Position = flare.CenterPosition
+
+ WaterExtractionTran = Reinforcements.ReinforceWithTransport(greece, ExtractionTransport, nil, SpyEntryPath)[1]
+ ExtractObj = greece.AddPrimaryObjective("Get all your forces into the transport.")
+
+ Trigger.OnKilled(WaterExtractionTran, function() ussr.MarkCompletedObjective(ussrObj) end)
+ Trigger.OnAllRemovedFromWorld(greece.GetGroundAttackers(), function()
+ ExtractUnits(WaterExtractionTran, SpyEntryPath[1], function()
+ greece.MarkCompletedObjective(ExtractObj)
+ greece.MarkCompletedObjective(surviveObj)
+ end)
+ end)
+end
+
+WarfactoryInfiltrated = function()
+ FollowTruk = true
+ Truk.GrantCondition("hijacked")
+
+ Truk.Wait(DateTime.Seconds(1))
+ Utils.Do(TrukPath, function(waypoint)
+ Truk.Move(waypoint.Location)
+ end)
+
+ if SpecialCameras then
+ Trigger.AfterDelay(DateTime.Seconds(2), function()
+ SpyCameraA.Destroy()
+ SpyCameraB.Destroy()
+ end)
+ end
+end
+
+MissInfiltrated = function()
+ for i = 0, 5, 1 do
+ local sound = Utils.Random(TanyaVoices)
+ Trigger.AfterDelay(DateTime.Seconds(i), function()
+ Media.PlaySoundNotification(greece, sound)
+ end)
+ end
+ Prison.Attack(Prison)
+
+ Trigger.AfterDelay(DateTime.Seconds(6), FreeTanya)
+end
+
+FreeTanya = function()
+ Prison.Stop()
+ Tanya = Actor.Create(TanyaType, true, { Owner = greece, Location = Prison.Location + CVec.New(1, 1) })
+ Tanya.Demolish(Prison)
+ Tanya.Move(Tanya.Location + CVec.New(Utils.RandomInteger(-1, 2), 1))
+
+ if TanyaType == "e7.noautotarget" then
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ Media.DisplayMessage("According to the rules of engagement I need your explicit orders to fire, Commander!", "Tanya")
+ end)
+ end
+
+ Trigger.OnKilled(Tanya, function() ussr.MarkCompletedObjective(ussrObj) end)
+
+ if Map.LobbyOption("difficulty") == "tough" then
+ KillSams = greece.AddPrimaryObjective("Destroy all four SAM Sites that block\nour reinforcements' helicopter.")
+
+ greece.MarkCompletedObjective(mainObj)
+ surviveObj = greece.AddPrimaryObjective("Tanya must not die!")
+ Media.PlaySpeechNotification(greece, "TanyaRescued")
+ else
+ KillSams = greece.AddPrimaryObjective("Destroy all four SAM sites that block\nthe extraction helicopter.")
+
+ Media.PlaySpeechNotification(greece, "TargetFreed")
+ end
+
+ if not SpecialCameras then
+ PrisonCamera.Destroy()
+ end
+end
+
+SendSpy = function()
+ Camera.Position = SpyEntry.CenterPosition
+ Spy = Reinforcements.ReinforceWithTransport(greece, InsertionTransport, SpyType, SpyEntryPath, { SpyEntryPath[1] })[2][1]
+
+ Trigger.OnKilled(Spy, function() ussr.MarkCompletedObjective(ussrObj) end)
+
+ if SpecialCameras then
+ SpyCameraA = Actor.Create("camera", true, { Owner = greece, Location = SpyCamera1.Location })
+ SpyCameraB = Actor.Create("camera", true, { Owner = greece, Location = SpyCamera2.Location })
+ end
+
+ Trigger.AfterDelay(DateTime.Seconds(3), function()
+ Media.DisplayMessage("Commander! You have to disguise me in order to get through the enemy patrols.", "Spy")
+ end)
+end
+
+ActivatePatrols = function()
+ GroupPatrol(DogPatrol, DogPatrolPath, DateTime.Seconds(2))
+
+ Trigger.AfterDelay(DateTime.Seconds(3), function()
+ GroupPatrol(PatrolA, PatrolAPath, DateTime.Seconds(7))
+ GroupPatrol(PatrolB, PatrolBPath, DateTime.Seconds(6))
+ end)
+end
+
+InitTriggers = function()
+ Trigger.OnInfiltrated(Warfactory, function()
+ Trigger.ClearAll(Spy)
+ greece.MarkCompletedObjective(infWarfactory)
+ WarfactoryInfiltrated()
+ end)
+
+ Trigger.OnInfiltrated(Prison, function()
+ if not greece.IsObjectiveCompleted(infWarfactory) then
+ Media.DisplayMessage("Good work! But next time skip the heroics!", "Battlefield Control")
+ greece.MarkCompletedObjective(infWarfactory)
+ end
+ Trigger.ClearAll(Spy)
+ Trigger.AfterDelay(DateTime.Seconds(2), MissInfiltrated)
+ end)
+
+ Trigger.OnEnteredFootprint({ TrukWaypoint5.Location }, function(a, id)
+ if a == Truk then
+ Trigger.RemoveFootprintTrigger(id)
+
+ Spy = Actor.Create("spy", true, { Owner = greece, Location = TrukWaypoint5.Location })
+ Spy.DisguiseAsType("e1", ussr)
+ Spy.Move(SpyWaypoint.Location)
+ Spy.Infiltrate(Prison)
+ Media.PlaySoundNotification(greece, SpyVoice)
+
+ FollowTruk = false
+
+ if SpecialCameras then
+ PrisonCamera = Actor.Create("camera", true, { Owner = greece, Location = TrukWaypoint5.Location })
+ else
+ PrisonCamera = Actor.Create("camera.small", true, { Owner = greece, Location = Prison.Location + CVec.New(1, 1) })
+ end
+
+ Trigger.OnKilled(Spy, function() ussr.MarkCompletedObjective(ussrObj) end)
+ end
+ end)
+
+ Trigger.OnEnteredFootprint({ TrukWaypoint6.Location }, function(a, id)
+ if a == Truk then
+ Trigger.RemoveFootprintTrigger(id)
+ Truk.Stop()
+ Truk.Kill()
+ ExplosiveBarrel.Kill()
+ end
+ end)
+
+ if Map.LobbyOption("difficulty") ~= "tough" then
+ Trigger.OnKilled(Mammoth, function()
+ Trigger.AfterDelay(HoldAITime - DateTime.Seconds(45), function() HoldProduction = false end)
+ Trigger.AfterDelay(HoldAITime, function() Attacking = true end)
+ end)
+ end
+
+ Trigger.OnKilled(FlameBarrel, function()
+ if not FlameTower.IsDead then
+ FlameTower.Kill()
+ end
+ end)
+
+ Trigger.OnKilled(SamBarrel, Sam1.Kill)
+
+ Trigger.OnAllKilled(SamSites, function()
+ greece.MarkCompletedObjective(KillSams)
+
+ local flare = Actor.Create("flare", true, { Owner = greece, Location = ExtractionPath[2] + CVec.New(0, -1) })
+ Trigger.AfterDelay(DateTime.Seconds(7), flare.Destroy)
+ Media.PlaySpeechNotification(greece, "SignalFlare")
+
+ if Map.LobbyOption("difficulty") == "tough" then
+ Reinforcements.ReinforceWithTransport(greece, InsertionHeliType, HeliReinforcements, ExtractionPath, { ExtractionPath[1] })
+ if not Harvester.IsDead then
+ Harvester.FindResources()
+ end
+
+ else
+ ExtractionHeli = Reinforcements.ReinforceWithTransport(greece, ExtractionHeliType, nil, ExtractionPath)[1]
+ local exitPos = CPos.New(ExtractionPath[1].X, ExtractionPath[2].Y)
+
+ Trigger.OnKilled(ExtractionHeli, function() ussr.MarkCompletedObjective(ussrObj) end)
+ Trigger.OnRemovedFromWorld(Tanya, function()
+ ExtractUnits(ExtractionHeli, exitPos, function()
+
+ Media.PlaySpeechNotification(greece, "TanyaRescued")
+ greece.MarkCompletedObjective(mainObj)
+ SendReinforcements()
+
+ if SpecialCameras then
+ PrisonCamera.Destroy()
+ end
+ end)
+ end)
+ end
+ end)
+end
+
+InitObjectives = function()
+ Trigger.OnObjectiveAdded(greece, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+
+ ussrObj = ussr.AddPrimaryObjective("Deny the Allies.")
+ mainObj = greece.AddPrimaryObjective("Rescue Tanya.")
+ KillAll = greece.AddPrimaryObjective("Eliminate all Soviet units in this area.")
+ infWarfactory = greece.AddPrimaryObjective("Infiltrate the Soviet warfactory.")
+
+ Trigger.OnObjectiveCompleted(greece, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(greece, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ Trigger.OnPlayerLost(greece, function()
+ Media.PlaySpeechNotification(player, "Lose")
+ end)
+ Trigger.OnPlayerWon(greece, function()
+ Media.PlaySpeechNotification(player, "Win")
+ end)
+end
+
+WorldLoaded = function()
+ greece = Player.GetPlayer("Greece")
+ ussr = Player.GetPlayer("USSR")
+
+ InitObjectives()
+ InitTriggers()
+ SendSpy()
+
+ Trigger.AfterDelay(DateTime.Seconds(3), ActivatePatrols)
+end
diff --git a/mods/ura/maps/allies-05a/map.bin b/mods/ura/maps/allies-05a/map.bin
new file mode 100644
index 0000000..d6ab55d
Binary files /dev/null and b/mods/ura/maps/allies-05a/map.bin differ
diff --git a/mods/ura/maps/allies-05a/map.png b/mods/ura/maps/allies-05a/map.png
new file mode 100644
index 0000000..29bfd56
Binary files /dev/null and b/mods/ura/maps/allies-05a/map.png differ
diff --git a/mods/ura/maps/allies-05a/map.yaml b/mods/ura/maps/allies-05a/map.yaml
new file mode 100644
index 0000000..fee874c
--- /dev/null
+++ b/mods/ura/maps/allies-05a/map.yaml
@@ -0,0 +1,1568 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 05a: Tanya's Tale
+
+Author: Westwood Studios
+
+Tileset: TEMPERAT
+
+MapSize: 128,128
+
+Bounds: 12,48,60,64
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@USSR:
+ Name: USSR
+ Faction: soviet
+ Color: FE1100
+ Enemies: Greece
+ PlayerReference@Greece:
+ Name: Greece
+ Playable: True
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: E2E6F5
+ Enemies: USSR
+
+Actors:
+ Actor0: cycl
+ Location: 35,48
+ Owner: Neutral
+ Actor1: cycl
+ Location: 36,48
+ Owner: Neutral
+ Actor2: cycl
+ Location: 37,48
+ Owner: Neutral
+ Actor3: cycl
+ Location: 38,48
+ Owner: Neutral
+ Actor4: cycl
+ Location: 39,48
+ Owner: Neutral
+ Actor5: cycl
+ Location: 40,48
+ Owner: Neutral
+ Actor6: cycl
+ Location: 41,48
+ Owner: Neutral
+ Actor7: cycl
+ Location: 42,48
+ Owner: Neutral
+ Actor8: cycl
+ Location: 43,48
+ Owner: Neutral
+ Actor9: cycl
+ Location: 44,48
+ Owner: Neutral
+ Actor10: cycl
+ Location: 45,48
+ Owner: Neutral
+ Actor11: cycl
+ Location: 46,48
+ Owner: Neutral
+ Actor12: cycl
+ Location: 47,48
+ Owner: Neutral
+ Actor13: cycl
+ Location: 48,48
+ Owner: Neutral
+ Actor14: cycl
+ Location: 49,48
+ Owner: Neutral
+ Actor15: cycl
+ Location: 50,48
+ Owner: Neutral
+ Actor16: cycl
+ Location: 51,48
+ Owner: Neutral
+ Actor17: cycl
+ Location: 35,49
+ Owner: Neutral
+ Actor18: cycl
+ Location: 51,49
+ Owner: Neutral
+ Actor19: cycl
+ Location: 52,49
+ Owner: Neutral
+ Actor20: cycl
+ Location: 35,50
+ Owner: Neutral
+ Actor21: cycl
+ Location: 35,51
+ Owner: Neutral
+ Actor22: cycl
+ Location: 35,52
+ Owner: Neutral
+ Actor23: cycl
+ Location: 35,53
+ Owner: Neutral
+ Actor24: cycl
+ Location: 36,53
+ Owner: Neutral
+ Actor25: cycl
+ Location: 35,54
+ Owner: Neutral
+ Actor26: cycl
+ Location: 36,54
+ Owner: Neutral
+ Actor27: cycl
+ Location: 51,57
+ Owner: Neutral
+ Actor28: cycl
+ Location: 52,57
+ Owner: Neutral
+ Actor29: cycl
+ Location: 35,58
+ Owner: Neutral
+ Actor30: cycl
+ Location: 36,58
+ Owner: Neutral
+ Actor31: cycl
+ Location: 47,58
+ Owner: Neutral
+ Actor32: cycl
+ Location: 48,58
+ Owner: Neutral
+ Actor33: cycl
+ Location: 49,58
+ Owner: Neutral
+ Actor34: cycl
+ Location: 50,58
+ Owner: Neutral
+ Actor35: cycl
+ Location: 51,58
+ Owner: Neutral
+ Actor36: cycl
+ Location: 35,59
+ Owner: Neutral
+ Actor37: cycl
+ Location: 36,59
+ Owner: Neutral
+ Actor38: cycl
+ Location: 37,59
+ Owner: Neutral
+ Actor39: cycl
+ Location: 38,59
+ Owner: Neutral
+ Actor40: cycl
+ Location: 39,59
+ Owner: Neutral
+ Actor41: cycl
+ Location: 40,59
+ Owner: Neutral
+ Actor42: cycl
+ Location: 41,59
+ Owner: Neutral
+ Actor43: cycl
+ Location: 42,59
+ Owner: Neutral
+ Actor44: cycl
+ Location: 46,59
+ Owner: Neutral
+ Actor45: cycl
+ Location: 47,59
+ Owner: Neutral
+ Actor46: brik
+ Location: 39,73
+ Owner: Neutral
+ Actor47: brik
+ Location: 40,73
+ Owner: Neutral
+ Actor48: brik
+ Location: 41,73
+ Owner: Neutral
+ Actor49: brik
+ Location: 42,73
+ Owner: Neutral
+ Actor50: brik
+ Location: 46,73
+ Owner: Neutral
+ Actor51: brik
+ Location: 47,73
+ Owner: Neutral
+ Actor52: brik
+ Location: 48,73
+ Owner: Neutral
+ Actor53: brik
+ Location: 49,73
+ Owner: Neutral
+ Actor54: brik
+ Location: 39,74
+ Owner: Neutral
+ Actor55: brik
+ Location: 41,74
+ Owner: Neutral
+ Actor56: brik
+ Location: 42,74
+ Owner: Neutral
+ Actor57: brik
+ Location: 46,74
+ Owner: Neutral
+ Actor58: brik
+ Location: 47,74
+ Owner: Neutral
+ Actor59: brik
+ Location: 49,74
+ Owner: Neutral
+ Actor60: brik
+ Location: 39,75
+ Owner: Neutral
+ Actor61: brik
+ Location: 49,75
+ Owner: Neutral
+ Actor62: brik
+ Location: 39,76
+ Owner: Neutral
+ Actor63: brik
+ Location: 49,76
+ Owner: Neutral
+ Actor64: brik
+ Location: 13,77
+ Owner: Neutral
+ Actor65: brik
+ Location: 14,77
+ Owner: Neutral
+ Actor66: brik
+ Location: 15,77
+ Owner: Neutral
+ Actor67: brik
+ Location: 16,77
+ Owner: Neutral
+ Actor68: brik
+ Location: 17,77
+ Owner: Neutral
+ Actor69: brik
+ Location: 18,77
+ Owner: Neutral
+ Actor70: brik
+ Location: 19,77
+ Owner: Neutral
+ Actor71: brik
+ Location: 20,77
+ Owner: Neutral
+ Actor72: brik
+ Location: 21,77
+ Owner: Neutral
+ Actor73: brik
+ Location: 22,77
+ Owner: Neutral
+ Actor74: brik
+ Location: 23,77
+ Owner: Neutral
+ Actor75: brik
+ Location: 24,77
+ Owner: Neutral
+ Actor76: brik
+ Location: 25,77
+ Owner: Neutral
+ Actor77: brik
+ Location: 26,77
+ Owner: Neutral
+ Actor78: brik
+ Location: 27,77
+ Owner: Neutral
+ Actor79: brik
+ Location: 28,77
+ Owner: Neutral
+ Actor80: brik
+ Location: 29,77
+ Owner: Neutral
+ Actor81: brik
+ Location: 30,77
+ Owner: Neutral
+ Actor82: brik
+ Location: 31,77
+ Owner: Neutral
+ Actor83: brik
+ Location: 32,77
+ Owner: Neutral
+ Actor84: brik
+ Location: 33,77
+ Owner: Neutral
+ Actor85: brik
+ Location: 39,77
+ Owner: Neutral
+ Actor86: brik
+ Location: 49,77
+ Owner: Neutral
+ Actor87: brik
+ Location: 13,78
+ Owner: Neutral
+ Actor88: brik
+ Location: 14,78
+ Owner: Neutral
+ Actor89: brik
+ Location: 33,78
+ Owner: Neutral
+ Actor90: brik
+ Location: 39,78
+ Owner: Neutral
+ Actor91: brik
+ Location: 49,78
+ Owner: Neutral
+ Actor92: brik
+ Location: 13,79
+ Owner: Neutral
+ Actor93: brik
+ Location: 33,79
+ Owner: Neutral
+ Actor95: brik
+ Location: 49,79
+ Owner: Neutral
+ Actor96: brik
+ Location: 13,80
+ Owner: Neutral
+ Actor97: brik
+ Location: 33,80
+ Owner: Neutral
+ Actor98: brik
+ Location: 39,80
+ Owner: Neutral
+ Actor99: brik
+ Location: 49,80
+ Owner: Neutral
+ Actor100: brik
+ Location: 13,81
+ Owner: Neutral
+ Actor101: brik
+ Location: 33,81
+ Owner: Neutral
+ Actor102: brik
+ Location: 39,81
+ Owner: Neutral
+ Actor103: brik
+ Location: 49,81
+ Owner: Neutral
+ Actor104: brik
+ Location: 50,81
+ Owner: Neutral
+ Actor105: brik
+ Location: 51,81
+ Owner: Neutral
+ Actor106: brik
+ Location: 52,81
+ Owner: Neutral
+ Actor107: brik
+ Location: 53,81
+ Owner: Neutral
+ Actor108: brik
+ Location: 54,81
+ Owner: Neutral
+ Actor109: brik
+ Location: 55,81
+ Owner: Neutral
+ Actor110: brik
+ Location: 56,81
+ Owner: Neutral
+ Actor111: brik
+ Location: 57,81
+ Owner: Neutral
+ Actor112: brik
+ Location: 58,81
+ Owner: Neutral
+ Actor113: brik
+ Location: 59,81
+ Owner: Neutral
+ Actor114: brik
+ Location: 60,81
+ Owner: Neutral
+ Actor115: brik
+ Location: 61,81
+ Owner: Neutral
+ Actor116: brik
+ Location: 62,81
+ Owner: Neutral
+ Actor117: brik
+ Location: 66,81
+ Owner: Neutral
+ Actor118: brik
+ Location: 67,81
+ Owner: Neutral
+ Actor119: brik
+ Location: 68,81
+ Owner: Neutral
+ Actor120: brik
+ Location: 69,81
+ Owner: Neutral
+ Actor121: brik
+ Location: 70,81
+ Owner: Neutral
+ Actor122: brik
+ Location: 71,81
+ Owner: Neutral
+ Actor123: brik
+ Location: 13,82
+ Owner: Neutral
+ Actor124: brik
+ Location: 33,82
+ Owner: Neutral
+ Actor125: brik
+ Location: 34,82
+ Owner: Neutral
+ Actor126: brik
+ Location: 38,82
+ Owner: Neutral
+ Actor127: brik
+ Location: 39,82
+ Owner: Neutral
+ Actor128: brik
+ Location: 61,82
+ Owner: Neutral
+ Actor129: brik
+ Location: 62,82
+ Owner: Neutral
+ Actor130: brik
+ Location: 66,82
+ Owner: Neutral
+ Actor131: brik
+ Location: 67,82
+ Owner: Neutral
+ Actor132: brik
+ Location: 71,82
+ Owner: Neutral
+ Actor133: brik
+ Location: 13,83
+ Owner: Neutral
+ Actor134: brik
+ Location: 33,83
+ Owner: Neutral
+ Actor135: brik
+ Location: 34,83
+ Owner: Neutral
+ Actor136: brik
+ Location: 35,83
+ Owner: Neutral
+ Actor137: brik
+ Location: 36,83
+ Owner: Neutral
+ Actor138: brik
+ Location: 37,83
+ Owner: Neutral
+ Actor139: brik
+ Location: 38,83
+ Owner: Neutral
+ Actor140: brik
+ Location: 39,83
+ Owner: Neutral
+ Actor141: brik
+ Location: 71,83
+ Owner: Neutral
+ Actor142: brik
+ Location: 13,84
+ Owner: Neutral
+ Actor143: brik
+ Location: 34,84
+ Owner: Neutral
+ Actor144: brik
+ Location: 71,84
+ Owner: Neutral
+ Actor145: brik
+ Location: 13,85
+ Owner: Neutral
+ Actor146: brik
+ Location: 33,85
+ Owner: Neutral
+ Actor147: brik
+ Location: 34,85
+ Owner: Neutral
+ Actor148: brik
+ Location: 71,85
+ Owner: Neutral
+ Actor149: brik
+ Location: 13,86
+ Owner: Neutral
+ Actor150: brik
+ Location: 33,86
+ Owner: Neutral
+ Actor151: brik
+ Location: 34,86
+ Owner: Neutral
+ Actor152: brik
+ Location: 71,86
+ Owner: Neutral
+ Actor153: brik
+ Location: 13,87
+ Owner: Neutral
+ Actor154: brik
+ Location: 71,87
+ Owner: Neutral
+ Actor155: brik
+ Location: 13,88
+ Owner: Neutral
+ Actor156: brik
+ Location: 33,88
+ Owner: Neutral
+ Actor157: brik
+ Location: 34,88
+ Owner: Neutral
+ Actor158: brik
+ Location: 71,88
+ Owner: Neutral
+ Actor159: brik
+ Location: 13,89
+ Owner: Neutral
+ Actor160: brik
+ Location: 33,89
+ Owner: Neutral
+ Actor161: brik
+ Location: 34,89
+ Owner: Neutral
+ Actor162: brik
+ Location: 65,89
+ Owner: Neutral
+ Actor163: brik
+ Location: 66,89
+ Owner: Neutral
+ Actor164: brik
+ Location: 67,89
+ Owner: Neutral
+ Actor165: brik
+ Location: 68,89
+ Owner: Neutral
+ Actor166: brik
+ Location: 69,89
+ Owner: Neutral
+ Actor167: brik
+ Location: 70,89
+ Owner: Neutral
+ Actor168: brik
+ Location: 71,89
+ Owner: Neutral
+ Actor169: brik
+ Location: 13,90
+ Owner: Neutral
+ Actor170: brik
+ Location: 34,90
+ Owner: Neutral
+ Actor171: brik
+ Location: 65,90
+ Owner: Neutral
+ Actor172: brik
+ Location: 13,91
+ Owner: Neutral
+ Actor173: brik
+ Location: 34,91
+ Owner: Neutral
+ Actor174: brik
+ Location: 65,91
+ Owner: Neutral
+ Actor175: brik
+ Location: 13,92
+ Owner: Neutral
+ Actor176: brik
+ Location: 34,92
+ Owner: Neutral
+ Actor177: brik
+ Location: 64,92
+ Owner: Neutral
+ Actor178: brik
+ Location: 65,92
+ Owner: Neutral
+ Actor179: brik
+ Location: 13,93
+ Owner: Neutral
+ Actor180: brik
+ Location: 34,93
+ Owner: Neutral
+ Actor181: brik
+ Location: 64,93
+ Owner: Neutral
+ Actor182: brik
+ Location: 65,93
+ Owner: Neutral
+ Actor183: brik
+ Location: 13,94
+ Owner: Neutral
+ Actor184: brik
+ Location: 14,94
+ Owner: Neutral
+ Actor185: brik
+ Location: 33,94
+ Owner: Neutral
+ Actor186: brik
+ Location: 34,94
+ Owner: Neutral
+ Actor187: brik
+ Location: 64,94
+ Owner: Neutral
+ Actor188: brik
+ Location: 13,95
+ Owner: Neutral
+ Actor189: brik
+ Location: 14,95
+ Owner: Neutral
+ Actor190: brik
+ Location: 15,95
+ Owner: Neutral
+ Actor191: brik
+ Location: 16,95
+ Owner: Neutral
+ Actor192: brik
+ Location: 17,95
+ Owner: Neutral
+ Actor193: brik
+ Location: 18,95
+ Owner: Neutral
+ Actor194: brik
+ Location: 19,95
+ Owner: Neutral
+ Actor195: brik
+ Location: 20,95
+ Owner: Neutral
+ Actor196: brik
+ Location: 26,95
+ Owner: Neutral
+ Actor197: brik
+ Location: 27,95
+ Owner: Neutral
+ Actor198: brik
+ Location: 28,95
+ Owner: Neutral
+ Actor199: brik
+ Location: 29,95
+ Owner: Neutral
+ Actor200: brik
+ Location: 30,95
+ Owner: Neutral
+ Actor201: brik
+ Location: 31,95
+ Owner: Neutral
+ Actor202: brik
+ Location: 32,95
+ Owner: Neutral
+ Actor203: brik
+ Location: 33,95
+ Owner: Neutral
+ Actor204: brik
+ Location: 34,95
+ Owner: Neutral
+ Actor205: brik
+ Location: 64,95
+ Owner: Neutral
+ Actor206: brik
+ Location: 19,96
+ Owner: Neutral
+ Actor207: brik
+ Location: 20,96
+ Owner: Neutral
+ Actor208: brik
+ Location: 26,96
+ Owner: Neutral
+ Actor209: brik
+ Location: 27,96
+ Owner: Neutral
+ Actor210: brik
+ Location: 33,96
+ Owner: Neutral
+ Actor211: brik
+ Location: 63,96
+ Owner: Neutral
+ Actor212: brik
+ Location: 64,96
+ Owner: Neutral
+ Actor213: brik
+ Location: 33,97
+ Owner: Neutral
+ Actor214: brik
+ Location: 34,97
+ Owner: Neutral
+ Actor215: brik
+ Location: 35,97
+ Owner: Neutral
+ Actor216: brik
+ Location: 36,97
+ Owner: Neutral
+ Actor217: brik
+ Location: 37,97
+ Owner: Neutral
+ Actor218: brik
+ Location: 38,97
+ Owner: Neutral
+ Actor219: brik
+ Location: 39,97
+ Owner: Neutral
+ Actor220: brik
+ Location: 40,97
+ Owner: Neutral
+ Actor221: brik
+ Location: 41,97
+ Owner: Neutral
+ Actor222: brik
+ Location: 42,97
+ Owner: Neutral
+ Actor223: brik
+ Location: 43,97
+ Owner: Neutral
+ Actor224: brik
+ Location: 44,97
+ Owner: Neutral
+ Actor225: brik
+ Location: 45,97
+ Owner: Neutral
+ Actor226: brik
+ Location: 46,97
+ Owner: Neutral
+ Actor227: brik
+ Location: 47,97
+ Owner: Neutral
+ Actor228: brik
+ Location: 48,97
+ Owner: Neutral
+ Actor229: brik
+ Location: 49,97
+ Owner: Neutral
+ Actor230: brik
+ Location: 50,97
+ Owner: Neutral
+ Actor231: brik
+ Location: 51,97
+ Owner: Neutral
+ Actor232: brik
+ Location: 52,97
+ Owner: Neutral
+ Actor233: brik
+ Location: 53,97
+ Owner: Neutral
+ Actor234: brik
+ Location: 54,97
+ Owner: Neutral
+ Actor235: brik
+ Location: 55,97
+ Owner: Neutral
+ Actor236: brik
+ Location: 56,97
+ Owner: Neutral
+ Actor237: brik
+ Location: 57,97
+ Owner: Neutral
+ Actor238: brik
+ Location: 58,97
+ Owner: Neutral
+ Actor239: brik
+ Location: 59,97
+ Owner: Neutral
+ Actor240: brik
+ Location: 60,97
+ Owner: Neutral
+ Actor241: brik
+ Location: 61,97
+ Owner: Neutral
+ Actor242: brik
+ Location: 62,97
+ Owner: Neutral
+ Actor243: brik
+ Location: 63,97
+ Owner: Neutral
+ Actor244: brik
+ Location: 64,97
+ Owner: Neutral
+ Actor245: sbag
+ Location: 20,98
+ Owner: Neutral
+ Actor246: sbag
+ Location: 26,98
+ Owner: Neutral
+ Actor247: sbag
+ Location: 20,99
+ Owner: Neutral
+ Actor248: sbag
+ Location: 26,99
+ Owner: Neutral
+ Actor249: t16
+ Location: 64,90
+ Owner: Neutral
+ Actor250: tc03
+ Location: 46,93
+ Owner: Neutral
+ Actor251: tc04
+ Location: 52,83
+ Owner: Neutral
+ Actor252: tc05
+ Location: 41,84
+ Owner: Neutral
+ Actor253: tc03
+ Location: 31,88
+ Owner: Neutral
+ Actor254: t11
+ Location: 28,108
+ Owner: Neutral
+ Actor255: t08
+ Location: 16,108
+ Owner: Neutral
+ Actor256: t10
+ Location: 26,96
+ Owner: Neutral
+ Actor257: tc02
+ Location: 41,60
+ Owner: Neutral
+ Actor258: tc05
+ Location: 17,97
+ Owner: Neutral
+ Actor259: tc04
+ Location: 14,95
+ Owner: Neutral
+ Actor260: t15
+ Location: 15,97
+ Owner: Neutral
+ Actor261: t08
+ Location: 18,96
+ Owner: Neutral
+ Actor262: t16
+ Location: 18,60
+ Owner: Neutral
+ Actor263: t14
+ Location: 16,64
+ Owner: Neutral
+ Actor264: t10
+ Location: 12,57
+ Owner: Neutral
+ Actor265: t08
+ Location: 16,56
+ Owner: Neutral
+ Actor266: tc02
+ Location: 28,51
+ Owner: Neutral
+ Actor267: tc04
+ Location: 49,58
+ Owner: Neutral
+ Actor268: t07
+ Location: 36,64
+ Owner: Neutral
+ Actor269: t15
+ Location: 36,60
+ Owner: Neutral
+ Actor270: t08
+ Location: 31,51
+ Owner: Neutral
+ Actor271: t07
+ Location: 29,48
+ Owner: Neutral
+ Actor272: t12
+ Location: 97,49
+ Owner: Neutral
+ Actor273: tc04
+ Location: 40,80
+ Owner: Neutral
+ Actor274: tc03
+ Location: 59,95
+ Owner: Neutral
+ Actor275: tc02
+ Location: 35,84
+ Owner: Neutral
+ Actor276: tc01
+ Location: 42,81
+ Owner: Neutral
+ Actor277: t11
+ Location: 44,77
+ Owner: Neutral
+ Actor278: t01
+ Location: 43,80
+ Owner: Neutral
+ Actor279: t10
+ Location: 50,59
+ Owner: Neutral
+ Actor280: t01
+ Location: 25,51
+ Owner: Neutral
+ Actor281: t02
+ Location: 20,56
+ Owner: Neutral
+ Actor282: tc05
+ Location: 27,104
+ Owner: Neutral
+ Actor283: t08
+ Location: 26,103
+ Owner: Neutral
+ Actor286: barl
+ Location: 21,88
+ Owner: USSR
+ Actor287: barl
+ Location: 27,88
+ Owner: USSR
+ Actor288: barl
+ Location: 19,87
+ Owner: USSR
+ Actor289: brl3
+ Location: 50,49
+ Owner: USSR
+ Actor291: powr
+ Location: 48,49
+ Owner: USSR
+ Actor293: ftur
+ Location: 37,56
+ Owner: USSR
+ Actor296: powr
+ Location: 59,82
+ Owner: USSR
+ Actor297: fcom
+ Location: 24,85
+ Owner: USSR
+ Actor299: fix
+ Location: 61,90
+ Owner: USSR
+ Actor300: kenn
+ Location: 32,84
+ Owner: USSR
+ Actor301: kenn
+ Location: 48,82
+ Owner: USSR
+ Actor306: silo
+ Location: 57,90
+ Owner: USSR
+ Actor307: silo
+ Location: 53,90
+ Owner: USSR
+ Actor310: ftur
+ Location: 36,86
+ Owner: USSR
+ Actor312: ftur
+ Location: 44,76
+ Owner: USSR
+ Actor313: dome
+ Location: 53,85
+ Owner: USSR
+ Actor314: tsla
+ Location: 40,74
+ Owner: USSR
+ Actor315: tsla
+ Location: 48,74
+ Owner: USSR
+ Actor317: powr
+ Location: 46,49
+ Owner: USSR
+ Actor318: brl3
+ Location: 35,89
+ Owner: USSR
+ Actor319: barl
+ Location: 35,88
+ Owner: USSR
+ Actor320: barl
+ Location: 36,89
+ Owner: USSR
+ Actor321: brl3
+ Location: 26,88
+ Owner: USSR
+ Actor322: brl3
+ Location: 20,88
+ Owner: USSR
+ Actor323: barl
+ Location: 25,88
+ Owner: USSR
+ Actor324: brl3
+ Location: 28,88
+ Owner: USSR
+ Actor325: barl
+ Location: 58,82
+ Owner: USSR
+ Actor326: brl3
+ Location: 57,82
+ Owner: USSR
+ Actor327: barl
+ Location: 58,83
+ Owner: USSR
+ Actor328: barl
+ Location: 58,84
+ Owner: USSR
+ Actor329: fix
+ Location: 46,54
+ Owner: USSR
+ Actor330: fact
+ Location: 36,49
+ Owner: USSR
+ Actor331: brl3
+ Location: 42,54
+ Owner: USSR
+ Actor332: brl3
+ Location: 42,55
+ Owner: USSR
+ Actor333: barl
+ Location: 38,54
+ Owner: USSR
+ Actor335: barl
+ Location: 42,53
+ Owner: USSR
+ Actor336: brl3
+ Location: 39,49
+ Owner: USSR
+ Actor337: brl3
+ Location: 48,56
+ Owner: USSR
+ Actor338: barl
+ Location: 46,56
+ Owner: USSR
+ Actor339: barl
+ Location: 40,49
+ Owner: USSR
+ Actor340: kenn
+ Location: 26,94
+ Owner: USSR
+ Actor341: brl3
+ Location: 41,52
+ Owner: USSR
+ Actor342: barl
+ Location: 40,52
+ Owner: USSR
+ Actor343: brl3
+ Location: 39,53
+ Owner: USSR
+ Actor345: brl3
+ Location: 37,89
+ Owner: USSR
+ Actor346: brl3
+ Location: 58,85
+ Owner: USSR
+ Actor347: brl3
+ Location: 56,82
+ Owner: USSR
+ Actor348: brl3
+ Location: 55,82
+ Owner: USSR
+ Actor349: barl
+ Location: 54,82
+ Owner: USSR
+ Actor350: barl
+ Location: 52,82
+ Owner: USSR
+ Actor351: brl3
+ Location: 53,82
+ Owner: USSR
+ Actor352: brl3
+ Location: 51,82
+ Owner: USSR
+ Actor353: barl
+ Location: 52,83
+ Owner: USSR
+ Actor354: brl3
+ Location: 51,83
+ Owner: USSR
+ Actor355: barl
+ Location: 50,82
+ Owner: USSR
+ Actor356: silo
+ Location: 55,90
+ Owner: USSR
+ Actor357: silo
+ Location: 55,88
+ Owner: USSR
+ Actor358: brl3
+ Location: 20,108
+ Owner: USSR
+ Actor359: barl
+ Location: 18,108
+ Owner: USSR
+ Actor361: ftur
+ Location: 62,80
+ Owner: USSR
+ Actor362: ftur
+ Location: 66,80
+ Owner: USSR
+ Actor363: powr
+ Location: 36,94
+ Owner: USSR
+ Actor364: powr
+ Location: 38,94
+ Owner: USSR
+ Actor365: powr
+ Location: 42,94
+ Owner: USSR
+ Actor366: powr
+ Location: 44,94
+ Owner: USSR
+ Actor367: powr
+ Location: 24,78
+ Owner: USSR
+ Actor368: powr
+ Location: 31,78
+ Owner: USSR
+ Actor369: powr
+ Location: 22,78
+ Owner: USSR
+ Actor370: powr
+ Location: 14,82
+ Owner: USSR
+ Actor371: powr
+ Location: 16,83
+ Owner: USSR
+ Actor372: powr
+ Location: 31,81
+ Owner: USSR
+ Actor373: powr
+ Location: 32,91
+ Owner: USSR
+ Actor374: powr
+ Location: 14,87
+ Owner: USSR
+ Actor375: powr
+ Location: 69,86
+ Owner: USSR
+ Actor376: powr
+ Location: 67,86
+ Owner: USSR
+ Actor377: brl3
+ Location: 19,108
+ Owner: USSR
+ Actor429: brl3
+ Location: 41,56
+ Owner: USSR
+ Actor380: v2rl
+ Location: 48,87
+ Owner: USSR
+ Facing: 224
+ Actor381: v2rl
+ Location: 51,84
+ Owner: USSR
+ Facing: 136
+ Actor382: v2rl
+ Location: 45,82
+ Owner: USSR
+ Facing: 0
+ Actor384: 3tnk
+ Location: 54,94
+ Owner: USSR
+ Facing: 0
+ Actor385: 3tnk
+ Location: 46,78
+ Owner: USSR
+ Facing: 0
+ Actor386: 3tnk
+ Location: 43,78
+ Owner: USSR
+ Facing: 0
+ Actor387: 3tnk
+ Location: 28,79
+ Owner: USSR
+ Facing: 160
+ Actor388: 3tnk
+ Location: 42,84
+ Owner: USSR
+ Facing: 64
+ Actor390: 3tnk
+ Location: 63,94
+ Owner: USSR
+ Facing: 0
+ Actor391: 3tnk
+ Location: 52,94
+ Owner: USSR
+ Facing: 0
+ Actor392: v2rl
+ Location: 42,90
+ Owner: USSR
+ Facing: 0
+ Actor393: v2rl
+ Location: 53,95
+ Owner: USSR
+ Facing: 0
+ Actor395: 3tnk
+ Location: 62,85
+ Owner: USSR
+ Facing: 0
+ Actor396: 3tnk
+ Location: 44,89
+ Owner: USSR
+ Facing: 0
+ Actor397: 3tnk
+ Location: 66,84
+ Owner: USSR
+ Facing: 0
+ Actor401: e2
+ Location: 20,85
+ Owner: USSR
+ SubCell: 2
+ Actor402: e2
+ Location: 26,85
+ Owner: USSR
+ SubCell: 3
+ Actor403: e2
+ Location: 20,85
+ Owner: USSR
+ SubCell: 1
+ Actor404: e2
+ Location: 26,85
+ Owner: USSR
+ SubCell: 0
+ Actor405: e2
+ Location: 26,85
+ Owner: USSR
+ SubCell: 4
+ Actor406: e1
+ Location: 46,76
+ Owner: USSR
+ SubCell: 4
+ Actor407: e1
+ Location: 42,76
+ Owner: USSR
+ SubCell: 4
+ Actor408: dog
+ Location: 32,85
+ Owner: USSR
+ Facing: 160
+ SubCell: 1
+ Actor409: dog
+ Location: 46,81
+ Owner: USSR
+ SubCell: 3
+ Actor410: e1
+ Location: 46,88
+ Owner: USSR
+ SubCell: 4
+ Actor411: e1
+ Location: 42,88
+ Owner: USSR
+ SubCell: 3
+ Actor412: e2
+ Location: 45,77
+ Owner: USSR
+ SubCell: 2
+ Actor413: e2
+ Location: 43,76
+ Owner: USSR
+ SubCell: 2
+ Actor414: e2
+ Location: 45,76
+ Owner: USSR
+ SubCell: 2
+ Actor415: e2
+ Location: 43,77
+ Owner: USSR
+ SubCell: 2
+ Actor421: e1.autotarget
+ Location: 21,98
+ Owner: USSR
+ SubCell: 1
+ Actor422: e1.autotarget
+ Location: 25,98
+ Owner: USSR
+ SubCell: 2
+ Actor423: e2.autotarget
+ Location: 21,97
+ Owner: USSR
+ SubCell: 1
+ Actor424: e2.autotarget
+ Location: 25,97
+ Owner: USSR
+ SubCell: 2
+ Actor425: e2.autotarget
+ Location: 21,96
+ Owner: USSR
+ SubCell: 1
+ Actor426: e2.autotarget
+ Location: 25,96
+ Owner: USSR
+ SubCell: 2
+ Actor427: dog
+ Location: 25,93
+ Owner: USSR
+ Facing: 160
+ SubCell: 3
+ Actor430: e1
+ Location: 37,60
+ Owner: USSR
+ Facing: 192
+ SubCell: 3
+ Actor431: e1
+ Location: 36,60
+ Owner: USSR
+ Facing: 192
+ SubCell: 4
+ Actor94: brik
+ Location: 39,79
+ Owner: Neutral
+ Actor360: brl3
+ Location: 21,108
+ Owner: USSR
+ Actor284: fenc
+ Location: 26,102
+ Owner: USSR
+ Actor285: fenc
+ Location: 26,105
+ Owner: USSR
+ Actor292: fenc
+ Location: 25,105
+ Owner: USSR
+ Actor294: fenc
+ Location: 25,104
+ Owner: USSR
+ Actor295: fenc
+ Location: 25,103
+ Owner: USSR
+ Actor298: fenc
+ Location: 24,105
+ Owner: USSR
+ Actor311: fenc
+ Location: 24,106
+ Owner: USSR
+ Actor334: fenc
+ Location: 19,109
+ Owner: USSR
+ Actor344: fenc
+ Location: 20,109
+ Owner: USSR
+ Actor378: fenc
+ Location: 21,109
+ Owner: USSR
+ Actor379: fenc
+ Location: 22,109
+ Owner: USSR
+ Actor383: fenc
+ Location: 23,109
+ Owner: USSR
+ Actor389: fenc
+ Location: 24,109
+ Owner: USSR
+ Actor394: fenc
+ Location: 25,109
+ Owner: USSR
+ Actor398: fenc
+ Location: 26,109
+ Owner: USSR
+ Actor399: fenc
+ Location: 27,109
+ Owner: USSR
+ Actor400: fenc
+ Location: 24,104
+ Owner: USSR
+ Actor290: e1
+ Location: 65,83
+ Owner: USSR
+ SubCell: 5
+ Actor302: dog
+ Location: 65,83
+ Owner: USSR
+ SubCell: 4
+ Facing: 160
+ Mammoth: 4tnk
+ Location: 41,57
+ Owner: USSR
+ Facing: 192
+ Dog1: dog
+ Location: 24,54
+ Owner: USSR
+ Facing: 224
+ SubCell: 0
+ Dog2: dog
+ Location: 23,55
+ Owner: USSR
+ Facing: 192
+ SubCell: 0
+ PatrolA1: e1
+ Location: 28,56
+ Owner: USSR
+ SubCell: 2
+ PatrolA2: e1
+ Location: 28,56
+ Owner: USSR
+ SubCell: 3
+ PatrolA3: e1
+ Location: 28,56
+ Owner: USSR
+ SubCell: 4
+ PatrolA4: e1
+ Location: 28,56
+ Owner: USSR
+ SubCell: 0
+ PatrolA5: e1
+ Location: 28,56
+ Owner: USSR
+ SubCell: 1
+ PatrolB1: dog
+ Location: 50,52
+ Owner: USSR
+ SubCell: 2
+ PatrolB2: dog
+ Location: 49,52
+ Owner: USSR
+ SubCell: 2
+ PatrolB3: e1
+ Location: 50,52
+ Owner: USSR
+ SubCell: 3
+ Truk: truk.mission
+ Location: 44,52
+ Owner: USSR
+ Facing: 160
+ Prison: miss
+ Location: 25,106
+ Owner: USSR
+ Warfactory: weap.infiltratable
+ Location: 43,50
+ Owner: USSR
+ Warfactory2: weap
+ Location: 49,88
+ Owner: USSR
+ Barracks1: barr
+ Location: 40,53
+ Owner: USSR
+ Barracks2: barr
+ Location: 56,83
+ Owner: USSR
+ Barracks3: barr
+ Location: 27,81
+ Owner: USSR
+ Airfield1: afld
+ Location: 25,89
+ Owner: USSR
+ Airfield2: afld
+ Location: 17,88
+ Owner: USSR
+ Refinery: proc
+ Location: 57,91
+ Owner: USSR
+ FreeActor: False
+ Factory: fact
+ Location: 16,78
+ Owner: USSR
+ Harvester: harv
+ Location: 59,91
+ Owner: USSR
+ Facing: 224
+ Sam1: sam
+ Location: 16,107
+ Owner: USSR
+ Sam2: sam
+ Location: 28,107
+ Owner: USSR
+ Sam3: sam
+ Location: 17,94
+ Owner: USSR
+ Sam4: sam
+ Location: 28,94
+ Owner: USSR
+ SamBarrel: barl
+ Location: 17,108
+ Owner: USSR
+ ExplosiveBarrel: barl
+ Location: 22,108
+ Owner: USSR
+ FlameBarrel: brl3
+ Location: 37,88
+ Owner: USSR
+ FlameTower: ftur
+ Location: 36,88
+ Owner: USSR
+ SpyEntry: waypoint
+ Location: 12,50
+ Owner: Neutral
+ SpyLoadout: waypoint
+ Location: 15,49
+ Owner: Neutral
+ GreeceLoadout1: waypoint
+ Location: 15,52
+ Owner: Neutral
+ GreeceLoadout2: waypoint
+ Location: 13,53
+ Owner: Neutral
+ SpyCamera1: waypoint
+ Location: 43,55
+ Owner: Neutral
+ SpyCamera2: waypoint
+ Location: 29,58
+ Owner: Neutral
+ DogPatrolRally1: waypoint
+ Location: 33,56
+ Owner: Neutral
+ DogPatrolRally2: waypoint
+ Location: 27,64
+ Owner: Neutral
+ DogPatrolRally3: waypoint
+ Location: 23,54
+ Owner: Neutral
+ PatrolARally1: waypoint
+ Location: 36,52
+ Owner: Neutral
+ PatrolARally2: waypoint
+ Location: 26,58
+ Owner: Neutral
+ PatrolARally3: waypoint
+ Location: 44,60
+ Owner: Neutral
+ PatrolRally: waypoint
+ Location: 49,52
+ Owner: Neutral
+ PatrolBRally1: waypoint
+ Location: 37,52
+ Owner: Neutral
+ PatrolBRally2: waypoint
+ Location: 37,58
+ Owner: Neutral
+ PatrolBRally3: waypoint
+ Location: 50,57
+ Owner: Neutral
+ TrukWaypoint1: waypoint
+ Location: 44,74
+ Owner: Neutral
+ TrukWaypoint2: waypoint
+ Location: 44,80
+ Owner: Neutral
+ TrukWaypoint3: waypoint
+ Location: 44,87
+ Owner: Neutral
+ TrukWaypoint4: waypoint
+ Location: 24,87
+ Owner: Neutral
+ TrukWaypoint5: waypoint
+ Location: 22,103
+ Owner: Neutral
+ TrukWaypoint6: waypoint
+ Location: 21,107
+ Owner: Neutral
+ SpyWaypoint: waypoint
+ Location: 23,104
+ Owner: Neutral
+ ExtractionEntry: waypoint
+ Location: 12,88
+ Owner: Neutral
+ ExtractionLZ: waypoint
+ Location: 22,99
+ Owner: Neutral
+ ReinforceCamera: waypoint
+ Location: 18,54
+ Owner: Neutral
+ MainBaseTopLeft: waypoint
+ Location: 12,71
+ Owner: Neutral
+ VehicleRallypoint1: waypoint
+ Location: 39,92
+ Owner: Neutral
+ VehicleRallypoint2: waypoint
+ Location: 48,91
+ Owner: Neutral
+ VehicleRallypoint3: waypoint
+ Location: 63,87
+ Owner: Neutral
+ VehicleRallypoint4: waypoint
+ Location: 53,94
+ Owner: Neutral
+ VehicleRallypoint5: waypoint
+ Location: 47,84
+ Owner: Neutral
+ WaterTransportSpawn: waypoint
+ Owner: Neutral
+ Location: 71,48
+ WaterLZ1: waypoint
+ Owner: Neutral
+ Location: 52,53
+ WaterLZ2: waypoint
+ Owner: Neutral
+ Location: 63,63
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
+
+Weapons: weapons.yaml
+
+Notifications: notifications.yaml
diff --git a/mods/ura/maps/allies-05a/notifications.yaml b/mods/ura/maps/allies-05a/notifications.yaml
new file mode 100644
index 0000000..6a7d9a5
--- /dev/null
+++ b/mods/ura/maps/allies-05a/notifications.yaml
@@ -0,0 +1,9 @@
+Sounds:
+ Notifications:
+ bombit: bombit1
+ laugh: laugh1
+ gotit: gotit1
+ lefty: lefty1
+ keepem: keepem1
+ tuffguy: tuffguy1
+ sking: sking1
\ No newline at end of file
diff --git a/mods/ura/maps/allies-05a/rules.yaml b/mods/ura/maps/allies-05a/rules.yaml
new file mode 100644
index 0000000..811b67f
--- /dev/null
+++ b/mods/ura/maps/allies-05a/rules.yaml
@@ -0,0 +1,194 @@
+World:
+ LuaScript:
+ Scripts: allies05a.lua, allies05a-AI.lua
+ MissionData:
+ Briefing: Rescue Tanya.\n\nOnce disguised, your spy can move past any enemy unit, except dogs, without being detected. Direct him into the weapons factory located at a nearby Soviet Base where he will hijack a truck and free Tanya.\n\nWith Tanya's help, take out the air defenses on the island and a Chinook will arrive to rescue her.\n\nThen destroy all remaining Soviet buildings and units.
+ BriefingVideo: ally5.vqa
+ StartVideo: tanya1.vqa
+ WinVideo: tanya2.vqa
+ LossVideo: grvestne.vqa
+ MapOptions:
+ TechLevel: medium
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ hard: Hard
+ tough: Real tough guy
+ Default: easy
+
+Camera.Small:
+ Inherits: CAMERA
+ RevealsShroud:
+ Range: 4c0
+
+TSLA:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+LST:
+ -Selectable:
+ Targetable:
+ TargetTypes: Ground, Water
+ Interactable:
+
+LST.IN:
+ Inherits: LST
+ RenderSprites:
+ Image: LST
+ Cargo:
+ Types: disabled
+
+TRAN:
+ -Selectable:
+ RevealsShroud:
+ Range: 4c0
+ Targetable@GROUND:
+ TargetTypes: Ground
+ Interactable:
+
+TRAN.IN:
+ Inherits: TRAN
+ RenderSprites:
+ Image: TRAN
+ Cargo:
+ Types: disabled
+
+TRUK.mission:
+ Inherits: TRUK
+ Buildable:
+ Prerequisites: ~disabled
+ WithFacingSpriteBody:
+ -SpawnActorOnDeath:
+ RevealsShroud:
+ Range: 4c0
+ ValidStances: Ally, Enemy
+ RequiresCondition: hijacked
+ ExternalCondition@hijacked:
+ Condition: hijacked
+ RenderSprites:
+ Image: TRUK
+
+SPY:
+ Infiltrates:
+ Types: Mission Objectives
+
+WEAP:
+ -InfiltrateForSupportPower:
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure
+
+WEAP.infiltratable:
+ Inherits: WEAP
+ Buildable:
+ Prerequisites: ~disabled
+ Targetable@Spy:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, Mission Objectives
+ RenderSprites:
+ Image: WEAP
+
+MISS:
+ Tooltip:
+ Name: Prison
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, Mission Objectives
+ AttackOmni:
+ Armament:
+ Weapon: PrisonColt
+
+E1.Autotarget:
+ Inherits: E1
+ Buildable:
+ Prerequisites: ~disabled
+ RevealsShroud:
+ Range: 8c0
+ AutoTarget:
+ ScanRadius: 7
+ RenderSprites:
+ Image: E1
+
+E2.Autotarget:
+ Inherits: E2
+ Buildable:
+ Prerequisites: ~disabled
+ RevealsShroud:
+ Range: 8c0
+ AutoTarget:
+ ScanRadius: 7
+ RenderSprites:
+ Image: E2
+
+AFLD:
+ AirstrikePower@spyplane:
+ Prerequisites: ~disabled
+ ParatroopersPower@paratroopers:
+ Prerequisites: ~disabled
+
+FCOM:
+ MustBeDestroyed:
+
+4TNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+MNLY:
+ Buildable:
+ Prerequisites: ~disabled
+
+TTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+FTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+DTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+QTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPEN:
+ Buildable:
+ Prerequisites: ~disabled
+
+IRON:
+ Buildable:
+ Prerequisites: ~disabled
+
+STEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+E6:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+SHOK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MIG:
+ Buildable:
+ Prerequisites: ~disabled
diff --git a/mods/ura/maps/allies-05a/weapons.yaml b/mods/ura/maps/allies-05a/weapons.yaml
new file mode 100644
index 0000000..bd85e06
--- /dev/null
+++ b/mods/ura/maps/allies-05a/weapons.yaml
@@ -0,0 +1,6 @@
+PrisonColt:
+ ReloadDelay: 5
+ Report: gun5.aud
+ Projectile: InstantHit
+ Warhead@1Dam: SpreadDamage
+ AffectsParent: true
diff --git a/mods/ura/maps/allies-06a/allies06a-AI.lua b/mods/ura/maps/allies-06a/allies06a-AI.lua
new file mode 100644
index 0000000..4ec918f
--- /dev/null
+++ b/mods/ura/maps/allies-06a/allies06a-AI.lua
@@ -0,0 +1,239 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+
+WTransWays =
+{
+ { WaterUnloadEntry1.Location, WaterUnload1.Location },
+ { WaterUnloadEntry2.Location, WaterUnload2.Location }
+}
+WTransUnits =
+{
+ hard = { { "3tnk", "3tnk", "3tnk", "v2rl", "v2rl" }, { "v2rl", "v2rl", "e4", "e4", "3tnk" } },
+ normal = { { "e1", "e1", "3tnk", "3tnk", "v2rl" }, { "e4", "e4", "e4", "e4", "v2rl" } },
+ easy = { { "e1", "e1", "e1", "e2", "e2" }, { "e2", "e2", "3tnk" } }
+}
+WTransDelays =
+{
+ easy = 4,
+ normal = 3,
+ hard = 1
+}
+
+BuildDelays =
+{
+ easy = 90,
+ normal = 60,
+ hard = 30
+}
+
+WaterAttacks =
+{
+ easy = 1,
+ normal = 2,
+ hard = 3
+}
+
+WaterAttackTypes =
+{
+ easy = { "ss" },
+ normal = { "ss", "ss" },
+ hard = { "ss", "ss", "ss" }
+}
+
+VehicleTypes = { "v2rl", "3tnk", "3tnk", "3tnk", "3tnk", "harv" }
+
+InfTypes =
+{
+ { "e1", "e1", "e1"},
+ { "e2", "e1", "e1"},
+ { "e4", "e4", "e1"}
+}
+
+AttackRallyPoints =
+{
+ { SovietOreAttackStart.Location, SovietOreAttack1.Location },
+ { SovietBaseAttack.Location },
+ { SovietOreAttack2.Location }
+}
+
+ImportantBuildings = { WeaponsFactory, Airfield, dome2, SovietConyard }
+SovietAircraftType = { "yak" }
+Yaks = { }
+IdlingUnits = { }
+IdlingTanks = { tank1, tank2, tank3, tank4, tank5, tank6, tank7, tank8 }
+IdlingNavalUnits = { }
+
+InitialiseAttack = function()
+ Utils.Do(ImportantBuildings, function(a)
+ Trigger.OnDamaged(a, function()
+ Utils.Do(IdlingTanks, function(unit)
+ if not unit.IsDead then
+ unit.Hunt()
+ end
+ end)
+ end)
+ end)
+end
+
+Attack = 0
+ProduceInfantry = function()
+ if SovietBarracks.IsDead or SovietBarracks.Owner ~= ussr then
+ return
+ end
+
+ Attack = Attack + 1
+ local toBuild = Utils.Random(InfTypes)
+ ussr.Build(toBuild, function(units)
+ if Attack == 2 and not AttackTnk1.IsDead then
+ units[#units + 1] = AttackTnk1
+ elseif Attack == 4 and not AttackTnk2.IsDead then
+ units[#units + 1] = AttackTnk2
+ end
+
+ SendAttack(units, Utils.Random(AttackRallyPoints))
+ Trigger.AfterDelay(DateTime.Seconds(BuildDelays), ProduceInfantry)
+ end)
+end
+
+ProduceVehicles = function()
+ if WeaponsFactory.IsDead or WeaponsFactory.Owner ~= ussr then
+ return
+ end
+ ussr.Build(VehicleTypes, function(units)
+ Utils.Do(units, function(unit)
+ if unit.Type ~= "harv" then
+ IdlingTanks[#IdlingTanks + 1] = unit
+ end
+ end)
+ end)
+end
+
+ProduceNaval = function()
+ if not shouldProduce and #Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == player and self.Type == "syrd" end) < 1 then
+ Trigger.AfterDelay(DateTime.Minutes(1), ProduceNaval)
+ return
+ end
+
+ shouldProduce = true
+
+ if SubPen.IsDead or SubPen.Owner ~= ussr then
+ return
+ end
+
+ ussr.Build(WaterAttackTypes, function(units)
+ Utils.Do(units, function(unit)
+ IdlingNavalUnits[#IdlingNavalUnits + 1] = unit
+ end)
+
+ Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(40), ProduceNaval)
+ if #IdlingNavalUnits >= WaterAttacks then
+ Trigger.AfterDelay(DateTime.Seconds(20), function()
+ SendAttack(SetupNavalAttackGroup(), { Harbor.Location })
+ end)
+ end
+ end)
+end
+
+ProduceAircraft = function()
+ if Airfield.IsDead or Airfield.Owner ~= ussr then
+ return
+ end
+
+ ussr.Build(SovietAircraftType, function(units)
+ local yak = units[1]
+ Yaks[#Yaks + 1] = yak
+
+ Trigger.OnKilled(yak, ProduceAircraft)
+ if #Yaks == 1 then
+ Trigger.AfterDelay(DateTime.Seconds(BuildDelays), ProduceAircraft)
+ end
+
+ TargetAndAttack(yak)
+ end)
+end
+
+TargetAndAttack = function(yak, target)
+ if not target or target.IsDead or (not target.IsInWorld) then
+ local enemies = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == player and self.HasProperty("Health") and yak.CanTarget(self) end)
+ if #enemies > 0 then
+ target = Utils.Random(enemies)
+ end
+ end
+
+ if target and yak.AmmoCount() > 0 and yak.CanTarget(target) then
+ yak.Attack(target)
+ else
+ yak.ReturnToBase()
+ end
+
+ yak.CallFunc(function()
+ TargetAndAttack(yak, target)
+ end)
+end
+
+IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
+
+SendAttack = function(units, path)
+ Utils.Do(units, function(unit)
+ unit.Patrol(path, false)
+ IdleHunt(unit)
+ end)
+end
+
+SetupNavalAttackGroup = function()
+ local units = { }
+ for i = 0, 3 do
+ if #IdlingNavalUnits == 0 then
+ return units
+ end
+
+ local number = Utils.RandomInteger(1, #IdlingNavalUnits)
+ if IdlingNavalUnits[number] and not IdlingNavalUnits[number].IsDead then
+ units[i] = IdlingNavalUnits[number]
+ table.remove(IdlingNavalUnits, number)
+ end
+ end
+
+ return units
+end
+
+WTransWaves = function()
+ local way = Utils.Random(WTransWays)
+ local units = Utils.Random(WTransUnits)
+ local attackUnits = Reinforcements.ReinforceWithTransport(ussr, "lst", units , way, { way[2], way[1] })[2]
+ Utils.Do(attackUnits, function(a)
+ Trigger.OnAddedToWorld(a, function()
+ a.AttackMove(UnitBStopLocation.Location)
+ IdleHunt(a)
+ end)
+ end)
+
+ Trigger.AfterDelay(DateTime.Minutes(WTransDelays), WTransWaves)
+end
+
+ActivateAI = function()
+ local difficulty = Map.LobbyOption("difficulty")
+ WaterAttackTypes = WaterAttackTypes[difficulty]
+ WaterAttacks = WaterAttacks[difficulty]
+ WTransUnits = WTransUnits[difficulty]
+ WTransDelays = WTransDelays[difficulty]
+ BuildDelays = BuildDelays[difficulty]
+
+ InitialiseAttack()
+ Trigger.AfterDelay(DateTime.Seconds(10), ProduceInfantry)
+ Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(10), function()
+ ProduceAircraft()
+ ProduceVehicles()
+ end)
+
+ WeaponsFactory.RallyPoint = WeaponMeetPoint.Location
+ SubPen.RallyPoint = SubMeetPoint.Location
+ Trigger.AfterDelay(DateTime.Minutes(5) + DateTime.Seconds(10), ProduceNaval)
+ Trigger.AfterDelay(DateTime.Minutes(WTransDelays), WTransWaves)
+end
diff --git a/mods/ura/maps/allies-06a/allies06a.lua b/mods/ura/maps/allies-06a/allies06a.lua
new file mode 100644
index 0000000..f3e6122
--- /dev/null
+++ b/mods/ura/maps/allies-06a/allies06a.lua
@@ -0,0 +1,239 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+AlliedReinforcementsA = { "e1", "e1", "e1", "e1", "e1" }
+AlliedReinforcementsB = { "e3", "e3", "e3", "e3", "e3" }
+BadGuys = { BadGuy1, BadGuy2, BadGuy3 }
+
+SovietDogPatrols =
+{
+ { Patrol_1_e1, Patrol_1_dog },
+ { Patrol_2_e1, Patrol_2_dog },
+ { Patrol_3_e1, Patrol_3_dog },
+ { Patrol_4_e1, Patrol_4_dog }
+}
+
+SovietDogPatrolPaths =
+{
+ { Patrol6.Location, Patrol7.Location, Patrol8.Location, Patrol1.Location, Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location },
+ { Patrol8.Location, Patrol1.Location, Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location, Patrol6.Location, Patrol7.Location },
+ { Patrol1.Location, Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location, Patrol6.Location, Patrol7.Location, Patrol8.Location },
+ { Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location, Patrol6.Location, Patrol7.Location, Patrol8.Location, Patrol1.Location }
+}
+
+Mammoths = { Mammoth1, Mammoth2, Mammoth3 }
+
+SovietMammothPaths =
+{
+ { TnkPatrol1.Location, TnkPatrol2.Location,TnkPatrol3.Location, TnkPatrol4.Location, TnkPatrol5.Location, TnkPatrol6.Location, TnkPatrol7.Location, TnkPatrol8.Location },
+ { TnkPatrol5.Location, TnkPatrol6.Location, TnkPatrol7.Location, TnkPatrol8.Location, TnkPatrol1.Location, TnkPatrol2.Location, TnkPatrol3.Location, TnkPatrol4.Location },
+ { TnkPatrol8.Location, TnkPatrol1.Location, TnkPatrol2.Location, TnkPatrol3.Location, TnkPatrol4.Location, TnkPatrol5.Location, TnkPatrol6.Location, TnkPatrol7.Location }
+}
+
+SovietSubPath = { SubPatrol3_1.Location, SubPatrol3_2.Location, SubPatrol3_3.Location }
+
+ParadropWaypoints =
+{
+ easy = { UnitBStopLocation },
+ normal = { UnitBStopLocation, UnitAStopLocation },
+ hard = { UnitBStopLocation, MCVStopLocation, UnitAStopLocation }
+}
+
+SovietTechLabs = { TechLab1, TechLab2, TechLab3 }
+TechLabCams = { TechCam1, TechCam2, TechCam3 }
+
+GroupPatrol = function(units, waypoints, delay)
+ local i = 1
+ local stop = false
+
+ Utils.Do(units, function(unit)
+ Trigger.OnIdle(unit, function()
+ if stop then
+ return
+ end
+ if unit.Location == waypoints[i] then
+ local bool = Utils.All(units, function(actor) return actor.IsIdle end)
+ if bool then
+ stop = true
+ i = i + 1
+ if i > #waypoints then
+ i = 1
+ end
+ Trigger.AfterDelay(delay, function() stop = false end)
+ end
+ else
+ unit.AttackMove(waypoints[i])
+ end
+ end)
+ end)
+end
+
+InitialSovietPatrols = function()
+ -- Dog Patrols
+ for i = 1, 4 do
+ GroupPatrol(SovietDogPatrols[i], SovietDogPatrolPaths[i], DateTime.Seconds(5))
+ end
+
+ -- Mammoth Patrols
+ for i = 1, 3 do
+ Trigger.AfterDelay(DateTime.Seconds(6 * (i - 1)), function()
+ Trigger.OnIdle(Mammoths[i], function()
+ Mammoths[i].Patrol(SovietMammothPaths[i])
+ end)
+ end)
+ end
+
+ -- Sub Patrols
+ Patrol1Sub.Patrol({ SubPatrol1_1.Location, SubPatrol1_2.Location })
+ Patrol2Sub.Patrol({ SubPatrol2_1.Location, SubPatrol2_2.Location })
+ Patrol3Sub1.Patrol(SovietSubPath)
+ Patrol3Sub2.Patrol(SovietSubPath)
+end
+
+InitialAlliedReinforcements = function()
+ local camera = Actor.Create("Camera", true, { Owner = player, Location = DefaultCameraPosition.Location })
+ Trigger.AfterDelay(DateTime.Seconds(30), camera.Destroy)
+
+ Reinforcements.Reinforce(player, AlliedReinforcementsA, { AlliedEntry1.Location, UnitBStopLocation.Location }, 2)
+ Trigger.AfterDelay(DateTime.Seconds(2), function()
+ Reinforcements.Reinforce(player, AlliedReinforcementsB, { AlliedEntry2.Location, UnitAStopLocation.Location }, 2)
+ end)
+ Trigger.AfterDelay(DateTime.Seconds(5), function()
+ Reinforcements.Reinforce(player, { "mcv" }, { AlliedEntry3.Location, MCVStopLocation.Location })
+ end)
+end
+
+CaptureRadarDome = function()
+ Trigger.OnKilled(Radar, function()
+ player.MarkFailedObjective(CaptureRadarDomeObj)
+ end)
+
+ Trigger.OnCapture(Radar, function()
+ player.MarkCompletedObjective(CaptureRadarDomeObj)
+ Beacon.New(player, TechLab1.CenterPosition)
+ Beacon.New(player, TechLab2.CenterPosition)
+ Beacon.New(player, TechLab3.CenterPosition)
+ Media.DisplayMessage("Coordinates of the Soviet tech centers discovered.")
+ if Map.LobbyOption("difficulty") ~= "hard" then
+ Utils.Do(TechLabCams, function(a)
+ Actor.Create("TECH.CAM", true, { Owner = player, Location = a.Location })
+ end)
+
+ if Map.LobbyOption("difficulty") == "easy" then
+ Actor.Create("Camera", true, { Owner = player, Location = Weapcam.Location })
+ end
+ end
+ end)
+end
+
+InfiltrateTechCenter = function()
+ Utils.Do(SovietTechLabs, function(a)
+ Trigger.OnInfiltrated(a, function()
+ if infiltrated then
+ return
+ end
+ infiltrated = true
+ DestroySovietsObj = player.AddPrimaryObjective("Destroy all Soviet buildings and units in the area.")
+ player.MarkCompletedObjective(InfiltrateTechCenterObj)
+
+ local Proxy = Actor.Create("powerproxy.paratroopers", false, { Owner = ussr })
+ Utils.Do(ParadropWaypoints[Map.LobbyOption("difficulty")], function(waypoint)
+ Proxy.SendParatroopers(waypoint.CenterPosition, false, Facing.South)
+ end)
+ Proxy.Destroy()
+ end)
+
+ Trigger.OnCapture(a, function()
+ if not infiltrated then
+ Media.DisplayMessage("Do not capture the tech centers! Infiltrate one with a spy.")
+ end
+ end)
+ end)
+
+ Trigger.OnAllKilledOrCaptured(SovietTechLabs, function()
+ if not player.IsObjectiveCompleted(InfiltrateTechCenterObj) then
+ player.MarkFailedObjective(InfiltrateTechCenterObj)
+ end
+ end)
+end
+
+InfiltrateRef = function()
+ Trigger.OnInfiltrated(Refinery, function()
+ player.MarkCompletedObjective(InfiltrateRefObj)
+ end)
+ Trigger.OnCapture(Refinery, function()
+ player.MarkCompletedObjective(InfiltrateRefObj)
+ end)
+ Trigger.OnKilled(Refinery, function()
+ if not player.IsObjectiveCompleted(InfiltrateRefObj) then
+ player.MarkFailedObjective(InfiltrateRefObj)
+ end
+ end)
+end
+
+Tick = function()
+ if DateTime.GameTime > DateTime.Seconds(10) and player.HasNoRequiredUnits() then
+ player.MarkFailedObjective(InfiltrateTechCenterObj)
+ end
+
+ if DestroySovietsObj and ussr.HasNoRequiredUnits() then
+ player.MarkCompletedObjective(DestroySovietsObj)
+ end
+end
+
+WorldLoaded = function()
+ player = Player.GetPlayer("Greece")
+ ussr = Player.GetPlayer("USSR")
+
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "MissionFailed")
+ end)
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "MissionAccomplished")
+ end)
+
+ InfiltrateTechCenterObj = player.AddPrimaryObjective("Infiltrate one of the Soviet tech centers with a spy.")
+ CaptureRadarDomeObj = player.AddSecondaryObjective("Capture the Radar Dome at the shore.")
+ InfiltrateRefObj = player.AddSecondaryObjective("Infiltrate the Refinery for money.")
+
+ Camera.Position = DefaultCameraPosition.CenterPosition
+
+ Utils.Do(BadGuys, function(a)
+ a.AttackMove(MCVStopLocation.Location)
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ InitialAlliedReinforcements()
+ InitialSovietPatrols()
+ end)
+
+ Trigger.OnEnteredProximityTrigger(SovietMiniBaseCam.CenterPosition, WDist.New(1024 * 6), function(a, id)
+ if a.Owner == player then
+ Trigger.RemoveProximityTrigger(id)
+ local cam = Actor.Create("Camera", true, { Owner = player, Location = SovietMiniBaseCam.Location })
+ Trigger.AfterDelay(DateTime.Seconds(15), cam.Destroy)
+ end
+ end)
+
+ CaptureRadarDome()
+ InfiltrateTechCenter()
+ InfiltrateRef()
+ Trigger.AfterDelay(0, ActivateAI)
+end
diff --git a/mods/ura/maps/allies-06a/map.bin b/mods/ura/maps/allies-06a/map.bin
new file mode 100644
index 0000000..451ec95
Binary files /dev/null and b/mods/ura/maps/allies-06a/map.bin differ
diff --git a/mods/ura/maps/allies-06a/map.png b/mods/ura/maps/allies-06a/map.png
new file mode 100644
index 0000000..29bfd56
Binary files /dev/null and b/mods/ura/maps/allies-06a/map.png differ
diff --git a/mods/ura/maps/allies-06a/map.yaml b/mods/ura/maps/allies-06a/map.yaml
new file mode 100644
index 0000000..fa3306f
--- /dev/null
+++ b/mods/ura/maps/allies-06a/map.yaml
@@ -0,0 +1,640 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 06a: Cripple Iron Curtain research
+
+Author: Westwood Studios
+
+Tileset: SNOW
+
+MapSize: 128,128
+
+Bounds: 3,61,94,54
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: england
+ PlayerReference@USSR:
+ Name: USSR
+ Faction: soviet
+ Color: FF1400
+ Enemies: USSR, Greece
+ PlayerReference@Greece:
+ Name: Greece
+ AllowBots: False
+ Playable: True
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: E2E6F6
+ LockSpawn: True
+ LockTeam: True
+ Enemies: USSR
+
+Actors:
+ Actor176: camera
+ Owner: USSR
+ Location: 19,66
+ Actor0: sbag
+ Location: 22,81
+ Owner: USSR
+ Actor1: sbag
+ Location: 23,81
+ Owner: USSR
+ Actor2: sbag
+ Location: 24,81
+ Owner: USSR
+ Actor3: sbag
+ Location: 22,82
+ Owner: USSR
+ Actor4: sbag
+ Location: 24,82
+ Owner: USSR
+ Actor5: sbag
+ Location: 22,83
+ Owner: USSR
+ Actor6: sbag
+ Location: 23,83
+ Owner: USSR
+ Actor7: sbag
+ Location: 24,83
+ Owner: USSR
+ Actor8: sbag
+ Location: 12,84
+ Owner: USSR
+ Actor9: sbag
+ Location: 13,84
+ Owner: USSR
+ Actor10: sbag
+ Location: 14,84
+ Owner: USSR
+ Actor11: sbag
+ Location: 12,85
+ Owner: USSR
+ Actor12: sbag
+ Location: 14,85
+ Owner: USSR
+ Actor13: sbag
+ Location: 12,86
+ Owner: USSR
+ Actor14: sbag
+ Location: 13,86
+ Owner: USSR
+ Actor15: sbag
+ Location: 14,86
+ Owner: USSR
+ Actor16: t08
+ Location: 88,68
+ Owner: Neutral
+ Actor17: t08
+ Location: 26,72
+ Owner: Neutral
+ Actor18: tc02
+ Location: 52,92
+ Owner: Neutral
+ Actor19: tc01
+ Location: 57,96
+ Owner: Neutral
+ Actor20: t15
+ Location: 3,76
+ Owner: Neutral
+ Actor21: tc05
+ Location: 11,74
+ Owner: Neutral
+ Actor22: t15
+ Location: 74,81
+ Owner: Neutral
+ Actor23: t08
+ Location: 77,85
+ Owner: Neutral
+ Actor24: tc05
+ Location: 94,106
+ Owner: Neutral
+ Actor25: tc03
+ Location: 84,94
+ Owner: Neutral
+ Actor26: t16
+ Location: 83,94
+ Owner: Neutral
+ Actor27: t08
+ Location: 85,96
+ Owner: Neutral
+ Actor28: tc01
+ Location: 62,105
+ Owner: Neutral
+ Actor29: tc01
+ Location: 89,98
+ Owner: Neutral
+ Actor30: tc02
+ Location: 85,100
+ Owner: Neutral
+ Actor31: tc03
+ Location: 87,99
+ Owner: Neutral
+ Actor32: t17
+ Location: 89,99
+ Owner: Neutral
+ Actor33: t16
+ Location: 85,99
+ Owner: Neutral
+ Actor34: t13
+ Location: 86,98
+ Owner: Neutral
+ Actor35: tc04
+ Location: 15,74
+ Owner: Neutral
+ Actor36: tc01
+ Location: 24,73
+ Owner: Neutral
+ Actor37: t17
+ Location: 27,71
+ Owner: Neutral
+ Actor38: t13
+ Location: 36,69
+ Owner: Neutral
+ Actor39: t12
+ Location: 34,70
+ Owner: Neutral
+ Actor40: t11
+ Location: 23,84
+ Owner: Neutral
+ Actor41: t08
+ Location: 9,78
+ Owner: Neutral
+ Actor42: t05
+ Location: 12,89
+ Owner: Neutral
+ Actor43: tc03
+ Location: 12,82
+ Owner: Neutral
+ Actor44: t17
+ Location: 5,82
+ Owner: Neutral
+ Actor45: tc02
+ Location: 9,95
+ Owner: Neutral
+ Actor46: tc03
+ Location: 7,94
+ Owner: Neutral
+ Actor47: tc05
+ Location: 9,109
+ Owner: Neutral
+ Actor48: tc04
+ Location: 3,100
+ Owner: Neutral
+ Actor49: tc02
+ Location: 3,110
+ Owner: Neutral
+ Actor50: tc01
+ Location: 6,105
+ Owner: Neutral
+ Actor51: t17
+ Location: 12,106
+ Owner: Neutral
+ Actor52: t16
+ Location: 8,107
+ Owner: Neutral
+ Actor53: t14
+ Location: 11,100
+ Owner: Neutral
+ Actor54: t01
+ Location: 29,102
+ Owner: Neutral
+ Actor55: t03
+ Location: 36,104
+ Owner: Neutral
+ Actor56: t06
+ Location: 25,104
+ Owner: Neutral
+ Actor57: t08
+ Location: 38,100
+ Owner: Neutral
+ Actor58: tc03
+ Location: 95,72
+ Owner: Neutral
+ Actor59: mine
+ Location: 5,68
+ Owner: Neutral
+ Actor60: mine
+ Location: 9,104
+ Owner: Neutral
+ Actor61: mine
+ Location: 5,113
+ Owner: Neutral
+ Actor70: kenn
+ Location: 91,94
+ Owner: USSR
+ Actor71: kenn
+ Location: 71,83
+ Owner: USSR
+ Actor74: kenn
+ Location: 77,101
+ Owner: USSR
+ Actor75: ftur
+ Location: 16,82
+ Owner: USSR
+ Actor76: ftur
+ Location: 19,82
+ Owner: USSR
+ Actor77: tsla
+ Location: 60,97
+ Owner: USSR
+ Actor78: apwr
+ Location: 79,108
+ Owner: USSR
+ Actor79: apwr
+ Location: 82,109
+ Owner: USSR
+ Actor81: apwr
+ Location: 82,106
+ Owner: USSR
+ Actor82: apwr
+ Location: 81,112
+ Owner: USSR
+ Actor83: silo
+ Location: 94,104
+ Owner: USSR
+ Actor84: silo
+ Location: 94,105
+ Owner: USSR
+ Actor85: silo
+ Location: 95,104
+ Owner: USSR
+ Actor86: silo
+ Location: 95,105
+ Owner: USSR
+ Actor87: silo
+ Location: 85,102
+ Owner: USSR
+ Actor88: silo
+ Location: 85,93
+ Owner: USSR
+ Actor89: apwr
+ Location: 87,101
+ Owner: USSR
+ Actor90: ftur
+ Location: 80,87
+ Owner: USSR
+ Actor105: jeep
+ Location: 19,64
+ Owner: Greece
+ Facing: 127
+ Actor109: e2
+ Location: 13,85
+ Owner: USSR
+ Facing: 223
+ SubCell: 2
+ Actor110: e2
+ Location: 23,82
+ Owner: USSR
+ Facing: 31
+ SubCell: 3
+ Actor111: e1
+ Location: 20,64
+ Owner: Greece
+ Facing: 159
+ SubCell: 2
+ Actor112: e1
+ Location: 19,65
+ Owner: Greece
+ Facing: 127
+ SubCell: 0
+ Actor113: e1
+ Location: 18,64
+ Owner: Greece
+ Facing: 127
+ SubCell: 1
+ Actor114: e1
+ Location: 23,82
+ Owner: USSR
+ SubCell: 2
+ Actor115: e1
+ Location: 13,85
+ Owner: USSR
+ Facing: 63
+ SubCell: 3
+ Actor117: dog
+ Location: 79,100
+ Owner: USSR
+ Facing: 191
+ SubCell: 0
+ Actor126: ss
+ Location: 59,102
+ Owner: USSR
+ Facing: 95
+ Actor130: ss
+ Location: 74,113
+ Owner: USSR
+ Facing: 63
+ Actor177: mine
+ Owner: Neutral
+ Location: 56,94
+ Actor178: mine
+ Owner: Neutral
+ Location: 64,108
+ Actor180: mine
+ Owner: Neutral
+ Location: 93,84
+ SovietConyard: fact
+ Location: 69,96
+ Owner: USSR
+ dome2: dome
+ Location: 90,109
+ Owner: USSR
+ harv: harv
+ Location: 82,94
+ Owner: USSR
+ Facing: 31
+ tank1: 3tnk
+ Location: 69,90
+ Owner: USSR
+ Facing: 95
+ tank2: 3tnk
+ Location: 93,102
+ Owner: USSR
+ Facing: 31
+ tank3: 3tnk
+ Location: 85,90
+ Owner: USSR
+ tank4: 3tnk
+ Location: 93,106
+ Owner: USSR
+ Facing: 63
+ tank5: 3tnk
+ Location: 73,100
+ Owner: USSR
+ Facing: 63
+ tank6: v2rl
+ Location: 80,90
+ Owner: USSR
+ Facing: 223
+ tank7: v2rl
+ Location: 70,91
+ Owner: USSR
+ Facing: 95
+ tank8: v2rl
+ Location: 74,101
+ Owner: USSR
+ Facing: 63
+ SubPatrol3_1: waypoint
+ Location: 48,114
+ Owner: Neutral
+ SubPatrol3_2: waypoint
+ Location: 48,98
+ Owner: Neutral
+ SubPatrol3_3: waypoint
+ Location: 79,71
+ Owner: Neutral
+ Patrol3Sub1: ss
+ Location: 46,105
+ Owner: USSR
+ Facing: 63
+ Patrol3Sub2: ss
+ Location: 77,71
+ Owner: USSR
+ Facing: 63
+ Patrol1Sub: ss
+ Location: 46,71
+ Owner: USSR
+ Facing: 127
+ Patrol2Sub: ss
+ Location: 52,85
+ Owner: USSR
+ Facing: 63
+ SubPatrol1_1: waypoint
+ Location: 42,71
+ Owner: Neutral
+ SubPatrol1_2: waypoint
+ Location: 58,84
+ Owner: Neutral
+ SubPatrol2_1: waypoint
+ Location: 56,87
+ Owner: Neutral
+ SubPatrol2_2: waypoint
+ Location: 40,74
+ Owner: Neutral
+ SubMeetPoint: waypoint
+ Location: 48,105
+ Owner: Neutral
+ SovietBaseAttack: waypoint
+ Location: 18,68
+ Owner: Neutral
+ Patrol1: waypoint
+ Location: 92,108
+ Owner: Neutral
+ Patrol2: waypoint
+ Location: 76,103
+ Owner: Neutral
+ Patrol3: waypoint
+ Location: 65,110
+ Owner: Neutral
+ Patrol4: waypoint
+ Location: 68,101
+ Owner: Neutral
+ Patrol5: waypoint
+ Location: 68,93
+ Owner: Neutral
+ Patrol6: waypoint
+ Location: 72,84
+ Owner: Neutral
+ Patrol7: waypoint
+ Location: 79,88
+ Owner: Neutral
+ Patrol8: waypoint
+ Location: 90,94
+ Owner: Neutral
+ TnkPatrol1: waypoint
+ Location: 52,100
+ Owner: Neutral
+ TnkPatrol2: waypoint
+ Location: 65,94
+ Owner: Neutral
+ TnkPatrol3: waypoint
+ Location: 65,78
+ Owner: Neutral
+ TnkPatrol4: waypoint
+ Location: 84,82
+ Owner: Neutral
+ TnkPatrol5: waypoint
+ Location: 79,92
+ Owner: Neutral
+ TnkPatrol6: waypoint
+ Location: 77,106
+ Owner: Neutral
+ TnkPatrol7: waypoint
+ Location: 61,107
+ Owner: Neutral
+ TnkPatrol8: waypoint
+ Location: 70,100
+ Owner: Neutral
+ Mammoth1: 4tnk
+ Location: 63,94
+ Owner: USSR
+ Facing: 63
+ Mammoth2: 4tnk
+ Location: 82,87
+ Owner: USSR
+ Facing: 223
+ Mammoth3: 4tnk
+ Location: 76,105
+ Owner: USSR
+ Facing: 31
+ AttackTnk1: 3tnk
+ Location: 18,85
+ Owner: USSR
+ Facing: 31
+ AttackTnk2: 3tnk
+ Location: 17,82
+ Owner: USSR
+ Facing: 223
+ BadGuy1: e1
+ Location: 20,69
+ Owner: USSR
+ SubCell: 3
+ BadGuy2: e1
+ Location: 19,70
+ Owner: USSR
+ SubCell: 0
+ BadGuy3: e1
+ Location: 24,67
+ Owner: USSR
+ Facing: 63
+ SubCell: 3
+ Patrol_1_e1: e1
+ Location: 71,84
+ Owner: USSR
+ SubCell: 4
+ Patrol_1_dog: dog
+ Location: 72,84
+ Owner: USSR
+ Facing: 63
+ SubCell: 1
+ Patrol_2_e1: e1
+ Location: 89,94
+ Owner: USSR
+ SubCell: 0
+ Patrol_2_dog: dog
+ Location: 89,93
+ Owner: USSR
+ Facing: 95
+ SubCell: 4
+ Patrol_3_e1: e1
+ Location: 92,108
+ Owner: USSR
+ SubCell: 1
+ Patrol_3_dog: dog
+ Location: 92,108
+ Owner: USSR
+ SubCell: 3
+ Patrol_4_e1: e1
+ Location: 76,102
+ Owner: USSR
+ SubCell: 4
+ Patrol_4_dog: dog
+ Location: 77,102
+ Owner: USSR
+ Facing: 95
+ SubCell: 4
+ WaterUnloadEntry1: waypoint
+ Location: 22,114
+ Owner: Neutral
+ WaterUnloadEntry2: waypoint
+ Location: 43,114
+ Owner: Neutral
+ WaterUnload1: waypoint
+ Location: 15,108
+ Owner: Neutral
+ WaterUnload2: waypoint
+ Location: 30,93
+ Owner: Neutral
+ SovietOreAttackStart: waypoint
+ Location: 5,73
+ Owner: Neutral
+ SovietOreAttack1: waypoint
+ Location: 3,65
+ Owner: Neutral
+ SovietOreAttack2: waypoint
+ Location: 36,67
+ Owner: Neutral
+ Harbor: waypoint
+ Location: 19,92
+ Owner: Neutral
+ UnitAStopLocation: waypoint
+ Location: 16,64
+ Owner: Neutral
+ MCVStopLocation: waypoint
+ Location: 23,64
+ Owner: Neutral
+ UnitBStopLocation: waypoint
+ Location: 19,63
+ Owner: Neutral
+ DefaultCameraPosition: waypoint
+ Location: 19,64
+ Owner: Neutral
+ SovietMiniBaseCam: waypoint
+ Location: 18,83
+ Owner: Neutral
+ Weapcam: waypoint
+ Location: 76,94
+ Owner: Neutral
+ TechCam1: waypoint
+ Location: 69,83
+ Owner: Neutral
+ TechCam2: waypoint
+ Location: 94,94
+ Owner: Neutral
+ TechCam3: waypoint
+ Owner: Neutral
+ Location: 94,109
+ AlliedEntry1: waypoint
+ Location: 19,61
+ Owner: Neutral
+ AlliedEntry2: waypoint
+ Location: 14,61
+ Owner: Neutral
+ AlliedEntry3: waypoint
+ Location: 23,61
+ Owner: Neutral
+ SubPen: spen
+ Location: 63,99
+ Owner: USSR
+ TechLab1: stek
+ Location: 93,93
+ Owner: USSR
+ TechLab2: stek
+ Location: 68,82
+ Owner: USSR
+ TechLab3: stek
+ Location: 93,108
+ Owner: USSR
+ SovietBarracks: barr
+ Location: 15,83
+ Owner: USSR
+ WeaponsFactory: weap
+ Location: 75,93
+ Owner: USSR
+ Airfield: afld
+ Location: 74,86
+ Owner: USSR
+ Refinery: proc
+ Location: 81,90
+ Owner: USSR
+ Radar: dome
+ Location: 20,83
+ Owner: USSR
+ WeaponMeetPoint: waypoint
+ Owner: Neutral
+ Location: 73,90
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
diff --git a/mods/ura/maps/allies-06a/rules.yaml b/mods/ura/maps/allies-06a/rules.yaml
new file mode 100644
index 0000000..9c7ebb3
--- /dev/null
+++ b/mods/ura/maps/allies-06a/rules.yaml
@@ -0,0 +1,97 @@
+Player:
+ PlayerResources:
+ DefaultCash: 5000
+
+World:
+ LuaScript:
+ Scripts: allies06a.lua, allies06a-AI.lua
+ MissionData:
+ Briefing: Priority one is to establish a base and get your spy into one of the Soviet Tech Centers in the base across the gulf.\nData on the Iron Curtain is in there and we need it.\n\nOnce you get the data complete your mission...\nWipe out everything.
+ BriefingVideo: ally6.vqa
+ WinVideo: allymorf.vqa
+ LossVideo: overrun.vqa
+ StartVideo: mcv.vqa
+ MapOptions:
+ TechLevel: medium
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ hard: Hard
+ Default: easy
+
+powerproxy.paratroopers:
+ ParatroopersPower:
+ DropItems: E1,E1,E1,E4,E4
+
+TSLA:
+ Power:
+ Amount: -150
+
+3TNK:
+ Buildable:
+ Prerequisites: ~vehicles.soviet
+
+ARTY:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+TRUK:
+ Buildable:
+ Prerequisites: ~disabled
+
+STEK:
+ Targetable:
+ TargetTypes: Ground, Structure, C4, DetonateAttack, SpyInfiltrate
+
+TECH.CAM:
+ Inherits: CAMERA
+ RevealsShroud:
+ Range: 4c0
+ Type: CenterPosition
+
+APWR:
+ Buildable:
+ Prerequisites: ~disabled
+
+AFLD:
+ Buildable:
+ Prerequisites: ~disabled
+
+HPAD:
+ Buildable:
+ Prerequisites: ~disabled
+
+BRIK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MECH:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+DD:
+ Buildable:
+ Prerequisites: ~disabled
+
+CA:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSUB:
+ Buildable:
+ Prerequisites: ~disabled
+
+SS:
+ AutoTarget:
+ InitialStanceAI: AttackAnything
diff --git a/mods/ura/maps/allies-06b/allies06b-AI.lua b/mods/ura/maps/allies-06b/allies06b-AI.lua
new file mode 100644
index 0000000..8af0df8
--- /dev/null
+++ b/mods/ura/maps/allies-06b/allies06b-AI.lua
@@ -0,0 +1,248 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+
+WTransWays =
+{
+ { WaterUnloadEntry1.Location, WaterUnload1.Location },
+ { WaterUnloadEntry2.Location, WaterUnload2.Location },
+ { WaterUnloadEntry3.Location, WaterUnload3.Location }
+}
+
+WTransUnits =
+{
+ hard = { { "3tnk", "3tnk", "3tnk", "v2rl", "v2rl" }, { "v2rl", "v2rl", "e4", "e4", "3tnk" } },
+ normal = { { "e1", "e1", "3tnk", "3tnk", "v2rl" }, { "e4", "e4", "e4", "e4", "v2rl" } },
+ easy = { { "e1", "e1", "e1", "e2", "e2" }, { "e2", "e2", "3tnk" } }
+}
+
+WTransDelays =
+{
+ easy = 4,
+ normal = 3,
+ hard = 1
+}
+
+BuildDelays =
+{
+ easy = 90,
+ normal = 60,
+ hard = 30
+}
+
+WaterAttacks =
+{
+ easy = 1,
+ normal = 2,
+ hard = 3
+}
+
+WaterAttackTypes =
+{
+ easy = { "ss" },
+ normal = { "ss", "ss" },
+ hard = { "ss", "ss", "ss" }
+}
+
+VehicleTypes = { "v2rl", "3tnk", "3tnk", "3tnk", "3tnk", "harv" }
+
+InfTypes =
+{
+ { "e1", "e1", "e1", "e1", "e1"},
+ { "e2", "e2", "e1", "e1", "e1"},
+ { "e4", "e4", "e4", "e1", "e1"}
+}
+
+AttackRallyPoints =
+{
+ { SovietSideAttack1.Location, SovietBaseAttack.Location },
+ { SovietBaseAttack.Location },
+ { SovietSideAttack2.Location, SovietBaseAttack.Location }
+}
+
+ImportantBuildings = { WarFactory, Airfield1, Airfield2, Radar2, Refinery, SovietConyard }
+SovietAircraftType = { "yak" }
+Yaks = { }
+IdlingUnits = { }
+IdlingTanks = { tank1, tank2, tank3, tank4, tank5, tank6, tank7 }
+IdlingNavalUnits = { }
+
+InitialiseAttack = function()
+ Utils.Do(ImportantBuildings, function(a)
+ Trigger.OnDamaged(a, function()
+ Utils.Do(IdlingTanks, function(unit)
+ if not unit.IsDead then
+ IdleHunt(unit)
+ end
+ end)
+ end)
+ Trigger.OnCapture(a, function()
+ Utils.Do(IdlingTanks, function(unit)
+ if not unit.IsDead then
+ IdleHunt(unit)
+ end
+ end)
+ end)
+ end)
+end
+
+Attack = 0
+ProduceInfantry = function()
+ if SovietBarracks.IsDead or SovietBarracks.Owner ~= ussr then
+ return
+ end
+
+ Attack = Attack + 1
+ local toBuild = Utils.Random(InfTypes)
+ ussr.Build(toBuild, function(units)
+ if Attack == 2 and not AttackTank1.IsDead then
+ units[#units + 1] = AttackTank1
+ elseif Attack == 4 and not AttackTank2.IsDead then
+ units[#units + 1] = AttackTank2
+ end
+
+ SendAttack(units, Utils.Random(AttackRallyPoints))
+ Trigger.AfterDelay(DateTime.Seconds(BuildDelays), ProduceInfantry)
+ end)
+end
+
+ProduceVehicles = function()
+ if WarFactory.IsDead or WarFactory.Owner ~= ussr then
+ return
+ end
+ ussr.Build(VehicleTypes, function(units)
+ Utils.Do(units, function(unit)
+ if unit.Type ~= "harv" then
+ IdlingTanks[#IdlingTanks + 1] = unit
+ end
+ end)
+ end)
+end
+
+ProduceNaval = function()
+ if SubPen.IsDead or SubPen.Owner ~= ussr then
+ return
+ end
+
+ if not shouldProduce and #Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == player and self.Type == "syrd" end) < 1 then
+ Trigger.AfterDelay(DateTime.Minutes(1), ProduceNaval)
+ return
+ end
+
+ shouldProduce = true
+
+ ussr.Build(WaterAttackTypes, function(units)
+ Utils.Do(units, function(unit)
+ IdlingNavalUnits[#IdlingNavalUnits + 1] = unit
+ end)
+
+ Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(40), ProduceNaval)
+ if #IdlingNavalUnits >= WaterAttacks then
+ Trigger.AfterDelay(DateTime.Seconds(20), function()
+ SendAttack(SetupNavalAttackGroup(), { SubPatrol1_2.Location })
+ end)
+ end
+ end)
+end
+
+ProduceAircraft = function()
+ if (Airfield1.IsDead or Airfield1.Owner ~= ussr) and (Airfield2.IsDead or Airfield2.Owner ~= ussr) then
+ return
+ end
+
+ ussr.Build(SovietAircraftType, function(units)
+ local yak = units[1]
+ Yaks[#Yaks + 1] = yak
+
+ Trigger.OnKilled(yak, ProduceAircraft)
+
+ local alive = Utils.Where(Yaks, function(y) return not y.IsDead end)
+ if #alive < 2 then
+ Trigger.AfterDelay(DateTime.Seconds(BuildDelays / 2), ProduceAircraft)
+ end
+
+ TargetAndAttack(yak)
+ end)
+end
+
+TargetAndAttack = function(yak, target)
+ if not target or target.IsDead or (not target.IsInWorld) then
+ local enemies = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == player and self.HasProperty("Health") and yak.CanTarget(self) end)
+ if #enemies > 0 then
+ target = Utils.Random(enemies)
+ end
+ end
+
+ if target and yak.AmmoCount() > 0 and yak.CanTarget(target) then
+ yak.Attack(target)
+ else
+ yak.ReturnToBase()
+ end
+
+ yak.CallFunc(function()
+ TargetAndAttack(yak, target)
+ end)
+end
+
+IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
+
+SendAttack = function(units, path)
+ Utils.Do(units, function(unit)
+ unit.Patrol(path, false)
+ IdleHunt(unit)
+ end)
+end
+
+SetupNavalAttackGroup = function()
+ local units = { }
+ for i = 0, 3 do
+ if #IdlingNavalUnits == 0 then
+ return units
+ end
+
+ local number = Utils.RandomInteger(1, #IdlingNavalUnits + 1)
+ if IdlingNavalUnits[number] and not IdlingNavalUnits[number].IsDead then
+ units[i] = IdlingNavalUnits[number]
+ table.remove(IdlingNavalUnits, number)
+ end
+ end
+
+ return units
+end
+
+WTransWaves = function()
+ local way = Utils.Random(WTransWays)
+ local units = Utils.Random(WTransUnits)
+ local attackUnits = Reinforcements.ReinforceWithTransport(ussr, "lst", units , way, { way[2], way[1] })[2]
+ Utils.Do(attackUnits, function(a)
+ Trigger.OnAddedToWorld(a, function()
+ a.AttackMove(SovietBaseAttack.Location)
+ IdleHunt(a)
+ end)
+ end)
+
+ Trigger.AfterDelay(DateTime.Minutes(WTransDelays), WTransWaves)
+end
+
+ActivateAI = function()
+ local difficulty = Map.LobbyOption("difficulty")
+ WaterAttackTypes = WaterAttackTypes[difficulty]
+ WaterAttacks = WaterAttacks[difficulty]
+ WTransUnits = WTransUnits[difficulty]
+ WTransDelays = WTransDelays[difficulty]
+ BuildDelays = BuildDelays[difficulty]
+
+ InitialiseAttack()
+ Trigger.AfterDelay(DateTime.Seconds(40), ProduceInfantry)
+ Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(10), ProduceAircraft)
+ Trigger.AfterDelay(DateTime.Minutes(2) + DateTime.Seconds(10), ProduceVehicles)
+
+ WarFactory.RallyPoint = WeaponMeetPoint.Location
+ Trigger.AfterDelay(DateTime.Minutes(4) + DateTime.Seconds(10), ProduceNaval)
+ Trigger.AfterDelay(DateTime.Minutes(WTransDelays + 1) + DateTime.Seconds(30), WTransWaves)
+end
diff --git a/mods/ura/maps/allies-06b/allies06b.lua b/mods/ura/maps/allies-06b/allies06b.lua
new file mode 100644
index 0000000..63253c4
--- /dev/null
+++ b/mods/ura/maps/allies-06b/allies06b.lua
@@ -0,0 +1,269 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+AlliedReinforcementsA = { "e1", "e1", "e1", "e1", "e1" }
+AlliedReinforcementsB = { "e1", "e1", "e3", "e3", "e3" }
+AlliedBoatReinforcements = { "pt", "pt" }
+BadGuys = { BadGuy1, BadGuy2, BadGuy3, BadGuy4 }
+
+SovietDogPatrols =
+{
+ { Patrol_1_e1, Patrol_1_dog },
+ { Patrol_2_e1, Patrol_2_dog },
+ { Patrol_3_e1, Patrol_3_dog },
+ { Patrol_4_e1, Patrol_4_dog }
+}
+
+SovietDogPatrolPaths =
+{
+ { Patrol6.Location, Patrol7.Location, Patrol8.Location, Patrol1.Location, Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location },
+ { Patrol8.Location, Patrol1.Location, Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location, Patrol6.Location, Patrol7.Location },
+ { Patrol1.Location, Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location, Patrol6.Location, Patrol7.Location, Patrol8.Location },
+ { Patrol2.Location, Patrol3.Location, Patrol4.Location, Patrol5.Location, Patrol6.Location, Patrol7.Location, Patrol8.Location, Patrol1.Location }
+}
+
+Mammoths = { Mammoth1, Mammoth2, Mammoth3 }
+
+SovietMammothPaths =
+{
+ { TnkPatrol1.Location, TnkPatrol2.Location,TnkPatrol3.Location, TnkPatrol4.Location, TnkPatrol5.Location, TnkPatrol6.Location },
+ { TnkPatrol5.Location, TnkPatrol6.Location, TnkPatrol1.Location, TnkPatrol2.Location, TnkPatrol3.Location, TnkPatrol4.Location },
+ { TnkPatrol6.Location, TnkPatrol1.Location, TnkPatrol2.Location, TnkPatrol3.Location, TnkPatrol4.Location, TnkPatrol5.Location }
+}
+
+SubPaths = {
+ { SubPatrol1_1.Location, SubPatrol1_2.Location },
+ { SubPatrol2_1.Location, SubPatrol2_2.Location },
+ { SubPatrol3_1.Location, SubPatrol3_2.Location },
+ { SubPatrol4_1.Location, SubPatrol4_2.Location },
+ { SubPatrol5_1.Location, SubPatrol5_2.Location }
+}
+
+ParadropWaypoints =
+{
+ easy = { UnitBStopLocation },
+ normal = { UnitBStopLocation, UnitAStopLocation },
+ hard = { UnitBStopLocation, UnitCStopLocation, UnitAStopLocation }
+}
+
+SovietTechLabs = { TechLab1, TechLab2 }
+
+TechLabCams = { TechCam1, TechCam2 }
+
+GroupPatrol = function(units, waypoints, delay)
+ local i = 1
+ local stop = false
+
+ Utils.Do(units, function(unit)
+ Trigger.OnIdle(unit, function()
+ if stop then
+ return
+ end
+ if unit.Location == waypoints[i] then
+ local bool = Utils.All(units, function(actor) return actor.IsIdle end)
+ if bool then
+ stop = true
+ i = i + 1
+ if i > #waypoints then
+ i = 1
+ end
+ Trigger.AfterDelay(delay, function() stop = false end)
+ end
+ else
+ unit.AttackMove(waypoints[i])
+ end
+ end)
+ end)
+end
+
+InitialSovietPatrols = function()
+ -- Dog Patrols
+ BeachDog.Patrol({ BeachPatrol1.Location, BeachPatrol2.Location, BeachPatrol3.Location })
+ for i = 1, 4 do
+ GroupPatrol(SovietDogPatrols[i], SovietDogPatrolPaths[i], DateTime.Seconds(5))
+ end
+
+ -- Mammoth Patrols
+ for i = 1, 3 do
+ Trigger.AfterDelay(DateTime.Seconds(6 * (i - 1)), function()
+ Trigger.OnIdle(Mammoths[i], function()
+ Mammoths[i].Patrol(SovietMammothPaths[i])
+ end)
+ end)
+ end
+
+ -- Sub Patrols
+ Patrol1Sub.Patrol(SubPaths[1])
+ Patrol2Sub.Patrol(SubPaths[2])
+ Patrol3Sub.Patrol(SubPaths[3])
+ Patrol4Sub.Patrol(SubPaths[4])
+ Patrol5Sub.Patrol(SubPaths[5])
+end
+
+InitialAlliedReinforcements = function()
+ local camera = Actor.Create("Camera", true, { Owner = player, Location = DefaultCameraPosition.Location })
+ Trigger.AfterDelay(DateTime.Seconds(30), camera.Destroy)
+
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ Reinforcements.Reinforce(player, AlliedReinforcementsA, { AlliedEntry3.Location, UnitCStopLocation.Location }, 2)
+ Reinforcements.Reinforce(player, AlliedReinforcementsB, { AlliedEntry2.Location, UnitAStopLocation.Location }, 2)
+ end)
+ Trigger.AfterDelay(DateTime.Seconds(3), function()
+ Reinforcements.Reinforce(player, { "mcv" }, { AlliedEntry1.Location, UnitBStopLocation.Location })
+ Reinforcements.Reinforce(player, AlliedBoatReinforcements, { AlliedBoatEntry.Location, AlliedBoatStop.Location })
+ end)
+end
+
+CaptureRadarDome = function()
+ Trigger.OnKilled(Radar, function()
+ player.MarkFailedObjective(CaptureRadarDomeObj)
+ end)
+
+ Trigger.OnCapture(Radar, function()
+ player.MarkCompletedObjective(CaptureRadarDomeObj)
+ Beacon.New(player, TechLab1.CenterPosition)
+ Beacon.New(player, TechLab2.CenterPosition)
+ Media.DisplayMessage("Coordinates of the Soviet tech centers discovered.")
+ if Map.LobbyOption("difficulty") ~= "hard" then
+ Utils.Do(TechLabCams, function(a)
+ Actor.Create("TECH.CAM", true, { Owner = player, Location = a.Location })
+ end)
+
+ if Map.LobbyOption("difficulty") == "easy" then
+ Actor.Create("Camera", true, { Owner = player, Location = Weapcam.Location })
+ end
+ end
+ end)
+end
+
+InfiltrateTechCenter = function()
+ Utils.Do(SovietTechLabs, function(a)
+ Trigger.OnInfiltrated(a, function()
+ if infiltrated then
+ return
+ end
+ infiltrated = true
+ DestroySovietsObj = player.AddPrimaryObjective("Destroy all Soviet buildings and units in the area.")
+ player.MarkCompletedObjective(InfiltrateTechCenterObj)
+ end)
+
+ Trigger.OnCapture(a, function()
+ if not infiltrated then
+ Media.DisplayMessage("Do not capture the tech centers! Infiltrate one with a spy.")
+ end
+ end)
+ end)
+
+ Trigger.OnAllKilledOrCaptured(SovietTechLabs, function()
+ if not player.IsObjectiveCompleted(InfiltrateTechCenterObj) then
+ player.MarkFailedObjective(InfiltrateTechCenterObj)
+ end
+ end)
+end
+
+InfiltrateRef = function()
+ Trigger.OnInfiltrated(Refinery, function()
+ player.MarkCompletedObjective(InfiltrateRefObj)
+ end)
+ Trigger.OnCapture(Refinery, function()
+ player.MarkCompletedObjective(InfiltrateRefObj)
+ end)
+ Trigger.OnKilled(Refinery, function()
+ if not player.IsObjectiveCompleted(InfiltrateRefObj) then
+ player.MarkFailedObjective(InfiltrateRefObj)
+ end
+ end)
+end
+
+Tick = function()
+ if player.HasNoRequiredUnits() then
+ player.MarkFailedObjective(InfiltrateTechCenterObj)
+ end
+
+ if DestroySovietsObj and ussr.HasNoRequiredUnits() then
+ player.MarkCompletedObjective(DestroySovietsObj)
+ end
+end
+
+WorldLoaded = function()
+ player = Player.GetPlayer("Greece")
+ ussr = Player.GetPlayer("USSR")
+
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "MissionFailed")
+ end)
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "MissionAccomplished")
+ end)
+
+ InfiltrateTechCenterObj = player.AddPrimaryObjective("Infiltrate one of the Soviet tech centers with a spy.")
+ CaptureRadarDomeObj = player.AddSecondaryObjective("Capture the Radar Dome at the shore.")
+ InfiltrateRefObj = player.AddSecondaryObjective("Infiltrate the Refinery for money.")
+
+ Camera.Position = DefaultCameraPosition.CenterPosition
+
+ if Map.LobbyOption("difficulty") ~= "hard" then
+ Trigger.OnEnteredProximityTrigger(SovietDefenseCam.CenterPosition, WDist.New(1024 * 7), function(a, id)
+ if a.Owner == player then
+ Trigger.RemoveProximityTrigger(id)
+ local cam1 = Actor.Create("TECH.CAM", true, { Owner = player, Location = SovietDefenseCam.Location })
+ Trigger.AfterDelay(DateTime.Seconds(15), cam1.Destroy)
+ if not DefenseFlame1.IsDead then
+ local cam2 = Actor.Create("TECH.CAM", true, { Owner = player, Location = DefenseFlame1.Location })
+ Trigger.AfterDelay(DateTime.Seconds(15), cam2.Destroy)
+ end
+ if not DefenseFlame2.IsDead then
+ local cam3 = Actor.Create("TECH.CAM", true, { Owner = player, Location = DefenseFlame2.Location })
+ Trigger.AfterDelay(DateTime.Seconds(15), cam3.Destroy)
+ end
+ end
+ end)
+
+ if Map.LobbyOption("difficulty") == "easy" then
+ Trigger.OnKilled(DefBrl1, function(a, b)
+ DefenseFlame1.Kill()
+ end)
+ Trigger.OnKilled(DefBrl2, function(a, b)
+ DefenseFlame2.Kill()
+ end)
+ end
+ end
+
+ Utils.Do(BadGuys, function(a)
+ a.AttackMove(UnitCStopLocation.Location)
+ end)
+
+ InitialAlliedReinforcements()
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ InitialSovietPatrols()
+ end)
+
+ Trigger.OnEnteredProximityTrigger(SovietMiniBaseCam.CenterPosition, WDist.New(1024 * 14), function(a, id)
+ if a.Owner == player then
+ Trigger.RemoveProximityTrigger(id)
+ local cam = Actor.Create("Camera", true, { Owner = player, Location = SovietMiniBaseCam.Location })
+ Trigger.AfterDelay(DateTime.Seconds(15), cam.Destroy)
+ end
+ end)
+ CaptureRadarDome()
+ InfiltrateTechCenter()
+ InfiltrateRef()
+ Trigger.AfterDelay(0, ActivateAI)
+end
diff --git a/mods/ura/maps/allies-06b/map.bin b/mods/ura/maps/allies-06b/map.bin
new file mode 100644
index 0000000..36d149b
Binary files /dev/null and b/mods/ura/maps/allies-06b/map.bin differ
diff --git a/mods/ura/maps/allies-06b/map.png b/mods/ura/maps/allies-06b/map.png
new file mode 100644
index 0000000..29bfd56
Binary files /dev/null and b/mods/ura/maps/allies-06b/map.png differ
diff --git a/mods/ura/maps/allies-06b/map.yaml b/mods/ura/maps/allies-06b/map.yaml
new file mode 100644
index 0000000..b1defd7
--- /dev/null
+++ b/mods/ura/maps/allies-06b/map.yaml
@@ -0,0 +1,851 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 06b: Cripple Iron Curtain research
+
+Author: Westwood Studios
+
+Tileset: SNOW
+
+MapSize: 128,128
+
+Bounds: 20,34,83,78
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: england
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Faction: england
+ PlayerReference@USSR:
+ Name: USSR
+ Faction: soviet
+ Color: FF1400
+ Enemies: Greece
+ PlayerReference@Greece:
+ Name: Greece
+ AllowBots: False
+ Playable: True
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: E2E6F6
+ LockSpawn: True
+ LockTeam: True
+ Enemies: USSR
+
+Actors:
+ Actor245: sbag
+ Owner: Neutral
+ Location: 69,83
+ Actor0: sbag
+ Location: 69,80
+ Owner: Neutral
+ Actor1: sbag
+ Location: 70,80
+ Owner: Neutral
+ Actor2: sbag
+ Location: 71,80
+ Owner: Neutral
+ Actor3: sbag
+ Location: 72,80
+ Owner: Neutral
+ Actor4: sbag
+ Location: 73,80
+ Owner: Neutral
+ Actor5: sbag
+ Location: 74,80
+ Owner: Neutral
+ Actor6: sbag
+ Location: 75,80
+ Owner: Neutral
+ Actor7: sbag
+ Location: 76,80
+ Owner: Neutral
+ Actor8: sbag
+ Location: 77,80
+ Owner: Neutral
+ Actor9: sbag
+ Location: 69,81
+ Owner: Neutral
+ Actor10: sbag
+ Location: 75,81
+ Owner: Neutral
+ Actor11: sbag
+ Location: 77,81
+ Owner: Neutral
+ Actor12: sbag
+ Location: 69,82
+ Owner: Neutral
+ Actor13: sbag
+ Location: 75,82
+ Owner: Neutral
+ Actor14: sbag
+ Location: 76,82
+ Owner: Neutral
+ Actor15: sbag
+ Location: 77,82
+ Owner: Neutral
+ Actor17: sbag
+ Location: 69,84
+ Owner: Neutral
+ Actor18: sbag
+ Location: 85,84
+ Owner: Neutral
+ Actor19: sbag
+ Location: 86,84
+ Owner: Neutral
+ Actor20: sbag
+ Location: 87,84
+ Owner: Neutral
+ Actor21: sbag
+ Location: 85,85
+ Owner: Neutral
+ Actor22: sbag
+ Location: 87,85
+ Owner: Neutral
+ Actor23: sbag
+ Location: 85,86
+ Owner: Neutral
+ Actor24: sbag
+ Location: 86,86
+ Owner: Neutral
+ Actor25: sbag
+ Location: 87,86
+ Owner: Neutral
+ Actor26: sbag
+ Location: 87,87
+ Owner: Neutral
+ Actor27: sbag
+ Location: 87,88
+ Owner: Neutral
+ Actor28: sbag
+ Location: 87,89
+ Owner: Neutral
+ Actor29: sbag
+ Location: 69,90
+ Owner: Neutral
+ Actor30: sbag
+ Location: 87,90
+ Owner: Neutral
+ Actor31: sbag
+ Location: 69,91
+ Owner: Neutral
+ Actor32: sbag
+ Location: 87,91
+ Owner: Neutral
+ Actor33: sbag
+ Location: 69,92
+ Owner: Neutral
+ Actor34: sbag
+ Location: 74,92
+ Owner: Neutral
+ Actor35: sbag
+ Location: 75,92
+ Owner: Neutral
+ Actor36: sbag
+ Location: 76,92
+ Owner: Neutral
+ Actor37: sbag
+ Location: 81,92
+ Owner: Neutral
+ Actor38: sbag
+ Location: 82,92
+ Owner: Neutral
+ Actor39: sbag
+ Location: 83,92
+ Owner: Neutral
+ Actor40: sbag
+ Location: 87,92
+ Owner: Neutral
+ Actor41: sbag
+ Location: 69,93
+ Owner: Neutral
+ Actor42: sbag
+ Location: 74,93
+ Owner: Neutral
+ Actor43: sbag
+ Location: 76,93
+ Owner: Neutral
+ Actor44: sbag
+ Location: 81,93
+ Owner: Neutral
+ Actor45: sbag
+ Location: 83,93
+ Owner: Neutral
+ Actor46: sbag
+ Location: 87,93
+ Owner: Neutral
+ Actor47: sbag
+ Location: 69,94
+ Owner: Neutral
+ Actor48: sbag
+ Location: 70,94
+ Owner: Neutral
+ Actor49: sbag
+ Location: 71,94
+ Owner: Neutral
+ Actor50: sbag
+ Location: 72,94
+ Owner: Neutral
+ Actor51: sbag
+ Location: 73,94
+ Owner: Neutral
+ Actor52: sbag
+ Location: 74,94
+ Owner: Neutral
+ Actor53: sbag
+ Location: 75,94
+ Owner: Neutral
+ Actor54: sbag
+ Location: 76,94
+ Owner: Neutral
+ Actor55: sbag
+ Location: 81,94
+ Owner: Neutral
+ Actor56: sbag
+ Location: 82,94
+ Owner: Neutral
+ Actor57: sbag
+ Location: 83,94
+ Owner: Neutral
+ Actor58: sbag
+ Location: 84,94
+ Owner: Neutral
+ Actor59: sbag
+ Location: 85,94
+ Owner: Neutral
+ Actor60: sbag
+ Location: 86,94
+ Owner: Neutral
+ Actor61: sbag
+ Location: 87,94
+ Owner: Neutral
+ Actor62: tc05
+ Location: 54,109
+ Owner: Neutral
+ Actor63: tc02
+ Location: 46,103
+ Owner: Neutral
+ Actor64: t08
+ Location: 43,103
+ Owner: Neutral
+ Actor65: t08
+ Location: 46,109
+ Owner: Neutral
+ Actor66: t01
+ Location: 52,102
+ Owner: Neutral
+ Actor67: t11
+ Location: 72,94
+ Owner: Neutral
+ Actor68: tc05
+ Location: 89,89
+ Owner: Neutral
+ Actor69: tc04
+ Location: 84,95
+ Owner: Neutral
+ Actor70: tc03
+ Location: 78,97
+ Owner: Neutral
+ Actor71: tc01
+ Location: 73,97
+ Owner: Neutral
+ Actor72: t17
+ Location: 76,95
+ Owner: Neutral
+ Actor73: t16
+ Location: 77,102
+ Owner: Neutral
+ Actor74: tc02
+ Location: 76,40
+ Owner: Neutral
+ Actor75: tc05
+ Location: 72,47
+ Owner: Neutral
+ Actor76: tc04
+ Location: 72,45
+ Owner: Neutral
+ Actor77: t08
+ Location: 75,49
+ Owner: Neutral
+ Actor78: t08
+ Location: 75,40
+ Owner: Neutral
+ Actor79: tc02
+ Location: 39,34
+ Owner: Neutral
+ Actor80: t08
+ Location: 38,36
+ Owner: Neutral
+ Actor81: tc05
+ Location: 93,43
+ Owner: Neutral
+ Actor82: tc03
+ Location: 93,42
+ Owner: Neutral
+ Actor83: tc01
+ Location: 91,45
+ Owner: Neutral
+ Actor84: t08
+ Location: 93,45
+ Owner: Neutral
+ Actor85: tc02
+ Location: 42,38
+ Owner: Neutral
+ Actor86: tc04
+ Location: 42,41
+ Owner: Neutral
+ Actor87: tc05
+ Location: 46,39
+ Owner: Neutral
+ Actor88: t17
+ Location: 46,42
+ Owner: Neutral
+ Actor89: tc01
+ Location: 51,104
+ Owner: Neutral
+ Actor90: t17
+ Location: 47,106
+ Owner: Neutral
+ Actor91: t16
+ Location: 53,107
+ Owner: Neutral
+ Actor92: t08
+ Location: 50,109
+ Owner: Neutral
+ Actor93: t08
+ Location: 51,106
+ Owner: Neutral
+ Actor94: t08
+ Location: 87,95
+ Owner: Neutral
+ Actor95: tc04
+ Location: 88,93
+ Owner: Neutral
+ Actor96: tc05
+ Location: 88,95
+ Owner: Neutral
+ Actor97: t01
+ Location: 36,110
+ Owner: Neutral
+ Actor98: t07
+ Location: 38,110
+ Owner: Neutral
+ Actor99: t07
+ Location: 34,100
+ Owner: Neutral
+ Actor100: t08
+ Location: 33,105
+ Owner: Neutral
+ Actor101: mine
+ Location: 42,108
+ Owner: Neutral
+ Actor102: mine
+ Location: 77,105
+ Owner: Neutral
+ Actor103: mine
+ Location: 84,104
+ Owner: Neutral
+ Actor104: mine
+ Location: 31,108
+ Owner: Neutral
+ Actor106: ftur
+ Location: 69,89
+ Owner: USSR
+ Actor107: ftur
+ Location: 69,85
+ Owner: USSR
+ Actor108: powr
+ Location: 80,87
+ Owner: USSR
+ Actor109: powr
+ Location: 78,85
+ Owner: USSR
+ Actor114: ftur
+ Location: 57,45
+ Owner: USSR
+ Actor115: ftur
+ Location: 62,45
+ Owner: USSR
+ Actor118: silo
+ Location: 68,35
+ Owner: USSR
+ Actor119: silo
+ Location: 71,34
+ Owner: USSR
+ Actor120: silo
+ Location: 67,34
+ Owner: USSR
+ Actor121: silo
+ Location: 72,35
+ Owner: USSR
+ Actor124: apwr
+ Location: 81,46
+ Owner: USSR
+ Actor125: apwr
+ Location: 58,59
+ Owner: USSR
+ Actor126: apwr
+ Location: 75,46
+ Owner: USSR
+ Actor127: apwr
+ Location: 78,46
+ Owner: USSR
+ Actor128: apwr
+ Location: 50,59
+ Owner: USSR
+ Actor131: kenn
+ Location: 52,45
+ Owner: USSR
+ Actor132: kenn
+ Location: 75,41
+ Owner: USSR
+ Actor133: tsla
+ Location: 77,64
+ Owner: USSR
+ Actor134: tsla
+ Location: 33,44
+ Owner: USSR
+ Actor135: tsla
+ Location: 72,60
+ Owner: USSR
+ Actor136: kenn
+ Location: 72,50
+ Owner: USSR
+ Actor137: brl3
+ Location: 52,91
+ Owner: USSR
+ Actor138: barl
+ Location: 52,90
+ Owner: USSR
+ Actor139: brl3
+ Location: 47,90
+ Owner: USSR
+ Actor140: barl
+ Location: 46,91
+ Owner: USSR
+ Actor143: barl
+ Location: 52,92
+ Owner: USSR
+ Actor146: barl
+ Location: 46,90
+ Owner: USSR
+ Actor148: 3tnk
+ Location: 49,91
+ Owner: USSR
+ Facing: 127
+ Actor158: harv
+ Location: 78,37
+ Owner: USSR
+ Facing: 223
+ Actor161: v2rl
+ Location: 85,55
+ Owner: USSR
+ Facing: 63
+ Actor165: e1
+ Location: 75,93
+ Owner: USSR
+ SubCell: 3
+ Actor166: e1
+ Location: 82,93
+ Owner: USSR
+ SubCell: 3
+ Actor167: e1
+ Location: 86,85
+ Owner: USSR
+ SubCell: 2
+ Actor168: e1
+ Location: 76,81
+ Owner: USSR
+ SubCell: 1
+ Actor169: e2
+ Location: 75,93
+ Owner: USSR
+ SubCell: 2
+ Actor170: e2
+ Location: 82,93
+ Owner: USSR
+ SubCell: 2
+ Actor171: e2
+ Location: 86,85
+ Owner: USSR
+ SubCell: 3
+ Actor172: e2
+ Location: 76,81
+ Owner: USSR
+ SubCell: 3
+ Actor182: e1
+ Location: 54,105
+ Owner: Greece
+ SubCell: 1
+ Actor183: e1
+ Location: 53,106
+ Owner: Greece
+ Facing: 31
+ SubCell: 2
+ Actor184: e1
+ Location: 55,105
+ Owner: Greece
+ Facing: 223
+ SubCell: 4
+ Actor186: ss
+ Location: 67,62
+ Owner: USSR
+ Facing: 127
+ Actor236: mine
+ Owner: Neutral
+ Location: 88,35
+ Actor237: mine
+ Owner: Neutral
+ Location: 40,52
+ Actor238: mine
+ Owner: Neutral
+ Location: 28,36
+ Actor244: camera
+ Owner: USSR
+ Location: 49,107
+ SovietBaseAttack: waypoint
+ Owner: Neutral
+ Location: 49,87
+ SovietSideAttack1: waypoint
+ Owner: Neutral
+ Location: 66,93
+ SovietSideAttack2: waypoint
+ Owner: Neutral
+ Location: 66,82
+ AttackTank1: 3tnk
+ Location: 71,87
+ Owner: USSR
+ Facing: 63
+ AttackTank2: 3tnk
+ Location: 80,84
+ Owner: USSR
+ Facing: 95
+ AlliedEntry1: waypoint
+ Location: 49,111
+ Owner: Neutral
+ AlliedEntry2: waypoint
+ Location: 46,111
+ Owner: Neutral
+ AlliedEntry3: waypoint
+ Location: 52,111
+ Owner: Neutral
+ AlliedBoatEntry: waypoint
+ Location: 60,111
+ Owner: Neutral
+ UnitAStopLocation: waypoint
+ Location: 49,108
+ Owner: Neutral
+ UnitBStopLocation: waypoint
+ Location: 47,108
+ Owner: Neutral
+ UnitCStopLocation: waypoint
+ Location: 51,108
+ Owner: Neutral
+ AlliedBoatStop: waypoint
+ Location: 60,108
+ Owner: Neutral
+ WaterUnload1: waypoint
+ Location: 79,109
+ Owner: Neutral
+ WaterUnload2: waypoint
+ Location: 26,107
+ Owner: Neutral
+ WaterUnload3: waypoint
+ Location: 83,82
+ Owner: Neutral
+ WaterUnloadEntry1: waypoint
+ Location: 102,108
+ Owner: Neutral
+ WaterUnloadEntry2: waypoint
+ Owner: Neutral
+ Location: 20,68
+ WaterUnloadEntry3: waypoint
+ Location: 102,53
+ Owner: Neutral
+ DefaultCameraPosition: waypoint
+ Location: 54,107
+ Owner: Neutral
+ SovietMiniBaseCam: waypoint
+ Location: 77,87
+ Owner: Neutral
+ SovietDefenseCam: waypoint
+ Owner: Neutral
+ Location: 49,91
+ TechCam1: waypoint
+ Owner: Neutral
+ Location: 55,58
+ TechCam2: waypoint
+ Owner: Neutral
+ Location: 91,43
+ Weapcam: waypoint
+ Owner: Neutral
+ Location: 53,47
+ TechLab1: stek
+ Location: 54,57
+ Owner: USSR
+ TechLab2: stek
+ Location: 90,42
+ Owner: USSR
+ Airfield1: afld
+ Location: 60,48
+ Owner: USSR
+ Airfield2: afld
+ Location: 58,41
+ Owner: USSR
+ WarFactory: weap
+ Location: 52,46
+ Owner: USSR
+ WeaponMeetPoint: waypoint
+ Owner: Neutral
+ Location: 65,46
+ SovietConyard: fact
+ Location: 70,54
+ Owner: USSR
+ Refinery: proc
+ Location: 68,35
+ Owner: USSR
+ Radar: dome
+ Location: 75,86
+ Owner: USSR
+ Radar2: dome
+ Location: 59,44
+ Owner: USSR
+ SovietBarracks: barr
+ Location: 73,83
+ Owner: USSR
+ SubPen: spen
+ Location: 72,62
+ Owner: USSR
+ BadGuy1: e1
+ Location: 48,95
+ Owner: USSR
+ Facing: 95
+ SubCell: 4
+ BadGuy2: e1
+ Location: 50,98
+ Owner: USSR
+ Facing: 95
+ SubCell: 1
+ BadGuy3: e1
+ Location: 50,96
+ Owner: USSR
+ Facing: 95
+ SubCell: 1
+ BadGuy4: e1
+ Location: 48,97
+ Owner: USSR
+ Facing: 95
+ SubCell: 4
+ Patrol1Sub: ss
+ Location: 96,58
+ Owner: USSR
+ Facing: 127
+ SubPatrol1_1: waypoint
+ Location: 96,58
+ Owner: Neutral
+ SubPatrol1_2: waypoint
+ Location: 86,77
+ Owner: Neutral
+ Patrol2Sub: ss
+ Location: 39,70
+ Owner: USSR
+ Facing: 95
+ SubPatrol2_1: waypoint
+ Location: 42,63
+ Owner: Neutral
+ SubPatrol2_2: waypoint
+ Location: 22,72
+ Owner: Neutral
+ Patrol3Sub: ss
+ Location: 22,64
+ Owner: USSR
+ Facing: 191
+ SubPatrol3_1: waypoint
+ Location: 41,75
+ Owner: Neutral
+ SubPatrol3_2: waypoint
+ Location: 22,64
+ Owner: Neutral
+ Patrol4Sub: ss
+ Location: 79,51
+ Owner: USSR
+ Facing: 191
+ SubPatrol4_1: waypoint
+ Location: 79,51
+ Owner: Neutral
+ SubPatrol4_2: waypoint
+ Location: 102,51
+ Owner: Neutral
+ Patrol5Sub: ss
+ Owner: USSR
+ Location: 94,75
+ Facing: 125
+ SubPatrol5_1: waypoint
+ Location: 94,94
+ Owner: Neutral
+ SubPatrol5_2: waypoint
+ Location: 94,75
+ Owner: Neutral
+ Mammoth1: 4tnk
+ Location: 69,43
+ Owner: USSR
+ Facing: 63
+ Mammoth2: 4tnk
+ Location: 43,40
+ Owner: USSR
+ Facing: 63
+ Mammoth3: 4tnk
+ Location: 54,37
+ Owner: USSR
+ Facing: 63
+ TnkPatrol1: waypoint
+ Location: 69,43
+ Owner: Neutral
+ TnkPatrol2: waypoint
+ Location: 69,55
+ Owner: Neutral
+ TnkPatrol3: waypoint
+ Location: 56,55
+ Owner: Neutral
+ TnkPatrol4: waypoint
+ Location: 41,44
+ Owner: Neutral
+ TnkPatrol5: waypoint
+ Location: 42,37
+ Owner: Neutral
+ TnkPatrol6: waypoint
+ Location: 62,37
+ Owner: Neutral
+ DefenseFlame1: ftur
+ Location: 51,91
+ Owner: USSR
+ DefenseFlame2: ftur
+ Location: 47,91
+ Owner: USSR
+ DefBrl1: brl3
+ Location: 51,90
+ Owner: USSR
+ DefBrl2: brl3
+ Location: 46,89
+ Owner: USSR
+ Patrol_1_e1: e1
+ Location: 40,44
+ Owner: USSR
+ Facing: 63
+ SubCell: 1
+ Patrol_1_dog: dog
+ Location: 40,43
+ Owner: USSR
+ Facing: 63
+ SubCell: 1
+ Patrol_2_e1: e1
+ Location: 41,37
+ Owner: USSR
+ Facing: 63
+ SubCell: 1
+ Patrol_2_dog: dog
+ Location: 41,37
+ Owner: USSR
+ Facing: 63
+ SubCell: 3
+ Patrol_3_e1: e1
+ Location: 84,43
+ Owner: USSR
+ Facing: 63
+ SubCell: 2
+ Patrol_3_dog: dog
+ Location: 86,43
+ Owner: USSR
+ Facing: 63
+ SubCell: 0
+ Patrol_4_e1: e1
+ Location: 67,51
+ Owner: USSR
+ Facing: 95
+ SubCell: 1
+ Patrol_4_dog: dog
+ Location: 66,50
+ Owner: USSR
+ Facing: 95
+ SubCell: 3
+ Patrol1: waypoint
+ Location: 85,43
+ Owner: Neutral
+ Patrol2: waypoint
+ Location: 66,50
+ Owner: Neutral
+ Patrol3: waypoint
+ Location: 53,55
+ Owner: Neutral
+ Patrol4: waypoint
+ Location: 46,49
+ Owner: Neutral
+ Patrol5: waypoint
+ Location: 40,44
+ Owner: Neutral
+ Patrol6: waypoint
+ Location: 41,37
+ Owner: Neutral
+ Patrol7: waypoint
+ Location: 54,37
+ Owner: Neutral
+ Patrol8: waypoint
+ Location: 71,43
+ Owner: Neutral
+ tank1: 3tnk
+ Location: 81,56
+ Owner: USSR
+ Facing: 95
+ tank2: 3tnk
+ Location: 77,54
+ Owner: USSR
+ Facing: 95
+ tank3: 3tnk
+ Location: 64,43
+ Owner: USSR
+ Facing: 159
+ tank4: 3tnk
+ Location: 45,43
+ Owner: USSR
+ Facing: 127
+ tank5: 3tnk
+ Location: 51,56
+ Owner: USSR
+ tank6: v2rl
+ Location: 46,41
+ Owner: USSR
+ Facing: 95
+ tank7: v2rl
+ Location: 62,42
+ Owner: USSR
+ Facing: 159
+ BeachDog: dog
+ Location: 75,54
+ Owner: USSR
+ Facing: 95
+ SubCell: 1
+ BeachPatrol1: waypoint
+ Owner: Neutral
+ Location: 68,59
+ BeachPatrol2: waypoint
+ Owner: Neutral
+ Location: 75,54
+ BeachPatrol3: waypoint
+ Location: 77,58
+ Owner: Neutral
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
\ No newline at end of file
diff --git a/mods/ura/maps/allies-06b/rules.yaml b/mods/ura/maps/allies-06b/rules.yaml
new file mode 100644
index 0000000..80a6d56
--- /dev/null
+++ b/mods/ura/maps/allies-06b/rules.yaml
@@ -0,0 +1,93 @@
+Player:
+ PlayerResources:
+ DefaultCash: 5000
+
+World:
+ LuaScript:
+ Scripts: allies06b.lua, allies06b-AI.lua
+ MissionData:
+ BriefingVideo: ally6.vqa
+ WinVideo: allymorf.vqa
+ LossVideo: overrun.vqa
+ StartVideo: mcv.vqa
+ Briefing: Priority one is to establish a base and get your spy into one of the Soviet Tech Centers in the base across the gulf.\nData on the Iron Curtain is in there and we need it.\n\nOnce you get the data complete your mission...\nWipe out everything.
+ MapOptions:
+ TechLevel: medium
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ hard: Hard
+ Default: easy
+
+powerproxy.paratroopers:
+ ParatroopersPower:
+ DropItems: E1,E1,E1,E4,E4
+
+3TNK:
+ Buildable:
+ Prerequisites: ~vehicles.soviet
+
+ARTY:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+TRUK:
+ Buildable:
+ Prerequisites: ~disabled
+
+TECH.CAM:
+ Inherits: CAMERA
+ RevealsShroud:
+ Range: 4c0
+ Type: CenterPosition
+
+STEK:
+ Targetable:
+ TargetTypes: Ground, Structure, C4, DetonateAttack, SpyInfiltrate
+
+APWR:
+ Buildable:
+ Prerequisites: ~disabled
+
+AFLD:
+ Buildable:
+ Prerequisites: ~disabled
+
+HPAD:
+ Buildable:
+ Prerequisites: ~disabled
+
+BRIK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MECH:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+DD:
+ Buildable:
+ Prerequisites: ~disabled
+
+CA:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSUB:
+ Buildable:
+ Prerequisites: ~disabled
+
+SS:
+ AutoTarget:
+ InitialStanceAI: AttackAnything
diff --git a/mods/ura/maps/asymmetric-battle.oramap b/mods/ura/maps/asymmetric-battle.oramap
new file mode 100644
index 0000000..389243b
Binary files /dev/null and b/mods/ura/maps/asymmetric-battle.oramap differ
diff --git a/mods/ura/maps/barracuda.oramap b/mods/ura/maps/barracuda.oramap
new file mode 100644
index 0000000..12d697a
Binary files /dev/null and b/mods/ura/maps/barracuda.oramap differ
diff --git a/mods/ura/maps/behind-the-veil.oramap b/mods/ura/maps/behind-the-veil.oramap
new file mode 100644
index 0000000..8af7d75
Binary files /dev/null and b/mods/ura/maps/behind-the-veil.oramap differ
diff --git a/mods/ura/maps/bombardment-islands.oramap b/mods/ura/maps/bombardment-islands.oramap
new file mode 100644
index 0000000..9cd3818
Binary files /dev/null and b/mods/ura/maps/bombardment-islands.oramap differ
diff --git a/mods/ura/maps/bomber-john/brick.shp b/mods/ura/maps/bomber-john/brick.shp
new file mode 100644
index 0000000..9f90058
Binary files /dev/null and b/mods/ura/maps/bomber-john/brick.shp differ
diff --git a/mods/ura/maps/bomber-john/map.bin b/mods/ura/maps/bomber-john/map.bin
new file mode 100644
index 0000000..52a01cc
Binary files /dev/null and b/mods/ura/maps/bomber-john/map.bin differ
diff --git a/mods/ura/maps/bomber-john/map.png b/mods/ura/maps/bomber-john/map.png
new file mode 100644
index 0000000..c01122c
Binary files /dev/null and b/mods/ura/maps/bomber-john/map.png differ
diff --git a/mods/ura/maps/bomber-john/map.yaml b/mods/ura/maps/bomber-john/map.yaml
new file mode 100644
index 0000000..fd882bd
--- /dev/null
+++ b/mods/ura/maps/bomber-john/map.yaml
@@ -0,0 +1,757 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Bomber John
+
+Author: Holloweye
+
+Tileset: TEMPERAT
+
+MapSize: 56,56
+
+Bounds: 16,16,24,24
+
+Visibility: Lobby
+
+Categories: Minigame
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Faction: allies
+ Enemies: Multi0, Multi1, Multi2, Multi3, Multi4, Multi5, Multi6, Multi7
+ PlayerReference@Multi0:
+ Name: Multi0
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ Enemies: Creeps
+ PlayerReference@Multi1:
+ Name: Multi1
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ Enemies: Creeps
+ PlayerReference@Multi2:
+ Name: Multi2
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ Enemies: Creeps
+ PlayerReference@Multi3:
+ Name: Multi3
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ Enemies: Creeps
+ PlayerReference@Multi4:
+ Name: Multi4
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ Enemies: Creeps
+ PlayerReference@Multi5:
+ Name: Multi5
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ Enemies: Creeps
+ PlayerReference@Multi6:
+ Name: Multi6
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ Enemies: Creeps
+ PlayerReference@Multi7:
+ Name: Multi7
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ Enemies: Creeps
+
+Actors:
+ Actor69: ftur
+ Location: 39,16
+ Owner: Creeps
+ Actor1: T17
+ Location: 16,17
+ Owner: Neutral
+ Actor2: T17
+ Location: 16,18
+ Owner: Neutral
+ Actor3: T17
+ Location: 16,19
+ Owner: Neutral
+ Actor4: T17
+ Location: 16,20
+ Owner: Neutral
+ Actor5: T17
+ Location: 16,21
+ Owner: Neutral
+ Actor6: T17
+ Location: 16,22
+ Owner: Neutral
+ Actor7: T17
+ Location: 16,23
+ Owner: Neutral
+ Actor8: T17
+ Location: 16,24
+ Owner: Neutral
+ Actor9: T17
+ Location: 16,25
+ Owner: Neutral
+ Actor10: T17
+ Location: 16,26
+ Owner: Neutral
+ Actor11: T17
+ Location: 16,27
+ Owner: Neutral
+ Actor12: T17
+ Location: 16,28
+ Owner: Neutral
+ Actor13: T17
+ Location: 16,29
+ Owner: Neutral
+ Actor14: T17
+ Location: 16,30
+ Owner: Neutral
+ Actor15: T17
+ Location: 16,31
+ Owner: Neutral
+ Actor16: T17
+ Location: 16,32
+ Owner: Neutral
+ Actor17: T17
+ Location: 16,33
+ Owner: Neutral
+ Actor18: T17
+ Location: 16,34
+ Owner: Neutral
+ Actor19: T17
+ Location: 16,35
+ Owner: Neutral
+ Actor20: T17
+ Location: 16,36
+ Owner: Neutral
+ Actor21: T17
+ Location: 16,37
+ Owner: Neutral
+ Actor22: T17
+ Location: 16,38
+ Owner: Neutral
+ Actor46: ftur
+ Location: 39,39
+ Owner: Creeps
+ Actor24: T17
+ Location: 17,39
+ Owner: Neutral
+ Actor25: T17
+ Location: 18,39
+ Owner: Neutral
+ Actor26: T17
+ Location: 19,39
+ Owner: Neutral
+ Actor27: T17
+ Location: 20,39
+ Owner: Neutral
+ Actor28: T17
+ Location: 21,39
+ Owner: Neutral
+ Actor29: T17
+ Location: 22,39
+ Owner: Neutral
+ Actor30: T17
+ Location: 23,39
+ Owner: Neutral
+ Actor31: T17
+ Location: 24,39
+ Owner: Neutral
+ Actor32: T17
+ Location: 25,39
+ Owner: Neutral
+ Actor33: T17
+ Location: 26,39
+ Owner: Neutral
+ Actor34: T17
+ Location: 27,39
+ Owner: Neutral
+ Actor35: T17
+ Location: 28,39
+ Owner: Neutral
+ Actor36: T17
+ Location: 29,39
+ Owner: Neutral
+ Actor37: T17
+ Location: 30,39
+ Owner: Neutral
+ Actor38: T17
+ Location: 31,39
+ Owner: Neutral
+ Actor39: T17
+ Location: 32,39
+ Owner: Neutral
+ Actor40: T17
+ Location: 33,39
+ Owner: Neutral
+ Actor41: T17
+ Location: 34,39
+ Owner: Neutral
+ Actor42: T17
+ Location: 35,39
+ Owner: Neutral
+ Actor43: T17
+ Location: 36,39
+ Owner: Neutral
+ Actor44: T17
+ Location: 37,39
+ Owner: Neutral
+ Actor45: T17
+ Location: 38,39
+ Owner: Neutral
+ Actor23: ftur
+ Location: 16,39
+ Owner: Creeps
+ Actor47: T17
+ Location: 39,38
+ Owner: Neutral
+ Actor48: T17
+ Location: 39,37
+ Owner: Neutral
+ Actor49: T17
+ Location: 39,36
+ Owner: Neutral
+ Actor50: T17
+ Location: 39,35
+ Owner: Neutral
+ Actor51: T17
+ Location: 39,34
+ Owner: Neutral
+ Actor52: T17
+ Location: 39,33
+ Owner: Neutral
+ Actor53: T17
+ Location: 39,32
+ Owner: Neutral
+ Actor54: T17
+ Location: 39,31
+ Owner: Neutral
+ Actor55: T17
+ Location: 39,30
+ Owner: Neutral
+ Actor56: T17
+ Location: 39,29
+ Owner: Neutral
+ Actor57: T17
+ Location: 39,28
+ Owner: Neutral
+ Actor58: T17
+ Location: 39,27
+ Owner: Neutral
+ Actor59: T17
+ Location: 39,26
+ Owner: Neutral
+ Actor60: T17
+ Location: 39,25
+ Owner: Neutral
+ Actor61: T17
+ Location: 39,24
+ Owner: Neutral
+ Actor62: T17
+ Location: 39,23
+ Owner: Neutral
+ Actor63: T17
+ Location: 39,22
+ Owner: Neutral
+ Actor64: T17
+ Location: 39,21
+ Owner: Neutral
+ Actor65: T17
+ Location: 39,20
+ Owner: Neutral
+ Actor66: T17
+ Location: 39,19
+ Owner: Neutral
+ Actor67: T17
+ Location: 39,18
+ Owner: Neutral
+ Actor68: T17
+ Location: 39,17
+ Owner: Neutral
+ Actor0: ftur
+ Location: 16,16
+ Owner: Creeps
+ Actor70: T17
+ Location: 38,16
+ Owner: Neutral
+ Actor71: T17
+ Location: 37,16
+ Owner: Neutral
+ Actor72: T17
+ Location: 36,16
+ Owner: Neutral
+ Actor73: T17
+ Location: 35,16
+ Owner: Neutral
+ Actor74: T17
+ Location: 34,16
+ Owner: Neutral
+ Actor75: T17
+ Location: 33,16
+ Owner: Neutral
+ Actor76: T17
+ Location: 32,16
+ Owner: Neutral
+ Actor77: T17
+ Location: 31,16
+ Owner: Neutral
+ Actor78: T17
+ Location: 30,16
+ Owner: Neutral
+ Actor79: T17
+ Location: 29,16
+ Owner: Neutral
+ Actor80: T17
+ Location: 28,16
+ Owner: Neutral
+ Actor81: T17
+ Location: 27,16
+ Owner: Neutral
+ Actor82: T17
+ Location: 26,16
+ Owner: Neutral
+ Actor83: T17
+ Location: 25,16
+ Owner: Neutral
+ Actor84: T17
+ Location: 24,16
+ Owner: Neutral
+ Actor85: T17
+ Location: 23,16
+ Owner: Neutral
+ Actor86: T17
+ Location: 22,16
+ Owner: Neutral
+ Actor87: T17
+ Location: 21,16
+ Owner: Neutral
+ Actor88: T17
+ Location: 20,16
+ Owner: Neutral
+ Actor89: T17
+ Location: 19,16
+ Owner: Neutral
+ Actor90: T17
+ Location: 18,16
+ Owner: Neutral
+ Actor91: T17
+ Location: 17,16
+ Owner: Neutral
+ Actor92: T17
+ Location: 18,18
+ Owner: Neutral
+ Actor93: T17
+ Location: 18,20
+ Owner: Neutral
+ Actor94: T17
+ Location: 18,22
+ Owner: Neutral
+ Actor95: T17
+ Location: 18,24
+ Owner: Neutral
+ Actor96: T17
+ Location: 18,26
+ Owner: Neutral
+ Actor97: T17
+ Location: 18,28
+ Owner: Neutral
+ Actor98: T17
+ Location: 18,30
+ Owner: Neutral
+ Actor99: T17
+ Location: 18,32
+ Owner: Neutral
+ Actor100: T17
+ Location: 18,34
+ Owner: Neutral
+ Actor101: T17
+ Location: 18,36
+ Owner: Neutral
+ Actor102: T17
+ Location: 18,38
+ Owner: Neutral
+ Actor103: T17
+ Location: 20,37
+ Owner: Neutral
+ Actor104: T17
+ Location: 20,35
+ Owner: Neutral
+ Actor105: T17
+ Location: 20,33
+ Owner: Neutral
+ Actor106: T17
+ Location: 20,31
+ Owner: Neutral
+ Actor107: T17
+ Location: 20,29
+ Owner: Neutral
+ Actor108: T17
+ Location: 20,27
+ Owner: Neutral
+ Actor109: T17
+ Location: 20,25
+ Owner: Neutral
+ Actor110: T17
+ Location: 20,23
+ Owner: Neutral
+ Actor111: T17
+ Location: 20,21
+ Owner: Neutral
+ Actor112: T17
+ Location: 20,19
+ Owner: Neutral
+ Actor113: T17
+ Location: 20,17
+ Owner: Neutral
+ Actor114: T17
+ Location: 22,18
+ Owner: Neutral
+ Actor115: T17
+ Location: 22,20
+ Owner: Neutral
+ Actor116: T17
+ Location: 22,22
+ Owner: Neutral
+ Actor117: T17
+ Location: 22,24
+ Owner: Neutral
+ Actor118: T17
+ Location: 22,26
+ Owner: Neutral
+ Actor119: T17
+ Location: 22,28
+ Owner: Neutral
+ Actor120: T17
+ Location: 22,30
+ Owner: Neutral
+ Actor121: T17
+ Location: 22,32
+ Owner: Neutral
+ Actor122: T17
+ Location: 22,34
+ Owner: Neutral
+ Actor123: T17
+ Location: 22,36
+ Owner: Neutral
+ Actor124: T17
+ Location: 22,38
+ Owner: Neutral
+ Actor125: T17
+ Location: 24,37
+ Owner: Neutral
+ Actor126: T17
+ Location: 24,35
+ Owner: Neutral
+ Actor127: T17
+ Location: 24,33
+ Owner: Neutral
+ Actor128: T17
+ Location: 24,31
+ Owner: Neutral
+ Actor129: T17
+ Location: 24,29
+ Owner: Neutral
+ Actor130: T17
+ Location: 24,27
+ Owner: Neutral
+ Actor131: T17
+ Location: 24,25
+ Owner: Neutral
+ Actor132: T17
+ Location: 24,23
+ Owner: Neutral
+ Actor133: T17
+ Location: 24,21
+ Owner: Neutral
+ Actor134: T17
+ Location: 24,19
+ Owner: Neutral
+ Actor135: T17
+ Location: 24,17
+ Owner: Neutral
+ Actor136: T17
+ Location: 26,18
+ Owner: Neutral
+ Actor137: T17
+ Location: 26,20
+ Owner: Neutral
+ Actor138: T17
+ Location: 26,22
+ Owner: Neutral
+ Actor139: T17
+ Location: 26,24
+ Owner: Neutral
+ Actor162: mpspawn
+ Location: 36,26
+ Owner: Neutral
+ Actor153: mpspawn
+ Location: 36,36
+ Owner: Neutral
+ Actor142: T17
+ Location: 26,30
+ Owner: Neutral
+ Actor143: T17
+ Location: 26,32
+ Owner: Neutral
+ Actor144: T17
+ Location: 26,34
+ Owner: Neutral
+ Actor145: T17
+ Location: 26,36
+ Owner: Neutral
+ Actor146: T17
+ Location: 26,38
+ Owner: Neutral
+ Actor147: T17
+ Location: 28,37
+ Owner: Neutral
+ Actor148: T17
+ Location: 28,35
+ Owner: Neutral
+ Actor149: T17
+ Location: 28,33
+ Owner: Neutral
+ Actor150: T17
+ Location: 28,31
+ Owner: Neutral
+ Actor152: mpspawn
+ Location: 28,36
+ Owner: Neutral
+ Actor163: mpspawn
+ Location: 36,18
+ Owner: Neutral
+ Actor141: mpspawn
+ Location: 19,27
+ Owner: Neutral
+ Actor154: T17
+ Location: 28,23
+ Owner: Neutral
+ Actor155: T17
+ Location: 28,21
+ Owner: Neutral
+ Actor156: T17
+ Location: 28,19
+ Owner: Neutral
+ Actor157: T17
+ Location: 28,17
+ Owner: Neutral
+ Actor158: T17
+ Location: 30,18
+ Owner: Neutral
+ Actor159: T17
+ Location: 30,20
+ Owner: Neutral
+ Actor160: T17
+ Location: 30,22
+ Owner: Neutral
+ Actor161: T17
+ Location: 30,24
+ Owner: Neutral
+ Actor140: mpspawn
+ Location: 19,19
+ Owner: Neutral
+ Actor151: mpspawn
+ Location: 19,36
+ Owner: Neutral
+ Actor164: T17
+ Location: 30,30
+ Owner: Neutral
+ Actor165: T17
+ Location: 30,32
+ Owner: Neutral
+ Actor166: T17
+ Location: 30,34
+ Owner: Neutral
+ Actor167: T17
+ Location: 30,36
+ Owner: Neutral
+ Actor168: T17
+ Location: 30,38
+ Owner: Neutral
+ Actor169: T17
+ Location: 32,37
+ Owner: Neutral
+ Actor170: T17
+ Location: 32,35
+ Owner: Neutral
+ Actor171: T17
+ Location: 32,33
+ Owner: Neutral
+ Actor172: T17
+ Location: 32,31
+ Owner: Neutral
+ Actor173: T17
+ Location: 32,29
+ Owner: Neutral
+ Actor174: T17
+ Location: 32,27
+ Owner: Neutral
+ Actor175: T17
+ Location: 32,25
+ Owner: Neutral
+ Actor176: T17
+ Location: 32,23
+ Owner: Neutral
+ Actor177: T17
+ Location: 32,21
+ Owner: Neutral
+ Actor178: T17
+ Location: 32,19
+ Owner: Neutral
+ Actor179: T17
+ Location: 32,17
+ Owner: Neutral
+ Actor180: T17
+ Location: 34,18
+ Owner: Neutral
+ Actor181: T17
+ Location: 34,20
+ Owner: Neutral
+ Actor182: T17
+ Location: 34,22
+ Owner: Neutral
+ Actor183: T17
+ Location: 34,24
+ Owner: Neutral
+ Actor184: T17
+ Location: 34,26
+ Owner: Neutral
+ Actor185: T17
+ Location: 34,28
+ Owner: Neutral
+ Actor186: T17
+ Location: 34,30
+ Owner: Neutral
+ Actor187: T17
+ Location: 34,32
+ Owner: Neutral
+ Actor188: T17
+ Location: 34,34
+ Owner: Neutral
+ Actor189: T17
+ Location: 34,36
+ Owner: Neutral
+ Actor190: T17
+ Location: 34,38
+ Owner: Neutral
+ Actor191: T17
+ Location: 36,37
+ Owner: Neutral
+ Actor192: T17
+ Location: 36,35
+ Owner: Neutral
+ Actor193: T17
+ Location: 36,33
+ Owner: Neutral
+ Actor194: T17
+ Location: 36,31
+ Owner: Neutral
+ Actor195: T17
+ Location: 36,29
+ Owner: Neutral
+ Actor196: T17
+ Location: 36,27
+ Owner: Neutral
+ Actor197: T17
+ Location: 36,25
+ Owner: Neutral
+ Actor198: T17
+ Location: 36,23
+ Owner: Neutral
+ Actor199: T17
+ Location: 36,21
+ Owner: Neutral
+ Actor200: T17
+ Location: 36,19
+ Owner: Neutral
+ Actor201: T17
+ Location: 36,17
+ Owner: Neutral
+ Actor202: T17
+ Location: 38,18
+ Owner: Neutral
+ Actor203: T17
+ Location: 38,20
+ Owner: Multi0
+ Actor204: T17
+ Location: 38,22
+ Owner: Multi1
+ Actor205: T17
+ Location: 38,24
+ Owner: Multi2
+ Actor206: T17
+ Location: 38,26
+ Owner: Multi3
+ Actor207: T17
+ Location: 38,28
+ Owner: Multi4
+ Actor208: T17
+ Location: 38,30
+ Owner: Multi5
+ Actor209: T17
+ Location: 38,32
+ Owner: Multi6
+ Actor210: T17
+ Location: 38,34
+ Owner: Multi7
+ Actor211: T17
+ Location: 38,36
+ Owner: Neutral
+ Actor212: T17
+ Location: 38,38
+ Owner: Neutral
+ Actor213: mpspawn
+ Location: 28,18
+ Owner: Neutral
+ Actor214: mnlyr
+ Location: 19,20
+ Owner: Multi0
+ Actor215: mnlyr
+ Location: 19,28
+ Owner: Multi1
+ Actor216: mnlyr
+ Location: 20,36
+ Owner: Multi2
+ Actor217: mnlyr
+ Location: 29,36
+ Owner: Multi3
+ Actor218: mnlyr
+ Location: 37,35
+ Owner: Multi4
+ Actor219: mnlyr
+ Location: 37,25
+ Owner: Multi5
+ Actor220: mnlyr
+ Location: 34,18
+ Owner: Multi6
+ Actor221: mnlyr
+ Location: 27,18
+ Owner: Multi7
+
+Rules: rules.yaml
+
+Sequences: sequences.yaml
diff --git a/mods/ura/maps/bomber-john/miner.shp b/mods/ura/maps/bomber-john/miner.shp
new file mode 100644
index 0000000..6765b54
Binary files /dev/null and b/mods/ura/maps/bomber-john/miner.shp differ
diff --git a/mods/ura/maps/bomber-john/rules.yaml b/mods/ura/maps/bomber-john/rules.yaml
new file mode 100644
index 0000000..c04078b
--- /dev/null
+++ b/mods/ura/maps/bomber-john/rules.yaml
@@ -0,0 +1,172 @@
+World:
+ CrateSpawner:
+ CheckboxEnabled: False
+ CheckboxLocked: True
+ -SpawnMPUnits:
+ MapBuildRadius:
+ AllyBuildRadiusCheckboxLocked: True
+ AllyBuildRadiusCheckboxEnabled: False
+ BuildRadiusCheckboxLocked: True
+ BuildRadiusCheckboxEnabled: True
+ MapOptions:
+ TechLevelDropdownLocked: True
+ TechLevel: unrestricted
+
+APWR:
+ Buildable:
+ Prerequisites: ~disabled
+
+STEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+BARR:
+ Buildable:
+ Prerequisites: ~disabled
+
+FIX:
+ Buildable:
+ Prerequisites: ~disabled
+
+POWR:
+ Buildable:
+ Prerequisites: ~disabled
+
+AFLD:
+ Buildable:
+ Prerequisites: ~disabled
+
+PROC:
+ Buildable:
+ Prerequisites: ~disabled
+
+WEAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+DOME:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPEN:
+ Buildable:
+ Prerequisites: ~disabled
+
+SILO:
+ Buildable:
+ Prerequisites: ~disabled
+
+Player:
+ Shroud:
+ FogCheckboxLocked: True
+ FogCheckboxEnabled: True
+ ExploredMapCheckboxLocked: True
+ ExploredMapCheckboxEnabled: False
+ PlayerResources:
+ DefaultCashLocked: True
+ DefaultCash: 60
+ ChronoshiftPower:
+ Icon: chrono
+ ChargeInterval: 1500
+ Description: Chronoshift
+ LongDesc: Teleport a group of vehicles across\nthe map.
+ SelectTargetSound: slcttgt1.aud
+ BeginChargeSound: chrochr1.aud
+ EndChargeSound: chrordy1.aud
+ KillCargo: yes
+ Range: 3
+ GrantExternalConditionPower@IRONCURTAIN:
+ Icon: invuln
+ ChargeInterval: 750
+ Description: Invulnerability
+ LongDesc: Makes a unit invulnerable\nfor 3 seconds.
+ Duration: 75
+ SelectTargetSound: slcttgt1.aud
+ BeginChargeSound: ironchg1.aud
+ EndChargeSound: ironrdy1.aud
+ Range: 1
+ Condition: invulnerability
+ Sequence: idle
+ OnFireSound: ironcur9.aud
+ Production:
+ Produces: Building
+ LobbyPrerequisiteCheckbox@GLOBALBOUNTY:
+ Enabled: True
+ Locked: True
+
+MNLYR:
+ Inherits: ^TrackedVehicle
+ Valued:
+ Cost: 800
+ Tooltip:
+ Name: Bomber
+ Health:
+ HP: 500
+ Armor:
+ Type: Heavy
+ Mobile:
+ Speed: 128
+ WaitAverage: 1
+ WaitSpread: 1
+ TurnSpeed: 900
+ RevealsShroud:
+ Range: 40c0
+ MustBeDestroyed:
+ RequiredForShortGame: true
+ Transforms:
+ IntoActor: ftur
+ Offset: 0,0
+ Facing: 96
+ CashTrickler:
+ Interval: 150
+ Amount: 20
+ RenderSprites:
+ Image: MNLY
+ Chronoshiftable:
+ ReturnToOrigin: false
+ HitShape:
+
+FTUR:
+ Health:
+ HP: 1000
+ Transforms:
+ IntoActor: mnlyr
+ Offset: 0,0
+ Facing: 96
+ MustBeDestroyed:
+ RequiredForShortGame: true
+ CashTrickler:
+ Interval: 150
+ Amount: 30
+ -Power:
+
+MINVV:
+ Inherits: ^SpriteActor
+ HiddenUnderFog:
+ Building:
+ TerrainTypes: Clear,Road
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 10
+ Description: Bomb which explodes after 8 seconds
+ Valued:
+ Cost: 30
+ Health:
+ HP: 200
+ RenderSprites:
+ Image: miner
+ WithSpriteBody:
+ Tooltip:
+ Name: Bomb
+ SelfHealing:
+ Step: -1
+ Delay: 1
+ HealIfBelow: 101
+ Explodes:
+ Weapon: CrateNuke
+ EmptyWeapon: CrateNuke
+ HitShape:
+ Interactable:
+
+T17:
+ -Health:
diff --git a/mods/ura/maps/bomber-john/sequences.yaml b/mods/ura/maps/bomber-john/sequences.yaml
new file mode 100644
index 0000000..8163088
--- /dev/null
+++ b/mods/ura/maps/bomber-john/sequences.yaml
@@ -0,0 +1,9 @@
+miner:
+ idle:
+ Length: *
+ Tick: 400
+ ZOffset: -512
+ icon: jmin
+
+brick:
+ idle:
diff --git a/mods/ura/maps/caffeinated.oramap b/mods/ura/maps/caffeinated.oramap
new file mode 100644
index 0000000..5122ce3
Binary files /dev/null and b/mods/ura/maps/caffeinated.oramap differ
diff --git a/mods/ura/maps/center-of-attention-redux-2/map.bin b/mods/ura/maps/center-of-attention-redux-2/map.bin
new file mode 100644
index 0000000..d650ef3
Binary files /dev/null and b/mods/ura/maps/center-of-attention-redux-2/map.bin differ
diff --git a/mods/ura/maps/center-of-attention-redux-2/map.png b/mods/ura/maps/center-of-attention-redux-2/map.png
new file mode 100644
index 0000000..778a7fa
Binary files /dev/null and b/mods/ura/maps/center-of-attention-redux-2/map.png differ
diff --git a/mods/ura/maps/center-of-attention-redux-2/map.yaml b/mods/ura/maps/center-of-attention-redux-2/map.yaml
new file mode 100644
index 0000000..58cb4da
--- /dev/null
+++ b/mods/ura/maps/center-of-attention-redux-2/map.yaml
@@ -0,0 +1,1180 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Center of Attention Redux 2
+
+Author: Buddha
+
+Tileset: TEMPERAT
+
+MapSize: 128,128
+
+Bounds: 15,10,105,114
+
+Visibility: Lobby
+
+Categories: Conquest
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Faction: allies
+ Enemies: Multi0, Multi1, Multi2, Multi3, Multi4, Multi5, Multi6, Multi7
+ PlayerReference@Multi0:
+ Name: Multi0
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi1:
+ Name: Multi1
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi2:
+ Name: Multi2
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi3:
+ Name: Multi3
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi4:
+ Name: Multi4
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi5:
+ Name: Multi5
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi6:
+ Name: Multi6
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi7:
+ Name: Multi7
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+
+Actors:
+ Actor101: oilb.strong
+ Location: 69,68
+ Owner: Neutral
+ Actor391: mine
+ Owner: Neutral
+ Location: 71,61
+ Actor93: oilb.strong
+ Location: 69,63
+ Owner: Neutral
+ Actor47: tc05
+ Location: 67,71
+ Owner: Neutral
+ Actor380: mine
+ Owner: Neutral
+ Location: 59,18
+ Actor379: mine
+ Owner: Neutral
+ Location: 72,20
+ Actor382: mine
+ Owner: Neutral
+ Location: 25,19
+ Actor381: mine
+ Owner: Neutral
+ Location: 21,25
+ Actor375: mine
+ Owner: Neutral
+ Location: 116,69
+ Actor376: mine
+ Owner: Neutral
+ Location: 117,61
+ Actor388: mine
+ Owner: Neutral
+ Location: 79,96
+ Actor387: mine
+ Owner: Neutral
+ Location: 78,101
+ Actor390: mine
+ Owner: Neutral
+ Location: 107,96
+ Actor389: mine
+ Owner: Neutral
+ Location: 112,90
+ Actor377: mine
+ Owner: Neutral
+ Location: 112,24
+ Actor378: mine
+ Owner: Neutral
+ Location: 108,22
+ Actor16: tc05
+ Location: 109,42
+ Owner: Neutral
+ Actor17: tc05
+ Location: 105,89
+ Owner: Neutral
+ Actor18: tc04
+ Location: 93,99
+ Owner: Neutral
+ Actor19: tc05
+ Location: 68,99
+ Owner: Neutral
+ Actor20: tc04
+ Location: 19,62
+ Owner: Neutral
+ Actor21: tc05
+ Location: 38,44
+ Owner: Neutral
+ Actor26: tc05
+ Location: 77,18
+ Owner: Neutral
+ Actor23: tc04
+ Location: 108,41
+ Owner: Neutral
+ Actor24: tc03
+ Location: 93,98
+ Owner: Neutral
+ Actor25: tc03
+ Location: 20,61
+ Owner: Neutral
+ Actor22: tc05
+ Location: 72,8
+ Owner: Neutral
+ Actor370: t06
+ Owner: Neutral
+ Location: 108,87
+ Actor29: tc02
+ Location: 86,60
+ Owner: Neutral
+ Actor30: tc02
+ Location: 111,77
+ Owner: Neutral
+ Actor31: tc02
+ Location: 86,95
+ Owner: Neutral
+ Actor32: tc04
+ Location: 72,92
+ Owner: Neutral
+ Actor33: tc02
+ Location: 74,93
+ Owner: Neutral
+ Actor34: t17
+ Location: 73,93
+ Owner: Neutral
+ Actor124: t02
+ Location: 84,106
+ Owner: Neutral
+ Actor36: tc04
+ Location: 96,104
+ Owner: Neutral
+ Actor37: tc03
+ Location: 66,100
+ Owner: Neutral
+ Actor38: tc04
+ Location: 45,107
+ Owner: Neutral
+ Actor39: tc03
+ Location: 46,109
+ Owner: Neutral
+ Actor42: tc05
+ Location: 45,59
+ Owner: Neutral
+ Actor43: tc05
+ Location: 86,61
+ Owner: Neutral
+ Actor44: tc03
+ Location: 81,56
+ Owner: Neutral
+ Actor394: mine
+ Owner: Neutral
+ Location: 56,60
+ Actor97: t03
+ Location: 88,64
+ Owner: Neutral
+ Actor49: tc01
+ Location: 72,37
+ Owner: Neutral
+ Actor51: tc01
+ Location: 30,38
+ Owner: Neutral
+ Actor52: tc02
+ Location: 31,39
+ Owner: Neutral
+ Actor53: tc04
+ Location: 19,34
+ Owner: Neutral
+ Actor54: tc03
+ Location: 20,36
+ Owner: Neutral
+ Actor55: t15
+ Location: 35,22
+ Owner: Neutral
+ Actor56: t14
+ Location: 47,45
+ Owner: Neutral
+ Actor95: t06
+ Location: 85,64
+ Owner: Neutral
+ Actor58: t12
+ Location: 56,97
+ Owner: Neutral
+ Actor273: tc01
+ Owner: Creeps
+ Location: 24,118
+ Actor384: mine
+ Owner: Neutral
+ Location: 32,66
+ Actor383: mine
+ Owner: Neutral
+ Location: 36,68
+ Actor385: mine
+ Owner: Neutral
+ Location: 39,95
+ Actor386: mine
+ Owner: Neutral
+ Location: 35,90
+ Actor63: tc04
+ Location: 15,23
+ Owner: Neutral
+ Actor64: t11
+ Location: 20,81
+ Owner: Neutral
+ Actor66: t16
+ Location: 21,84
+ Owner: Neutral
+ Actor65: t11
+ Location: 21,82
+ Owner: Neutral
+ Actor67: tc04
+ Location: 20,93
+ Owner: Neutral
+ Actor69: oilb.weak
+ Location: 63,40
+ Owner: Neutral
+ Actor70: oilb.weak
+ Location: 89,44
+ Owner: Neutral
+ Actor71: t08
+ Location: 63,44
+ Owner: Neutral
+ Actor72: t10
+ Location: 61,43
+ Owner: Neutral
+ Actor73: t11
+ Location: 94,32
+ Owner: Neutral
+ Actor74: tc03
+ Location: 109,57
+ Owner: Neutral
+ Actor75: tc02
+ Location: 108,59
+ Owner: Neutral
+ Actor76: tc01
+ Location: 65,91
+ Owner: Neutral
+ Actor77: t13
+ Location: 51,93
+ Owner: Neutral
+ Actor78: t08
+ Location: 55,102
+ Owner: Neutral
+ Actor8: oilb.weak
+ Location: 39,78
+ Owner: Neutral
+ Actor82: t11
+ Location: 93,75
+ Owner: Neutral
+ Actor369: t11
+ Owner: Neutral
+ Location: 83,49
+ Actor28: tc04
+ Location: 84,80
+ Owner: Neutral
+ Actor48: t16
+ Location: 84,70
+ Owner: Neutral
+ Actor90: t11
+ Location: 104,76
+ Owner: Neutral
+ Actor92: t14
+ Location: 95,88
+ Owner: Neutral
+ Actor57: t16
+ Location: 87,72
+ Owner: Neutral
+ Actor395: mine
+ Owner: Neutral
+ Location: 59,66
+ Actor85: oilb.strong
+ Location: 64,63
+ Owner: Neutral
+ Actor96: t06
+ Location: 83,63
+ Owner: Neutral
+ Actor94: oilb.strong
+ Location: 64,68
+ Owner: Neutral
+ Actor392: mine
+ Owner: Neutral
+ Location: 77,63
+ Actor99: tc01
+ Location: 89,77
+ Owner: Neutral
+ Actor100: t10
+ Location: 86,73
+ Owner: Neutral
+ Actor84: t06
+ Location: 81,80
+ Owner: Neutral
+ Actor393: mine
+ Owner: Neutral
+ Location: 81,71
+ Actor396: mine
+ Owner: Neutral
+ Location: 57,75
+ Actor104: tc02
+ Location: 54,27
+ Owner: Neutral
+ Actor35: t05
+ Location: 88,108
+ Owner: Neutral
+ Actor27: tc05
+ Location: 27,115
+ Owner: Neutral
+ Actor50: tc04
+ Location: 30,116
+ Owner: Neutral
+ Actor106: tc02
+ Location: 25,115
+ Owner: Neutral
+ Actor107: t10
+ Location: 24,114
+ Owner: Neutral
+ Actor108: t10
+ Location: 32,117
+ Owner: Neutral
+ Actor109: tc05
+ Location: 32,118
+ Owner: Neutral
+ Actor110: tc04
+ Location: 25,117
+ Owner: Neutral
+ Actor111: tc04
+ Location: 29,118
+ Owner: Neutral
+ Actor112: t15
+ Location: 42,117
+ Owner: Neutral
+ Actor113: t17
+ Location: 44,117
+ Owner: Neutral
+ Actor303: t05
+ Owner: Neutral
+ Location: 39,123
+ Actor40: tc05
+ Location: 16,19
+ Owner: Neutral
+ Actor116: tc04
+ Location: 40,113
+ Owner: Neutral
+ Actor117: tc05
+ Location: 108,118
+ Owner: Neutral
+ Actor118: tc04
+ Location: 112,118
+ Owner: Neutral
+ Actor119: tc04
+ Location: 115,117
+ Owner: Neutral
+ Actor120: tc04
+ Location: 113,115
+ Owner: Neutral
+ Actor121: tc04
+ Location: 72,119
+ Owner: Neutral
+ Actor122: tc05
+ Location: 60,120
+ Owner: Neutral
+ Actor123: t17
+ Location: 56,120
+ Owner: Neutral
+ Actor105: t02
+ Location: 89,106
+ Owner: Neutral
+ Actor125: t17
+ Location: 64,94
+ Owner: Neutral
+ Actor126: t17
+ Location: 63,95
+ Owner: Neutral
+ Actor127: t17
+ Location: 30,79
+ Owner: Neutral
+ Actor128: t17
+ Location: 36,48
+ Owner: Neutral
+ Actor129: t17
+ Location: 49,18
+ Owner: Neutral
+ Actor274: tc01
+ Owner: Creeps
+ Location: 42,114
+ Actor275: tc01
+ Owner: Creeps
+ Location: 22,116
+ Actor132: t17
+ Location: 29,16
+ Owner: Neutral
+ Actor133: t17
+ Location: 45,39
+ Owner: Neutral
+ Actor134: t17
+ Location: 98,56
+ Owner: Neutral
+ Actor135: tc05
+ Location: 96,54
+ Owner: Neutral
+ Actor136: t17
+ Location: 117,114
+ Owner: Neutral
+ Actor137: t17
+ Location: 114,112
+ Owner: Neutral
+ Actor138: tc05
+ Location: 20,18
+ Owner: Neutral
+ Actor139: t15
+ Location: 100,85
+ Owner: Neutral
+ Actor140: t03
+ Location: 105,86
+ Owner: Neutral
+ Actor141: t17
+ Location: 90,107
+ Owner: Neutral
+ Actor142: t16
+ Location: 90,104
+ Owner: Neutral
+ Actor143: t16
+ Location: 91,104
+ Owner: Neutral
+ Actor144: t16
+ Location: 91,103
+ Owner: Neutral
+ Actor145: t01
+ Location: 92,105
+ Owner: Neutral
+ Actor146: t08
+ Location: 88,106
+ Owner: Neutral
+ Actor147: t05
+ Location: 87,104
+ Owner: Neutral
+ Actor148: t05
+ Location: 89,101
+ Owner: Neutral
+ Actor149: t07
+ Location: 86,107
+ Owner: Neutral
+ Actor150: t05
+ Location: 86,109
+ Owner: Neutral
+ Actor151: tc04
+ Location: 83,110
+ Owner: Neutral
+ Actor152: t05
+ Location: 84,113
+ Owner: Neutral
+ Actor153: t05
+ Location: 86,112
+ Owner: Neutral
+ Actor154: t13
+ Location: 79,11
+ Owner: Neutral
+ Actor155: t03
+ Location: 80,10
+ Owner: Neutral
+ Actor156: t02
+ Location: 55,10
+ Owner: Neutral
+ Actor157: t08
+ Location: 56,11
+ Owner: Neutral
+ Actor158: t01
+ Location: 54,11
+ Owner: Neutral
+ Actor98: t10
+ Location: 72,51
+ Owner: Neutral
+ Actor102: t10
+ Location: 50,64
+ Owner: Neutral
+ Actor103: t01
+ Location: 49,65
+ Owner: Neutral
+ Actor115: t10
+ Location: 98,75
+ Owner: Neutral
+ Actor159: tc04
+ Location: 61,61
+ Owner: Neutral
+ Actor160: tc03
+ Location: 72,63
+ Owner: Neutral
+ Actor161: tc01
+ Location: 62,70
+ Owner: Neutral
+ Actor162: t14
+ Location: 61,66
+ Owner: Neutral
+ Actor163: t17
+ Location: 74,65
+ Owner: Neutral
+ Actor164: t14
+ Location: 73,66
+ Owner: Neutral
+ Actor173: arty
+ Location: 69,66
+ Owner: Creeps
+ Actor167: arty
+ Location: 65,66
+ Owner: Creeps
+ Actor178: agun
+ Location: 67,69
+ Owner: Creeps
+ Actor180: v2rl
+ Location: 73,65
+ Owner: Creeps
+ Actor179: arty
+ Location: 75,66
+ Owner: Creeps
+ Actor166: arty
+ Location: 67,67
+ Owner: Creeps
+ Actor165: arty
+ Location: 67,65
+ Owner: Creeps
+ Actor182: brl3
+ Location: 68,69
+ Owner: Neutral
+ Actor184: brl3
+ Location: 66,63
+ Owner: Neutral
+ Actor185: brl3
+ Location: 66,62
+ Owner: Neutral
+ Actor186: brl3
+ Location: 65,62
+ Owner: Neutral
+ Actor187: brl3
+ Location: 68,63
+ Owner: Neutral
+ Actor188: brl3
+ Location: 68,62
+ Owner: Neutral
+ Actor189: brl3
+ Location: 66,70
+ Owner: Neutral
+ Actor190: brl3
+ Location: 65,70
+ Owner: Neutral
+ Actor191: brl3
+ Location: 69,70
+ Owner: Neutral
+ Actor192: oilb.weak
+ Location: 68,95
+ Owner: Neutral
+ Actor193: oilb.weak
+ Location: 45,96
+ Owner: Neutral
+ Actor408: mpspawn
+ Owner: Neutral
+ Location: 31,29
+ Actor195: oilb.weak
+ Location: 103,87
+ Owner: Neutral
+ Actor196: oilb.weak
+ Location: 104,67
+ Owner: Neutral
+ Actor197: oilb.weak
+ Location: 45,44
+ Owner: Neutral
+ Actor215: cycl
+ Location: 89,42
+ Owner: Neutral
+ Actor214: cycl
+ Location: 88,42
+ Owner: Neutral
+ Actor218: cycl
+ Location: 92,42
+ Owner: Neutral
+ Actor219: cycl
+ Location: 94,40
+ Owner: Neutral
+ Actor220: cycl
+ Location: 95,40
+ Owner: Neutral
+ Actor221: cycl
+ Location: 95,41
+ Owner: Neutral
+ Actor222: cycl
+ Location: 93,42
+ Owner: Neutral
+ Actor223: cycl
+ Location: 95,42
+ Owner: Neutral
+ Actor224: cycl
+ Location: 95,43
+ Owner: Neutral
+ Actor213: cycl
+ Location: 88,41
+ Owner: Neutral
+ Actor212: cycl
+ Location: 88,40
+ Owner: Neutral
+ Actor211: cycl
+ Location: 88,39
+ Owner: Neutral
+ Actor210: cycl
+ Location: 88,38
+ Owner: Neutral
+ Actor209: cycl
+ Location: 88,37
+ Owner: Neutral
+ Actor208: cycl
+ Location: 89,37
+ Owner: Neutral
+ Actor207: cycl
+ Location: 90,39
+ Owner: Neutral
+ Actor204: cycl
+ Location: 91,40
+ Owner: Neutral
+ Actor203: cycl
+ Location: 92,40
+ Owner: Neutral
+ Actor202: cycl
+ Location: 90,37
+ Owner: Neutral
+ Actor201: cycl
+ Location: 91,37
+ Owner: Neutral
+ Actor198: cycl
+ Location: 93,37
+ Owner: Neutral
+ Actor199: cycl
+ Location: 93,40
+ Owner: Neutral
+ Actor200: cycl
+ Location: 92,37
+ Owner: Neutral
+ Actor216: cycl
+ Location: 90,42
+ Owner: Neutral
+ Actor217: cycl
+ Location: 91,42
+ Owner: Neutral
+ Actor205: cycl
+ Location: 92,38
+ Owner: Neutral
+ Actor206: cycl
+ Location: 90,40
+ Owner: Neutral
+ Actor169: jeep
+ Location: 70,62
+ Owner: Creeps
+ Actor168: jeep
+ Location: 71,64
+ Owner: Creeps
+ Actor170: jeep
+ Location: 62,69
+ Owner: Creeps
+ Actor171: jeep
+ Location: 64,70
+ Owner: Creeps
+ Actor172: jeep
+ Location: 64,61
+ Owner: Creeps
+ Actor175: jeep
+ Location: 62,60
+ Owner: Creeps
+ Actor181: v2rl
+ Location: 59,64
+ Owner: Creeps
+ Actor177: jeep
+ Location: 71,70
+ Owner: Creeps
+ Actor176: jeep
+ Location: 72,69
+ Owner: Creeps
+ Actor234: cycl
+ Location: 95,44
+ Owner: Neutral
+ Actor235: cycl
+ Location: 94,44
+ Owner: Neutral
+ Actor236: cycl
+ Location: 93,44
+ Owner: Neutral
+ Actor237: cycl
+ Location: 92,44
+ Owner: Neutral
+ Actor238: cycl
+ Location: 91,44
+ Owner: Neutral
+ Actor239: cycl
+ Location: 87,42
+ Owner: Neutral
+ Actor240: cycl
+ Location: 87,43
+ Owner: Neutral
+ Actor241: cycl
+ Location: 91,45
+ Owner: Neutral
+ Actor242: cycl
+ Location: 91,46
+ Owner: Neutral
+ Actor243: cycl
+ Location: 91,47
+ Owner: Neutral
+ Actor244: brl3
+ Location: 62,64
+ Owner: Neutral
+ Actor245: brl3
+ Location: 61,64
+ Owner: Neutral
+ Actor246: brl3
+ Location: 64,62
+ Owner: Neutral
+ Actor174: agun
+ Location: 67,61
+ Owner: Creeps
+ Actor248: brl3
+ Location: 71,63
+ Owner: Neutral
+ Actor249: brl3
+ Location: 70,71
+ Owner: Neutral
+ Actor250: brl3
+ Location: 71,71
+ Owner: Neutral
+ Actor251: brl3
+ Location: 66,71
+ Owner: Neutral
+ Actor252: truk
+ Location: 90,46
+ Owner: Neutral
+ Actor253: truk
+ Location: 89,46
+ Owner: Neutral
+ Actor254: truk
+ Location: 90,47
+ Owner: Neutral
+ Actor255: tc05
+ Location: 67,54
+ Owner: Neutral
+ Actor256: tc05
+ Location: 68,76
+ Owner: Neutral
+ Actor257: t06
+ Location: 68,78
+ Owner: Neutral
+ Actor258: t11
+ Location: 70,78
+ Owner: Neutral
+ Actor259: t17
+ Location: 69,79
+ Owner: Neutral
+ Actor260: tc04
+ Location: 70,79
+ Owner: Neutral
+ Actor261: t05
+ Location: 68,56
+ Owner: Neutral
+ Actor262: tc01
+ Location: 58,76
+ Owner: Neutral
+ Actor263: t06
+ Location: 57,63
+ Owner: Neutral
+ Actor264: t17
+ Location: 58,60
+ Owner: Neutral
+ Actor265: t11
+ Location: 56,61
+ Owner: Neutral
+ Actor266: t05
+ Location: 58,69
+ Owner: Neutral
+ Actor267: t06
+ Location: 80,67
+ Owner: Neutral
+ Actor268: t12
+ Location: 80,68
+ Owner: Neutral
+ Actor269: t02
+ Location: 79,66
+ Owner: Neutral
+ Actor270: tc03
+ Location: 72,77
+ Owner: Neutral
+ Actor183: gun
+ Location: 52,71
+ Owner: Creeps
+ Actor225: gun
+ Location: 84,69
+ Owner: Creeps
+ Actor226: gun
+ Location: 73,58
+ Owner: Creeps
+ Actor227: gun
+ Location: 68,74
+ Owner: Creeps
+ Actor228: t11
+ Location: 50,73
+ Owner: Neutral
+ Actor229: arty
+ Location: 67,74
+ Owner: Creeps
+ Actor230: arty
+ Location: 77,72
+ Owner: Creeps
+ Actor231: arty
+ Location: 67,60
+ Owner: Creeps
+ Actor233: apwr
+ Location: 121,91
+ Owner: Creeps
+ Actor232: apwr
+ Location: 121,96
+ Owner: Creeps
+ Actor276: tc01
+ Owner: Creeps
+ Location: 33,121
+ Actor277: tc02
+ Owner: Creeps
+ Location: 32,117
+ Actor278: t05
+ Owner: Creeps
+ Location: 33,122
+ Actor279: t05
+ Owner: Creeps
+ Location: 21,114
+ Actor280: t02
+ Owner: Creeps
+ Location: 30,120
+ Actor281: t02
+ Owner: Creeps
+ Location: 27,113
+ Actor282: t02
+ Owner: Creeps
+ Location: 39,122
+ Actor283: t02
+ Owner: Creeps
+ Location: 31,119
+ Actor284: tc01
+ Owner: Neutral
+ Location: 115,114
+ Actor285: tc01
+ Owner: Neutral
+ Location: 111,120
+ Actor286: tc02
+ Owner: Neutral
+ Location: 116,119
+ Actor287: tc02
+ Owner: Neutral
+ Location: 112,116
+ Actor288: t16
+ Owner: Neutral
+ Location: 109,121
+ Actor289: t16
+ Owner: Neutral
+ Location: 116,111
+ Actor290: t02
+ Owner: Neutral
+ Location: 118,116
+ Actor291: t02
+ Owner: Neutral
+ Location: 106,120
+ Actor292: t02
+ Owner: Neutral
+ Location: 117,110
+ Actor293: t01
+ Owner: Neutral
+ Location: 111,123
+ Actor294: t01
+ Owner: Neutral
+ Location: 119,110
+ Actor295: tc01
+ Owner: Neutral
+ Location: 82,112
+ Actor296: tc01
+ Owner: Neutral
+ Location: 42,123
+ Actor297: tc01
+ Owner: Neutral
+ Location: 21,113
+ Actor298: t16
+ Owner: Neutral
+ Location: 17,112
+ Actor299: t02
+ Owner: Neutral
+ Location: 20,112
+ Actor300: t02
+ Owner: Neutral
+ Location: 28,118
+ Actor301: t02
+ Owner: Neutral
+ Location: 32,123
+ Actor302: t02
+ Owner: Neutral
+ Location: 44,112
+ Actor304: t05
+ Owner: Neutral
+ Location: 19,111
+ Actor305: tc02
+ Owner: Neutral
+ Location: 17,105
+ Actor306: t11
+ Owner: Neutral
+ Location: 15,103
+ Actor307: t12
+ Owner: Neutral
+ Location: 28,122
+ Actor308: t12
+ Owner: Neutral
+ Location: 25,107
+ Actor309: t05
+ Owner: Neutral
+ Location: 50,105
+ Actor310: t05
+ Owner: Neutral
+ Location: 42,115
+ Actor311: t03
+ Owner: Neutral
+ Location: 49,119
+ Actor312: t10
+ Owner: Neutral
+ Location: 84,119
+ Actor313: t13
+ Owner: Neutral
+ Location: 119,103
+ Actor314: t02
+ Owner: Neutral
+ Location: 67,87
+ Actor315: t02
+ Owner: Neutral
+ Location: 18,62
+ Actor316: t05
+ Owner: Neutral
+ Location: 15,60
+ Actor317: t02
+ Owner: Neutral
+ Location: 31,45
+ Actor318: t02
+ Owner: Neutral
+ Location: 18,32
+ Actor319: t17
+ Owner: Neutral
+ Location: 21,46
+ Actor320: tc02
+ Owner: Neutral
+ Location: 17,21
+ Actor321: tc04
+ Owner: Neutral
+ Location: 14,25
+ Actor322: tc04
+ Owner: Neutral
+ Location: 16,15
+ Actor323: tc01
+ Owner: Neutral
+ Location: 18,14
+ Actor324: tc01
+ Owner: Neutral
+ Location: 21,12
+ Actor325: t16
+ Owner: Neutral
+ Location: 15,21
+ Actor326: t13
+ Owner: Neutral
+ Location: 18,17
+ Actor327: t02
+ Owner: Neutral
+ Location: 15,14
+ Actor328: t05
+ Owner: Neutral
+ Location: 22,11
+ Actor329: t02
+ Owner: Neutral
+ Location: 16,11
+ Actor330: t12
+ Owner: Neutral
+ Location: 19,11
+ Actor331: t05
+ Owner: Neutral
+ Location: 28,10
+ Actor332: tc04
+ Owner: Neutral
+ Location: 55,11
+ Actor333: t05
+ Owner: Neutral
+ Location: 57,10
+ Actor334: t05
+ Owner: Neutral
+ Location: 47,9
+ Actor335: t01
+ Owner: Neutral
+ Location: 65,9
+ Actor336: tc04
+ Owner: Neutral
+ Location: 114,16
+ Actor337: tc01
+ Owner: Neutral
+ Location: 109,14
+ Actor338: tc02
+ Owner: Neutral
+ Location: 107,14
+ Actor339: tc01
+ Owner: Neutral
+ Location: 117,13
+ Actor340: tc04
+ Owner: Neutral
+ Location: 102,11
+ Actor341: tc01
+ Owner: Neutral
+ Location: 104,11
+ Actor342: tc01
+ Owner: Neutral
+ Location: 119,26
+ Actor343: t02
+ Owner: Neutral
+ Location: 119,28
+ Actor344: t02
+ Owner: Neutral
+ Location: 119,12
+ Actor345: t02
+ Owner: Neutral
+ Location: 100,9
+ Actor347: t07
+ Owner: Neutral
+ Location: 119,14
+ Actor346: tc05
+ Owner: Neutral
+ Location: 118,10
+ Actor348: t17
+ Owner: Neutral
+ Location: 109,11
+ Actor349: t05
+ Owner: Neutral
+ Location: 110,13
+ Actor350: t08
+ Owner: Neutral
+ Location: 117,11
+ Actor351: t01
+ Owner: Neutral
+ Location: 100,12
+ Actor352: t01
+ Owner: Neutral
+ Location: 118,30
+ Actor353: t02
+ Owner: Neutral
+ Location: 118,25
+ Actor354: t02
+ Owner: Neutral
+ Location: 115,15
+ Actor355: t02
+ Owner: Neutral
+ Location: 115,9
+ Actor356: t05
+ Owner: Neutral
+ Location: 118,12
+ Actor357: t05
+ Owner: Neutral
+ Location: 101,10
+ Actor358: t02
+ Owner: Neutral
+ Location: 106,10
+ Actor359: t02
+ Owner: Neutral
+ Location: 106,10
+ Actor360: tc01
+ Owner: Neutral
+ Location: 114,39
+ Actor361: t05
+ Owner: Neutral
+ Location: 113,39
+ Actor362: t05
+ Owner: Neutral
+ Location: 106,42
+ Actor363: t02
+ Owner: Neutral
+ Location: 119,38
+ Actor364: tc04
+ Owner: Neutral
+ Location: 118,37
+ Actor365: tc01
+ Owner: Neutral
+ Location: 119,35
+ Actor366: t05
+ Owner: Neutral
+ Location: 119,29
+ Actor367: t13
+ Owner: Neutral
+ Location: 115,35
+ Actor368: t17
+ Owner: Neutral
+ Location: 118,42
+ Actor371: tc03
+ Owner: Neutral
+ Location: 15,122
+ Actor372: t08
+ Owner: Neutral
+ Location: 17,123
+ Actor373: v05
+ Owner: Neutral
+ Location: 18,118
+ Actor374: t15
+ Owner: Neutral
+ Location: 21,122
+ Actor397: mine
+ Owner: Neutral
+ Location: 16,50
+ Actor398: mine
+ Owner: Neutral
+ Location: 97,122
+ Actor399: mine
+ Owner: Neutral
+ Location: 85,11
+ Actor407: mpspawn
+ Owner: Neutral
+ Location: 70,27
+ Actor406: mpspawn
+ Owner: Neutral
+ Location: 97,27
+ Actor405: mpspawn
+ Owner: Neutral
+ Location: 110,51
+ Actor400: mpspawn
+ Owner: Neutral
+ Location: 20,73
+ Actor401: mpspawn
+ Owner: Neutral
+ Location: 31,102
+ Actor402: mpspawn
+ Owner: Neutral
+ Location: 64,109
+ Actor403: mpspawn
+ Owner: Neutral
+ Location: 108,107
+
+Rules: rules.yaml
diff --git a/mods/ura/maps/center-of-attention-redux-2/rules.yaml b/mods/ura/maps/center-of-attention-redux-2/rules.yaml
new file mode 100644
index 0000000..21b5101
--- /dev/null
+++ b/mods/ura/maps/center-of-attention-redux-2/rules.yaml
@@ -0,0 +1,13 @@
+OILB.Strong:
+ Inherits: OILB
+ Health:
+ HP: 6000
+ RenderSprites:
+ Image: OILB
+
+OILB.Weak:
+ Inherits: OILB
+ Health:
+ HP: 900
+ RenderSprites:
+ Image: OILB
diff --git a/mods/ura/maps/chaos-canyon.oramap b/mods/ura/maps/chaos-canyon.oramap
new file mode 100644
index 0000000..0d82aed
Binary files /dev/null and b/mods/ura/maps/chaos-canyon.oramap differ
diff --git a/mods/ura/maps/coastal-influence.oramap b/mods/ura/maps/coastal-influence.oramap
new file mode 100644
index 0000000..0d81db4
Binary files /dev/null and b/mods/ura/maps/coastal-influence.oramap differ
diff --git a/mods/ura/maps/cold-front.oramap b/mods/ura/maps/cold-front.oramap
new file mode 100644
index 0000000..1011a5e
Binary files /dev/null and b/mods/ura/maps/cold-front.oramap differ
diff --git a/mods/ura/maps/countercross.oramap b/mods/ura/maps/countercross.oramap
new file mode 100644
index 0000000..1931b2b
Binary files /dev/null and b/mods/ura/maps/countercross.oramap differ
diff --git a/mods/ura/maps/crossfire.oramap b/mods/ura/maps/crossfire.oramap
new file mode 100644
index 0000000..d5a49f6
Binary files /dev/null and b/mods/ura/maps/crossfire.oramap differ
diff --git a/mods/ura/maps/decrepit-isles.oramap b/mods/ura/maps/decrepit-isles.oramap
new file mode 100644
index 0000000..5c30100
Binary files /dev/null and b/mods/ura/maps/decrepit-isles.oramap differ
diff --git a/mods/ura/maps/desert-rats/map.bin b/mods/ura/maps/desert-rats/map.bin
new file mode 100644
index 0000000..fb54ac3
Binary files /dev/null and b/mods/ura/maps/desert-rats/map.bin differ
diff --git a/mods/ura/maps/desert-rats/map.png b/mods/ura/maps/desert-rats/map.png
new file mode 100644
index 0000000..09248fe
Binary files /dev/null and b/mods/ura/maps/desert-rats/map.png differ
diff --git a/mods/ura/maps/desert-rats/map.yaml b/mods/ura/maps/desert-rats/map.yaml
new file mode 100644
index 0000000..1e0bc83
--- /dev/null
+++ b/mods/ura/maps/desert-rats/map.yaml
@@ -0,0 +1,522 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Desert Rats
+
+Author: Madness
+
+Tileset: DESERT
+
+MapSize: 72,72
+
+Bounds: 1,1,70,70
+
+Visibility: Lobby
+
+Categories: Conquest
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: england
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Faction: england
+ Enemies: Multi0, Multi1
+ PlayerReference@Multi0:
+ Name: Multi0
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi1:
+ Name: Multi1
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+
+Actors:
+ Actor18: v25
+ Owner: Neutral
+ Location: 68,35
+ Actor19: v25
+ Owner: Neutral
+ Location: 2,35
+ Actor33: v24
+ Owner: Neutral
+ Location: 65,35
+ Actor34: tc01
+ Owner: Neutral
+ Location: 69,34
+ Actor35: tc01
+ Owner: Neutral
+ Location: 0,35
+ Actor36: v27
+ Owner: Neutral
+ Location: 5,38
+ Actor37: v27
+ Owner: Neutral
+ Location: 66,33
+ Actor40: v30
+ Owner: Neutral
+ Location: 5,40
+ Actor41: v30
+ Owner: Neutral
+ Location: 65,31
+ Actor42: v29
+ Owner: Neutral
+ Location: 3,39
+ Actor46: v28
+ Owner: Neutral
+ Location: 66,30
+ Actor47: v28
+ Owner: Neutral
+ Location: 5,41
+ Actor48: v24
+ Owner: Neutral
+ Location: 2,40
+ Actor49: v24
+ Owner: Neutral
+ Location: 69,29
+ Actor45: v29
+ Owner: Neutral
+ Location: 68,32
+ Actor38: v22
+ Owner: Neutral
+ Location: 68,33
+ Actor39: v22
+ Owner: Neutral
+ Location: 1,38
+ Actor50: v31
+ Owner: Neutral
+ Location: 2,34
+ Actor51: v31
+ Owner: Neutral
+ Location: 68,38
+ Actor52: v24
+ Owner: Neutral
+ Location: 5,35
+ Actor53: v27
+ Owner: Neutral
+ Location: 2,43
+ Actor54: v27
+ Owner: Neutral
+ Location: 69,28
+ Actor55: t08
+ Owner: Neutral
+ Location: 69,32
+ Actor56: t04
+ Owner: Neutral
+ Location: 2,37
+ Actor57: t08
+ Owner: Neutral
+ Location: 1,39
+ Actor58: tc01
+ Owner: Neutral
+ Location: 5,41
+ Actor59: tc01
+ Owner: Neutral
+ Location: 65,28
+ Actor60: t04
+ Owner: Neutral
+ Location: 68,32
+ Actor63: oilb
+ Owner: Neutral
+ Location: 23,43
+ Actor64: brl3
+ Owner: Neutral
+ Location: 22,44
+ Actor65: brl3
+ Owner: Neutral
+ Location: 49,28
+ Actor66: rock1
+ Owner: Neutral
+ Location: 19,40
+ Actor67: rock1
+ Owner: Neutral
+ Location: 50,29
+ Actor70: v27
+ Owner: Neutral
+ Location: 24,45
+ Actor71: oilb
+ Owner: Neutral
+ Location: 47,27
+ Actor72: v27
+ Owner: Neutral
+ Location: 47,26
+ Actor73: tc01
+ Owner: Neutral
+ Location: 48,26
+ Actor74: tc01
+ Owner: Neutral
+ Location: 21,42
+ Actor75: tc01
+ Owner: Neutral
+ Location: 42,40
+ Actor76: tc01
+ Owner: Neutral
+ Location: 27,28
+ Actor77: t08
+ Owner: Neutral
+ Location: 23,39
+ Actor78: t08
+ Owner: Neutral
+ Location: 47,32
+ Actor79: t04
+ Owner: Neutral
+ Location: 4,25
+ Actor80: t04
+ Owner: Neutral
+ Location: 66,45
+ Actor81: rock5
+ Owner: Neutral
+ Location: 27,31
+ Actor84: t08
+ Owner: Neutral
+ Location: 8,2
+ Actor85: t08
+ Owner: Neutral
+ Location: 63,69
+ Actor86: tc01
+ Owner: Neutral
+ Location: 3,8
+ Actor87: tc01
+ Owner: Neutral
+ Location: 66,58
+ Actor94: t04
+ Owner: Neutral
+ Location: 31,57
+ Actor95: t04
+ Owner: Neutral
+ Location: 39,12
+ Actor100: t08
+ Owner: Neutral
+ Location: 21,56
+ Actor106: wood
+ Owner: Neutral
+ Location: 21,60
+ Actor108: wood
+ Owner: Neutral
+ Location: 21,61
+ Actor110: wood
+ Owner: Neutral
+ Location: 22,61
+ Actor111: wood
+ Owner: Neutral
+ Location: 23,61
+ Actor112: wood
+ Owner: Neutral
+ Location: 24,61
+ Actor113: wood
+ Owner: Neutral
+ Location: 25,61
+ Actor114: wood
+ Owner: Neutral
+ Location: 25,60
+ Actor115: wood
+ Owner: Neutral
+ Location: 20,58
+ Actor116: wood
+ Owner: Neutral
+ Location: 19,58
+ Actor117: wood
+ Owner: Neutral
+ Location: 19,57
+ Actor118: dog
+ Owner: Neutral
+ Location: 23,58
+ SubCell: 3
+ Facing: 92
+ Actor124: wood
+ Owner: Neutral
+ Location: 49,10
+ Actor125: wood
+ Owner: Neutral
+ Location: 48,10
+ Actor126: wood
+ Owner: Neutral
+ Location: 47,10
+ Actor127: wood
+ Owner: Neutral
+ Location: 46,10
+ Actor128: wood
+ Owner: Neutral
+ Location: 46,11
+ Actor130: wood
+ Owner: Neutral
+ Location: 50,10
+ Actor131: wood
+ Owner: Neutral
+ Location: 50,11
+ Actor122: wood
+ Owner: Neutral
+ Location: 52,14
+ Actor123: wood
+ Owner: Neutral
+ Location: 52,13
+ Actor129: wood
+ Owner: Neutral
+ Location: 51,13
+ Actor109: v21
+ Owner: Neutral
+ Location: 49,12
+ Actor107: v24
+ Owner: Neutral
+ Location: 21,58
+ Actor119: t08
+ Owner: Neutral
+ Location: 50,14
+ Actor121: dog
+ Owner: Neutral
+ Location: 48,13
+ SubCell: 3
+ Facing: 92
+ Actor132: c9
+ Owner: Neutral
+ Location: 22,60
+ SubCell: 3
+ Facing: 92
+ Actor133: c5
+ Owner: Neutral
+ Location: 49,11
+ SubCell: 3
+ Facing: 92
+ Actor135: tc01
+ Owner: Neutral
+ Location: 46,10
+ Actor120: tc01
+ Owner: Neutral
+ Location: 23,59
+ Actor138: t04
+ Owner: Neutral
+ Location: 7,69
+ Actor141: tc01
+ Owner: Neutral
+ Location: 65,7
+ Actor142: tc01
+ Owner: Neutral
+ Location: 4,61
+ Actor143: t08
+ Owner: Neutral
+ Location: 1,60
+ Actor144: t08
+ Owner: Neutral
+ Location: 70,11
+ Actor145: tc01
+ Owner: Neutral
+ Location: 42,65
+ Actor146: tc01
+ Owner: Neutral
+ Location: 27,4
+ Actor147: t04
+ Owner: Neutral
+ Location: 28,5
+ Actor148: t04
+ Owner: Neutral
+ Location: 42,64
+ Actor149: t04
+ Owner: Neutral
+ Location: 32,69
+ Actor151: t04
+ Owner: Neutral
+ Location: 38,1
+ Actor150: t04
+ Owner: Neutral
+ Location: 20,23
+ Actor152: t04
+ Owner: Neutral
+ Location: 50,46
+ Actor159: t04
+ Owner: Neutral
+ Location: 43,39
+ Actor160: t04
+ Owner: Neutral
+ Location: 26,30
+ Actor161: t04
+ Owner: Neutral
+ Location: 4,11
+ Actor162: t04
+ Owner: Neutral
+ Location: 13,5
+ Actor163: t04
+ Owner: Neutral
+ Location: 10,6
+ Actor164: t04
+ Owner: Neutral
+ Location: 8,6
+ Actor165: t04
+ Owner: Neutral
+ Location: 57,64
+ Actor166: t04
+ Owner: Neutral
+ Location: 62,63
+ Actor167: t04
+ Owner: Neutral
+ Location: 53,64
+ Actor168: t04
+ Owner: Neutral
+ Location: 66,60
+ Actor169: t04
+ Owner: Neutral
+ Location: 69,25
+ Actor171: t04
+ Owner: Neutral
+ Location: 65,8
+ Actor172: t04
+ Owner: Neutral
+ Location: 69,13
+ Actor173: t04
+ Owner: Neutral
+ Location: 5,62
+ Actor176: tc01
+ Owner: Neutral
+ Location: 33,37
+ Actor177: tc01
+ Owner: Neutral
+ Location: 36,32
+ Actor174: t04
+ Owner: Neutral
+ Location: 36,37
+ Actor175: t04
+ Owner: Neutral
+ Location: 34,33
+ Actor178: t04
+ Owner: Neutral
+ Location: 37,36
+ Actor179: t04
+ Owner: Neutral
+ Location: 32,36
+ Actor180: t04
+ Owner: Neutral
+ Location: 27,33
+ Actor181: t04
+ Owner: Neutral
+ Location: 44,33
+ Actor182: t04
+ Owner: Neutral
+ Location: 39,39
+ Actor183: t04
+ Owner: Neutral
+ Location: 26,39
+ Actor185: t04
+ Owner: Neutral
+ Location: 22,39
+ Actor186: t04
+ Owner: Neutral
+ Location: 46,31
+ Actor184: t04
+ Owner: Neutral
+ Location: 25,57
+ Actor187: t04
+ Owner: Neutral
+ Location: 45,13
+ Actor190: tc01
+ Owner: Neutral
+ Location: 5,50
+ Actor191: tc01
+ Owner: Neutral
+ Location: 62,18
+ Actor192: t04
+ Owner: Neutral
+ Location: 5,51
+ Actor193: t04
+ Owner: Neutral
+ Location: 63,19
+ Actor194: v34
+ Owner: Neutral
+ Location: 64,20
+ Actor195: v36
+ Owner: Neutral
+ Location: 5,51
+ Actor196: tc01
+ Owner: Neutral
+ Location: 0,66
+ Actor197: tc01
+ Owner: Neutral
+ Location: 0,69
+ Actor198: t08
+ Owner: Neutral
+ Location: 4,70
+ Actor200: tc01
+ Owner: Neutral
+ Location: 70,3
+ Actor199: tc01
+ Owner: Neutral
+ Location: 65,-1
+ Actor201: t04
+ Owner: Neutral
+ Location: 68,1
+ Actor245: tc01
+ Owner: Neutral
+ Location: 51,65
+ Actor246: oilb
+ Owner: Neutral
+ Location: 17,4
+ Actor247: oilb
+ Owner: Neutral
+ Location: 9,5
+ Actor244: oilb
+ Owner: Neutral
+ Location: 61,65
+ Actor248: oilb
+ Owner: Neutral
+ Location: 53,66
+ Actor202: tc01
+ Owner: Neutral
+ Location: 15,4
+ Actor206: mpspawn
+ Owner: Neutral
+ Location: 22,16
+ Actor207: mpspawn
+ Owner: Neutral
+ Location: 49,55
+ Actor188: mine
+ Owner: Neutral
+ Location: 13,64
+ Actor204: mine
+ Owner: Neutral
+ Location: 21,32
+ Actor205: mine
+ Owner: Neutral
+ Location: 9,14
+ Actor208: mine
+ Owner: Neutral
+ Location: 11,12
+ Actor189: mine
+ Owner: Neutral
+ Location: 60,59
+ Actor209: mine
+ Owner: Neutral
+ Location: 62,57
+ Actor210: mine
+ Owner: Neutral
+ Location: 50,39
+ Actor211: mine
+ Owner: Neutral
+ Location: 58,7
+ Actor212: rock7
+ Owner: Neutral
+ Location: 34,35
+ Actor170: t08
+ Owner: Neutral
+ Location: 56,26
+ Actor203: t08
+ Owner: Neutral
+ Location: 14,45
+ Actor213: t04
+ Owner: Neutral
+ Location: 15,44
+ Actor214: t04
+ Owner: Neutral
+ Location: 55,26
+ Actor158: mine
+ Owner: Neutral
+ Location: 38,22
+ Actor156: mine
+ Owner: Neutral
+ Location: 34,49
+
+Rules: rules.yaml
diff --git a/mods/ura/maps/desert-rats/rules.yaml b/mods/ura/maps/desert-rats/rules.yaml
new file mode 100644
index 0000000..1e030c1
--- /dev/null
+++ b/mods/ura/maps/desert-rats/rules.yaml
@@ -0,0 +1,6 @@
+World:
+ GlobalLightingPaletteEffect:
+ Red: 1.1
+ Green: 0.92
+ Blue: 1.051
+ Ambient: 0.9
diff --git a/mods/ura/maps/desert-shellmap/desert-shellmap.lua b/mods/ura/maps/desert-shellmap/desert-shellmap.lua
new file mode 100644
index 0000000..95f0ea1
--- /dev/null
+++ b/mods/ura/maps/desert-shellmap/desert-shellmap.lua
@@ -0,0 +1,199 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+if DateTime.IsHalloween then
+ UnitTypes = { "ant", "ant", "ant" }
+ BeachUnitTypes = { "ant", "ant" }
+ ProxyType = "powerproxy.parazombies"
+ ProducedUnitTypes =
+ {
+ { factory = AlliedBarracks1, types = { "e1", "e3" } },
+ { factory = AlliedBarracks2, types = { "e1", "e3" } },
+ { factory = SovietBarracks1, types = { "ant" } },
+ { factory = SovietBarracks2, types = { "ant" } },
+ { factory = SovietBarracks3, types = { "ant" } },
+ { factory = AlliedWarFactory1, types = { "jeep", "1tnk", "2tnk", "arty", "ctnk" } },
+ { factory = SovietWarFactory1, types = { "3tnk", "4tnk", "v2rl", "ttnk", "apc" } }
+ }
+else
+ UnitTypes = { "3tnk", "ftrk", "ttnk", "apc" }
+ BeachUnitTypes = { "e1", "e2", "e3", "e4", "e1", "e2", "e3", "e4", "e1", "e2", "e3", "e4", "e1", "e2", "e3", "e4" }
+ ProxyType = "powerproxy.paratroopers"
+ ProducedUnitTypes =
+ {
+ { factory = AlliedBarracks1, types = { "e1", "e3" } },
+ { factory = AlliedBarracks2, types = { "e1", "e3" } },
+ { factory = SovietBarracks1, types = { "dog", "e1", "e2", "e3", "e4", "shok" } },
+ { factory = SovietBarracks2, types = { "dog", "e1", "e2", "e3", "e4", "shok" } },
+ { factory = SovietBarracks3, types = { "dog", "e1", "e2", "e3", "e4", "shok" } },
+ { factory = AlliedWarFactory1, types = { "jeep", "1tnk", "2tnk", "arty", "ctnk" } },
+ { factory = SovietWarFactory1, types = { "3tnk", "4tnk", "v2rl", "ttnk", "apc" } }
+ }
+end
+
+ShipUnitTypes = { "1tnk", "1tnk", "jeep", "2tnk", "2tnk" }
+HelicopterUnitTypes = { "e1", "e1", "e1", "e1", "e3", "e3" };
+
+ParadropWaypoints = { Paradrop1, Paradrop2, Paradrop3, Paradrop4, Paradrop5, Paradrop6, Paradrop7, Paradrop8 }
+
+Mig1Waypoints = { Mig11, Mig12, Mig13, Mig14 }
+Mig2Waypoints = { Mig21, Mig22, Mig23, Mig24 }
+
+BindActorTriggers = function(a)
+ if a.HasProperty("Hunt") then
+ if a.Owner == allies then
+ Trigger.OnIdle(a, function(a)
+ if a.IsInWorld then
+ a.Hunt()
+ end
+ end)
+ else
+ Trigger.OnIdle(a, function(a)
+ if a.IsInWorld then
+ a.AttackMove(AlliedTechnologyCenter.Location)
+ end
+ end)
+ end
+ end
+
+ if a.HasProperty("HasPassengers") then
+ Trigger.OnDamaged(a, function()
+ if a.HasPassengers then
+ a.Stop()
+ a.UnloadPassengers()
+ end
+ end)
+ end
+end
+
+SendSovietUnits = function(entryCell, unitTypes, interval)
+ local units = Reinforcements.Reinforce(soviets, unitTypes, { entryCell }, interval)
+ Utils.Do(units, function(unit)
+ BindActorTriggers(unit)
+ end)
+ Trigger.OnAllKilled(units, function() SendSovietUnits(entryCell, unitTypes, interval) end)
+end
+
+SendMigs = function(waypoints)
+ local migEntryPath = { waypoints[1].Location, waypoints[2].Location }
+ local migs = Reinforcements.Reinforce(soviets, { "mig" }, migEntryPath, 4)
+ Utils.Do(migs, function(mig)
+ mig.Move(waypoints[3].Location)
+ mig.Move(waypoints[4].Location)
+ mig.Destroy()
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(40), function() SendMigs(waypoints) end)
+end
+
+ShipAlliedUnits = function()
+ local units = Reinforcements.ReinforceWithTransport(allies, "lst",
+ ShipUnitTypes, { LstEntry.Location, LstUnload.Location }, { LstEntry.Location })[2]
+
+ Utils.Do(units, function(unit)
+ BindActorTriggers(unit)
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(60), ShipAlliedUnits)
+end
+
+InsertAlliedChinookReinforcements = function(entry, hpad)
+ local units = Reinforcements.ReinforceWithTransport(allies, "tran",
+ HelicopterUnitTypes, { entry.Location, hpad.Location + CVec.New(1, 2) }, { entry.Location })[2]
+
+ Utils.Do(units, function(unit)
+ BindActorTriggers(unit)
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(60), function() InsertAlliedChinookReinforcements(entry, hpad) end)
+end
+
+ParadropSovietUnits = function()
+ local lz = Utils.Random(ParadropWaypoints)
+ local units = powerproxy.SendParatroopers(lz.CenterPosition)
+
+ Utils.Do(units, function(a)
+ BindActorTriggers(a)
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(35), ParadropSovietUnits)
+end
+
+ProduceUnits = function(t)
+ local factory = t.factory
+ if not factory.IsDead then
+ local unitType = t.types[Utils.RandomInteger(1, #t.types + 1)]
+ factory.Wait(Actor.BuildTime(unitType))
+ factory.Produce(unitType)
+ factory.CallFunc(function() ProduceUnits(t) end)
+ end
+end
+
+SetupAlliedUnits = function()
+ Utils.Do(Map.NamedActors, function(a)
+ if a.Owner == allies and a.HasProperty("AcceptsCondition") and a.AcceptsCondition("unkillable") then
+ a.GrantCondition("unkillable")
+ a.Stance = "Defend"
+ end
+ end)
+end
+
+SetupFactories = function()
+ Utils.Do(ProducedUnitTypes, function(production)
+ Trigger.OnProduction(production.factory, function(_, a) BindActorTriggers(a) end)
+ end)
+end
+
+ChronoshiftAlliedUnits = function()
+ local cells = Utils.ExpandFootprint({ ChronoshiftLocation.Location }, false)
+ local units = { }
+ for i = 1, #cells do
+ local unit = Actor.Create("2tnk", true, { Owner = allies, Facing = 0 })
+ BindActorTriggers(unit)
+ units[unit] = cells[i]
+ end
+ Chronosphere.Chronoshift(units)
+ Trigger.AfterDelay(DateTime.Seconds(60), ChronoshiftAlliedUnits)
+end
+
+ticks = 0
+speed = 5
+
+Tick = function()
+ ticks = ticks + 1
+
+ local t = (ticks + 45) % (360 * speed) * (math.pi / 180) / speed;
+ Camera.Position = viewportOrigin + WVec.New(19200 * math.sin(t), 20480 * math.cos(t), 0)
+end
+
+WorldLoaded = function()
+ allies = Player.GetPlayer("Allies")
+ soviets = Player.GetPlayer("Soviets")
+ viewportOrigin = Camera.Position
+
+ SetupAlliedUnits()
+ SetupFactories()
+ ShipAlliedUnits()
+ InsertAlliedChinookReinforcements(Chinook1Entry, HeliPad1)
+ InsertAlliedChinookReinforcements(Chinook2Entry, HeliPad2)
+ powerproxy = Actor.Create(ProxyType, false, { Owner = soviets })
+ ParadropSovietUnits()
+ Trigger.AfterDelay(DateTime.Seconds(5), ChronoshiftAlliedUnits)
+ Utils.Do(ProducedUnitTypes, ProduceUnits)
+
+ Trigger.AfterDelay(DateTime.Seconds(30), function() SendMigs(Mig1Waypoints) end)
+ Trigger.AfterDelay(DateTime.Seconds(30), function() SendMigs(Mig2Waypoints) end)
+
+ SendSovietUnits(Entry1.Location, UnitTypes, 50)
+ SendSovietUnits(Entry2.Location, UnitTypes, 50)
+ SendSovietUnits(Entry3.Location, UnitTypes, 50)
+ SendSovietUnits(Entry4.Location, UnitTypes, 50)
+ SendSovietUnits(Entry5.Location, UnitTypes, 50)
+ SendSovietUnits(Entry6.Location, UnitTypes, 50)
+ SendSovietUnits(Entry7.Location, BeachUnitTypes, 15)
+end
diff --git a/mods/ura/maps/desert-shellmap/map.bin b/mods/ura/maps/desert-shellmap/map.bin
new file mode 100644
index 0000000..f8ded86
Binary files /dev/null and b/mods/ura/maps/desert-shellmap/map.bin differ
diff --git a/mods/ura/maps/desert-shellmap/map.png b/mods/ura/maps/desert-shellmap/map.png
new file mode 100644
index 0000000..0235328
Binary files /dev/null and b/mods/ura/maps/desert-shellmap/map.png differ
diff --git a/mods/ura/maps/desert-shellmap/map.yaml b/mods/ura/maps/desert-shellmap/map.yaml
new file mode 100644
index 0000000..5204343
--- /dev/null
+++ b/mods/ura/maps/desert-shellmap/map.yaml
@@ -0,0 +1,1269 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Desert Shellmap
+
+Author: Scott_NZ
+
+Tileset: DESERT
+
+MapSize: 128,128
+
+Bounds: 1,1,126,126
+
+Visibility: Shellmap
+
+Categories: Shellmap
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Allies:
+ Name: Allies
+ Faction: allies
+ Color: ABB7E4
+ Enemies: Soviets
+ PlayerReference@Soviets:
+ Name: Soviets
+ Faction: soviet
+ Color: FE1100
+ Enemies: Allies
+
+Actors:
+ Actor0: rock6
+ Location: 51,30
+ Owner: Neutral
+ Actor1: rock4
+ Location: 38,30
+ Owner: Neutral
+ Actor2: rock5
+ Location: 64,20
+ Owner: Neutral
+ Actor3: rock1
+ Location: 31,20
+ Owner: Neutral
+ Actor4: rock4
+ Location: 25,45
+ Owner: Neutral
+ Actor307: brik
+ Location: 40,74
+ Owner: Allies
+ Actor5: rock6
+ Location: 34,45
+ Owner: Neutral
+ Actor7: t08
+ Location: 46,34
+ Owner: Neutral
+ Actor24: v22
+ Location: 31,52
+ Owner: Neutral
+ Actor78: 2tnk
+ Location: 77,68
+ Owner: Allies
+ Actor23: v23
+ Location: 22,51
+ Owner: Neutral
+ Actor12: oilb
+ Location: 49,42
+ Owner: Neutral
+ Actor13: oilb
+ Location: 60,46
+ Owner: Neutral
+ Actor16: oilb
+ Location: 41,46
+ Owner: Neutral
+ Actor17: brl3
+ Location: 51,42
+ Owner: Neutral
+ Actor18: barl
+ Location: 43,48
+ Owner: Neutral
+ Actor19: barl
+ Location: 60,48
+ Owner: Neutral
+ Actor20: barl
+ Location: 59,48
+ Owner: Neutral
+ Actor21: brl3
+ Location: 59,49
+ Owner: Neutral
+ Actor8: v25
+ Location: 26,55
+ Owner: Neutral
+ Actor11: v30
+ Location: 29,49
+ Owner: Neutral
+ Actor22: v29
+ Location: 26,49
+ Owner: Neutral
+ Actor14: oilb
+ Location: 26,37
+ Owner: Neutral
+ Actor26: barl
+ Location: 63,35
+ Owner: Neutral
+ Actor27: barl
+ Location: 42,45
+ Owner: Neutral
+ Actor333: syrf
+ Location: 67,95
+ Owner: Allies
+ Actor53: brik
+ Location: 70,63
+ Owner: Allies
+ Actor254: fenc
+ Location: 96,97
+ Owner: Allies
+ Actor90: brik
+ Location: 92,70
+ Owner: Allies
+ Actor252: fenc
+ Location: 95,97
+ Owner: Allies
+ Actor10: gun
+ Location: 64,63
+ Owner: Allies
+ Actor153: apwr
+ Location: 93,88
+ Owner: Allies
+ Actor49: brik
+ Location: 71,63
+ Owner: Allies
+ Actor33: gun
+ Location: 85,69
+ Owner: Allies
+ Actor40: dome
+ Location: 55,19
+ Owner: Soviets
+ Actor41: brl3
+ Location: 56,43
+ Owner: Neutral
+ Actor71: brik
+ Location: 70,64
+ Owner: Allies
+ Actor325: e3
+ Location: 76,70
+ Owner: Allies
+ Actor28: gun
+ Location: 74,67
+ Owner: Allies
+ Actor50: apwr
+ Location: 51,15
+ Owner: Soviets
+ Actor63: tsla
+ Location: 48,32
+ Owner: Soviets
+ Actor56: v23
+ Location: 24,36
+ Owner: Neutral
+ Actor57: v27
+ Location: 25,34
+ Owner: Neutral
+ Actor59: v29
+ Location: 21,28
+ Owner: Neutral
+ Actor58: v21
+ Location: 13,26
+ Owner: Neutral
+ Actor61: powr
+ Location: 36,19
+ Owner: Soviets
+ Actor60: hpad
+ Location: 46,28
+ Owner: Soviets
+ Actor69: kenn
+ Location: 43,29
+ Owner: Soviets
+ Actor68: ftur
+ Location: 34,23
+ Owner: Soviets
+ Actor70: afld
+ Location: 47,24
+ Owner: Soviets
+ Actor81: rock7
+ Location: 53,19
+ Owner: Neutral
+ Actor48: brik
+ Location: 72,63
+ Owner: Allies
+ Actor85: powr
+ Location: 49,14
+ Owner: Soviets
+ Actor83: fcom
+ Location: 42,18
+ Owner: Soviets
+ Actor52: powr
+ Location: 54,14
+ Owner: Soviets
+ Actor74: brik
+ Location: 89,70
+ Owner: Allies
+ Actor88: t08
+ Location: 87,47
+ Owner: Neutral
+ Actor65: brik
+ Location: 69,64
+ Owner: Allies
+ Actor303: mrj
+ Location: 61,60
+ Owner: Allies
+ Actor87: tc01
+ Location: 92,50
+ Owner: Neutral
+ Actor306: brik
+ Location: 40,75
+ Owner: Allies
+ Actor163: tran.husk2
+ Location: 14,55
+ Owner: Allies
+ Actor15: oilb
+ Location: 56,33
+ Owner: Neutral
+ Actor164: flare
+ Location: 14,56
+ Owner: Neutral
+ Actor62: apwr
+ Location: 38,18
+ Owner: Soviets
+ Actor72: brik
+ Location: 87,70
+ Owner: Allies
+ Actor253: arty
+ Location: 44,68
+ Owner: Allies
+ Actor64: brik
+ Location: 69,63
+ Owner: Allies
+ Actor47: brik
+ Location: 73,63
+ Owner: Allies
+ Actor116: mine
+ Location: 78,21
+ Owner: Neutral
+ Actor93: ca
+ Location: 20,86
+ Owner: Allies
+ Facing: 64
+ Actor94: ca
+ Location: 40,90
+ Owner: Allies
+ Facing: 64
+ Actor95: rock6
+ Location: 10,76
+ Owner: Neutral
+ Actor97: rock2
+ Location: 12,75
+ Owner: Neutral
+ Actor73: brik
+ Location: 88,70
+ Owner: Allies
+ Actor51: brik
+ Location: 86,70
+ Owner: Allies
+ Actor176: brik
+ Location: 85,70
+ Owner: Allies
+ Actor175: brik
+ Location: 85,71
+ Owner: Allies
+ Actor37: rock5
+ Location: 35,43
+ Owner: Neutral
+ Actor67: t08
+ Location: 25,44
+ Owner: Neutral
+ Actor109: stek
+ Location: 113,32
+ Owner: Soviets
+ Actor102: proc
+ Location: 94,28
+ Owner: Soviets
+ Actor103: apwr
+ Location: 118,37
+ Owner: Soviets
+ Actor101: apwr
+ Location: 115,39
+ Owner: Soviets
+ Actor110: fcom
+ Location: 106,44
+ Owner: Soviets
+ Actor106: fact
+ Location: 114,43
+ Owner: Soviets
+ Actor104: apwr
+ Location: 115,36
+ Owner: Soviets
+ Actor91: apwr
+ Location: 118,40
+ Owner: Soviets
+ Actor108: tsla
+ Location: 95,34
+ Owner: Soviets
+ Actor112: ftur
+ Location: 93,29
+ Owner: Soviets
+ Actor113: ftur
+ Location: 90,33
+ Owner: Soviets
+ Actor114: ftur
+ Location: 37,28
+ Owner: Soviets
+ Actor115: tsla
+ Location: 40,25
+ Owner: Soviets
+ Actor117: fix
+ Location: 106,34
+ Owner: Soviets
+ Actor136: v2rl
+ Location: 91,40
+ Owner: Soviets
+ Facing: 90
+ Actor122: afld
+ Location: 116,49
+ Owner: Soviets
+ Actor107: hpad
+ Location: 112,49
+ Owner: Soviets
+ Actor126: tsla
+ Location: 110,28
+ Owner: Soviets
+ Actor124: dome
+ Location: 118,46
+ Owner: Soviets
+ Actor125: tsla
+ Location: 111,44
+ Owner: Soviets
+ Actor127: rock2
+ Location: 103,54
+ Owner: Neutral
+ Actor128: rock6
+ Location: 99,59
+ Owner: Neutral
+ Actor129: hpad
+ Location: 99,28
+ Owner: Soviets
+ Actor130: apwr
+ Location: 119,34
+ Owner: Soviets
+ Actor131: t08
+ Location: 121,43
+ Owner: Neutral
+ Actor132: apwr
+ Location: 116,33
+ Owner: Soviets
+ Actor133: oilb
+ Location: 76,37
+ Owner: Soviets
+ Actor134: e1
+ Location: 74,37
+ Owner: Soviets
+ Actor135: e1
+ Location: 77,39
+ Owner: Soviets
+ Actor137: 4tnk
+ Location: 105,33
+ Owner: Soviets
+ Facing: 100
+ Actor123: afld
+ Location: 119,49
+ Owner: Soviets
+ Actor138: 4tnk
+ Location: 112,46
+ Owner: Soviets
+ Actor139: 3tnk
+ Location: 89,32
+ Owner: Soviets
+ Facing: 64
+ Actor140: 3tnk
+ Location: 92,29
+ Owner: Soviets
+ Facing: 20
+ Actor141: 3tnk
+ Location: 36,23
+ Owner: Soviets
+ Actor142: e1
+ Location: 40,27
+ Owner: Soviets
+ Actor143: e1
+ Location: 49,17
+ Owner: Soviets
+ Actor144: e1
+ Location: 113,40
+ Owner: Soviets
+ Actor145: e1
+ Location: 102,33
+ Owner: Soviets
+ Actor146: rock2
+ Location: 125,37
+ Owner: Neutral
+ Actor147: rock1
+ Location: 118,54
+ Owner: Neutral
+ Actor167: powr
+ Location: 54,74
+ Owner: Allies
+ Actor39: pbox
+ Location: 70,89
+ Owner: Allies
+ Actor152: 1tnk
+ Location: 69,85
+ Owner: Allies
+ Facing: 110
+ Actor150: apwr
+ Location: 94,91
+ Owner: Allies
+ Actor35: pbox
+ Location: 68,85
+ Owner: Allies
+ Actor178: pbox
+ Location: 77,76
+ Owner: Allies
+ Actor300: brik
+ Location: 48,77
+ Owner: Allies
+ Actor186: 3tnk
+ Location: 107,50
+ Owner: Soviets
+ Facing: 80
+ Actor174: tc01
+ Location: 98,37
+ Owner: Neutral
+ Actor25: fact
+ Location: 86,84
+ Owner: Allies
+ Actor105: brik
+ Location: 94,70
+ Owner: Allies
+ Actor170: kenn
+ Location: 104,41
+ Owner: Soviets
+ Actor162: e1
+ Location: 82,74
+ Owner: Allies
+ Actor182: rock6
+ Location: 96,45
+ Owner: Neutral
+ Actor298: brik
+ Location: 48,78
+ Owner: Allies
+ Actor156: pbox
+ Location: 52,71
+ Owner: Allies
+ Actor343: brik
+ Location: 82,93
+ Owner: Allies
+ Actor187: ftur
+ Location: 104,47
+ Owner: Soviets
+ Actor342: lst
+ Location: 67,98
+ Owner: Allies
+ Actor86: brik
+ Location: 91,70
+ Owner: Allies
+ Actor216: brik
+ Location: 57,80
+ Owner: Allies
+ Actor188: ftur
+ Location: 107,52
+ Owner: Soviets
+ Actor54: agun
+ Location: 76,93
+ Owner: Allies
+ Facing: 150
+ Actor155: apwr
+ Location: 90,88
+ Owner: Allies
+ Actor213: brik
+ Location: 60,80
+ Owner: Allies
+ Actor196: pt
+ Location: 55,92
+ Owner: Allies
+ Facing: 160
+ Actor183: rock2
+ Location: 93,41
+ Owner: Neutral
+ Actor185: 3tnk
+ Location: 105,47
+ Owner: Soviets
+ Actor197: dd
+ Location: 30,88
+ Owner: Allies
+ Facing: 64
+ Actor199: e1
+ Location: 72,83
+ Owner: Allies
+ Actor89: apwr
+ Location: 93,85
+ Owner: Allies
+ Actor161: powr
+ Location: 89,90
+ Owner: Allies
+ Actor84: apwr
+ Location: 38,10
+ Owner: Soviets
+ Actor96: apwr
+ Location: 38,13
+ Owner: Soviets
+ Actor98: apwr
+ Location: 34,13
+ Owner: Soviets
+ Actor99: apwr
+ Location: 34,10
+ Owner: Soviets
+ Actor100: apwr
+ Location: 30,13
+ Owner: Soviets
+ Actor189: apwr
+ Location: 30,10
+ Owner: Soviets
+ Actor190: apwr
+ Location: 26,13
+ Owner: Soviets
+ Actor191: apwr
+ Location: 26,10
+ Owner: Soviets
+ Actor120: brik
+ Location: 95,70
+ Owner: Allies
+ Actor9: brik
+ Location: 94,71
+ Owner: Allies
+ Actor80: brik
+ Location: 90,70
+ Owner: Allies
+ Actor251: fenc
+ Location: 94,97
+ Owner: Allies
+ Actor92: brik
+ Location: 93,70
+ Owner: Allies
+ Actor214: brik
+ Location: 59,80
+ Owner: Allies
+ Actor149: apwr
+ Location: 92,94
+ Owner: Allies
+ Actor38: brik
+ Location: 72,67
+ Owner: Allies
+ Actor208: e7
+ Location: 39,81
+ Owner: Allies
+ Facing: 64
+ Actor209: e1
+ Location: 41,79
+ Owner: Allies
+ Actor210: e1
+ Location: 46,80
+ Owner: Allies
+ Actor211: jeep
+ Location: 41,82
+ Owner: Allies
+ Facing: 90
+ Actor36: brik
+ Location: 72,66
+ Owner: Allies
+ Actor228: mgg
+ Location: 49,63
+ Owner: Allies
+ Actor255: e1
+ Location: 67,76
+ Owner: Allies
+ Actor77: e1
+ Location: 78,74
+ Owner: Allies
+ Actor82: 2tnk
+ Location: 82,69
+ Owner: Allies
+ Actor30: pbox
+ Location: 47,77
+ Owner: Allies
+ Actor29: pbox
+ Location: 42,75
+ Owner: Allies
+ Actor217: sbag
+ Location: 43,67
+ Owner: Allies
+ Actor158: mine
+ Location: 110,78
+ Owner: Neutral
+ Actor299: e1
+ Location: 50,70
+ Owner: Allies
+ Actor297: brik
+ Location: 49,78
+ Owner: Allies
+ Actor234: sbag
+ Location: 53,63
+ Owner: Allies
+ Actor223: sbag
+ Location: 53,62
+ Owner: Allies
+ Actor151: apwr
+ Location: 91,91
+ Owner: Allies
+ Actor31: t08
+ Location: 56,58
+ Owner: Neutral
+ Actor311: brik
+ Location: 41,74
+ Owner: Allies
+ Actor302: brik
+ Location: 41,75
+ Owner: Allies
+ Actor295: jeep
+ Location: 37,67
+ Owner: Allies
+ Facing: 64
+ Actor296: 1tnk
+ Location: 58,65
+ Owner: Allies
+ Facing: 192
+ Actor215: brik
+ Location: 58,80
+ Owner: Allies
+ Actor233: 2tnk
+ Location: 66,62
+ Owner: Allies
+ Actor240: sbag
+ Location: 54,62
+ Owner: Allies
+ Actor241: sbag
+ Location: 55,62
+ Owner: Allies
+ Actor242: sbag
+ Location: 56,62
+ Owner: Allies
+ Actor243: sbag
+ Location: 57,62
+ Owner: Allies
+ Actor244: sbag
+ Location: 58,62
+ Owner: Allies
+ Actor245: sbag
+ Location: 58,63
+ Owner: Allies
+ Actor249: arty
+ Location: 57,63
+ Owner: Allies
+ Facing: 240
+ Actor248: arty
+ Location: 54,63
+ Owner: Allies
+ Facing: 16
+ Actor250: sbag
+ Location: 44,67
+ Owner: Allies
+ Actor66: gap
+ Location: 62,71
+ Owner: Allies
+ Actor218: sbag
+ Location: 43,68
+ Owner: Allies
+ Actor229: fenc
+ Location: 93,97
+ Owner: Allies
+ Actor264: v27
+ Location: 20,49
+ Owner: Neutral
+ Actor265: v20
+ Location: 26,52
+ Owner: Neutral
+ Actor266: v21
+ Location: 32,54
+ Owner: Neutral
+ Actor267: v27
+ Location: 21,48
+ Owner: Neutral
+ Actor268: v24
+ Location: 26,58
+ Owner: Neutral
+ Actor269: v26
+ Location: 21,54
+ Owner: Neutral
+ Actor270: v28
+ Location: 18,49
+ Owner: Neutral
+ Actor271: oilb
+ Location: 18,59
+ Owner: Neutral
+ Actor272: brl3
+ Location: 19,61
+ Owner: Neutral
+ Actor273: barl
+ Location: 19,58
+ Owner: Neutral
+ Actor274: delphi
+ Location: 19,51
+ Owner: Neutral
+ Actor275: chan
+ Location: 28,50
+ Owner: Neutral
+ Actor276: c1
+ Location: 30,57
+ Owner: Neutral
+ Actor277: c2
+ Location: 20,50
+ Owner: Neutral
+ Actor278: c3
+ Location: 24,53
+ Owner: Neutral
+ Actor279: c7
+ Location: 29,51
+ Owner: Neutral
+ Actor280: c10
+ Location: 23,55
+ Owner: Neutral
+ Actor282: e1
+ Location: 42,62
+ Owner: Allies
+ Actor283: e1
+ Location: 47,63
+ Owner: Allies
+ Actor284: e1
+ Location: 61,63
+ Owner: Allies
+ Actor285: e1
+ Location: 67,65
+ Owner: Allies
+ Actor286: e1
+ Location: 39,67
+ Owner: Allies
+ Actor287: brik
+ Location: 50,62
+ Owner: Allies
+ Actor288: e3
+ Location: 40,63
+ Owner: Allies
+ Actor289: brik
+ Location: 60,60
+ Owner: Allies
+ Actor291: brik
+ Location: 59,61
+ Owner: Allies
+ Actor290: brik
+ Location: 60,61
+ Owner: Allies
+ Actor292: e3
+ Location: 68,64
+ Owner: Allies
+ Actor293: e3
+ Location: 36,69
+ Owner: Allies
+ Actor219: brik
+ Location: 57,79
+ Owner: Allies
+ Actor45: brik
+ Location: 73,64
+ Owner: Allies
+ Actor226: 2tnk
+ Location: 62,60
+ Owner: Allies
+ Facing: 240
+ Actor225: 2tnk
+ Location: 47,61
+ Owner: Allies
+ Actor239: 1tnk
+ Location: 44,65
+ Owner: Allies
+ Facing: 30
+ Actor236: jeep
+ Location: 45,62
+ Owner: Allies
+ Facing: 16
+ Actor238: 2tnk
+ Location: 36,65
+ Owner: Allies
+ Facing: 40
+ Actor224: 2tnk
+ Location: 41,62
+ Owner: Allies
+ Actor237: jeep
+ Location: 63,63
+ Owner: Allies
+ Actor304: e1
+ Location: 57,72
+ Owner: Allies
+ Actor305: e1
+ Location: 61,70
+ Owner: Allies
+ Actor43: brik
+ Location: 73,65
+ Owner: Allies
+ Actor294: e1
+ Location: 58,76
+ Owner: Allies
+ Actor34: brik
+ Location: 73,66
+ Owner: Allies
+ Actor220: brik
+ Location: 57,78
+ Owner: Allies
+ Actor222: brik
+ Location: 57,77
+ Owner: Allies
+ Actor230: brik
+ Location: 56,77
+ Owner: Allies
+ Actor231: brik
+ Location: 55,77
+ Owner: Allies
+ Actor232: brik
+ Location: 54,77
+ Owner: Allies
+ Actor246: brik
+ Location: 52,77
+ Owner: Allies
+ Actor160: brik
+ Location: 86,71
+ Owner: Allies
+ Actor179: brik
+ Location: 68,84
+ Owner: Allies
+ Actor180: brik
+ Location: 69,84
+ Owner: Allies
+ Actor181: brik
+ Location: 69,83
+ Owner: Allies
+ Actor192: brik
+ Location: 68,83
+ Owner: Allies
+ Actor198: brik
+ Location: 68,82
+ Owner: Allies
+ Actor321: e1
+ Location: 45,76
+ Owner: Allies
+ Actor165: powr
+ Location: 50,74
+ Owner: Allies
+ Actor257: arty
+ Location: 72,68
+ Owner: Allies
+ Actor344: e1
+ Location: 78,69
+ Owner: Allies
+ Actor301: brik
+ Location: 49,77
+ Owner: Allies
+ Actor256: gap
+ Location: 74,76
+ Owner: Allies
+ Actor313: brik
+ Location: 37,70
+ Owner: Allies
+ Actor46: tc01
+ Location: 49,79
+ Owner: Neutral
+ Actor258: brik
+ Location: 76,94
+ Owner: Allies
+ Actor259: rock6
+ Location: 53,81
+ Owner: Neutral
+ Actor260: rock2
+ Location: 46,85
+ Owner: Neutral
+ Actor32: proc
+ Location: 90,72
+ Owner: Allies
+ Actor168: brik
+ Location: 95,71
+ Owner: Allies
+ Actor322: oilb
+ Location: 58,78
+ Owner: Allies
+ Actor121: mine
+ Location: 103,76
+ Owner: Neutral
+ Actor329: mine
+ Location: 90,21
+ Owner: Neutral
+ Actor341: dome
+ Location: 63,73
+ Owner: Allies
+ Actor166: wood
+ Location: 17,52
+ Owner: Neutral
+ Actor281: brik
+ Location: 50,78
+ Owner: Allies
+ Actor235: brik
+ Location: 53,77
+ Owner: Allies
+ Actor200: brik
+ Location: 68,81
+ Owner: Allies
+ Actor201: brik
+ Location: 67,81
+ Owner: Allies
+ Actor202: brik
+ Location: 66,81
+ Owner: Allies
+ Actor203: brik
+ Location: 65,81
+ Owner: Allies
+ Actor204: brik
+ Location: 64,81
+ Owner: Allies
+ Actor205: brik
+ Location: 63,81
+ Owner: Allies
+ Actor148: apwr
+ Location: 95,94
+ Owner: Allies
+ Actor324: e3
+ Location: 73,68
+ Owner: Allies
+ Actor206: brik
+ Location: 63,80
+ Owner: Allies
+ Actor207: brik
+ Location: 62,80
+ Owner: Allies
+ Actor263: brik
+ Location: 51,78
+ Owner: Allies
+ Actor247: brik
+ Location: 51,77
+ Owner: Allies
+ Actor212: brik
+ Location: 61,80
+ Owner: Allies
+ Actor361: pbox
+ Location: 71,96
+ Owner: Allies
+ Actor221: fenc
+ Location: 92,97
+ Owner: Allies
+ Actor345: e1
+ Location: 80,69
+ Owner: Allies
+ Actor193: fix
+ Location: 69,70
+ Owner: Allies
+ Actor42: pbox
+ Location: 67,70
+ Owner: Allies
+ Actor262: fenc
+ Location: 97,97
+ Owner: Allies
+ Actor309: fenc
+ Location: 98,97
+ Owner: Allies
+ Actor310: fenc
+ Location: 98,96
+ Owner: Allies
+ Actor6: brik
+ Location: 73,67
+ Owner: Allies
+ Actor312: brik
+ Location: 40,73
+ Owner: Allies
+ Actor314: brik
+ Location: 37,69
+ Owner: Allies
+ Actor319: brik
+ Location: 38,69
+ Owner: Allies
+ Actor316: brik
+ Location: 38,73
+ Owner: Allies
+ Actor315: brik
+ Location: 39,73
+ Owner: Allies
+ Actor317: brik
+ Location: 37,73
+ Owner: Allies
+ Actor318: brik
+ Location: 37,72
+ Owner: Allies
+ Actor44: brik
+ Location: 37,71
+ Owner: Allies
+ Actor320: brik
+ Location: 38,70
+ Owner: Allies
+ Actor330: brik
+ Location: 79,94
+ Owner: Allies
+ Actor328: brik
+ Location: 78,94
+ Owner: Allies
+ Actor327: brik
+ Location: 77,94
+ Owner: Allies
+ Actor331: brik
+ Location: 80,94
+ Owner: Allies
+ Actor332: brik
+ Location: 80,93
+ Owner: Allies
+ Actor157: brik
+ Location: 81,93
+ Owner: Allies
+ Actor346: brik
+ Location: 75,94
+ Owner: Allies
+ Actor347: brik
+ Location: 75,93
+ Owner: Allies
+ Actor348: brik
+ Location: 75,92
+ Owner: Allies
+ Actor349: brik
+ Location: 75,91
+ Owner: Allies
+ Actor350: brik
+ Location: 75,90
+ Owner: Allies
+ Actor351: brik
+ Location: 74,90
+ Owner: Allies
+ Actor352: brik
+ Location: 73,90
+ Owner: Allies
+ Actor353: brik
+ Location: 72,90
+ Owner: Allies
+ Actor354: brik
+ Location: 72,89
+ Owner: Allies
+ Actor355: brik
+ Location: 71,89
+ Owner: Allies
+ Actor356: brik
+ Location: 72,88
+ Owner: Allies
+ Actor357: brik
+ Location: 71,88
+ Owner: Allies
+ Actor358: brik
+ Location: 82,92
+ Owner: Allies
+ Actor359: brik
+ Location: 82,91
+ Owner: Allies
+ Actor360: brik
+ Location: 82,90
+ Owner: Allies
+ Actor362: brik
+ Location: 81,90
+ Owner: Allies
+ Actor363: brik
+ Location: 81,91
+ Owner: Allies
+ Actor364: gap
+ Location: 77,91
+ Owner: Allies
+ Actor366: brik
+ Location: 59,60
+ Owner: Allies
+ Actor367: brik
+ Location: 58,60
+ Owner: Allies
+ Actor368: brik
+ Location: 57,60
+ Owner: Allies
+ Actor369: brik
+ Location: 56,60
+ Owner: Allies
+ Actor370: brik
+ Location: 55,60
+ Owner: Allies
+ Actor371: brik
+ Location: 54,60
+ Owner: Allies
+ Actor372: brik
+ Location: 53,60
+ Owner: Allies
+ Actor373: brik
+ Location: 52,60
+ Owner: Allies
+ Actor374: brik
+ Location: 52,61
+ Owner: Allies
+ Actor375: brik
+ Location: 51,61
+ Owner: Allies
+ Actor376: brik
+ Location: 50,61
+ Owner: Allies
+ Actor377: brik
+ Location: 49,61
+ Owner: Allies
+ Actor378: brik
+ Location: 49,62
+ Owner: Allies
+ Actor379: gun
+ Location: 37,68
+ Owner: Allies
+ Actor380: gun
+ Location: 48,61
+ Owner: Allies
+ Actor381: atek
+ Location: 76,87
+ Owner: Allies
+ Actor194: powr
+ Location: 52,74
+ Owner: Allies
+ Actor171: wood
+ Location: 17,53
+ Owner: Neutral
+ Actor172: wood
+ Location: 17,54
+ Owner: Neutral
+ Actor173: wood
+ Location: 17,55
+ Owner: Neutral
+ Actor177: wood
+ Location: 17,56
+ Owner: Neutral
+ Actor184: pbox
+ Location: 96,79
+ Owner: Allies
+ Actor79: agun
+ Location: 70,66
+ Owner: Allies
+ Actor118: agun
+ Location: 47,70
+ Owner: Allies
+ Facing: 64
+ SovietWarFactory1: weap
+ Location: 106,29
+ Owner: Soviets
+ SovietBarracks1: barr
+ Location: 109,48
+ Owner: Soviets
+ SovietBarracks2: barr
+ Location: 102,30
+ Owner: Soviets
+ SovietBarracks3: barr
+ Location: 41,27
+ Owner: Soviets
+ IronCurtain: iron
+ Location: 110,40
+ Owner: Soviets
+ AlliedTechnologyCenter: miss
+ Location: 56,68
+ Owner: Neutral
+ Chronosphere: pdox
+ Location: 78,91
+ Owner: Allies
+ AlliedWarFactory1: weap
+ Location: 75,81
+ Owner: Allies
+ AlliedBarracks1: tent
+ Location: 83,75
+ Owner: Allies
+ AlliedBarracks2: tent
+ Location: 50,66
+ Owner: Allies
+ HeliPad1: hpad
+ Location: 70,76
+ Owner: Allies
+ HeliPad2: hpad
+ Location: 64,78
+ Owner: Allies
+ Entry1: waypoint
+ Location: 1,50
+ Owner: Neutral
+ Entry2: waypoint
+ Location: 1,27
+ Owner: Neutral
+ Entry3: waypoint
+ Location: 10,1
+ Owner: Neutral
+ Entry4: waypoint
+ Location: 84,1
+ Owner: Neutral
+ Entry5: waypoint
+ Location: 126,27
+ Owner: Neutral
+ Entry6: waypoint
+ Location: 46,1
+ Owner: Neutral
+ Entry7: waypoint
+ Location: 1,79
+ Owner: Neutral
+ AttackDest: waypoint
+ Location: 55,69
+ Owner: Neutral
+ LstEntry: waypoint
+ Location: 33,126
+ Owner: Neutral
+ LstUnload: waypoint
+ Location: 60,93
+ Owner: Neutral
+ Chinook1Entry: waypoint
+ Location: 44,126
+ Owner: Neutral
+ Chinook2Entry: waypoint
+ Location: 47,126
+ Owner: Neutral
+ Paradrop1: waypoint
+ Location: 70,50
+ Owner: Neutral
+ Paradrop2: waypoint
+ Location: 39,50
+ Owner: Neutral
+ Paradrop3: waypoint
+ Location: 81,60
+ Owner: Neutral
+ Paradrop4: waypoint
+ Location: 28,64
+ Owner: Neutral
+ Paradrop5: waypoint
+ Location: 63,89
+ Owner: Neutral
+ Paradrop6: waypoint
+ Location: 22,77
+ Owner: Neutral
+ Paradrop7: waypoint
+ Location: 64,69
+ Owner: Neutral
+ Paradrop8: waypoint
+ Location: 80,78
+ Owner: Neutral
+ ChronoshiftLocation: waypoint
+ Location: 80,65
+ Owner: Neutral
+ Mig11: waypoint
+ Location: 94,1
+ Owner: Neutral
+ Mig12: waypoint
+ Location: 68,33
+ Owner: Neutral
+ Mig13: waypoint
+ Location: 41,38
+ Owner: Neutral
+ Mig14: waypoint
+ Location: 1,26
+ Owner: Neutral
+ Mig21: waypoint
+ Location: 96,3
+ Owner: Neutral
+ Mig22: waypoint
+ Location: 70,35
+ Owner: Neutral
+ Mig23: waypoint
+ Location: 41,40
+ Owner: Neutral
+ Mig24: waypoint
+ Location: 1,28
+ Owner: Neutral
+
+Rules: ura|rules/campaign-palettes.yaml, rules.yaml
+
+Weapons: weapons.yaml
diff --git a/mods/ura/maps/desert-shellmap/rules.yaml b/mods/ura/maps/desert-shellmap/rules.yaml
new file mode 100644
index 0000000..6551f4d
--- /dev/null
+++ b/mods/ura/maps/desert-shellmap/rules.yaml
@@ -0,0 +1,111 @@
+Player:
+ -ConquestVictoryConditions:
+ LobbyPrerequisiteCheckbox@GLOBALBOUNTY:
+ Enabled: False
+ Locked: True
+
+World:
+ -CrateSpawner:
+ -SpawnMPUnits:
+ -MPStartLocations:
+ MusicPlaylist:
+ BackgroundMusic: intro
+ DisableWorldSounds: true
+ ResourceType@ore:
+ ValuePerUnit: 0
+ LuaScript:
+ Scripts: desert-shellmap.lua
+ -StartGameNotification:
+ GlobalLightingPaletteEffect:
+ Red: 1.05
+ Green: 0.92
+ Blue: 1.00
+ Ambient: 0.9
+
+^Palettes:
+ IndexedPlayerPalette:
+ PlayerIndex:
+ Soviets: 229, 230, 231, 232, 233, 234, 235, 8, 236, 237, 238, 239, 221, 222, 223, 223
+ Allies: 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175
+
+^Vehicle:
+ GainsExperience:
+ Conditions:
+ DamageMultiplier@UNKILLABLE:
+ RequiresCondition: unkillable
+ Modifier: 0
+ ExternalCondition@UNKILLABLE:
+ Condition: unkillable
+
+^Infantry:
+ GainsExperience:
+ Conditions:
+ DeathSounds@NORMAL:
+ VolumeMultiplier: 0.1
+ DeathSounds@BURNED:
+ VolumeMultiplier: 0.1
+ DeathSounds@ZAPPED:
+ VolumeMultiplier: 0.1
+ DamageMultiplier@UNKILLABLE:
+ RequiresCondition: unkillable
+ Modifier: 0
+ ExternalCondition@UNKILLABLE:
+ Condition: unkillable
+
+^Ship:
+ GainsExperience:
+ Conditions:
+ DamageMultiplier@UNKILLABLE:
+ RequiresCondition: unkillable
+ Modifier: 0
+ ExternalCondition@UNKILLABLE:
+ Condition: unkillable
+
+^Plane:
+ DamageMultiplier@UNKILLABLE:
+ RequiresCondition: unkillable
+ Modifier: 0
+ ExternalCondition@UNKILLABLE:
+ Condition: unkillable
+
+^Building:
+ DamageMultiplier@UNKILLABLE:
+ RequiresCondition: unkillable
+ Modifier: 0
+ ExternalCondition@UNKILLABLE:
+ Condition: unkillable
+
+OILB:
+ CashTrickler:
+ ShowTicks: false
+
+TRAN.Husk2:
+ Burns:
+ Damage: 0
+
+MISS:
+ DamageMultiplier@INVULNERABLE:
+ Modifier: 0
+
+APC:
+ Cargo:
+ InitialUnits: e1, e1, e2, e3, e4
+
+Ant:
+ Buildable:
+ Prerequisites: barr
+ Health:
+ HP: 200
+
+E7:
+ -AnnounceOnKill:
+
+powerproxy.paratroopers:
+ ParatroopersPower:
+ DisplayBeacon: false
+ DropItems: E1,E1,E2,E3,E4
+
+powerproxy.parazombies:
+ Inherits: powerproxy.paratroopers
+ ParatroopersPower:
+ DropItems: ZOMBIE,ZOMBIE,ZOMBIE,ZOMBIE,ZOMBIE
diff --git a/mods/ura/maps/desert-shellmap/weapons.yaml b/mods/ura/maps/desert-shellmap/weapons.yaml
new file mode 100644
index 0000000..d33bc5e
--- /dev/null
+++ b/mods/ura/maps/desert-shellmap/weapons.yaml
@@ -0,0 +1,8 @@
+2Inch:
+ Range: 10c0
+
+TTankZap:
+ Range: 4c768
+
+FLAK-23-AG:
+ Range: 4c0
diff --git a/mods/ura/maps/doubles.oramap b/mods/ura/maps/doubles.oramap
new file mode 100644
index 0000000..08a1e92
Binary files /dev/null and b/mods/ura/maps/doubles.oramap differ
diff --git a/mods/ura/maps/doublestep.oramap b/mods/ura/maps/doublestep.oramap
new file mode 100644
index 0000000..d7edcd5
Binary files /dev/null and b/mods/ura/maps/doublestep.oramap differ
diff --git a/mods/ura/maps/doughnut.oramap b/mods/ura/maps/doughnut.oramap
new file mode 100644
index 0000000..c351468
Binary files /dev/null and b/mods/ura/maps/doughnut.oramap differ
diff --git a/mods/ura/maps/drop-zone-battle-of-tikiaki/map.bin b/mods/ura/maps/drop-zone-battle-of-tikiaki/map.bin
new file mode 100644
index 0000000..b4ac451
Binary files /dev/null and b/mods/ura/maps/drop-zone-battle-of-tikiaki/map.bin differ
diff --git a/mods/ura/maps/drop-zone-battle-of-tikiaki/map.png b/mods/ura/maps/drop-zone-battle-of-tikiaki/map.png
new file mode 100644
index 0000000..bebcde5
Binary files /dev/null and b/mods/ura/maps/drop-zone-battle-of-tikiaki/map.png differ
diff --git a/mods/ura/maps/drop-zone-battle-of-tikiaki/map.yaml b/mods/ura/maps/drop-zone-battle-of-tikiaki/map.yaml
new file mode 100644
index 0000000..b62a5c6
--- /dev/null
+++ b/mods/ura/maps/drop-zone-battle-of-tikiaki/map.yaml
@@ -0,0 +1,267 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Drop Zone - Battle of Tikiaki
+
+Author: Knivesron
+
+Tileset: TEMPERAT
+
+MapSize: 64,64
+
+Bounds: 16,16,32,32
+
+Visibility: Lobby
+
+Categories: Drop Zone
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Multi0:
+ Name: Multi0
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi1:
+ Name: Multi1
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi2:
+ Name: Multi2
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi3:
+ Name: Multi3
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi4:
+ Name: Multi4
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi5:
+ Name: Multi5
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi6:
+ Name: Multi6
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi7:
+ Name: Multi7
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+
+Actors:
+ Actor0: apc
+ Location: 28,28
+ Owner: Multi0
+ Actor1: apc
+ Location: 30,28
+ Owner: Multi1
+ Actor2: apc
+ Location: 32,28
+ Owner: Multi2
+ Actor3: apc
+ Location: 32,30
+ Owner: Multi3
+ Actor4: apc
+ Location: 32,32
+ Owner: Multi4
+ Actor5: apc
+ Location: 30,32
+ Owner: Multi5
+ Actor6: apc
+ Location: 28,32
+ Owner: Multi6
+ Actor7: apc
+ Location: 28,30
+ Owner: Multi7
+ Actor10: v08
+ Location: 42,40
+ Owner: Neutral
+ Actor17: v17
+ Location: 37,41
+ Owner: Neutral
+ Actor13: v14
+ Location: 37,39
+ Owner: Neutral
+ Actor14: v15
+ Location: 38,39
+ Owner: Neutral
+ Actor15: v17
+ Location: 37,40
+ Owner: Neutral
+ Actor16: v17
+ Location: 38,40
+ Owner: Neutral
+ Actor19: brl3
+ Location: 43,45
+ Owner: Neutral
+ Actor12: v07
+ Location: 37,38
+ Owner: Neutral
+ Actor9: v08
+ Location: 44,40
+ Owner: Neutral
+ Actor11: v03
+ Location: 43,43
+ Owner: Neutral
+ Actor18: brl3
+ Location: 42,38
+ Owner: Neutral
+ Actor20: brl3
+ Location: 37,44
+ Owner: Neutral
+ Actor8: mpspawn
+ Location: 29,29
+ Owner: Neutral
+ Actor21: mpspawn
+ Location: 29,30
+ Owner: Neutral
+ Actor22: mpspawn
+ Location: 29,31
+ Owner: Neutral
+ Actor23: mpspawn
+ Location: 30,31
+ Owner: Neutral
+ Actor24: mpspawn
+ Location: 31,31
+ Owner: Neutral
+ Actor25: mpspawn
+ Location: 31,30
+ Owner: Neutral
+ Actor26: mpspawn
+ Location: 31,29
+ Owner: Neutral
+ Actor27: mpspawn
+ Location: 30,29
+ Owner: Neutral
+ Actor28: barl
+ Location: 37,43
+ Owner: Neutral
+ Actor29: barl
+ Location: 44,38
+ Owner: Neutral
+ Actor30: barl
+ Location: 43,38
+ Owner: Neutral
+ Actor31: t15
+ Location: 43,41
+ Owner: Neutral
+ Actor32: t15
+ Location: 34,17
+ Owner: Neutral
+ Actor33: t12
+ Location: 37,17
+ Owner: Neutral
+ Actor34: t10
+ Location: 40,17
+ Owner: Neutral
+ Actor35: t10
+ Location: 42,17
+ Owner: Neutral
+ Actor36: t10
+ Location: 43,17
+ Owner: Neutral
+ Actor37: t16
+ Location: 44,18
+ Owner: Neutral
+ Actor38: t16
+ Location: 43,18
+ Owner: Neutral
+ Actor39: t08
+ Location: 43,19
+ Owner: Neutral
+ Actor40: t08
+ Location: 35,18
+ Owner: Neutral
+ Actor41: t08
+ Location: 37,18
+ Owner: Neutral
+ Actor42: t08
+ Location: 36,18
+ Owner: Neutral
+ Actor43: syrf
+ Location: 47,24
+ Owner: Neutral
+ Actor44: syrf
+ Location: 14,25
+ Owner: Neutral
+ Actor45: spef
+ Location: 28,15
+ Owner: Neutral
+ Actor46: spef
+ Location: 23,47
+ Owner: Neutral
+ Actor47: sbag
+ Location: 38,35
+ Owner: Neutral
+ Actor48: sbag
+ Location: 37,35
+ Owner: Neutral
+ Actor49: sbag
+ Location: 36,35
+ Owner: Neutral
+ Actor50: sbag
+ Location: 35,35
+ Owner: Neutral
+ Actor51: sbag
+ Location: 34,35
+ Owner: Neutral
+ Actor52: sbag
+ Location: 40,35
+ Owner: Neutral
+ Actor53: sbag
+ Location: 40,34
+ Owner: Neutral
+ Actor54: sbag
+ Location: 40,33
+ Owner: Neutral
+ Actor55: sbag
+ Location: 41,33
+ Owner: Neutral
+ Actor56: sbag
+ Location: 34,43
+ Owner: Neutral
+ Actor57: sbag
+ Location: 34,44
+ Owner: Neutral
+ Actor58: sbag
+ Location: 34,45
+ Owner: Neutral
+ Actor59: sbag
+ Location: 34,41
+ Owner: Neutral
+ Actor60: sbag
+ Location: 34,40
+ Owner: Neutral
+ Actor62: t05
+ Location: 20,18
+ Owner: Neutral
+ Actor61: t05
+ Location: 41,17
+ Owner: Neutral
+
+Rules: rules.yaml
+
+Weapons: weapons.yaml
diff --git a/mods/ura/maps/drop-zone-battle-of-tikiaki/rules.yaml b/mods/ura/maps/drop-zone-battle-of-tikiaki/rules.yaml
new file mode 100644
index 0000000..596a863
--- /dev/null
+++ b/mods/ura/maps/drop-zone-battle-of-tikiaki/rules.yaml
@@ -0,0 +1,79 @@
+World:
+ CrateSpawner:
+ Maximum: 3
+ SpawnInterval: 125
+ CrateActors: unitcrate
+ InitialSpawnDelay: 0
+ -SpawnMPUnits:
+ -MPStartLocations:
+ MapBuildRadius:
+ AllyBuildRadiusCheckboxLocked: True
+ AllyBuildRadiusCheckboxEnabled: False
+ BuildRadiusCheckboxLocked: True
+ BuildRadiusCheckboxEnabled: True
+ MapOptions:
+ TechLevelDropdownLocked: True
+ TechLevel: unrestricted
+
+UNITCRATE:
+ Inherits: ^Crate
+ GiveUnitCrateAction@ttnk:
+ SelectionShares: 4
+ Units: ttnk
+ GiveUnitCrateAction@ftrk:
+ SelectionShares: 6
+ Units: ftrk
+ GiveUnitCrateAction@harv:
+ SelectionShares: 1
+ Units: harv
+ GiveUnitCrateAction@shok:
+ SelectionShares: 1
+ Units: shok
+ GiveUnitCrateAction@dog:
+ SelectionShares: 1
+ Units: dog
+ Crate:
+ TerrainTypes: Clear, Road, Ore, Beach
+
+APC:
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Health:
+ HP: 1000
+ MustBeDestroyed:
+ RequiredForShortGame: true
+ -AttackMove:
+
+HARV:
+ Tooltip:
+ Name: Bomb Truck
+ Health:
+ HP: 100
+ Explodes:
+ Weapon: CrateNuke
+ EmptyWeapon: CrateNuke
+ AttackSuicides:
+ Buildable:
+ Description: Explodes like a damn nuke!
+
+SHOK:
+ Health:
+ HP: 800
+
+DOG:
+ Health:
+ HP: 120
+ Mobile:
+ Speed: 99
+
+Player:
+ Shroud:
+ FogCheckboxLocked: True
+ FogCheckboxEnabled: False
+ ExploredMapCheckboxLocked: True
+ ExploredMapCheckboxEnabled: True
+ PlayerResources:
+ DefaultCashLocked: True
+ DefaultCash: 5000
+ LobbyPrerequisiteCheckbox@GLOBALBOUNTY:
+ Enabled: False
+ Locked: True
diff --git a/mods/ura/maps/drop-zone-battle-of-tikiaki/weapons.yaml b/mods/ura/maps/drop-zone-battle-of-tikiaki/weapons.yaml
new file mode 100644
index 0000000..edf0a3a
--- /dev/null
+++ b/mods/ura/maps/drop-zone-battle-of-tikiaki/weapons.yaml
@@ -0,0 +1,5 @@
+PortaTesla:
+ ReloadDelay: 20
+ Range: 10c0
+ Warhead@1Dam: SpreadDamage
+ Damage: 80
diff --git a/mods/ura/maps/drop-zone-w/map.bin b/mods/ura/maps/drop-zone-w/map.bin
new file mode 100644
index 0000000..931f1ce
Binary files /dev/null and b/mods/ura/maps/drop-zone-w/map.bin differ
diff --git a/mods/ura/maps/drop-zone-w/map.png b/mods/ura/maps/drop-zone-w/map.png
new file mode 100644
index 0000000..f8d6e03
Binary files /dev/null and b/mods/ura/maps/drop-zone-w/map.png differ
diff --git a/mods/ura/maps/drop-zone-w/map.yaml b/mods/ura/maps/drop-zone-w/map.yaml
new file mode 100644
index 0000000..1399607
--- /dev/null
+++ b/mods/ura/maps/drop-zone-w/map.yaml
@@ -0,0 +1,186 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Drop Zone W
+
+Author: riderr3
+
+Tileset: SNOW
+
+MapSize: 64,64
+
+Bounds: 16,16,32,32
+
+Visibility: Lobby
+
+Categories: Drop Zone
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Faction: allies
+ Enemies: Multi0, Multi1, Multi2, Multi3, Multi4, Multi5, Multi6, Multi7
+ PlayerReference@Multi0:
+ Name: Multi0
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: allies
+ Enemies: Creeps
+ PlayerReference@Multi1:
+ Name: Multi1
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: allies
+ Enemies: Creeps
+ PlayerReference@Multi2:
+ Name: Multi2
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: allies
+ Enemies: Creeps
+ PlayerReference@Multi3:
+ Name: Multi3
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: allies
+ Enemies: Creeps
+ PlayerReference@Multi4:
+ Name: Multi4
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: allies
+ Enemies: Creeps
+ PlayerReference@Multi5:
+ Name: Multi5
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: allies
+ Enemies: Creeps
+ PlayerReference@Multi6:
+ Name: Multi6
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: allies
+ Enemies: Creeps
+ PlayerReference@Multi7:
+ Name: Multi7
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: allies
+ Enemies: Creeps
+
+Actors:
+ Actor2: mpspawn
+ Location: 34,30
+ Owner: Neutral
+ Actor4: mpspawn
+ Location: 30,32
+ Owner: Neutral
+ Actor6: mpspawn
+ Location: 32,34
+ Owner: Neutral
+ Actor0: mpspawn
+ Location: 30,30
+ Owner: Neutral
+ Actor12: lst
+ Location: 35,29
+ Owner: Multi0
+ Actor14: lst
+ Location: 29,29
+ Owner: Multi1
+ Actor8: lst
+ Location: 29,35
+ Owner: Multi2
+ Actor10: lst
+ Location: 35,35
+ Owner: Multi3
+ Actor9: lst
+ Location: 32,35
+ Owner: Multi4
+ Actor13: lst
+ Location: 32,29
+ Owner: Multi5
+ Actor11: lst
+ Location: 35,32
+ Owner: Multi6
+ Actor15: lst
+ Location: 29,32
+ Owner: Multi7
+ Actor7: mpspawn
+ Location: 34,34
+ Owner: Neutral
+ Actor3: mpspawn
+ Location: 34,32
+ Owner: Neutral
+ Actor1: mpspawn
+ Location: 32,30
+ Owner: Neutral
+ Actor5: mpspawn
+ Location: 30,34
+ Owner: Neutral
+ Actor16: v12
+ Location: 37,24
+ Owner: Neutral
+ Actor17: v11
+ Location: 38,23
+ Owner: Neutral
+ Actor18: v17
+ Location: 38,25
+ Owner: Neutral
+ Actor19: brl3
+ Location: 47,21
+ Owner: Neutral
+ Actor20: v15
+ Location: 39,22
+ Owner: Neutral
+ Actor21: t12
+ Location: 39,20
+ Owner: Neutral
+ Actor22: t08
+ Location: 29,47
+ Owner: Neutral
+ Actor23: tc02
+ Location: 15,46
+ Owner: Neutral
+ Actor24: t07
+ Location: 16,44
+ Owner: Neutral
+ Actor25: tc05
+ Location: 14,38
+ Owner: Neutral
+ Actor26: t07
+ Location: 36,25
+ Owner: Neutral
+ Actor28: v14
+ Location: 38,24
+ Owner: Neutral
+ Actor27: t08
+ Location: 37,25
+ Owner: Neutral
+ Actor30: t10
+ Location: 21,36
+ Owner: Neutral
+ Actor31: t01
+ Location: 23,34
+ Owner: Neutral
+
+Rules: rules.yaml
+
+Sequences: sequences.yaml
+
+Weapons: weapons.yaml
diff --git a/mods/ura/maps/drop-zone-w/rules.yaml b/mods/ura/maps/drop-zone-w/rules.yaml
new file mode 100644
index 0000000..443e9ed
--- /dev/null
+++ b/mods/ura/maps/drop-zone-w/rules.yaml
@@ -0,0 +1,69 @@
+World:
+ CrateSpawner:
+ Maximum: 3
+ SpawnInterval: 125
+ WaterChance: 100
+ CrateActors: unitcrate
+ InitialSpawnDelay: 0
+ -SpawnMPUnits:
+ -MPStartLocations:
+ MapBuildRadius:
+ AllyBuildRadiusCheckboxLocked: True
+ AllyBuildRadiusCheckboxEnabled: False
+ BuildRadiusCheckboxLocked: True
+ BuildRadiusCheckboxEnabled: True
+ MapOptions:
+ TechLevelDropdownLocked: True
+ TechLevel: unrestricted
+
+UNITCRATE:
+ Inherits: ^Crate
+ GiveUnitCrateAction@pt:
+ SelectionShares: 7
+ Units: pt
+ GiveUnitCrateAction@dd:
+ SelectionShares: 6
+ Units: dd
+ GiveUnitCrateAction@ca:
+ SelectionShares: 4
+ Units: ca
+ GiveUnitCrateAction@ss:
+ SelectionShares: 6
+ Units: ss
+ GiveUnitCrateAction@msub:
+ SelectionShares: 4
+ Units: msub
+ Crate:
+ TerrainTypes: Water
+
+LST:
+ Tooltip:
+ Name: Naval Mobile HQ
+ Health:
+ HP: 1000
+ Mobile:
+ Speed: 170
+ Armament@PRIMARY:
+ Weapon: M60mg
+ Armament@SECONDARY:
+ Name: secondary
+ Weapon: M60mg
+ AttackFrontal:
+ WithMuzzleOverlay@PRIMARY:
+ WithMuzzleOverlay@SECONDARY:
+ Armament: secondary
+ MustBeDestroyed:
+ RequiredForShortGame: true
+
+Player:
+ Shroud:
+ FogCheckboxLocked: True
+ FogCheckboxEnabled: False
+ ExploredMapCheckboxLocked: True
+ ExploredMapCheckboxEnabled: True
+ PlayerResources:
+ DefaultCashLocked: True
+ DefaultCash: 5000
+ LobbyPrerequisiteCheckbox@GLOBALBOUNTY:
+ Enabled: False
+ Locked: True
diff --git a/mods/ura/maps/drop-zone-w/sequences.yaml b/mods/ura/maps/drop-zone-w/sequences.yaml
new file mode 100644
index 0000000..7360366
--- /dev/null
+++ b/mods/ura/maps/drop-zone-w/sequences.yaml
@@ -0,0 +1,8 @@
+lst:
+ muzzle: minigun
+ Start: 0
+ Length: 6
+ Facings: 8
+ turret: mgun
+ Start: 0
+ Facings: 32
diff --git a/mods/ura/maps/drop-zone-w/weapons.yaml b/mods/ura/maps/drop-zone-w/weapons.yaml
new file mode 100644
index 0000000..f638624
--- /dev/null
+++ b/mods/ura/maps/drop-zone-w/weapons.yaml
@@ -0,0 +1,20 @@
+8Inch:
+ ReloadDelay: 200
+ Range: 32c0
+ Burst: 4
+ Projectile: Bullet
+ Speed: 546
+ Inaccuracy: 3c341
+ Warhead@1Dam: SpreadDamage
+ Spread: 128
+ Damage: 250
+
+SubMissile:
+ ReloadDelay: 250
+ Range: 32c0
+ Burst: 4
+ Projectile: Bullet
+ Speed: 409
+ LaunchAngle: 62
+ Warhead@1Dam: SpreadDamage
+ Damage: 400
diff --git a/mods/ura/maps/drop-zone/map.bin b/mods/ura/maps/drop-zone/map.bin
new file mode 100644
index 0000000..cf77f6c
Binary files /dev/null and b/mods/ura/maps/drop-zone/map.bin differ
diff --git a/mods/ura/maps/drop-zone/map.png b/mods/ura/maps/drop-zone/map.png
new file mode 100644
index 0000000..d206892
Binary files /dev/null and b/mods/ura/maps/drop-zone/map.png differ
diff --git a/mods/ura/maps/drop-zone/map.yaml b/mods/ura/maps/drop-zone/map.yaml
new file mode 100644
index 0000000..9afb4fe
--- /dev/null
+++ b/mods/ura/maps/drop-zone/map.yaml
@@ -0,0 +1,162 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Drop Zone
+
+Author: Holloweye
+
+Tileset: TEMPERAT
+
+MapSize: 64,64
+
+Bounds: 16,16,32,32
+
+Visibility: Lobby
+
+Categories: Drop Zone
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Multi0:
+ Name: Multi0
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi1:
+ Name: Multi1
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi2:
+ Name: Multi2
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi3:
+ Name: Multi3
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi4:
+ Name: Multi4
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi5:
+ Name: Multi5
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi6:
+ Name: Multi6
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi7:
+ Name: Multi7
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+
+Actors:
+ Actor0: apc
+ Location: 28,28
+ Owner: Multi0
+ Actor1: apc
+ Location: 30,28
+ Owner: Multi1
+ Actor2: apc
+ Location: 32,28
+ Owner: Multi2
+ Actor3: apc
+ Location: 32,30
+ Owner: Multi3
+ Actor4: apc
+ Location: 32,32
+ Owner: Multi4
+ Actor5: apc
+ Location: 30,32
+ Owner: Multi5
+ Actor6: apc
+ Location: 28,32
+ Owner: Multi6
+ Actor7: apc
+ Location: 28,30
+ Owner: Multi7
+ Actor9: tc04
+ Location: 18,43
+ Owner: Neutral
+ Actor10: tc02
+ Location: 44,44
+ Owner: Neutral
+ Actor11: t10
+ Location: 23,24
+ Owner: Neutral
+ Actor12: t08
+ Location: 34,23
+ Owner: Neutral
+ Actor13: t12
+ Location: 38,27
+ Owner: Neutral
+ Actor14: t12
+ Location: 35,35
+ Owner: Neutral
+ Actor15: tc04
+ Location: 43,18
+ Owner: Neutral
+ Actor16: tc05
+ Location: 18,18
+ Owner: Neutral
+ Actor17: t12
+ Location: 22,35
+ Owner: Neutral
+ Actor18: t07
+ Location: 18,28
+ Owner: Neutral
+ Actor19: t07
+ Location: 45,39
+ Owner: Neutral
+ Actor20: t07
+ Location: 40,18
+ Owner: Neutral
+ Actor8: mpspawn
+ Location: 29,29
+ Owner: Neutral
+ Actor21: mpspawn
+ Location: 29,30
+ Owner: Neutral
+ Actor22: mpspawn
+ Location: 29,31
+ Owner: Neutral
+ Actor23: mpspawn
+ Location: 30,31
+ Owner: Neutral
+ Actor24: mpspawn
+ Location: 31,31
+ Owner: Neutral
+ Actor25: mpspawn
+ Location: 31,30
+ Owner: Neutral
+ Actor26: mpspawn
+ Location: 31,29
+ Owner: Neutral
+ Actor27: mpspawn
+ Location: 30,29
+ Owner: Neutral
+
+Rules: rules.yaml
+
+Weapons: weapons.yaml
diff --git a/mods/ura/maps/drop-zone/rules.yaml b/mods/ura/maps/drop-zone/rules.yaml
new file mode 100644
index 0000000..596a863
--- /dev/null
+++ b/mods/ura/maps/drop-zone/rules.yaml
@@ -0,0 +1,79 @@
+World:
+ CrateSpawner:
+ Maximum: 3
+ SpawnInterval: 125
+ CrateActors: unitcrate
+ InitialSpawnDelay: 0
+ -SpawnMPUnits:
+ -MPStartLocations:
+ MapBuildRadius:
+ AllyBuildRadiusCheckboxLocked: True
+ AllyBuildRadiusCheckboxEnabled: False
+ BuildRadiusCheckboxLocked: True
+ BuildRadiusCheckboxEnabled: True
+ MapOptions:
+ TechLevelDropdownLocked: True
+ TechLevel: unrestricted
+
+UNITCRATE:
+ Inherits: ^Crate
+ GiveUnitCrateAction@ttnk:
+ SelectionShares: 4
+ Units: ttnk
+ GiveUnitCrateAction@ftrk:
+ SelectionShares: 6
+ Units: ftrk
+ GiveUnitCrateAction@harv:
+ SelectionShares: 1
+ Units: harv
+ GiveUnitCrateAction@shok:
+ SelectionShares: 1
+ Units: shok
+ GiveUnitCrateAction@dog:
+ SelectionShares: 1
+ Units: dog
+ Crate:
+ TerrainTypes: Clear, Road, Ore, Beach
+
+APC:
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Health:
+ HP: 1000
+ MustBeDestroyed:
+ RequiredForShortGame: true
+ -AttackMove:
+
+HARV:
+ Tooltip:
+ Name: Bomb Truck
+ Health:
+ HP: 100
+ Explodes:
+ Weapon: CrateNuke
+ EmptyWeapon: CrateNuke
+ AttackSuicides:
+ Buildable:
+ Description: Explodes like a damn nuke!
+
+SHOK:
+ Health:
+ HP: 800
+
+DOG:
+ Health:
+ HP: 120
+ Mobile:
+ Speed: 99
+
+Player:
+ Shroud:
+ FogCheckboxLocked: True
+ FogCheckboxEnabled: False
+ ExploredMapCheckboxLocked: True
+ ExploredMapCheckboxEnabled: True
+ PlayerResources:
+ DefaultCashLocked: True
+ DefaultCash: 5000
+ LobbyPrerequisiteCheckbox@GLOBALBOUNTY:
+ Enabled: False
+ Locked: True
diff --git a/mods/ura/maps/drop-zone/weapons.yaml b/mods/ura/maps/drop-zone/weapons.yaml
new file mode 100644
index 0000000..edf0a3a
--- /dev/null
+++ b/mods/ura/maps/drop-zone/weapons.yaml
@@ -0,0 +1,5 @@
+PortaTesla:
+ ReloadDelay: 20
+ Range: 10c0
+ Warhead@1Dam: SpreadDamage
+ Damage: 80
diff --git a/mods/ura/maps/dual-cold-front.oramap b/mods/ura/maps/dual-cold-front.oramap
new file mode 100644
index 0000000..c552092
Binary files /dev/null and b/mods/ura/maps/dual-cold-front.oramap differ
diff --git a/mods/ura/maps/east-vs-west.oramap b/mods/ura/maps/east-vs-west.oramap
new file mode 100644
index 0000000..7632ff6
Binary files /dev/null and b/mods/ura/maps/east-vs-west.oramap differ
diff --git a/mods/ura/maps/encounter.oramap b/mods/ura/maps/encounter.oramap
new file mode 100644
index 0000000..13567af
Binary files /dev/null and b/mods/ura/maps/encounter.oramap differ
diff --git a/mods/ura/maps/engagement.oramap b/mods/ura/maps/engagement.oramap
new file mode 100644
index 0000000..94ee3e1
Binary files /dev/null and b/mods/ura/maps/engagement.oramap differ
diff --git a/mods/ura/maps/ensio-kaivo.oramap b/mods/ura/maps/ensio-kaivo.oramap
new file mode 100644
index 0000000..c47bb65
Binary files /dev/null and b/mods/ura/maps/ensio-kaivo.oramap differ
diff --git a/mods/ura/maps/evacuation/evacuation.lua b/mods/ura/maps/evacuation/evacuation.lua
new file mode 100644
index 0000000..0c61715
--- /dev/null
+++ b/mods/ura/maps/evacuation/evacuation.lua
@@ -0,0 +1,370 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+DeathThreshold =
+{
+ easy = 200,
+ normal = 100,
+}
+
+TanyaType = "e7"
+if Map.LobbyOption("difficulty") ~= "easy" then
+ TanyaType = "e7.noautotarget"
+end
+
+RepairTriggerThreshold =
+{
+ easy = 50,
+ normal = 75,
+}
+
+Sams = { Sam1, Sam2, Sam3, Sam4 }
+TownUnits =
+{
+ Einstein, Engineer,
+ TownUnit01, TownUnit02, TownUnit03, TownUnit04, TownUnit05, TownUnit06, TownUnit07,
+ TownUnit08, TownUnit09, TownUnit10, TownUnit11, TownUnit12, TownUnit13, TownUnit14,
+}
+
+ParabombDelay = DateTime.Seconds(30)
+ParatroopersDelay = DateTime.Minutes(5)
+Paratroopers =
+{
+ {
+ proxy = "powerproxy.paras1",
+ entry = BadgerEntryPoint1.Location,
+ drop = BadgerDropPoint1.Location,
+ },
+ {
+ proxy = "powerproxy.paras2",
+ entry = BadgerEntryPoint1.Location + CVec.New(3, 0),
+ drop = BadgerDropPoint2.Location,
+ },
+ {
+ proxy = "powerproxy.paras2",
+ entry = BadgerEntryPoint1.Location + CVec.New(6, 0),
+ drop = BadgerDropPoint3.Location,
+ },
+}
+
+AttackGroup = { }
+AttackGroupSize = 5
+SovietInfantry = { "e1", "e2", "e3" }
+SovietVehiclesUpgradeDelay = DateTime.Minutes(4)
+SovietVehicleType = "Normal"
+SovietVehicles =
+{
+ Normal = { "3tnk" },
+ Upgraded = { "3tnk", "v2rl" },
+}
+ProductionInterval =
+{
+ easy = DateTime.Seconds(10),
+ normal = DateTime.Seconds(2),
+}
+
+ReinforcementsDelay = DateTime.Minutes(16)
+ReinforcementsUnits = { "2tnk", "2tnk", "2tnk", "2tnk", "2tnk", "2tnk", "1tnk", "1tnk", "jeep", "e1",
+ "e1", "e1", "e1", "e3", "e3", "mcv", "truk", "truk", "truk", "truk", "truk", "truk" }
+
+SpawnAlliedReinforcements = function()
+ if allies2.IsLocalPlayer then
+ UserInterface.SetMissionText("")
+ Media.PlaySpeechNotification(allies2, "AlliedReinforcementsArrived")
+ end
+ Reinforcements.Reinforce(allies2, ReinforcementsUnits, { ReinforcementsEntryPoint.Location, Allies2BasePoint.Location })
+end
+
+Yak = nil
+YakAttack = function()
+ local targets = Map.ActorsInCircle(YakAttackPoint.CenterPosition, WDist.FromCells(10), function(a)
+ return a.Owner == allies1 and not a.IsDead and a ~= Einstein and a ~= Tanya and a ~= Engineer and Yak.CanTarget(a)
+ end)
+
+ if (#targets > 0) then
+ Yak.Attack(Utils.Random(targets))
+ end
+ Yak.Move(Map.ClosestEdgeCell(Yak.Location))
+ Yak.Destroy()
+ Trigger.OnRemovedFromWorld(Yak, function()
+ Yak = nil
+ end)
+end
+
+SovietTownAttack = function()
+ local units = Utils.Shuffle(Utils.Where(Map.ActorsWithTag("TownAttacker"), function(a) return not a.IsDead end))
+
+ Utils.Do(Utils.Take(5, units), function(unit)
+ unit.AttackMove(TownPoint.Location)
+ Trigger.OnIdle(unit, unit.Hunt)
+ end)
+end
+
+SendParabombs = function()
+ local proxy = Actor.Create("powerproxy.parabombs", false, { Owner = soviets })
+ proxy.SendAirstrikeFrom(BadgerEntryPoint2.Location, ParabombPoint1.Location)
+ proxy.SendAirstrikeFrom(BadgerEntryPoint2.Location + CVec.New(0, 3), ParabombPoint2.Location)
+ proxy.Destroy()
+end
+
+SendParatroopers = function()
+ Utils.Do(Paratroopers, function(para)
+ local proxy = Actor.Create(para.proxy, false, { Owner = soviets })
+ local units = proxy.SendParatroopersFrom(para.entry, para.drop)
+ proxy.Destroy()
+
+ Utils.Do(units, function(unit)
+ Trigger.OnIdle(unit, function(a)
+ if a.IsInWorld then
+ a.Hunt()
+ end
+ end)
+ end)
+ end)
+end
+
+SendAttackGroup = function()
+ if #AttackGroup < AttackGroupSize then
+ return
+ end
+
+ Utils.Do(AttackGroup, function(unit)
+ if not unit.IsDead then
+ Trigger.OnIdle(unit, unit.Hunt)
+ end
+ end)
+
+ AttackGroup = { }
+end
+
+ProduceInfantry = function()
+ if SovietBarracks.IsDead or SovietBarracks.Owner ~= soviets then
+ return
+ end
+
+ soviets.Build({ Utils.Random(SovietInfantry) }, function(units)
+ table.insert(AttackGroup, units[1])
+ SendAttackGroup()
+ Trigger.AfterDelay(ProductionInterval[Map.LobbyOption("difficulty")], ProduceInfantry)
+ end)
+end
+
+ProduceVehicles = function()
+ if SovietWarFactory.IsDead or SovietWarFactory.Owner ~= soviets then
+ return
+ end
+
+ soviets.Build({ Utils.Random(SovietVehicles[SovietVehicleType]) }, function(units)
+ table.insert(AttackGroup, units[1])
+ SendAttackGroup()
+ Trigger.AfterDelay(ProductionInterval[Map.LobbyOption("difficulty")], ProduceVehicles)
+ end)
+end
+
+NumBaseBuildings = function()
+ local buildings = Map.ActorsInBox(AlliedBaseTopLeft.CenterPosition, AlliedBaseBottomRight.CenterPosition, function(a)
+ return not a.IsDead and a.Owner == allies2 and a.HasProperty("StartBuildingRepairs")
+ end)
+
+ return #buildings
+end
+
+Tick = function()
+ if DateTime.GameTime > 1 and DateTime.GameTime % 25 == 0 and NumBaseBuildings() == 0 then
+ allies2.MarkFailedObjective(objHoldPosition)
+ end
+
+ if not allies2.IsObjectiveCompleted(objCutSovietPower) and soviets.PowerState ~= "Normal" then
+ allies2.MarkCompletedObjective(objCutSovietPower)
+ end
+
+ if not allies2.IsObjectiveCompleted(objLimitLosses) and allies2.UnitsLost > DeathThreshold[Map.LobbyOption("difficulty")] then
+ allies2.MarkFailedObjective(objLimitLosses)
+ end
+
+ if allies2.IsLocalPlayer and DateTime.GameTime <= ReinforcementsDelay then
+ UserInterface.SetMissionText("Allied reinforcements arrive in " .. Utils.FormatTime(ReinforcementsDelay - DateTime.GameTime))
+ else
+ UserInterface.SetMissionText("")
+ end
+end
+
+SetupSoviets = function()
+ soviets.Cash = 1000
+
+ if Map.LobbyOption("difficulty") == "easy" then
+ Utils.Do(Sams, function(sam)
+ local camera = Actor.Create("Camera.SAM", true, { Owner = allies1, Location = sam.Location })
+ Trigger.OnKilledOrCaptured(sam, function()
+ camera.Destroy()
+ end)
+ end)
+ end
+
+ local buildings = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == soviets and self.HasProperty("StartBuildingRepairs") end)
+ Utils.Do(buildings, function(actor)
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == soviets and building.Health < (building.MaxHealth * RepairTriggerThreshold[Map.LobbyOption("difficulty")] / 100) then
+ building.StartBuildingRepairs()
+ end
+ end)
+ end)
+
+ SovietBarracks.IsPrimaryBuilding = true
+ SovietBarracks.RallyPoint = SovietRallyPoint.Location
+ SovietWarFactory.IsPrimaryBuilding = true
+ SovietWarFactory.RallyPoint = SovietRallyPoint.Location
+
+ Trigger.AfterDelay(SovietVehiclesUpgradeDelay, function() SovietVehicleType = "Upgraded" end)
+ Trigger.AfterDelay(0, function()
+ ProduceInfantry()
+ ProduceVehicles()
+ end)
+end
+
+SetupTriggers = function()
+ Trigger.OnKilled(Tanya, function()
+ allies1.MarkFailedObjective(objTanyaMustSurvive)
+ end)
+
+ Trigger.OnAllKilledOrCaptured(Sams, function()
+ allies1.MarkCompletedObjective(objDestroySamSites)
+ objExtractEinstein = allies1.AddPrimaryObjective("Wait for a helicopter at the LZ and extract Einstein.")
+ Actor.Create("flare", true, { Owner = allies1, Location = ExtractionLZ.Location + CVec.New(1, -1) })
+ Beacon.New(allies1, ExtractionLZ.CenterPosition)
+ Media.PlaySpeechNotification(allies1, "SignalFlareNorth")
+
+ ExtractionHeli = Reinforcements.ReinforceWithTransport(allies1, "tran", nil, { ExtractionLZEntryPoint.Location, ExtractionLZ.Location })[1]
+ Trigger.OnKilled(ExtractionHeli, function()
+ allies1.MarkFailedObjective(objExtractEinstein)
+ end)
+ Trigger.OnPassengerEntered(ExtractionHeli, function(heli, passenger)
+ if passenger == Einstein then
+ heli.Move(ExtractionLZEntryPoint.Location)
+ heli.Destroy()
+ Trigger.OnRemovedFromWorld(heli, function()
+ allies2.MarkCompletedObjective(objLimitLosses)
+ allies2.MarkCompletedObjective(objHoldPosition)
+ allies1.MarkCompletedObjective(objTanyaMustSurvive)
+ allies1.MarkCompletedObjective(objEinsteinSurvival)
+ allies1.MarkCompletedObjective(objExtractEinstein)
+ end)
+ end
+ end)
+ end)
+
+ Trigger.OnEnteredProximityTrigger(TownPoint.CenterPosition, WDist.FromCells(15), function(actor, trigger)
+ if actor.Owner == allies1 then
+ ReassignActors(TownUnits, neutral, allies1)
+ Utils.Do(TownUnits, function(a) a.Stance = "Defend" end)
+ allies1.MarkCompletedObjective(objFindEinstein)
+ objEinsteinSurvival = allies1.AddPrimaryObjective("Keep Einstein alive at all costs.")
+ Trigger.OnKilled(Einstein, function()
+ allies1.MarkFailedObjective(objEinsteinSurvival)
+ end)
+ Trigger.RemoveProximityTrigger(trigger)
+ SovietTownAttack()
+ end
+ end)
+
+ Trigger.OnEnteredProximityTrigger(YakAttackPoint.CenterPosition, WDist.FromCells(5), function(actor, trigger)
+ if not (Yak == nil or Yak.IsDead) or actor.Owner ~= allies1 then
+ return
+ end
+
+ Yak = Actor.Create("yak", true, { Owner = soviets, Location = YakEntryPoint.Location, CenterPosition = YakEntryPoint.CenterPosition + WVec.New(0, 0, Actor.CruiseAltitude("yak")) })
+ Yak.Move(YakAttackPoint.Location + CVec.New(0, -10))
+ Yak.CallFunc(YakAttack)
+ end)
+
+ Trigger.AfterDelay(ParabombDelay, SendParabombs)
+ Trigger.AfterDelay(ParatroopersDelay, SendParatroopers)
+ Trigger.AfterDelay(ReinforcementsDelay, SpawnAlliedReinforcements)
+end
+
+SpawnTanya = function()
+ Tanya = Actor.Create(TanyaType, true, { Owner = allies1, Location = TanyaLocation.Location })
+
+ if Map.LobbyOption("difficulty") ~= "easy" and allies1.IsLocalPlayer then
+ Trigger.AfterDelay(DateTime.Seconds(2), function()
+ Media.DisplayMessage("According to the rules of engagement I need your explicit orders to fire, Commander!", "Tanya")
+ end)
+ end
+end
+
+ReassignActors = function(actors, from, to)
+ Utils.Do(actors, function(a)
+ if a.Owner == from then
+ a.Owner = to
+ a.Stance = "Defend"
+ end
+ end)
+end
+
+WorldLoaded = function()
+ neutral = Player.GetPlayer("Neutral")
+
+ -- Allies is the pre-set owner of units that get assigned to either the second player, if any, or the first player otherwise.
+ allies = Player.GetPlayer("Allies")
+
+ -- Allies1 is the player starting on the right, controlling Tanya
+ allies1 = Player.GetPlayer("Allies1")
+
+ -- Allies2 is the player starting on the left, defending the base
+ allies2 = Player.GetPlayer("Allies2")
+
+ soviets = Player.GetPlayer("Soviets")
+
+ Utils.Do({ allies1, allies2 }, function(player)
+ if player and player.IsLocalPlayer then
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "MissionAccomplished")
+ end)
+
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "MissionFailed")
+ end)
+ end
+ end)
+
+ if not allies2 or allies2.IsLocalPlayer then
+ Camera.Position = Allies2BasePoint.CenterPosition
+ else
+ Camera.Position = ChinookHusk.CenterPosition
+ end
+
+ if not allies2 then
+ allies2 = allies1
+ end
+
+ ReassignActors(Map.ActorsInWorld, allies, allies2)
+ SpawnTanya()
+
+ objTanyaMustSurvive = allies1.AddPrimaryObjective("Tanya must survive.")
+ objFindEinstein = allies1.AddPrimaryObjective("Find Einstein's crashed helicopter.")
+ objDestroySamSites = allies1.AddPrimaryObjective("Destroy the SAM sites.")
+
+ objHoldPosition = allies2.AddPrimaryObjective("Hold your position and protect the base.")
+ objLimitLosses = allies2.AddSecondaryObjective("Do not lose more than " .. DeathThreshold[Map.LobbyOption("difficulty")] .. " units.")
+ objCutSovietPower = allies2.AddSecondaryObjective("Take out the Soviet power grid.")
+
+ SetupTriggers()
+ SetupSoviets()
+end
diff --git a/mods/ura/maps/evacuation/map.bin b/mods/ura/maps/evacuation/map.bin
new file mode 100644
index 0000000..45e732c
Binary files /dev/null and b/mods/ura/maps/evacuation/map.bin differ
diff --git a/mods/ura/maps/evacuation/map.png b/mods/ura/maps/evacuation/map.png
new file mode 100644
index 0000000..29bfd56
Binary files /dev/null and b/mods/ura/maps/evacuation/map.png differ
diff --git a/mods/ura/maps/evacuation/map.yaml b/mods/ura/maps/evacuation/map.yaml
new file mode 100644
index 0000000..3229dd2
--- /dev/null
+++ b/mods/ura/maps/evacuation/map.yaml
@@ -0,0 +1,1754 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Evacuation
+
+Author: Scott_NZ
+
+Tileset: SNOW
+
+MapSize: 128,128
+
+Bounds: 16,16,96,96
+
+Visibility: Lobby, MissionSelector
+
+Categories: Mission, Cooperative Mission
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Allies1:
+ Name: Allies1
+ AllowBots: False
+ Playable: True
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: ABB7E4
+ LockSpawn: True
+ LockTeam: True
+ Allies: Allies2, Allies
+ Enemies: Soviets
+ PlayerReference@Allies2:
+ Name: Allies2
+ AllowBots: False
+ Playable: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: A1EF8C
+ LockSpawn: True
+ LockTeam: True
+ Allies: Allies1, Allies
+ Enemies: Soviets
+ PlayerReference@Allies:
+ Name: Allies
+ Faction: allies
+ NonCombatant: True
+ Color: 5CC1A3
+ Allies: Allies1, Allies2
+ Enemies: Soviets
+ PlayerReference@Soviets:
+ Name: Soviets
+ Faction: soviet
+ Color: FE1100
+ Enemies: Allies1, Allies2, Allies
+
+Actors:
+ Actor1: v07
+ Location: 71,91
+ Owner: Neutral
+ Actor2: v04
+ Location: 77,90
+ Owner: Neutral
+ Actor3: v03
+ Location: 66,90
+ Owner: Neutral
+ Actor4: v02
+ Location: 73,94
+ Owner: Neutral
+ Actor5: v01
+ Location: 77,94
+ Owner: Neutral
+ Actor6: v07
+ Location: 77,87
+ Owner: Neutral
+ Actor7: v09
+ Location: 61,95
+ Owner: Neutral
+ Actor8: v08
+ Location: 60,91
+ Owner: Neutral
+ Actor15: t16
+ Location: 60,104
+ Owner: Neutral
+ Actor33: t06
+ Location: 59,95
+ Owner: Neutral
+ Actor11: wood
+ Location: 68,100
+ Owner: Neutral
+ Actor12: v05
+ Location: 72,87
+ Owner: Neutral
+ Actor20: t05
+ Location: 74,76
+ Owner: Neutral
+ Actor10: tc03
+ Location: 60,99
+ Owner: Neutral
+ Actor16: wood
+ Location: 67,100
+ Owner: Neutral
+ Actor17: wood
+ Location: 66,100
+ Owner: Neutral
+ Actor18: wood
+ Location: 66,99
+ Owner: Neutral
+ Actor19: wood
+ Location: 66,98
+ Owner: Neutral
+ Actor29: wood
+ Location: 65,96
+ Owner: Neutral
+ Actor13: t06
+ Location: 65,82
+ Owner: Neutral
+ Actor22: v08
+ Location: 83,94
+ Owner: Neutral
+ Actor23: v04
+ Location: 64,93
+ Owner: Neutral
+ Actor24: v04
+ Location: 83,91
+ Owner: Neutral
+ Actor25: tc04
+ Location: 93,86
+ Owner: Neutral
+ Actor26: v12
+ Location: 79,91
+ Owner: Neutral
+ Actor31: wood
+ Location: 63,96
+ Owner: Neutral
+ Actor30: wood
+ Location: 64,96
+ Owner: Neutral
+ Actor194: sbag
+ Location: 94,50
+ Owner: Soviets
+ Actor27: wood
+ Location: 66,97
+ Owner: Neutral
+ Actor14: tc05
+ Location: 59,101
+ Owner: Neutral
+ Actor28: wood
+ Location: 66,96
+ Owner: Neutral
+ Actor9: t12
+ Location: 59,98
+ Owner: Neutral
+ Actor34: t14
+ Location: 68,98
+ Owner: Neutral
+ Actor35: t11
+ Location: 71,89
+ Owner: Neutral
+ Actor36: t15
+ Location: 83,95
+ Owner: Neutral
+ Actor115: fenc
+ Location: 100,99
+ Owner: Soviets
+ Actor38: t14
+ Location: 89,97
+ Owner: Neutral
+ Actor39: t15
+ Location: 84,108
+ Owner: Neutral
+ Actor41: t01
+ Location: 71,80
+ Owner: Neutral
+ Actor43: t02
+ Location: 79,102
+ Owner: Neutral
+ Actor132: fenc
+ Location: 100,100
+ Owner: Soviets
+ Actor45: tc04
+ Location: 64,108
+ Owner: Neutral
+ Actor46: tc01
+ Location: 64,105
+ Owner: Neutral
+ Actor47: t07
+ Location: 77,107
+ Owner: Neutral
+ Actor48: t05
+ Location: 92,80
+ Owner: Neutral
+ Actor49: t03
+ Location: 87,88
+ Owner: Neutral
+ Actor50: t06
+ Location: 96,82
+ Owner: Neutral
+ Actor669: fenc
+ Location: 95,79
+ Owner: Soviets
+ Actor135: tc05
+ Location: 106,109
+ Owner: Neutral
+ Actor58: t06
+ Location: 85,105
+ Owner: Neutral
+ Actor125: e2
+ Location: 99,86
+ Owner: Soviets
+ Actor599: tc01
+ Location: 70,32
+ Owner: Neutral
+ Actor62: t12
+ Location: 96,79
+ Owner: Neutral
+ Actor66: t17
+ Location: 85,71
+ Owner: Neutral
+ Actor65: t14
+ Location: 89,70
+ Owner: Neutral
+ Actor87: t03
+ Location: 69,34
+ Owner: Neutral
+ Actor598: t08
+ Location: 71,31
+ Owner: Neutral
+ Actor154: e1
+ Location: 105,95
+ Owner: Soviets
+ Actor149: sbag
+ Location: 92,50
+ Owner: Soviets
+ Actor99: e1
+ Location: 82,72
+ Owner: Soviets
+ Actor75: t06
+ Location: 73,64
+ Owner: Neutral
+ Actor76: t14
+ Location: 71,71
+ Owner: Neutral
+ Actor77: tc04
+ Location: 93,96
+ Owner: Neutral
+ Actor95: fenc
+ Location: 83,71
+ Owner: Soviets
+ Actor642: t10
+ Location: 66,29
+ Owner: Neutral
+ Actor603: fenc
+ Location: 84,71
+ Owner: Soviets
+ Actor85: medi
+ Location: 110,86
+ Owner: Allies1
+ Actor88: t07
+ Location: 93,80
+ Owner: Neutral
+ Actor469: e2
+ Location: 97,20
+ Owner: Soviets
+ Actor438: fenc
+ Location: 88,19
+ Owner: Soviets
+ Actor56: e1
+ Location: 78,74
+ Owner: Soviets
+ Actor549: t16
+ Location: 111,50
+ Owner: Neutral
+ Actor242: fenc
+ Location: 88,50
+ Owner: Soviets
+ Actor104: t10
+ Location: 107,46
+ Owner: Neutral
+ Actor163: e2
+ Location: 109,96
+ Owner: Soviets
+ Actor90: t02
+ Location: 90,72
+ Owner: Neutral
+ Actor106: fenc
+ Location: 111,94
+ Owner: Soviets
+ Actor590: e1
+ Location: 102,97
+ Owner: Soviets
+ Actor64: e1
+ Location: 96,93
+ Owner: Soviets
+ Actor169: v2rl
+ Location: 53,20
+ Owner: Soviets
+ Actor122: e1
+ Location: 89,66
+ Owner: Soviets
+ Actor137: t01
+ Location: 111,92
+ Owner: Neutral
+ Actor98: fenc
+ Location: 109,93
+ Owner: Soviets
+ Actor105: fenc
+ Location: 110,94
+ Owner: Soviets
+ Actor146: t16
+ Location: 62,85
+ Owner: Neutral
+ Actor159: brl3
+ Location: 93,64
+ Owner: Soviets
+ Actor160: tc05
+ Location: 15,108
+ Owner: Neutral
+ Actor155: t05
+ Location: 110,40
+ Owner: Neutral
+ Actor157: tc05
+ Location: 91,36
+ Owner: Neutral
+ Actor330: oilb
+ Location: 65,31
+ Owner: Neutral
+ Actor114: fenc
+ Location: 100,98
+ Owner: Soviets
+ Actor136: t15
+ Location: 110,103
+ Owner: Neutral
+ Actor226: fenc
+ Location: 97,39
+ Owner: Soviets
+ Actor113: fenc
+ Location: 100,97
+ Owner: Soviets
+ Actor110: fenc
+ Location: 98,97
+ Owner: Soviets
+ Actor152: t01
+ Location: 109,39
+ Owner: Neutral
+ Actor439: fenc
+ Location: 88,18
+ Owner: Soviets
+ Actor127: fenc
+ Location: 109,101
+ Owner: Soviets
+ Actor153: t08
+ Location: 108,58
+ Owner: Neutral
+ Actor130: e1
+ Location: 100,77
+ Owner: Soviets
+ Actor118: fenc
+ Location: 109,102
+ Owner: Soviets
+ Actor158: t07
+ Location: 110,48
+ Owner: Neutral
+ Actor126: t03
+ Location: 107,79
+ Owner: Neutral
+ Actor143: dome
+ Location: 102,74
+ Owner: Soviets
+ Actor156: e1
+ Location: 98,72
+ Owner: Soviets
+ Actor142: e2
+ Location: 101,69
+ Owner: Soviets
+ Actor247: silo
+ Location: 39,33
+ Owner: Soviets
+ Actor61: tc05
+ Location: 87,109
+ Owner: Neutral
+ Actor174: t06
+ Location: 51,78
+ Owner: Neutral
+ Actor711: e1
+ Location: 74,36
+ Owner: Soviets
+ Actor306: apwr
+ Location: 54,67
+ Owner: Soviets
+ Actor134: tc03
+ Location: 110,107
+ Owner: Neutral
+ Actor215: tc01
+ Location: 16,62
+ Owner: Neutral
+ Actor188: t02
+ Location: 55,24
+ Owner: Neutral
+ Actor37: fenc
+ Location: 99,97
+ Owner: Soviets
+ Actor195: tc03
+ Location: 16,16
+ Owner: Neutral
+ Actor196: t17
+ Location: 21,15
+ Owner: Neutral
+ Actor198: tc03
+ Location: 18,106
+ Owner: Neutral
+ Actor200: tc01
+ Location: 19,110
+ Owner: Neutral
+ Actor203: t11
+ Location: 45,91
+ Owner: Neutral
+ Actor356: proc
+ Location: 26,90
+ Owner: Allies
+ FreeActor: False
+ Actor147: mine
+ Location: 20,98
+ Owner: Neutral
+ Actor459: tc01
+ Location: 41,99
+ Owner: Neutral
+ Actor216: tc05
+ Location: 23,45
+ Owner: Neutral
+ Actor217: t07
+ Location: 49,32
+ Owner: Neutral
+ Actor218: t16
+ Location: 55,34
+ Owner: Neutral
+ Actor53: e1
+ Location: 109,89
+ Owner: Allies1
+ Actor182: tc02
+ Location: 53,35
+ Owner: Neutral
+ Actor52: e1
+ Location: 106,88
+ Owner: Allies1
+ Actor239: t06
+ Location: 48,75
+ Owner: Neutral
+ Actor292: ftur
+ Location: 36,56
+ Owner: Soviets
+ Actor71: e1
+ Location: 86,102
+ Owner: Soviets
+ Actor44: t16
+ Location: 87,105
+ Owner: Neutral
+ Actor133: v04
+ Location: 83,101
+ Owner: Neutral
+ Actor259: tc01
+ Location: 110,109
+ Owner: Neutral
+ Actor140: t11
+ Location: 110,82
+ Owner: Neutral
+ Actor610: e2
+ Location: 101,79
+ Owner: Soviets
+ Actor109: fenc
+ Location: 111,95
+ Owner: Soviets
+ Actor70: dog
+ Location: 87,99
+ Owner: Soviets
+ Actor141: t13
+ Location: 104,85
+ Owner: Neutral
+ Actor236: 3tnk
+ Location: 91,45
+ Owner: Soviets
+ Actor254: tc02
+ Location: 89,34
+ Owner: Neutral
+ Actor138: tc01
+ Location: 104,82
+ Owner: Neutral
+ Actor164: e1
+ Location: 107,99
+ Owner: Soviets
+ Actor442: e2
+ Location: 91,19
+ Owner: Soviets
+ Actor251: fenc
+ Location: 63,41
+ Owner: Soviets
+ Actor199: t01
+ Location: 108,49
+ Owner: Neutral
+ Actor440: fenc
+ Location: 88,17
+ Owner: Soviets
+ Actor222: fenc
+ Location: 94,63
+ Owner: Soviets
+ Actor441: e1
+ Location: 89,19
+ Owner: Soviets
+ Actor287: fenc
+ Location: 93,63
+ Owner: Soviets
+ Actor93: fenc
+ Location: 96,65
+ Owner: Soviets
+ Actor223: e2
+ Location: 94,64
+ Owner: Soviets
+ Actor224: e2
+ Location: 92,67
+ Owner: Soviets
+ Actor437: fenc
+ Location: 98,21
+ Owner: Soviets
+ Actor21: fenc
+ Location: 97,47
+ Owner: Soviets
+ Actor227: fenc
+ Location: 96,39
+ Owner: Soviets
+ Actor208: oilb
+ Location: 105,43
+ Owner: Soviets
+ Actor231: fenc
+ Location: 94,38
+ Owner: Soviets
+ Actor201: oilb
+ Location: 105,40
+ Owner: Soviets
+ Actor210: powr
+ Location: 105,46
+ Owner: Soviets
+ Actor78: barr
+ Location: 101,40
+ Owner: Soviets
+ Actor151: fenc
+ Location: 97,45
+ Owner: Soviets
+ Actor235: tc05
+ Location: 106,51
+ Owner: Neutral
+ Actor74: fenc
+ Location: 97,46
+ Owner: Soviets
+ Actor234: tc03
+ Location: 107,54
+ Owner: Neutral
+ Actor219: fenc
+ Location: 97,41
+ Owner: Soviets
+ Actor221: fenc
+ Location: 97,40
+ Owner: Soviets
+ Actor228: fenc
+ Location: 95,39
+ Owner: Soviets
+ Actor248: barl
+ Location: 100,41
+ Owner: Soviets
+ Actor229: fenc
+ Location: 94,39
+ Owner: Soviets
+ Actor245: e1
+ Location: 101,43
+ Owner: Soviets
+ Actor249: brl3
+ Location: 100,40
+ Owner: Soviets
+ Actor250: brl3
+ Location: 101,39
+ Owner: Soviets
+ Actor258: e2
+ Location: 103,45
+ Owner: Soviets
+ Actor443: e1
+ Location: 97,105
+ Owner: Soviets
+ Actor260: e1
+ Location: 97,43
+ Owner: Soviets
+ Actor108: e1
+ Location: 99,47
+ Owner: Soviets
+ Actor266: e1
+ Location: 96,47
+ Owner: Soviets
+ Actor279: brl3
+ Location: 106,39
+ Owner: Soviets
+ Actor280: barl
+ Location: 106,42
+ Owner: Soviets
+ Actor331: e1
+ Location: 36,88
+ Owner: Soviets
+ Actor193: fenc
+ Location: 95,63
+ Owner: Soviets
+ Actor192: fenc
+ Location: 95,64
+ Owner: Soviets
+ Actor94: fenc
+ Location: 96,64
+ Owner: Soviets
+ Actor640: tc04
+ Location: 72,31
+ Owner: Neutral
+ Actor641: t02
+ Location: 71,29
+ Owner: Neutral
+ Actor181: mine
+ Location: 109,76
+ Owner: Neutral
+ Actor348: e3
+ Location: 87,48
+ Owner: Soviets
+ Actor244: fenc
+ Location: 86,50
+ Owner: Soviets
+ Actor246: fenc
+ Location: 85,50
+ Owner: Soviets
+ Actor243: fenc
+ Location: 87,50
+ Owner: Soviets
+ Actor284: fenc
+ Location: 85,49
+ Owner: Soviets
+ Actor366: e1
+ Location: 88,51
+ Owner: Soviets
+ Actor367: e1
+ Location: 92,51
+ Owner: Soviets
+ Actor368: e1
+ Location: 91,49
+ Owner: Soviets
+ Actor347: e3
+ Location: 86,49
+ Owner: Soviets
+ Actor370: e2
+ Location: 94,49
+ Owner: Soviets
+ Actor281: fenc
+ Location: 56,38
+ Owner: Soviets
+ Actor376: e1
+ Location: 107,89
+ Owner: Allies1
+ Actor377: e1
+ Location: 108,89
+ Owner: Allies1
+ Actor378: e1
+ Location: 110,88
+ Owner: Allies1
+ Actor327: t06
+ Location: 37,73
+ Owner: Neutral
+ Actor189: t13
+ Location: 88,57
+ Owner: Neutral
+ Actor328: t14
+ Location: 26,57
+ Owner: Neutral
+ Actor297: e1
+ Location: 33,25
+ Owner: Soviets
+ Actor124: mine
+ Location: 49,25
+ Owner: Neutral
+ Actor112: e1
+ Location: 98,87
+ Owner: Soviets
+ Actor428: e1
+ Location: 90,100
+ Owner: Soviets
+ Actor298: e2
+ Location: 33,23
+ Owner: Soviets
+ Actor510: e1
+ Location: 94,20
+ Owner: Soviets
+ Actor508: e1
+ Location: 79,19
+ Owner: Soviets
+ Actor57: cycl
+ Location: 74,16
+ Owner: Soviets
+ Actor511: sbag
+ Location: 96,19
+ Owner: Soviets
+ Actor515: tc05
+ Location: 108,17
+ Owner: Neutral
+ Actor516: t13
+ Location: 72,20
+ Owner: Neutral
+ Actor121: cycl
+ Location: 75,23
+ Owner: Soviets
+ Actor519: sbag
+ Location: 93,18
+ Owner: Soviets
+ Actor489: apwr
+ Location: 76,20
+ Owner: Soviets
+ Actor517: sbag
+ Location: 96,17
+ Owner: Soviets
+ Actor520: sbag
+ Location: 93,19
+ Owner: Soviets
+ Actor488: apwr
+ Location: 80,20
+ Owner: Soviets
+ Actor116: cycl
+ Location: 74,20
+ Owner: Soviets
+ Actor117: cycl
+ Location: 74,21
+ Owner: Soviets
+ Actor107: oilb
+ Location: 68,29
+ Owner: Neutral
+ Actor232: fenc
+ Location: 94,37
+ Owner: Soviets
+ Actor102: spen
+ Location: 101,35
+ Owner: Soviets
+ Actor487: apwr
+ Location: 80,17
+ Owner: Soviets
+ Actor523: t17
+ Location: 85,20
+ Owner: Neutral
+ Actor522: t05
+ Location: 90,16
+ Owner: Neutral
+ Actor119: cycl
+ Location: 74,22
+ Owner: Soviets
+ Actor120: cycl
+ Location: 74,23
+ Owner: Soviets
+ Actor518: sbag
+ Location: 94,17
+ Owner: Soviets
+ Actor521: sbag
+ Location: 93,17
+ Owner: Soviets
+ Actor237: tc04
+ Location: 99,53
+ Owner: Neutral
+ Actor139: cycl
+ Location: 77,23
+ Owner: Soviets
+ Actor123: cycl
+ Location: 76,23
+ Owner: Soviets
+ Actor504: e2
+ Location: 78,23
+ Owner: Soviets
+ Actor505: e1
+ Location: 84,18
+ Owner: Soviets
+ Actor289: sbag
+ Location: 95,17
+ Owner: Soviets
+ Actor512: sbag
+ Location: 96,18
+ Owner: Soviets
+ Actor486: apwr
+ Location: 76,17
+ Owner: Soviets
+ Actor514: tc03
+ Location: 104,20
+ Owner: Neutral
+ Actor307: apwr
+ Location: 54,60
+ Owner: Soviets
+ Actor91: cycl
+ Location: 74,17
+ Owner: Soviets
+ Actor103: cycl
+ Location: 74,18
+ Owner: Soviets
+ Actor111: cycl
+ Location: 74,19
+ Owner: Soviets
+ Actor413: e1
+ Location: 104,38
+ Owner: Soviets
+ Actor626: barl
+ Location: 80,72
+ Owner: Soviets
+ Actor419: e1
+ Location: 82,62
+ Owner: Soviets
+ Actor150: sbag
+ Location: 93,50
+ Owner: Soviets
+ Actor608: brl3
+ Location: 81,72
+ Owner: Soviets
+ Actor427: e1
+ Location: 76,71
+ Owner: Soviets
+ Actor429: e2
+ Location: 78,70
+ Owner: Soviets
+ Actor611: t05
+ Location: 81,65
+ Owner: Neutral
+ Actor336: fenc
+ Location: 90,20
+ Owner: Soviets
+ Actor422: fenc
+ Location: 96,21
+ Owner: Soviets
+ Actor335: fenc
+ Location: 89,20
+ Owner: Soviets
+ Actor436: fenc
+ Location: 97,21
+ Owner: Soviets
+ Actor421: fenc
+ Location: 91,20
+ Owner: Soviets
+ Actor334: fenc
+ Location: 88,20
+ Owner: Soviets
+ Actor295: e1
+ Location: 28,25
+ Owner: Soviets
+ Actor299: dog
+ Location: 31,23
+ Owner: Soviets
+ Actor170: weap
+ Location: 23,103
+ Owner: Allies
+ Actor460: t08
+ Location: 40,110
+ Owner: Neutral
+ Actor206: dome
+ Location: 35,99
+ Owner: Allies
+ Actor204: apwr
+ Location: 37,108
+ Owner: Allies
+ Actor92: powr
+ Location: 101,46
+ Owner: Soviets
+ Actor84: fenc
+ Location: 110,93
+ Owner: Soviets
+ Actor83: apwr
+ Location: 37,105
+ Owner: Allies
+ Actor162: mine
+ Location: 20,91
+ Owner: Neutral
+ Actor96: fenc
+ Location: 82,71
+ Owner: Soviets
+ Actor97: fenc
+ Location: 111,66
+ Owner: Soviets
+ Actor42: t07
+ Location: 92,110
+ Owner: Neutral
+ Actor558: v10
+ Location: 64,90
+ Owner: Neutral
+ Actor414: t13
+ Location: 74,43
+ Owner: Neutral
+ Actor361: silo
+ Location: 25,89
+ Owner: Allies
+ Actor446: spen
+ Location: 58,17
+ Owner: Soviets
+ Actor273: t13
+ Location: 45,38
+ Owner: Neutral
+ Actor253: gun
+ Location: 27,88
+ Owner: Allies
+ Actor534: 1tnk
+ Location: 37,90
+ Owner: Allies
+ Facing: 0
+ Actor398: 1tnk
+ Location: 36,90
+ Owner: Allies
+ Facing: 0
+ Actor485: tc03
+ Location: 41,101
+ Owner: Neutral
+ Actor495: tc02
+ Location: 40,102
+ Owner: Neutral
+ Actor51: t13
+ Location: 66,80
+ Owner: Neutral
+ Actor873: brl3
+ Location: 45,79
+ Owner: Neutral
+ Actor171: tsla
+ Location: 41,57
+ Owner: Soviets
+ Actor570: oilb
+ Location: 43,80
+ Owner: Neutral
+ Actor263: dome
+ Location: 61,45
+ Owner: Soviets
+ Actor584: tc04
+ Location: 52,70
+ Owner: Neutral
+ Actor586: tc01
+ Location: 45,70
+ Owner: Neutral
+ Actor587: t17
+ Location: 31,84
+ Owner: Neutral
+ Actor605: barl
+ Location: 91,68
+ Owner: Soviets
+ Actor498: barl
+ Location: 94,65
+ Owner: Soviets
+ Actor67: tc01
+ Location: 97,65
+ Owner: Neutral
+ Actor462: t02
+ Location: 65,89
+ Owner: Neutral
+ Actor529: fenc
+ Location: 107,102
+ Owner: Soviets
+ Actor535: fenc
+ Location: 101,100
+ Owner: Soviets
+ Actor211: e1
+ Location: 105,107
+ Owner: Soviets
+ Actor530: fenc
+ Location: 106,102
+ Owner: Soviets
+ Actor128: fenc
+ Location: 108,102
+ Owner: Soviets
+ Actor592: dog
+ Location: 108,97
+ Owner: Soviets
+ Actor604: brl3
+ Location: 90,67
+ Owner: Soviets
+ Actor720: fenc
+ Location: 110,66
+ Owner: Soviets
+ Actor556: e1
+ Location: 110,89
+ Owner: Allies1
+ Actor600: barl
+ Location: 92,68
+ Owner: Soviets
+ Actor647: fenc
+ Location: 84,72
+ Owner: Soviets
+ Actor532: e1
+ Location: 106,89
+ Owner: Allies1
+ Actor464: t05
+ Location: 64,82
+ Owner: Neutral
+ Actor463: tc04
+ Location: 60,83
+ Owner: Neutral
+ Actor609: e2
+ Location: 99,79
+ Owner: Soviets
+ Actor721: fenc
+ Location: 109,66
+ Owner: Soviets
+ Actor606: brl3
+ Location: 89,67
+ Owner: Soviets
+ Actor144: t01
+ Location: 98,107
+ Owner: Neutral
+ Actor129: e1
+ Location: 102,78
+ Owner: Soviets
+ Actor283: apwr
+ Location: 51,59
+ Owner: Soviets
+ Actor72: dog
+ Location: 81,71
+ Owner: Soviets
+ Actor617: truk
+ Location: 104,43
+ Owner: Soviets
+ Actor220: sbag
+ Location: 92,48
+ Owner: Soviets
+ Actor275: fenc
+ Location: 64,44
+ Owner: Soviets
+ Actor225: fenc
+ Location: 84,49
+ Owner: Soviets
+ Actor597: t16
+ Location: 82,67
+ Owner: Neutral
+ Actor596: tc01
+ Location: 83,65
+ Owner: Neutral
+ Actor559: tc02
+ Location: 84,66
+ Owner: Neutral
+ Actor418: tc04
+ Location: 81,68
+ Owner: Neutral
+ Actor32: tc05
+ Location: 83,67
+ Owner: Neutral
+ Actor496: 3tnk
+ Location: 86,20
+ Owner: Soviets
+ Actor646: fenc
+ Location: 84,70
+ Owner: Soviets
+ Actor649: fenc
+ Location: 86,70
+ Owner: Soviets
+ Actor648: fenc
+ Location: 85,70
+ Owner: Soviets
+ Actor100: e1
+ Location: 87,61
+ Owner: Soviets
+ Actor339: e1
+ Location: 80,59
+ Owner: Soviets
+ Actor589: dog
+ Location: 80,57
+ Owner: Soviets
+ Actor340: e1
+ Location: 77,58
+ Owner: Soviets
+ Actor55: wood
+ Location: 79,94
+ Owner: Neutral
+ Actor168: wood
+ Location: 79,95
+ Owner: Neutral
+ Actor172: wood
+ Location: 79,96
+ Owner: Neutral
+ Actor324: t05
+ Location: 64,63
+ Owner: Neutral
+ Actor265: tsla
+ Location: 61,65
+ Owner: Soviets
+ Actor257: proc
+ Location: 35,28
+ Owner: Soviets
+ Actor325: t12
+ Location: 48,52
+ Owner: Neutral
+ Actor661: tc03
+ Location: 54,16
+ Owner: Neutral
+ Actor326: t17
+ Location: 34,50
+ Owner: Neutral
+ Actor667: tc04
+ Location: 88,106
+ Owner: Neutral
+ Actor668: t16
+ Location: 80,106
+ Owner: Neutral
+ Actor670: fenc
+ Location: 95,78
+ Owner: Soviets
+ Actor671: fenc
+ Location: 94,78
+ Owner: Soviets
+ Actor672: fenc
+ Location: 93,78
+ Owner: Soviets
+ Actor69: e1
+ Location: 90,102
+ Owner: Soviets
+ Actor68: e2
+ Location: 92,102
+ Owner: Soviets
+ Actor63: e1
+ Location: 92,104
+ Owner: Soviets
+ Actor673: wood
+ Location: 82,97
+ Owner: Neutral
+ Actor674: wood
+ Location: 81,97
+ Owner: Neutral
+ Actor176: tsla
+ Location: 56,37
+ Owner: Soviets
+ Actor681: wood
+ Location: 70,100
+ Owner: Neutral
+ Actor680: wood
+ Location: 69,100
+ Owner: Neutral
+ Actor308: apwr
+ Location: 54,63
+ Owner: Soviets
+ Actor262: t06
+ Location: 20,51
+ Owner: Neutral
+ Actor676: wood
+ Location: 79,97
+ Owner: Neutral
+ Actor185: ftur
+ Location: 42,62
+ Owner: Soviets
+ Actor675: wood
+ Location: 80,97
+ Owner: Neutral
+ Actor686: brl3
+ Location: 82,73
+ Owner: Soviets
+ Actor148: proc
+ Location: 40,36
+ Owner: Soviets
+ Actor707: v18
+ Location: 68,97
+ Owner: Neutral
+ Actor612: t07
+ Location: 80,67
+ Owner: Neutral
+ Actor601: t11
+ Location: 74,72
+ Owner: Neutral
+ Actor627: t01
+ Location: 84,59
+ Owner: Neutral
+ Actor131: sbag
+ Location: 92,49
+ Owner: Soviets
+ Actor264: t10
+ Location: 17,45
+ Owner: Neutral
+ Actor177: hpad
+ Location: 45,44
+ Owner: Soviets
+ Actor179: tsla
+ Location: 25,53
+ Owner: Soviets
+ Actor180: ftur
+ Location: 32,25
+ Owner: Soviets
+ Actor700: tsla
+ Location: 55,18
+ Owner: Soviets
+ Actor183: ftur
+ Location: 22,40
+ Owner: Soviets
+ Actor708: v17
+ Location: 69,97
+ Owner: Neutral
+ Actor101: dog
+ Location: 98,74
+ Owner: Soviets
+ Actor715: e2
+ Location: 75,34
+ Owner: Soviets
+ Actor0: silo
+ Location: 94,72
+ Owner: Soviets
+ Actor602: fenc
+ Location: 99,80
+ Owner: Soviets
+ Actor346: fenc
+ Location: 100,80
+ Owner: Soviets
+ Actor166: fenc
+ Location: 101,80
+ Owner: Soviets
+ Actor54: ftur
+ Location: 97,77
+ Owner: Soviets
+ Actor725: fenc
+ Location: 75,74
+ Owner: Soviets
+ Actor724: fenc
+ Location: 76,74
+ Owner: Soviets
+ Actor726: fenc
+ Location: 74,74
+ Owner: Soviets
+ Actor727: fenc
+ Location: 73,74
+ Owner: Soviets
+ Actor728: fenc
+ Location: 72,74
+ Owner: Soviets
+ Actor729: fenc
+ Location: 72,73
+ Owner: Soviets
+ Actor730: fenc
+ Location: 72,72
+ Owner: Soviets
+ Actor40: tran.husk1
+ Location: 69,87
+ Owner: Neutral
+ Actor333: brl3
+ Location: 21,73
+ Owner: Neutral
+ Actor145: mine
+ Location: 44,29
+ Owner: Neutral
+ Actor270: e1
+ Location: 31,87
+ Owner: Soviets
+ Actor573: 2tnk
+ Location: 34,92
+ Owner: Allies
+ Facing: 0
+ Actor577: tc02
+ Location: 81,87
+ Owner: Neutral
+ Actor329: e1
+ Location: 41,87
+ Owner: Soviets
+ Actor574: 2tnk
+ Location: 35,92
+ Owner: Allies
+ Facing: 0
+ Actor578: v11
+ Location: 64,84
+ Owner: Neutral
+ Actor546: 1tnk
+ Location: 38,90
+ Owner: Allies
+ Facing: 0
+ Actor342: e1
+ Location: 99,38
+ Owner: Soviets
+ Actor286: e1
+ Location: 104,67
+ Owner: Soviets
+ Actor755: e1
+ Location: 107,70
+ Owner: Soviets
+ Actor756: e2
+ Location: 107,67
+ Owner: Soviets
+ Actor161: proc
+ Location: 108,69
+ Owner: Soviets
+ Actor285: powr
+ Location: 102,68
+ Owner: Soviets
+ Actor309: apwr
+ Location: 51,65
+ Owner: Soviets
+ Actor316: fact
+ Location: 59,61
+ Owner: Soviets
+ Actor323: t06
+ Location: 29,43
+ Owner: Neutral
+ Actor722: t14
+ Location: 67,52
+ Owner: Neutral
+ Actor763: tsla
+ Location: 79,25
+ Owner: Soviets
+ Actor764: e1
+ Location: 95,59
+ Owner: Soviets
+ Actor765: e1
+ Location: 98,56
+ Owner: Soviets
+ Actor207: fenc
+ Location: 61,39
+ Owner: Soviets
+ Actor767: dog
+ Location: 95,57
+ Owner: Soviets
+ Actor766: e1
+ Location: 93,56
+ Owner: Soviets
+ Actor205: fenc
+ Location: 60,39
+ Owner: Soviets
+ Actor187: afld
+ Location: 35,37
+ Owner: Soviets
+ Actor213: v2rl
+ Location: 52,44
+ Owner: Soviets
+ Actor272: t16
+ Location: 26,30
+ Owner: Neutral
+ Actor214: fenc
+ Location: 62,41
+ Owner: Soviets
+ Actor233: tc01
+ Location: 29,53
+ Owner: Neutral
+ Actor212: fenc
+ Location: 61,41
+ Owner: Soviets
+ Actor776: e1
+ Location: 74,69
+ Owner: Soviets
+ Actor230: tc03
+ Location: 16,55
+ Owner: Neutral
+ Actor167: fix
+ Location: 57,50
+ Owner: Soviets
+ Actor802: t06
+ Location: 22,64
+ Owner: Neutral
+ Actor165: mine
+ Location: 40,24
+ Owner: Neutral
+ Actor322: tsla
+ Location: 48,65
+ Owner: Soviets
+ Actor255: gun
+ Location: 42,91
+ Owner: Allies
+ Actor268: e1
+ Location: 33,90
+ Owner: Allies
+ Actor269: e1
+ Location: 34,90
+ Owner: Allies
+ Actor267: pbox
+ Location: 30,90
+ Owner: Allies
+ Actor882: barl
+ Location: 46,81
+ Owner: Neutral
+ Actor202: kenn
+ Location: 45,49
+ Owner: Soviets
+ Actor184: fenc
+ Location: 59,39
+ Owner: Soviets
+ Actor256: fenc
+ Location: 64,42
+ Owner: Soviets
+ Actor240: silo
+ Location: 38,34
+ Owner: Soviets
+ Actor173: ftur
+ Location: 66,44
+ Owner: Soviets
+ Actor305: ftur
+ Location: 46,21
+ Owner: Soviets
+ Actor261: tc01
+ Location: 42,77
+ Owner: Neutral
+ Actor778: t05
+ Location: 48,78
+ Owner: Neutral
+ Actor831: t15
+ Location: 47,82
+ Owner: Neutral
+ Actor865: t08
+ Location: 24,110
+ Owner: Neutral
+ Actor864: t01
+ Location: 33,109
+ Owner: Neutral
+ Actor862: t07
+ Location: 41,71
+ Owner: Neutral
+ Actor867: t01
+ Location: 16,68
+ Owner: Neutral
+ Actor883: barl
+ Location: 44,79
+ Owner: Neutral
+ Actor905: v01
+ Location: 20,74
+ Owner: Neutral
+ Actor209: fenc
+ Location: 61,40
+ Owner: Soviets
+ Actor276: fenc
+ Location: 65,44
+ Owner: Soviets
+ Actor197: tsla
+ Location: 55,45
+ Owner: Soviets
+ Actor277: fenc
+ Location: 57,39
+ Owner: Soviets
+ Actor288: apwr
+ Location: 51,62
+ Owner: Soviets
+ Actor278: fenc
+ Location: 56,39
+ Owner: Soviets
+ Actor274: fenc
+ Location: 64,43
+ Owner: Soviets
+ Actor252: fenc
+ Location: 64,41
+ Owner: Soviets
+ Actor906: v03
+ Location: 16,72
+ Owner: Neutral
+ Actor175: fenc
+ Location: 58,39
+ Owner: Soviets
+ Actor271: v2rl
+ Location: 29,33
+ Owner: Soviets
+ Facing: 0
+ Actor186: afld
+ Location: 53,40
+ Owner: Soviets
+ Actor238: silo
+ Location: 39,34
+ Owner: Soviets
+ Actor241: silo
+ Location: 38,33
+ Owner: Soviets
+ Actor178: e3
+ Location: 37,43
+ Owner: Soviets
+ Actor190: e3
+ Location: 35,35
+ Owner: Soviets
+ Actor191: e3
+ Location: 38,52
+ Owner: Soviets
+ Actor337: e3
+ Location: 37,53
+ Owner: Soviets
+ Actor338: e3
+ Location: 45,58
+ Owner: Soviets
+ Actor341: e3
+ Location: 54,50
+ Owner: Soviets
+ Actor343: e3
+ Location: 66,49
+ Owner: Soviets
+ Actor344: e3
+ Location: 62,60
+ Owner: Soviets
+ Actor345: e2
+ Location: 42,51
+ Owner: Soviets
+ Actor349: e2
+ Location: 55,55
+ Owner: Soviets
+ Actor350: e2
+ Location: 43,35
+ Owner: Soviets
+ Actor351: dog
+ Location: 43,55
+ Owner: Soviets
+ Actor352: dog
+ Location: 45,60
+ Owner: Soviets
+ Actor353: dog
+ Location: 41,42
+ Owner: Soviets
+ Actor354: dog
+ Location: 57,46
+ Owner: Soviets
+ Actor355: dog
+ Location: 40,31
+ Owner: Soviets
+ Actor357: 3tnk
+ Location: 43,59
+ Owner: Soviets
+ Facing: 90
+ Actor537: harv
+ Location: 25,94
+ Owner: Allies
+ Facing: 96
+ Actor358: 3tnk
+ Location: 38,55
+ Owner: Soviets
+ Facing: 110
+ Actor359: v2rl
+ Location: 44,53
+ Owner: Soviets
+ Actor282: tent
+ Location: 40,94
+ Owner: Allies
+ Actor290: pbox
+ Location: 39,92
+ Owner: Allies
+ ChinookHusk: tran.husk2
+ Location: 108,87
+ Owner: Neutral
+ Einstein: einstein
+ Location: 66,85
+ Owner: Neutral
+ TanyaLocation: waypoint
+ Location: 106,86
+ Owner: Allies1
+ Engineer: e6
+ Location: 68,86
+ Owner: Neutral
+ Sam1: sam
+ Location: 105,97
+ Owner: Soviets
+ Sam2: sam
+ Location: 91,65
+ Owner: Soviets
+ Sam3: sam
+ Location: 94,18
+ Owner: Soviets
+ Sam4: sam
+ Location: 31,37
+ Owner: Soviets
+ Allies2BasePoint: waypoint
+ Location: 34,96
+ Owner: Neutral
+ AlliedBaseBottomRight: waypoint
+ Location: 51,111
+ Owner: Neutral
+ AlliedBaseTopLeft: waypoint
+ Location: 16,84
+ Owner: Neutral
+ ReinforcementsEntryPoint: waypoint
+ Location: 31,111
+ Owner: Neutral
+ ExtractionLZEntryPoint: waypoint
+ Location: 16,16
+ Owner: Neutral
+ ExtractionLZ: waypoint
+ Location: 30,38
+ Owner: Neutral
+ TanksEntryPoint: waypoint
+ Location: 16,86
+ Owner: Neutral
+ SovietRallyPoint: waypoint
+ Location: 36,65
+ Owner: Neutral
+ TownPoint: waypoint
+ Location: 70,89
+ Owner: Neutral
+ SovietTownAttackPoint1: waypoint
+ Location: 72,110
+ Owner: Neutral
+ SovietTownAttackPoint2: waypoint
+ Location: 86,78
+ Owner: Neutral
+ BadgerEntryPoint1: waypoint
+ Location: 40,16
+ Owner: Neutral
+ BadgerEntryPoint2: waypoint
+ Location: 111,77
+ Owner: Neutral
+ BadgerDropPoint1: waypoint
+ Location: 19,96
+ Owner: Neutral
+ BadgerDropPoint2: waypoint
+ Location: 34,106
+ Owner: Neutral
+ BadgerDropPoint3: waypoint
+ Location: 26,100
+ Owner: Neutral
+ ParabombPoint1: waypoint
+ Location: 39,105
+ Owner: Neutral
+ ParabombPoint2: waypoint
+ Location: 39,108
+ Owner: Neutral
+ YakEntryPoint: waypoint
+ Location: 99,16
+ Owner: Neutral
+ YakAttackPoint: waypoint
+ Location: 78,62
+ Owner: Neutral
+ FlamersEntryPoint: waypoint
+ Location: 16,74
+ Owner: Neutral
+ SovietBarracks: barr
+ Location: 39,49
+ Owner: Soviets
+ SovietWarFactory: weap
+ Location: 51,47
+ Owner: Soviets
+ TownUnit01: e1
+ Location: 67,88
+ Owner: Neutral
+ TownUnit02: e1
+ Location: 69,89
+ Owner: Neutral
+ TownUnit03: e1
+ Location: 69,93
+ Owner: Neutral
+ TownUnit04: e1
+ Location: 73,85
+ Owner: Neutral
+ TownUnit05: e1
+ Location: 71,86
+ Owner: Neutral
+ TownUnit06: e1
+ Location: 68,91
+ Owner: Neutral
+ TownUnit07: e1
+ Location: 73,88
+ Owner: Neutral
+ TownUnit08: e1
+ Location: 70,86
+ Owner: Neutral
+ TownUnit09: e1
+ Location: 69,84
+ Owner: Neutral
+ TownUnit10: e1
+ Location: 73,90
+ Owner: Neutral
+ TownUnit11: e3
+ Location: 66,89
+ Owner: Neutral
+ TownUnit12: e3
+ Location: 66,87
+ Owner: Neutral
+ TownUnit13: e3
+ Location: 64,88
+ Owner: Neutral
+ TownUnit14: e1
+ Location: 70,88
+ Owner: Neutral
+ TownAttacker01: e1
+ Location: 73,83
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker02: e1
+ Location: 80,87
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker03: e2
+ Location: 104,101
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker04: e2
+ Location: 77,96
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker05: e1
+ Location: 71,99
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker06: e1
+ Location: 69,110
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker07: e1
+ Location: 74,109
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker08: e1
+ Location: 73,110
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker09: e1
+ Location: 71,109
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker10: e2
+ Location: 74,110
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker11: e2
+ Location: 70,109
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker12: e2
+ Location: 73,109
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker13: e1
+ Location: 72,109
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker14: e1
+ Location: 70,110
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker15: e1
+ Location: 82,77
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker16: e1
+ Location: 85,76
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker17: e1
+ Location: 89,79
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker18: e1
+ Location: 84,79
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker19: e1
+ Location: 89,80
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker20: e2
+ Location: 86,77
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker21: dog
+ Location: 87,79
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker22: 3tnk
+ Location: 84,77
+ Owner: Soviets
+ ScriptTags: TownAttacker
+ TownAttacker23: e2
+ Location: 74,92
+ Owner: Soviets
+ ScriptTags: TownAttacker
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
diff --git a/mods/ura/maps/evacuation/rules.yaml b/mods/ura/maps/evacuation/rules.yaml
new file mode 100644
index 0000000..23708f0
--- /dev/null
+++ b/mods/ura/maps/evacuation/rules.yaml
@@ -0,0 +1,221 @@
+Player:
+ MissionObjectives:
+ Cooperative: True
+ PlayerResources:
+ DefaultCash: 5000
+
+World:
+ MissionData:
+ Briefing: One of our outposts is under heavy attack by a nearby Soviet base. Einstein, Tanya and many of our forces have been evacuated via helicopters, but those were shot down on the other side of the river. Fortunately they survived the crash, but are now in enemy territory. Tanya and the rest of the surviving forces need to fight their way out of there. The air defenses must be eliminated before another Search & Rescue helicopter can arrive.\n\nMeanwhile, the forces remaining at the base need to fend off the Soviet attacks.\n
+ LuaScript:
+ Scripts: evacuation.lua
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ Default: normal
+
+^Palettes:
+ IndexedPlayerPalette:
+ PlayerIndex:
+ Soviets: 229, 230, 231, 232, 233, 234, 235, 8, 236, 237, 238, 239, 221, 222, 223, 223
+ Allies: 224, 224, 225, 225, 226, 184, 185, 186, 187, 188, 188, 189, 190, 190, 191, 191
+ Allies1: 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175
+ Allies2: 208, 208, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 154, 155, 143
+
+^Tanks:
+ Demolishable:
+
+^Vehicles:
+ Demolishable:
+
+E1:
+ ScriptTags:
+
+E2:
+ ScriptTags:
+
+DOG:
+ ScriptTags:
+
+3TNK:
+ ScriptTags:
+
+TRAN.Husk1:
+ Burns:
+ Damage: 0
+
+TRAN.Husk2:
+ Burns:
+ Damage: 0
+
+E7:
+ Passenger:
+ Weight: 0
+ Buildable:
+ Prerequisites: ~disabled
+
+EINSTEIN:
+ Passenger:
+ Weight: 0
+
+V01:
+ SpawnActorOnDeath:
+ Actor: healcrate
+
+TRAN:
+ -Selectable:
+ Buildable:
+ Prerequisites: ~disabled
+ RevealsShroud:
+ Range: 0c0
+ Interactable:
+
+2TNK:
+ Buildable:
+ Prerequisites: ~vehicles.allies
+
+MECH:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPEN:
+ Buildable:
+ Prerequisites: ~disabled
+
+SYRD:
+ Buildable:
+ Prerequisites: ~disabled
+
+TSLA:
+ Buildable:
+ Prerequisites: ~disabled
+
+AGUN:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+ATEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+HPAD:
+ Buildable:
+ Prerequisites: ~disabled
+
+AFLD:
+ Buildable:
+ Prerequisites: ~disabled
+
+STEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+GAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+PDOX:
+ Buildable:
+ Prerequisites: ~disabled
+
+IRON:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+MIG:
+ Buildable:
+ Prerequisites: ~disabled
+
+HELI:
+ Buildable:
+ Prerequisites: ~disabled
+
+4TNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+ARTY:
+ Buildable:
+ Prerequisites: ~disabled
+
+APC:
+ Buildable:
+ Prerequisites: ~disabled
+
+MNLY:
+ Buildable:
+ Prerequisites: ~disabled
+
+TRUK:
+ Buildable:
+ Prerequisites: ~disabled
+
+FTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MRJ:
+ Buildable:
+ Prerequisites: ~disabled
+
+MGG:
+ Buildable:
+ Prerequisites: ~disabled
+
+TTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+QTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+DTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+CTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+STNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSUB:
+ Buildable:
+ Prerequisites: ~disabled
+
+Camera.SAM:
+ Inherits: CAMERA
+ RevealsShroud:
+ Range: 2c0
+
+powerproxy.paras1:
+ Inherits: powerproxy.paratroopers
+ ParatroopersPower:
+ DropItems: E1,E1,E1,E2,3TNK
+
+powerproxy.paras2:
+ Inherits: powerproxy.paratroopers
+ ParatroopersPower:
+ DropItems: E1,E1,E1,E2,E2
diff --git a/mods/ura/maps/exodus/exodus.lua b/mods/ura/maps/exodus/exodus.lua
new file mode 100644
index 0000000..0e4a213
--- /dev/null
+++ b/mods/ura/maps/exodus/exodus.lua
@@ -0,0 +1,379 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+Difficulty = Map.LobbyOption("difficulty")
+
+UnitsEvacuatedThreshold =
+{
+ hard = 200,
+ normal = 100,
+ easy = 50
+}
+
+AttackAtFrame =
+{
+ hard = 500,
+ normal = 500,
+ easy = 600
+}
+
+MinAttackAtFrame =
+{
+ hard = 100,
+ normal = 100,
+ easy = 150
+}
+
+MaxSovietYaks =
+{
+ hard = 4,
+ normal = 2,
+ easy = 0
+}
+
+SovietParadrops =
+{
+ hard = 40,
+ normal = 20,
+ easy = 0
+}
+
+SovietParadropTicks =
+{
+ hard = DateTime.Minutes(17),
+ normal = DateTime.Minutes(20),
+ easy = DateTime.Minutes(20)
+}
+
+SovietUnits2Ticks =
+{
+ hard = DateTime.Minutes(12),
+ normal = DateTime.Minutes(15),
+ easy = DateTime.Minutes(15)
+}
+
+SovietEntryPoints =
+{
+ SovietEntryPoint1, SovietEntryPoint2, SovietEntryPoint3, SovietEntryPoint4, SovietEntryPoint5, SovietEntryPoint6
+}
+
+SovietRallyPoints =
+{
+ SovietRallyPoint1, SovietRallyPoint2, SovietRallyPoint3, SovietRallyPoint4, SovietRallyPoint5, SovietRallyPoint6
+}
+
+SovietAirfields =
+{
+ SovietAirfield1, SovietAirfield2, SovietAirfield3, SovietAirfield4,
+ SovietAirfield5, SovietAirfield6, SovietAirfield7, SovietAirfield8
+}
+
+MountainEntry =
+{
+ MountainEntry1.Location, MountainEntry2.Location, MountainEntry3.Location, MountainEntry4.Location,
+ MountainEntry5.Location, MountainEntry6.Location, MountainEntry7.Location, MountainEntry8.Location
+}
+
+BridgeEntry =
+{
+ BridgeEntry1.Location, BridgeEntry2.Location, BridgeEntry3.Location, BridgeEntry4.Location
+}
+
+MobileConstructionVehicle = { "mcv" }
+Yak = { "yak" }
+
+ReinforcementsTicks1 = DateTime.Minutes(5)
+Reinforcements1 =
+{
+ "mgg", "2tnk", "2tnk", "2tnk", "2tnk", "1tnk", "1tnk",
+ "jeep", "jeep", "e1", "e1", "e1", "e1", "e3", "e3"
+}
+
+ReinforcementsTicks2 = DateTime.Minutes(10)
+Reinforcements2 =
+{
+ "mgg", "2tnk", "2tnk", "2tnk", "2tnk", "truk", "truk", "truk",
+ "truk", "truk", "truk", "1tnk", "1tnk", "jeep", "jeep"
+}
+
+SovietUnits1 =
+{
+ "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "v2rl", "v2rl", "ftrk",
+ "apc", "e1", "e1", "e2", "e3", "e3", "e4"
+}
+
+SovietUnits2 =
+{
+ "4tnk", "4tnk", "4tnk", "4tnk", "3tnk", "3tnk", "3tnk", "3tnk", "v2rl",
+ "v2rl", "ftrk", "apc", "e1", "e1", "e2", "e3", "e3", "e4"
+}
+
+CurrentReinforcement1 = 0
+CurrentReinforcement2 = 0
+SpawnAlliedUnit = function(units)
+ Reinforcements.Reinforce(allies1, units, { Allies1EntryPoint.Location, Allies1MovePoint.Location })
+
+ if allies2 then
+ Reinforcements.Reinforce(allies2, units, { Allies2EntryPoint.Location, Allies2MovePoint.Location })
+ end
+
+ Utils.Do(humans, function(player)
+ Trigger.AfterDelay(DateTime.Seconds(2), function()
+ Media.PlaySpeechNotification(player, "AlliedReinforcementsNorth")
+ end)
+ end)
+
+ if CurrentReinforcement1 < #Reinforcements1 then
+ CurrentReinforcement1 = CurrentReinforcement1 + 1
+ Trigger.AfterDelay(ReinforcementsTicks1, function()
+ reinforcements1 = { Reinforcements1[CurrentReinforcement1] }
+ SpawnAlliedUnit(reinforcements1)
+ end)
+ end
+
+ if CurrentReinforcement2 < #Reinforcements2 then
+ CurrentReinforcement2 = CurrentReinforcement2 + 1
+ Trigger.AfterDelay(ReinforcementsTicks2, function()
+ reinforcements2 = { Reinforcements2[CurrentReinforcement2] }
+ SpawnAlliedUnit(reinforcements2)
+ end)
+ end
+end
+
+SovietGroupSize = 5
+SpawnSovietUnits = function()
+
+ local units = SovietUnits1
+ if DateTime.GameTime >= SovietUnits2Ticks[Difficulty] then
+ units = SovietUnits2
+ end
+
+ local unitType = Utils.Random(units)
+ local spawnPoint = Utils.Random(SovietEntryPoints)
+ local rallyPoint = Utils.Random(SovietRallyPoints)
+ local actor = Actor.Create(unitType, true, { Owner = soviets, Location = spawnPoint.Location })
+ actor.AttackMove(rallyPoint.Location)
+ IdleHunt(actor)
+
+ local delay = math.max(attackAtFrame - 5, minAttackAtFrame)
+ Trigger.AfterDelay(delay, SpawnSovietUnits)
+end
+
+SovietParadrop = 0
+SendSovietParadrop = function()
+ local sovietParadrops = SovietParadrops[Difficulty]
+
+ if (SovietParadrop > sovietParadrops) then
+ return
+ end
+
+ SovietParadrop = SovietParadrop + 1
+
+ Utils.Do(humans, function(player)
+ Media.PlaySpeechNotification(player, "SovietForcesApproaching")
+ end)
+
+ local x = Utils.RandomInteger(ParadropBoxTopLeft.Location.X, ParadropBoxBottomRight.Location.X)
+ local y = Utils.RandomInteger(ParadropBoxBottomRight.Location.Y, ParadropBoxTopLeft.Location.Y)
+
+ local randomParadropCell = CPos.New(x, y)
+ local lz = Map.CenterOfCell(randomParadropCell)
+
+ local powerproxy = Actor.Create("powerproxy.paratroopers", false, { Owner = soviets })
+ powerproxy.SendParatroopers(lz)
+ powerproxy.Destroy()
+
+ Trigger.AfterDelay(sovietParadropTicks, SendSovietParadrop)
+end
+
+IdleHunt = function(unit)
+ Trigger.OnIdle(unit, unit.Hunt)
+ Trigger.OnCapture(unit, function()
+ Trigger.ClearAll(unit)
+ end)
+end
+
+AircraftTargets = function(yak)
+ local targets = Utils.Where(Map.ActorsInWorld, function(a)
+ return (a.Owner == allies1 or a.Owner == allies2) and a.HasProperty("Health") and yak.CanTarget(a)
+ end)
+
+ -- Prefer mobile units
+ table.sort(targets, function(a, b) return a.HasProperty("Move") and not b.HasProperty("Move") end)
+
+ return targets
+end
+
+YakAttack = function(yak, target)
+ if not target or target.IsDead or (not target.IsInWorld) or (not yak.CanTarget(target)) then
+ local targets = AircraftTargets(yak)
+ if #targets > 0 then
+ target = Utils.Random(targets)
+ end
+ end
+
+ if target and yak.AmmoCount() > 0 and yak.CanTarget(target) then
+ yak.Attack(target)
+ else
+ -- Includes yak.Resupply()
+ yak.ReturnToBase()
+ end
+
+ yak.CallFunc(function()
+ YakAttack(yak, target)
+ end)
+end
+
+ManageSovietAircraft = function()
+ if allies1.IsObjectiveCompleted(destroyAirbases) then
+ return
+ end
+
+ local maxSovietYaks = MaxSovietYaks[Difficulty]
+ local sovietYaks = soviets.GetActorsByType('yak')
+ if #sovietYaks < maxSovietYaks then
+ soviets.Build(Yak, function(units)
+ local yak = units[1]
+ YakAttack(yak)
+ end)
+ end
+end
+
+UnitsEvacuated = 0
+EvacuateAlliedUnit = function(unit)
+ if (unit.Owner == allies1 or unit.Owner == allies2) and unit.HasProperty("Move") then
+ unit.Stop()
+ unit.Owner = allies
+
+ if unit.Type == 'mgg' then
+ Utils.Do(humans, function(player)
+ if player then
+ player.MarkCompletedObjective(evacuateMgg)
+ end
+ end)
+ end
+
+ UnitsEvacuated = UnitsEvacuated + 1
+ if unit.HasProperty("HasPassengers") then
+ UnitsEvacuated = UnitsEvacuated + unit.PassengerCount
+ end
+
+ local exitCell = Map.ClosestEdgeCell(unit.Location)
+ Trigger.OnIdle(unit, function()
+ unit.ScriptedMove(exitCell)
+ end)
+
+ local exit = Map.CenterOfCell(exitCell)
+ Trigger.OnEnteredProximityTrigger(exit, WDist.FromCells(1), function(a)
+ a.Destroy()
+ end)
+
+ UserInterface.SetMissionText(UnitsEvacuated .. "/" .. unitsEvacuatedThreshold .. " units evacuated.", TextColor)
+
+ if UnitsEvacuated >= unitsEvacuatedThreshold then
+ Utils.Do(humans, function(player)
+ if player then
+ player.MarkCompletedObjective(evacuateUnits)
+ end
+ end)
+ end
+ end
+end
+
+Tick = function()
+ if DateTime.GameTime % 100 == 0 then
+ ManageSovietAircraft()
+
+ Utils.Do(humans, function(player)
+ if player and player.HasNoRequiredUnits() then
+ soviets.MarkCompletedObjective(sovietObjective)
+ end
+ end)
+ end
+end
+
+WorldLoaded = function()
+ -- NPC
+ neutral = Player.GetPlayer("Neutral")
+ allies = Player.GetPlayer("Allies")
+ soviets = Player.GetPlayer("Soviets")
+
+ -- Player controlled
+ allies1 = Player.GetPlayer("Allies1")
+ allies2 = Player.GetPlayer("Allies2")
+
+ humans = { allies1, allies2 }
+ Utils.Do(humans, function(player)
+ if player and player.IsLocalPlayer then
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "MissionAccomplished")
+ end)
+
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "MissionFailed")
+ end)
+
+ TextColor = player.Color
+ end
+ end)
+
+ unitsEvacuatedThreshold = UnitsEvacuatedThreshold[Difficulty]
+ UserInterface.SetMissionText(UnitsEvacuated .. "/" .. unitsEvacuatedThreshold .. " units evacuated.", TextColor)
+ Utils.Do(humans, function(player)
+ if player then
+ evacuateUnits = player.AddPrimaryObjective("Evacuate " .. unitsEvacuatedThreshold .. " units.")
+ destroyAirbases = player.AddSecondaryObjective("Destroy the nearby Soviet airbases.")
+ evacuateMgg = player.AddSecondaryObjective("Evacuate at least one mobile gap generator.")
+ end
+ end)
+
+ Trigger.OnAllKilledOrCaptured(SovietAirfields, function()
+ Utils.Do(humans, function(player)
+ if player then
+ player.MarkCompletedObjective(destroyAirbases)
+ end
+ end)
+ end)
+
+ sovietObjective = soviets.AddPrimaryObjective("Eradicate all allied troops.")
+
+ if not allies2 or allies1.IsLocalPlayer then
+ Camera.Position = Allies1EntryPoint.CenterPosition
+ else
+ Camera.Position = Allies2EntryPoint.CenterPosition
+ end
+
+ if not allies2 then
+ allies1.Cash = 10000
+ Media.DisplayMessage("Transferring funds.", "Co-Commander is missing")
+ end
+
+ SpawnAlliedUnit(MobileConstructionVehicle)
+
+ minAttackAtFrame = MinAttackAtFrame[Difficulty]
+ attackAtFrame = AttackAtFrame[Difficulty]
+ Trigger.AfterDelay(attackAtFrame, SpawnSovietUnits)
+
+ sovietParadropTicks = SovietParadropTicks[Difficulty]
+ Trigger.AfterDelay(sovietParadropTicks, SendSovietParadrop)
+
+ Trigger.OnEnteredFootprint(MountainEntry, EvacuateAlliedUnit)
+ Trigger.OnEnteredFootprint(BridgeEntry, EvacuateAlliedUnit)
+end
diff --git a/mods/ura/maps/exodus/map.bin b/mods/ura/maps/exodus/map.bin
new file mode 100644
index 0000000..1889cec
Binary files /dev/null and b/mods/ura/maps/exodus/map.bin differ
diff --git a/mods/ura/maps/exodus/map.png b/mods/ura/maps/exodus/map.png
new file mode 100644
index 0000000..29bfd56
Binary files /dev/null and b/mods/ura/maps/exodus/map.png differ
diff --git a/mods/ura/maps/exodus/map.yaml b/mods/ura/maps/exodus/map.yaml
new file mode 100644
index 0000000..585ae88
--- /dev/null
+++ b/mods/ura/maps/exodus/map.yaml
@@ -0,0 +1,1429 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Exodus
+
+Author: Scott_NZ
+
+Tileset: SNOW
+
+MapSize: 192,96
+
+Bounds: 16,16,160,64
+
+Visibility: Lobby, MissionSelector
+
+Categories: Mission, Cooperative Mission
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Allies1:
+ Name: Allies1
+ AllowBots: False
+ Playable: True
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: ABB7E4
+ LockSpawn: True
+ LockTeam: True
+ Allies: Allies2, Allies
+ Enemies: Soviets
+ PlayerReference@Allies2:
+ Name: Allies2
+ AllowBots: False
+ Playable: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: A1EF8C
+ LockSpawn: True
+ LockTeam: True
+ Allies: Allies1, Allies
+ Enemies: Soviets
+ PlayerReference@Allies:
+ Name: Allies
+ Faction: allies
+ Color: 5CC1A3
+ Allies: Allies1, Allies2
+ Enemies: Soviets
+ PlayerReference@Soviets:
+ Name: Soviets
+ Faction: soviet
+ Color: FE1100
+ Enemies: Allies1, Allies2
+
+Actors:
+ Actor239: dog
+ Location: 169,60
+ Owner: Soviets
+ Actor12: t08
+ Location: 163,57
+ Owner: Neutral
+ Actor14: t14
+ Location: 148,59
+ Owner: Neutral
+ Actor25: t07
+ Location: 142,77
+ Owner: Neutral
+ Actor29: t07
+ Location: 165,78
+ Owner: Neutral
+ Actor21: mine
+ Location: 169,71
+ Owner: Neutral
+ Actor23: t08
+ Location: 124,40
+ Owner: Neutral
+ Actor10: tc04
+ Location: 43,67
+ Owner: Neutral
+ Actor28: t02
+ Location: 151,51
+ Owner: Neutral
+ Actor34: t17
+ Location: 148,52
+ Owner: Neutral
+ Actor36: tc04
+ Location: 172,46
+ Owner: Neutral
+ Actor37: t02
+ Location: 169,46
+ Owner: Neutral
+ Actor39: t02
+ Location: 148,45
+ Owner: Neutral
+ Actor42: t10
+ Location: 151,47
+ Owner: Neutral
+ Actor9: tc04
+ Location: 33,41
+ Owner: Neutral
+ Actor52: t05
+ Location: 163,47
+ Owner: Neutral
+ Actor53: tc03
+ Location: 138,53
+ Owner: Neutral
+ SovietAirfield5: afld
+ Location: 62,47
+ Owner: Soviets
+ Actor57: tc04
+ Location: 43,19
+ Owner: Neutral
+ Actor58: tc04
+ Location: 56,18
+ Owner: Neutral
+ Actor59: tc04
+ Location: 69,28
+ Owner: Neutral
+ Actor60: tc05
+ Location: 63,19
+ Owner: Neutral
+ Actor61: tc05
+ Location: 48,19
+ Owner: Neutral
+ Actor62: tc05
+ Location: 37,18
+ Owner: Neutral
+ Actor63: tc05
+ Location: 78,14
+ Owner: Neutral
+ Actor64: tc03
+ Location: 70,19
+ Owner: Neutral
+ Actor65: tc03
+ Location: 55,26
+ Owner: Neutral
+ Actor66: tc03
+ Location: 45,24
+ Owner: Neutral
+ Actor67: tc03
+ Location: 38,23
+ Owner: Neutral
+ Actor68: tc02
+ Location: 39,21
+ Owner: Neutral
+ Actor69: tc02
+ Location: 42,16
+ Owner: Neutral
+ Actor70: tc02
+ Location: 50,16
+ Owner: Neutral
+ Actor71: tc02
+ Location: 51,22
+ Owner: Neutral
+ Actor72: tc02
+ Location: 64,29
+ Owner: Neutral
+ Actor73: tc02
+ Location: 67,24
+ Owner: Neutral
+ Actor74: tc02
+ Location: 74,17
+ Owner: Neutral
+ Actor75: tc01
+ Location: 61,16
+ Owner: Neutral
+ Actor76: tc01
+ Location: 57,22
+ Owner: Neutral
+ Actor77: tc01
+ Location: 48,23
+ Owner: Neutral
+ Actor78: tc01
+ Location: 38,26
+ Owner: Neutral
+ Actor79: t05
+ Location: 38,20
+ Owner: Neutral
+ Actor80: t05
+ Location: 42,17
+ Owner: Neutral
+ Actor81: t05
+ Location: 47,20
+ Owner: Neutral
+ Actor82: t05
+ Location: 53,25
+ Owner: Neutral
+ Actor83: t05
+ Location: 57,16
+ Owner: Neutral
+ Actor84: t05
+ Location: 56,22
+ Owner: Neutral
+ Actor85: t05
+ Location: 64,27
+ Owner: Neutral
+ Actor86: t05
+ Location: 70,22
+ Owner: Neutral
+ Actor87: t05
+ Location: 68,15
+ Owner: Neutral
+ Actor88: t05
+ Location: 81,18
+ Owner: Neutral
+ Actor89: t16
+ Location: 79,18
+ Owner: Neutral
+ Actor90: t16
+ Location: 68,16
+ Owner: Neutral
+ Actor91: t16
+ Location: 67,22
+ Owner: Neutral
+ Actor92: t16
+ Location: 53,16
+ Owner: Neutral
+ Actor93: t16
+ Location: 51,23
+ Owner: Neutral
+ Actor94: t16
+ Location: 47,16
+ Owner: Neutral
+ Actor95: t16
+ Location: 42,27
+ Owner: Neutral
+ Actor96: t16
+ Location: 38,16
+ Owner: Neutral
+ Actor97: t16
+ Location: 34,20
+ Owner: Neutral
+ Actor98: t02
+ Location: 54,19
+ Owner: Neutral
+ Actor99: t02
+ Location: 64,24
+ Owner: Neutral
+ Actor100: t02
+ Location: 48,26
+ Owner: Neutral
+ Actor101: t02
+ Location: 42,18
+ Owner: Neutral
+ Actor102: t02
+ Location: 37,16
+ Owner: Neutral
+ Actor103: t06
+ Location: 42,24
+ Owner: Neutral
+ Actor104: t06
+ Location: 45,21
+ Owner: Neutral
+ Actor105: t06
+ Location: 58,16
+ Owner: Neutral
+ Actor106: t06
+ Location: 59,28
+ Owner: Neutral
+ Actor107: t06
+ Location: 63,24
+ Owner: Neutral
+ Actor108: t06
+ Location: 67,29
+ Owner: Neutral
+ Actor109: t10
+ Location: 66,17
+ Owner: Neutral
+ Actor110: t10
+ Location: 65,28
+ Owner: Neutral
+ Actor111: t10
+ Location: 54,22
+ Owner: Neutral
+ Actor112: t11
+ Location: 40,23
+ Owner: Neutral
+ Actor113: t11
+ Location: 52,26
+ Owner: Neutral
+ Actor114: t11
+ Location: 69,20
+ Owner: Neutral
+ Actor115: t12
+ Location: 68,30
+ Owner: Neutral
+ Actor116: t12
+ Location: 60,20
+ Owner: Neutral
+ Actor117: t17
+ Location: 44,17
+ Owner: Neutral
+ Actor118: t17
+ Location: 36,19
+ Owner: Neutral
+ Actor119: t08
+ Location: 52,20
+ Owner: Neutral
+ Actor120: t08
+ Location: 70,27
+ Owner: Neutral
+ Actor121: t08
+ Location: 48,16
+ Owner: Neutral
+ Actor123: tc03
+ Location: 17,25
+ Owner: Neutral
+ SovietAirfield4: afld
+ Location: 151,67
+ Owner: Soviets
+ Actor127: t05
+ Location: 17,21
+ Owner: Neutral
+ Actor48: fenc
+ Location: 29,27
+ Owner: Allies
+ Actor130: t02
+ Location: 28,16
+ Owner: Neutral
+ Actor131: t06
+ Location: 48,32
+ Owner: Neutral
+ Actor132: t02
+ Location: 30,35
+ Owner: Neutral
+ Actor133: t03
+ Location: 28,34
+ Owner: Neutral
+ Actor134: t17
+ Location: 55,31
+ Owner: Neutral
+ Actor135: t03
+ Location: 60,37
+ Owner: Neutral
+ Actor136: t11
+ Location: 64,38
+ Owner: Neutral
+ Actor137: t10
+ Location: 65,33
+ Owner: Neutral
+ Actor140: tc05
+ Location: 163,42
+ Owner: Neutral
+ Actor51: t01
+ Location: 48,62
+ Owner: Neutral
+ Actor142: t05
+ Location: 175,43
+ Owner: Neutral
+ Actor143: t02
+ Location: 173,41
+ Owner: Neutral
+ Actor20: mine
+ Location: 158,26
+ Owner: Neutral
+ Actor147: t10
+ Location: 139,41
+ Owner: Neutral
+ Actor148: t13
+ Location: 129,40
+ Owner: Neutral
+ Actor149: t17
+ Location: 134,47
+ Owner: Neutral
+ Actor156: t05
+ Location: 139,44
+ Owner: Neutral
+ Actor150: t05
+ Location: 146,37
+ Owner: Neutral
+ Actor162: t06
+ Location: 126,37
+ Owner: Neutral
+ Actor178: t16
+ Location: 137,77
+ Owner: Neutral
+ Actor370: tc02
+ Location: 25,65
+ Owner: Neutral
+ Actor165: tc03
+ Location: 157,77
+ Owner: Neutral
+ Actor181: t13
+ Location: 137,71
+ Owner: Neutral
+ Actor182: t16
+ Location: 135,57
+ Owner: Neutral
+ Actor184: tc01
+ Location: 124,38
+ Owner: Neutral
+ Actor363: t12
+ Location: 81,50
+ Owner: Neutral
+ Actor345: t08
+ Location: 90,23
+ Owner: Neutral
+ Actor364: t12
+ Location: 83,27
+ Owner: Neutral
+ Actor346: t08
+ Location: 107,28
+ Owner: Neutral
+ Actor153: apwr
+ Location: 55,43
+ Owner: Soviets
+ Actor298: t06
+ Location: 72,50
+ Owner: Neutral
+ Actor30: t01
+ Location: 173,61
+ Owner: Neutral
+ Actor224: ftur
+ Location: 66,60
+ Owner: Soviets
+ Actor203: t16
+ Location: 54,41
+ Owner: Neutral
+ Actor338: tc04
+ Location: 28,76
+ Owner: Neutral
+ Actor1: tc02
+ Location: 95,73
+ Owner: Neutral
+ Actor333: t07
+ Location: 133,36
+ Owner: Neutral
+ Actor238: t01
+ Location: 111,60
+ Owner: Neutral
+ Actor283: t05
+ Location: 102,59
+ Owner: Neutral
+ SovietAirfield6: afld
+ Location: 62,53
+ Owner: Soviets
+ Actor284: t05
+ Location: 82,70
+ Owner: Neutral
+ Actor369: tc02
+ Location: 30,60
+ Owner: Neutral
+ Actor289: t05
+ Location: 71,33
+ Owner: Neutral
+ Actor157: tc05
+ Location: 23,39
+ Owner: Neutral
+ Actor226: tc01
+ Location: 98,24
+ Owner: Neutral
+ Actor194: tc05
+ Location: 103,62
+ Owner: Neutral
+ Actor371: tc02
+ Location: 37,77
+ Owner: Neutral
+ Actor367: tc03
+ Location: 35,71
+ Owner: Neutral
+ Actor236: ftur
+ Location: 62,61
+ Owner: Soviets
+ Actor302: t06
+ Location: 71,73
+ Owner: Neutral
+ Actor329: t07
+ Location: 97,28
+ Owner: Neutral
+ Actor331: t07
+ Location: 124,48
+ Owner: Neutral
+ Actor296: t05
+ Location: 63,63
+ Owner: Neutral
+ Actor155: tc04
+ Location: 18,37
+ Owner: Neutral
+ Actor279: t03
+ Location: 72,32
+ Owner: Neutral
+ Actor274: t03
+ Location: 71,78
+ Owner: Neutral
+ Actor280: t03
+ Location: 121,19
+ Owner: Neutral
+ Actor315: t06
+ Location: 88,17
+ Owner: Neutral
+ Actor312: t06
+ Location: 110,24
+ Owner: Neutral
+ Actor314: t06
+ Location: 125,20
+ Owner: Neutral
+ Actor307: t06
+ Location: 119,50
+ Owner: Neutral
+ Actor310: t06
+ Location: 80,41
+ Owner: Neutral
+ Actor323: t07
+ Location: 113,76
+ Owner: Neutral
+ Actor322: t07
+ Location: 112,65
+ Owner: Neutral
+ Actor246: t06
+ Location: 94,64
+ Owner: Neutral
+ Actor303: t06
+ Location: 101,69
+ Owner: Neutral
+ Actor234: t01
+ Location: 79,77
+ Owner: Neutral
+ Actor354: t11
+ Location: 73,71
+ Owner: Neutral
+ Actor212: barr
+ Location: 69,57
+ Owner: Soviets
+ Actor365: tc04
+ Location: 18,56
+ Owner: Neutral
+ Actor196: t06
+ Location: 129,52
+ Owner: Neutral
+ Actor356: t11
+ Location: 119,43
+ Owner: Neutral
+ Actor360: t11
+ Location: 122,76
+ Owner: Neutral
+ Actor187: tc04
+ Location: 99,27
+ Owner: Neutral
+ Actor186: tc04
+ Location: 79,34
+ Owner: Neutral
+ Actor179: tc05
+ Location: 59,43
+ Owner: Neutral
+ Actor350: t10
+ Location: 87,22
+ Owner: Neutral
+ Actor17: proc
+ Location: 168,62
+ Owner: Soviets
+ Actor291: t05
+ Location: 91,33
+ Owner: Neutral
+ Actor254: t02
+ Location: 72,63
+ Owner: Neutral
+ Actor43: t05
+ Location: 58,62
+ Owner: Neutral
+ Actor257: t02
+ Location: 119,53
+ Owner: Neutral
+ Actor8: e1
+ Location: 26,46
+ Owner: Allies
+ Actor264: t02
+ Location: 127,17
+ Owner: Neutral
+ Actor269: t03
+ Location: 84,37
+ Owner: Neutral
+ Actor271: t03
+ Location: 79,57
+ Owner: Neutral
+ SovietEntryPoint4: waypoint
+ Location: 115,16
+ Owner: Neutral
+ Actor278: t03
+ Location: 122,33
+ Owner: Neutral
+ Actor221: tc01
+ Location: 113,73
+ Owner: Neutral
+ Actor215: t05
+ Location: 72,40
+ Owner: Neutral
+ Actor267: t02
+ Location: 123,62
+ Owner: Neutral
+ Actor253: t02
+ Location: 118,77
+ Owner: Neutral
+ Actor220: tc01
+ Location: 117,40
+ Owner: Neutral
+ Actor158: tc01
+ Location: 23,35
+ Owner: Neutral
+ Actor160: t06
+ Location: 21,40
+ Owner: Neutral
+ Actor164: t16
+ Location: 18,41
+ Owner: Neutral
+ Actor163: t05
+ Location: 20,35
+ Owner: Neutral
+ Actor211: tc02
+ Location: 75,74
+ Owner: Neutral
+ Actor174: apwr
+ Location: 58,45
+ Owner: Soviets
+ Actor214: tc02
+ Location: 79,47
+ Owner: Neutral
+ Actor38: t15
+ Location: 30,52
+ Owner: Neutral
+ Actor407: t13
+ Location: 32,62
+ Owner: Neutral
+ Actor139: t01
+ Location: 111,35
+ Owner: Neutral
+ Actor410: t15
+ Location: 17,55
+ Owner: Neutral
+ Actor141: t14
+ Location: 36,56
+ Owner: Neutral
+ Actor386: t07
+ Location: 30,62
+ Owner: Neutral
+ Actor2: tc05
+ Location: 153,77
+ Owner: Neutral
+ Actor54: t01
+ Location: 56,76
+ Owner: Neutral
+ Actor391: t06
+ Location: 25,75
+ Owner: Neutral
+ Actor403: t01
+ Location: 34,74
+ Owner: Neutral
+ Actor402: t02
+ Location: 21,65
+ Owner: Neutral
+ Actor175: tc01
+ Location: 62,44
+ Owner: Neutral
+ Actor375: tc01
+ Location: 20,61
+ Owner: Neutral
+ Actor712: t07
+ Location: 170,34
+ Owner: Neutral
+ Actor0: mine
+ Location: 160,27
+ Owner: Neutral
+ Actor385: t07
+ Location: 17,58
+ Owner: Neutral
+ Actor401: t02
+ Location: 30,74
+ Owner: Neutral
+ Actor400: t05
+ Location: 32,69
+ Owner: Neutral
+ Actor382: t16
+ Location: 27,60
+ Owner: Neutral
+ Actor374: tc01
+ Location: 34,68
+ Owner: Neutral
+ Actor376: tc01
+ Location: 16,65
+ Owner: Neutral
+ Actor409: t15
+ Location: 24,67
+ Owner: Neutral
+ Actor405: t03
+ Location: 24,58
+ Owner: Neutral
+ Actor373: tc01
+ Location: 25,68
+ Owner: Neutral
+ Actor406: t13
+ Location: 35,72
+ Owner: Neutral
+ Actor55: t01
+ Location: 37,37
+ Owner: Neutral
+ Actor760: t03
+ Location: 175,27
+ Owner: Neutral
+ Actor399: t05
+ Location: 22,68
+ Owner: Neutral
+ Actor408: t14
+ Location: 20,59
+ Owner: Neutral
+ Actor390: t07
+ Location: 18,72
+ Owner: Neutral
+ Actor767: t10
+ Location: 158,15
+ Owner: Neutral
+ Actor381: t16
+ Location: 23,65
+ Owner: Neutral
+ Actor775: t02
+ Location: 171,15
+ Owner: Neutral
+ Actor392: t06
+ Location: 31,70
+ Owner: Neutral
+ Actor366: tc03
+ Location: 17,68
+ Owner: Neutral
+ Actor368: tc03
+ Location: 25,56
+ Owner: Neutral
+ Actor780: t03
+ Location: 79,39
+ Owner: Neutral
+ Actor398: t05
+ Location: 32,64
+ Owner: Neutral
+ Actor796: t02
+ Location: 154,40
+ Owner: Neutral
+ SovietAirfield3: afld
+ Location: 154,67
+ Owner: Soviets
+ Actor383: t16
+ Location: 22,52
+ Owner: Neutral
+ Actor372: tc02
+ Location: 20,77
+ Owner: Neutral
+ SovietEntryPoint5: waypoint
+ Location: 130,79
+ Owner: Neutral
+ Actor804: t13
+ Location: 125,68
+ Owner: Neutral
+ SovietAirfield8: afld
+ Location: 62,51
+ Owner: Soviets
+ Actor268: t03
+ Location: 95,23
+ Owner: Neutral
+ Actor812: tc03
+ Location: 133,25
+ Owner: Neutral
+ Actor818: t16
+ Location: 138,15
+ Owner: Neutral
+ Actor819: t16
+ Location: 139,29
+ Owner: Neutral
+ Actor820: t02
+ Location: 147,16
+ Owner: Neutral
+ Actor396: t05
+ Location: 27,70
+ Owner: Neutral
+ Actor387: t07
+ Location: 22,63
+ Owner: Neutral
+ Actor393: t06
+ Location: 25,61
+ Owner: Neutral
+ Actor32: t05
+ Location: 42,40
+ Owner: Neutral
+ Actor378: t16
+ Location: 26,73
+ Owner: Neutral
+ Actor31: t05
+ Location: 53,51
+ Owner: Neutral
+ Actor395: t06
+ Location: 35,78
+ Owner: Neutral
+ Actor826: t01
+ Location: 136,15
+ Owner: Neutral
+ Actor827: t01
+ Location: 142,24
+ Owner: Neutral
+ Actor829: t03
+ Location: 146,15
+ Owner: Neutral
+ Actor379: t16
+ Location: 37,74
+ Owner: Neutral
+ Actor411: t15
+ Location: 31,77
+ Owner: Neutral
+ Actor397: t05
+ Location: 21,58
+ Owner: Neutral
+ Actor394: t06
+ Location: 18,52
+ Owner: Neutral
+ Actor13: tc02
+ Location: 38,61
+ Owner: Neutral
+ Actor27: t05
+ Location: 41,55
+ Owner: Neutral
+ Actor377: t16
+ Location: 16,78
+ Owner: Neutral
+ Actor380: t16
+ Location: 31,66
+ Owner: Neutral
+ Actor845: t14
+ Location: 136,21
+ Owner: Neutral
+ Actor16: tc02
+ Location: 52,39
+ Owner: Neutral
+ Actor404: t03
+ Location: 24,71
+ Owner: Neutral
+ Actor389: t07
+ Location: 25,71
+ Owner: Neutral
+ Actor388: t07
+ Location: 37,68
+ Owner: Neutral
+ Actor412: t15
+ Location: 28,73
+ Owner: Neutral
+ Actor384: t07
+ Location: 22,67
+ Owner: Neutral
+ Actor26: t05
+ Location: 45,72
+ Owner: Neutral
+ Actor856: t16
+ Location: 133,23
+ Owner: Neutral
+ Actor15: tc04
+ Location: 144,73
+ Owner: Neutral
+ Actor861: t16
+ Location: 128,62
+ Owner: Neutral
+ Actor7: e1
+ Location: 27,50
+ Owner: Allies
+ Actor5: gun
+ Location: 28,51
+ Owner: Allies
+ Actor6: gun
+ Location: 28,44
+ Owner: Allies
+ Actor47: powr
+ Location: 3,37
+ Owner: Allies
+ Actor45: 2tnk
+ Location: 28,28
+ Owner: Allies
+ Actor35: gun
+ Location: 29,29
+ Owner: Allies
+ Actor24: gun
+ Location: 25,30
+ Owner: Allies
+ Actor41: e1
+ Location: 30,28
+ Owner: Allies
+ Actor4: jeep
+ Location: 27,45
+ Owner: Allies
+ Actor40: e1
+ Location: 24,30
+ Owner: Allies
+ Actor46: powr
+ Location: 1,37
+ Owner: Allies
+ Actor49: fenc
+ Location: 28,27
+ Owner: Allies
+ Actor50: fenc
+ Location: 27,27
+ Owner: Allies
+ Actor122: fenc
+ Location: 30,27
+ Owner: Allies
+ Actor124: fenc
+ Location: 31,27
+ Owner: Allies
+ Actor125: fenc
+ Location: 32,27
+ Owner: Allies
+ Actor126: fenc
+ Location: 32,25
+ Owner: Allies
+ Actor128: fenc
+ Location: 32,26
+ Owner: Allies
+ Actor129: fenc
+ Location: 33,25
+ Owner: Allies
+ Actor145: fenc
+ Location: 34,25
+ Owner: Allies
+ Actor146: fenc
+ Location: 35,25
+ Owner: Allies
+ Allies1MovePoint: waypoint
+ Location: 149,24
+ Owner: Neutral
+ Allies1EntryPoint: waypoint
+ Location: 149,16
+ Owner: Neutral
+ Allies2EntryPoint: waypoint
+ Location: 175,38
+ Owner: Neutral
+ Actor255: ftur
+ Location: 68,45
+ Owner: Soviets
+ SovietEntryPoint3: waypoint
+ Location: 105,79
+ Owner: Neutral
+ SovietEntryPoint2: waypoint
+ Location: 93,16
+ Owner: Neutral
+ SovietEntryPoint1: waypoint
+ Location: 89,79
+ Owner: Neutral
+ SovietRallyPoint2: waypoint
+ Location: 93,20
+ Owner: Neutral
+ SovietRallyPoint1: waypoint
+ Location: 89,75
+ Owner: Neutral
+ SovietRallyPoint3: waypoint
+ Location: 105,75
+ Owner: Neutral
+ SovietRallyPoint4: waypoint
+ Location: 115,20
+ Owner: Neutral
+ SovietRallyPoint5: waypoint
+ Location: 130,75
+ Owner: Neutral
+ Actor152: brl3
+ Location: 157,66
+ Owner: Soviets
+ Actor151: barl
+ Location: 159,58
+ Owner: Soviets
+ Actor138: brl3
+ Location: 154,58
+ Owner: Soviets
+ Actor144: brl3
+ Location: 159,59
+ Owner: Soviets
+ Actor19: oilb
+ Location: 154,59
+ Owner: Soviets
+ Actor22: oilb
+ Location: 157,57
+ Owner: Soviets
+ Actor154: oilb
+ Location: 169,18
+ Owner: Neutral
+ Actor159: oilb
+ Location: 172,22
+ Owner: Neutral
+ Actor166: brl3
+ Location: 171,18
+ Owner: Neutral
+ Actor167: barl
+ Location: 173,24
+ Owner: Neutral
+ Actor168: powr
+ Location: 1,34
+ Owner: Allies
+ Actor183: powr
+ Location: 3,34
+ Owner: Allies
+ Actor185: apwr
+ Location: 154,72
+ Owner: Soviets
+ Actor190: ftur
+ Location: 160,53
+ Owner: Soviets
+ Actor227: e3
+ Location: 157,54
+ Owner: Soviets
+ Actor225: e3
+ Location: 148,68
+ Owner: Soviets
+ Actor223: e1
+ Location: 163,55
+ Owner: Soviets
+ Actor209: fenc
+ Location: 156,52
+ Owner: Soviets
+ Actor200: e1
+ Location: 171,61
+ Owner: Soviets
+ Actor201: e2
+ Location: 165,64
+ Owner: Soviets
+ Actor222: e2
+ Location: 154,53
+ Owner: Soviets
+ Actor216: fenc
+ Location: 154,52
+ Owner: Soviets
+ Actor217: fenc
+ Location: 153,52
+ Owner: Soviets
+ Actor219: fenc
+ Location: 152,52
+ Owner: Soviets
+ Actor210: fenc
+ Location: 155,52
+ Owner: Soviets
+ Actor188: brl3
+ Location: 160,54
+ Owner: Soviets
+ Actor189: ftur
+ Location: 147,64
+ Owner: Soviets
+ Actor191: barl
+ Location: 160,55
+ Owner: Soviets
+ SovietAirfield1: afld
+ Location: 151,69
+ Owner: Soviets
+ SovietAirfield2: afld
+ Location: 154,69
+ Owner: Soviets
+ Actor228: e3
+ Location: 158,66
+ Owner: Soviets
+ Actor241: barl
+ Location: 157,67
+ Owner: Soviets
+ Actor242: barr
+ Location: 159,61
+ Owner: Soviets
+ Actor56: tc01
+ Location: 145,71
+ Owner: Neutral
+ Actor237: dog
+ Location: 151,62
+ Owner: Soviets
+ Actor11: e1
+ Location: 149,64
+ Owner: Soviets
+ Actor192: fenc
+ Location: 147,65
+ Owner: Soviets
+ Actor244: e1
+ Location: 160,60
+ Owner: Soviets
+ Actor206: fenc
+ Location: 158,53
+ Owner: Soviets
+ Actor18: apwr
+ Location: 149,72
+ Owner: Soviets
+ Actor230: 3tnk
+ Location: 157,60
+ Owner: Soviets
+ Actor231: kenn
+ Location: 162,59
+ Owner: Soviets
+ Actor235: waypoint
+ Location: 147,51
+ Owner: Neutral
+ Actor205: fenc
+ Location: 159,53
+ Owner: Soviets
+ Actor207: fenc
+ Location: 158,52
+ Owner: Soviets
+ Actor208: fenc
+ Location: 157,52
+ Owner: Soviets
+ Actor204: fenc
+ Location: 147,70
+ Owner: Soviets
+ Actor193: fenc
+ Location: 147,66
+ Owner: Soviets
+ Actor195: fenc
+ Location: 147,67
+ Owner: Soviets
+ Actor197: fenc
+ Location: 146,67
+ Owner: Soviets
+ Actor199: fenc
+ Location: 146,69
+ Owner: Soviets
+ Actor198: fenc
+ Location: 146,68
+ Owner: Soviets
+ Actor202: fenc
+ Location: 147,69
+ Owner: Soviets
+ Actor292: e2
+ Location: 165,59
+ Owner: Soviets
+ Actor232: t01
+ Location: 72,43
+ Owner: Neutral
+ Actor176: tc05
+ Location: 69,46
+ Owner: Neutral
+ Actor170: mine
+ Location: 114,55
+ Owner: Neutral
+ Actor169: mine
+ Location: 113,57
+ Owner: Neutral
+ Allies2MovePoint: waypoint
+ Location: 167,38
+ Owner: Neutral
+ Actor3: silo
+ Location: 172,59
+ Owner: Soviets
+ Actor33: fact
+ Location: 162,67
+ Owner: Soviets
+ SovietEntryPoint6: waypoint
+ Location: 53,79
+ Owner: Neutral
+ SovietRallyPoint6: waypoint
+ Location: 53,75
+ Owner: Neutral
+ Actor171: mine
+ Location: 168,73
+ Owner: Neutral
+ Actor248: ftur
+ Location: 64,44
+ Owner: Soviets
+ SovietAirfield7: afld
+ Location: 62,49
+ Owner: Soviets
+ Actor256: ftur
+ Location: 74,57
+ Owner: Soviets
+ Actor273: brik
+ Location: 72,61
+ Owner: Soviets
+ Actor44: t11
+ Location: 57,54
+ Owner: Neutral
+ Actor249: t11
+ Location: 98,58
+ Owner: Neutral
+ Actor245: tc05
+ Location: 106,43
+ Owner: Neutral
+ Actor233: ftur
+ Location: 75,54
+ Owner: Soviets
+ Actor287: brik
+ Location: 72,60
+ Owner: Soviets
+ Actor258: brik
+ Location: 71,61
+ Owner: Soviets
+ Actor293: brik
+ Location: 70,61
+ Owner: Soviets
+ Actor177: tc04
+ Location: 59,50
+ Owner: Neutral
+ Actor294: brik
+ Location: 72,59
+ Owner: Soviets
+ Actor213: tsla
+ Location: 71,59
+ Owner: Soviets
+ Actor295: brik
+ Location: 73,59
+ Owner: Soviets
+ Actor180: v01
+ Location: 100,29
+ Owner: Neutral
+ Actor218: v03
+ Location: 90,30
+ Owner: Neutral
+ Actor243: v02
+ Location: 95,30
+ Owner: Neutral
+ Actor247: v04
+ Location: 102,30
+ Owner: Neutral
+ Actor250: v07
+ Location: 104,33
+ Owner: Neutral
+ Actor252: v13
+ Location: 101,33
+ Owner: Neutral
+ Actor251: truk
+ Location: 105,30
+ Owner: Neutral
+ Actor259: v18
+ Location: 105,28
+ Owner: Neutral
+ Actor260: v09
+ Location: 110,30
+ Owner: Neutral
+ Actor261: v08
+ Location: 109,33
+ Owner: Neutral
+ Actor262: v17
+ Location: 104,28
+ Owner: Neutral
+ Actor263: e1
+ Location: 108,34
+ Owner: Soviets
+ Actor265: e1
+ Location: 97,30
+ Owner: Soviets
+ Actor266: e1
+ Location: 92,34
+ Owner: Soviets
+ Actor270: e2
+ Location: 102,33
+ Owner: Soviets
+ Actor272: e3
+ Location: 94,30
+ Owner: Soviets
+ Actor275: e3
+ Location: 100,31
+ Owner: Soviets
+ Actor276: 3tnk
+ Location: 107,30
+ Owner: Soviets
+ Actor277: dome
+ Location: 165,56
+ Owner: Soviets
+ Actor281: ftur
+ Location: 166,51
+ Owner: Soviets
+ Actor282: ftur
+ Location: 147,58
+ Owner: Soviets
+ Actor286: t12
+ Location: 154,65
+ Owner: Neutral
+ Actor285: t05
+ Location: 148,76
+ Owner: Neutral
+ Actor288: tc02
+ Location: 168,51
+ Owner: Neutral
+ Actor240: mine
+ Location: 159,27
+ Owner: Neutral
+ Actor290: mine
+ Location: 159,26
+ Owner: Neutral
+ Actor297: brik
+ Location: 69,61
+ Owner: Soviets
+ Actor299: brik
+ Location: 73,58
+ Owner: Soviets
+ Actor300: brik
+ Location: 69,60
+ Owner: Soviets
+ Actor301: brik
+ Location: 68,60
+ Owner: Soviets
+ Actor304: e1
+ Location: 63,59
+ Owner: Soviets
+ Actor305: e1
+ Location: 71,56
+ Owner: Soviets
+ Actor306: e1
+ Location: 66,46
+ Owner: Soviets
+ Actor308: e2
+ Location: 63,57
+ Owner: Soviets
+ Actor309: e2
+ Location: 69,51
+ Owner: Soviets
+ Actor311: e1
+ Location: 68,58
+ Owner: Soviets
+ Actor313: e1
+ Location: 63,46
+ Owner: Soviets
+ Actor316: oilb
+ Location: 91,50
+ Owner: Soviets
+ Actor317: oilb
+ Location: 91,53
+ Owner: Soviets
+ Actor318: oilb
+ Location: 94,50
+ Owner: Soviets
+ Actor319: oilb
+ Location: 94,53
+ Owner: Soviets
+ Actor320: sbag
+ Location: 91,56
+ Owner: Soviets
+ Actor321: sbag
+ Location: 93,56
+ Owner: Soviets
+ Actor324: sbag
+ Location: 94,56
+ Owner: Soviets
+ Actor325: sbag
+ Location: 95,56
+ Owner: Soviets
+ Actor326: sbag
+ Location: 96,56
+ Owner: Soviets
+ Actor327: sbag
+ Location: 92,56
+ Owner: Soviets
+ Actor328: sbag
+ Location: 97,56
+ Owner: Soviets
+ Actor330: sbag
+ Location: 97,55
+ Owner: Soviets
+ Actor332: sbag
+ Location: 97,54
+ Owner: Soviets
+ Actor334: sbag
+ Location: 97,53
+ Owner: Soviets
+ Actor335: sbag
+ Location: 97,52
+ Owner: Soviets
+ Actor336: sbag
+ Location: 97,51
+ Owner: Soviets
+ Actor337: sbag
+ Location: 97,50
+ Owner: Soviets
+ Actor339: e1
+ Location: 96,49
+ Owner: Soviets
+ Actor340: e1
+ Location: 93,47
+ Owner: Soviets
+ Actor341: e1
+ Location: 89,56
+ Owner: Soviets
+ Actor342: e2
+ Location: 88,55
+ Owner: Soviets
+ Actor343: apc
+ Location: 91,48
+ Owner: Soviets
+ Actor344: 3tnk
+ Location: 67,52
+ Owner: Soviets
+ Actor161: brl3
+ Location: 93,50
+ Owner: Soviets
+ Actor172: barl
+ Location: 90,55
+ Owner: Soviets
+ ParadropBoxBottomRight: waypoint
+ Location: 170,72
+ Owner: Neutral
+ ParadropBoxTopLeft: waypoint
+ Location: 78,27
+ Owner: Neutral
+ MountainEntry1: waypoint
+ Location: 25,44
+ Owner: Neutral
+ MountainEntry2: waypoint
+ Owner: Neutral
+ Location: 25,45
+ MountainEntry3: waypoint
+ Owner: Neutral
+ Location: 25,46
+ MountainEntry4: waypoint
+ Owner: Neutral
+ Location: 25,47
+ MountainEntry5: waypoint
+ Owner: Neutral
+ Location: 25,48
+ MountainEntry6: waypoint
+ Owner: Neutral
+ Location: 25,49
+ MountainEntry7: waypoint
+ Location: 25,50
+ Owner: Neutral
+ MountainEntry8: waypoint
+ Owner: Neutral
+ Location: 25,51
+ BridgeEntry1: waypoint
+ Owner: Neutral
+ Location: 28,29
+ BridgeEntry2: waypoint
+ Owner: Neutral
+ Location: 27,29
+ BridgeEntry3: waypoint
+ Owner: Neutral
+ Location: 26,29
+ BridgeEntry4: waypoint
+ Owner: Neutral
+ Location: 25,29
+ SovietIntel: camera.large
+ Owner: Soviets
+ Location: 130, 45
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
diff --git a/mods/ura/maps/exodus/rules.yaml b/mods/ura/maps/exodus/rules.yaml
new file mode 100644
index 0000000..943320a
--- /dev/null
+++ b/mods/ura/maps/exodus/rules.yaml
@@ -0,0 +1,188 @@
+Player:
+ PlayerResources:
+ DefaultCash: 5000
+
+World:
+ MissionData:
+ Briefing: The Allies are now being flanked from both sides. Evacuate before the remaining Allied forces in the area are wiped out. Einstein has recently developed a technology which allows us to obscure units from the enemy. Pull out at least one prototype mobile gap generator intact.
+ LuaScript:
+ Scripts: exodus.lua
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ hard: Hard
+ Default: normal
+
+^Palettes:
+ IndexedPlayerPalette:
+ PlayerIndex:
+ Soviets: 229, 230, 231, 232, 233, 234, 235, 8, 236, 237, 238, 239, 221, 222, 223, 223
+ Allies: 224, 224, 225, 225, 226, 184, 185, 186, 187, 188, 188, 189, 190, 190, 191, 191
+ Allies1: 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175
+ Allies2: 208, 208, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 154, 155, 143
+
+powerproxy.paratroopers:
+ ParatroopersPower:
+ DropItems: E1,E1,E3,E3,E4
+
+HBOX:
+ Buildable:
+ Prerequisites: ~disabled
+ EditorOnlyTooltip:
+ Description: invalid targets for YakAttack
+
+E7:
+ Buildable:
+ Prerequisites: ~disabled
+
+TRAN:
+ Buildable:
+ Prerequisites: ~disabled
+
+BARR:
+ Buildable:
+ Prerequisites: ~disabled
+
+MIG:
+ Buildable:
+ Prerequisites: ~disabled
+
+HELI:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIND:
+ Buildable:
+ Prerequisites: ~disabled
+
+SS:
+ Buildable:
+ Prerequisites: ~disabled
+
+ARTY:
+ Buildable:
+ Prerequisites: ~disabled
+
+AGUN:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSUB:
+ Buildable:
+ Prerequisites: ~disabled
+
+DD:
+ Buildable:
+ Prerequisites: ~disabled
+
+CA:
+ Buildable:
+ Prerequisites: ~disabled
+
+PT:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPEN:
+ Buildable:
+ Prerequisites: ~disabled
+
+SYRD:
+ Buildable:
+ Prerequisites: ~disabled
+
+IRON:
+ Buildable:
+ Prerequisites: ~disabled
+
+PDOX:
+ Buildable:
+ Prerequisites: ~disabled
+
+TSLA:
+ Buildable:
+ Prerequisites: ~disabled
+
+FTUR:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+HPAD:
+ Buildable:
+ Prerequisites: ~disabled
+
+AFLD:
+ Buildable:
+ Prerequisites: ~disabled
+
+ATEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+STEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+4TNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+APC:
+ Buildable:
+ Prerequisites: ~disabled
+
+MNLY:
+ Buildable:
+ Prerequisites: ~disabled
+
+TRUK:
+ Buildable:
+ Prerequisites: ~disabled
+
+TTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+FTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+CTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MRJ:
+ Buildable:
+ Prerequisites: ~disabled
+
+MGG:
+ Buildable:
+ Prerequisites: ~disabled
+ CreatesShroud:
+ Range: 6c0
+
+GAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+CAMERA.Large:
+ Inherits: CAMERA
+ RevealsShroud:
+ Range: 49c0
+ EditorOnlyTooltip:
+ Description: required for YakAttack to work
diff --git a/mods/ura/maps/fort-lonestar/fort-lonestar-AI.lua b/mods/ura/maps/fort-lonestar/fort-lonestar-AI.lua
new file mode 100644
index 0000000..18e400c
--- /dev/null
+++ b/mods/ura/maps/fort-lonestar/fort-lonestar-AI.lua
@@ -0,0 +1,188 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+
+AIPlayers = { }
+AIBarracks = { }
+AIDerricks = { }
+AIBaseLocation = { }
+IdlingAIActors = { }
+IdlingAISupportActors = { }
+AIOnDefense = { }
+
+-- It's good to start with 10 rifle man, one medic and 5 rocket soldiers
+InitialUnitsToBuild = { "e1", "e1", "e1", "e1", "e1", "medi", "e1", "e1", "e1", "e1", "e1", "e3", "e3", "e3", "e3", "e3" }
+UnitsToBuild = { "e1", "e1", "e1", "e1", "e1", "e3", "e3", "e3", "medi" }
+
+ActivateAI = function(player, id)
+ AIPlayers[id] = player
+
+ Trigger.AfterDelay(0, function()
+ local barracks = player.GetActorsByType("tent")
+ if #barracks > 0 then
+ AIBarracks[id] = barracks[1]
+ AIBaseLocation[id] = barracks[1].Location + CVec.New(2, 1)
+ IdlingAIActors[id] = { }
+ IdlingAISupportActors[id] = { }
+ InitialInfantryProduction(id, InitialUnitsToBuild)
+ DefendActor(id, barracks[1])
+ RepairBarracks(id)
+ SellWalls(id)
+
+ Trigger.AfterDelay(DateTime.Seconds(10), function() LookOutForCrates(id) end)
+ end
+
+ local derricks = player.GetActorsByType("oilb")
+ if #derricks > 0 then
+ AIDerricks[id] = derricks[1]
+ DefendActor(id, derricks[1])
+ end
+ end)
+end
+
+InitialInfantryProduction = function(id, units)
+ local productionComplete = AIPlayers[id].Build(units, function(actors)
+ InfantryProduction(id)
+ end)
+
+ Trigger.OnProduction(AIBarracks[id], function(producer, produced)
+ BuildComplete(id, produced)
+ end)
+end
+
+InfantryProduction = function(id)
+ local productionComplete = AIPlayers[id].Build({ Utils.Random(UnitsToBuild) }, function(actors)
+ Trigger.AfterDelay(0, function() InfantryProduction(id) end)
+ end)
+
+ if not productionComplete then
+ Trigger.AfterDelay(0, function() InfantryProduction(id) end)
+ end
+end
+
+BuildComplete = function(id, actor)
+ if actor.Type == "medi" then
+ local number = #IdlingAISupportActors[id] + 1
+ IdlingAISupportActors[id][number] = actor
+
+ Trigger.OnKilled(actor, function()
+ table.remove(IdlingAISupportActors[id], number)
+ end)
+ else
+ local number = #IdlingAIActors[id] + 1
+ IdlingAIActors[id][number] = actor
+
+ Trigger.OnKilled(actor, function()
+ table.remove(IdlingAIActors[id], number)
+ end)
+ end
+
+ Trigger.AfterDelay(0, function() DefendActor(id, actor) end)
+end
+
+AttackGroupSize = 5
+SetupAttackGroup = function(id)
+ local units = { }
+
+ for i = 0, AttackGroupSize, 1 do
+ if (#IdlingAIActors[id] == 0) then
+ return units
+ end
+
+ local number = Utils.RandomInteger(0, #IdlingAIActors[id]) + 1
+ units[#units + 1] = IdlingAIActors[id][number]
+ table.remove(IdlingAIActors[id], number)
+ end
+
+ return units
+end
+
+DefendActor = function(id, actorToDefend)
+ if not actorToDefend or actorToDefend.IsDead or not actorToDefend.IsInWorld then
+ return
+ end
+
+ Trigger.OnDamaged(actorToDefend, function(self, attacker)
+ if AIOnDefense[id] or not attacker or attacker.IsDead then
+ return
+ end
+
+ -- Don't try to kill something you can't kill
+ if attacker.Type == "sniper.soviets" then
+ return
+ end
+
+ AIOnDefense[id] = true
+ local attackLoc = attacker.Location
+
+ local defenders = SetupAttackGroup(id)
+ if not defenders or #defenders == 0 then
+ Trigger.AfterDelay(DateTime.Seconds(30), function() AIOnDefense[id] = false end)
+ return
+ end
+
+ Utils.Do(defenders, function(unit)
+ if unit.IsDead then
+ return
+ end
+
+ unit.AttackMove(attackLoc)
+
+ local home = AIBaseLocation[id]
+ Trigger.OnIdle(unit, function()
+ if unit.Location == home then
+ IdlingAIActors[id][#IdlingAIActors[id] + 1] = unit
+ Trigger.Clear(unit, "OnIdle")
+ AIOnDefense[id] = false
+ else
+ unit.AttackMove(home)
+ end
+ end)
+ end)
+ end)
+end
+
+RepairBarracks = function(id)
+ Trigger.OnDamaged(AIBarracks[id], function(self, attacker)
+ self.StartBuildingRepairs(AIPlayers[id])
+ end)
+end
+
+SellWalls = function(id)
+ Media.DisplayMessage("Lonestar AI " .. id .. " sold its walls for better combat experience.")
+
+ local walls = AIPlayers[id].GetActorsByType("brik")
+ Utils.Do(walls, function(wall)
+ wall.Sell()
+ end)
+end
+
+LookOutForCrates = function(id)
+ Trigger.OnEnteredProximityTrigger(AIBarracks[id].CenterPosition, WDist.New(12 * 1024), function(actor)
+ if actor.Type ~= "fortcrate" or #IdlingAIActors[id] == 0 then
+ return
+ end
+
+ local unit = Utils.Random(IdlingAIActors[id])
+ local home = AIBaseLocation[id]
+ local aim = actor.Location
+ if unit.IsDead then
+ return
+ end
+
+ unit.AttackMove(aim)
+ Trigger.OnIdle(unit, function()
+ if unit.Location == aim or not actor.IsInWorld then
+ unit.AttackMove(home)
+ Trigger.Clear(unit, "OnIdle")
+ else
+ unit.AttackMove(aim)
+ end
+ end)
+ end)
+end
diff --git a/mods/ura/maps/fort-lonestar/fort-lonestar.lua b/mods/ura/maps/fort-lonestar/fort-lonestar.lua
new file mode 100644
index 0000000..84dfc77
--- /dev/null
+++ b/mods/ura/maps/fort-lonestar/fort-lonestar.lua
@@ -0,0 +1,223 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+
+SovietEntryPoints = { Entry1, Entry2, Entry3, Entry4, Entry5, Entry6, Entry7, Entry8 }
+PatrolWaypoints = { Entry2, Entry4, Entry6, Entry8 }
+ParadropWaypoints = { Paradrop1, Paradrop2, Paradrop3, Paradrop4 }
+SpawnPoints = { Spawn1, Spawn2, Spawn3, Spawn4 }
+Snipers = { Sniper1, Sniper2, Sniper3, Sniper4, Sniper5, Sniper6, Sniper7, Sniper8, Sniper9, Sniper10, Sniper11, Sniper12 }
+
+Walls =
+{
+ { WallTopRight1, WallTopRight2, WallTopRight3, WallTopRight4, WallTopRight5, WallTopRight6, WallTopRight7, WallTopRight8, WallTopRight9 },
+ { WallTopLeft1, WallTopLeft2, WallTopLeft3, WallTopLeft4, WallTopLeft5, WallTopLeft6, WallTopLeft7, WallTopLeft8, WallTopLeft9 },
+ { WallBottomLeft1, WallBottomLeft2, WallBottomLeft3, WallBottomLeft4, WallBottomLeft5, WallBottomLeft6, WallBottomLeft7, WallBottomLeft8, WallBottomLeft9 },
+ { WallBottomRight1, WallBottomRight2, WallBottomRight3, WallBottomRight4, WallBottomRight5, WallBottomRight6, WallBottomRight7, WallBottomRight8, WallBottomRight9 }
+}
+
+if Map.LobbyOption("difficulty") == "veryeasy" then
+ ParaChance = 20
+ Patrol = { "e1", "e2", "e1" }
+ Infantry = { "e4", "e1", "e1", "e2", "e2" }
+ Vehicles = { "apc" }
+ Tank = { "3tnk" }
+ LongRange = { "arty" }
+ Boss = { "v2rl" }
+ Swarm = { "shok", "shok", "shok" }
+elseif Map.LobbyOption("difficulty") == "easy" then
+ ParaChance = 25
+ Patrol = { "e1", "e2", "e1" }
+ Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1" }
+ Vehicles = { "ftrk", "apc", "arty" }
+ Tank = { "3tnk" }
+ LongRange = { "v2rl" }
+ Boss = { "4tnk" }
+ Swarm = { "shok", "shok", "shok", "shok", "ttnk" }
+elseif Map.LobbyOption("difficulty") == "normal" then
+ ParaChance = 30
+ Patrol = { "e1", "e2", "e1", "e1" }
+ Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1" }
+ Vehicles = { "ftrk", "ftrk", "apc", "arty" }
+ Tank = { "3tnk" }
+ LongRange = { "v2rl" }
+ Boss = { "4tnk" }
+ Swarm = { "shok", "shok", "shok", "shok", "ttnk", "ttnk", "ttnk" }
+elseif Map.LobbyOption("difficulty") == "hard" then
+ ParaChance = 35
+ Patrol = { "e1", "e2", "e1", "e1", "e4" }
+ Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1" }
+ Vehicles = { "arty", "ftrk", "ftrk", "apc", "apc" }
+ Tank = { "3tnk" }
+ LongRange = { "v2rl" }
+ Boss = { "4tnk" }
+ Swarm = { "shok", "shok", "shok", "shok", "shok", "ttnk", "ttnk", "ttnk", "ttnk" }
+else
+ ParaChance = 40
+ Patrol = { "e1", "e2", "e1", "e1", "e4", "e4" }
+ Infantry = { "e4", "e1", "e1", "e2", "e1", "e2", "e1", "e1" }
+ Vehicles = { "arty", "arty", "ftrk", "apc", "apc" }
+ Tank = { "ftrk", "3tnk" }
+ LongRange = { "v2rl" }
+ Boss = { "4tnk" }
+ Swarm = { "shok", "shok", "shok", "shok", "shok", "shok", "ttnk", "ttnk", "ttnk", "ttnk", "ttnk" }
+end
+
+Wave = 0
+Waves =
+{
+ { delay = 500, units = { Infantry } },
+ { delay = 500, units = { Patrol, Patrol } },
+ { delay = 700, units = { Infantry, Infantry, Vehicles }, },
+ { delay = 1500, units = { Infantry, Infantry, Infantry, Infantry } },
+ { delay = 1500, units = { Infantry, Infantry, Patrol, Vehicles } },
+ { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Tank, Vehicles } },
+ { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Tank, Tank, Swarm } },
+ { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, LongRange } },
+ { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, LongRange, Tank, LongRange } },
+ { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange, LongRange, Tank, Tank, Vehicles } },
+ { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, Infantry, Infantry, Boss, Swarm } }
+}
+
+-- Now do some adjustments to the waves
+if Map.LobbyOption("difficulty") == "tough" or Map.LobbyOption("difficulty") == "endless" then
+ Waves[8] = { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry }, ironUnits = { LongRange } }
+ Waves[9] = { delay = 1500, units = { Infantry, Infantry, Patrol, Infantry, Infantry, Infantry, Infantry, Infantry, LongRange, LongRange, Vehicles, Tank }, ironUnits = { Tank } }
+ Waves[11] = { delay = 1500, units = { Vehicles, Infantry, Patrol, Patrol, Patrol, Infantry, LongRange, Tank, Boss, Infantry, Infantry, Patrol } }
+end
+
+SendUnits = function(entryCell, unitTypes, targetCell, extraData)
+ Reinforcements.Reinforce(soviets, unitTypes, { entryCell }, 40, function(a)
+ if not a.HasProperty("AttackMove") then
+ Trigger.OnIdle(a, function(a)
+ a.Move(targetCell)
+ end)
+ return
+ end
+
+ a.AttackMove(targetCell)
+ Trigger.OnIdle(a, function(a)
+ a.Hunt()
+ end)
+
+ if extraData == "IronCurtain" then
+ a.GrantCondition("invulnerability", DateTime.Seconds(25))
+ end
+ end)
+end
+
+SendWave = function()
+ Wave = Wave + 1
+ local wave = Waves[Wave]
+
+ Trigger.AfterDelay(wave.delay, function()
+ Utils.Do(wave.units, function(units)
+ local entry = Utils.Random(SovietEntryPoints).Location
+ local target = Utils.Random(SpawnPoints).Location
+
+ SendUnits(entry, units, target)
+ end)
+
+ if wave.ironUnits then
+ Utils.Do(wave.ironUnits, function(units)
+ local entry = Utils.Random(SovietEntryPoints).Location
+ local target = Utils.Random(SpawnPoints).Location
+
+ SendUnits(entry, units, target, "IronCurtain")
+ end)
+ end
+
+ Utils.Do(players, function(player)
+ Media.PlaySpeechNotification(player, "EnemyUnitsApproaching")
+ end)
+
+ if (Wave < #Waves) then
+ if Utils.RandomInteger(1, 100) < ParaChance then
+ local units = ParaProxy.SendParatroopers(Utils.Random(ParadropWaypoints).CenterPosition)
+ Utils.Do(units, function(unit)
+ Trigger.OnIdle(unit, function(a)
+ if a.IsInWorld then
+ a.Hunt()
+ end
+ end)
+ end)
+
+ local delay = Utils.RandomInteger(DateTime.Seconds(20), DateTime.Seconds(45))
+ Trigger.AfterDelay(delay, SendWave)
+ else
+ SendWave()
+ end
+ else
+ if Map.LobbyOption("difficulty") == "endless" then
+ Wave = 0
+ IncreaseDifficulty()
+ SendWave()
+ return
+ end
+
+ Trigger.AfterDelay(DateTime.Minutes(1), SovietsRetreating)
+ Media.DisplayMessage("You almost survived the onslaught! No more waves incoming.")
+ end
+ end)
+end
+
+SovietsRetreating = function()
+ Utils.Do(Snipers, function(a)
+ if not a.IsDead and a.Owner == soviets then
+ a.Destroy()
+ end
+ end)
+end
+
+IncreaseDifficulty = function()
+ local additions = { Infantry, Patrol, Vehicles, Tank, LongRange, Boss, Swarm }
+ Utils.Do(Waves, function(wave)
+ wave.units[#wave.units + 1] = Utils.Random(additions)
+ end)
+end
+
+Tick = function()
+ if (Utils.RandomInteger(1, 200) == 10) then
+ local delay = Utils.RandomInteger(1, 10)
+ Lighting.Flash("LightningStrike", delay)
+ Trigger.AfterDelay(delay, function()
+ Media.PlaySound("thunder" .. Utils.RandomInteger(1,6) .. ".aud")
+ end)
+ end
+ if (Utils.RandomInteger(1, 200) == 10) then
+ Media.PlaySound("thunder-ambient.aud")
+ end
+end
+
+SetupWallOwners = function()
+ Utils.Do(players, function(player)
+ Utils.Do(Walls[player.Spawn], function(wall)
+ wall.Owner = player
+ end)
+ end)
+end
+
+WorldLoaded = function()
+ soviets = Player.GetPlayer("Soviets")
+ players = { }
+ for i = 0, 4 do
+ local player = Player.GetPlayer("Multi" ..i)
+ players[i] = player
+
+ if players[i] and players[i].IsBot then
+ ActivateAI(players[i], i)
+ end
+ end
+
+ Media.DisplayMessage("Defend Fort Lonestar at all costs!")
+
+ SetupWallOwners()
+
+ ParaProxy = Actor.Create("powerproxy.paratroopers", false, { Owner = soviets })
+ SendWave()
+end
diff --git a/mods/ura/maps/fort-lonestar/map.bin b/mods/ura/maps/fort-lonestar/map.bin
new file mode 100644
index 0000000..6115d4d
Binary files /dev/null and b/mods/ura/maps/fort-lonestar/map.bin differ
diff --git a/mods/ura/maps/fort-lonestar/map.png b/mods/ura/maps/fort-lonestar/map.png
new file mode 100644
index 0000000..482d8c9
Binary files /dev/null and b/mods/ura/maps/fort-lonestar/map.png differ
diff --git a/mods/ura/maps/fort-lonestar/map.yaml b/mods/ura/maps/fort-lonestar/map.yaml
new file mode 100644
index 0000000..fcdb8fa
--- /dev/null
+++ b/mods/ura/maps/fort-lonestar/map.yaml
@@ -0,0 +1,468 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Fort Lonestar
+
+Author: Nuke'm Bro, abcdefg30
+
+Tileset: TEMPERAT
+
+MapSize: 96,96
+
+Bounds: 8,8,48,48
+
+Visibility: Lobby
+
+Categories: Minigame
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Multi0:
+ Name: Multi0
+ Playable: True
+ LockTeam: True
+ Team: 1
+ LockFaction: True
+ Faction: allies
+ Allies: Multi1, Multi2, Multi3
+ Enemies: Soviets
+ PlayerReference@Multi1:
+ Name: Multi1
+ Playable: True
+ LockTeam: True
+ Team: 1
+ LockFaction: True
+ Faction: allies
+ Allies: Multi0, Multi2, Multi3
+ Enemies: Soviets
+ PlayerReference@Multi2:
+ Name: Multi2
+ Playable: True
+ LockTeam: True
+ Team: 1
+ LockFaction: True
+ Faction: allies
+ Allies: Multi0, Multi1, Multi3
+ Enemies: Soviets
+ PlayerReference@Multi3:
+ Name: Multi3
+ Playable: True
+ LockTeam: True
+ Team: 1
+ LockFaction: True
+ Faction: allies
+ Allies: Multi0, Multi1, Multi2
+ Enemies: Soviets
+ PlayerReference@Soviets:
+ Name: Soviets
+ Faction: soviet
+ LockTeam: True
+ Team: 2
+ Color: FF0101
+ Enemies: Multi0, Multi1, Multi2, Multi3
+
+Actors:
+ Actor76: t11
+ Location: 47,27
+ Owner: Neutral
+ Actor47: t12
+ Location: 55,24
+ Owner: Neutral
+ Actor25: tc03
+ Location: 54,49
+ Owner: Neutral
+ Actor14: tc04
+ Location: 24,7
+ Owner: Neutral
+ Actor10: tc04
+ Location: 38,53
+ Owner: Neutral
+ Actor0: t14
+ Location: 32,16
+ Owner: Neutral
+ Actor75: tc04
+ Location: 45,25
+ Owner: Neutral
+ Actor72: tc01
+ Location: 49,16
+ Owner: Neutral
+ Actor58: t10
+ Location: 22,54
+ Owner: Neutral
+ Actor26: tc01
+ Location: 54,41
+ Owner: Neutral
+ Actor37: tc01
+ Location: 54,21
+ Owner: Neutral
+ Actor60: tc05
+ Location: 7,16
+ Owner: Neutral
+ Actor69: t17
+ Location: 23,8
+ Owner: Neutral
+ Actor4: tc04
+ Location: 29,45
+ Owner: Neutral
+ Actor6: t17
+ Location: 33,43
+ Owner: Neutral
+ Actor16: tc04
+ Location: 53,16
+ Owner: Neutral
+ Actor21: tc03
+ Location: 8,14
+ Owner: Neutral
+ Actor8: t14
+ Location: 49,37
+ Owner: Neutral
+ Actor29: tc01
+ Location: 8,42
+ Owner: Neutral
+ Actor49: t15
+ Location: 54,47
+ Owner: Neutral
+ Actor62: tc05
+ Location: 6,43
+ Owner: Neutral
+ Actor73: tc05
+ Location: 16,34
+ Owner: Neutral
+ Actor32: tc01
+ Location: 8,24
+ Owner: Neutral
+ Actor59: tc05
+ Location: 7,39
+ Owner: Neutral
+ Actor5: tc01
+ Location: 44,44
+ Owner: Neutral
+ Actor51: t08
+ Location: 55,46
+ Owner: Neutral
+ Actor57: t12
+ Location: 19,54
+ Owner: Neutral
+ Actor54: t11
+ Location: 26,54
+ Owner: Neutral
+ Actor33: tc01
+ Location: 21,7
+ Owner: Neutral
+ Actor27: tc01
+ Location: 42,54
+ Owner: Neutral
+ Actor23: tc03
+ Location: 16,54
+ Owner: Neutral
+ Actor15: tc04
+ Location: 38,8
+ Owner: Neutral
+ Actor19: tc03
+ Location: 18,7
+ Owner: Neutral
+ Actor17: tc03
+ Location: 54,26
+ Owner: Neutral
+ Actor11: tc04
+ Location: 20,53
+ Owner: Neutral
+ Actor9: tc04
+ Location: 53,37
+ Owner: Neutral
+ Actor7: tc02
+ Location: 44,36
+ Owner: Neutral
+ Actor3: t15
+ Location: 19,25
+ Owner: Neutral
+ Actor1: t05
+ Location: 29,16
+ Owner: Neutral
+ Actor71: tc02
+ Location: 15,40
+ Owner: Neutral
+ Actor64: t06
+ Location: 18,16
+ Owner: Neutral
+ Actor63: t14
+ Location: 8,22
+ Owner: Neutral
+ Actor53: t08
+ Location: 41,55
+ Owner: Neutral
+ Actor61: tc05
+ Location: 54,39
+ Owner: Neutral
+ Actor48: t01
+ Location: 54,23
+ Owner: Neutral
+ Actor50: t17
+ Location: 54,44
+ Owner: Neutral
+ Actor36: tc01
+ Location: 42,8
+ Owner: Neutral
+ Actor52: t12
+ Location: 44,53
+ Owner: Neutral
+ Actor28: tc01
+ Location: 24,54
+ Owner: Neutral
+ Actor22: tc03
+ Location: 7,46
+ Owner: Neutral
+ Actor24: tc03
+ Location: 45,54
+ Owner: Neutral
+ Actor18: tc03
+ Location: 45,8
+ Owner: Neutral
+ Actor12: tc04
+ Location: 7,37
+ Owner: Neutral
+ Actor13: tc04
+ Location: 8,19
+ Owner: Neutral
+ Actor2: tc04
+ Location: 14,23
+ Owner: Neutral
+ Actor74: t06
+ Location: 19,36
+ Owner: Neutral
+ Actor46: t11
+ Location: 54,19
+ Owner: Neutral
+ Actor42: t16
+ Location: 53,19
+ Owner: Neutral
+ Actor68: tc05
+ Location: 35,7
+ Owner: Neutral
+ WallTopLeft1: brik
+ Location: 25,28
+ Owner: Neutral
+ WallTopLeft2: brik
+ Location: 25,27
+ Owner: Neutral
+ WallTopLeft3: brik
+ Location: 25,26
+ Owner: Neutral
+ WallTopLeft4: brik
+ Location: 25,29
+ Owner: Neutral
+ WallTopLeft5: brik
+ Location: 29,25
+ Owner: Neutral
+ WallTopLeft6: brik
+ Location: 25,25
+ Owner: Neutral
+ WallTopLeft7: brik
+ Location: 26,25
+ Owner: Neutral
+ WallTopLeft8: brik
+ Location: 27,25
+ Owner: Neutral
+ WallTopLeft9: brik
+ Location: 28,25
+ Owner: Neutral
+ WallTopRight1: brik
+ Location: 35,25
+ Owner: Neutral
+ WallTopRight2: brik
+ Location: 36,25
+ Owner: Neutral
+ WallTopRight3: brik
+ Location: 37,25
+ Owner: Neutral
+ WallTopRight4: brik
+ Location: 38,25
+ Owner: Neutral
+ WallTopRight5: brik
+ Location: 39,25
+ Owner: Neutral
+ WallTopRight6: brik
+ Location: 39,26
+ Owner: Neutral
+ WallTopRight7: brik
+ Location: 39,27
+ Owner: Neutral
+ WallTopRight8: brik
+ Location: 39,28
+ Owner: Neutral
+ WallTopRight9: brik
+ Location: 39,29
+ Owner: Neutral
+ WallBottomRight1: brik
+ Location: 39,37
+ Owner: Neutral
+ WallBottomRight2: brik
+ Location: 37,39
+ Owner: Neutral
+ WallBottomRight3: brik
+ Location: 39,38
+ Owner: Neutral
+ WallBottomRight4: brik
+ Location: 39,39
+ Owner: Neutral
+ WallBottomRight5: brik
+ Location: 38,39
+ Owner: Neutral
+ WallBottomRight6: brik
+ Location: 39,35
+ Owner: Neutral
+ WallBottomRight7: brik
+ Location: 39,36
+ Owner: Neutral
+ WallBottomRight8: brik
+ Location: 35,39
+ Owner: Neutral
+ WallBottomRight9: brik
+ Location: 36,39
+ Owner: Neutral
+ WallBottomLeft1: brik
+ Location: 25,39
+ Owner: Neutral
+ WallBottomLeft2: brik
+ Location: 28,39
+ Owner: Neutral
+ WallBottomLeft3: brik
+ Location: 29,39
+ Owner: Neutral
+ WallBottomLeft4: brik
+ Location: 27,39
+ Owner: Neutral
+ WallBottomLeft5: brik
+ Location: 25,35
+ Owner: Neutral
+ WallBottomLeft6: brik
+ Location: 25,36
+ Owner: Neutral
+ WallBottomLeft7: brik
+ Location: 25,37
+ Owner: Neutral
+ WallBottomLeft8: brik
+ Location: 25,38
+ Owner: Neutral
+ WallBottomLeft9: brik
+ Location: 26,39
+ Owner: Neutral
+ Sniper1: sniper.soviets
+ Location: 9,26
+ Owner: Soviets
+ Sniper2: sniper.soviets
+ Location: 10,21
+ Owner: Soviets
+ Sniper3: sniper.soviets
+ Location: 26,9
+ Owner: Soviets
+ Sniper4: sniper.soviets
+ Location: 40,10
+ Owner: Soviets
+ Sniper5: sniper.soviets
+ Location: 53,21
+ Owner: Soviets
+ Sniper6: sniper.soviets
+ Location: 54,25
+ Owner: Soviets
+ Sniper7: sniper.soviets
+ Location: 53,40
+ Owner: Soviets
+ Sniper8: sniper.soviets
+ Location: 54,43
+ Owner: Soviets
+ Sniper9: sniper.soviets
+ Location: 54,46
+ Owner: Soviets
+ Sniper10: sniper.soviets
+ Location: 43,53
+ Owner: Soviets
+ Sniper11: sniper.soviets
+ Location: 8,36
+ Owner: Soviets
+ Sniper12: sniper.soviets
+ Location: 28,55
+ Owner: Soviets
+ OilDerrick1: oilb
+ Location: 32,30
+ Owner: Multi0
+ OilDerrick2: oilb
+ Location: 32,32
+ Owner: Multi1
+ OilDerrick3: oilb
+ Location: 30,32
+ Owner: Multi2
+ OilDerrick4: oilb
+ Location: 30,30
+ Owner: Multi3
+ Spawn1: mpspawn
+ Location: 36,26
+ Owner: Neutral
+ Spawn2: mpspawn
+ Location: 27,26
+ Owner: Neutral
+ Spawn3: mpspawn
+ Location: 27,36
+ Owner: Neutral
+ Spawn4: mpspawn
+ Location: 36,36
+ Owner: Neutral
+ Entry1: waypoint
+ Location: 8,8
+ Owner: Neutral
+ Entry2: waypoint
+ Location: 31,8
+ Owner: Neutral
+ Entry3: waypoint
+ Location: 55,8
+ Owner: Neutral
+ Entry4: waypoint
+ Location: 55,32
+ Owner: Neutral
+ Entry5: waypoint
+ Location: 55,55
+ Owner: Neutral
+ Entry6: waypoint
+ Location: 32,55
+ Owner: Neutral
+ Entry7: waypoint
+ Location: 8,55
+ Owner: Neutral
+ Entry8: waypoint
+ Location: 8,32
+ Owner: Neutral
+ Paradrop1: waypoint
+ Location: 32,28
+ Owner: Neutral
+ Paradrop2: waypoint
+ Location: 27,32
+ Owner: Neutral
+ Paradrop3: waypoint
+ Location: 32,36
+ Owner: Neutral
+ Paradrop4: waypoint
+ Location: 36,32
+ Owner: Neutral
+ Patrol1: waypoint
+ Location: 32,18
+ Owner: Neutral
+ Patrol2: waypoint
+ Location: 17,32
+ Owner: Neutral
+ Patrol3: waypoint
+ Location: 32,46
+ Owner: Neutral
+ Patrol4: waypoint
+ Location: 46,32
+ Owner: Neutral
+
+Rules: rules.yaml
+
+Weapons: weapons.yaml
+
+Music: music.yaml
diff --git a/mods/ura/maps/fort-lonestar/music.yaml b/mods/ura/maps/fort-lonestar/music.yaml
new file mode 100644
index 0000000..71ace56
--- /dev/null
+++ b/mods/ura/maps/fort-lonestar/music.yaml
@@ -0,0 +1,2 @@
+rain: Rain (ambient)
+ Hidden: true
\ No newline at end of file
diff --git a/mods/ura/maps/fort-lonestar/rain.aud b/mods/ura/maps/fort-lonestar/rain.aud
new file mode 100644
index 0000000..6d14c5d
Binary files /dev/null and b/mods/ura/maps/fort-lonestar/rain.aud differ
diff --git a/mods/ura/maps/fort-lonestar/rules.yaml b/mods/ura/maps/fort-lonestar/rules.yaml
new file mode 100644
index 0000000..c577be1
--- /dev/null
+++ b/mods/ura/maps/fort-lonestar/rules.yaml
@@ -0,0 +1,416 @@
+World:
+ CrateSpawner:
+ InitialSpawnDelay: 0
+ Maximum: 4
+ SpawnInterval: 1000
+ CrateActors: fortcrate
+ MPStartUnits@mcvonly:
+ BaseActor: tent
+ WeatherOverlay:
+ WindTick: 150, 550
+ UseSquares: false
+ ScatterDirection: 0, 0
+ Gravity: 8.00, 12.00
+ SwingOffset: 0, 0
+ SwingSpeed: 0, 0
+ SwingAmplitude: 0, 0
+ ParticleColors: 304074, 28386C, 202C60, 182C54
+ LineTailAlphaValue: 150
+ ParticleSize: 1, 1
+ GlobalLightingPaletteEffect:
+ Red: 0.75
+ Green: 0.85
+ Blue: 1.5
+ Ambient: 0.45
+ MusicPlaylist:
+ BackgroundMusic: rain
+ FlashPaletteEffect@LIGHTNINGSTRIKE:
+ Type: LightningStrike
+ LuaScript:
+ Scripts: fort-lonestar.lua, fort-lonestar-AI.lua
+ MapBuildRadius:
+ AllyBuildRadiusCheckboxLocked: True
+ AllyBuildRadiusCheckboxEnabled: True
+ BuildRadiusCheckboxLocked: True
+ BuildRadiusCheckboxEnabled: True
+ SpawnMPUnits:
+ DropdownLocked: True
+ MapOptions:
+ TechLevelDropdownLocked: True
+ TechLevel: unrestricted
+ ShortGameCheckboxLocked: True
+ ShortGameCheckboxEnabled: False
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Description: Change the difficulty of the mission
+ Values:
+ hard: Hard (4P)
+ normal: Normal (3P)
+ easy: Easy (2P)
+ veryeasy: Very Easy (1P)
+ tough: Real tough guy
+ endless: Endless mode
+ Default: hard
+ DisplayOrder: 5
+
+FORTCRATE:
+ Inherits: ^Crate
+ SupportPowerCrateAction@parabombs:
+ SelectionShares: 30
+ Proxy: powerproxy.parabombs
+ Effect: parabombs
+ HealUnitsCrateAction:
+ SelectionShares: 30
+ Notification: heal2.aud
+ Effect: heal
+ GiveCashCrateAction:
+ Amount: 400
+ UseCashTick: true
+ SelectionShares: 30
+ GiveUnitCrateAction@e7:
+ Units: e7
+ SelectionShares: 10
+ GrantExternalConditionCrateAction@ironcurtain:
+ SelectionShares: 10
+ Effect: invuln
+ Notification: ironcur9.aud
+ Condition: invulnerability
+ Duration: 1200
+ ExplodeCrateAction@bigboom:
+ Weapon: SCUD
+ SelectionShares: 5
+ GiveMcvCrateAction:
+ SelectionShares: 0
+ NoBaseSelectionShares: 1000
+ Units: mobiletent
+ ValidFactions: allies
+
+Player:
+ ClassicProductionQueue@Infantry:
+ BuildDurationModifier: 250
+ -EnemyWatcher:
+ Shroud:
+ FogCheckboxLocked: True
+ FogCheckboxEnabled: True
+ ExploredMapCheckboxLocked: True
+ ExploredMapCheckboxEnabled: False
+ PlayerResources:
+ DefaultCashLocked: True
+ DefaultCash: 50
+ -HackyAI@RushAI:
+ -HackyAI@NormalAI:
+ -HackyAI@NavalAI:
+ -HackyAI@TurtleAI:
+ DummyAI@LonestarAI:
+ Name: Lonestar AI
+ Type: lonestar
+
+^Infantry:
+ Inherits@IC: ^IronCurtainable
+
+^Husk:
+ TransformOnCapture:
+ ForceHealthPercentage: 80
+
+OILB:
+ Health:
+ HP: 3000
+ Armor:
+ Type: Wood
+ WithBuildingBib:
+ RevealsShroud:
+ Range: 3c0
+ CashTrickler:
+ Interval: 250
+ Amount: 50
+
+MOBILETENT:
+ Inherits: ^Vehicle
+ Valued:
+ Cost: 2000
+ Tooltip:
+ Name: Mobile Tent
+ Selectable:
+ Priority: 4
+ DecorationBounds: 21,21
+ SelectionDecorations:
+ Health:
+ HP: 600
+ Armor:
+ Type: Light
+ Mobile:
+ Speed: 85
+ Crushes: wall, mine, crate, infantry
+ RevealsShroud:
+ Range: 4c0
+ MustBeDestroyed:
+ RequiredForShortGame: true
+ BaseBuilding:
+ Transforms:
+ IntoActor: tent
+ Offset: 0,0
+ Facing: 96
+ TransformSounds: placbldg.aud, build5.aud
+ NoTransformNotification: BuildingCannotPlaceAudio
+ RenderSprites:
+ Image: TRUK
+
+TENT:
+ Health:
+ HP: 1000
+ Production:
+ Produces: Infantry, Soldier, Dog, Defense
+ -Sellable:
+ BaseProvider:
+ Range: 12c0
+ Power:
+ Amount: 0
+ ProductionBar@Defense:
+ ProductionType: Defense
+ Color: 8A8A8A
+ BaseBuilding:
+
+FTUR:
+ Buildable:
+ Prerequisites: barracks
+ Valued:
+ Cost: 400
+ Power:
+ Amount: 0
+ GivesBuildableArea:
+ AreaTypes: building
+
+PBOX:
+ Buildable:
+ Prerequisites: barracks
+ Valued:
+ Cost: 400
+ Health:
+ HP: 200
+ Armor:
+ Type: Heavy
+ Power:
+ Amount: 0
+ GivesBuildableArea:
+ AreaTypes: building
+
+DOG:
+ Buildable:
+ Prerequisites: barracks
+ Valued:
+ Cost: 20
+
+E1:
+ Buildable:
+ Prerequisites: barracks
+ Valued:
+ Cost: 20
+
+E2:
+ Buildable:
+ Prerequisites: barracks
+ Valued:
+ Cost: 40
+ Explodes:
+ Chance: 20
+
+E3:
+ Buildable:
+ Prerequisites: barracks
+ Valued:
+ Cost: 60
+
+E4:
+ Buildable:
+ Prerequisites: barracks
+ Valued:
+ Cost: 100
+
+E6:
+ Buildable:
+ Prerequisites: barracks
+ Valued:
+ Cost: 100
+
+E7:
+ Buildable:
+ Prerequisites: barracks
+ Valued:
+ Cost: 750
+
+3TNK:
+ Armament:
+ Weapon: TankNapalm
+ Recoil: 200
+ RecoilRecovery: 38
+
+MEDI:
+ Buildable:
+ Prerequisites: barracks
+ Valued:
+ Cost: 100
+
+SHOK:
+ Buildable:
+ Prerequisites: barracks
+ Valued:
+ Cost: 150
+
+SNIPER:
+ Valued:
+ Cost: 200
+ Buildable:
+ Prerequisites: barracks
+ Health:
+ HP: 200
+
+SNIPER.soviets:
+ Inherits: SNIPER
+ Buildable:
+ Prerequisites: ~disabled
+ MustBeDestroyed:
+ Targetable:
+ TargetTypes: Disguise
+ AutoTarget:
+ InitialStanceAI: AttackAnything
+ RenderSprites:
+ Image: SNIPER
+
+SPY:
+ Buildable:
+ BuildPaletteOrder: 60
+ Prerequisites: barracks
+ Valued:
+ Cost: 300
+ -MustBeDestroyed:
+
+FTRK:
+ -Armament@AA:
+ -Armament@AG:
+ Armament:
+ Weapon: FLAK-23
+ Recoil: 85
+ LocalOffset: 512,0,192
+ MuzzleSequence: muzzle
+
+ARTY:
+ Valued:
+ Cost: 600
+ Health:
+ HP: 75
+ RevealsShroud:
+ Range: 7c0
+
+V2RL:
+ Health:
+ HP: 100
+ ReloadAmmoPool:
+ Delay: 280
+
+4TNK:
+ Health:
+ HP: 2500
+ Mobile:
+ Speed: 56
+ RevealsShroud:
+ Range: 14c0
+ Turreted:
+ TurnSpeed: 1
+ Armament@PRIMARY:
+ Recoil: 8
+ RecoilRecovery: 0c7
+ Armament@SECONDARY:
+ Recoil: 2
+ Explodes:
+ Weapon: napalm
+ EmptyWeapon: napalm
+ SelfHealing:
+ Step: 2
+ Delay: 1
+ HealIfBelow: 40
+
+powerproxy.parabombs:
+ AirstrikePower:
+ LongDesc: A MiG bomber drops a load of parachuted bombs on your target.
+ CameraRemoveDelay: 50
+
+BADR.Bomber:
+ Health:
+ HP: 60
+ Aircraft:
+ Speed: 280
+ AmmoPool:
+ Ammo: 30
+ Tooltip:
+ Name: MiG Bomber
+ SpawnActorOnDeath:
+ Actor: MIG.Husk
+ RenderSprites:
+ Image: mig
+
+MECH:
+ Buildable:
+ Prerequisites: barracks
+ Valued:
+ Cost: 1500
+
+powerproxy.paratroopers:
+ ParatroopersPower:
+ DropItems: E1,E1,E1,E1,E2,E2
+
+SILO:
+ Buildable:
+ Prerequisites: ~disabled
+
+BRIK:
+ Buildable:
+ Prerequisites: ~disabled
+
+HBOX:
+ Buildable:
+ Prerequisites: ~disabled
+
+GUN:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+SBAG:
+ Buildable:
+ Prerequisites: ~disabled
+
+FENC:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+GAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+IRON:
+ Buildable:
+ Prerequisites: ~disabled
+
+PDOX:
+ Buildable:
+ Prerequisites: ~disabled
+
+AGUN:
+ Buildable:
+ Prerequisites: ~disabled
+
+TSLA:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
diff --git a/mods/ura/maps/fort-lonestar/thunder-ambient.aud b/mods/ura/maps/fort-lonestar/thunder-ambient.aud
new file mode 100644
index 0000000..06d99c0
Binary files /dev/null and b/mods/ura/maps/fort-lonestar/thunder-ambient.aud differ
diff --git a/mods/ura/maps/fort-lonestar/thunder1.aud b/mods/ura/maps/fort-lonestar/thunder1.aud
new file mode 100644
index 0000000..c45d3fc
Binary files /dev/null and b/mods/ura/maps/fort-lonestar/thunder1.aud differ
diff --git a/mods/ura/maps/fort-lonestar/thunder2.aud b/mods/ura/maps/fort-lonestar/thunder2.aud
new file mode 100644
index 0000000..07d78b1
Binary files /dev/null and b/mods/ura/maps/fort-lonestar/thunder2.aud differ
diff --git a/mods/ura/maps/fort-lonestar/thunder3.aud b/mods/ura/maps/fort-lonestar/thunder3.aud
new file mode 100644
index 0000000..e81b9aa
Binary files /dev/null and b/mods/ura/maps/fort-lonestar/thunder3.aud differ
diff --git a/mods/ura/maps/fort-lonestar/thunder4.aud b/mods/ura/maps/fort-lonestar/thunder4.aud
new file mode 100644
index 0000000..db9202a
Binary files /dev/null and b/mods/ura/maps/fort-lonestar/thunder4.aud differ
diff --git a/mods/ura/maps/fort-lonestar/thunder5.aud b/mods/ura/maps/fort-lonestar/thunder5.aud
new file mode 100644
index 0000000..b13f81f
Binary files /dev/null and b/mods/ura/maps/fort-lonestar/thunder5.aud differ
diff --git a/mods/ura/maps/fort-lonestar/weapons.yaml b/mods/ura/maps/fort-lonestar/weapons.yaml
new file mode 100644
index 0000000..0c2ce16
--- /dev/null
+++ b/mods/ura/maps/fort-lonestar/weapons.yaml
@@ -0,0 +1,173 @@
+120mm:
+ ReloadDelay: 150
+ Range: 10c0
+ Burst: 6
+ Projectile: Bullet
+ Speed: 204
+ Blockable: false
+ Inaccuracy: 1c682
+ Image: 120MM
+ ContrailLength: 50
+ Warhead@1Dam: SpreadDamage
+ Spread: 256
+ Versus:
+ None: 75
+ Concrete: 100
+ Damage: 150
+ Warhead@3Eff: CreateEffect
+ Explosions: self_destruct
+
+MammothTusk:
+ ReloadDelay: 300
+ Range: 10c0
+ ValidTargets: Ground, Air
+ Projectile: Missile
+ Blockable: false
+ Speed: 128
+ TrailImage: smokey
+ ContrailLength: 150
+ Inaccuracy: 0c853
+ HorizontalRateOfTurn: 10
+ RangeLimit: 12c0
+ Warhead@1Dam: SpreadDamage
+ Spread: 640
+ ValidTargets: Ground, Air
+ Versus:
+ None: 125
+ Wood: 110
+ Light: 110
+ Heavy: 100
+ Concrete: 200
+ Damage: 250
+ Warhead@3Eff: CreateEffect
+ Explosions: nuke
+
+TankNapalm:
+ ReloadDelay: 40
+ Range: 8c0
+ Report: aacanon3.aud
+ ValidTargets: Ground
+ Burst: 6
+ BurstDelays: 1
+ Projectile: Bullet
+ Speed: 426
+ Image: 120MM
+ Inaccuracy: 2c512
+ TrailImage: smokey
+ ContrailLength: 2
+ Blockable: false
+ Warhead: SpreadDamage
+ Spread: 341
+ ValidTargets: Ground
+ Versus:
+ None: 90
+ Wood: 170
+ Light: 100
+ Heavy: 100
+ Concrete: 100
+ Damage: 15
+ DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath
+ Warhead@2Smu: LeaveSmudge
+ SmudgeType: Scorch
+ Warhead@3Eff: CreateEffect
+ Explosions: small_explosion
+ ImpactSounds: firebl3.aud
+
+ParaBomb:
+ ReloadDelay: 5
+ Range: 5c0
+ Projectile: GravityBomb
+ Image: BOMBLET
+ OpenSequence: idle
+ Warhead@1Dam: SpreadDamage
+ Spread: 426
+ Versus:
+ None: 125
+ Wood: 100
+ Light: 60
+ Concrete: 25
+ Damage: 200
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath
+ Warhead@3Eff: CreateEffect
+ Explosions: napalm
+ ImpactSounds: firebl3.aud
+
+155mm:
+ ReloadDelay: 10
+ Range: 7c0
+ Burst: 20
+ -Report:
+ Projectile: Bullet
+ Speed: 170
+ TrailImage: fb4
+ Image: fb3
+ Blockable: false
+ LaunchAngle: 30
+ Inaccuracy: 1c682
+ ContrailLength: 2
+ Warhead@1Dam: SpreadDamage
+ Versus:
+ None: 80
+ Wood: 100
+ Heavy: 75
+ Concrete: 35
+ Damage: 20
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath
+ Warhead@3Eff: CreateEffect
+ Explosions: small_napalm
+ ImpactSounds: firebl3.aud
+
+FLAK-23:
+ ReloadDelay: 10
+ Range: 8c0
+ Report: aacanon3.aud
+ ValidTargets: Air, Ground
+ Projectile: Bullet
+ Speed: 1c682
+ Blockable: false
+ Warhead: SpreadDamage
+ Spread: 213
+ ValidTargets: Air, Ground
+ Versus:
+ None: 35
+ Wood: 30
+ Light: 30
+ Heavy: 40
+ Concrete: 30
+ Damage: 25
+ DamageTypes: Prone50Percent, TriggerProne, DefaultDeath
+ Warhead@2Smu: LeaveSmudge
+ SmudgeType: Scorch
+ Warhead@3Eff: CreateEffect
+ Explosions: med_explosion
+
+SCUD:
+ Range: 7c0
+ Projectile: Bullet
+ Arm: 10
+ TrailImage: smokey
+ Blockable: false
+ Inaccuracy: 0c426
+ LaunchAngle: 216
+ Warhead@1Dam: SpreadDamage
+ Spread: 853
+ Falloff: 100, 37, 14, 5, 0
+ Versus:
+ None: 100
+ Wood: 90
+ Light: 80
+ Heavy: 70
+ Damage: 500
+ AffectsParent: true
+ Warhead@3Eff: CreateEffect
+ Explosions: nuke
+ ImpactSounds: kaboom1.aud
+
+SilencedPPK:
+ Range: 25c0
+ ValidTargets: Infantry, Vehicle, Husk
+ InvalidTargets: Water, Structure, Wall
+ Warhead@1Dam: SpreadDamage
+ ValidTargets: Infantry, Vehicle, Husk
+ Versus:
+ Heavy: 50
diff --git a/mods/ura/maps/great-sahara-2.oramap b/mods/ura/maps/great-sahara-2.oramap
new file mode 100644
index 0000000..8b828cd
Binary files /dev/null and b/mods/ura/maps/great-sahara-2.oramap differ
diff --git a/mods/ura/maps/green-belt.oramap b/mods/ura/maps/green-belt.oramap
new file mode 100644
index 0000000..2d56309
Binary files /dev/null and b/mods/ura/maps/green-belt.oramap differ
diff --git a/mods/ura/maps/haos-ridges.oramap b/mods/ura/maps/haos-ridges.oramap
new file mode 100644
index 0000000..d06c04d
Binary files /dev/null and b/mods/ura/maps/haos-ridges.oramap differ
diff --git a/mods/ura/maps/hypothermia.oramap b/mods/ura/maps/hypothermia.oramap
new file mode 100644
index 0000000..208f989
Binary files /dev/null and b/mods/ura/maps/hypothermia.oramap differ
diff --git a/mods/ura/maps/icy-ridge.oramap b/mods/ura/maps/icy-ridge.oramap
new file mode 100644
index 0000000..82af158
Binary files /dev/null and b/mods/ura/maps/icy-ridge.oramap differ
diff --git a/mods/ura/maps/imminent-destruction.oramap b/mods/ura/maps/imminent-destruction.oramap
new file mode 100644
index 0000000..243d391
Binary files /dev/null and b/mods/ura/maps/imminent-destruction.oramap differ
diff --git a/mods/ura/maps/infiltration/infiltration.lua b/mods/ura/maps/infiltration/infiltration.lua
new file mode 100644
index 0000000..a2ec3fd
--- /dev/null
+++ b/mods/ura/maps/infiltration/infiltration.lua
@@ -0,0 +1,391 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+Difficulty = Map.LobbyOption("difficulty")
+
+if Difficulty == "hard" then
+ TimerTicks = DateTime.Minutes(25)
+elseif Difficulty == "normal" then
+ TimerTicks = DateTime.Minutes(28)
+else
+ TimerTicks = DateTime.Minutes(31)
+end
+
+Announcements =
+{
+ { speech = "TwentyMinutesRemaining", delay = DateTime.Minutes(20) },
+ { speech = "TenMinutesRemaining", delay = DateTime.Minutes(10) },
+ { speech = "WarningFiveMinutesRemaining", delay = DateTime.Minutes(5) },
+ { speech = "WarningFourMinutesRemaining", delay = DateTime.Minutes(4) },
+ { speech = "WarningThreeMinutesRemaining", delay = DateTime.Minutes(3) },
+ { speech = "WarningTwoMinutesRemaining", delay = DateTime.Minutes(2) },
+ { speech = "WarningOneMinuteRemaining", delay = DateTime.Minutes(1) }
+}
+
+TownAttackers = { TownAttacker1, TownAttacker2, TownAttacker3, TownAttacker4, TownAttacker5, TownAttacker6, TownAttacker7 }
+
+PatrolPoints1 = { PatrolPoint11.Location, PatrolPoint12.Location, PatrolPoint13.Location, PatrolPoint14.Location, PatrolPoint15.Location }
+PatrolPoints2 = { PatrolPoint21.Location, PatrolPoint22.Location, PatrolPoint23.Location, PatrolPoint24.Location, PatrolPoint25.Location }
+PatrolPoints3 = { PatrolPoint31.Location, PatrolPoint32.Location, PatrolPoint33.Location, PatrolPoint34.Location }
+PatrolPoints4 = { PatrolPoint41.Location, PatrolPoint42.Location, PatrolPoint43.Location, PatrolPoint44.Location, PatrolPoint45.Location }
+
+Patrol1 = { "e1", "e1", "e1", "e1", "e1" }
+Patrol2 = { "e1", "dog.patrol", "dog.patrol" }
+Patrol3 = { "e1", "e1", "dog.patrol" }
+
+TransportType = "lst.unselectable.unloadonly"
+
+SecureLabFailed = function()
+ Utils.Do(humans, function(player)
+ if player then
+ player.MarkFailedObjective(secureLab)
+ end
+ end)
+end
+
+timerStarted = false
+StartTimer = function()
+ Utils.Do(humans, function(player)
+ if player.IsLocalPlayer then
+ TimerColor = player.Color
+ end
+ end)
+ CountDownTimerAnnouncements()
+ ticked = TimerTicks
+ timerStarted = true
+ Trigger.AfterDelay(DateTime.Seconds(3), function()
+ Utils.Do(humans, function(player)
+ Media.PlaySpeechNotification(player, "TimerStarted")
+ end)
+ end)
+end
+
+CountDownTimerAnnouncements = function()
+ for i = #Announcements, 1, -1 do
+ local delay = TimerTicks - Announcements[i].delay
+ Trigger.AfterDelay(delay, function()
+ if not labSecured then
+ Utils.Do(humans, function(player)
+ Media.PlaySpeechNotification(player, Announcements[i].speech)
+ end)
+ end
+ end)
+ end
+end
+
+reinforcementsHaveArrived = false
+LabInfiltrated = function()
+ Utils.Do(humans, function(player)
+ if player then
+ secureLab = player.AddPrimaryObjective("Eliminate all units guarding the lab.")
+ destroyBase = player.AddPrimaryObjective("Destroy the soviet installation.")
+ player.MarkCompletedObjective(infiltrateLab)
+ Trigger.ClearAll(Lab)
+ Trigger.AfterDelay(0, function()
+ Trigger.OnKilled(Lab, SecureLabFailed)
+ end)
+ end
+ end)
+
+ Camera.Position = ReinforcementsUnloadPoint.CenterPosition
+ local entryPath = { ReinforcementsEntryPoint.Location, ReinforcementsUnloadPoint.Location }
+ local exit = { ReinforcementsEntryPoint.Location }
+
+ mcvActors = { "mcv" }
+ if player2 then
+ mcvActors = { "mcv", "mcv" }
+ end
+
+ local reinforcements = Reinforcements.ReinforceWithTransport(allies, TransportType, mcvActors, entryPath, exit)
+ local mcvs = reinforcements[2]
+
+ Trigger.OnAddedToWorld(mcvs[1], function(mcvUnloaded)
+
+ -- Don't call this twice (because of the owner change)
+ if mcvUnloaded.Owner == player1 then
+ return
+ end
+
+ mcvUnloaded.Owner = player1
+ if not player2 then
+ player1.Cash = 5000
+ end
+ Media.PlaySpeechNotification(player, "AlliedReinforcementsSouth")
+ StartTimer()
+ HijackTruck.Destroy()
+ reinforcementsHaveArrived = true
+ end)
+
+ if player2 then
+ Trigger.OnAddedToWorld(mcvs[2], function(mcvUnloaded)
+
+ -- Don't call this twice (because of the owner change)
+ if mcvUnloaded.Owner == player2 then
+ return
+ end
+
+ mcvUnloaded.Owner = player2
+ player1.Cash = 2500
+ player2.Cash = 2500
+ end)
+ end
+
+ Utils.Do(humans, function(player)
+ for i = 0, 2 do
+ Trigger.AfterDelay(DateTime.Seconds(i), function()
+ Media.PlaySoundNotification(player, "AlertBuzzer")
+ end)
+ end
+ end)
+
+ local attackPoint = BridgeAttackPoint.CenterPosition
+ local radius = WDist.FromCells(5)
+ local bridge = Map.ActorsInCircle(attackPoint, radius, function(actor)
+ return actor.Type == "br3"
+ end)[1]
+ BridgeTank.Attack(bridge, true, true)
+end
+
+InfiltrateLabFailed = function()
+ Utils.Do(humans, function(player)
+ if player then
+ player.MarkFailedObjective(infiltrateLab)
+ end
+ end)
+end
+
+ChangeOwnerOnAddedToWorld = function(actor, newOwner)
+ Trigger.OnAddedToWorld(actor, function(unloadedActor)
+ unloadedActor.Owner = newOwner
+ Trigger.Clear(unloadedActor, "OnAddedToWorld")
+ end)
+end
+
+InsertSpies = function()
+ Utils.Do(humans, function(player)
+ if player then
+ infiltrateLab = player.AddPrimaryObjective("Get our spy into the laboratory undetected.")
+ end
+ end)
+
+ Trigger.OnKilled(Lab, function()
+ if not player1.IsObjectiveCompleted(infiltrateLab) then
+ InfiltrateLabFailed()
+ end
+ end)
+
+ -- The delay isn't purely cosmetic, but also prevents a System.InvalidOperationException
+ -- "Collection was modified after the enumerator was instantiated." in tick_activities
+ local infiltrationCount = 0
+ Trigger.OnInfiltrated(Lab, function()
+ infiltrationCount = infiltrationCount + 1
+
+ if (player2 and infiltrationCount == 2) or not player2 then
+ Trigger.AfterDelay(DateTime.Seconds(3), LabInfiltrated)
+ end
+ end)
+
+ spyActors = { "spy.strong" }
+ if player2 then
+ spyActors = { "spy.strong", "spy.strong" }
+ end
+
+ local entryPath = { SpyReinforcementsEntryPoint.Location, SpyReinforcementsUnloadPoint.Location }
+ local exit = { SpyReinforcementsExitPoint.Location }
+ local reinforcements = Reinforcements.ReinforceWithTransport(allies, TransportType, spyActors, entryPath, exit)
+
+ local transport = reinforcements[1]
+ Camera.Position = transport.CenterPosition
+
+ spies = reinforcements[2]
+ Trigger.OnAnyKilled(spies, InfiltrateLabFailed)
+
+ ChangeOwnerOnAddedToWorld(spies[1], player1)
+
+ if player2 then
+ ChangeOwnerOnAddedToWorld(spies[2], player2)
+ end
+end
+
+IdleHunt = function(unit)
+ Trigger.OnIdle(unit, unit.Hunt)
+end
+
+StopHunt = function(unit)
+ if not unit.IsDead then
+ Trigger.Clear(unit, "OnIdle")
+ end
+end
+
+AttackTown = function()
+ Utils.Do(TownAttackers, IdleHunt)
+
+ Trigger.OnRemovedFromWorld(Hospital, function()
+ Utils.Do(TownAttackers, StopHunt)
+ end)
+end
+
+CapOre = function(player)
+ if player.Resources > player.ResourceCapacity * 0.9 then
+ player.Resources = player.ResourceCapacity * 0.8
+ end
+end
+
+NewPatrol = function(actorType, start, waypoints)
+ local guard = Actor.Create(actorType, true, { Owner = soviets, Location = start })
+ guard.Patrol(waypoints, true, Utils.RandomInteger(50, 75))
+end
+
+SetupPatrols = function()
+ Utils.Do(Patrol1, function(patrol1) NewPatrol(patrol1, PatrolPoints1[1], PatrolPoints1) end)
+ Utils.Do(Patrol2, function(patrol2) NewPatrol(patrol2, PatrolPoints1[3], PatrolPoints1) end)
+ Utils.Do(Patrol2, function(patrol3) NewPatrol(patrol3, PatrolPoints3[1], PatrolPoints3) end)
+ Utils.Do(Patrol2, function(patrol4) NewPatrol(patrol4, PatrolPoints4[1], PatrolPoints4) end)
+
+ if Difficulty == "hard" then
+ Utils.Do(Patrol3, function(patrol5) NewPatrol(patrol5, PatrolPoints2[1], PatrolPoints2) end)
+ end
+
+ local checkpoint = { BaseGuardTruckPos.Location }
+ Trigger.OnEnteredFootprint(checkpoint, function(a, id)
+ Trigger.RemoveFootprintTrigger(id)
+ if not BaseGuard.IsDead then
+ BaseGuard.ScriptedMove(BaseGuardMovePos.Location)
+ end
+ end)
+end
+
+ticked = 0
+SecureLabTimer = function()
+ if not timerStarted or labSecured then
+ return
+ end
+
+ if ticked > 0 then
+ UserInterface.SetMissionText("Secure lab in: " .. Utils.FormatTime(ticked), TimerColor)
+ ticked = ticked - 1
+ elseif ticked <= 0 then
+ TimerColor = soviets.Color
+ UserInterface.SetMissionText("The Soviet research laboratory was not secured in time.", TimerColor)
+ SecureLabFailed()
+ end
+end
+
+SovietBaseMaintenanceSetup = function()
+ local sovietbuildings = Utils.Where(Map.NamedActors, function(a)
+ return a.Owner == soviets
+ and a.HasProperty("StartBuildingRepairs") and a.HasProperty("Sell")
+ end)
+
+ -- This includes killed, captured (actor is temporarily removed) and sold.
+ Trigger.OnAllRemovedFromWorld(sovietbuildings, function()
+ Utils.Do(humans, function(player)
+ player.MarkCompletedObjective(destroyBase)
+ end)
+ end)
+
+ Utils.Do(sovietbuildings, function(sovietbuilding)
+ Trigger.OnDamaged(sovietbuilding, function(building)
+ if building.Owner ~= soviets then
+ return
+ end
+ if building.Health < building.MaxHealth * 3/4 then
+ building.StartBuildingRepairs()
+ end
+ if building.Health < building.MaxHealth * 1/4 then
+ building.Sell()
+ end
+ end)
+ end)
+end
+
+CheckPlayerDefeat = function()
+ if not reinforcementsHaveArrived then
+ return
+ end
+
+ Utils.Do(humans, function(player)
+ if player.HasNoRequiredUnits() then
+ player.MarkFailedObjective(destroyBase)
+ end
+ end)
+end
+
+labSecured = false
+CheckLabSecured = function()
+ if not reinforcementsHaveArrived or labSecured then
+ return
+ end
+
+ if player1.HasNoRequiredUnits() or (player2 and player2.HasNoRequiredUnits()) then
+ Utils.Do(humans, function(player)
+ player.MarkFailedObjective(secureLab)
+ end)
+ end
+
+ local radius = WDist.FromCells(10)
+ local labGuards = Utils.Where(Map.ActorsInCircle(LabWaypoint.CenterPosition, radius), function(a)
+ return a.Owner == soviets and a.HasProperty("Move")
+ end)
+
+ if #labGuards < 1 then
+ labSecured = true
+ Utils.Do(humans, function(player)
+ player.MarkCompletedObjective(secureLab)
+ end)
+ UserInterface.SetMissionText("")
+ end
+end
+
+Tick = function()
+ CapOre(soviets)
+ SecureLabTimer()
+ CheckLabSecured()
+ CheckPlayerDefeat()
+end
+
+WorldLoaded = function()
+ allies = Player.GetPlayer("Allies")
+ neutral = Player.GetPlayer("Neutral")
+ creeps = Player.GetPlayer("Creeps")
+ soviets = Player.GetPlayer("Soviets")
+
+ player1 = Player.GetPlayer("Allies1")
+ player2 = Player.GetPlayer("Allies2")
+ humans = { player1, player2 }
+
+ Utils.Do(humans, function(player)
+ if player and player.IsLocalPlayer then
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ local objectiveType = string.lower(p.GetObjectiveType(id))
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. objectiveType .. " objective")
+ end)
+
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "MissionAccomplished")
+ end)
+
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "MissionFailed")
+ end)
+ end
+ end)
+
+ InsertSpies()
+ AttackTown()
+ SetupPatrols()
+ SovietBaseMaintenanceSetup()
+end
diff --git a/mods/ura/maps/infiltration/map.bin b/mods/ura/maps/infiltration/map.bin
new file mode 100644
index 0000000..3fc82e3
Binary files /dev/null and b/mods/ura/maps/infiltration/map.bin differ
diff --git a/mods/ura/maps/infiltration/map.png b/mods/ura/maps/infiltration/map.png
new file mode 100644
index 0000000..29bfd56
Binary files /dev/null and b/mods/ura/maps/infiltration/map.png differ
diff --git a/mods/ura/maps/infiltration/map.yaml b/mods/ura/maps/infiltration/map.yaml
new file mode 100644
index 0000000..7b4d387
--- /dev/null
+++ b/mods/ura/maps/infiltration/map.yaml
@@ -0,0 +1,1788 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Infiltration
+
+Author: Scott_NZ
+
+Tileset: TEMPERAT
+
+MapSize: 128,128
+
+Bounds: 16,16,96,96
+
+Visibility: Lobby, MissionSelector
+
+Categories: Mission, Cooperative Mission
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Faction: allies
+ Enemies: Soviets
+ PlayerReference@Allies1:
+ Name: Allies1
+ AllowBots: False
+ Playable: True
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: ABB7E4
+ LockSpawn: True
+ LockTeam: True
+ Allies: Allies2, Allies
+ Enemies: Soviets
+ PlayerReference@Allies2:
+ Name: Allies2
+ AllowBots: False
+ Playable: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: A1EF8C
+ LockSpawn: True
+ LockTeam: True
+ Allies: Allies1, Allies
+ Enemies: Soviets
+ PlayerReference@Allies:
+ Name: Allies
+ Faction: allies
+ Color: 5CC1A3
+ Allies: Allies1, Allies2
+ Enemies: Soviets
+ PlayerReference@Soviets:
+ Name: Soviets
+ Faction: soviet
+ Color: FE1100
+ Enemies: Allies1, Allies2, Allies, Creeps
+
+Actors:
+ Actor2: v07
+ Location: 58,83
+ Owner: Creeps
+ Actor1: v05
+ Location: 54,89
+ Owner: Creeps
+ Actor56: t01
+ Location: 68,97
+ Owner: Neutral
+ Actor5: v03
+ Location: 66,84
+ Owner: Creeps
+ Actor25: t16
+ Location: 69,64
+ Owner: Neutral
+ Actor68: t08
+ Location: 65,93
+ Owner: Neutral
+ Actor26: tc04
+ Location: 69,61
+ Owner: Neutral
+ Actor27: t02
+ Location: 68,63
+ Owner: Neutral
+ Actor28: t07
+ Location: 67,78
+ Owner: Neutral
+ Actor30: t08
+ Location: 81,88
+ Owner: Neutral
+ Actor31: t14
+ Location: 84,88
+ Owner: Neutral
+ Actor33: t10
+ Location: 73,83
+ Owner: Neutral
+ Actor8: v07
+ Location: 66,95
+ Owner: Creeps
+ Actor0: v04
+ Location: 58,90
+ Owner: Creeps
+ Actor41: t12
+ Location: 73,69
+ Owner: Neutral
+ Actor44: t13
+ Location: 83,78
+ Owner: Neutral
+ Actor47: v01
+ Location: 70,84
+ Owner: Creeps
+ Actor10: v02
+ Location: 73,90
+ Owner: Creeps
+ Actor236: sbag
+ Location: 66,36
+ Owner: Soviets
+ Actor233: sbag
+ Location: 66,35
+ Owner: Soviets
+ Actor235: sbag
+ Location: 68,35
+ Owner: Soviets
+ Actor234: sbag
+ Location: 67,35
+ Owner: Soviets
+ Actor222: hpad
+ Location: 56,36
+ Owner: Soviets
+ Actor57: t07
+ Location: 74,64
+ Owner: Neutral
+ Actor49: tc02
+ Location: 63,79
+ Owner: Neutral
+ Actor48: t14
+ Location: 63,90
+ Owner: Neutral
+ Actor66: tc03
+ Location: 87,89
+ Owner: Neutral
+ Actor77: mine
+ Location: 96,85
+ Owner: Neutral
+ Actor78: tc04
+ Location: 103,78
+ Owner: Neutral
+ Actor80: t07
+ Location: 81,81
+ Owner: Neutral
+ Actor81: t06
+ Location: 111,82
+ Owner: Neutral
+ Actor82: t03
+ Location: 110,76
+ Owner: Neutral
+ Actor84: tc02
+ Location: 94,75
+ Owner: Neutral
+ Actor9: v01
+ Location: 64,94
+ Owner: Creeps
+ Actor53: powr
+ Location: 86,65
+ Owner: Soviets
+ Actor113: tc05
+ Location: 86,59
+ Owner: Neutral
+ Actor51: barr
+ Location: 93,70
+ Owner: Soviets
+ Lab: miss
+ Location: 34,30
+ Owner: Soviets
+ LabWaypoint: waypoint
+ Location: 34,30
+ Owner: Neutral
+ Actor45: brik
+ Location: 39,34
+ Owner: Soviets
+ Actor43: brik
+ Location: 39,33
+ Owner: Soviets
+ Actor42: brik
+ Location: 39,32
+ Owner: Soviets
+ Actor39: brik
+ Location: 39,31
+ Owner: Soviets
+ Actor38: brik
+ Location: 39,30
+ Owner: Soviets
+ Actor34: brik
+ Location: 38,28
+ Owner: Soviets
+ Actor36: brik
+ Location: 39,29
+ Owner: Soviets
+ Actor494: e4
+ Location: 98,38
+ Owner: Soviets
+ Actor495: e4
+ Location: 48,34
+ Owner: Soviets
+ Actor58: brik
+ Location: 32,28
+ Owner: Soviets
+ Actor35: brik
+ Location: 39,28
+ Owner: Soviets
+ Actor110: e1
+ Location: 33,28
+ Owner: Soviets
+ Actor60: apwr
+ Location: 44,46
+ Owner: Soviets
+ Actor22: brik
+ Location: 32,34
+ Owner: Soviets
+ Actor95: brik
+ Location: 32,29
+ Owner: Soviets
+ Actor97: brik
+ Location: 32,30
+ Owner: Soviets
+ Actor98: brik
+ Location: 32,31
+ Owner: Soviets
+ Actor100: brik
+ Location: 32,33
+ Owner: Soviets
+ Actor263: 3tnk
+ Location: 37,35
+ Owner: Soviets
+ Actor138: e2
+ Location: 39,37
+ Owner: Soviets
+ Actor99: brik
+ Location: 32,32
+ Owner: Soviets
+ Actor106: hpad
+ Location: 34,42
+ Owner: Soviets
+ Actor21: brik
+ Location: 33,34
+ Owner: Soviets
+ Actor14: brik
+ Location: 32,35
+ Owner: Soviets
+ Actor55: brik
+ Location: 32,26
+ Owner: Soviets
+ Actor40: apwr
+ Location: 44,43
+ Owner: Soviets
+ Actor69: barr
+ Location: 60,33
+ Owner: Soviets
+ Actor96: barr
+ Location: 107,36
+ Owner: Soviets
+ Actor94: barr
+ Location: 39,41
+ Owner: Soviets
+ Actor102: ftur
+ Location: 46,39
+ Owner: Soviets
+ Actor4: brik
+ Location: 38,34
+ Owner: Soviets
+ Actor121: e1
+ Location: 100,21
+ Owner: Soviets
+ Actor59: sam
+ Location: 47,60
+ Owner: Soviets
+ TurretFacing: 160
+ Actor61: apwr
+ Location: 45,49
+ Owner: Soviets
+ Actor62: apwr
+ Location: 46,52
+ Owner: Soviets
+ Actor29: brik
+ Location: 35,26
+ Owner: Soviets
+ Actor76: ftur
+ Location: 78,22
+ Owner: Soviets
+ Actor83: ftur
+ Location: 67,34
+ Owner: Soviets
+ Actor73: spen
+ Location: 31,82
+ Owner: Soviets
+ Actor37: dome
+ Location: 44,57
+ Owner: Soviets
+ Actor65: sam
+ Location: 50,37
+ Owner: Soviets
+ TurretFacing: 192
+ Actor70: spen
+ Location: 39,71
+ Owner: Soviets
+ Actor71: spen
+ Location: 25,68
+ Owner: Soviets
+ Actor64: sam
+ Location: 28,43
+ Owner: Soviets
+ TurretFacing: 48
+ Actor72: spen
+ Location: 23,76
+ Owner: Soviets
+ Actor67: fact
+ Location: 42,52
+ Owner: Soviets
+ Actor85: kenn
+ Location: 58,32
+ Owner: Soviets
+ Actor103: afld
+ Location: 34,51
+ Owner: Soviets
+ Actor20: fcom
+ Location: 39,50
+ Owner: Soviets
+ Actor18: afld
+ Location: 34,45
+ Owner: Soviets
+ Actor79: afld
+ Location: 34,47
+ Owner: Soviets
+ Actor74: ftur
+ Location: 31,36
+ Owner: Soviets
+ Actor32: brik
+ Location: 34,26
+ Owner: Soviets
+ Actor493: e4
+ Location: 102,24
+ Owner: Soviets
+ Actor274: e3
+ Location: 34,41
+ Owner: Soviets
+ Actor452: e4
+ Location: 34,32
+ Owner: Soviets
+ Actor112: fenc
+ Location: 96,39
+ Owner: Soviets
+ Actor15: brik
+ Location: 33,35
+ Owner: Soviets
+ Actor126: e1
+ Location: 109,22
+ Owner: Soviets
+ Actor107: hpad
+ Location: 36,42
+ Owner: Soviets
+ Actor129: kenn
+ Location: 110,37
+ Owner: Soviets
+ Actor108: stek
+ Location: 38,55
+ Owner: Soviets
+ Actor7: brik
+ Location: 38,35
+ Owner: Soviets
+ Actor46: brik
+ Location: 33,26
+ Owner: Soviets
+ Actor6: brik
+ Location: 39,35
+ Owner: Soviets
+ Actor117: fenc
+ Location: 98,39
+ Owner: Soviets
+ Actor116: fenc
+ Location: 97,39
+ Owner: Soviets
+ Actor111: fenc
+ Location: 95,37
+ Owner: Soviets
+ Actor16: fenc
+ Location: 95,38
+ Owner: Soviets
+ Actor13: fenc
+ Location: 95,39
+ Owner: Soviets
+ Actor120: e1
+ Location: 107,41
+ Owner: Soviets
+ Actor119: e1
+ Location: 99,41
+ Owner: Soviets
+ Actor279: dog
+ Location: 101,38
+ Owner: Soviets
+ Actor151: fenc
+ Location: 111,39
+ Owner: Soviets
+ Actor125: fenc
+ Location: 110,39
+ Owner: Soviets
+ Actor124: fenc
+ Location: 109,39
+ Owner: Soviets
+ Actor127: fenc
+ Location: 99,39
+ Owner: Soviets
+ Actor148: e1
+ Location: 92,20
+ Owner: Soviets
+ Actor128: ftur
+ Location: 42,61
+ Owner: Soviets
+ Actor93: afld
+ Location: 34,49
+ Owner: Soviets
+ Actor101: kenn
+ Location: 41,47
+ Owner: Soviets
+ Actor133: apwr
+ Location: 97,16
+ Owner: Soviets
+ Actor131: apwr
+ Location: 107,16
+ Owner: Soviets
+ Actor132: apwr
+ Location: 107,19
+ Owner: Soviets
+ Actor130: apwr
+ Location: 101,16
+ Owner: Soviets
+ Actor134: proc
+ Location: 106,30
+ Owner: Soviets
+ Actor135: fix
+ Location: 102,25
+ Owner: Soviets
+ Actor136: dome
+ Location: 107,25
+ Owner: Soviets
+ HijackFactory: weap
+ Location: 98,32
+ Owner: Soviets
+ Actor12: sam
+ Location: 34,27
+ Owner: Soviets
+ Actor297: v08
+ Location: 68,95
+ Owner: Creeps
+ Actor142: fenc
+ Location: 91,16
+ Owner: Soviets
+ Actor141: fenc
+ Location: 91,17
+ Owner: Soviets
+ Actor140: fenc
+ Location: 91,18
+ Owner: Soviets
+ Actor139: fenc
+ Location: 91,19
+ Owner: Soviets
+ Actor145: ftur
+ Location: 90,23
+ Owner: Soviets
+ Actor146: ftur
+ Location: 90,19
+ Owner: Soviets
+ Actor147: e1
+ Location: 92,23
+ Owner: Soviets
+ Actor118: ftur
+ Location: 99,40
+ Owner: Soviets
+ Actor149: fact
+ Location: 95,25
+ Owner: Soviets
+ Actor304: 3tnk
+ Location: 106,38
+ Owner: Soviets
+ Facing: 96
+ Actor488: t02
+ Location: 110,28
+ Owner: Neutral
+ Actor123: fenc
+ Location: 108,39
+ Owner: Soviets
+ Actor153: apwr
+ Location: 101,19
+ Owner: Soviets
+ Actor154: apwr
+ Location: 93,16
+ Owner: Soviets
+ Actor155: powr
+ Location: 45,41
+ Owner: Soviets
+ Actor156: apwr
+ Location: 47,55
+ Owner: Soviets
+ Actor157: tc02
+ Location: 27,46
+ Owner: Neutral
+ Actor158: t12
+ Location: 26,46
+ Owner: Neutral
+ Actor159: tc05
+ Location: 23,45
+ Owner: Neutral
+ Actor160: tc04
+ Location: 23,43
+ Owner: Neutral
+ Actor161: e1
+ Location: 22,42
+ Owner: Soviets
+ Actor162: t12
+ Location: 22,39
+ Owner: Neutral
+ Actor163: t03
+ Location: 24,36
+ Owner: Neutral
+ Actor164: t01
+ Location: 23,38
+ Owner: Neutral
+ Actor165: t15
+ Location: 23,36
+ Owner: Neutral
+ Actor166: tc05
+ Location: 22,33
+ Owner: Neutral
+ Actor167: t02
+ Location: 25,31
+ Owner: Neutral
+ Actor168: t03
+ Location: 26,26
+ Owner: Neutral
+ Actor169: tc04
+ Location: 28,19
+ Owner: Neutral
+ Actor170: t11
+ Location: 25,28
+ Owner: Neutral
+ Actor171: tc02
+ Location: 23,30
+ Owner: Neutral
+ Actor172: tc05
+ Location: 26,24
+ Owner: Neutral
+ Actor173: t01
+ Location: 28,21
+ Owner: Neutral
+ Actor174: t03
+ Location: 31,20
+ Owner: Neutral
+ Actor63: apwr
+ Location: 32,53
+ Owner: Soviets
+ Actor176: tc02
+ Location: 50,62
+ Owner: Neutral
+ Actor177: tc01
+ Location: 52,51
+ Owner: Neutral
+ Actor178: t17
+ Location: 51,44
+ Owner: Neutral
+ Actor179: t07
+ Location: 30,39
+ Owner: Neutral
+ Actor175: sam
+ Location: 30,58
+ Owner: Soviets
+ TurretFacing: 96
+ Actor181: t12
+ Location: 27,54
+ Owner: Neutral
+ Actor182: t08
+ Location: 28,56
+ Owner: Neutral
+ Actor183: t06
+ Location: 47,25
+ Owner: Neutral
+ Actor184: t05
+ Location: 41,26
+ Owner: Neutral
+ Actor185: tc02
+ Location: 43,22
+ Owner: Neutral
+ Actor186: tc05
+ Location: 49,20
+ Owner: Neutral
+ Actor187: t15
+ Location: 44,19
+ Owner: Neutral
+ Actor188: tc05
+ Location: 46,21
+ Owner: Neutral
+ Actor189: tc04
+ Location: 41,20
+ Owner: Neutral
+ Actor190: t03
+ Location: 37,20
+ Owner: Neutral
+ Actor191: tc04
+ Location: 54,38
+ Owner: Neutral
+ Actor192: tc05
+ Location: 59,38
+ Owner: Neutral
+ Actor193: tc02
+ Location: 49,45
+ Owner: Neutral
+ Actor194: t03
+ Location: 54,40
+ Owner: Neutral
+ Actor195: t03
+ Location: 35,72
+ Owner: Neutral
+ Actor196: tc01
+ Location: 30,71
+ Owner: Neutral
+ Actor197: t08
+ Location: 27,79
+ Owner: Neutral
+ Actor198: t15
+ Location: 52,57
+ Owner: Neutral
+ Actor199: tc01
+ Location: 49,34
+ Owner: Neutral
+ Actor200: t11
+ Location: 28,28
+ Owner: Neutral
+ Actor201: t07
+ Location: 38,64
+ Owner: Neutral
+ Actor202: t06
+ Location: 50,54
+ Owner: Neutral
+ Actor203: t12
+ Location: 60,31
+ Owner: Neutral
+ Actor204: tc02
+ Location: 74,16
+ Owner: Neutral
+ Actor205: t07
+ Location: 69,19
+ Owner: Neutral
+ Actor206: tc04
+ Location: 87,16
+ Owner: Neutral
+ Actor207: tc05
+ Location: 84,16
+ Owner: Neutral
+ Actor208: tc03
+ Location: 82,18
+ Owner: Neutral
+ Actor209: t16
+ Location: 84,18
+ Owner: Neutral
+ Actor210: tc02
+ Location: 82,15
+ Owner: Neutral
+ Actor211: t02
+ Location: 74,18
+ Owner: Neutral
+ Actor212: t01
+ Location: 92,29
+ Owner: Neutral
+ Actor213: t16
+ Location: 102,22
+ Owner: Neutral
+ Actor214: silo
+ Location: 109,29
+ Owner: Soviets
+ Actor215: t01
+ Location: 96,36
+ Owner: Neutral
+ Actor216: mine
+ Location: 103,57
+ Owner: Neutral
+ Actor218: fenc
+ Location: 81,65
+ Owner: Soviets
+ Actor219: fenc
+ Location: 81,66
+ Owner: Soviets
+ Actor220: fenc
+ Location: 81,67
+ Owner: Soviets
+ Actor221: 4tnk
+ Location: 39,46
+ Owner: Soviets
+ Facing: 0
+ Actor228: brik
+ Location: 102,34
+ Owner: Soviets
+ Actor514: brik
+ Location: 103,34
+ Owner: Soviets
+ Actor227: e1
+ Location: 98,28
+ Owner: Soviets
+ Actor226: fenc
+ Location: 95,35
+ Owner: Soviets
+ Actor225: fenc
+ Location: 95,36
+ Owner: Soviets
+ Actor224: 4tnk
+ Location: 103,30
+ Owner: Soviets
+ Actor144: 4tnk
+ Location: 42,58
+ Owner: Soviets
+ Actor52: hpad
+ Location: 83,65
+ Owner: Soviets
+ Actor387: powr
+ Location: 89,64
+ Owner: Soviets
+ Actor231: e1
+ Location: 104,40
+ Owner: Soviets
+ Actor238: sbag
+ Location: 65,37
+ Owner: Soviets
+ Actor237: sbag
+ Location: 66,37
+ Owner: Soviets
+ Actor229: v2rl
+ Location: 96,19
+ Owner: Soviets
+ Facing: 64
+ Actor137: e1
+ Location: 66,34
+ Owner: Soviets
+ Actor50: fenc
+ Location: 81,68
+ Owner: Soviets
+ Actor242: ftur
+ Location: 90,74
+ Owner: Soviets
+ Actor241: fenc
+ Location: 93,74
+ Owner: Soviets
+ Actor240: fenc
+ Location: 94,74
+ Owner: Soviets
+ Actor239: fenc
+ Location: 95,74
+ Owner: Soviets
+ Actor232: fenc
+ Location: 96,74
+ Owner: Soviets
+ Actor244: sbag
+ Location: 64,37
+ Owner: Soviets
+ Actor245: e3
+ Location: 67,36
+ Owner: Soviets
+ Actor246: e3
+ Location: 63,38
+ Owner: Soviets
+ Actor247: e1
+ Location: 69,34
+ Owner: Soviets
+ Actor248: e1
+ Location: 57,35
+ Owner: Soviets
+ Actor249: e1
+ Location: 59,33
+ Owner: Soviets
+ Actor250: e1
+ Location: 47,31
+ Owner: Soviets
+ Actor251: e1
+ Location: 42,38
+ Owner: Soviets
+ Actor252: e1
+ Location: 46,38
+ Owner: Soviets
+ Actor253: e1
+ Location: 49,27
+ Owner: Soviets
+ Actor254: e1
+ Location: 37,64
+ Owner: Soviets
+ Actor255: e1
+ Location: 32,63
+ Owner: Soviets
+ Actor256: e1
+ Location: 40,58
+ Owner: Soviets
+ Actor257: e1
+ Location: 44,61
+ Owner: Soviets
+ Actor322: v2rl
+ Location: 36,57
+ Owner: Soviets
+ Actor259: e1
+ Location: 43,48
+ Owner: Soviets
+ Actor260: e1
+ Location: 37,45
+ Owner: Soviets
+ Actor261: e1
+ Location: 31,40
+ Owner: Soviets
+ Actor262: e1
+ Location: 37,31
+ Owner: Soviets
+ Actor17: brik
+ Location: 37,28
+ Owner: Soviets
+ Actor264: v2rl
+ Location: 50,36
+ Owner: Soviets
+ Facing: 192
+ Actor266: 3tnk
+ Location: 88,70
+ Owner: Soviets
+ Actor268: dog
+ Location: 64,34
+ Owner: Soviets
+ Actor269: dog
+ Location: 44,38
+ Owner: Soviets
+ Actor180: apwr
+ Location: 31,59
+ Owner: Soviets
+ Actor270: dog
+ Location: 43,60
+ Owner: Soviets
+ Actor265: 3tnk
+ Location: 90,46
+ Owner: Soviets
+ Actor271: dog
+ Location: 37,40
+ Owner: Soviets
+ Actor122: fenc
+ Location: 107,39
+ Owner: Soviets
+ Actor152: ftur
+ Location: 107,40
+ Owner: Soviets
+ Actor275: tc02
+ Location: 74,48
+ Owner: Neutral
+ Actor276: t03
+ Location: 91,43
+ Owner: Neutral
+ Actor272: 3tnk
+ Location: 102,37
+ Owner: Soviets
+ Facing: 160
+ Actor280: t16
+ Location: 87,41
+ Owner: Neutral
+ Actor281: tc02
+ Location: 85,42
+ Owner: Neutral
+ Actor282: t02
+ Location: 85,48
+ Owner: Neutral
+ Actor283: t13
+ Location: 72,54
+ Owner: Neutral
+ Actor284: t03
+ Location: 84,56
+ Owner: Neutral
+ Actor285: tc02
+ Location: 109,52
+ Owner: Neutral
+ Actor286: t03
+ Location: 110,61
+ Owner: Neutral
+ Actor287: t07
+ Location: 100,62
+ Owner: Neutral
+ Actor288: t06
+ Location: 91,53
+ Owner: Neutral
+ Actor289: t13
+ Location: 81,47
+ Owner: Neutral
+ Actor290: t12
+ Location: 110,42
+ Owner: Neutral
+ Actor291: t02
+ Location: 102,49
+ Owner: Neutral
+ Actor292: tc04
+ Location: 87,38
+ Owner: Neutral
+ Actor293: t02
+ Location: 86,40
+ Owner: Neutral
+ Actor294: t11
+ Location: 89,42
+ Owner: Neutral
+ Actor295: t07
+ Location: 84,40
+ Owner: Neutral
+ PatrolPoint22: waypoint
+ Location: 92,49
+ Owner: Neutral
+ Actor515: wood
+ Location: 66,100
+ Owner: Neutral
+ Actor298: t01
+ Location: 90,61
+ Owner: Neutral
+ Actor299: t13
+ Location: 108,66
+ Owner: Neutral
+ Actor300: dog
+ Location: 41,49
+ Owner: Soviets
+ Actor338: ss
+ Location: 57,64
+ Owner: Soviets
+ Actor301: mine
+ Location: 101,55
+ Owner: Neutral
+ Actor337: ss
+ Location: 19,80
+ Owner: Soviets
+ Actor316: ss
+ Location: 32,92
+ Owner: Soviets
+ Actor336: ss
+ Location: 46,80
+ Owner: Soviets
+ Actor308: tc02
+ Location: 78,104
+ Owner: Neutral
+ Actor309: t15
+ Location: 72,101
+ Owner: Neutral
+ Actor310: oilb
+ Location: 77,17
+ Owner: Soviets
+ Actor307: tc02
+ Location: 82,97
+ Owner: Neutral
+ Actor311: oilb
+ Location: 32,76
+ Owner: Soviets
+ Actor114: c1
+ Location: 69,84
+ Owner: Creeps
+ Actor217: c3
+ Location: 63,96
+ Owner: Creeps
+ Actor54: c1
+ Location: 67,99
+ Owner: Creeps
+ Actor317: e2
+ Location: 106,26
+ Owner: Soviets
+ Actor318: e2
+ Location: 94,20
+ Owner: Soviets
+ Actor319: e3
+ Location: 97,29
+ Owner: Soviets
+ Actor320: e3
+ Location: 109,27
+ Owner: Soviets
+ Actor321: e3
+ Location: 48,36
+ Owner: Soviets
+ Actor267: dog
+ Location: 35,61
+ Owner: Soviets
+ Actor323: e3
+ Location: 30,43
+ Owner: Soviets
+ Actor324: e3
+ Location: 38,30
+ Owner: Soviets
+ Actor325: e2
+ Location: 32,36
+ Owner: Soviets
+ Actor326: e2
+ Location: 62,35
+ Owner: Soviets
+ Actor327: e2
+ Location: 37,48
+ Owner: Soviets
+ Actor329: e2
+ Location: 46,28
+ Owner: Soviets
+ Actor330: e2
+ Location: 35,67
+ Owner: Soviets
+ Actor331: e1
+ Location: 27,78
+ Owner: Soviets
+ Actor332: e2
+ Location: 29,79
+ Owner: Soviets
+ Actor333: e1
+ Location: 75,22
+ Owner: Soviets
+ Actor334: e2
+ Location: 101,29
+ Owner: Soviets
+ Actor335: e2
+ Location: 77,20
+ Owner: Soviets
+ SpyReinforcementsExitPoint: waypoint
+ Location: 48,111
+ Owner: Neutral
+ Actor305: ss
+ Location: 19,101
+ Owner: Soviets
+ Actor258: apwr
+ Location: 32,56
+ Owner: Soviets
+ Actor340: v09
+ Location: 72,86
+ Owner: Creeps
+ Actor339: e1
+ Location: 21,35
+ Owner: Soviets
+ Actor342: v05
+ Location: 68,88
+ Owner: Creeps
+ Actor341: e1
+ Location: 24,27
+ Owner: Soviets
+ Actor344: v08
+ Location: 65,99
+ Owner: Creeps
+ Actor345: v16
+ Location: 59,97
+ Owner: Neutral
+ Actor346: v18
+ Location: 60,97
+ Owner: Neutral
+ Actor347: v17
+ Location: 61,97
+ Owner: Neutral
+ Actor348: v06
+ Location: 60,96
+ Owner: Creeps
+ Actor349: v14
+ Location: 66,83
+ Owner: Neutral
+ Actor351: t11
+ Location: 62,100
+ Owner: Neutral
+ Actor352: tc04
+ Location: 55,94
+ Owner: Neutral
+ Actor353: tc03
+ Location: 56,96
+ Owner: Neutral
+ Actor354: t12
+ Location: 68,99
+ Owner: Neutral
+ Actor355: tc01
+ Location: 66,93
+ Owner: Neutral
+ Actor356: tc02
+ Location: 66,89
+ Owner: Neutral
+ Actor357: t10
+ Location: 60,88
+ Owner: Neutral
+ Actor358: t14
+ Location: 59,87
+ Owner: Neutral
+ Actor359: tc04
+ Location: 58,88
+ Owner: Neutral
+ Actor360: tc02
+ Location: 58,80
+ Owner: Neutral
+ Actor361: tc01
+ Location: 79,92
+ Owner: Neutral
+ Actor362: t07
+ Location: 77,89
+ Owner: Neutral
+ Actor363: t02
+ Location: 77,84
+ Owner: Neutral
+ Actor364: t01
+ Location: 73,91
+ Owner: Neutral
+ Actor273: v10
+ Location: 58,86
+ Owner: Creeps
+ Actor343: e1
+ Location: 28,49
+ Owner: Soviets
+ Actor367: e1
+ Location: 27,60
+ Owner: Soviets
+ Actor368: t02
+ Location: 75,92
+ Owner: Neutral
+ Actor369: tc03
+ Location: 75,84
+ Owner: Neutral
+ Actor370: t16
+ Location: 99,98
+ Owner: Neutral
+ Actor371: t02
+ Location: 110,92
+ Owner: Neutral
+ Actor372: t08
+ Location: 89,96
+ Owner: Neutral
+ Actor373: tc03
+ Location: 94,100
+ Owner: Neutral
+ Actor374: wood
+ Location: 67,100
+ Owner: Neutral
+ Actor375: e1
+ Location: 89,47
+ Owner: Soviets
+ Actor376: e1
+ Location: 91,46
+ Owner: Soviets
+ Actor377: dog
+ Location: 91,48
+ Owner: Soviets
+ Actor378: t10
+ Location: 81,74
+ Owner: Neutral
+ Actor379: tc02
+ Location: 100,75
+ Owner: Neutral
+ Actor380: tc05
+ Location: 99,72
+ Owner: Neutral
+ Actor381: tc04
+ Location: 103,74
+ Owner: Neutral
+ Actor382: tc03
+ Location: 104,72
+ Owner: Neutral
+ Actor383: tc02
+ Location: 109,65
+ Owner: Neutral
+ Actor384: t07
+ Location: 103,65
+ Owner: Neutral
+ Actor385: t06
+ Location: 91,64
+ Owner: Neutral
+ Actor386: t05
+ Location: 100,68
+ Owner: Neutral
+ Actor243: ftur
+ Location: 81,69
+ Owner: Soviets
+ Actor223: e3
+ Location: 39,53
+ Owner: Soviets
+ Actor278: ftur
+ Location: 37,58
+ Owner: Soviets
+ Actor391: ftur
+ Location: 94,66
+ Owner: Soviets
+ Actor392: e1
+ Location: 83,69
+ Owner: Soviets
+ Actor393: e1
+ Location: 90,76
+ Owner: Soviets
+ Actor394: e1
+ Location: 92,67
+ Owner: Soviets
+ Actor395: e2
+ Location: 88,67
+ Owner: Soviets
+ Actor396: e2
+ Location: 85,75
+ Owner: Soviets
+ Actor397: e1
+ Location: 96,72
+ Owner: Soviets
+ Actor398: e1
+ Location: 89,71
+ Owner: Soviets
+ Actor399: tsla
+ Location: 94,22
+ Owner: Soviets
+ Actor400: e1
+ Location: 49,66
+ Owner: Soviets
+ Actor402: ftur
+ Location: 26,40
+ Owner: Soviets
+ Actor328: v2rl
+ Location: 27,37
+ Owner: Soviets
+ Facing: 64
+ Actor366: powr
+ Location: 35,54
+ Owner: Soviets
+ Actor403: powr
+ Location: 56,31
+ Owner: Soviets
+ SpyReinforcementsEntryPoint: waypoint
+ Location: 16,107
+ Owner: Neutral
+ Actor404: ss
+ Location: 80,33
+ Owner: Soviets
+ Actor405: ss
+ Location: 65,47
+ Owner: Soviets
+ Actor406: ss
+ Location: 20,56
+ Owner: Soviets
+ Actor312: t17
+ Location: 88,100
+ Owner: Neutral
+ PatrolPoint13: waypoint
+ Location: 81,86
+ Owner: Neutral
+ PatrolPoint12: waypoint
+ Location: 74,78
+ Owner: Neutral
+ PatrolPoint11: waypoint
+ Location: 77,70
+ Owner: Neutral
+ PatrolPoint15: waypoint
+ Location: 88,73
+ Owner: Neutral
+ PatrolPoint14: waypoint
+ Location: 91,83
+ Owner: Neutral
+ PatrolPoint21: waypoint
+ Location: 105,45
+ Owner: Neutral
+ PatrolPoint23: waypoint
+ Location: 78,53
+ Owner: Neutral
+ PatrolPoint24: waypoint
+ Location: 92,56
+ Owner: Neutral
+ PatrolPoint25: waypoint
+ Location: 106,53
+ Owner: Neutral
+ Actor409: e1
+ Location: 76,59
+ Owner: Soviets
+ Actor410: v2rl
+ Location: 74,59
+ Owner: Soviets
+ Actor3: dog
+ Location: 74,52
+ Owner: Soviets
+ Actor416: dog
+ Location: 82,73
+ Owner: Soviets
+ Actor413: sbag
+ Location: 75,60
+ Owner: Soviets
+ Actor414: sbag
+ Location: 74,60
+ Owner: Soviets
+ Actor412: proc
+ Location: 84,68
+ Owner: Soviets
+ Actor472: brl3
+ Location: 77,101
+ Owner: Soviets
+ Actor417: sbag
+ Location: 73,60
+ Owner: Soviets
+ Actor296: kenn
+ Location: 90,68
+ Owner: Soviets
+ Actor303: e2
+ Location: 100,38
+ Owner: Soviets
+ Actor408: dog
+ Location: 108,42
+ Owner: Soviets
+ Actor418: dog
+ Location: 109,74
+ Owner: Soviets
+ Actor419: e1
+ Location: 108,75
+ Owner: Soviets
+ Actor420: e1
+ Location: 110,75
+ Owner: Soviets
+ Actor421: sbag
+ Location: 108,73
+ Owner: Soviets
+ Actor422: sbag
+ Location: 109,73
+ Owner: Soviets
+ Actor423: sbag
+ Location: 110,73
+ Owner: Soviets
+ Actor424: sbag
+ Location: 111,73
+ Owner: Soviets
+ PatrolPoint43: waypoint
+ Location: 109,51
+ Owner: Neutral
+ PatrolPoint42: waypoint
+ Location: 109,44
+ Owner: Neutral
+ PatrolPoint41: waypoint
+ Location: 102,41
+ Owner: Neutral
+ PatrolPoint45: waypoint
+ Location: 93,42
+ Owner: Neutral
+ PatrolPoint44: waypoint
+ Location: 96,53
+ Owner: Neutral
+ Actor425: dog
+ Location: 79,22
+ Owner: Soviets
+ Actor426: dog
+ Location: 93,19
+ Owner: Soviets
+ Actor427: dog
+ Location: 104,24
+ Owner: Soviets
+ HijackTruck: truk.hijackable
+ Location: 99,34
+ Owner: Soviets
+ Facing: 160
+ BaseGuard: e1
+ Location: 63,36
+ Owner: Soviets
+ Actor429: cycl
+ Location: 63,33
+ Owner: Soviets
+ Actor428: cycl
+ Location: 63,34
+ Owner: Soviets
+ Actor230: cycl
+ Location: 63,35
+ Owner: Soviets
+ Actor430: sbag
+ Location: 68,34
+ Owner: Soviets
+ Actor431: sbag
+ Location: 68,33
+ Owner: Soviets
+ Actor432: cycl
+ Location: 63,32
+ Owner: Soviets
+ Actor433: sbag
+ Location: 63,37
+ Owner: Soviets
+ BaseGuardMovePos: waypoint
+ Location: 62,37
+ Owner: Neutral
+ BaseGuardTruckPos: waypoint
+ Location: 64,36
+ Owner: Neutral
+ Actor411: e2
+ Location: 73,53
+ Owner: Soviets
+ Actor434: e1
+ Location: 94,54
+ Owner: Soviets
+ Actor435: dog
+ Location: 95,54
+ Owner: Soviets
+ Actor436: e1
+ Location: 82,44
+ Owner: Soviets
+ Actor437: e1
+ Location: 80,43
+ Owner: Soviets
+ Actor438: dog
+ Location: 81,43
+ Owner: Soviets
+ Actor439: e1
+ Location: 109,48
+ Owner: Soviets
+ Actor440: dog
+ Location: 108,48
+ Owner: Soviets
+ Actor441: 3tnk
+ Location: 108,47
+ Owner: Soviets
+ Actor442: brl3
+ Location: 82,65
+ Owner: Soviets
+ Actor443: brl3
+ Location: 82,66
+ Owner: Soviets
+ Actor444: barl
+ Location: 83,67
+ Owner: Soviets
+ Actor445: brl3
+ Location: 88,65
+ Owner: Soviets
+ Actor446: barl
+ Location: 89,66
+ Owner: Soviets
+ Actor447: barl
+ Location: 87,67
+ Owner: Soviets
+ Actor448: brl3
+ Location: 89,67
+ Owner: Soviets
+ Actor450: barl
+ Location: 109,28
+ Owner: Soviets
+ Actor449: brl3
+ Location: 107,27
+ Owner: Soviets
+ Actor454: e2
+ Location: 38,32
+ Owner: Soviets
+ Actor451: barl
+ Location: 108,29
+ Owner: Soviets
+ Actor453: brl3
+ Location: 38,31
+ Owner: Soviets
+ LabTruck: truk
+ Location: 36,32
+ Owner: Soviets
+ Actor455: silo
+ Location: 82,67
+ Owner: Soviets
+ Actor456: e1
+ Location: 85,66
+ Owner: Soviets
+ Actor457: t06
+ Location: 101,92
+ Owner: Neutral
+ Actor115: c2
+ Location: 56,89
+ Owner: Creeps
+ Actor459: e1
+ Location: 79,102
+ Owner: Soviets
+ Actor460: sbag
+ Location: 80,103
+ Owner: Soviets
+ Actor462: hpad
+ Location: 75,100
+ Owner: Soviets
+ Actor463: sbag
+ Location: 79,103
+ Owner: Soviets
+ Actor464: sbag
+ Location: 78,103
+ Owner: Soviets
+ Actor465: sbag
+ Location: 77,103
+ Owner: Soviets
+ Actor466: sbag
+ Location: 76,103
+ Owner: Soviets
+ Actor467: sbag
+ Location: 76,102
+ Owner: Soviets
+ Actor468: sbag
+ Location: 75,102
+ Owner: Soviets
+ Actor469: sbag
+ Location: 74,102
+ Owner: Soviets
+ Actor470: sbag
+ Location: 74,101
+ Owner: Soviets
+ Actor471: powr
+ Location: 79,98
+ Owner: Soviets
+ Actor415: sam
+ Location: 77,102
+ Owner: Soviets
+ TurretFacing: 128
+ Actor475: brl3
+ Location: 79,97
+ Owner: Soviets
+ Actor407: ftur
+ Location: 76,98
+ Owner: Soviets
+ Actor473: barl
+ Location: 78,98
+ Owner: Soviets
+ Actor461: e2
+ Location: 78,97
+ Owner: Soviets
+ Actor481: fenc
+ Location: 82,99
+ Owner: Soviets
+ Actor482: fenc
+ Location: 82,100
+ Owner: Soviets
+ Actor483: fenc
+ Location: 81,99
+ Owner: Soviets
+ Actor484: fenc
+ Location: 81,98
+ Owner: Soviets
+ ReinforcementsEntryPoint: waypoint
+ Location: 92,111
+ Owner: Neutral
+ ReinforcementsUnloadPoint: waypoint
+ Location: 92,103
+ Owner: Neutral
+ Actor474: mine
+ Location: 95,86
+ Owner: Neutral
+ Actor480: fenc
+ Location: 87,74
+ Owner: Soviets
+ Actor485: fenc
+ Location: 86,74
+ Owner: Soviets
+ Actor486: fenc
+ Location: 85,74
+ Owner: Soviets
+ Actor487: fenc
+ Location: 84,74
+ Owner: Soviets
+ Actor313: c3
+ Location: 65,86
+ Owner: Creeps
+ Actor314: c4
+ Location: 72,91
+ Owner: Creeps
+ Actor315: c4
+ Location: 58,92
+ Owner: Creeps
+ Actor458: c8
+ Location: 68,94
+ Owner: Creeps
+ Actor476: c9
+ Location: 59,98
+ Owner: Creeps
+ Actor477: c10
+ Location: 57,82
+ Owner: Creeps
+ Actor478: c7
+ Location: 69,89
+ Owner: Creeps
+ Actor479: c6
+ Location: 73,89
+ Owner: Creeps
+ Actor150: silo
+ Location: 109,31
+ Owner: Soviets
+ Actor489: silo
+ Location: 110,30
+ Owner: Soviets
+ Actor490: silo
+ Location: 108,30
+ Owner: Soviets
+ Actor306: e2
+ Location: 43,56
+ Owner: Soviets
+ Actor365: e3
+ Location: 40,54
+ Owner: Soviets
+ Actor388: e1
+ Location: 38,50
+ Owner: Soviets
+ Actor389: e1
+ Location: 48,58
+ Owner: Soviets
+ Actor390: e2
+ Location: 42,43
+ Owner: Soviets
+ Actor491: e1
+ Location: 42,41
+ Owner: Soviets
+ Actor492: e1
+ Location: 35,35
+ Owner: Soviets
+ BridgeTank: 3tnk
+ Location: 76,20
+ Owner: Soviets
+ BridgeAttackPoint: waypoint
+ Location: 74,25
+ Owner: Neutral
+ Actor19: brik
+ Location: 37,27
+ Owner: Soviets
+ Actor23: brik
+ Location: 37,26
+ Owner: Soviets
+ Actor24: brik
+ Location: 36,26
+ Owner: Soviets
+ Actor109: brik
+ Location: 32,27
+ Owner: Soviets
+ Actor496: e4
+ Location: 57,38
+ Owner: Soviets
+ Actor497: e4
+ Location: 38,60
+ Owner: Soviets
+ Actor498: apc
+ Location: 78,99
+ Owner: Soviets
+ Actor499: 3tnk
+ Location: 106,23
+ Owner: Soviets
+ Actor500: sbag
+ Location: 44,30
+ Owner: Soviets
+ Actor501: sbag
+ Location: 44,31
+ Owner: Soviets
+ Actor502: sbag
+ Location: 44,32
+ Owner: Soviets
+ Actor503: sbag
+ Location: 44,33
+ Owner: Soviets
+ Actor504: sbag
+ Location: 43,30
+ Owner: Soviets
+ Actor505: e1
+ Location: 43,32
+ Owner: Soviets
+ Actor506: e3
+ Location: 43,31
+ Owner: Soviets
+ Actor507: brik
+ Location: 104,36
+ Owner: Soviets
+ Actor508: brik
+ Location: 104,35
+ Owner: Soviets
+ Actor509: brik
+ Location: 104,34
+ Owner: Soviets
+ Actor510: brik
+ Location: 102,35
+ Owner: Soviets
+ Actor511: brik
+ Location: 102,36
+ Owner: Soviets
+ Actor512: brik
+ Location: 103,36
+ Owner: Soviets
+ Actor513: e1
+ Location: 110,34
+ Owner: Soviets
+ PatrolPoint31: waypoint
+ Location: 79,71
+ Owner: Neutral
+ PatrolPoint32: waypoint
+ Location: 78,46
+ Owner: Neutral
+ PatrolPoint33: waypoint
+ Location: 100,48
+ Owner: Neutral
+ PatrolPoint34: waypoint
+ Location: 92,70
+ Owner: Neutral
+ Actor516: wood
+ Location: 65,100
+ Owner: Neutral
+ Actor143: v11
+ Location: 72,95
+ Owner: Creeps
+ Actor517: wood
+ Location: 64,100
+ Owner: Neutral
+ Actor518: wood
+ Location: 63,100
+ Owner: Neutral
+ Actor519: wood
+ Location: 63,99
+ Owner: Neutral
+ Actor520: wood
+ Location: 63,98
+ Owner: Neutral
+ Actor521: v18
+ Location: 59,96
+ Owner: Neutral
+ TownAttacker6: e4
+ Location: 70,97
+ Owner: Soviets
+ TownAttacker4: e4
+ Location: 70,91
+ Owner: Soviets
+ TownAttacker1: e4
+ Location: 70,82
+ Owner: Soviets
+ TownAttacker2: e1
+ Location: 70,87
+ Owner: Soviets
+ TownAttacker5: e1
+ Location: 70,93
+ Owner: Soviets
+ TownAttacker3: 3tnk
+ Location: 74,87
+ Owner: Soviets
+ TownAttacker7: 3tnk
+ Location: 73,97
+ Owner: Soviets
+ SpyReinforcementsUnloadPoint: waypoint
+ Location: 52,94
+ Owner: Neutral
+ Actor522: ss
+ Location: 43,100
+ Owner: Soviets
+ Hospital: hosp
+ Location: 57,78
+ Owner: Creeps
+ Actor523: v02
+ Location: 56,87
+ Owner: Creeps
+ Actor524: v03
+ Location: 60,90
+ Owner: Creeps
+ Actor525: c1
+ Location: 55,90
+ Owner: Creeps
+ Actor526: c9
+ Location: 60,94
+ Owner: Creeps
+ Actor527: v11
+ Location: 59,94
+ Owner: Creeps
+ Actor528: brl3
+ Location: 60,95
+ Owner: Neutral
+ Actor529: barl
+ Location: 59,95
+ Owner: Neutral
+ Actor530: brl3
+ Location: 58,94
+ Owner: Neutral
+ Actor533: brl3
+ Location: 54,88
+ Owner: Neutral
+ Actor570: tsla
+ Owner: Soviets
+ Location: 103,35
+ Actor571: tsla
+ Owner: Soviets
+ Location: 71,34
+ Actor569: tsla
+ Owner: Soviets
+ Location: 37,66
+ Actor572: tsla
+ Owner: Soviets
+ Location: 31,62
+ Actor573: tsla
+ Owner: Soviets
+ Location: 28,81
+ Actor574: tsla
+ Owner: Soviets
+ Location: 49,26
+ Actor575: tsla
+ Owner: Soviets
+ Location: 49,33
+ Actor576: tsla
+ Owner: Soviets
+ Location: 40,38
+ Actor577: tsla
+ Owner: Soviets
+ Location: 31,43
+ Actor578: tsla
+ Owner: Soviets
+ Location: 43,50
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
diff --git a/mods/ura/maps/infiltration/rules.yaml b/mods/ura/maps/infiltration/rules.yaml
new file mode 100644
index 0000000..6891b65
--- /dev/null
+++ b/mods/ura/maps/infiltration/rules.yaml
@@ -0,0 +1,226 @@
+World:
+ GlobalLightingPaletteEffect@HAZE:
+ Red: 1
+ Green: 0.55
+ Blue: 0
+ MissionData:
+ Briefing: The Soviets are currently developing a new weapon system at a secret research laboratory. This is a reconnaissance mission. Do not engage until we know what we are up against and wait for reinforcements. Our civilian contacts reported a heavily guarded installation under ruthless command.
+ LuaScript:
+ Scripts: infiltration.lua
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ hard: Hard
+ Default: normal
+
+^Palettes:
+ FixedColorPalette@SovietTruk:
+ Base: player
+ Name: truk-soviets
+ RemapIndex: 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95
+ Color: FE1100
+ IndexedPlayerPalette:
+ PlayerIndex:
+ Soviets: 229, 230, 231, 232, 233, 234, 235, 8, 236, 237, 238, 239, 221, 222, 223, 223
+ Allies: 224, 224, 225, 225, 226, 184, 185, 186, 187, 188, 188, 189, 190, 190, 191, 191
+ Allies1: 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175
+ Allies2: 208, 208, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 154, 155, 143
+
+MISS:
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, MissionObjective, NoAutoTarget
+
+LST.Unselectable.UnloadOnly:
+ Inherits: LST
+ -Selectable:
+ RenderSprites:
+ Image: LST
+ Buildable:
+ Prerequisites: ~disabled
+ Cargo:
+ MaxWeight: 0
+ PipCount: 0
+ Targetable:
+ TargetTypes: Ground, Water, Repair, NoAutoTarget
+ Interactable:
+
+SPY.Strong:
+ Inherits: SPY
+ Buildable:
+ Prerequisites: ~disabled
+ RenderSprites:
+ Image: SPY
+ Health:
+ HP: 100
+ RevealsShroud:
+ Range: 6c0
+ Infiltrates:
+ Types: MissionObjective
+ ExternalCaptures:
+ CaptureTypes: MissionObjective
+ Passenger:
+
+DOG.Patrol:
+ Inherits: DOG
+ Buildable:
+ Prerequisites: ~disabled
+ Mobile:
+ Speed: 56
+ RenderSprites:
+ Image: DOG
+
+TRUK.Hijackable:
+ Inherits: TRUK
+ Buildable:
+ Prerequisites: ~disabled
+ Mobile:
+ RequiresCondition: mobile
+ Cargo:
+ Types: Infantry
+ MaxWeight: 5
+ PipCount: 5
+ PassengerConditions:
+ spy.strong: mobile
+ Targetable:
+ TargetTypes: Ground, Repair, Vehicle, NoAutoTarget
+ -Huntable:
+ ExternalCapturable:
+ Types: MissionObjective
+ CaptureCompleteTime: 1
+ -DeliversCash:
+ RenderSprites:
+ Image: TRUK
+ Palette: truk-soviets
+ RevealsShroud:
+ Range: 6c0
+ Voiced:
+ VoiceSet: SpyVoice
+
+E7:
+ Buildable:
+ Prerequisites: ~disabled
+
+TRAN:
+ Buildable:
+ Prerequisites: ~disabled
+
+BARR:
+ Buildable:
+ Prerequisites: ~disabled
+
+MIG:
+ Buildable:
+ Prerequisites: ~disabled
+
+HELI:
+ Buildable:
+ Prerequisites: ~disabled
+
+SS:
+ Buildable:
+ Prerequisites: ~disabled
+ AutoTarget:
+ InitialStanceAI: Defend
+
+ARTY:
+ Buildable:
+ Prerequisites: ~disabled
+
+AGUN:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSUB:
+ Buildable:
+ Prerequisites: ~disabled
+
+CA:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPEN:
+ Buildable:
+ Prerequisites: ~disabled
+
+IRON:
+ Buildable:
+ Prerequisites: ~disabled
+
+PDOX:
+ Buildable:
+ Prerequisites: ~disabled
+
+TSLA:
+ Buildable:
+ Prerequisites: ~disabled
+
+FTUR:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+HPAD:
+ Buildable:
+ Prerequisites: ~disabled
+
+AFLD:
+ Buildable:
+ Prerequisites: ~disabled
+
+ATEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+STEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+4TNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+APC:
+ Buildable:
+ Prerequisites: ~disabled
+
+MNLY:
+ Buildable:
+ Prerequisites: ~disabled
+
+TTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+FTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+CTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MGG:
+ Buildable:
+ Prerequisites: ~disabled
+
+MRJ:
+ Buildable:
+ Prerequisites: ~disabled
+
+GAP:
+ Buildable:
+ Prerequisites: ~disabled
diff --git a/mods/ura/maps/intervention/intervention.lua b/mods/ura/maps/intervention/intervention.lua
new file mode 100644
index 0000000..40742f6
--- /dev/null
+++ b/mods/ura/maps/intervention/intervention.lua
@@ -0,0 +1,338 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+BeachheadTrigger =
+{
+ CPos.New(120, 90), CPos.New(120, 89), CPos.New(120, 88), CPos.New(121, 88), CPos.New(122, 88), CPos.New(123, 88), CPos.New(124, 88),
+ CPos.New(125, 88), CPos.New(126, 88), CPos.New(126, 89), CPos.New(127, 89), CPos.New(128, 89), CPos.New(128, 90), CPos.New(129, 90),
+ CPos.New(130, 90), CPos.New(130, 91), CPos.New(131, 91), CPos.New(132, 91), CPos.New(133, 91), CPos.New(134, 91), CPos.New(134, 92),
+ CPos.New(135, 92), CPos.New(136, 92), CPos.New(137, 92), CPos.New(137, 93), CPos.New(138, 93), CPos.New(139, 93), CPos.New(140, 93),
+ CPos.New(140, 94), CPos.New(140, 95), CPos.New(140, 96), CPos.New(140, 97), CPos.New(140, 98), CPos.New(140, 99), CPos.New(140, 100),
+ CPos.New(139, 100), CPos.New(139, 101), CPos.New(139, 102), CPos.New(138, 102), CPos.New(138, 103), CPos.New(138, 104),
+ CPos.New(137, 104), CPos.New(137, 105), CPos.New(137, 106), CPos.New(136, 106), CPos.New(136, 107)
+}
+
+Difficulty = Map.LobbyOption("difficulty")
+
+if Difficulty == "normal" then
+ BaseRaidInterval = DateTime.Minutes(3)
+ BaseFrontAttackInterval = DateTime.Minutes(3) + DateTime.Seconds(30)
+ BaseRearAttackInterval = DateTime.Minutes(8)
+ UBoatPatrolDelay = DateTime.Minutes(2) + DateTime.Seconds(30)
+ BaseFrontAttackWpts = { PatrolWpt1.Location, BaseRaidWpt1.Location }
+else
+ BaseRaidInterval = DateTime.Minutes(2)
+ BaseFrontAttackInterval = DateTime.Minutes(2) + DateTime.Seconds(30)
+ BaseRearAttackInterval = DateTime.Minutes(5)
+ UBoatPatrolDelay = DateTime.Minutes(2)
+ BaseFrontAttackWpts = { PatrolWpt1.Location }
+end
+
+Village = { FarmHouse1, FarmHouse2, FarmHouse3, FarmHouse4, FarmHouse5, FarmHouse6, FarmHouse7, FarmHouse8, FarmHouse9, Church }
+VillageRaidInterval = DateTime.Minutes(3)
+VillageRaidAircraft = { "mig", "mig" }
+VillageRaidWpts = { VillageRaidEntrypoint.Location, VillageRaidWpt1.Location, VillageRaidWpt2.Location }
+
+BaseRaidAircraft = { "mig", "mig" }
+BaseRaidWpts = { BaseRaidEntrypoint.Location, UboatPatrolWpt1.Location, BaseRaidWpt2.Location }
+
+BaseFrontAttackUnits = { "e3", "e3", "e1", "e1", "e1", "3tnk", "3tnk", "apc" }
+BaseRearAttackUnits = { "e3", "e3", "e1", "e1", "3tnk", "3tnk", "v2rl" }
+BaseRearAttackWpts = { GroundAttackWpt1.Location, BaseRearAttackWpt1.Location, BaseRearAttackWpt2.Location, BaseRearAttackWpt3.Location }
+
+SovietHarvesters = { Harvester1, Harvester2, Harvester3 }
+HarvesterGuard = { HarvGuard1, HarvGuard2, HarvGuard3 }
+
+UboatPatrolWpts1 = { UboatPatrolWpt1.Location, UboatPatrolWpt2.Location, UboatPatrolWpt3.Location, UboatPatrolWpt4.Location }
+UboatPatrolWpts2 = { UboatPatrolWpt4.Location, UboatPatrolWpt2.Location, UboatPatrolWpt1.Location }
+UBoatPatrolUnits = { "ss" }
+
+HunterSubs = { "ss", "ss" }
+
+GroundPatrolWpts = { PatrolWpt1.Location, PatrolWpt2.Location }
+GroundPatrolUnits =
+{
+ { "e1", "e1", "e1", "e3", "e3", "dog" },
+ { "apc", "apc", "ftrk" },
+ { "3tnk", "3tnk" }
+}
+
+ParadropSovietUnits = function()
+ local powerproxy = Actor.Create("powerproxy.paratroopers", false, { Owner = soviets })
+ local units = powerproxy.SendParatroopers(MCVDeployLocation.CenterPosition, false, 256 - 53)
+
+ Utils.Do(units, function(a)
+ Trigger.OnIdle(a, function(actor)
+ if actor.IsInWorld then
+ actor.Hunt()
+ end
+ end)
+ end)
+
+ powerproxy.Destroy()
+end
+
+AirRaid = function(planeTypes, ingress, egress, target)
+ if target == nil then
+ return
+ end
+
+ for i = 1, #planeTypes do
+ Trigger.AfterDelay((i - 1) * DateTime.Seconds(1), function()
+ local start = Map.CenterOfCell(ingress[1]) + WVec.New(0, 0, Actor.CruiseAltitude(planeTypes[i]))
+ local plane = Actor.Create(planeTypes[i], true, { CenterPosition = start, Owner = soviets, Facing = (Map.CenterOfCell(ingress[2]) - start).Facing })
+
+ Utils.Do(ingress, function(wpt) plane.Move(wpt) end)
+ plane.Attack(target)
+ Utils.Do(egress, function(wpt) plane.Move(wpt) end)
+ plane.Destroy()
+ end)
+ end
+end
+
+BaseRaid = function()
+ local targets = Map.ActorsInBox(AlliedAreaTopLeft.CenterPosition, AlliedAreaBottomRight.CenterPosition, function(actor)
+ return actor.Owner == player and actor.HasProperty("StartBuildingRepairs")
+ end)
+
+ if #targets == 0 then
+ return
+ end
+
+ local target = Utils.Random(targets)
+
+ AirRaid(BaseRaidAircraft, BaseRaidWpts, { VillageRaidEntrypoint.Location }, target)
+
+ Trigger.AfterDelay(BaseRaidInterval, BaseRaid)
+end
+
+VillageRaid = function()
+ local target = nil
+ Utils.Do(Village, function(tgt)
+ if target == nil and not tgt.IsDead then
+ target = tgt
+ return
+ end
+ end)
+
+ if target == nil then
+ return
+ end
+
+ AirRaid(VillageRaidAircraft, VillageRaidWpts, { BaseRaidEntrypoint.Location }, target)
+
+ Trigger.AfterDelay(VillageRaidInterval, VillageRaid)
+end
+
+SendUboatPatrol = function(team)
+ Trigger.AfterDelay(UBoatPatrolDelay, function()
+ Utils.Do(team, function(uboat)
+ if not uboat.IsDead then
+ uboat.PatrolUntil(UboatPatrolWpts1, function()
+ return DateTime.GameTime > DateTime.Minutes(2) + UBoatPatrolDelay
+ end)
+ uboat.Patrol(UboatPatrolWpts2)
+ end
+ end)
+ end)
+end
+
+SendGroundPatrol = function(team)
+ Utils.Do(team, function(unit) unit.Patrol(GroundPatrolWpts, true, DateTime.Seconds(3)) end)
+ Utils.Do(team, function(unit)
+ Trigger.OnIdle(unit, function(actor) actor.Hunt() end)
+ end)
+ Trigger.OnAllKilled(team, function()
+ Build(Utils.Random(GroundPatrolUnits), SendGroundPatrol)
+ end)
+end
+
+BaseFrontAttack = function(team)
+ Utils.Do(team, function(unit) unit.Patrol(BaseFrontAttackWpts, false) end)
+ Utils.Do(team, function(unit)
+ Trigger.OnIdle(unit, function(actor) actor.Hunt() end)
+ end)
+ Trigger.AfterDelay(BaseFrontAttackInterval, function() Build(BaseFrontAttackUnits, BaseFrontAttack) end)
+end
+
+BaseRearAttack = function(team)
+ Utils.Do(team, function(unit) unit.Patrol(BaseRearAttackWpts, false) end)
+ Utils.Do(team, function(unit)
+ Trigger.OnIdle(unit, function(actor) actor.Hunt() end)
+ end)
+ Trigger.AfterDelay(BaseRearAttackInterval, function() Build(BaseRearAttackUnits, BaseRearAttack) end)
+end
+
+Build = function(units, action)
+ if not soviets.Build(units, action) then
+ Trigger.AfterDelay(DateTime.Seconds(15), function()
+ Build(units, action)
+ end)
+ end
+end
+
+SetupWorld = function()
+ Utils.Do(SovietHarvesters, function(a) a.FindResources() end)
+
+ Utils.Do(SovietHarvesters, function(harvester)
+ Trigger.OnDamaged(harvester, function(h)
+ Utils.Do(HarvesterGuard, function(g)
+ if not g.IsDead then
+ g.Stop()
+ g.AttackMove(h.Location, 3)
+ end
+ end)
+ end)
+ end)
+
+ Utils.Do(Map.NamedActors, function(actor)
+ if actor.Owner == soviets and actor.HasProperty("StartBuildingRepairs") then
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == soviets then
+ building.StartBuildingRepairs()
+ end
+ end)
+ end
+ end)
+
+ WarFactory.RallyPoint = Rallypoint.Location
+ WarFactory.IsPrimaryBuilding = true
+ Barracks.IsPrimaryBuilding = true
+ SubPen.IsPrimaryBuilding = true
+end
+
+SetupMissionText = function()
+ TextColorNormal = HSLColor.White
+ TextColorDamaged = HSLColor.Yellow
+ TextColorCritical = HSLColor.Red
+
+ CurrentColor = TextColorNormal
+ local villageHousesLeft = #Village
+ VillagePercentage = 100 - villageHousesLeft * 10
+
+ Utils.Do(Village, function(house)
+ Trigger.OnKilled(house, function()
+ villageHousesLeft = villageHousesLeft - 1
+ VillagePercentage = 100 - villageHousesLeft * 10
+
+ if VillagePercentage > 69 then
+ CurrentColor = TextColorCritical
+ elseif VillagePercentage > 49 then
+ CurrentColor = TextColorDamaged
+ else
+ CurrentColor = TextColorNormal
+ end
+ end)
+ end)
+end
+
+Tick = function()
+ if DateTime.GameTime > 2 then
+ if soviets.Resources > soviets.ResourceCapacity * 0.75 then
+ soviets.Resources = soviets.Resources - ((soviets.ResourceCapacity * 0.01) / 25)
+ end
+
+ if player.HasNoRequiredUnits() then
+ player.MarkFailedObjective(villageObjective)
+ end
+
+ UserInterface.SetMissionText(VillagePercentage .. "% of the village destroyed.", CurrentColor)
+ end
+end
+
+WorldLoaded = function()
+ player = Player.GetPlayer("Allies")
+ soviets = Player.GetPlayer("Soviets")
+
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "MissionAccomplished")
+ end)
+
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "MissionFailed")
+ end)
+
+ sovietObjective = soviets.AddPrimaryObjective("Destroy the village.")
+ villageObjective = player.AddPrimaryObjective("Save the village.")
+ beachheadObjective = player.AddPrimaryObjective("Get your MCV to the main island.")
+
+ beachheadTrigger = false
+ Trigger.OnExitedFootprint(BeachheadTrigger, function(a, id)
+ if not beachheadTrigger and a.Owner == player and a.Type == "mcv" then
+ beachheadTrigger = true
+ Trigger.RemoveFootprintTrigger(id)
+ player.MarkCompletedObjective(beachheadObjective)
+
+ captureObjective = player.AddPrimaryObjective("Locate and capture the enemy's Air Force HQ.")
+
+ if AirForceHQ.IsDead then
+ player.MarkFailedObjective(captureObjective)
+ return
+ end
+ if AirForceHQ.Owner == player then
+ player.MarkCompletedObjective(captureObjective)
+ player.MarkCompletedObjective(villageObjective)
+ return
+ end
+
+ Trigger.OnCapture(AirForceHQ, function()
+ Trigger.AfterDelay(DateTime.Seconds(3), function()
+ player.MarkCompletedObjective(captureObjective)
+ player.MarkCompletedObjective(villageObjective)
+ end)
+ end)
+ Trigger.OnKilled(AirForceHQ, function() player.MarkFailedObjective(captureObjective) end)
+
+ Actor.Create("mainland", true, { Owner = player })
+
+ Trigger.AfterDelay(BaseFrontAttackInterval, function()
+ Build(BaseFrontAttackUnits, BaseFrontAttack)
+ ParadropSovietUnits()
+ end)
+ Trigger.AfterDelay(BaseRearAttackInterval, function()
+ Build(BaseRearAttackUnits, BaseRearAttack)
+ end)
+ Trigger.AfterDelay(BaseRaidInterval, BaseRaid)
+
+ Trigger.AfterDelay(UBoatPatrolDelay, function()
+ Build(HunterSubs, function(subs)
+ Utils.Do(subs, function(sub)
+ Trigger.OnIdle(sub, function(s) s.Hunt() end)
+ end)
+ end)
+ end)
+ end
+ end)
+
+ Trigger.OnAllKilled(Village, function() player.MarkFailedObjective(villageObjective) end)
+
+ SetupWorld()
+ SetupMissionText()
+
+ Trigger.AfterDelay(VillageRaidInterval, VillageRaid)
+
+ Trigger.AfterDelay(1, function() Build(UBoatPatrolUnits, SendUboatPatrol) end)
+ Trigger.AfterDelay(1, function() Build(Utils.Random(GroundPatrolUnits), SendGroundPatrol) end)
+
+ Reinforcements.Reinforce(player, { "mcv" }, { MCVInsertLocation.Location, MCVDeployLocation.Location }, 0, function(mcv)
+ mcv.Deploy()
+ end)
+
+ Camera.Position = CameraSpot.CenterPosition
+ Trigger.AfterDelay(DateTime.Seconds(5), function() CameraSpot.Destroy() end)
+end
diff --git a/mods/ura/maps/intervention/map.bin b/mods/ura/maps/intervention/map.bin
new file mode 100644
index 0000000..cb9e93f
Binary files /dev/null and b/mods/ura/maps/intervention/map.bin differ
diff --git a/mods/ura/maps/intervention/map.png b/mods/ura/maps/intervention/map.png
new file mode 100644
index 0000000..29bfd56
Binary files /dev/null and b/mods/ura/maps/intervention/map.png differ
diff --git a/mods/ura/maps/intervention/map.yaml b/mods/ura/maps/intervention/map.yaml
new file mode 100644
index 0000000..8c55ddc
--- /dev/null
+++ b/mods/ura/maps/intervention/map.yaml
@@ -0,0 +1,2204 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Intervention
+
+Author: Antares79
+
+Tileset: TEMPERAT
+
+MapSize: 160,160
+
+Bounds: 16,16,128,128
+
+Visibility: MissionSelector
+
+Categories: Mission
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Civilians:
+ Name: Civilians
+ NonCombatant: True
+ Faction: allies
+ Color: 000000
+ Allies: Allies
+ PlayerReference@Allies:
+ Name: Allies
+ Playable: True
+ AllowBots: False
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: ABB7E4
+ LockSpawn: True
+ LockTeam: True
+ Allies: Civilians
+ Enemies: Soviets
+ PlayerReference@Soviets:
+ Name: Soviets
+ Faction: soviet
+ Color: FE1100
+ Enemies: Civilians, Allies
+
+Actors:
+ Actor1: mine
+ Location: 66,103
+ Owner: Neutral
+ Actor2: tc04
+ Location: 78,132
+ Owner: Neutral
+ Actor3: tc04
+ Location: 83,135
+ Owner: Neutral
+ Actor4: t11
+ Location: 80,136
+ Owner: Neutral
+ Actor5: t06
+ Location: 82,133
+ Owner: Neutral
+ Actor6: tc03
+ Location: 85,139
+ Owner: Neutral
+ Actor7: tc05
+ Location: 86,141
+ Owner: Neutral
+ Actor8: tc05
+ Location: 67,134
+ Owner: Neutral
+ Actor9: tc02
+ Location: 81,141
+ Owner: Neutral
+ Actor10: tc02
+ Location: 88,134
+ Owner: Neutral
+ Actor11: v06
+ Location: 91,141
+ Owner: Neutral
+ Actor12: v11
+ Location: 90,142
+ Owner: Neutral
+ Actor13: tc01
+ Location: 91,142
+ Owner: Neutral
+ Actor15: gun
+ Location: 18,116
+ Owner: Soviets
+ Facing: 192
+ Actor16: gun
+ Location: 19,119
+ Owner: Soviets
+ Facing: 192
+ Actor17: sam
+ Location: 16,118
+ Owner: Soviets
+ Facing: 192
+ Actor18: t10
+ Location: 18,117
+ Owner: Neutral
+ Actor19: tc04
+ Location: 16,119
+ Owner: Neutral
+ Actor20: tc03
+ Location: 16,116
+ Owner: Neutral
+ Actor21: tc02
+ Location: 17,126
+ Owner: Neutral
+ Actor22: tc01
+ Location: 16,124
+ Owner: Neutral
+ Actor23: t12
+ Location: 18,122
+ Owner: Neutral
+ Actor24: gun
+ Location: 23,110
+ Owner: Soviets
+ Facing: 92
+ Actor25: gun
+ Location: 25,115
+ Owner: Soviets
+ Facing: 92
+ Actor26: gun
+ Location: 24,113
+ Owner: Soviets
+ Facing: 92
+ Actor27: sam
+ Location: 26,113
+ Owner: Soviets
+ Facing: 160
+ Actor28: tc02
+ Location: 26,114
+ Owner: Neutral
+ Actor29: tc02
+ Location: 23,108
+ Owner: Neutral
+ Actor30: tc03
+ Location: 24,111
+ Owner: Neutral
+ Actor31: tc05
+ Location: 27,111
+ Owner: Neutral
+ Actor32: dome
+ Location: 28,108
+ Owner: Soviets
+ Actor33: t15
+ Location: 31,113
+ Owner: Neutral
+ Actor34: t08
+ Location: 30,115
+ Owner: Neutral
+ Actor203: t13
+ Location: 134,82
+ Owner: Neutral
+ Actor43: sam
+ Location: 54,103
+ Owner: Soviets
+ Facing: 192
+ Actor44: tc02
+ Location: 51,98
+ Owner: Neutral
+ Actor45: tc05
+ Location: 53,100
+ Owner: Neutral
+ Actor46: t15
+ Location: 54,94
+ Owner: Neutral
+ Actor47: tc01
+ Location: 55,96
+ Owner: Neutral
+ Actor48: t03
+ Location: 54,98
+ Owner: Neutral
+ Actor51: gun
+ Location: 58,104
+ Owner: Soviets
+ Facing: 160
+ Actor50: tc02
+ Location: 112,108
+ Owner: Neutral
+ Actor49: gun
+ Location: 54,107
+ Owner: Soviets
+ Facing: 160
+ Actor52: tc05
+ Location: 113,107
+ Owner: Neutral
+ Actor210: t11
+ Location: 121,38
+ Owner: Neutral
+ Actor54: tc02
+ Location: 85,82
+ Owner: Neutral
+ Actor55: tc02
+ Location: 80,92
+ Owner: Neutral
+ Actor56: tc05
+ Location: 82,83
+ Owner: Neutral
+ Actor57: tc05
+ Location: 81,104
+ Owner: Neutral
+ Actor58: tc03
+ Location: 85,85
+ Owner: Neutral
+ Actor59: sam
+ Location: 80,87
+ Owner: Soviets
+ Facing: 192
+ Actor60: tc01
+ Location: 84,90
+ Owner: Neutral
+ Actor61: tc04
+ Location: 84,102
+ Owner: Neutral
+ Actor62: tc02
+ Location: 141,131
+ Owner: Neutral
+ Actor63: tc04
+ Location: 140,133
+ Owner: Neutral
+ Actor64: tc01
+ Location: 130,127
+ Owner: Neutral
+ Actor65: tc05
+ Location: 127,130
+ Owner: Neutral
+ Actor66: t03
+ Location: 128,127
+ Owner: Neutral
+ Actor67: t11
+ Location: 109,123
+ Owner: Neutral
+ Actor68: t03
+ Location: 110,113
+ Owner: Neutral
+ Actor69: t12
+ Location: 109,117
+ Owner: Neutral
+ Actor70: t14
+ Location: 111,119
+ Owner: Neutral
+ Actor71: t17
+ Location: 111,115
+ Owner: Neutral
+ Actor72: tc02
+ Location: 108,120
+ Owner: Neutral
+ Actor73: t08
+ Location: 110,108
+ Owner: Neutral
+ Actor74: tc01
+ Location: 110,121
+ Owner: Neutral
+ Actor75: tc03
+ Location: 110,117
+ Owner: Neutral
+ Actor76: v08
+ Location: 109,119
+ Owner: Neutral
+ Actor77: t08
+ Location: 128,129
+ Owner: Neutral
+ Actor78: t07
+ Location: 130,129
+ Owner: Neutral
+ Actor79: sam
+ Location: 80,100
+ Owner: Soviets
+ Facing: 192
+ Actor80: gun
+ Location: 80,106
+ Owner: Soviets
+ Facing: 160
+ Actor81: gun
+ Location: 85,105
+ Owner: Soviets
+ Facing: 160
+ Actor209: tc05
+ Location: 141,47
+ Owner: Neutral
+ Actor117: t15
+ Location: 32,17
+ Owner: Neutral
+ Actor110: v15
+ Location: 31,18
+ Owner: Neutral
+ Actor101: wood
+ Location: 30,20
+ Owner: Neutral
+ Actor100: wood
+ Location: 29,19
+ Owner: Neutral
+ Actor99: wood
+ Location: 29,20
+ Owner: Neutral
+ Actor125: t08
+ Location: 30,17
+ Owner: Neutral
+ Actor196: tc01
+ Location: 142,77
+ Owner: Neutral
+ Actor85: wood
+ Location: 20,20
+ Owner: Neutral
+ Actor458: t06
+ Location: 83,19
+ Owner: Neutral
+ Actor102: wood
+ Location: 31,20
+ Owner: Neutral
+ Actor103: wood
+ Location: 32,20
+ Owner: Neutral
+ Actor104: wood
+ Location: 29,18
+ Owner: Neutral
+ Actor98: wood
+ Location: 20,18
+ Owner: Neutral
+ Actor105: tc02
+ Location: 22,17
+ Owner: Neutral
+ Actor107: v16
+ Location: 28,17
+ Owner: Neutral
+ Actor97: wood
+ Location: 20,19
+ Owner: Neutral
+ Actor109: v18
+ Location: 32,19
+ Owner: Neutral
+ Actor96: wood
+ Location: 23,19
+ Owner: Neutral
+ Actor111: v12
+ Location: 30,19
+ Owner: Neutral
+ Actor131: tc01
+ Location: 17,17
+ Owner: Neutral
+ Actor113: t11
+ Location: 22,21
+ Owner: Neutral
+ Actor114: t12
+ Location: 20,22
+ Owner: Neutral
+ Actor115: t08
+ Location: 23,24
+ Owner: Neutral
+ Actor116: utilpol2
+ Location: 18,20
+ Owner: Neutral
+ Actor93: wood
+ Location: 21,20
+ Owner: Neutral
+ Actor118: utilpol2
+ Location: 27,20
+ Owner: Neutral
+ Actor119: utilpol2
+ Location: 30,23
+ Owner: Neutral
+ Actor120: utilpol2
+ Location: 25,26
+ Owner: Neutral
+ Actor121: utilpol2
+ Location: 20,26
+ Owner: Neutral
+ Actor122: utilpol2
+ Location: 16,28
+ Owner: Neutral
+ Actor123: tc03
+ Location: 20,29
+ Owner: Neutral
+ Actor153: t03
+ Location: 26,21
+ Owner: Neutral
+ Actor108: rice
+ Location: 21,18
+ Owner: Neutral
+ Actor152: t01
+ Location: 17,26
+ Owner: Neutral
+ Actor94: wood
+ Location: 23,20
+ Owner: Neutral
+ Actor106: v14
+ Location: 26,18
+ Owner: Neutral
+ Actor112: tc02
+ Location: 36,16
+ Owner: Neutral
+ Actor130: tc04
+ Location: 34,18
+ Owner: Neutral
+ Actor126: tc02
+ Location: 43,19
+ Owner: Neutral
+ Actor132: tc01
+ Location: 39,19
+ Owner: Neutral
+ Actor133: t14
+ Location: 36,22
+ Owner: Neutral
+ Actor134: t02
+ Location: 17,31
+ Owner: Neutral
+ Actor135: t17
+ Location: 22,31
+ Owner: Neutral
+ Actor136: t11
+ Location: 32,29
+ Owner: Neutral
+ Actor137: wood
+ Location: 22,27
+ Owner: Neutral
+ Actor138: wood
+ Location: 22,28
+ Owner: Neutral
+ Actor139: wood
+ Location: 22,29
+ Owner: Neutral
+ Actor140: wood
+ Location: 23,29
+ Owner: Neutral
+ Actor141: wood
+ Location: 24,29
+ Owner: Neutral
+ Actor142: wood
+ Location: 25,29
+ Owner: Neutral
+ Actor143: wood
+ Location: 25,28
+ Owner: Neutral
+ Actor144: wood
+ Location: 19,28
+ Owner: Neutral
+ Actor145: wood
+ Location: 20,28
+ Owner: Neutral
+ Actor146: wood
+ Location: 21,28
+ Owner: Neutral
+ Actor147: tc05
+ Location: 29,25
+ Owner: Neutral
+ Actor148: t02
+ Location: 33,22
+ Owner: Neutral
+ Actor149: t08
+ Location: 28,28
+ Owner: Neutral
+ Actor150: t17
+ Location: 26,26
+ Owner: Neutral
+ Actor156: t07
+ Location: 27,23
+ Owner: Neutral
+ Actor154: t12
+ Location: 25,22
+ Owner: Neutral
+ Actor124: tc03
+ Location: 39,16
+ Owner: Neutral
+ Actor129: t15
+ Location: 17,22
+ Owner: Neutral
+ Actor155: v14
+ Location: 19,31
+ Owner: Neutral
+ Actor151: v18
+ Location: 17,20
+ Owner: Neutral
+ Actor157: v18
+ Location: 27,29
+ Owner: Neutral
+ Actor158: t11
+ Location: 23,30
+ Owner: Neutral
+ Actor160: apwr
+ Location: 32,89
+ Owner: Soviets
+ Actor162: apwr
+ Location: 41,93
+ Owner: Soviets
+ Actor161: apwr
+ Location: 24,97
+ Owner: Soviets
+ Actor128: apwr
+ Location: 37,91
+ Owner: Soviets
+ Actor159: apwr
+ Location: 28,93
+ Owner: Soviets
+ Actor127: apwr
+ Location: 34,95
+ Owner: Soviets
+ Actor174: brik
+ Location: 47,85
+ Owner: Soviets
+ Actor171: brik
+ Location: 48,85
+ Owner: Soviets
+ Actor175: sam
+ Location: 45,88
+ Owner: Soviets
+ Facing: 224
+ Actor173: brik
+ Location: 45,85
+ Owner: Soviets
+ Actor181: brik
+ Location: 38,85
+ Owner: Soviets
+ Actor177: brik
+ Location: 37,84
+ Owner: Soviets
+ Actor172: tsla
+ Location: 46,85
+ Owner: Soviets
+ Actor176: tsla
+ Location: 37,85
+ Owner: Soviets
+ Actor178: brik
+ Location: 38,84
+ Owner: Soviets
+ Actor170: brik
+ Location: 36,85
+ Owner: Soviets
+ Actor184: brik
+ Location: 44,85
+ Owner: Soviets
+ Actor588: tc05
+ Location: 135,110
+ Owner: Neutral
+ Actor180: brik
+ Location: 39,85
+ Owner: Soviets
+ Actor591: tc05
+ Location: 104,61
+ Owner: Neutral
+ Actor188: brik
+ Location: 47,84
+ Owner: Soviets
+ Actor169: brik
+ Location: 36,84
+ Owner: Soviets
+ Actor185: ftur
+ Location: 41,88
+ Owner: Soviets
+ Actor179: brik
+ Location: 39,84
+ Owner: Soviets
+ Actor584: tc05
+ Location: 128,60
+ Owner: Neutral
+ Actor168: brik
+ Location: 35,85
+ Owner: Soviets
+ Actor165: mine
+ Location: 33,105
+ Owner: Neutral
+ Actor166: proc
+ Location: 30,97
+ Owner: Soviets
+ FreeActor: False
+ Actor167: brik
+ Location: 35,84
+ Owner: Soviets
+ Actor187: brik
+ Location: 48,84
+ Owner: Soviets
+ Actor189: tc05
+ Location: 41,99
+ Owner: Neutral
+ Actor190: brik
+ Location: 46,84
+ Owner: Soviets
+ Actor191: brik
+ Location: 45,84
+ Owner: Soviets
+ Actor192: brik
+ Location: 44,84
+ Owner: Soviets
+ Actor590: tc01
+ Location: 136,108
+ Owner: Neutral
+ Actor164: tc04
+ Location: 132,70
+ Owner: Neutral
+ Actor163: tc04
+ Location: 133,68
+ Owner: Neutral
+ Actor581: t06
+ Location: 140,81
+ Owner: Neutral
+ Actor183: t15
+ Location: 126,65
+ Owner: Neutral
+ Actor198: tc05
+ Location: 141,80
+ Owner: Neutral
+ Actor424: tc05
+ Location: 131,75
+ Owner: Neutral
+ Actor583: t06
+ Location: 137,81
+ Owner: Neutral
+ Actor580: t08
+ Location: 139,68
+ Owner: Neutral
+ Actor425: tc05
+ Location: 134,78
+ Owner: Neutral
+ Actor582: t06
+ Location: 138,82
+ Owner: Neutral
+ Actor182: tc05
+ Location: 135,70
+ Owner: Neutral
+ Actor194: tc01
+ Location: 130,70
+ Owner: Neutral
+ Actor206: sam
+ Location: 40,101
+ Owner: Soviets
+ Facing: 160
+ Actor193: t13
+ Location: 130,63
+ Owner: Neutral
+ Actor589: tc01
+ Location: 136,119
+ Owner: Neutral
+ Actor82: tc02
+ Location: 78,57
+ Owner: Neutral
+ Actor195: tc01
+ Location: 137,74
+ Owner: Neutral
+ Actor211: sam
+ Location: 35,111
+ Owner: Soviets
+ Facing: 160
+ Actor212: tc03
+ Location: 142,52
+ Owner: Neutral
+ Actor213: tc02
+ Location: 137,48
+ Owner: Neutral
+ Actor35: tc02
+ Location: 134,66
+ Owner: Neutral
+ Actor215: t10
+ Location: 125,54
+ Owner: Neutral
+ Actor216: tc04
+ Location: 133,54
+ Owner: Neutral
+ Actor217: tc01
+ Location: 139,55
+ Owner: Neutral
+ Actor218: t11
+ Location: 135,57
+ Owner: Neutral
+ Actor219: t03
+ Location: 138,58
+ Owner: Neutral
+ Actor220: t08
+ Location: 136,60
+ Owner: Neutral
+ Actor221: t12
+ Location: 138,61
+ Owner: Neutral
+ Actor222: t16
+ Location: 127,60
+ Owner: Neutral
+ Actor223: t11
+ Location: 108,25
+ Owner: Neutral
+ Actor224: t05
+ Location: 110,37
+ Owner: Neutral
+ Actor225: t05
+ Location: 137,35
+ Owner: Neutral
+ Actor226: t17
+ Location: 123,33
+ Owner: Neutral
+ Actor227: t17
+ Location: 109,27
+ Owner: Neutral
+ Actor53: tc04
+ Location: 131,67
+ Owner: Neutral
+ Actor229: tc02
+ Location: 112,38
+ Owner: Neutral
+ Actor230: t08
+ Location: 101,24
+ Owner: Neutral
+ Actor232: t07
+ Location: 101,17
+ Owner: Neutral
+ Actor233: tc05
+ Location: 121,35
+ Owner: Neutral
+ Actor234: t12
+ Location: 118,38
+ Owner: Neutral
+ Actor235: t03
+ Location: 111,33
+ Owner: Neutral
+ Actor236: brik
+ Location: 74,80
+ Owner: Soviets
+ Actor237: brik
+ Location: 74,81
+ Owner: Soviets
+ Actor238: brik
+ Location: 73,81
+ Owner: Soviets
+ Actor239: brik
+ Location: 73,80
+ Owner: Soviets
+ Actor243: brik
+ Location: 60,81
+ Owner: Soviets
+ Actor240: brik
+ Location: 59,81
+ Owner: Soviets
+ Actor241: brik
+ Location: 59,80
+ Owner: Soviets
+ Actor242: brik
+ Location: 60,80
+ Owner: Soviets
+ Actor362: brik
+ Location: 57,60
+ Owner: Soviets
+ Actor361: brik
+ Location: 57,61
+ Owner: Soviets
+ Actor290: v16
+ Location: 21,58
+ Owner: Neutral
+ Actor369: brik
+ Location: 57,59
+ Owner: Soviets
+ Actor248: brik
+ Location: 62,81
+ Owner: Soviets
+ Actor249: brik
+ Location: 63,81
+ Owner: Soviets
+ Actor250: brik
+ Location: 64,81
+ Owner: Soviets
+ Actor251: brik
+ Location: 66,81
+ Owner: Soviets
+ Actor252: brik
+ Location: 65,81
+ Owner: Soviets
+ Actor257: brik
+ Location: 70,80
+ Owner: Soviets
+ Actor254: brik
+ Location: 67,81
+ Owner: Soviets
+ Actor255: brik
+ Location: 72,81
+ Owner: Soviets
+ Actor256: brik
+ Location: 71,81
+ Owner: Soviets
+ Actor253: brik
+ Location: 70,81
+ Owner: Soviets
+ Actor258: brik
+ Location: 67,80
+ Owner: Soviets
+ Actor259: brik
+ Location: 71,80
+ Owner: Soviets
+ Actor260: brik
+ Location: 66,80
+ Owner: Soviets
+ Actor261: tsla
+ Location: 72,80
+ Owner: Soviets
+ Actor360: brik
+ Location: 57,62
+ Owner: Soviets
+ Actor263: brik
+ Location: 74,79
+ Owner: Soviets
+ Actor264: brik
+ Location: 74,78
+ Owner: Soviets
+ Actor265: brik
+ Location: 74,77
+ Owner: Soviets
+ Actor266: brik
+ Location: 74,76
+ Owner: Soviets
+ Actor267: brik
+ Location: 74,75
+ Owner: Soviets
+ Actor268: brik
+ Location: 74,74
+ Owner: Soviets
+ Actor269: brik
+ Location: 74,73
+ Owner: Soviets
+ Actor270: brik
+ Location: 74,72
+ Owner: Soviets
+ Actor271: brik
+ Location: 75,72
+ Owner: Soviets
+ Actor272: brik
+ Location: 75,71
+ Owner: Soviets
+ Actor273: brik
+ Location: 75,70
+ Owner: Soviets
+ Actor274: brik
+ Location: 76,70
+ Owner: Soviets
+ Actor275: brik
+ Location: 77,70
+ Owner: Soviets
+ Actor276: brik
+ Location: 79,70
+ Owner: Soviets
+ Actor277: brik
+ Location: 78,70
+ Owner: Soviets
+ Actor278: brik
+ Location: 79,69
+ Owner: Soviets
+ Actor279: brik
+ Location: 79,68
+ Owner: Soviets
+ Actor281: tc01
+ Location: 28,52
+ Owner: Neutral
+ Actor282: tc03
+ Location: 27,62
+ Owner: Neutral
+ Actor283: tc04
+ Location: 26,60
+ Owner: Neutral
+ Actor284: tc02
+ Location: 25,58
+ Owner: Neutral
+ Actor285: tc01
+ Location: 24,61
+ Owner: Neutral
+ Actor286: t15
+ Location: 22,62
+ Owner: Neutral
+ Actor291: wood
+ Location: 23,61
+ Owner: Neutral
+ Actor292: wood
+ Location: 23,60
+ Owner: Neutral
+ Actor293: wood
+ Location: 23,59
+ Owner: Neutral
+ Actor294: wood
+ Location: 23,58
+ Owner: Neutral
+ Actor295: tc03
+ Location: 19,38
+ Owner: Neutral
+ Actor296: wood
+ Location: 18,57
+ Owner: Neutral
+ Actor298: wood
+ Location: 20,57
+ Owner: Neutral
+ Actor297: wood
+ Location: 19,57
+ Owner: Neutral
+ Actor300: wood
+ Location: 21,57
+ Owner: Neutral
+ Actor299: tsla
+ Location: 78,65
+ Owner: Soviets
+ Actor302: wood
+ Location: 18,58
+ Owner: Neutral
+ Actor301: wood
+ Location: 22,57
+ Owner: Neutral
+ Actor289: v14
+ Location: 22,61
+ Owner: Neutral
+ Actor304: wood
+ Location: 18,60
+ Owner: Neutral
+ Actor303: wood
+ Location: 18,59
+ Owner: Neutral
+ Actor305: t08
+ Location: 22,59
+ Owner: Neutral
+ Actor310: v13
+ Location: 21,66
+ Owner: Neutral
+ Actor306: t03
+ Location: 17,59
+ Owner: Neutral
+ Actor308: v12
+ Location: 20,67
+ Owner: Neutral
+ Actor311: v14
+ Location: 18,68
+ Owner: Neutral
+ Actor307: v03
+ Location: 17,64
+ Owner: Neutral
+ Actor288: v18
+ Location: 19,59
+ Owner: Neutral
+ Actor287: v10
+ Location: 20,61
+ Owner: Neutral
+ Actor309: sam
+ Location: 72,77
+ Owner: Soviets
+ Facing: 192
+ Actor246: tc02
+ Location: 24,47
+ Owner: Neutral
+ Actor280: t15
+ Location: 20,43
+ Owner: Neutral
+ Actor312: v14
+ Location: 24,66
+ Owner: Neutral
+ Actor313: v16
+ Location: 22,68
+ Owner: Neutral
+ Actor314: v04
+ Location: 26,66
+ Owner: Neutral
+ Actor315: tc03
+ Location: 19,69
+ Owner: Neutral
+ Actor316: tc01
+ Location: 32,71
+ Owner: Neutral
+ Actor317: t11
+ Location: 30,67
+ Owner: Neutral
+ Actor318: tc02
+ Location: 36,70
+ Owner: Neutral
+ Actor319: t11
+ Location: 36,72
+ Owner: Neutral
+ Actor320: tc02
+ Location: 39,74
+ Owner: Neutral
+ Actor321: t03
+ Location: 34,80
+ Owner: Neutral
+ Actor322: tc01
+ Location: 24,77
+ Owner: Neutral
+ Actor323: t11
+ Location: 17,75
+ Owner: Neutral
+ Actor324: t08
+ Location: 23,77
+ Owner: Neutral
+ Actor325: tc02
+ Location: 18,72
+ Owner: Neutral
+ Actor326: t12
+ Location: 20,74
+ Owner: Neutral
+ Actor327: tc04
+ Location: 78,72
+ Owner: Neutral
+ Actor328: t14
+ Location: 77,77
+ Owner: Neutral
+ Actor329: t12
+ Location: 87,73
+ Owner: Neutral
+ Actor330: tc01
+ Location: 90,70
+ Owner: Neutral
+ Actor331: tc05
+ Location: 84,75
+ Owner: Neutral
+ Actor332: t06
+ Location: 90,85
+ Owner: Neutral
+ Actor333: tc01
+ Location: 91,84
+ Owner: Neutral
+ Actor334: t01
+ Location: 90,83
+ Owner: Neutral
+ Actor335: t07
+ Location: 91,82
+ Owner: Neutral
+ Actor336: t16
+ Location: 90,81
+ Owner: Neutral
+ Actor337: tc05
+ Location: 95,84
+ Owner: Neutral
+ Actor338: t02
+ Location: 91,74
+ Owner: Neutral
+ Actor339: t17
+ Location: 90,77
+ Owner: Neutral
+ Actor340: tc01
+ Location: 100,88
+ Owner: Neutral
+ Actor341: t02
+ Location: 103,90
+ Owner: Neutral
+ Actor342: proc
+ Location: 66,75
+ Owner: Soviets
+ FreeActor: False
+ Actor343: tsla
+ Location: 65,80
+ Owner: Soviets
+ Actor344: fact
+ Location: 64,68
+ Owner: Soviets
+ Actor345: fix
+ Location: 70,68
+ Owner: Soviets
+ Actor359: brik
+ Location: 57,63
+ Owner: Soviets
+ Actor358: brik
+ Location: 57,64
+ Owner: Soviets
+ Actor357: brik
+ Location: 57,65
+ Owner: Soviets
+ Actor356: brik
+ Location: 57,66
+ Owner: Soviets
+ Actor355: brik
+ Location: 57,67
+ Owner: Soviets
+ Actor354: brik
+ Location: 57,68
+ Owner: Soviets
+ Actor353: brik
+ Location: 57,69
+ Owner: Soviets
+ Actor352: brik
+ Location: 57,70
+ Owner: Soviets
+ Actor351: brik
+ Location: 57,71
+ Owner: Soviets
+ Actor350: brik
+ Location: 57,72
+ Owner: Soviets
+ Actor349: brik
+ Location: 57,73
+ Owner: Soviets
+ Actor348: brik
+ Location: 57,74
+ Owner: Soviets
+ Actor262: brik
+ Location: 58,75
+ Owner: Soviets
+ Actor247: brik
+ Location: 57,75
+ Owner: Soviets
+ Actor244: brik
+ Location: 58,76
+ Owner: Soviets
+ Actor363: brik
+ Location: 62,59
+ Owner: Soviets
+ Actor364: brik
+ Location: 63,59
+ Owner: Soviets
+ Actor365: brik
+ Location: 64,59
+ Owner: Soviets
+ Actor366: brik
+ Location: 65,59
+ Owner: Soviets
+ Actor367: brik
+ Location: 66,59
+ Owner: Soviets
+ Actor368: brik
+ Location: 67,59
+ Owner: Soviets
+ Actor245: brik
+ Location: 57,76
+ Owner: Soviets
+ Actor370: brik
+ Location: 68,59
+ Owner: Soviets
+ Actor395: ftur
+ Location: 71,82
+ Owner: Soviets
+ Actor372: brik
+ Location: 79,67
+ Owner: Soviets
+ Actor373: brik
+ Location: 79,66
+ Owner: Soviets
+ Actor374: brik
+ Location: 79,65
+ Owner: Soviets
+ Actor375: brik
+ Location: 79,64
+ Owner: Soviets
+ Actor376: brik
+ Location: 79,63
+ Owner: Soviets
+ Actor377: brik
+ Location: 79,62
+ Owner: Soviets
+ Actor378: brik
+ Location: 58,59
+ Owner: Soviets
+ Actor379: brik
+ Location: 78,60
+ Owner: Soviets
+ Actor380: brik
+ Location: 78,59
+ Owner: Soviets
+ Actor381: brik
+ Location: 79,59
+ Owner: Soviets
+ Actor382: brik
+ Location: 79,60
+ Owner: Soviets
+ Actor383: brik
+ Location: 79,61
+ Owner: Soviets
+ Actor384: ftur
+ Location: 68,58
+ Owner: Soviets
+ Actor385: brik
+ Location: 68,60
+ Owner: Soviets
+ Actor386: brik
+ Location: 73,60
+ Owner: Soviets
+ Actor387: brik
+ Location: 67,60
+ Owner: Soviets
+ Actor388: brik
+ Location: 73,59
+ Owner: Soviets
+ Actor389: ftur
+ Location: 73,58
+ Owner: Soviets
+ Actor390: brik
+ Location: 74,59
+ Owner: Soviets
+ Actor391: brik
+ Location: 74,60
+ Owner: Soviets
+ Actor392: brik
+ Location: 75,59
+ Owner: Soviets
+ Actor393: brik
+ Location: 76,59
+ Owner: Soviets
+ Actor394: brik
+ Location: 77,59
+ Owner: Soviets
+ Actor371: ftur
+ Location: 67,82
+ Owner: Soviets
+ Actor346: proc
+ Location: 73,63
+ Owner: Soviets
+ FreeActor: False
+ Actor484: silo
+ Location: 35,100
+ Owner: Soviets
+ Actor637: silo
+ Location: 35,99
+ Owner: Soviets
+ Actor402: silo
+ Location: 34,100
+ Owner: Soviets
+ Actor400: apwr
+ Location: 24,105
+ Owner: Soviets
+ Actor399: apwr
+ Location: 24,101
+ Owner: Soviets
+ Actor398: apwr
+ Location: 24,93
+ Owner: Soviets
+ Actor406: apwr
+ Location: 59,70
+ Owner: Soviets
+ Actor405: apwr
+ Location: 59,66
+ Owner: Soviets
+ Actor404: apwr
+ Location: 59,62
+ Owner: Soviets
+ Actor407: sam
+ Location: 77,61
+ Owner: Soviets
+ Facing: 192
+ Actor408: sam
+ Location: 77,69
+ Owner: Soviets
+ Facing: 192
+ Actor409: brik
+ Location: 59,59
+ Owner: Soviets
+ Actor410: brik
+ Location: 60,59
+ Owner: Soviets
+ Actor411: brik
+ Location: 61,59
+ Owner: Soviets
+ Actor412: brik
+ Location: 58,60
+ Owner: Soviets
+ Actor413: silo
+ Location: 60,75
+ Owner: Soviets
+ Actor414: silo
+ Location: 60,74
+ Owner: Soviets
+ Actor415: silo
+ Location: 61,74
+ Owner: Soviets
+ Actor416: silo
+ Location: 61,75
+ Owner: Soviets
+ Actor417: brik
+ Location: 61,81
+ Owner: Soviets
+ Actor418: silo
+ Location: 62,79
+ Owner: Soviets
+ Actor419: silo
+ Location: 63,79
+ Owner: Soviets
+ Actor426: tc01
+ Location: 136,82
+ Owner: Neutral
+ Actor428: tc04
+ Location: 133,72
+ Owner: Neutral
+ Actor427: tc01
+ Location: 141,83
+ Owner: Neutral
+ Actor200: t02
+ Location: 136,73
+ Owner: Neutral
+ Actor214: tc01
+ Location: 134,80
+ Owner: Neutral
+ Actor201: t05
+ Location: 140,82
+ Owner: Neutral
+ Actor197: tc03
+ Location: 141,79
+ Owner: Neutral
+ Actor204: t13
+ Location: 129,78
+ Owner: Neutral
+ Actor202: t05
+ Location: 132,79
+ Owner: Neutral
+ Actor205: tc02
+ Location: 131,77
+ Owner: Neutral
+ Actor89: tc04
+ Location: 78,54
+ Owner: Neutral
+ Actor431: tc03
+ Location: 76,56
+ Owner: Neutral
+ Actor432: tc05
+ Location: 83,55
+ Owner: Neutral
+ Actor433: t15
+ Location: 81,67
+ Owner: Neutral
+ Actor434: t12
+ Location: 83,62
+ Owner: Neutral
+ Actor435: t16
+ Location: 88,58
+ Owner: Neutral
+ Actor436: tc01
+ Location: 45,78
+ Owner: Neutral
+ Actor437: tc05
+ Location: 47,76
+ Owner: Neutral
+ Actor438: tc04
+ Location: 52,68
+ Owner: Neutral
+ Actor439: tc01
+ Location: 55,62
+ Owner: Neutral
+ Actor440: tc03
+ Location: 52,63
+ Owner: Neutral
+ Actor441: t06
+ Location: 50,64
+ Owner: Neutral
+ Actor442: tc02
+ Location: 53,59
+ Owner: Neutral
+ Actor228: tc01
+ Location: 134,76
+ Owner: Neutral
+ Actor199: t10
+ Location: 135,75
+ Owner: Neutral
+ Actor429: tc04
+ Location: 137,83
+ Owner: Neutral
+ Actor587: t11
+ Location: 138,127
+ Owner: Neutral
+ Actor586: t02
+ Location: 135,63
+ Owner: Neutral
+ Actor585: tc04
+ Location: 132,62
+ Owner: Neutral
+ Actor451: mine
+ Location: 83,50
+ Owner: Neutral
+ Actor0: tc05
+ Location: 28,49
+ Owner: Neutral
+ Actor36: tc05
+ Location: 38,50
+ Owner: Neutral
+ Actor37: tc01
+ Location: 44,51
+ Owner: Neutral
+ Actor38: tc01
+ Location: 53,55
+ Owner: Neutral
+ Actor39: tc02
+ Location: 52,53
+ Owner: Neutral
+ Actor40: tc04
+ Location: 43,54
+ Owner: Neutral
+ Actor41: t03
+ Location: 48,62
+ Owner: Neutral
+ Actor207: t15
+ Location: 34,59
+ Owner: Neutral
+ Actor208: t14
+ Location: 54,84
+ Owner: Neutral
+ Actor420: t16
+ Location: 59,83
+ Owner: Neutral
+ Actor421: tc01
+ Location: 60,84
+ Owner: Neutral
+ Actor422: tc05
+ Location: 63,84
+ Owner: Neutral
+ Actor423: t13
+ Location: 26,90
+ Owner: Neutral
+ Actor443: t15
+ Location: 43,44
+ Owner: Neutral
+ Actor444: tc04
+ Location: 46,46
+ Owner: Neutral
+ Actor445: t03
+ Location: 51,47
+ Owner: Neutral
+ Actor446: t08
+ Location: 51,51
+ Owner: Neutral
+ Actor447: tc04
+ Location: 66,47
+ Owner: Neutral
+ Actor448: tc05
+ Location: 58,48
+ Owner: Neutral
+ Actor452: tc03
+ Location: 62,43
+ Owner: Neutral
+ Actor453: tc01
+ Location: 66,43
+ Owner: Neutral
+ Actor454: tc05
+ Location: 64,35
+ Owner: Neutral
+ Actor455: t06
+ Location: 67,36
+ Owner: Neutral
+ Actor456: sam
+ Location: 87,35
+ Owner: Soviets
+ Facing: 160
+ Actor457: sam
+ Location: 85,26
+ Owner: Soviets
+ Facing: 160
+ Actor87: t11
+ Location: 63,31
+ Owner: Neutral
+ Actor459: sam
+ Location: 68,39
+ Owner: Soviets
+ Facing: 96
+ Actor460: tc05
+ Location: 88,33
+ Owner: Neutral
+ Actor461: t15
+ Location: 90,35
+ Owner: Neutral
+ Actor462: t15
+ Location: 86,35
+ Owner: Neutral
+ Actor463: t05
+ Location: 87,33
+ Owner: Neutral
+ Actor464: tc02
+ Location: 90,30
+ Owner: Neutral
+ Actor465: tc01
+ Location: 92,31
+ Owner: Neutral
+ Actor466: t02
+ Location: 88,22
+ Owner: Neutral
+ Actor467: t07
+ Location: 90,23
+ Owner: Neutral
+ Actor468: t17
+ Location: 89,23
+ Owner: Neutral
+ Actor469: t13
+ Location: 90,25
+ Owner: Neutral
+ Actor470: t11
+ Location: 89,26
+ Owner: Neutral
+ Actor471: t14
+ Location: 91,27
+ Owner: Neutral
+ Actor472: t10
+ Location: 90,28
+ Owner: Neutral
+ Actor473: t07
+ Location: 85,23
+ Owner: Neutral
+ Actor474: t02
+ Location: 86,26
+ Owner: Neutral
+ Actor475: t01
+ Location: 87,29
+ Owner: Neutral
+ Actor476: t17
+ Location: 86,27
+ Owner: Neutral
+ Actor477: t08
+ Location: 85,25
+ Owner: Neutral
+ Actor478: tc03
+ Location: 64,24
+ Owner: Neutral
+ Actor479: tc02
+ Location: 66,31
+ Owner: Neutral
+ Actor480: tc02
+ Location: 67,24
+ Owner: Neutral
+ Actor481: tc01
+ Location: 67,28
+ Owner: Neutral
+ Actor42: t13
+ Location: 63,29
+ Owner: Neutral
+ Actor483: t14
+ Location: 68,26
+ Owner: Neutral
+ Actor86: t05
+ Location: 63,26
+ Owner: Neutral
+ Actor485: t16
+ Location: 66,25
+ Owner: Neutral
+ Actor486: tc03
+ Location: 74,23
+ Owner: Neutral
+ Actor487: tc05
+ Location: 69,20
+ Owner: Neutral
+ Actor488: tc02
+ Location: 73,20
+ Owner: Neutral
+ Actor489: tc01
+ Location: 81,20
+ Owner: Neutral
+ Actor490: tc02
+ Location: 85,20
+ Owner: Neutral
+ Actor491: tc03
+ Location: 83,20
+ Owner: Neutral
+ Actor492: t15
+ Location: 59,39
+ Owner: Neutral
+ Actor493: t06
+ Location: 61,39
+ Owner: Neutral
+ Actor494: tc02
+ Location: 60,36
+ Owner: Neutral
+ Actor495: t15
+ Location: 67,20
+ Owner: Neutral
+ Actor496: t06
+ Location: 66,20
+ Owner: Neutral
+ Actor497: t14
+ Location: 64,20
+ Owner: Neutral
+ Actor498: t13
+ Location: 60,22
+ Owner: Neutral
+ Actor499: t17
+ Location: 62,20
+ Owner: Neutral
+ Actor500: t07
+ Location: 61,20
+ Owner: Neutral
+ Actor501: t02
+ Location: 63,19
+ Owner: Neutral
+ Actor502: tc04
+ Location: 78,20
+ Owner: Neutral
+ Actor503: t15
+ Location: 76,20
+ Owner: Neutral
+ Actor504: ftur
+ Location: 72,41
+ Owner: Soviets
+ Actor505: ftur
+ Location: 77,41
+ Owner: Soviets
+ Actor506: sam
+ Location: 82,44
+ Owner: Soviets
+ Facing: 160
+ Actor507: t11
+ Location: 86,42
+ Owner: Soviets
+ Actor508: t03
+ Location: 85,43
+ Owner: Soviets
+ Actor509: tc01
+ Location: 84,39
+ Owner: Soviets
+ Actor510: t14
+ Location: 79,43
+ Owner: Soviets
+ Actor511: tc04
+ Location: 81,42
+ Owner: Soviets
+ Actor512: t12
+ Location: 84,43
+ Owner: Soviets
+ Actor513: t01
+ Location: 67,38
+ Owner: Soviets
+ Actor514: tc02
+ Location: 68,40
+ Owner: Soviets
+ Actor515: t15
+ Location: 69,36
+ Owner: Soviets
+ Actor516: t11
+ Location: 66,39
+ Owner: Soviets
+ Actor517: tc04
+ Location: 35,40
+ Owner: Neutral
+ Actor518: tc05
+ Location: 35,37
+ Owner: Neutral
+ Actor519: t03
+ Location: 27,37
+ Owner: Neutral
+ Actor520: tc01
+ Location: 59,23
+ Owner: Neutral
+ Actor521: tc04
+ Location: 59,27
+ Owner: Neutral
+ Actor522: t15
+ Location: 59,25
+ Owner: Neutral
+ Actor523: t05
+ Location: 60,30
+ Owner: Neutral
+ Actor524: t11
+ Location: 59,31
+ Owner: Neutral
+ Actor525: t03
+ Location: 59,29
+ Owner: Neutral
+ Actor526: tc01
+ Location: 60,33
+ Owner: Neutral
+ Actor527: tc05
+ Location: 57,35
+ Owner: Neutral
+ Actor528: tc03
+ Location: 56,38
+ Owner: Neutral
+ Actor529: t17
+ Location: 58,42
+ Owner: Neutral
+ Actor530: t07
+ Location: 54,42
+ Owner: Neutral
+ Actor531: gun
+ Location: 68,30
+ Owner: Soviets
+ Facing: 160
+ Actor532: gun
+ Location: 87,32
+ Owner: Soviets
+ Facing: 192
+ Actor533: gun
+ Location: 83,24
+ Owner: Soviets
+ Actor534: gun
+ Location: 73,24
+ Owner: Soviets
+ Actor535: ftur
+ Location: 58,81
+ Owner: Soviets
+ Actor536: ftur
+ Location: 56,76
+ Owner: Soviets
+ Actor537: t11
+ Location: 76,16
+ Owner: Neutral
+ Actor538: t05
+ Location: 70,15
+ Owner: Neutral
+ Actor539: tc04
+ Location: 46,16
+ Owner: Neutral
+ Actor540: t14
+ Location: 52,17
+ Owner: Neutral
+ Actor541: tc04
+ Location: 49,30
+ Owner: Neutral
+ Actor542: tc04
+ Location: 52,38
+ Owner: Neutral
+ Actor543: tc04
+ Location: 56,22
+ Owner: Neutral
+ Actor544: t05
+ Location: 57,25
+ Owner: Neutral
+ Actor545: tc05
+ Location: 50,24
+ Owner: Neutral
+ Actor546: tc02
+ Location: 48,21
+ Owner: Neutral
+ Actor547: t15
+ Location: 50,22
+ Owner: Neutral
+ Actor548: v04
+ Location: 45,31
+ Owner: Neutral
+ Actor549: v15
+ Location: 42,29
+ Owner: Neutral
+ Actor550: v17
+ Location: 43,34
+ Owner: Neutral
+ Actor551: v18
+ Location: 41,32
+ Owner: Neutral
+ Actor552: tc04
+ Location: 39,34
+ Owner: Neutral
+ Actor553: tc01
+ Location: 40,37
+ Owner: Neutral
+ Actor554: v12
+ Location: 43,31
+ Owner: Neutral
+ Actor555: v13
+ Location: 42,33
+ Owner: Neutral
+ Actor556: wood
+ Location: 43,28
+ Owner: Neutral
+ Actor557: wood
+ Location: 43,29
+ Owner: Neutral
+ Actor558: wood
+ Location: 43,30
+ Owner: Neutral
+ Actor559: wood
+ Location: 44,30
+ Owner: Neutral
+ Actor560: wood
+ Location: 45,30
+ Owner: Neutral
+ Actor561: wood
+ Location: 46,30
+ Owner: Neutral
+ Actor562: wood
+ Location: 47,30
+ Owner: Neutral
+ Actor563: wood
+ Location: 47,31
+ Owner: Neutral
+ Actor564: wood
+ Location: 47,32
+ Owner: Neutral
+ Actor565: tc05
+ Location: 44,23
+ Owner: Neutral
+ Actor566: tc03
+ Location: 41,23
+ Owner: Neutral
+ Actor567: tc04
+ Location: 87,38
+ Owner: Neutral
+ Actor568: t16
+ Location: 90,38
+ Owner: Neutral
+ Actor569: tc02
+ Location: 93,36
+ Owner: Neutral
+ Actor570: tc04
+ Location: 94,33
+ Owner: Neutral
+ Actor571: t15
+ Location: 94,31
+ Owner: Neutral
+ Actor572: t17
+ Location: 95,35
+ Owner: Neutral
+ Actor573: tc05
+ Location: 88,46
+ Owner: Neutral
+ Actor574: tc01
+ Location: 88,48
+ Owner: Neutral
+ Actor575: t11
+ Location: 89,50
+ Owner: Neutral
+ Actor576: tc05
+ Location: 88,20
+ Owner: Neutral
+ Actor577: t16
+ Location: 87,19
+ Owner: Neutral
+ Actor578: t07
+ Location: 80,19
+ Owner: Neutral
+ Actor579: t17
+ Location: 75,19
+ Owner: Neutral
+ Actor83: sam
+ Location: 75,24
+ Owner: Soviets
+ Actor84: sam
+ Location: 63,28
+ Owner: Soviets
+ Facing: 64
+ Actor88: t17
+ Location: 64,26
+ Owner: Neutral
+ Actor90: sam
+ Location: 79,53
+ Owner: Soviets
+ Facing: 160
+ Actor91: tc02
+ Location: 81,52
+ Owner: Neutral
+ Actor92: t06
+ Location: 78,53
+ Owner: Neutral
+ Actor95: t14
+ Location: 79,51
+ Owner: Neutral
+ Actor430: t16
+ Location: 82,56
+ Owner: Neutral
+ Actor482: 3tnk
+ Location: 24,43
+ Owner: Soviets
+ Facing: 160
+ Actor641: 3tnk
+ Location: 23,48
+ Owner: Soviets
+ Actor642: v2rl
+ Location: 20,45
+ Owner: Soviets
+ Facing: 160
+ Actor593: tc01
+ Location: 97,64
+ Owner: Neutral
+ Actor592: tc03
+ Location: 101,62
+ Owner: Neutral
+ Actor594: tc04
+ Location: 96,16
+ Owner: Neutral
+ Actor595: tc04
+ Location: 97,18
+ Owner: Neutral
+ Actor596: tc01
+ Location: 94,16
+ Owner: Neutral
+ Actor597: tc01
+ Location: 98,20
+ Owner: Neutral
+ Actor598: tc05
+ Location: 91,24
+ Owner: Neutral
+ Actor599: tc01
+ Location: 104,43
+ Owner: Neutral
+ Actor600: t10
+ Location: 101,39
+ Owner: Neutral
+ Actor601: t10
+ Location: 102,43
+ Owner: Neutral
+ Actor602: t11
+ Location: 100,32
+ Owner: Neutral
+ Actor603: tc03
+ Location: 107,44
+ Owner: Neutral
+ Actor604: tc04
+ Location: 102,47
+ Owner: Neutral
+ Actor605: tc05
+ Location: 103,57
+ Owner: Neutral
+ Actor606: tc02
+ Location: 102,54
+ Owner: Neutral
+ Actor607: tc04
+ Location: 100,58
+ Owner: Neutral
+ Actor608: tc01
+ Location: 102,52
+ Owner: Neutral
+ Actor609: tc01
+ Location: 100,51
+ Owner: Neutral
+ Actor610: t06
+ Location: 102,50
+ Owner: Neutral
+ Actor611: t06
+ Location: 100,49
+ Owner: Neutral
+ Actor612: t02
+ Location: 100,54
+ Owner: Neutral
+ Actor613: t02
+ Location: 118,47
+ Owner: Neutral
+ Actor614: tc01
+ Location: 111,51
+ Owner: Neutral
+ Actor615: tc02
+ Location: 122,52
+ Owner: Neutral
+ Actor616: t02
+ Location: 117,52
+ Owner: Neutral
+ Actor617: t11
+ Location: 106,47
+ Owner: Neutral
+ Actor618: tc02
+ Location: 142,40
+ Owner: Neutral
+ Actor619: tc02
+ Location: 135,43
+ Owner: Neutral
+ Actor620: tc02
+ Location: 132,36
+ Owner: Neutral
+ Actor621: tc04
+ Location: 140,38
+ Owner: Neutral
+ Actor622: tc04
+ Location: 138,43
+ Owner: Neutral
+ Actor623: tc04
+ Location: 125,37
+ Owner: Neutral
+ Actor624: t02
+ Location: 131,40
+ Owner: Neutral
+ Actor625: t07
+ Location: 132,42
+ Owner: Neutral
+ Actor626: tc01
+ Location: 130,42
+ Owner: Neutral
+ Actor627: tc01
+ Location: 129,41
+ Owner: Neutral
+ Actor628: t12
+ Location: 135,39
+ Owner: Neutral
+ Actor629: t11
+ Location: 114,51
+ Owner: Neutral
+ Actor630: t08
+ Location: 120,53
+ Owner: Neutral
+ Actor631: t02
+ Location: 117,40
+ Owner: Neutral
+ Actor632: t15
+ Location: 123,41
+ Owner: Neutral
+ Actor633: tc05
+ Location: 128,45
+ Owner: Neutral
+ Actor634: tc03
+ Location: 121,46
+ Owner: Neutral
+ Actor635: t02
+ Location: 122,47
+ Owner: Neutral
+ Actor636: t02
+ Location: 123,46
+ Owner: Neutral
+ Actor644: e1
+ Location: 45,39
+ Owner: Soviets
+ Actor645: e1
+ Location: 47,35
+ Owner: Soviets
+ Actor646: e1
+ Location: 45,34
+ Owner: Soviets
+ Actor647: e3
+ Location: 47,39
+ Owner: Soviets
+ Actor648: e3
+ Location: 44,37
+ Owner: Soviets
+ Actor649: apc
+ Location: 127,43
+ Owner: Soviets
+ Actor650: e1
+ Location: 124,43
+ Owner: Soviets
+ Actor651: e1
+ Location: 125,44
+ Owner: Soviets
+ Actor652: e1
+ Location: 126,44
+ Owner: Soviets
+ Actor653: e3
+ Location: 126,43
+ Owner: Soviets
+ Actor654: e3
+ Location: 128,44
+ Owner: Soviets
+ Actor403: silo
+ Location: 36,99
+ Owner: Soviets
+ Actor638: mine
+ Location: 139,54
+ Owner: Neutral
+ Actor655: mine
+ Location: 120,61
+ Owner: Neutral
+ Actor639: silo
+ Location: 34,99
+ Owner: Soviets
+ Actor401: silo
+ Location: 36,100
+ Owner: Soviets
+ Actor656: tc01
+ Location: 26,109
+ Owner: Neutral
+ Actor14: wood
+ Location: 23,57
+ Owner: Neutral
+ CameraSpot: CAMERA
+ Location: 79,137
+ Owner: Allies
+ EasyMine: mine
+ Location: 122,112
+ Owner: Neutral
+ SubPen: spen
+ Location: 26,84
+ Owner: Soviets
+ Uboat1: ss
+ Location: 17,92
+ Owner: Soviets
+ Facing: 128
+ Stance: Defend
+ Uboat2: ss
+ Location: 20,91
+ Owner: Soviets
+ Facing: 128
+ Stance: Defend
+ Uboat3: ss
+ Location: 17,112
+ Owner: Soviets
+ Facing: 192
+ Stance: Defend
+ Uboat4: ss
+ Location: 34,120
+ Owner: Soviets
+ Facing: 160
+ Stance: Defend
+ Uboat5: ss
+ Location: 24,126
+ Owner: Soviets
+ Facing: 160
+ Stance: Defend
+ Uboat6: ss
+ Location: 29,131
+ Owner: Soviets
+ Facing: 192
+ Stance: Defend
+ WarFactory: weap
+ Location: 70,72
+ Owner: Soviets
+ Barracks: barr
+ Location: 67,63
+ Owner: Soviets
+ AirForceHQ: miss
+ Location: 77,32
+ Owner: Soviets
+ Kennel: kenn
+ Location: 64,61
+ Owner: Soviets
+ Harvester1: harv
+ Location: 73,96
+ Owner: Soviets
+ Harvester2: harv
+ Location: 80,51
+ Owner: Soviets
+ Harvester3: harv
+ Location: 32,103
+ Owner: Soviets
+ HarvGuard1: apc
+ Location: 37,98
+ Owner: Soviets
+ HarvGuard2: 3tnk
+ Location: 39,96
+ Owner: Soviets
+ HarvGuard3: ftrk
+ Location: 46,95
+ Owner: Soviets
+ FarmHouse1: asianhut
+ Location: 26,23
+ Owner: Civilians
+ FarmHouse2: v10
+ Location: 26,30
+ Owner: Civilians
+ FarmHouse3: v06
+ Location: 21,19
+ Owner: Civilians
+ FarmHouse4: v09
+ Location: 19,29
+ Owner: Civilians
+ FarmHouse5: v03
+ Location: 17,21
+ Owner: Civilians
+ FarmHouse6: v02
+ Location: 24,19
+ Owner: Civilians
+ FarmHouse7: v04
+ Location: 17,24
+ Owner: Civilians
+ FarmHouse8: v07
+ Location: 29,21
+ Owner: Civilians
+ FarmHouse9: v05
+ Location: 23,28
+ Owner: Civilians
+ Church: v01
+ Location: 21,23
+ Owner: Civilians
+ GroundAttackWpt1: waypoint
+ Location: 29,64
+ Owner: Soviets
+ MCVInsertLocation: waypoint
+ Location: 71,143
+ Owner: Allies
+ MCVDeployLocation: waypoint
+ Location: 73,133
+ Owner: Allies
+ AlliedAreaTopLeft: waypoint
+ Location: 97,66
+ Owner: Neutral
+ AlliedAreaBottomRight: waypoint
+ Location: 143,110
+ Owner: Neutral
+ Rallypoint: waypoint
+ Location: 64,74
+ Owner: Soviets
+ PatrolWpt1: waypoint
+ Location: 80,78
+ Owner: Soviets
+ PatrolWpt2: waypoint
+ Location: 95,55
+ Owner: Soviets
+ UboatPatrolWpt1: waypoint
+ Location: 52,129
+ Owner: Soviets
+ UboatPatrolWpt2: waypoint
+ Location: 64,123
+ Owner: Soviets
+ UboatPatrolWpt3: waypoint
+ Location: 97,123
+ Owner: Soviets
+ UboatPatrolWpt4: waypoint
+ Location: 61,112
+ Owner: Soviets
+ VillageRaidEntrypoint: waypoint
+ Location: 143,16
+ Owner: Soviets
+ VillageRaidWpt1: waypoint
+ Location: 77,30
+ Owner: Soviets
+ VillageRaidWpt2: waypoint
+ Location: 59,52
+ Owner: Soviets
+ BaseRaidEntrypoint: waypoint
+ Location: 16,143
+ Owner: Soviets
+ BaseRaidWpt1: waypoint
+ Location: 105,74
+ Owner: Soviets
+ BaseRaidWpt2: waypoint
+ Location: 128,130
+ Owner: Soviets
+ BaseRaidWpt3: waypoint
+ Location: 118,106
+ Owner: Soviets
+ BaseRaidWpt4: waypoint
+ Location: 116,69
+ Owner: Soviets
+ BaseRaidWpt5: waypoint
+ Location: 141,104
+ Owner: Soviets
+ BaseRearAttackWpt1: waypoint
+ Location: 22,45
+ Owner: Soviets
+ BaseRearAttackWpt2: waypoint
+ Location: 104,33
+ Owner: Soviets
+ BaseRearAttackWpt3: waypoint
+ Location: 129,57
+ Owner: Soviets
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
+
+Weapons: weapons.yaml
diff --git a/mods/ura/maps/intervention/rules.yaml b/mods/ura/maps/intervention/rules.yaml
new file mode 100644
index 0000000..622aa58
--- /dev/null
+++ b/mods/ura/maps/intervention/rules.yaml
@@ -0,0 +1,200 @@
+Player:
+ PlayerResources:
+ DefaultCash: 2000
+
+World:
+ LuaScript:
+ Scripts: intervention.lua
+ MissionData:
+ Briefing: The Soviet Air Force is flying air raids against a civilian village.\n\nWe have to do everything in our power to stop them!\n\nYour job is to establish a base on the mainland ASAP. We can prevent the village's destruction by capturing the enemy's Air Force Headquarters building. The enemy base is heavily guarded, though. You will not have enough time to build a force big enough to overpower the Soviet defences. You will have to find a way to sneak in!\n\nGood luck, Commander!\n
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ normal: Normal
+ hard: Hard
+ Default: normal
+
+^Palettes:
+ IndexedPlayerPalette:
+ PlayerIndex:
+ Soviets: 229, 230, 231, 232, 233, 234, 235, 8, 236, 237, 238, 239, 221, 222, 223, 223
+ Allies: 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175
+ Allies1: 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175
+ Allies2: 208, 208, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 154, 155, 143
+
+CAMERA:
+ RevealsShroud:
+ Range: 18c0
+
+MISS:
+ Tooltip:
+ Name: Soviet Air Force HQ
+ Capturable:
+ Types: building
+ CaptureThreshold: 100
+ ValidStances: Enemy
+
+E6.MOD:
+ Inherits: E6
+ Buildable:
+ Prerequisites: ~barracks
+ Captures:
+ CaptureTypes: building
+ Sabotage: False
+ RenderSprites:
+ Image: e6
+
+E6:
+ Buildable:
+ Prerequisites: ~disabled
+
+TENT:
+ Buildable:
+ Prerequisites: anypower, ~structures.allies, ~techlevel.infonly, mainland
+
+DOME:
+ Buildable:
+ Prerequisites: proc, ~techlevel.medium, mainland
+
+WEAP:
+ Buildable:
+ Prerequisites: proc, ~techlevel.low, mainland
+ ProvidesPrerequisite:
+ Prerequisite: givefix
+
+MAINLAND:
+ AlwaysVisible:
+ Interactable:
+ Tooltip:
+ Name: Reach the mainland
+ ProvidesPrerequisite:
+ Prerequisite: mainland
+
+HPAD:
+ ProvidesPrerequisite:
+ Prerequisite: givefix
+
+FIX:
+ Buildable:
+ Prerequisites: givefix
+
+GIVEFIX:
+ AlwaysVisible:
+ Interactable:
+ Tooltip:
+ Name: Weapons Factory or Helipad
+
+MIG:
+ Buildable:
+ Prerequisites: ~afld
+ AmmoPool:
+ Ammo: 2
+
+HELI:
+ Buildable:
+ Prerequisites: ~hpad
+ Valued:
+ Cost: 1500
+
+SAM:
+ RevealsShroud:
+ Range: 7c0
+ Power:
+ Amount: -5
+
+TSLA:
+ Power:
+ Amount: -50
+
+ATEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+STEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+GAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+PDOX:
+ Buildable:
+ Prerequisites: ~disabled
+
+E4:
+ Buildable:
+ Prerequisites: ~disabled
+
+E7:
+ Buildable:
+ Prerequisites: ~disabled
+
+THF:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+SHOK:
+ Buildable:
+ Prerequisites: ~disabled
+
+SNIPER:
+ Buildable:
+ Prerequisites: ~disabled
+
+2TNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+ARTY:
+ Buildable:
+ Prerequisites: ~disabled
+
+CTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MGG:
+ Buildable:
+ Prerequisites: ~disabled
+
+MNLY:
+ Buildable:
+ Prerequisites: ~disabled
+
+MRJ:
+ Buildable:
+ Prerequisites: ~disabled
+
+TRUK:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIND:
+ Buildable:
+ Prerequisites: ~disabled
+
+YAK:
+ Buildable:
+ Prerequisites: ~disabled
+
+CA:
+ Buildable:
+ Prerequisites: ~disabled
+
+DD:
+ Buildable:
+ Prerequisites: ~disabled
+
+STNK:
+ Buildable:
+ Prerequisites: ~disabled
diff --git a/mods/ura/maps/intervention/weapons.yaml b/mods/ura/maps/intervention/weapons.yaml
new file mode 100644
index 0000000..331f0bb
--- /dev/null
+++ b/mods/ura/maps/intervention/weapons.yaml
@@ -0,0 +1,6 @@
+Nike:
+ Range: 9c0
+
+Maverick:
+ Warhead@1Dam: SpreadDamage
+ Damage: 175
diff --git a/mods/ura/maps/jungle-law.oramap b/mods/ura/maps/jungle-law.oramap
new file mode 100644
index 0000000..b196211
Binary files /dev/null and b/mods/ura/maps/jungle-law.oramap differ
diff --git a/mods/ura/maps/keep-off-the-grass-2.oramap b/mods/ura/maps/keep-off-the-grass-2.oramap
new file mode 100644
index 0000000..03ab2b0
Binary files /dev/null and b/mods/ura/maps/keep-off-the-grass-2.oramap differ
diff --git a/mods/ura/maps/mad-science.oramap b/mods/ura/maps/mad-science.oramap
new file mode 100644
index 0000000..2e2eeb7
Binary files /dev/null and b/mods/ura/maps/mad-science.oramap differ
diff --git a/mods/ura/maps/maelstrom.oramap b/mods/ura/maps/maelstrom.oramap
new file mode 100644
index 0000000..b3d0f6d
Binary files /dev/null and b/mods/ura/maps/maelstrom.oramap differ
diff --git a/mods/ura/maps/mass-confliction.oramap b/mods/ura/maps/mass-confliction.oramap
new file mode 100644
index 0000000..f1b04b1
Binary files /dev/null and b/mods/ura/maps/mass-confliction.oramap differ
diff --git a/mods/ura/maps/minor-pressure.oramap b/mods/ura/maps/minor-pressure.oramap
new file mode 100644
index 0000000..87064d8
Binary files /dev/null and b/mods/ura/maps/minor-pressure.oramap differ
diff --git a/mods/ura/maps/monster-tank-madness/map.bin b/mods/ura/maps/monster-tank-madness/map.bin
new file mode 100644
index 0000000..f0fefe7
Binary files /dev/null and b/mods/ura/maps/monster-tank-madness/map.bin differ
diff --git a/mods/ura/maps/monster-tank-madness/map.png b/mods/ura/maps/monster-tank-madness/map.png
new file mode 100644
index 0000000..29bfd56
Binary files /dev/null and b/mods/ura/maps/monster-tank-madness/map.png differ
diff --git a/mods/ura/maps/monster-tank-madness/map.yaml b/mods/ura/maps/monster-tank-madness/map.yaml
new file mode 100644
index 0000000..46e850f
--- /dev/null
+++ b/mods/ura/maps/monster-tank-madness/map.yaml
@@ -0,0 +1,2094 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Monster Tank Madness
+
+Author: Westwood Studios
+
+Tileset: SNOW
+
+MapSize: 128,128
+
+Bounds: 19,16,87,88
+
+Visibility: MissionSelector
+
+Categories: Mission
+
+LockPreview: True
+
+Players:
+ PlayerReference@Greece:
+ Name: Greece
+ Playable: True
+ AllowBots: False
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: ABB7E4
+ LockSpawn: True
+ LockTeam: True
+ Enemies: BadGuy, USSR, Ukraine, Turkey, FriendlyMadTanks
+ PlayerReference@BadGuy:
+ Name: BadGuy
+ Faction: soviet
+ Color: FE1100
+ Allies: USSR
+ Enemies: Greece, Turkey
+ PlayerReference@USSR:
+ Name: USSR
+ Faction: soviet
+ Color: FE1100
+ Allies: BadGuy, Ukraine
+ Enemies: Greece, Turkey
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Ukraine:
+ Name: Ukraine
+ Faction: soviet
+ Color: FFE495
+ Allies: BadGuy, USSR
+ Enemies: Greece, Turkey
+ PlayerReference@Turkey:
+ Name: Turkey
+ Faction: soviet
+ Color: D1987C
+ Enemies: Greece, BadGuy, USSR, Ukraine, Outpost
+ PlayerReference@FriendlyMadTanks:
+ Name: FriendlyMadTanks
+ Faction: soviet
+ Color: D1987C
+ Allies: Greece
+ Enemies: BadGuy, USSR, Ukraine
+ PlayerReference@Outpost:
+ Name: Outpost
+ NonCombatant: True
+ Faction: allies
+ Enemies: BadGuy, USSR, Ukraine, Turkey
+
+Actors:
+ Actor0: sbag
+ Location: 21,26
+ Owner: Outpost
+ Actor1: sbag
+ Location: 22,26
+ Owner: Outpost
+ Actor2: sbag
+ Location: 43,26
+ Owner: Outpost
+ Actor3: sbag
+ Location: 44,26
+ Owner: Outpost
+ Actor4: sbag
+ Location: 45,26
+ Owner: Outpost
+ Actor5: sbag
+ Location: 45,27
+ Owner: Outpost
+ Actor6: sbag
+ Location: 39,28
+ Owner: Outpost
+ Actor7: sbag
+ Location: 40,28
+ Owner: Outpost
+ Actor8: sbag
+ Location: 45,28
+ Owner: Outpost
+ Actor9: sbag
+ Location: 39,29
+ Owner: Outpost
+ Actor10: sbag
+ Location: 39,30
+ Owner: Outpost
+ Actor11: sbag
+ Location: 26,31
+ Owner: Outpost
+ Actor12: sbag
+ Location: 27,31
+ Owner: Outpost
+ Actor13: sbag
+ Location: 28,31
+ Owner: Outpost
+ Actor14: brik
+ Location: 87,31
+ Owner: Neutral
+ Actor15: brik
+ Location: 88,31
+ Owner: Neutral
+ Actor16: brik
+ Location: 89,31
+ Owner: Neutral
+ Actor17: brik
+ Location: 90,31
+ Owner: Neutral
+ Actor18: brik
+ Location: 91,31
+ Owner: Neutral
+ Actor19: brik
+ Location: 92,31
+ Owner: Neutral
+ Actor20: brik
+ Location: 93,31
+ Owner: Neutral
+ Actor21: brik
+ Location: 94,31
+ Owner: Neutral
+ Actor22: brik
+ Location: 95,31
+ Owner: Neutral
+ Actor23: brik
+ Location: 96,31
+ Owner: Neutral
+ Actor24: brik
+ Location: 97,31
+ Owner: Neutral
+ Actor25: brik
+ Location: 98,31
+ Owner: Neutral
+ Actor26: brik
+ Location: 99,31
+ Owner: Neutral
+ Actor27: brik
+ Location: 100,31
+ Owner: Neutral
+ Actor28: brik
+ Location: 101,31
+ Owner: Neutral
+ Actor29: brik
+ Location: 102,31
+ Owner: Neutral
+ Actor30: sbag
+ Location: 28,32
+ Owner: Outpost
+ Actor31: brik
+ Location: 87,32
+ Owner: Neutral
+ Actor32: brik
+ Location: 88,32
+ Owner: Neutral
+ Actor33: brik
+ Location: 101,32
+ Owner: Neutral
+ Actor34: brik
+ Location: 102,32
+ Owner: Neutral
+ Actor35: brik
+ Location: 102,33
+ Owner: Neutral
+ Actor36: brik
+ Location: 102,34
+ Owner: Neutral
+ Actor37: brik
+ Location: 73,35
+ Owner: Neutral
+ Actor38: brik
+ Location: 74,35
+ Owner: Neutral
+ Actor39: brik
+ Location: 75,35
+ Owner: Neutral
+ Actor40: brik
+ Location: 76,35
+ Owner: Neutral
+ Actor41: brik
+ Location: 77,35
+ Owner: Neutral
+ Actor42: brik
+ Location: 78,35
+ Owner: Neutral
+ Actor43: brik
+ Location: 102,35
+ Owner: Neutral
+ Actor44: brik
+ Location: 73,36
+ Owner: Neutral
+ Actor45: brik
+ Location: 74,36
+ Owner: Neutral
+ Actor46: brik
+ Location: 77,36
+ Owner: Neutral
+ Actor47: brik
+ Location: 78,36
+ Owner: Neutral
+ Actor48: brik
+ Location: 102,36
+ Owner: Neutral
+ Actor49: brik
+ Location: 73,37
+ Owner: Neutral
+ Actor50: brik
+ Location: 102,37
+ Owner: Neutral
+ Actor51: brik
+ Location: 73,38
+ Owner: Neutral
+ Actor52: brik
+ Location: 102,38
+ Owner: Neutral
+ Actor53: brik
+ Location: 73,39
+ Owner: Neutral
+ Actor54: brik
+ Location: 102,39
+ Owner: Neutral
+ Actor55: brik
+ Location: 73,40
+ Owner: Neutral
+ Actor56: brik
+ Location: 102,40
+ Owner: Neutral
+ Actor57: brik
+ Location: 73,41
+ Owner: Neutral
+ Actor58: brik
+ Location: 101,41
+ Owner: Neutral
+ Actor59: brik
+ Location: 102,41
+ Owner: Neutral
+ Actor60: brik
+ Location: 73,42
+ Owner: Neutral
+ Actor61: brik
+ Location: 101,42
+ Owner: Neutral
+ Actor62: brik
+ Location: 102,42
+ Owner: Neutral
+ Actor63: brik
+ Location: 73,43
+ Owner: Neutral
+ Actor64: brik
+ Location: 73,44
+ Owner: Neutral
+ Actor65: brik
+ Location: 73,45
+ Owner: Neutral
+ Actor66: brik
+ Location: 74,45
+ Owner: Neutral
+ Actor67: brik
+ Location: 81,45
+ Owner: Neutral
+ Actor68: brik
+ Location: 82,45
+ Owner: Neutral
+ Actor69: brik
+ Location: 91,45
+ Owner: Neutral
+ Actor70: brik
+ Location: 92,45
+ Owner: Neutral
+ Actor71: brik
+ Location: 97,45
+ Owner: Neutral
+ Actor72: brik
+ Location: 98,45
+ Owner: Neutral
+ Actor73: v18
+ Location: 53,46
+ Owner: Neutral
+ Actor74: v14
+ Location: 54,46
+ Owner: Neutral
+ Actor75: v16
+ Location: 55,46
+ Owner: Neutral
+ Actor76: brik
+ Location: 73,46
+ Owner: Neutral
+ Actor77: brik
+ Location: 74,46
+ Owner: Neutral
+ Actor78: brik
+ Location: 75,46
+ Owner: Neutral
+ Actor79: brik
+ Location: 76,46
+ Owner: Neutral
+ Actor80: brik
+ Location: 77,46
+ Owner: Neutral
+ Actor81: brik
+ Location: 78,46
+ Owner: Neutral
+ Actor82: brik
+ Location: 79,46
+ Owner: Neutral
+ Actor83: brik
+ Location: 80,46
+ Owner: Neutral
+ Actor84: brik
+ Location: 81,46
+ Owner: Neutral
+ Actor85: brik
+ Location: 82,46
+ Owner: Neutral
+ Actor86: brik
+ Location: 91,46
+ Owner: Neutral
+ Actor87: brik
+ Location: 92,46
+ Owner: Neutral
+ Actor88: brik
+ Location: 93,46
+ Owner: Neutral
+ Actor89: brik
+ Location: 94,46
+ Owner: Neutral
+ Actor90: brik
+ Location: 95,46
+ Owner: Neutral
+ Actor91: brik
+ Location: 96,46
+ Owner: Neutral
+ Actor92: brik
+ Location: 97,46
+ Owner: Neutral
+ Actor93: brik
+ Location: 98,46
+ Owner: Neutral
+ Actor94: cycl
+ Location: 84,49
+ Owner: Neutral
+ Actor95: cycl
+ Location: 90,49
+ Owner: Neutral
+ Actor96: cycl
+ Location: 73,50
+ Owner: Neutral
+ Actor97: cycl
+ Location: 74,50
+ Owner: Neutral
+ Actor98: cycl
+ Location: 75,50
+ Owner: Neutral
+ Actor99: cycl
+ Location: 76,50
+ Owner: Neutral
+ Actor100: cycl
+ Location: 77,50
+ Owner: Neutral
+ Actor101: cycl
+ Location: 78,50
+ Owner: Neutral
+ Actor102: cycl
+ Location: 80,50
+ Owner: Neutral
+ Actor103: cycl
+ Location: 81,50
+ Owner: Neutral
+ Actor104: cycl
+ Location: 82,50
+ Owner: Neutral
+ Actor105: cycl
+ Location: 83,50
+ Owner: Neutral
+ Actor106: cycl
+ Location: 84,50
+ Owner: Neutral
+ Actor107: cycl
+ Location: 90,50
+ Owner: Neutral
+ Actor108: cycl
+ Location: 91,50
+ Owner: Neutral
+ Actor109: cycl
+ Location: 92,50
+ Owner: Neutral
+ Actor110: cycl
+ Location: 94,50
+ Owner: Neutral
+ Actor111: cycl
+ Location: 95,50
+ Owner: Neutral
+ Actor112: cycl
+ Location: 96,50
+ Owner: Neutral
+ Actor113: cycl
+ Location: 97,50
+ Owner: Neutral
+ Actor114: cycl
+ Location: 98,50
+ Owner: Neutral
+ Actor115: cycl
+ Location: 73,51
+ Owner: Neutral
+ Actor116: cycl
+ Location: 98,51
+ Owner: Neutral
+ Actor117: cycl
+ Location: 73,52
+ Owner: Neutral
+ Actor118: cycl
+ Location: 98,52
+ Owner: Neutral
+ Actor119: cycl
+ Location: 73,53
+ Owner: Neutral
+ Actor120: cycl
+ Location: 98,53
+ Owner: Neutral
+ Actor121: cycl
+ Location: 73,54
+ Owner: Neutral
+ Actor122: wood
+ Location: 84,54
+ Owner: Neutral
+ Actor123: wood
+ Location: 85,54
+ Owner: Neutral
+ Actor124: cycl
+ Location: 98,54
+ Owner: Neutral
+ Actor125: wood
+ Location: 81,55
+ Owner: Neutral
+ Actor126: v16
+ Location: 82,55
+ Owner: Neutral
+ Actor127: v15
+ Location: 83,55
+ Owner: Neutral
+ Actor128: v14
+ Location: 84,55
+ Owner: Neutral
+ Actor129: wood
+ Location: 85,55
+ Owner: Neutral
+ Actor130: cycl
+ Location: 98,55
+ Owner: Neutral
+ Actor131: cycl
+ Location: 73,56
+ Owner: Neutral
+ Actor132: wood
+ Location: 81,56
+ Owner: Neutral
+ Actor133: v17
+ Location: 82,56
+ Owner: Neutral
+ Actor134: v18
+ Location: 83,56
+ Owner: Neutral
+ Actor135: cycl
+ Location: 73,57
+ Owner: Neutral
+ Actor136: wood
+ Location: 81,57
+ Owner: Neutral
+ Actor137: wood
+ Location: 82,57
+ Owner: Neutral
+ Actor138: wood
+ Location: 83,57
+ Owner: Neutral
+ Actor139: wood
+ Location: 84,57
+ Owner: Neutral
+ Actor140: wood
+ Location: 85,57
+ Owner: Neutral
+ Actor141: cycl
+ Location: 98,57
+ Owner: Neutral
+ Actor142: cycl
+ Location: 98,58
+ Owner: Neutral
+ Actor143: cycl
+ Location: 25,59
+ Owner: Neutral
+ Actor144: cycl
+ Location: 26,59
+ Owner: Neutral
+ Actor145: cycl
+ Location: 27,59
+ Owner: Neutral
+ Actor146: cycl
+ Location: 28,59
+ Owner: Neutral
+ Actor147: cycl
+ Location: 73,59
+ Owner: Neutral
+ Actor148: cycl
+ Location: 98,59
+ Owner: Neutral
+ Actor149: cycl
+ Location: 25,60
+ Owner: Neutral
+ Actor150: cycl
+ Location: 30,60
+ Owner: Neutral
+ Actor151: cycl
+ Location: 31,60
+ Owner: Neutral
+ Actor152: cycl
+ Location: 73,60
+ Owner: Neutral
+ Actor153: cycl
+ Location: 94,60
+ Owner: Neutral
+ Actor154: cycl
+ Location: 96,60
+ Owner: Neutral
+ Actor155: cycl
+ Location: 98,60
+ Owner: Neutral
+ Actor156: cycl
+ Location: 25,61
+ Owner: Neutral
+ Actor157: cycl
+ Location: 31,61
+ Owner: Neutral
+ Actor158: cycl
+ Location: 73,61
+ Owner: Neutral
+ Actor159: cycl
+ Location: 74,61
+ Owner: Neutral
+ Actor160: cycl
+ Location: 75,61
+ Owner: Neutral
+ Actor161: cycl
+ Location: 76,61
+ Owner: Neutral
+ Actor162: cycl
+ Location: 77,61
+ Owner: Neutral
+ Actor163: cycl
+ Location: 79,61
+ Owner: Neutral
+ Actor164: cycl
+ Location: 80,61
+ Owner: Neutral
+ Actor165: cycl
+ Location: 83,61
+ Owner: Neutral
+ Actor166: cycl
+ Location: 84,61
+ Owner: Neutral
+ Actor167: cycl
+ Location: 85,61
+ Owner: Neutral
+ Actor168: cycl
+ Location: 86,61
+ Owner: Neutral
+ Actor169: cycl
+ Location: 87,61
+ Owner: Neutral
+ Actor170: cycl
+ Location: 89,61
+ Owner: Neutral
+ Actor171: cycl
+ Location: 90,61
+ Owner: Neutral
+ Actor172: cycl
+ Location: 91,61
+ Owner: Neutral
+ Actor173: cycl
+ Location: 92,61
+ Owner: Neutral
+ Actor174: cycl
+ Location: 93,61
+ Owner: Neutral
+ Actor175: cycl
+ Location: 94,61
+ Owner: Neutral
+ Actor176: cycl
+ Location: 96,61
+ Owner: Neutral
+ Actor177: cycl
+ Location: 97,61
+ Owner: Neutral
+ Actor178: cycl
+ Location: 98,61
+ Owner: Neutral
+ Actor179: cycl
+ Location: 25,62
+ Owner: Neutral
+ Actor180: cycl
+ Location: 31,62
+ Owner: Neutral
+ Actor181: cycl
+ Location: 39,62
+ Owner: Neutral
+ Actor182: cycl
+ Location: 40,62
+ Owner: Neutral
+ Actor183: cycl
+ Location: 80,62
+ Owner: Neutral
+ Actor184: cycl
+ Location: 83,62
+ Owner: Neutral
+ Actor185: cycl
+ Location: 25,63
+ Owner: Neutral
+ Actor186: cycl
+ Location: 26,63
+ Owner: Neutral
+ Actor187: cycl
+ Location: 27,63
+ Owner: Neutral
+ Actor188: cycl
+ Location: 28,63
+ Owner: Neutral
+ Actor189: cycl
+ Location: 29,63
+ Owner: Neutral
+ Actor190: cycl
+ Location: 30,63
+ Owner: Neutral
+ Actor191: cycl
+ Location: 31,63
+ Owner: Neutral
+ Actor192: cycl
+ Location: 40,63
+ Owner: Neutral
+ Actor193: cycl
+ Location: 40,64
+ Owner: Neutral
+ Actor194: cycl
+ Location: 34,65
+ Owner: Neutral
+ Actor195: cycl
+ Location: 35,65
+ Owner: Neutral
+ Actor196: cycl
+ Location: 40,65
+ Owner: Neutral
+ Actor197: cycl
+ Location: 34,66
+ Owner: Neutral
+ Actor198: cycl
+ Location: 40,66
+ Owner: Neutral
+ Actor199: cycl
+ Location: 34,67
+ Owner: Neutral
+ Actor200: cycl
+ Location: 35,67
+ Owner: Neutral
+ Actor201: cycl
+ Location: 36,67
+ Owner: Neutral
+ Actor202: cycl
+ Location: 37,67
+ Owner: Neutral
+ Actor203: cycl
+ Location: 38,67
+ Owner: Neutral
+ Actor204: cycl
+ Location: 39,67
+ Owner: Neutral
+ Actor205: cycl
+ Location: 40,67
+ Owner: Neutral
+ Actor206: sbag
+ Location: 25,68
+ Owner: Neutral
+ Actor207: sbag
+ Location: 25,69
+ Owner: Neutral
+ Actor208: sbag
+ Location: 28,69
+ Owner: Neutral
+ Actor209: sbag
+ Location: 23,70
+ Owner: Neutral
+ Actor210: sbag
+ Location: 24,70
+ Owner: Neutral
+ Actor211: sbag
+ Location: 25,70
+ Owner: Neutral
+ Actor212: sbag
+ Location: 28,70
+ Owner: Neutral
+ Actor213: sbag
+ Location: 28,71
+ Owner: Neutral
+ Actor214: sbag
+ Location: 29,71
+ Owner: Neutral
+ Actor215: sbag
+ Location: 30,71
+ Owner: Neutral
+ Actor216: sbag
+ Location: 31,71
+ Owner: Neutral
+ Actor217: brik
+ Location: 61,73
+ Owner: Neutral
+ Actor218: brik
+ Location: 62,73
+ Owner: Neutral
+ Actor219: brik
+ Location: 63,73
+ Owner: Neutral
+ Actor220: brik
+ Location: 64,73
+ Owner: Neutral
+ Actor221: brik
+ Location: 65,73
+ Owner: Neutral
+ Actor222: brik
+ Location: 66,73
+ Owner: Neutral
+ Actor223: brik
+ Location: 67,73
+ Owner: Neutral
+ Actor224: brik
+ Location: 68,73
+ Owner: Neutral
+ Actor225: brik
+ Location: 69,73
+ Owner: Neutral
+ Actor226: brik
+ Location: 70,73
+ Owner: Neutral
+ Actor227: brik
+ Location: 76,73
+ Owner: Neutral
+ Actor228: brik
+ Location: 77,73
+ Owner: Neutral
+ Actor229: brik
+ Location: 78,73
+ Owner: Neutral
+ Actor230: brik
+ Location: 79,73
+ Owner: Neutral
+ Actor231: brik
+ Location: 80,73
+ Owner: Neutral
+ Actor232: brik
+ Location: 81,73
+ Owner: Neutral
+ Actor233: brik
+ Location: 82,73
+ Owner: Neutral
+ Actor234: brik
+ Location: 83,73
+ Owner: Neutral
+ Actor235: brik
+ Location: 84,73
+ Owner: Neutral
+ Actor236: brik
+ Location: 85,73
+ Owner: Neutral
+ Actor237: brik
+ Location: 91,73
+ Owner: Neutral
+ Actor238: brik
+ Location: 92,73
+ Owner: Neutral
+ Actor239: brik
+ Location: 61,74
+ Owner: Neutral
+ Actor240: brik
+ Location: 62,74
+ Owner: Neutral
+ Actor241: brik
+ Location: 69,74
+ Owner: Neutral
+ Actor242: brik
+ Location: 70,74
+ Owner: Neutral
+ Actor243: brik
+ Location: 76,74
+ Owner: Neutral
+ Actor244: brik
+ Location: 77,74
+ Owner: Neutral
+ Actor245: brik
+ Location: 84,74
+ Owner: Neutral
+ Actor246: brik
+ Location: 85,74
+ Owner: Neutral
+ Actor247: brik
+ Location: 91,74
+ Owner: Neutral
+ Actor248: brik
+ Location: 92,74
+ Owner: Neutral
+ Actor249: brik
+ Location: 61,75
+ Owner: Neutral
+ Actor250: brik
+ Location: 92,75
+ Owner: Neutral
+ Actor251: brik
+ Location: 61,76
+ Owner: Neutral
+ Actor252: brik
+ Location: 92,76
+ Owner: Neutral
+ Actor253: brik
+ Location: 61,77
+ Owner: Neutral
+ Actor254: brik
+ Location: 62,77
+ Owner: Neutral
+ Actor255: brik
+ Location: 92,77
+ Owner: Neutral
+ Actor256: brik
+ Location: 61,78
+ Owner: Neutral
+ Actor257: brik
+ Location: 62,78
+ Owner: Neutral
+ Actor258: sbag
+ Location: 77,78
+ Owner: Neutral
+ Actor259: sbag
+ Location: 78,78
+ Owner: Neutral
+ Actor260: sbag
+ Location: 79,78
+ Owner: Neutral
+ Actor261: brik
+ Location: 92,78
+ Owner: Neutral
+ Actor262: sbag
+ Location: 77,79
+ Owner: Neutral
+ Actor263: sbag
+ Location: 79,79
+ Owner: Neutral
+ Actor264: brik
+ Location: 92,79
+ Owner: Neutral
+ Actor265: sbag
+ Location: 77,80
+ Owner: Neutral
+ Actor266: sbag
+ Location: 78,80
+ Owner: Neutral
+ Actor267: sbag
+ Location: 79,80
+ Owner: Neutral
+ Actor268: brik
+ Location: 92,80
+ Owner: Neutral
+ Actor269: brik
+ Location: 92,81
+ Owner: Neutral
+ Actor270: brik
+ Location: 92,82
+ Owner: Neutral
+ Actor271: brik
+ Location: 92,83
+ Owner: Neutral
+ Actor272: brik
+ Location: 92,84
+ Owner: Neutral
+ Actor273: brik
+ Location: 61,85
+ Owner: Neutral
+ Actor274: brik
+ Location: 62,85
+ Owner: Neutral
+ Actor275: brik
+ Location: 92,85
+ Owner: Neutral
+ Actor276: brik
+ Location: 61,86
+ Owner: Neutral
+ Actor277: brik
+ Location: 62,86
+ Owner: Neutral
+ Actor278: sbag
+ Location: 77,86
+ Owner: Neutral
+ Actor279: sbag
+ Location: 78,86
+ Owner: Neutral
+ Actor280: sbag
+ Location: 79,86
+ Owner: Neutral
+ Actor281: brik
+ Location: 92,86
+ Owner: Neutral
+ Actor282: brik
+ Location: 61,87
+ Owner: Neutral
+ Actor283: sbag
+ Location: 77,87
+ Owner: Neutral
+ Actor284: sbag
+ Location: 79,87
+ Owner: Neutral
+ Actor285: brik
+ Location: 92,87
+ Owner: Neutral
+ Actor286: brik
+ Location: 61,88
+ Owner: Neutral
+ Actor287: sbag
+ Location: 77,88
+ Owner: Neutral
+ Actor288: sbag
+ Location: 78,88
+ Owner: Neutral
+ Actor289: sbag
+ Location: 79,88
+ Owner: Neutral
+ Actor290: brik
+ Location: 92,88
+ Owner: Neutral
+ Actor291: brik
+ Location: 61,89
+ Owner: Neutral
+ Actor292: brik
+ Location: 92,89
+ Owner: Neutral
+ Actor293: brik
+ Location: 61,90
+ Owner: Neutral
+ Actor294: brik
+ Location: 62,90
+ Owner: Neutral
+ Actor295: brik
+ Location: 91,90
+ Owner: Neutral
+ Actor296: brik
+ Location: 92,90
+ Owner: Neutral
+ Actor297: brik
+ Location: 61,91
+ Owner: Neutral
+ Actor298: brik
+ Location: 62,91
+ Owner: Neutral
+ Actor299: brik
+ Location: 63,91
+ Owner: Neutral
+ Actor300: brik
+ Location: 64,91
+ Owner: Neutral
+ Actor301: brik
+ Location: 65,91
+ Owner: Neutral
+ Actor302: brik
+ Location: 66,91
+ Owner: Neutral
+ Actor303: brik
+ Location: 67,91
+ Owner: Neutral
+ Actor304: brik
+ Location: 68,91
+ Owner: Neutral
+ Actor305: brik
+ Location: 69,91
+ Owner: Neutral
+ Actor306: brik
+ Location: 70,91
+ Owner: Neutral
+ Actor307: brik
+ Location: 71,91
+ Owner: Neutral
+ Actor308: brik
+ Location: 72,91
+ Owner: Neutral
+ Actor309: brik
+ Location: 73,91
+ Owner: Neutral
+ Actor310: brik
+ Location: 74,91
+ Owner: Neutral
+ Actor311: brik
+ Location: 75,91
+ Owner: Neutral
+ Actor312: brik
+ Location: 76,91
+ Owner: Neutral
+ Actor313: brik
+ Location: 77,91
+ Owner: Neutral
+ Actor314: brik
+ Location: 78,91
+ Owner: Neutral
+ Actor315: brik
+ Location: 79,91
+ Owner: Neutral
+ Actor316: brik
+ Location: 80,91
+ Owner: Neutral
+ Actor317: brik
+ Location: 81,91
+ Owner: Neutral
+ Actor318: brik
+ Location: 82,91
+ Owner: Neutral
+ Actor319: brik
+ Location: 83,91
+ Owner: Neutral
+ Actor320: brik
+ Location: 84,91
+ Owner: Neutral
+ Actor321: brik
+ Location: 85,91
+ Owner: Neutral
+ Actor322: brik
+ Location: 86,91
+ Owner: Neutral
+ Actor323: brik
+ Location: 87,91
+ Owner: Neutral
+ Actor324: brik
+ Location: 88,91
+ Owner: Neutral
+ Actor325: brik
+ Location: 89,91
+ Owner: Neutral
+ Actor326: brik
+ Location: 90,91
+ Owner: Neutral
+ Actor327: brik
+ Location: 91,91
+ Owner: Neutral
+ Actor328: brik
+ Location: 92,91
+ Owner: Neutral
+ Actor329: wood
+ Location: 32,96
+ Owner: Neutral
+ Actor330: v14
+ Location: 30,97
+ Owner: Neutral
+ Actor331: wood
+ Location: 32,97
+ Owner: Neutral
+ Actor332: v17
+ Location: 30,98
+ Owner: Neutral
+ Actor333: v15
+ Location: 31,98
+ Owner: Neutral
+ Actor334: wood
+ Location: 32,98
+ Owner: Neutral
+ Actor335: wood
+ Location: 31,99
+ Owner: Neutral
+ Actor336: wood
+ Location: 32,99
+ Owner: Neutral
+ Actor337: v16
+ Location: 40,101
+ Owner: Neutral
+ Actor338: v18
+ Location: 38,102
+ Owner: Neutral
+ Actor339: v17
+ Location: 39,102
+ Owner: Neutral
+ Actor340: v14
+ Location: 40,102
+ Owner: Neutral
+ Actor341: wood
+ Location: 36,103
+ Owner: Neutral
+ Actor342: wood
+ Location: 37,103
+ Owner: Neutral
+ Actor343: wood
+ Location: 38,103
+ Owner: Neutral
+ Actor344: wood
+ Location: 39,103
+ Owner: Neutral
+ Actor345: tc04
+ Location: 24,19
+ Owner: Neutral
+ Actor346: tc01
+ Location: 23,22
+ Owner: Neutral
+ Actor347: tc02
+ Location: 28,23
+ Owner: Neutral
+ Actor348: tc05
+ Location: 35,21
+ Owner: Neutral
+ Actor349: tc04
+ Location: 32,19
+ Owner: Neutral
+ Actor350: tc03
+ Location: 38,17
+ Owner: Neutral
+ Actor351: t07
+ Location: 22,24
+ Owner: Neutral
+ Actor352: t07
+ Location: 43,23
+ Owner: Neutral
+ Actor353: t06
+ Location: 27,19
+ Owner: Neutral
+ Actor354: t05
+ Location: 26,24
+ Owner: Neutral
+ Actor355: t01
+ Location: 45,21
+ Owner: Neutral
+ Actor356: tc05
+ Location: 98,28
+ Owner: Neutral
+ Actor357: tc02
+ Location: 95,29
+ Owner: Neutral
+ Actor358: tc01
+ Location: 76,33
+ Owner: Neutral
+ Actor359: tc03
+ Location: 102,28
+ Owner: Neutral
+ Actor360: tc04
+ Location: 103,25
+ Owner: Neutral
+ Actor361: tc04
+ Location: 103,41
+ Owner: Neutral
+ Actor362: tc01
+ Location: 101,42
+ Owner: Neutral
+ Actor363: tc04
+ Location: 63,21
+ Owner: Neutral
+ Actor364: tc05
+ Location: 78,19
+ Owner: Neutral
+ Actor365: tc03
+ Location: 79,22
+ Owner: Neutral
+ Actor366: tc02
+ Location: 70,31
+ Owner: Neutral
+ Actor367: tc05
+ Location: 70,59
+ Owner: Neutral
+ Actor368: tc01
+ Location: 71,56
+ Owner: Neutral
+ Actor369: tc01
+ Location: 84,61
+ Owner: Neutral
+ Actor370: tc04
+ Location: 87,63
+ Owner: Neutral
+ Actor371: tc04
+ Location: 67,37
+ Owner: Neutral
+ Actor372: tc04
+ Location: 22,80
+ Owner: Neutral
+ Actor373: tc02
+ Location: 37,50
+ Owner: Neutral
+ Actor374: tc02
+ Location: 40,67
+ Owner: Neutral
+ Actor375: tc04
+ Location: 37,68
+ Owner: Neutral
+ Actor376: tc05
+ Location: 22,59
+ Owner: Neutral
+ Actor377: tc01
+ Location: 26,63
+ Owner: Neutral
+ Actor378: t07
+ Location: 26,59
+ Owner: Neutral
+ Actor379: t06
+ Location: 39,65
+ Owner: Neutral
+ Actor380: tc02
+ Location: 22,68
+ Owner: Neutral
+ Actor381: tc01
+ Location: 24,71
+ Owner: Neutral
+ Actor382: t01
+ Location: 31,33
+ Owner: Neutral
+ Actor383: tc05
+ Location: 34,46
+ Owner: Neutral
+ Actor384: tc04
+ Location: 37,45
+ Owner: Neutral
+ Actor385: tc02
+ Location: 39,41
+ Owner: Neutral
+ Actor386: tc01
+ Location: 38,39
+ Owner: Neutral
+ Actor387: mine
+ Location: 49,83
+ Owner: Neutral
+ Actor388: mine
+ Location: 44,79
+ Owner: Neutral
+ Actor389: tc05
+ Location: 28,82
+ Owner: Neutral
+ Actor390: tc05
+ Location: 21,97
+ Owner: Neutral
+ Actor391: tc04
+ Location: 25,99
+ Owner: Neutral
+ Actor392: tc02
+ Location: 21,100
+ Owner: Neutral
+ Actor393: tc01
+ Location: 31,94
+ Owner: Neutral
+ Actor394: tc04
+ Location: 38,95
+ Owner: Neutral
+ Actor395: tc05
+ Location: 44,101
+ Owner: Neutral
+ Actor396: tc02
+ Location: 40,102
+ Owner: Neutral
+ Actor397: tc01
+ Location: 36,101
+ Owner: Neutral
+ Actor398: t15
+ Location: 29,94
+ Owner: Neutral
+ Actor399: tc05
+ Location: 54,41
+ Owner: Neutral
+ Actor400: tc03
+ Location: 50,35
+ Owner: Neutral
+ Actor401: tc02
+ Location: 51,37
+ Owner: Neutral
+ Actor402: tc01
+ Location: 53,39
+ Owner: Neutral
+ Actor403: tc01
+ Location: 57,42
+ Owner: Neutral
+ Actor404: t17
+ Location: 59,42
+ Owner: Neutral
+ Actor405: t13
+ Location: 55,39
+ Owner: Neutral
+ Actor406: tc04
+ Location: 49,41
+ Owner: Neutral
+ Actor407: tc01
+ Location: 41,48
+ Owner: Neutral
+ Actor408: tc05
+ Location: 51,47
+ Owner: Neutral
+ Actor409: t08
+ Location: 46,50
+ Owner: Neutral
+ Actor410: t07
+ Location: 39,49
+ Owner: Neutral
+ Actor411: t07
+ Location: 43,41
+ Owner: Neutral
+ Actor412: tc04
+ Location: 48,52
+ Owner: Neutral
+ Actor413: tc02
+ Location: 46,54
+ Owner: Neutral
+ Actor414: tc04
+ Location: 75,50
+ Owner: Neutral
+ Actor415: tc05
+ Location: 95,53
+ Owner: Neutral
+ Actor416: tc01
+ Location: 76,59
+ Owner: Neutral
+ Actor417: tc02
+ Location: 80,53
+ Owner: Neutral
+ Actor418: t01
+ Location: 75,57
+ Owner: Neutral
+ Actor419: t02
+ Location: 79,51
+ Owner: Neutral
+ Actor420: t03
+ Location: 91,58
+ Owner: Neutral
+ Actor421: tc04
+ Location: 86,27
+ Owner: Neutral
+ Actor422: tc02
+ Location: 89,27
+ Owner: Neutral
+ Actor423: tc01
+ Location: 91,26
+ Owner: Neutral
+ Actor424: weap
+ Location: 38,19
+ Owner: Outpost
+ Health: 37
+ Actor425: pbox
+ Location: 22,27
+ Owner: Outpost
+ Health: 28
+ Actor426: pbox
+ Location: 44,27
+ Owner: Outpost
+ Health: 35
+ Actor427: pbox
+ Location: 40,29
+ Owner: Outpost
+ Health: 37
+ Actor428: dome
+ Location: 35,19
+ Owner: Outpost
+ Health: 35
+ Actor429: gun
+ Location: 45,25
+ Owner: Outpost
+ Health: 31
+ Facing: 96
+ Actor430: gun
+ Location: 29,30
+ Owner: Outpost
+ Health: 19
+ Facing: 32
+ Actor431: gun
+ Location: 38,29
+ Owner: Outpost
+ Health: 39
+ Facing: 96
+ Actor432: tent
+ Location: 33,22
+ Owner: Outpost
+ Health: 50
+ Actor433: fix
+ Location: 32,28
+ Owner: Outpost
+ Health: 31
+ Actor434: ftur
+ Location: 78,34
+ Owner: BadGuy
+ Actor435: silo
+ Location: 76,38
+ Owner: BadGuy
+ Actor436: silo
+ Location: 75,38
+ Owner: BadGuy
+ Actor437: silo
+ Location: 75,37
+ Owner: BadGuy
+ Actor438: silo
+ Location: 76,37
+ Owner: BadGuy
+ Actor439: apwr
+ Location: 98,33
+ Owner: BadGuy
+ Actor440: apwr
+ Location: 94,35
+ Owner: BadGuy
+ Actor441: barr
+ Location: 97,40
+ Owner: BadGuy
+ Actor442: miss
+ Location: 86,33
+ Owner: BadGuy
+ Actor444: ftur
+ Location: 91,47
+ Owner: BadGuy
+ Actor445: ftur
+ Location: 82,47
+ Owner: BadGuy
+ Actor446: ftur
+ Location: 86,31
+ Owner: BadGuy
+ Actor447: tsla
+ Location: 93,45
+ Owner: BadGuy
+ Actor448: tsla
+ Location: 80,45
+ Owner: BadGuy
+ Actor449: apwr
+ Location: 95,32
+ Owner: BadGuy
+ Actor450: spen
+ Location: 102,47
+ Owner: BadGuy
+ Health: 88
+ Actor451: fact
+ Location: 88,87
+ Owner: USSR
+ Actor452: proc
+ Location: 68,81
+ Owner: USSR
+ Actor453: silo
+ Location: 65,87
+ Owner: USSR
+ Actor454: silo
+ Location: 66,88
+ Owner: USSR
+ Actor455: silo
+ Location: 66,87
+ Owner: USSR
+ Actor456: silo
+ Location: 65,88
+ Owner: USSR
+ Actor457: sam
+ Location: 63,74
+ Owner: USSR
+ Actor458: sam
+ Location: 80,74
+ Owner: USSR
+ Actor459: apwr
+ Location: 73,85
+ Owner: USSR
+ Actor460: apwr
+ Location: 89,76
+ Owner: USSR
+ Actor461: apwr
+ Location: 69,87
+ Owner: USSR
+ Actor462: apwr
+ Location: 86,77
+ Owner: USSR
+ Actor463: barr
+ Location: 66,76
+ Owner: USSR
+ Actor464: kenn
+ Location: 91,86
+ Owner: USSR
+ Actor465: tsla
+ Location: 78,74
+ Owner: USSR
+ Actor466: tsla
+ Location: 83,74
+ Owner: USSR
+ Actor467: tsla
+ Location: 62,76
+ Owner: USSR
+ Actor468: tsla
+ Location: 62,87
+ Owner: USSR
+ Actor469: weap
+ Location: 81,82
+ Owner: USSR
+ Actor470: ftur
+ Location: 69,72
+ Owner: USSR
+ Actor471: ftur
+ Location: 77,72
+ Owner: USSR
+ Actor472: ftur
+ Location: 60,78
+ Owner: USSR
+ Actor473: ftur
+ Location: 60,85
+ Owner: USSR
+ Actor474: ftur
+ Location: 85,72
+ Owner: USSR
+ Actor475: ftur
+ Location: 78,79
+ Owner: USSR
+ Actor476: ftur
+ Location: 78,87
+ Owner: USSR
+ Actor477: apwr
+ Location: 89,79
+ Owner: USSR
+ Actor480: powr
+ Location: 34,61
+ Owner: BadGuy
+ Actor481: v19
+ Location: 27,60
+ Owner: BadGuy
+ Actor482: v19
+ Location: 29,61
+ Owner: BadGuy
+ Actor483: v19
+ Location: 27,61
+ Owner: BadGuy
+ Actor484: v19
+ Location: 38,65
+ Owner: BadGuy
+ Actor485: v19
+ Location: 36,65
+ Owner: BadGuy
+ Actor486: v19
+ Location: 38,64
+ Owner: BadGuy
+ Actor487: barl
+ Location: 26,61
+ Owner: USSR
+ Actor488: brl3
+ Location: 26,62
+ Owner: USSR
+ Actor489: brl3
+ Location: 37,65
+ Owner: USSR
+ Actor491: brl3
+ Location: 28,62
+ Owner: USSR
+ Actor493: brl3
+ Location: 30,61
+ Owner: USSR
+ Actor494: barl
+ Location: 27,62
+ Owner: USSR
+ Actor495: barl
+ Location: 28,61
+ Owner: USSR
+ Actor496: barl
+ Location: 29,62
+ Owner: USSR
+ Actor497: barl
+ Location: 39,64
+ Owner: USSR
+ Actor498: barl
+ Location: 35,66
+ Owner: USSR
+ Actor499: barl
+ Location: 37,64
+ Owner: USSR
+ Actor500: barl
+ Location: 39,65
+ Owner: USSR
+ Actor501: barl
+ Location: 39,63
+ Owner: USSR
+ Actor504: brl3
+ Location: 37,66
+ Owner: BadGuy
+ Actor505: barl
+ Location: 36,66
+ Owner: BadGuy
+ Actor506: barl
+ Location: 38,66
+ Owner: BadGuy
+ Actor508: silo
+ Location: 36,18
+ Owner: Outpost
+ Health: 59
+ Actor509: silo
+ Location: 37,18
+ Owner: Outpost
+ Health: 8
+ Actor510: silo
+ Location: 37,19
+ Owner: Outpost
+ Health: 33
+ Actor511: apwr
+ Location: 26,21
+ Owner: Outpost
+ Health: 25
+ Actor512: apwr
+ Location: 23,24
+ Owner: Outpost
+ Health: 14
+ Actor515: v02
+ Location: 23,99
+ Owner: Neutral
+ Actor516: v03
+ Location: 36,96
+ Owner: Neutral
+ Actor517: v05
+ Location: 21,102
+ Owner: Neutral
+ Actor518: v06
+ Location: 30,96
+ Owner: Neutral
+ Actor519: v06
+ Location: 38,101
+ Owner: Neutral
+ Actor520: v07
+ Location: 43,103
+ Owner: Neutral
+ Actor521: v08
+ Location: 21,99
+ Owner: Neutral
+ Actor522: apwr
+ Location: 72,88
+ Owner: USSR
+ Actor523: v02
+ Location: 42,47
+ Owner: Neutral
+ Actor524: v03
+ Location: 50,43
+ Owner: Neutral
+ Actor525: v04
+ Location: 42,39
+ Owner: Neutral
+ Actor526: v05
+ Location: 39,51
+ Owner: Neutral
+ Actor527: v06
+ Location: 52,45
+ Owner: Neutral
+ Actor528: v07
+ Location: 47,50
+ Owner: Neutral
+ Actor529: v08
+ Location: 45,52
+ Owner: Neutral
+ Actor530: v09
+ Location: 46,49
+ Owner: Neutral
+ Actor531: v01.exploding
+ Location: 76,52
+ Owner: Ukraine
+ Actor532: v02.exploding
+ Location: 76,58
+ Owner: Ukraine
+ Actor533: v03.exploding
+ Location: 89,53
+ Owner: Ukraine
+ Actor534: v04.exploding
+ Location: 91,59
+ Owner: Ukraine
+ Actor536: v06.exploding
+ Location: 82,54
+ Owner: Ukraine
+ Actor537: v07.exploding
+ Location: 78,60
+ Owner: Ukraine
+ Actor538: v08.exploding
+ Location: 96,53
+ Owner: Ukraine
+ Actor539: v09.exploding
+ Location: 97,52
+ Owner: Ukraine
+ Actor540: v19
+ Location: 74,55
+ Owner: Ukraine
+ Actor541: v19
+ Location: 75,55
+ Owner: Ukraine
+ Actor542: v19
+ Location: 97,60
+ Owner: Ukraine
+ Actor443: v19
+ Location: 84,56
+ Owner: Ukraine
+ Actor544: barl
+ Location: 78,59
+ Owner: Ukraine
+ Actor545: brl3
+ Location: 75,59
+ Owner: Ukraine
+ Actor546: brl3
+ Location: 78,52
+ Owner: Ukraine
+ Actor547: barl
+ Location: 96,52
+ Owner: Ukraine
+ Actor548: brl3
+ Location: 93,60
+ Owner: Ukraine
+ Actor549: barl
+ Location: 93,59
+ Owner: Ukraine
+ Actor550: brl3
+ Location: 92,59
+ Owner: Ukraine
+ Actor551: brl3
+ Location: 73,55
+ Owner: Ukraine
+ Actor552: barl
+ Location: 74,54
+ Owner: Ukraine
+ Actor553: brl3
+ Location: 75,53
+ Owner: Ukraine
+ Actor554: brl3
+ Location: 93,50
+ Owner: Ukraine
+ Actor555: barl
+ Location: 94,51
+ Owner: Ukraine
+ Actor556: brl3
+ Location: 95,51
+ Owner: Ukraine
+ Actor557: brl3
+ Location: 88,61
+ Owner: Ukraine
+ Actor558: barl
+ Location: 89,60
+ Owner: Ukraine
+ Actor559: barl
+ Location: 90,60
+ Owner: Ukraine
+ Actor560: barl
+ Location: 91,58
+ Owner: Ukraine
+ Actor561: barl
+ Location: 80,60
+ Owner: Ukraine
+ Actor562: barl
+ Location: 75,60
+ Owner: Ukraine
+ Actor563: barl
+ Location: 78,61
+ Owner: Ukraine
+ Actor564: brl3
+ Location: 80,55
+ Owner: Ukraine
+ Actor565: brl3
+ Location: 79,54
+ Owner: Ukraine
+ Actor566: brl3
+ Location: 79,53
+ Owner: Ukraine
+ Actor567: brl3
+ Location: 80,53
+ Owner: Ukraine
+ Actor569: brl3
+ Location: 82,53
+ Owner: Ukraine
+ Actor570: brl3
+ Location: 73,58
+ Owner: Ukraine
+ Actor571: barl
+ Location: 74,58
+ Owner: Ukraine
+ Actor572: barl
+ Location: 79,50
+ Owner: Ukraine
+ Actor573: brl3
+ Location: 79,51
+ Owner: Ukraine
+ Actor574: brl3
+ Location: 98,56
+ Owner: Ukraine
+ Actor575: barl
+ Location: 97,57
+ Owner: Ukraine
+ Actor576: brl3
+ Location: 97,58
+ Owner: Ukraine
+ Actor577: brl3
+ Location: 97,59
+ Owner: Ukraine
+ Actor578: brl3
+ Location: 85,56
+ Owner: Ukraine
+ Actor579: barl
+ Location: 86,56
+ Owner: Ukraine
+ Actor580: brl3
+ Location: 87,57
+ Owner: Ukraine
+ Actor581: barl
+ Location: 88,58
+ Owner: Ukraine
+ Actor582: barl
+ Location: 87,55
+ Owner: Ukraine
+ Actor583: barl
+ Location: 88,54
+ Owner: Ukraine
+ Actor588: v2rl
+ Location: 91,75
+ Owner: USSR
+ Facing: 32
+ Actor589: v2rl
+ Location: 91,89
+ Owner: USSR
+ Facing: 32
+ Actor590: badtruk
+ Location: 89,34
+ Owner: BadGuy
+ Facing: 32
+ Actor591: badtruk
+ Location: 90,35
+ Owner: BadGuy
+ Facing: 96
+ Actor592: badtruk
+ Location: 89,36
+ Owner: BadGuy
+ Actor593: v2rl
+ Location: 32,48
+ Owner: BadGuy
+ Facing: 160
+ Actor594: 3tnk
+ Location: 85,86
+ Owner: USSR
+ Actor595: v2rl
+ Location: 86,86
+ Owner: USSR
+ Actor596: dtrk
+ Location: 74,81
+ Owner: USSR
+ Actor597: dtrk
+ Location: 77,83
+ Owner: USSR
+ Actor598: ttnk
+ Location: 55,61
+ Owner: USSR
+ Actor599: bad3tnk
+ Location: 76,27
+ Owner: BadGuy
+ Facing: 224
+ Actor600: dtrk
+ Location: 86,83
+ Owner: USSR
+ Actor601: e1
+ Location: 24,71
+ Owner: BadGuy
+ Facing: 96
+ SubCell: 2
+ Actor602: e1
+ Location: 25,71
+ Owner: BadGuy
+ Facing: 96
+ SubCell: 2
+ Actor603: e1
+ Location: 28,72
+ Owner: BadGuy
+ Facing: 192
+ SubCell: 1
+ Actor604: e1
+ Location: 29,72
+ Owner: BadGuy
+ SubCell: 1
+ Actor605: e2
+ Location: 29,70
+ Owner: BadGuy
+ Facing: 160
+ SubCell: 4
+ Actor606: e2
+ Location: 24,69
+ Owner: BadGuy
+ Facing: 160
+ SubCell: 4
+ Actor607: e1
+ Location: 81,88
+ Owner: USSR
+ SubCell: 1
+ Actor608: e1
+ Location: 81,88
+ Owner: USSR
+ SubCell: 2
+ Actor609: e1
+ Location: 82,88
+ Owner: USSR
+ SubCell: 1
+ Actor610: e1
+ Location: 81,88
+ Owner: USSR
+ SubCell: 0
+ Actor611: e1
+ Location: 81,88
+ Owner: USSR
+ SubCell: 4
+ Actor612: e3
+ Location: 83,89
+ Owner: USSR
+ SubCell: 0
+ Actor613: e3
+ Location: 83,89
+ Owner: USSR
+ SubCell: 2
+ Actor614: e3
+ Location: 84,89
+ Owner: USSR
+ SubCell: 1
+ Actor615: e4
+ Location: 85,89
+ Owner: USSR
+ SubCell: 2
+ Actor616: e4
+ Location: 85,89
+ Owner: USSR
+ SubCell: 3
+ Actor617: e4
+ Location: 85,90
+ Owner: USSR
+ SubCell: 2
+ Actor618: e1
+ Location: 61,23
+ Owner: BadGuy
+ Facing: 160
+ SubCell: 0
+ Actor619: e1
+ Location: 74,26
+ Owner: BadGuy
+ SubCell: 1
+ Actor620: e1
+ Location: 75,25
+ Owner: BadGuy
+ SubCell: 4
+ Actor621: e2
+ Location: 78,19
+ Owner: BadGuy
+ Facing: 192
+ SubCell: 0
+ Actor622: e2
+ Location: 79,19
+ Owner: BadGuy
+ Facing: 192
+ SubCell: 3
+ Actor623: dog
+ Location: 61,24
+ Owner: BadGuy
+ Facing: 160
+ SubCell: 2
+ Actor624: dog
+ Location: 60,24
+ Owner: BadGuy
+ Facing: 160
+ SubCell: 2
+ Actor625: dog
+ Location: 74,25
+ Owner: BadGuy
+ Facing: 224
+ SubCell: 2
+ Actor507: v11.exploding
+ Location: 97,56
+ Owner: Ukraine
+ Actor513: brl3
+ Location: 85,56
+ Owner: Ukraine
+ Actor514: brl3
+ Location: 97,59
+ Owner: Ukraine
+ Actor626: camera
+ Location: 32,56
+ Owner: USSR
+ UkraineBarrel: brl3
+ Location: 81,52
+ Owner: Ukraine
+ UkraineBuilding: v05.exploding
+ Location: 82,51
+ Owner: Ukraine
+ SuperTankDome: dome.NoInfiltrate
+ Location: 90,32
+ Owner: BadGuy
+ USSRSpen: spen
+ Location: 32,56
+ Owner: BadGuy
+ Health: 69
+ USSROutpostSilo: silo
+ Location: 37,61
+ Owner: BadGuy
+ ExplosiveBarrel1: brl3
+ Location: 38,62
+ Owner: USSR
+ ExplosiveBarrel2: brl3
+ Location: 28,60
+ Owner: USSR
+ FlameTurret1: ftur
+ Location: 30,64
+ Owner: BadGuy
+ FlameTurret2: ftur
+ Location: 33,66
+ Owner: BadGuy
+ AlliedBaseProc: proc
+ Location: 27,25
+ Owner: Outpost
+ Health: 35
+ FreeActor: False
+ AlliedBaseHarv: harv
+ Location: 30,26
+ Owner: Neutral
+ Hospital: hosp
+ Location: 43,43
+ Owner: Neutral
+ DemitriChurch: v01
+ Location: 28,99
+ Owner: Neutral
+ stnk1: 5tnk
+ Location: 89,59
+ Owner: Turkey
+ TurretFacing: 192
+ stnk2: 5tnk
+ Location: 77,57
+ Owner: Turkey
+ TurretFacing: 92
+ stnk3: 5tnk
+ Location: 94,53
+ Owner: Turkey
+ TurretFacing: 192
+ DemitriLZ: waypoint
+ Location: 30,21
+ Owner: Neutral
+ StartEntryPoint: waypoint
+ Location: 19,91
+ Owner: Neutral
+ DemitriChurchSpawnPoint: waypoint
+ Location: 29,100
+ Owner: Neutral
+ StartMovePoint: waypoint
+ Location: 25,81
+ Owner: Neutral
+ StartBridgeEndPoint: waypoint
+ Location: 25,85
+ Owner: Neutral
+ AlliedBaseTopLeft: waypoint
+ Location: 19,16
+ Owner: Neutral
+ HospitalCivilianSpawnPoint: waypoint
+ Location: 44,43
+ Owner: Neutral
+ HospitalSuperTankPoint: waypoint
+ Location: 47,46
+ Owner: Neutral
+ ProvingGroundsCameraPoint: waypoint
+ Location: 85,55
+ Owner: Neutral
+ AlliedBaseBottomRight: waypoint
+ Location: 45,32
+ Owner: Neutral
+ AlliedBaseMovePoint: waypoint
+ Location: 43,20
+ Owner: Neutral
+ DemitriTriggerAreaCenter: waypoint
+ Location: 30,101
+ Owner: Neutral
+ AlliedBaseEntryPoint: waypoint
+ Location: 42,16
+ Owner: Neutral
+ AlliedBaseEntryRight: waypoint
+ Location: 29,32
+ Owner: Neutral
+ AlliedBaseEntryLeft: waypoint
+ Location: 19,33
+ Owner: Neutral
+ SuperTankHuntWaypoint1: waypoint
+ Location: 96,35
+ Owner: Neutral
+ SuperTankHuntWaypoint2: waypoint
+ Location: 78,31
+ Owner: Neutral
+ SuperTankHuntWaypoint3: waypoint
+ Location: 84,84
+ Owner: Neutral
+ SuperTankHuntWaypoint4: waypoint
+ Location: 65,78
+ Owner: Neutral
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
+
+Weapons: weapons.yaml
+
+Voices: voices.yaml
diff --git a/mods/ura/maps/monster-tank-madness/monster-tank-madness.lua b/mods/ura/maps/monster-tank-madness/monster-tank-madness.lua
new file mode 100644
index 0000000..d0d34e6
--- /dev/null
+++ b/mods/ura/maps/monster-tank-madness/monster-tank-madness.lua
@@ -0,0 +1,446 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+AlliedUnits =
+{
+ { delay = 0, types = { "1tnk", "1tnk", "2tnk", "2tnk" } },
+ { delay = DateTime.Seconds(3), types = { "e1", "e1", "e1", "e3", "e3" } },
+ { delay = DateTime.Seconds(7), types = { "e6" } }
+}
+ReinforceBaseUnits = { "1tnk", "1tnk", "2tnk", "arty", "arty" }
+CivilianEvacuees = { "c1", "c2", "c5", "c7", "c8" }
+USSROutpostFlameTurrets = { FlameTurret1, FlameTurret2 }
+ExplosiveBarrels = { ExplosiveBarrel1, ExplosiveBarrel2 }
+SuperTanks = { stnk1, stnk2, stnk3 }
+SuperTankMoveWaypoints = { HospitalSuperTankPoint, AlliedBaseBottomRight, DemitriTriggerAreaCenter, DemitriLZ }
+SuperTankMove = 1
+SuperTankHuntWaypoints = { SuperTankHuntWaypoint1, SuperTankHuntWaypoint2, SuperTankHuntWaypoint3, SuperTankHuntWaypoint4 }
+SuperTankHunt = 1
+SuperTankHuntCounter = 1
+ExtractionHeli = "tran"
+ExtractionWaypoint = CPos.New(DemitriLZ.Location.X, 19)
+ExtractionLZ = DemitriLZ.Location
+BeachTrigger = { CPos.New(19, 44), CPos.New(20, 44), CPos.New(21, 44), CPos.New(22, 44), CPos.New(22, 45), CPos.New(23, 45), CPos.New(22, 44), CPos.New(24, 45), CPos.New(24, 46), CPos.New(24, 47), CPos.New(25, 47), CPos.New(25, 48) }
+DemitriAreaTrigger = { CPos.New(32, 98), CPos.New(32, 99), CPos.New(33, 99), CPos.New(33, 100), CPos.New(33, 101), CPos.New(33, 102), CPos.New(32, 102), CPos.New(32, 103) }
+HospitalAreaTrigger = { CPos.New(43, 41), CPos.New(44, 41), CPos.New(45, 41), CPos.New(46, 41), CPos.New(46, 42), CPos.New(46, 43), CPos.New(46, 44), CPos.New(46, 45), CPos.New(46, 46), CPos.New(45, 46), CPos.New(44, 46), CPos.New(43, 46) }
+
+
+EvacuateCivilians = function()
+ local evacuees = Reinforcements.Reinforce(neutral, CivilianEvacuees, { HospitalCivilianSpawnPoint.Location }, 0)
+
+ Trigger.OnAnyKilled(evacuees, function()
+ player.MarkFailedObjective(RescueCivilians)
+ end)
+ Trigger.OnAllRemovedFromWorld(evacuees, function()
+ player.MarkCompletedObjective(RescueCivilians)
+ end)
+
+ Utils.Do(evacuees, function(civ)
+ Trigger.OnIdle(civ, function()
+ if civ.Location == AlliedBaseEntryPoint.Location then
+ civ.Destroy()
+ else
+ civ.Move(AlliedBaseEntryPoint.Location)
+ end
+ end)
+ end)
+end
+
+SpawnAndMoveAlliedBaseUnits = function()
+ Media.PlaySpeechNotification(player, "ReinforcementsArrived")
+ Reinforcements.Reinforce(player, ReinforceBaseUnits, { AlliedBaseEntryPoint.Location, AlliedBaseMovePoint.Location }, 18)
+end
+
+SetupAlliedBase = function()
+ local alliedOutpost = Map.ActorsInBox(AlliedBaseTopLeft.CenterPosition, AlliedBaseBottomRight.CenterPosition,
+ function(self) return self.Owner == outpost end)
+
+ Media.PlaySoundNotification(player, "BaseSetup")
+ Utils.Do(alliedOutpost, function(building)
+ building.Owner = player
+ end)
+
+ AlliedBaseHarv.Owner = player
+ AlliedBaseHarv.FindResources()
+
+ FindDemitri = player.AddPrimaryObjective("Find Dr. Demitri. He is likely hiding in the village\n to the far south.")
+ InfiltrateRadarDome = player.AddPrimaryObjective("Reprogram the super tanks by sending a spy into\n the Soviet radar dome.")
+ DefendOutpost = player.AddSecondaryObjective("Defend and repair our outpost.")
+ player.MarkCompletedObjective(FindOutpost)
+
+ -- Don't fail the Objective instantly
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+
+ -- The actor might have been destroyed/crushed in this one second delay
+ local actors = Utils.Where(alliedOutpost, function(actor) return actor.IsInWorld end)
+ Trigger.OnAllRemovedFromWorld(actors, function() player.MarkFailedObjective(DefendOutpost) end)
+ end)
+
+ Trigger.AfterDelay(DateTime.Minutes(1) + DateTime.Seconds(40), function()
+ if not SuperTankDomeIsInfiltrated then
+ SuperTankAttack = true
+ Utils.Do(SuperTanks, function(tnk)
+ if not tnk.IsDead then
+ Trigger.ClearAll(tnk)
+ Trigger.AfterDelay(0, function()
+ Trigger.OnIdle(tnk, function()
+ if SuperTankAttack then
+ if tnk.Location == SuperTankMoveWaypoints[SuperTankMove].Location then
+ SuperTankMove = SuperTankMove + 1
+ if SuperTankMove == 5 then
+ SuperTankAttack = false
+ end
+ else
+ tnk.AttackMove(SuperTankMoveWaypoints[SuperTankMove].Location, 2)
+ end
+ end
+ end)
+ end)
+ end
+ end)
+ end
+ end)
+end
+
+SendAlliedUnits = function()
+ InitObjectives()
+
+ Camera.Position = StartEntryPoint.CenterPosition
+
+ Media.PlaySpeechNotification(player, "ReinforcementsArrived")
+ Utils.Do(AlliedUnits, function(table)
+ Trigger.AfterDelay(table.delay, function()
+ local units = Reinforcements.Reinforce(player, table.types, { StartEntryPoint.Location, StartMovePoint.Location }, 18)
+
+ Utils.Do(units, function(unit)
+ if unit.Type == "e6" then
+ Engineer = unit
+ Trigger.OnKilled(unit, LandingPossible)
+ end
+ end)
+ end)
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(1), function() InitialUnitsArrived = true end)
+end
+
+LandingPossible = function()
+ if not beachReached and (USSRSpen.IsDead or Engineer.IsDead) and LstProduced < 1 then
+ player.MarkFailedObjective(CrossRiver)
+ end
+end
+
+SuperTankDomeInfiltrated = function()
+ SuperTankAttack = true
+ Utils.Do(SuperTanks, function(tnk)
+ tnk.Owner = friendlyMadTanks
+ if not tnk.IsDead then
+ tnk.GrantCondition("friendly")
+ Trigger.ClearAll(tnk)
+ tnk.Stop()
+ if tnk.Location.Y > 61 then
+ SuperTankHunt = 4
+ SuperTankHuntCounter = -1
+ end
+ Trigger.AfterDelay(0, function()
+ Trigger.OnIdle(tnk, function()
+ if SuperTankAttack then
+ if tnk.Location == SuperTankHuntWaypoints[SuperTankHunt].Location then
+ SuperTankHunt = SuperTankHunt + SuperTankHuntCounter
+ if SuperTankHunt == 0 or SuperTankHunt == 5 then
+ SuperTankAttack = false
+ end
+ else
+ tnk.AttackMove(SuperTankHuntWaypoints[SuperTankHunt].Location, 2)
+ end
+ else
+ tnk.Hunt()
+ end
+ end)
+ end)
+ end
+ end)
+
+ player.MarkCompletedObjective(InfiltrateRadarDome)
+ Trigger.AfterDelay(DateTime.Minutes(3), SuperTanksDestruction)
+ ticked = DateTime.Minutes(3)
+
+ Trigger.AfterDelay(DateTime.Seconds(2), function()
+ Media.PlaySpeechNotification(player, "ControlCenterDeactivated")
+
+ Trigger.AfterDelay(DateTime.Seconds(4), function()
+ Media.DisplayMessage("In 3 minutes the super tanks will self-destruct.")
+ Media.PlaySpeechNotification(player, "WarningThreeMinutesRemaining")
+ end)
+ end)
+end
+
+SuperTanksDestruction = function()
+ local badGuys = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == badguy and self.HasProperty("Health") end)
+ Utils.Do(badGuys, function(unit)
+ unit.Kill()
+ end)
+
+ Utils.Do(SuperTanks, function(tnk)
+ if not tnk.IsDead then
+ local camera = Actor.Create("camera", true, { Owner = player, Location = tnk.Location })
+ Trigger.AfterDelay(DateTime.Seconds(3), camera.Destroy)
+
+ Trigger.ClearAll(tnk)
+ tnk.Kill()
+ end
+ end)
+
+ player.MarkCompletedObjective(DefendOutpost)
+end
+
+CreateDemitri = function()
+ local demitri = Actor.Create("demitri", true, { Owner = player, Location = DemitriChurchSpawnPoint.Location })
+ demitri.Move(DemitriTriggerAreaCenter.Location)
+
+ Media.PlaySpeechNotification(player, "TargetFreed")
+ EvacuateDemitri = player.AddPrimaryObjective("Evacuate Dr. Demitri with the helicopter waiting\n at our outpost.")
+ player.MarkCompletedObjective(FindDemitri)
+
+ local flarepos = CPos.New(DemitriLZ.Location.X, DemitriLZ.Location.Y - 1)
+ local demitriLZFlare = Actor.Create("flare", true, { Owner = player, Location = flarepos })
+ Trigger.AfterDelay(DateTime.Seconds(3), function() Media.PlaySpeechNotification(player, "SignalFlareNorth") end)
+
+ local demitriChinook = Reinforcements.ReinforceWithTransport(player, ExtractionHeli, nil, { ExtractionWaypoint, ExtractionLZ })[1]
+
+ Trigger.OnAnyKilled({ demitri, demitriChinook }, function()
+ player.MarkFailedObjective(EvacuateDemitri)
+ end)
+
+ Trigger.OnRemovedFromWorld(demitriChinook, function()
+ if not demitriChinook.IsDead then
+ Media.PlaySpeechNotification(player, "TargetRescued")
+ Trigger.AfterDelay(DateTime.Seconds(1), function() player.MarkCompletedObjective(EvacuateDemitri) end)
+ Trigger.AfterDelay(DateTime.Seconds(3), SpawnAndMoveAlliedBaseUnits)
+ end
+ end)
+ Trigger.OnRemovedFromWorld(demitri, function()
+ if not demitriChinook.IsDead and demitriChinook.HasPassengers then
+ demitriChinook.Move(ExtractionWaypoint)
+ Trigger.OnIdle(demitriChinook, demitriChinook.Destroy)
+ demitriLZFlare.Destroy()
+ end
+ end)
+end
+
+ticked = -1
+Tick = function()
+ ussr.Resources = ussr.Resources - (0.01 * ussr.ResourceCapacity / 25)
+
+ if InitialUnitsArrived then -- don't fail the mission straight at the beginning
+ if not DemitriFound or not SuperTankDomeIsInfiltrated then
+ if player.HasNoRequiredUnits() then
+ player.MarkFailedObjective(EliminateSuperTanks)
+ end
+ end
+ end
+
+ if ticked > 0 then
+ UserInterface.SetMissionText("The super tanks self-destruct in " .. Utils.FormatTime(ticked), TimerColor)
+ ticked = ticked - 1
+ elseif ticked == 0 then
+ FinishTimer()
+ ticked = ticked - 1
+ end
+end
+
+FinishTimer = function()
+ for i = 0, 9, 1 do
+ local c = TimerColor
+ if i % 2 == 0 then
+ c = HSLColor.White
+ end
+
+ Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText("The super tanks are destroyed!", c) end)
+ end
+ Trigger.AfterDelay(DateTime.Seconds(10), function() UserInterface.SetMissionText("") end)
+end
+
+SetupMission = function()
+ TestCamera = Actor.Create("camera" ,true , { Owner = player, Location = ProvingGroundsCameraPoint.Location })
+ Camera.Position = ProvingGroundsCameraPoint.CenterPosition
+ TimerColor = player.Color
+
+ Trigger.AfterDelay(DateTime.Seconds(12), function()
+ Media.PlaySpeechNotification(player, "StartGame")
+ Trigger.AfterDelay(DateTime.Seconds(2), SendAlliedUnits)
+ end)
+end
+
+InitPlayers = function()
+ player = Player.GetPlayer("Greece")
+ neutral = Player.GetPlayer("Neutral")
+ outpost = Player.GetPlayer("Outpost")
+ badguy = Player.GetPlayer("BadGuy")
+ ussr = Player.GetPlayer("USSR")
+ ukraine = Player.GetPlayer("Ukraine")
+ turkey = Player.GetPlayer("Turkey")
+ friendlyMadTanks = Player.GetPlayer("FriendlyMadTanks")
+
+ ussr.Cash = 2000
+ Trigger.AfterDelay(0, function() badguy.Resources = badguy.ResourceCapacity * 0.75 end)
+ Trigger.OnCapture(USSROutpostSilo, function() -- getting money through capturing doesn't work
+ player.Cash = player.Cash + Utils.RandomInteger(1200, 1300)
+ end)
+end
+
+InitObjectives = function()
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+
+ EliminateSuperTanks = player.AddPrimaryObjective("Eliminate these super tanks.")
+ CrossRiver = player.AddPrimaryObjective("Secure transport to the mainland.")
+ FindOutpost = player.AddPrimaryObjective("Find our outpost and start repairs on it.")
+ RescueCivilians = player.AddSecondaryObjective("Evacuate all civilians from the hospital.")
+ BadGuyObj = badguy.AddPrimaryObjective("Deny the destruction of the super tanks.")
+ USSRObj = ussr.AddPrimaryObjective("Deny the destruction of the super tanks.")
+ UkraineObj = ukraine.AddPrimaryObjective("Survive.")
+ TurkeyObj = turkey.AddPrimaryObjective("Destroy.")
+
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "MissionFailed")
+
+ ussr.MarkCompletedObjective(USSRObj)
+ badguy.MarkCompletedObjective(BadGuyObj)
+ ukraine.MarkCompletedObjective(UkraineObj)
+ turkey.MarkCompletedObjective(TurkeyObj)
+ end)
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "MissionAccomplished")
+ Media.DisplayMessage("Dr. Demitri has been extracted and the super tanks have been dealt with.")
+
+ ussr.MarkFailedObjective(USSRObj)
+ badguy.MarkFailedObjective(BadGuyObj)
+ ukraine.MarkFailedObjective(UkraineObj)
+ turkey.MarkFailedObjective(TurkeyObj)
+ end)
+end
+
+InitTriggers = function()
+ Trigger.OnAllKilled(SuperTanks, function()
+ Trigger.AfterDelay(DateTime.Seconds(3), function() player.MarkCompletedObjective(EliminateSuperTanks) end)
+ end)
+
+ Trigger.OnKilled(SuperTankDome, function()
+ if not SuperTankDomeIsInfiltrated then
+ player.MarkFailedObjective(InfiltrateRadarDome)
+ end
+ end)
+ Trigger.OnInfiltrated(SuperTankDome, function()
+ if not SuperTankDomeIsInfiltrated then
+ SuperTankDomeIsInfiltrated = true
+ SuperTankDomeInfiltrated()
+ end
+ end)
+ Trigger.OnCapture(SuperTankDome, function()
+ if not SuperTankDomeIsInfiltrated then
+ SuperTankDomeIsInfiltrated = true
+ SuperTankDomeInfiltrated()
+ end
+ end)
+
+ Trigger.OnKilled(UkraineBarrel, function()
+ if not UkraineBuilding.IsDead then UkraineBuilding.Kill() end
+ end)
+
+ Trigger.OnAnyKilled(USSROutpostFlameTurrets, function()
+ Utils.Do(ExplosiveBarrels, function(barrel)
+ if not barrel.IsDead then barrel.Kill() end
+ end)
+ end)
+
+ Trigger.OnKilled(DemitriChurch, function()
+ if not DemitriFound then
+ player.MarkFailedObjective(FindDemitri)
+ end
+ end)
+
+ Trigger.OnKilled(Hospital, function()
+ if not HospitalEvacuated then
+ HospitalEvacuated = true
+ player.MarkFailedObjective(RescueCivilians)
+ end
+ end)
+
+ beachReached = false
+ Trigger.OnEnteredFootprint(BeachTrigger, function(a, id)
+ if not beachReached and a.Owner == player then
+ beachReached = true
+ Trigger.RemoveFootprintTrigger(id)
+ player.MarkCompletedObjective(CrossRiver)
+ end
+ end)
+
+ Trigger.OnPlayerDiscovered(outpost, function(_, discoverer)
+ if not outpostReached and discoverer == player then
+ outpostReached = true
+ SetupAlliedBase()
+ end
+ end)
+
+ Trigger.OnEnteredFootprint(DemitriAreaTrigger, function(a, id)
+ if not DemitriFound and a.Owner == player then
+ DemitriFound = true
+ Trigger.RemoveFootprintTrigger(id)
+ CreateDemitri()
+ end
+ end)
+
+ Trigger.OnEnteredFootprint(HospitalAreaTrigger, function(a, id)
+ if not HospitalEvacuated and a.Owner == player then
+ HospitalEvacuated = true
+ Trigger.RemoveFootprintTrigger(id)
+ EvacuateCivilians()
+ end
+ end)
+
+ local tanksLeft = 0
+ Trigger.OnExitedProximityTrigger(ProvingGroundsCameraPoint.CenterPosition, WDist.New(10 * 1024), function(a, id)
+ if a.Type == "5tnk" then
+ tanksLeft = tanksLeft + 1
+ if tanksLeft == 3 then
+ if TestCamera.IsInWorld then TestCamera.Destroy() end
+ Trigger.RemoveProximityTrigger(id)
+ end
+ end
+ end)
+
+ LstProduced = 0
+ Trigger.OnKilled(USSRSpen, LandingPossible)
+ Trigger.OnProduction(USSRSpen, function(self, produced)
+ if produced.Type == "lst" then
+ LstProduced = LstProduced + 1
+ Trigger.OnKilled(produced, function()
+ LstProduced = LstProduced - 1
+ LandingPossible()
+ end)
+ end
+ end)
+end
+
+WorldLoaded = function()
+
+ InitPlayers()
+ InitTriggers()
+
+ SetupMission()
+end
+
diff --git a/mods/ura/maps/monster-tank-madness/rules.yaml b/mods/ura/maps/monster-tank-madness/rules.yaml
new file mode 100644
index 0000000..3f6d340
--- /dev/null
+++ b/mods/ura/maps/monster-tank-madness/rules.yaml
@@ -0,0 +1,349 @@
+Player:
+ PlayerResources:
+ DefaultCash: 0
+
+World:
+ LuaScript:
+ Scripts: monster-tank-madness.lua
+ -StartGameNotification:
+ MissionData:
+ Briefing: Dr. Demitri, creator of a Soviet Super Tank, wants to defect.\n\nWe planned to extract him while the Soviets were testing their new weapon, but something has gone wrong.\n\nThe Super Tanks are out of control, and Demitri is missing -- likely hiding in the village to the far south.\n\nFind our outpost and start repairs on it, then find and evacuate Demitri.\n\nAs for the tanks, we can reprogram them. Send a spy into the Soviet radar dome in the NE, turning the tanks on their creators.\n
+ WinVideo: sovbatl.vqa
+ LossVideo: sovtstar.vqa
+
+^Palettes:
+ IndexedPlayerPalette:
+ PlayerIndex:
+ BadGuy: 229, 230, 231, 232, 233, 234, 235, 8, 236, 237, 238, 239, 221, 222, 223, 223
+ FriendlyMadTanks: 200, 200, 201, 202, 203, 203, 204, 205, 206, 206, 207, 221, 222, 222, 223, 223
+ Outpost: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143
+
+^Building:
+ AnnounceOnSeen:
+
+^ExplodingCivBuilding:
+ Inherits: ^CivBuilding
+ Explodes:
+ Weapon: BarrelExplode
+ EmptyWeapon: BarrelExplode
+ -SpawnActorOnDeath@1:
+ -SpawnActorOnDeath@2:
+ -SpawnActorOnDeath@3:
+
+V01.exploding:
+ Inherits: ^ExplodingCivBuilding
+ RenderSprites:
+ Image: V01
+
+V02.exploding:
+ Inherits: ^ExplodingCivBuilding
+ RenderSprites:
+ Image: V02
+
+V03.exploding:
+ Inherits: ^ExplodingCivBuilding
+ RenderSprites:
+ Image: V03
+
+V04.exploding:
+ Inherits: ^ExplodingCivBuilding
+ RenderSprites:
+ Image: V04
+
+V05.exploding:
+ Inherits: ^ExplodingCivBuilding
+ RenderSprites:
+ Image: V05
+
+V06.exploding:
+ Inherits: ^ExplodingCivBuilding
+ RenderSprites:
+ Image: V06
+
+V07.exploding:
+ Inherits: ^ExplodingCivBuilding
+ RenderSprites:
+ Image: V07
+
+V08.exploding:
+ Inherits: ^ExplodingCivBuilding
+ RenderSprites:
+ Image: V08
+
+V09.exploding:
+ Inherits: ^ExplodingCivBuilding
+ RenderSprites:
+ Image: V09
+
+V11.exploding:
+ Inherits: ^ExplodingCivBuilding
+ RenderSprites:
+ Image: V11
+
+V19:
+ Explodes:
+ Weapon: BarrelExplode
+ EmptyWeapon: BarrelExplode
+
+DEMITRI:
+ Inherits: DELPHI
+ Tooltip:
+ Name: Dr. Demitri
+ Passenger:
+ CargoType: Demitri
+ RenderSprites:
+ Image: DELPHI
+ Voiced:
+ VoiceSet: DemitriVoice
+
+TRAN:
+ RevealsShroud:
+ Range: 0c0
+ Cargo:
+ Types: Demitri
+ MaxWeight: 1
+ -Selectable:
+ Interactable:
+
+LST:
+ Cargo:
+ Types: Infantry, Vehicle, Demitri
+
+JEEP:
+ Cargo:
+ Types: Infantry, Demitri
+
+PBOX:
+ Cargo:
+ Types: Infantry, Demitri
+
+5TNK:
+ Inherits: ^TrackedVehicle
+ Inherits@AUTOTARGET: ^AutoTargetAll
+ Valued:
+ Cost: 10000
+ Tooltip:
+ Name: Super Tank
+ GenericName: Super Tank
+ Health:
+ HP: 20000
+ Armor:
+ Type: Concrete
+ Mobile:
+ Speed: 42
+ Crushes: wall, mine, crate, infantry
+ RevealsShroud:
+ Range: 6c0
+ RequiresCondition: !friendly
+ RevealsShroud@friendly:
+ Range: 6c0
+ RequiresCondition: friendly
+ ValidStances: Ally, Enemy
+ ExternalCondition@friendly:
+ Condition: friendly
+ Turreted:
+ TurnSpeed: 1
+ Armament@PRIMARY:
+ Weapon: SuperTankPrimary
+ LocalOffset: 900,180,340, 900,-180,340
+ Recoil: 171
+ RecoilRecovery: 30
+ MuzzleSequence: muzzle
+ Armament@SECONDARY:
+ Name: secondary
+ Weapon: MammothTusk
+ LocalOffset: -85,384,340, -85,-384,340
+ LocalYaw: -100,100
+ Recoil: 43
+ MuzzleSequence: muzzle
+ AttackTurreted:
+ WithMuzzleOverlay:
+ WithSpriteTurret:
+ Explodes:
+ Weapon: MiniNuke
+ EmptyWeapon: MiniNuke
+ SpawnActorOnDeath:
+ Actor: 5TNK.Husk
+ SelfHealing:
+ Step: 1
+ Delay: 1
+ HealIfBelow: 100
+ DamageCooldown: 150
+ Selectable:
+ Bounds: 44,38,0,-4
+ RenderSprites:
+ Image: 4TNK
+
+5TNK.Husk:
+ Inherits: ^Husk
+ Tooltip:
+ Name: Husk (Super Tank)
+ ThrowsParticle@turret:
+ Anim: turret
+ Health:
+ HP: 2000
+ RenderSprites:
+ Image: 4TNK
+
+DOME.NoInfiltrate:
+ Inherits: DOME
+ Buildable:
+ Prerequisites: ~disabled
+ RenderSprites:
+ Image: DOME
+ -InfiltrateForExploration:
+ Targetable:
+ TargetTypes: Ground, Structure, C4, DetonateAttack, MissionObjective
+
+SPY:
+ Infiltrates:
+ Types: SpyInfiltrate, MissionObjective
+
+BAD3TNK:
+ Inherits: 3TNK
+ Buildable:
+ Prerequisites: ~disabled
+ RenderSprites:
+ Image: 3TNK
+
+BADTRUK:
+ Inherits: TRUK
+ Buildable:
+ Prerequisites: ~disabled
+ RenderSprites:
+ Image: TRUK
+
+SS:
+ Buildable:
+ Prerequisites: ~disabled
+
+AGUN:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSUB:
+ Buildable:
+ Prerequisites: ~disabled
+
+DD:
+ Buildable:
+ Prerequisites: ~disabled
+
+CA:
+ Buildable:
+ Prerequisites: ~disabled
+
+PT:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+SYRD:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPEN:
+ Buildable:
+ Prerequisites: ~disabled
+
+IRON:
+ Buildable:
+ Prerequisites: ~disabled
+
+PDOX:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+HPAD:
+ Buildable:
+ Prerequisites: ~disabled
+
+AFLD:
+ Buildable:
+ Prerequisites: ~disabled
+
+ATEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+STEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+4TNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+MNLY:
+ Buildable:
+ Prerequisites: ~disabled
+
+TTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+CTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MGG:
+ Buildable:
+ Prerequisites: ~disabled
+
+GAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+MRJ:
+ Buildable:
+ Prerequisites: ~disabled
+
+E7:
+ Buildable:
+ Prerequisites: ~disabled
+
+C1:
+ -Crushable:
+
+C2:
+ -Crushable:
+
+C5:
+ -Crushable:
+
+C7:
+ -Crushable:
+
+C8:
+ -Crushable:
+
+SHOK:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+STNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+DTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+QTNK:
+ Buildable:
+ Prerequisites: ~disabled
diff --git a/mods/ura/maps/monster-tank-madness/voices.yaml b/mods/ura/maps/monster-tank-madness/voices.yaml
new file mode 100644
index 0000000..4ac80b7
--- /dev/null
+++ b/mods/ura/maps/monster-tank-madness/voices.yaml
@@ -0,0 +1,16 @@
+DemitriVoice:
+ Variants:
+ allies: .r01,.r03
+ england: .r01,.r03
+ france: .r01,.r03
+ germany: .r01,.r03
+ soviet: .r01,.r03
+ russia: .r01,.r03
+ ukraine: .r01,.r03
+ Voices:
+ Select: await1,ready,report1,yessir1
+ Action: ackno,affirm1,noprob,overout,ritaway,roger,ugotit
+ Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
+ Burned: dedman10
+ Zapped: dedman6
+ DisableVariants: Die, Burned, Zapped
\ No newline at end of file
diff --git a/mods/ura/maps/monster-tank-madness/weapons.yaml b/mods/ura/maps/monster-tank-madness/weapons.yaml
new file mode 100644
index 0000000..45d2165
--- /dev/null
+++ b/mods/ura/maps/monster-tank-madness/weapons.yaml
@@ -0,0 +1,15 @@
+FireballLauncher:
+ Projectile:
+ Blockable: false
+
+TurretGun:
+ Projectile:
+ Blockable: false
+
+SuperTankPrimary:
+ Inherits: 120mm
+ ReloadDelay: 70
+ Report: turret1.aud
+ Warhead@1Dam: SpreadDamage
+ Damage: 500
+ InvalidTargets: Air, Infantry
diff --git a/mods/ura/maps/nine-lives.oramap b/mods/ura/maps/nine-lives.oramap
new file mode 100644
index 0000000..c849279
Binary files /dev/null and b/mods/ura/maps/nine-lives.oramap differ
diff --git a/mods/ura/maps/north-by-northwest.oramap b/mods/ura/maps/north-by-northwest.oramap
new file mode 100644
index 0000000..c81a303
Binary files /dev/null and b/mods/ura/maps/north-by-northwest.oramap differ
diff --git a/mods/ura/maps/northwestpassage.oramap b/mods/ura/maps/northwestpassage.oramap
new file mode 100644
index 0000000..5df6d5b
Binary files /dev/null and b/mods/ura/maps/northwestpassage.oramap differ
diff --git a/mods/ura/maps/operation-goldmine.oramap b/mods/ura/maps/operation-goldmine.oramap
new file mode 100644
index 0000000..477e80a
Binary files /dev/null and b/mods/ura/maps/operation-goldmine.oramap differ
diff --git a/mods/ura/maps/opposite-force.oramap b/mods/ura/maps/opposite-force.oramap
new file mode 100644
index 0000000..4c20cc5
Binary files /dev/null and b/mods/ura/maps/opposite-force.oramap differ
diff --git a/mods/ura/maps/ore-gardens.oramap b/mods/ura/maps/ore-gardens.oramap
new file mode 100644
index 0000000..d92d5ed
Binary files /dev/null and b/mods/ura/maps/ore-gardens.oramap differ
diff --git a/mods/ura/maps/ore-lord.oramap b/mods/ura/maps/ore-lord.oramap
new file mode 100644
index 0000000..b7cdb45
Binary files /dev/null and b/mods/ura/maps/ore-lord.oramap differ
diff --git a/mods/ura/maps/outdoor-trails.oramap b/mods/ura/maps/outdoor-trails.oramap
new file mode 100644
index 0000000..a37ebf9
Binary files /dev/null and b/mods/ura/maps/outdoor-trails.oramap differ
diff --git a/mods/ura/maps/pie-of-animosity.oramap b/mods/ura/maps/pie-of-animosity.oramap
new file mode 100644
index 0000000..61d2bb1
Binary files /dev/null and b/mods/ura/maps/pie-of-animosity.oramap differ
diff --git a/mods/ura/maps/pitfight.oramap b/mods/ura/maps/pitfight.oramap
new file mode 100644
index 0000000..c4fa851
Binary files /dev/null and b/mods/ura/maps/pitfight.oramap differ
diff --git a/mods/ura/maps/poland-raid/map.bin b/mods/ura/maps/poland-raid/map.bin
new file mode 100644
index 0000000..0646245
Binary files /dev/null and b/mods/ura/maps/poland-raid/map.bin differ
diff --git a/mods/ura/maps/poland-raid/map.png b/mods/ura/maps/poland-raid/map.png
new file mode 100644
index 0000000..95247cd
Binary files /dev/null and b/mods/ura/maps/poland-raid/map.png differ
diff --git a/mods/ura/maps/poland-raid/map.yaml b/mods/ura/maps/poland-raid/map.yaml
new file mode 100644
index 0000000..928fc53
--- /dev/null
+++ b/mods/ura/maps/poland-raid/map.yaml
@@ -0,0 +1,796 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Poland Raid
+
+Author: s1w
+
+Tileset: TEMPERAT
+
+MapSize: 128,128
+
+Bounds: 16,16,96,96
+
+Visibility: Lobby
+
+Categories: Conquest
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Multi0:
+ Name: Multi0
+ AllowBots: False
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Faction: allies
+ Enemies: Multi0, Multi1, Multi2, Multi3, Multi4
+ PlayerReference@Multi1:
+ Name: Multi1
+ AllowBots: False
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi2:
+ Name: Multi2
+ AllowBots: False
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi3:
+ Name: Multi3
+ AllowBots: False
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi4:
+ Name: Multi4
+ AllowBots: False
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+
+Actors:
+ Actor1: v16
+ Location: 26,55
+ Owner: Neutral
+ Actor2: v18
+ Location: 27,54
+ Owner: Neutral
+ Actor14: tc05
+ Location: 94,32
+ Owner: Neutral
+ Actor15: tc05
+ Location: 95,35
+ Owner: Neutral
+ Actor16: tc02
+ Location: 33,20
+ Owner: Neutral
+ Actor17: tc04
+ Location: 32,17
+ Owner: Neutral
+ Actor18: tc05
+ Location: 34,18
+ Owner: Neutral
+ Actor19: tc05
+ Location: 86,53
+ Owner: Neutral
+ Actor20: tc02
+ Location: 86,34
+ Owner: Neutral
+ Actor21: tc02
+ Location: 55,35
+ Owner: Neutral
+ Actor22: t17
+ Location: 58,36
+ Owner: Neutral
+ Actor23: t07
+ Location: 16,89
+ Owner: Neutral
+ Actor24: tc04
+ Location: 19,90
+ Owner: Neutral
+ Actor25: tc04
+ Location: 17,51
+ Owner: Neutral
+ Actor26: tc04
+ Location: 22,52
+ Owner: Neutral
+ Actor27: tc04
+ Location: 25,49
+ Owner: Neutral
+ Actor28: tc04
+ Location: 18,56
+ Owner: Neutral
+ Actor29: tc05
+ Location: 18,53
+ Owner: Neutral
+ Actor30: tc05
+ Location: 23,47
+ Owner: Neutral
+ Actor31: tc03
+ Location: 16,55
+ Owner: Neutral
+ Actor32: tc03
+ Location: 21,55
+ Owner: Neutral
+ Actor34: tc01
+ Location: 21,49
+ Owner: Neutral
+ Actor35: t17
+ Location: 26,52
+ Owner: Neutral
+ Actor36: t17
+ Location: 17,56
+ Owner: Neutral
+ Actor37: t14
+ Location: 23,51
+ Owner: Neutral
+ Actor38: t14
+ Location: 16,53
+ Owner: Neutral
+ Actor39: tc04
+ Location: 29,109
+ Owner: Neutral
+ Actor41: tc01
+ Location: 53,98
+ Owner: Neutral
+ Actor42: tc04
+ Location: 37,86
+ Owner: Neutral
+ Actor43: tc02
+ Location: 16,83
+ Owner: Neutral
+ Actor44: tc05
+ Location: 40,109
+ Owner: Neutral
+ Actor45: tc04
+ Location: 30,106
+ Owner: Neutral
+ Actor46: tc04
+ Location: 27,107
+ Owner: Neutral
+ Actor47: tc02
+ Location: 34,108
+ Owner: Neutral
+ Actor48: tc02
+ Location: 32,108
+ Owner: Neutral
+ Actor49: tc02
+ Location: 32,110
+ Owner: Neutral
+ Actor50: t03
+ Location: 33,106
+ Owner: Neutral
+ Actor51: t03
+ Location: 30,108
+ Owner: Neutral
+ Actor52: t16
+ Location: 41,95
+ Owner: Neutral
+ Actor53: tc05
+ Location: 109,109
+ Owner: Neutral
+ Actor54: tc05
+ Location: 37,109
+ Owner: Neutral
+ Actor55: tc01
+ Location: 35,109
+ Owner: Neutral
+ Actor62: tc01
+ Location: 57,37
+ Owner: Neutral
+ Actor63: tc03
+ Location: 59,37
+ Owner: Neutral
+ Actor64: tc03
+ Location: 53,35
+ Owner: Neutral
+ Actor66: tc02
+ Location: 41,51
+ Owner: Neutral
+ Actor67: tc01
+ Location: 97,32
+ Owner: Neutral
+ Actor68: tc01
+ Location: 97,33
+ Owner: Neutral
+ Actor69: tc03
+ Location: 98,31
+ Owner: Neutral
+ Actor70: tc02
+ Location: 77,88
+ Owner: Neutral
+ Actor71: tc04
+ Location: 103,73
+ Owner: Neutral
+ Actor72: t12
+ Location: 102,74
+ Owner: Neutral
+ Actor73: t03
+ Location: 99,74
+ Owner: Neutral
+ Actor74: t08
+ Location: 84,90
+ Owner: Neutral
+ Actor76: tc04
+ Location: 94,75
+ Owner: Neutral
+ Actor77: tc05
+ Location: 91,76
+ Owner: Neutral
+ Actor79: tc03
+ Location: 85,76
+ Owner: Neutral
+ Actor81: tc01
+ Location: 71,88
+ Owner: Neutral
+ Actor82: tc01
+ Location: 77,99
+ Owner: Neutral
+ Actor83: t07
+ Location: 26,89
+ Owner: Neutral
+ Actor84: t08
+ Location: 23,91
+ Owner: Neutral
+ Actor85: v12
+ Location: 41,94
+ Owner: Neutral
+ Actor88: t11
+ Location: 38,32
+ Owner: Neutral
+ Actor89: t08
+ Location: 95,44
+ Owner: Neutral
+ Actor90: t12
+ Location: 23,48
+ Owner: Neutral
+ Actor94: t16
+ Location: 29,106
+ Owner: Neutral
+ Actor95: tc04
+ Location: 54,74
+ Owner: Neutral
+ Actor96: tc05
+ Location: 48,72
+ Owner: Neutral
+ Actor98: t12
+ Location: 47,72
+ Owner: Neutral
+ Actor100: tc02
+ Location: 39,78
+ Owner: Neutral
+ Actor101: tc02
+ Location: 33,90
+ Owner: Neutral
+ Actor102: tc03
+ Location: 41,76
+ Owner: Neutral
+ Actor103: t06
+ Location: 47,73
+ Owner: Neutral
+ Actor104: t08
+ Location: 33,78
+ Owner: Neutral
+ Actor105: t02
+ Location: 32,89
+ Owner: Neutral
+ Actor107: t07
+ Location: 28,89
+ Owner: Neutral
+ Actor108: tc04
+ Location: 34,75
+ Owner: Neutral
+ Actor109: t16
+ Location: 35,74
+ Owner: Neutral
+ Actor110: tc02
+ Location: 38,73
+ Owner: Neutral
+ Actor111: t11
+ Location: 37,74
+ Owner: Neutral
+ Actor112: t11
+ Location: 16,84
+ Owner: Neutral
+ Actor113: t05
+ Location: 37,78
+ Owner: Neutral
+ Actor114: t17
+ Location: 71,43
+ Owner: Neutral
+ Actor115: tc01
+ Location: 76,32
+ Owner: Neutral
+ Actor116: t16
+ Location: 75,31
+ Owner: Neutral
+ Actor117: t16
+ Location: 87,48
+ Owner: Neutral
+ Actor118: t17
+ Location: 85,44
+ Owner: Neutral
+ Actor119: t11
+ Location: 79,46
+ Owner: Neutral
+ Actor120: t08
+ Location: 72,40
+ Owner: Neutral
+ Actor121: t02
+ Location: 69,21
+ Owner: Neutral
+ Actor122: t08
+ Location: 70,22
+ Owner: Neutral
+ Actor123: tc01
+ Location: 66,23
+ Owner: Neutral
+ Actor124: t16
+ Location: 66,21
+ Owner: Neutral
+ Actor125: t05
+ Location: 69,18
+ Owner: Neutral
+ Actor126: t13
+ Location: 66,18
+ Owner: Neutral
+ Actor127: t01
+ Location: 68,21
+ Owner: Neutral
+ Actor0: tc01
+ Location: 94,24
+ Owner: Neutral
+ Actor132: tc04
+ Location: 63,18
+ Owner: Neutral
+ Actor133: tc04
+ Location: 40,49
+ Owner: Neutral
+ Actor138: tc01
+ Location: 38,50
+ Owner: Neutral
+ Actor176: t16
+ Location: 100,75
+ Owner: Neutral
+ Actor137: tc01
+ Location: 42,96
+ Owner: Neutral
+ Actor190: t05
+ Location: 28,50
+ Owner: Neutral
+ Actor139: tc01
+ Location: 49,32
+ Owner: Neutral
+ Actor140: t05
+ Location: 48,33
+ Owner: Neutral
+ Actor141: t01
+ Location: 46,35
+ Owner: Neutral
+ Actor144: tc01
+ Location: 65,35
+ Owner: Neutral
+ Actor145: tc02
+ Location: 65,37
+ Owner: Neutral
+ Actor146: t08
+ Location: 56,37
+ Owner: Neutral
+ Actor147: tc05
+ Location: 53,32
+ Owner: Neutral
+ Actor148: tc01
+ Location: 56,33
+ Owner: Neutral
+ Actor149: t12
+ Location: 57,34
+ Owner: Neutral
+ Actor150: tc04
+ Location: 62,28
+ Owner: Neutral
+ Actor151: tc04
+ Location: 59,34
+ Owner: Neutral
+ Actor152: t07
+ Location: 61,28
+ Owner: Neutral
+ Actor153: t05
+ Location: 60,27
+ Owner: Neutral
+ Actor154: tc01
+ Location: 42,34
+ Owner: Neutral
+ Actor155: t07
+ Location: 43,33
+ Owner: Neutral
+ Actor156: t08
+ Location: 44,34
+ Owner: Neutral
+ Actor157: t16
+ Location: 41,34
+ Owner: Neutral
+ Actor159: t11
+ Location: 79,29
+ Owner: Neutral
+ Actor8: t06
+ Location: 89,30
+ Owner: Neutral
+ Actor128: t06
+ Location: 95,25
+ Owner: Neutral
+ Actor164: t08
+ Location: 57,53
+ Owner: Neutral
+ Actor165: t08
+ Location: 30,89
+ Owner: Neutral
+ Actor166: tc01
+ Location: 28,88
+ Owner: Neutral
+ Actor167: t11
+ Location: 26,88
+ Owner: Neutral
+ Actor168: t07
+ Location: 55,99
+ Owner: Neutral
+ Actor169: t13
+ Location: 20,86
+ Owner: Neutral
+ Actor170: t11
+ Location: 33,86
+ Owner: Neutral
+ Actor171: tc05
+ Location: 16,90
+ Owner: Neutral
+ Actor172: tc02
+ Location: 22,89
+ Owner: Neutral
+ Actor173: t02
+ Location: 17,69
+ Owner: Neutral
+ Actor174: t11
+ Location: 29,72
+ Owner: Neutral
+ Actor175: t11
+ Location: 86,95
+ Owner: Neutral
+ Actor177: tc01
+ Location: 36,16
+ Owner: Neutral
+ Actor178: tc02
+ Location: 33,16
+ Owner: Neutral
+ Actor179: t15
+ Location: 31,16
+ Owner: Neutral
+ Actor180: t11
+ Location: 54,19
+ Owner: Neutral
+ Actor186: tc04
+ Location: 109,77
+ Owner: Neutral
+ Actor187: tc01
+ Location: 105,72
+ Owner: Neutral
+ Actor188: t10
+ Location: 107,73
+ Owner: Neutral
+ Actor191: tc03
+ Location: 27,110
+ Owner: Neutral
+ Actor192: t08
+ Location: 24,51
+ Owner: Neutral
+ Actor193: t08
+ Location: 21,51
+ Owner: Neutral
+ Actor194: t08
+ Location: 22,49
+ Owner: Neutral
+ Actor134: tc04
+ Location: 32,50
+ Owner: Neutral
+ Actor198: tc04
+ Location: 18,71
+ Owner: Neutral
+ Actor199: t16
+ Location: 16,70
+ Owner: Neutral
+ Actor200: tc02
+ Location: 20,74
+ Owner: Neutral
+ Actor201: tc05
+ Location: 17,77
+ Owner: Neutral
+ Actor202: tc03
+ Location: 19,73
+ Owner: Neutral
+ Actor203: tc05
+ Location: 16,67
+ Owner: Neutral
+ Actor204: t12
+ Location: 19,66
+ Owner: Neutral
+ Actor205: t11
+ Location: 107,83
+ Owner: Neutral
+ Actor206: t05
+ Location: 108,110
+ Owner: Neutral
+ Actor207: t15
+ Location: 65,59
+ Owner: Neutral
+ Actor208: tc03
+ Location: 57,64
+ Owner: Neutral
+ Actor209: t17
+ Location: 63,68
+ Owner: Neutral
+ Actor210: t16
+ Location: 68,70
+ Owner: Neutral
+ Actor211: tc04
+ Location: 62,66
+ Owner: Neutral
+ Actor213: t16
+ Location: 21,46
+ Owner: Neutral
+ Actor214: t17
+ Location: 20,48
+ Owner: Neutral
+ Actor215: t08
+ Location: 25,38
+ Owner: Neutral
+ Actor216: t08
+ Location: 21,58
+ Owner: Neutral
+ Actor197: tc02
+ Location: 69,66
+ Owner: Neutral
+ Actor219: tc01
+ Location: 72,67
+ Owner: Neutral
+ Actor224: tc01
+ Location: 87,76
+ Owner: Neutral
+ Actor225: oilb
+ Location: 68,68
+ Owner: Neutral
+ Actor99: brl3
+ Location: 59,64
+ Owner: Neutral
+ Actor227: barl
+ Location: 67,70
+ Owner: Neutral
+ Actor228: brl3
+ Location: 66,68
+ Owner: Neutral
+ Actor226: oilb
+ Location: 59,62
+ Owner: Neutral
+ Actor230: barl
+ Location: 60,65
+ Owner: Neutral
+ Actor231: v15
+ Location: 66,70
+ Owner: Neutral
+ Actor232: dog
+ Location: 63,65
+ Owner: Creeps
+ Actor233: oilb
+ Location: 23,34
+ Owner: Neutral
+ Actor229: barl
+ Location: 61,65
+ Owner: Neutral
+ Actor235: brl3
+ Location: 26,36
+ Owner: Neutral
+ Actor33: v07
+ Location: 61,63
+ Owner: Neutral
+ Actor234: t05
+ Location: 27,84
+ Owner: Neutral
+ Actor218: t05
+ Location: 71,67
+ Owner: Neutral
+ Actor217: t16
+ Location: 21,34
+ Owner: Neutral
+ Actor238: t08
+ Location: 16,79
+ Owner: Neutral
+ Actor239: t02
+ Location: 81,77
+ Owner: Neutral
+ Actor136: t16
+ Location: 61,102
+ Owner: Neutral
+ Actor185: fenc
+ Location: 49,84
+ Owner: Neutral
+ Actor3: t08
+ Location: 53,75
+ Owner: Neutral
+ Actor78: t16
+ Location: 111,42
+ Owner: Neutral
+ Actor61: tc01
+ Location: 109,23
+ Owner: Neutral
+ Actor161: t08
+ Location: 107,23
+ Owner: Neutral
+ Actor162: t07
+ Location: 98,28
+ Owner: Neutral
+ Actor221: t08
+ Location: 91,86
+ Owner: Neutral
+ Actor222: mine
+ Owner: Neutral
+ Location: 109,46
+ Actor237: mine
+ Owner: Neutral
+ Location: 108,49
+ Actor241: mine
+ Owner: Neutral
+ Location: 86,27
+ Actor242: mine
+ Owner: Neutral
+ Location: 82,22
+ Actor243: mine
+ Owner: Neutral
+ Location: 79,25
+ Actor244: mine
+ Owner: Neutral
+ Location: 74,24
+ Actor245: mine
+ Owner: Neutral
+ Location: 92,17
+ Actor246: mine
+ Owner: Neutral
+ Location: 60,17
+ Actor247: mine
+ Owner: Neutral
+ Location: 62,21
+ Actor248: mine
+ Owner: Neutral
+ Location: 42,31
+ Actor249: mine
+ Owner: Neutral
+ Location: 37,29
+ Actor250: mine
+ Owner: Neutral
+ Location: 65,46
+ Actor251: mine
+ Owner: Neutral
+ Location: 60,45
+ Actor252: mine
+ Owner: Neutral
+ Location: 59,49
+ Actor253: mine
+ Owner: Neutral
+ Location: 78,52
+ Actor254: mine
+ Owner: Neutral
+ Location: 40,62
+ Actor255: mine
+ Owner: Neutral
+ Location: 22,83
+ Actor256: mine
+ Owner: Neutral
+ Location: 27,82
+ Actor257: mine
+ Owner: Neutral
+ Location: 22,93
+ Actor258: mine
+ Owner: Neutral
+ Location: 29,92
+ Actor259: mine
+ Owner: Neutral
+ Location: 50,78
+ Actor260: mine
+ Owner: Neutral
+ Location: 52,84
+ Actor261: mine
+ Owner: Neutral
+ Location: 57,80
+ Actor262: mine
+ Owner: Neutral
+ Location: 46,88
+ Actor263: mine
+ Owner: Neutral
+ Location: 43,82
+ Actor264: mine
+ Owner: Neutral
+ Location: 58,91
+ Actor265: mine
+ Owner: Neutral
+ Location: 56,103
+ Actor266: mine
+ Owner: Neutral
+ Location: 52,105
+ Actor267: mine
+ Owner: Neutral
+ Location: 93,109
+ Actor268: mine
+ Owner: Neutral
+ Location: 88,107
+ Actor269: mine
+ Owner: Neutral
+ Location: 82,109
+ Actor270: mine
+ Owner: Neutral
+ Location: 78,103
+ Actor271: mine
+ Owner: Neutral
+ Location: 109,102
+ Actor272: mine
+ Owner: Neutral
+ Location: 110,97
+ Actor273: mine
+ Owner: Neutral
+ Location: 86,79
+ Actor279: mpspawn
+ Owner: Neutral
+ Location: 46,24
+ Actor280: mpspawn
+ Owner: Neutral
+ Location: 103,32
+ Actor274: mpspawn
+ Owner: Neutral
+ Location: 26,66
+ Actor275: mpspawn
+ Owner: Neutral
+ Location: 34,101
+ Actor276: mpspawn
+ Owner: Neutral
+ Location: 99,85
+ Actor240: t11
+ Owner: Neutral
+ Location: 40,75
+ Actor277: t10
+ Owner: Neutral
+ Location: 40,75
+ Actor278: t13
+ Owner: Neutral
+ Location: 46,72
+ Actor281: t07
+ Owner: Neutral
+ Location: 43,74
+ Actor282: t14
+ Owner: Neutral
+ Location: 43,74
+ Actor283: tc02
+ Owner: Neutral
+ Location: 80,30
+ Actor284: tc01
+ Owner: Neutral
+ Location: 29,89
+ Actor285: t03
+ Owner: Neutral
+ Location: 71,34
+ Actor286: tc02
+ Owner: Neutral
+ Location: 65,34
+ Actor287: t11
+ Owner: Neutral
+ Location: 80,89
+ Actor288: tc04
+ Owner: Neutral
+ Location: 73,88
+ Actor289: t06
+ Owner: Neutral
+ Location: 16,49
diff --git a/mods/ura/maps/polar-disorder.oramap b/mods/ura/maps/polar-disorder.oramap
new file mode 100644
index 0000000..f33c8f5
Binary files /dev/null and b/mods/ura/maps/polar-disorder.oramap differ
diff --git a/mods/ura/maps/pool-party.oramap b/mods/ura/maps/pool-party.oramap
new file mode 100644
index 0000000..7186b7d
Binary files /dev/null and b/mods/ura/maps/pool-party.oramap differ
diff --git a/mods/ura/maps/pressure.oramap b/mods/ura/maps/pressure.oramap
new file mode 100644
index 0000000..7b3d8f4
Binary files /dev/null and b/mods/ura/maps/pressure.oramap differ
diff --git a/mods/ura/maps/puddles-redux.oramap b/mods/ura/maps/puddles-redux.oramap
new file mode 100644
index 0000000..83b4cb8
Binary files /dev/null and b/mods/ura/maps/puddles-redux.oramap differ
diff --git a/mods/ura/maps/rapa-nui/map.bin b/mods/ura/maps/rapa-nui/map.bin
new file mode 100644
index 0000000..1507b82
Binary files /dev/null and b/mods/ura/maps/rapa-nui/map.bin differ
diff --git a/mods/ura/maps/rapa-nui/map.png b/mods/ura/maps/rapa-nui/map.png
new file mode 100644
index 0000000..0533a7f
Binary files /dev/null and b/mods/ura/maps/rapa-nui/map.png differ
diff --git a/mods/ura/maps/rapa-nui/map.yaml b/mods/ura/maps/rapa-nui/map.yaml
new file mode 100644
index 0000000..8588463
--- /dev/null
+++ b/mods/ura/maps/rapa-nui/map.yaml
@@ -0,0 +1,1618 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Rapa Nui
+
+Author: American Blunt
+
+Tileset: TEMPERAT
+
+MapSize: 302,202
+
+Bounds: 1,1,300,200
+
+Visibility: Lobby
+
+Categories: Conquest
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: england
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Faction: england
+ Enemies: Multi0, Multi1, Multi2, Multi3, Multi4, Multi5, Multi6
+ PlayerReference@Multi0:
+ Name: Multi0
+ AllowBots: False
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi1:
+ Name: Multi1
+ AllowBots: False
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi2:
+ Name: Multi2
+ AllowBots: False
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi3:
+ Name: Multi3
+ AllowBots: False
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi4:
+ Name: Multi4
+ AllowBots: False
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi5:
+ Name: Multi5
+ AllowBots: False
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi6:
+ Name: Multi6
+ AllowBots: False
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+
+Actors:
+ Actor210: tc01
+ Owner: Neutral
+ Location: 37,163
+ Actor22: v19
+ Owner: Neutral
+ Location: 225,192
+ Actor25: v19
+ Owner: Neutral
+ Location: 210,189
+ Actor26: v19
+ Owner: Neutral
+ Location: 208,192
+ Actor209: tc04
+ Owner: Neutral
+ Location: 32,162
+ Actor61: t02
+ Owner: Neutral
+ Location: 9,65
+ Actor62: t02
+ Owner: Neutral
+ Location: 16,55
+ Actor57: tc04
+ Owner: Creeps
+ Location: 65,150
+ Actor48: v19
+ Owner: Neutral
+ Location: 14,57
+ Actor49: v19
+ Owner: Neutral
+ Location: 8,68
+ Actor50: v19
+ Owner: Neutral
+ Location: 10,70
+ Actor51: v19
+ Owner: Neutral
+ Location: 234,7
+ Actor52: v19
+ Owner: Neutral
+ Location: 233,10
+ Actor53: v19
+ Owner: Neutral
+ Location: 219,13
+ Actor65: v05
+ Owner: Neutral
+ Location: 50,133
+ Actor597: wood
+ Owner: Neutral
+ Location: 42,142
+ Actor594: wood
+ Owner: Neutral
+ Location: 41,142
+ Actor68: v04
+ Owner: Neutral
+ Location: 57,111
+ Actor69: v11
+ Owner: Neutral
+ Location: 44,134
+ Actor151: tc03
+ Owner: Neutral
+ Location: 159,99
+ Actor155: tc02
+ Owner: Neutral
+ Location: 75,128
+ Actor113: tc04
+ Owner: Neutral
+ Location: 158,90
+ Actor114: tc01
+ Owner: Neutral
+ Location: 168,87
+ Actor116: tc01
+ Owner: Neutral
+ Location: 156,94
+ Actor121: mine
+ Owner: Neutral
+ Location: 254,85
+ Actor123: mine
+ Owner: Neutral
+ Location: 281,83
+ Actor124: mine
+ Owner: Neutral
+ Location: 265,104
+ Actor125: gmine
+ Owner: Neutral
+ Location: 288,92
+ Actor127: t16
+ Owner: Neutral
+ Location: 287,88
+ Actor156: mine
+ Owner: Neutral
+ Location: 55,157
+ Actor656: c3
+ Owner: Neutral
+ Location: 48,132
+ SubCell: 3
+ Facing: 28
+ Actor159: t01
+ Owner: Neutral
+ Location: 71,97
+ Actor160: t01
+ Owner: Neutral
+ Location: 31,159
+ Actor161: t01
+ Owner: Neutral
+ Location: 34,160
+ Actor162: t01
+ Owner: Neutral
+ Location: 37,162
+ Actor164: tc01
+ Owner: Neutral
+ Location: 150,131
+ Actor165: t16
+ Owner: Neutral
+ Location: 131,137
+ Actor168: mine
+ Owner: Neutral
+ Location: 129,79
+ Actor174: t16
+ Owner: Neutral
+ Location: 111,111
+ Actor175: t16
+ Owner: Neutral
+ Location: 104,108
+ Actor631: t06
+ Owner: Neutral
+ Location: 89,104
+ Actor182: wood
+ Owner: Neutral
+ Location: 45,147
+ Actor183: wood
+ Owner: Neutral
+ Location: 46,147
+ Actor184: wood
+ Owner: Neutral
+ Location: 47,147
+ Actor185: wood
+ Owner: Neutral
+ Location: 48,147
+ Actor186: wood
+ Owner: Neutral
+ Location: 48,146
+ Actor187: wood
+ Owner: Neutral
+ Location: 48,145
+ Actor188: wood
+ Owner: Neutral
+ Location: 57,130
+ Actor189: wood
+ Owner: Neutral
+ Location: 56,130
+ Actor190: wood
+ Owner: Neutral
+ Location: 55,130
+ Actor621: wood
+ Owner: Neutral
+ Location: 44,142
+ Actor600: wood
+ Owner: Neutral
+ Location: 43,142
+ Actor198: t16
+ Owner: Neutral
+ Location: 203,85
+ Actor200: t06
+ Owner: Neutral
+ Location: 216,86
+ Actor575: t02
+ Owner: Neutral
+ Location: 78,76
+ Actor576: gmine
+ Owner: Neutral
+ Location: 127,40
+ Actor577: t05
+ Owner: Neutral
+ Location: 78,88
+ Actor211: t16
+ Owner: Neutral
+ Location: 35,163
+ Actor214: t16
+ Owner: Neutral
+ Location: 39,165
+ Actor215: t16
+ Owner: Neutral
+ Location: 41,165
+ Actor216: tc01
+ Owner: Neutral
+ Location: 29,162
+ Actor217: tc01
+ Owner: Neutral
+ Location: 36,165
+ Actor218: tc04
+ Owner: Neutral
+ Location: 26,160
+ Actor219: tc04
+ Owner: Neutral
+ Location: 54,171
+ Actor220: tc01
+ Owner: Neutral
+ Location: 58,173
+ Actor221: t16
+ Owner: Neutral
+ Location: 55,169
+ Actor222: t16
+ Owner: Neutral
+ Location: 58,171
+ Actor225: tc01
+ Owner: Neutral
+ Location: 74,153
+ Actor230: v15
+ Owner: Neutral
+ Location: 135,141
+ Actor231: v15
+ Owner: Neutral
+ Location: 138,141
+ Actor232: v15
+ Owner: Neutral
+ Location: 137,139
+ Actor233: t06
+ Owner: Neutral
+ Location: 124,116
+ Actor234: t06
+ Owner: Neutral
+ Location: 128,115
+ Actor235: tc01
+ Owner: Neutral
+ Location: 133,114
+ Actor236: tc04
+ Owner: Creeps
+ Location: 120,115
+ Actor237: tc04
+ Owner: Creeps
+ Location: 130,115
+ Actor238: tc01
+ Owner: Creeps
+ Location: 128,110
+ Actor239: tc01
+ Owner: Creeps
+ Location: 118,112
+ Actor240: tc04
+ Owner: Creeps
+ Location: 122,111
+ Actor241: tc04
+ Owner: Creeps
+ Location: 131,110
+ Actor242: tc04
+ Owner: Creeps
+ Location: 135,108
+ Actor243: tc03
+ Owner: Creeps
+ Location: 126,115
+ Actor244: tc01
+ Owner: Creeps
+ Location: 130,108
+ Actor245: tc04
+ Owner: Creeps
+ Location: 138,91
+ Actor246: tc04
+ Owner: Creeps
+ Location: 134,96
+ Actor247: tc04
+ Owner: Creeps
+ Location: 141,99
+ Actor248: tc04
+ Owner: Creeps
+ Location: 136,103
+ Actor249: tc01
+ Owner: Creeps
+ Location: 139,97
+ Actor250: tc01
+ Owner: Creeps
+ Location: 136,93
+ Actor251: tc01
+ Owner: Creeps
+ Location: 134,100
+ Actor252: tc01
+ Owner: Creeps
+ Location: 139,105
+ Actor253: t16
+ Owner: Creeps
+ Location: 141,97
+ Actor254: t16
+ Owner: Creeps
+ Location: 138,95
+ Actor255: t16
+ Owner: Creeps
+ Location: 138,99
+ Actor256: t16
+ Owner: Creeps
+ Location: 133,105
+ Actor257: t16
+ Owner: Creeps
+ Location: 131,102
+ Actor258: t16
+ Owner: Creeps
+ Location: 131,97
+ Actor259: t16
+ Owner: Creeps
+ Location: 131,100
+ Actor260: t16
+ Owner: Creeps
+ Location: 133,103
+ Actor261: tc04
+ Owner: Creeps
+ Location: 131,104
+ Actor263: t05
+ Owner: Creeps
+ Location: 138,101
+ Actor264: t05
+ Owner: Creeps
+ Location: 140,103
+ Actor265: t05
+ Owner: Creeps
+ Location: 136,106
+ Actor266: t05
+ Owner: Creeps
+ Location: 133,106
+ Actor268: tc04
+ Owner: Creeps
+ Location: 130,98
+ Actor610: v15
+ Owner: Neutral
+ Location: 131,147
+ Actor270: v15
+ Owner: Neutral
+ Location: 137,141
+ Actor554: v15
+ Owner: Neutral
+ Location: 133,144
+ Actor555: v15
+ Owner: Neutral
+ Location: 134,144
+ Actor273: v15
+ Owner: Neutral
+ Location: 133,141
+ Actor274: v15
+ Owner: Neutral
+ Location: 134,139
+ Actor275: v15
+ Owner: Neutral
+ Location: 134,140
+ Actor276: v15
+ Owner: Neutral
+ Location: 136,140
+ Actor277: v15
+ Owner: Neutral
+ Location: 135,139
+ Actor430: v15
+ Owner: Neutral
+ Location: 153,138
+ Actor280: v15
+ Owner: Neutral
+ Location: 132,141
+ Actor428: v15
+ Owner: Neutral
+ Location: 154,136
+ Actor282: v15
+ Owner: Neutral
+ Location: 133,140
+ Actor283: v15
+ Owner: Neutral
+ Location: 142,143
+ Actor285: v15
+ Owner: Neutral
+ Location: 141,145
+ Actor286: v15
+ Owner: Neutral
+ Location: 141,144
+ Actor287: v15
+ Owner: Neutral
+ Location: 141,143
+ Actor288: v15
+ Owner: Neutral
+ Location: 139,144
+ Actor393: v15
+ Owner: Neutral
+ Location: 152,137
+ Actor291: v15
+ Owner: Neutral
+ Location: 126,142
+ Actor292: v15
+ Owner: Neutral
+ Location: 127,143
+ Actor293: v15
+ Owner: Neutral
+ Location: 128,144
+ Actor294: v15
+ Owner: Neutral
+ Location: 127,146
+ Actor295: v15
+ Owner: Neutral
+ Location: 125,145
+ Actor296: v15
+ Owner: Neutral
+ Location: 123,144
+ Actor435: v15
+ Owner: Neutral
+ Location: 150,135
+ Actor298: v15
+ Owner: Neutral
+ Location: 128,146
+ Actor299: v15
+ Owner: Neutral
+ Location: 130,146
+ Actor305: v16
+ Owner: Neutral
+ Location: 136,139
+ Actor306: v16
+ Owner: Neutral
+ Location: 138,140
+ Actor307: v16
+ Owner: Neutral
+ Location: 133,140
+ Actor308: v16
+ Owner: Neutral
+ Location: 135,140
+ Actor309: v16
+ Owner: Neutral
+ Location: 134,141
+ Actor310: v16
+ Owner: Neutral
+ Location: 136,141
+ Actor311: v16
+ Owner: Neutral
+ Location: 137,140
+ Actor312: v16
+ Owner: Neutral
+ Location: 133,142
+ Actor313: v16
+ Owner: Neutral
+ Location: 135,143
+ Actor319: v15
+ Owner: Neutral
+ Location: 125,144
+ Actor320: v15
+ Owner: Neutral
+ Location: 126,144
+ Actor321: v15
+ Owner: Neutral
+ Location: 127,144
+ Actor322: v15
+ Owner: Neutral
+ Location: 127,145
+ Actor323: v15
+ Owner: Neutral
+ Location: 126,145
+ Actor324: v16
+ Owner: Neutral
+ Location: 127,142
+ Actor325: v16
+ Owner: Neutral
+ Location: 128,142
+ Actor326: v16
+ Owner: Neutral
+ Location: 128,143
+ Actor327: v16
+ Owner: Neutral
+ Location: 129,143
+ Actor328: v16
+ Owner: Neutral
+ Location: 129,145
+ Actor329: v16
+ Owner: Neutral
+ Location: 129,146
+ Actor330: v16
+ Owner: Neutral
+ Location: 129,144
+ Actor331: v16
+ Owner: Neutral
+ Location: 128,145
+ Actor332: v16
+ Owner: Neutral
+ Location: 126,143
+ Actor333: v16
+ Owner: Neutral
+ Location: 125,143
+ Actor399: v15
+ Owner: Neutral
+ Location: 154,134
+ Actor335: v16
+ Owner: Neutral
+ Location: 123,145
+ Actor438: v16
+ Owner: Neutral
+ Location: 154,135
+ Actor434: v15
+ Owner: Neutral
+ Location: 148,136
+ Actor338: v16
+ Owner: Neutral
+ Location: 126,147
+ Actor339: v16
+ Owner: Neutral
+ Location: 128,147
+ Actor340: v16
+ Owner: Neutral
+ Location: 127,147
+ Actor341: v17
+ Owner: Neutral
+ Location: 127,146
+ Actor342: v17
+ Owner: Neutral
+ Location: 126,146
+ Actor437: v16
+ Owner: Neutral
+ Location: 153,135
+ Actor344: v17
+ Owner: Neutral
+ Location: 124,145
+ Actor345: v17
+ Owner: Neutral
+ Location: 125,146
+ Actor436: v16
+ Owner: Neutral
+ Location: 152,136
+ Actor347: v17
+ Owner: Neutral
+ Location: 124,144
+ Actor348: v17
+ Owner: Neutral
+ Location: 124,143
+ Actor394: v15
+ Owner: Neutral
+ Location: 152,135
+ Actor350: v17
+ Owner: Neutral
+ Location: 123,143
+ Actor351: v17
+ Owner: Neutral
+ Location: 134,142
+ Actor352: v17
+ Owner: Neutral
+ Location: 135,142
+ Actor353: v17
+ Owner: Neutral
+ Location: 137,142
+ Actor354: v17
+ Owner: Neutral
+ Location: 138,142
+ Actor355: v17
+ Owner: Neutral
+ Location: 136,143
+ Actor356: v17
+ Owner: Neutral
+ Location: 136,143
+ Actor357: v17
+ Owner: Neutral
+ Location: 136,142
+ Actor358: v17
+ Owner: Neutral
+ Location: 132,142
+ Actor359: v17
+ Owner: Neutral
+ Location: 132,143
+ Actor360: v17
+ Owner: Neutral
+ Location: 133,143
+ Actor361: v17
+ Owner: Neutral
+ Location: 137,143
+ Actor363: v17
+ Owner: Neutral
+ Location: 134,143
+ Actor364: v17
+ Owner: Neutral
+ Location: 138,139
+ Actor365: v14
+ Owner: Neutral
+ Location: 139,146
+ Actor366: v14
+ Owner: Neutral
+ Location: 141,146
+ Actor367: v15
+ Owner: Neutral
+ Location: 140,145
+ Actor368: v15
+ Owner: Neutral
+ Location: 140,146
+ Actor369: v15
+ Owner: Neutral
+ Location: 140,147
+ Actor370: v15
+ Owner: Neutral
+ Location: 138,147
+ Actor371: v15
+ Owner: Neutral
+ Location: 138,145
+ Actor372: v15
+ Owner: Neutral
+ Location: 139,147
+ Actor431: v15
+ Owner: Neutral
+ Location: 151,137
+ Actor376: v15
+ Owner: Neutral
+ Location: 143,144
+ Actor377: v15
+ Owner: Neutral
+ Location: 142,144
+ Actor378: v15
+ Owner: Neutral
+ Location: 142,145
+ Actor379: v16
+ Owner: Neutral
+ Location: 143,145
+ Actor432: v15
+ Owner: Neutral
+ Location: 149,137
+ Actor433: v15
+ Owner: Neutral
+ Location: 149,136
+ Actor382: v16
+ Owner: Neutral
+ Location: 138,146
+ Actor383: v16
+ Owner: Neutral
+ Location: 139,145
+ Actor384: v16
+ Owner: Neutral
+ Location: 140,144
+ Actor385: v17
+ Owner: Neutral
+ Location: 143,143
+ Actor386: v17
+ Owner: Neutral
+ Location: 141,143
+ Actor387: v17
+ Owner: Neutral
+ Location: 140,143
+ Actor388: v15
+ Owner: Neutral
+ Location: 116,145
+ Actor389: v15
+ Owner: Neutral
+ Location: 118,145
+ Actor390: v15
+ Owner: Neutral
+ Location: 120,145
+ Actor391: v15
+ Owner: Neutral
+ Location: 120,144
+ Actor392: v15
+ Owner: Neutral
+ Location: 119,144
+ Actor381: v15
+ Owner: Neutral
+ Location: 151,138
+ Actor380: v15
+ Owner: Neutral
+ Location: 150,136
+ Actor395: v16
+ Owner: Neutral
+ Location: 117,145
+ Actor396: v16
+ Owner: Neutral
+ Location: 117,146
+ Actor397: v16
+ Owner: Neutral
+ Location: 119,146
+ Actor398: v16
+ Owner: Neutral
+ Location: 119,145
+ Actor374: v15
+ Owner: Neutral
+ Location: 148,137
+ Actor400: v16
+ Owner: Neutral
+ Location: 120,146
+ Actor415: v15
+ Owner: Neutral
+ Location: 114,134
+ Actor416: v15
+ Owner: Neutral
+ Location: 111,136
+ Actor417: v15
+ Owner: Neutral
+ Location: 113,135
+ Actor418: v15
+ Owner: Neutral
+ Location: 114,135
+ Actor419: v15
+ Owner: Neutral
+ Location: 113,136
+ Actor420: v15
+ Owner: Neutral
+ Location: 112,136
+ Actor421: v15
+ Owner: Neutral
+ Location: 114,136
+ Actor422: v14
+ Owner: Neutral
+ Location: 114,136
+ Actor423: v14
+ Owner: Neutral
+ Location: 115,134
+ Actor424: v16
+ Owner: Neutral
+ Location: 112,135
+ Actor425: v16
+ Owner: Neutral
+ Location: 112,137
+ Actor426: v16
+ Owner: Neutral
+ Location: 114,137
+ Actor427: v16
+ Owner: Neutral
+ Location: 113,137
+ Actor439: v16
+ Owner: Neutral
+ Location: 153,137
+ Actor440: v16
+ Owner: Neutral
+ Location: 153,136
+ Actor441: v16
+ Owner: Neutral
+ Location: 151,136
+ Actor442: v16
+ Owner: Neutral
+ Location: 150,137
+ Actor443: v16
+ Owner: Neutral
+ Location: 149,138
+ Actor444: v16
+ Owner: Neutral
+ Location: 148,139
+ Actor445: v16
+ Owner: Neutral
+ Location: 150,138
+ Actor446: v16
+ Owner: Neutral
+ Location: 150,139
+ Actor447: v16
+ Owner: Neutral
+ Location: 147,138
+ Actor448: v16
+ Owner: Neutral
+ Location: 146,139
+ Actor449: v17
+ Owner: Neutral
+ Location: 149,139
+ Actor450: v17
+ Owner: Neutral
+ Location: 149,140
+ Actor451: v17
+ Owner: Neutral
+ Location: 148,140
+ Actor452: v17
+ Owner: Neutral
+ Location: 147,140
+ Actor453: v17
+ Owner: Neutral
+ Location: 147,140
+ Actor454: v17
+ Owner: Neutral
+ Location: 148,138
+ Actor455: v17
+ Owner: Neutral
+ Location: 146,137
+ Actor456: v17
+ Owner: Neutral
+ Location: 146,138
+ Actor457: v17
+ Owner: Neutral
+ Location: 147,137
+ Actor458: v17
+ Owner: Neutral
+ Location: 151,135
+ Actor459: v17
+ Owner: Neutral
+ Location: 152,134
+ Actor460: v17
+ Owner: Neutral
+ Location: 153,133
+ Actor461: v17
+ Owner: Neutral
+ Location: 151,134
+ Actor485: v16
+ Owner: Neutral
+ Location: 134,133
+ Actor527: tc04
+ Owner: Neutral
+ Location: 136,86
+ Actor528: tc04
+ Owner: Neutral
+ Location: 132,86
+ Actor529: tc01
+ Owner: Neutral
+ Location: 128,83
+ Actor530: tc04
+ Owner: Neutral
+ Location: 126,90
+ Actor532: tc01
+ Owner: Neutral
+ Location: 123,84
+ Actor533: tc01
+ Owner: Neutral
+ Location: 122,87
+ Actor534: tc04
+ Owner: Neutral
+ Location: 120,85
+ Actor536: tc01
+ Owner: Neutral
+ Location: 132,82
+ Actor537: t07
+ Owner: Neutral
+ Location: 124,77
+ Actor538: t07
+ Owner: Neutral
+ Location: 128,86
+ Actor539: t07
+ Owner: Neutral
+ Location: 125,85
+ Actor540: t07
+ Owner: Neutral
+ Location: 135,92
+ Actor541: t07
+ Owner: Neutral
+ Location: 123,90
+ Actor542: t07
+ Owner: Neutral
+ Location: 125,92
+ Actor543: t06
+ Owner: Neutral
+ Location: 134,82
+ Actor544: t06
+ Owner: Neutral
+ Location: 133,84
+ Actor545: t06
+ Owner: Neutral
+ Location: 128,89
+ Actor546: t06
+ Owner: Neutral
+ Location: 125,87
+ Actor547: t06
+ Owner: Neutral
+ Location: 123,82
+ Actor548: t06
+ Owner: Neutral
+ Location: 121,83
+ Actor549: t06
+ Owner: Neutral
+ Location: 119,77
+ Actor550: t06
+ Owner: Neutral
+ Location: 120,77
+ Actor552: tc04
+ Owner: Neutral
+ Location: 117,80
+ Actor553: tc01
+ Owner: Neutral
+ Location: 125,76
+ Actor551: tc01
+ Owner: Neutral
+ Location: 122,79
+ Actor558: t02
+ Owner: Neutral
+ Location: 156,105
+ Actor559: t01
+ Owner: Neutral
+ Location: 150,107
+ Actor560: t05
+ Owner: Neutral
+ Location: 235,9
+ Actor561: t07
+ Owner: Neutral
+ Location: 223,192
+ Actor634: tc04
+ Owner: Creeps
+ Location: 194,82
+ Actor567: t01
+ Owner: Creeps
+ Location: 72,93
+ Actor652: tc01
+ Owner: Neutral
+ Location: 209,91
+ Actor572: t16
+ Owner: Neutral
+ Location: 229,82
+ Actor574: t01
+ Owner: Neutral
+ Location: 223,83
+ Actor582: t07
+ Owner: Neutral
+ Location: 219,118
+ Actor583: t07
+ Owner: Neutral
+ Location: 188,117
+ Actor584: t07
+ Owner: Neutral
+ Location: 287,100
+ Actor585: t07
+ Owner: Neutral
+ Location: 286,104
+ Actor586: t05
+ Owner: Neutral
+ Location: 287,102
+ Actor587: tc01
+ Owner: Neutral
+ Location: 285,107
+ Actor588: t16
+ Owner: Neutral
+ Location: 284,96
+ Actor592: v10
+ Owner: Neutral
+ Location: 56,118
+ Actor593: wood
+ Owner: Neutral
+ Location: 40,142
+ Actor595: t11
+ Owner: Neutral
+ Location: 48,129
+ Actor596: t15
+ Owner: Neutral
+ Location: 54,132
+ Actor632: t06
+ Owner: Neutral
+ Location: 108,118
+ Actor598: t10
+ Owner: Neutral
+ Location: 54,113
+ Actor566: tc04
+ Owner: Neutral
+ Location: 180,82
+ Actor601: t10
+ Owner: Neutral
+ Location: 59,125
+ Actor602: t10
+ Owner: Neutral
+ Location: 57,109
+ Actor603: v08
+ Owner: Neutral
+ Location: 50,123
+ Actor604: v08
+ Owner: Neutral
+ Location: 52,137
+ Actor606: t16
+ Owner: Neutral
+ Location: 71,113
+ Actor608: tc01
+ Owner: Neutral
+ Location: 75,111
+ Actor611: tc01
+ Owner: Neutral
+ Location: 79,112
+ Actor614: tc01
+ Owner: Neutral
+ Location: 70,110
+ Actor612: t06
+ Owner: Neutral
+ Location: 120,64
+ Actor620: t16
+ Owner: Neutral
+ Location: 80,56
+ Actor635: v15
+ Owner: Neutral
+ Location: 133,147
+ Actor636: v15
+ Owner: Neutral
+ Location: 132,148
+ Actor639: v15
+ Owner: Neutral
+ Location: 134,148
+ Actor640: v15
+ Owner: Neutral
+ Location: 135,148
+ Actor641: v16
+ Owner: Neutral
+ Location: 134,147
+ Actor642: v16
+ Owner: Neutral
+ Location: 133,148
+ Actor644: v16
+ Owner: Neutral
+ Location: 131,148
+ Actor645: v17
+ Owner: Neutral
+ Location: 132,147
+ Actor646: v17
+ Owner: Neutral
+ Location: 130,148
+ Actor654: t06
+ Owner: Creeps
+ Location: 166,51
+ Actor657: gmine
+ Owner: Creeps
+ Location: 37,193
+ Actor658: c3
+ Owner: Neutral
+ Location: 53,118
+ SubCell: 3
+ Facing: 124
+ Actor659: c3
+ Owner: Creeps
+ Location: 55,123
+ SubCell: 3
+ Facing: 156
+ Actor660: c3
+ Owner: Neutral
+ Location: 58,121
+ SubCell: 3
+ Facing: 92
+ Actor661: c3
+ Owner: Neutral
+ Location: 61,113
+ SubCell: 3
+ Facing: 220
+ Actor675: v15
+ Owner: Creeps
+ Location: 147,141
+ Actor676: v15
+ Owner: Creeps
+ Location: 149,141
+ Actor677: v15
+ Owner: Creeps
+ Location: 151,141
+ Actor678: v15
+ Owner: Creeps
+ Location: 150,141
+ Actor679: v15
+ Owner: Creeps
+ Location: 149,142
+ Actor684: v14
+ Owner: Creeps
+ Location: 148,141
+ Actor685: v14
+ Owner: Creeps
+ Location: 148,142
+ Actor686: v14
+ Owner: Creeps
+ Location: 146,142
+ Actor687: v14
+ Owner: Creeps
+ Location: 150,142
+ Actor688: v16
+ Owner: Creeps
+ Location: 148,141
+ Actor689: v16
+ Owner: Creeps
+ Location: 148,142
+ Actor690: v16
+ Owner: Creeps
+ Location: 146,142
+ Actor691: v17
+ Owner: Creeps
+ Location: 150,142
+ Actor692: v17
+ Owner: Creeps
+ Location: 147,142
+ Actor680: c3
+ Owner: Creeps
+ Location: 51,127
+ SubCell: 3
+ Facing: 92
+ Actor710: gmine
+ Owner: Neutral
+ Location: 152,94
+ Actor718: gmine
+ Owner: Neutral
+ Location: 148,80
+ Actor696: mine
+ Owner: Neutral
+ Location: 28,168
+ Actor599: tc01
+ Owner: Neutral
+ Location: 91,125
+ Actor568: tc04
+ Owner: Neutral
+ Location: 68,107
+ Actor564: t05
+ Owner: Neutral
+ Location: 150,117
+ Actor569: mine
+ Owner: Neutral
+ Location: 157,110
+ Actor571: tc01
+ Owner: Neutral
+ Location: 176,92
+ Actor618: mine
+ Owner: Neutral
+ Location: 190,120
+ Actor613: mine
+ Owner: Neutral
+ Location: 62,128
+ Actor579: mine
+ Owner: Neutral
+ Location: 68,98
+ Actor581: tc01
+ Owner: Neutral
+ Location: 85,115
+ Actor609: tc01
+ Owner: Neutral
+ Location: 89,121
+ Actor619: t05
+ Owner: Neutral
+ Location: 81,70
+ Actor590: mine
+ Owner: Neutral
+ Location: 175,56
+ Actor605: mine
+ Owner: Neutral
+ Location: 170,75
+ Actor573: tc04
+ Owner: Neutral
+ Location: 77,151
+ Actor625: tc01
+ Owner: Neutral
+ Location: 82,150
+ Actor627: mine
+ Owner: Neutral
+ Location: 75,147
+ Actor629: mine
+ Owner: Neutral
+ Location: 101,156
+ Actor616: mine
+ Owner: Neutral
+ Location: 96,133
+ Actor565: mine
+ Owner: Neutral
+ Location: 115,129
+ Actor607: mine
+ Owner: Neutral
+ Location: 141,118
+ Actor570: tc03
+ Owner: Neutral
+ Location: 142,138
+ Actor556: t16
+ Owner: Neutral
+ Location: 169,124
+ Actor622: v18
+ Owner: Neutral
+ Location: 104,138
+ Actor638: v18
+ Owner: Neutral
+ Location: 107,138
+ Actor643: v15
+ Owner: Neutral
+ Location: 108,138
+ Actor649: v17
+ Owner: Neutral
+ Location: 109,138
+ Actor650: v17
+ Owner: Neutral
+ Location: 109,138
+ Actor651: v17
+ Owner: Neutral
+ Location: 110,138
+ Actor653: v15
+ Owner: Neutral
+ Location: 111,138
+ Actor655: v15
+ Owner: Neutral
+ Location: 102,139
+ Actor663: v18
+ Owner: Neutral
+ Location: 103,139
+ Actor664: v15
+ Owner: Neutral
+ Location: 104,139
+ Actor665: v18
+ Owner: Neutral
+ Location: 105,139
+ Actor668: v17
+ Owner: Neutral
+ Location: 108,139
+ Actor669: v17
+ Owner: Neutral
+ Location: 109,139
+ Actor670: v18
+ Owner: Neutral
+ Location: 103,140
+ Actor671: v18
+ Owner: Neutral
+ Location: 104,140
+ Actor672: v18
+ Owner: Neutral
+ Location: 105,140
+ Actor673: v18
+ Owner: Neutral
+ Location: 106,140
+ Actor674: v15
+ Owner: Neutral
+ Location: 109,141
+ Actor681: v16
+ Owner: Neutral
+ Location: 110,141
+ Actor695: v15
+ Owner: Neutral
+ Location: 111,141
+ Actor697: v16
+ Owner: Neutral
+ Location: 104,142
+ Actor699: v15
+ Owner: Neutral
+ Location: 105,142
+ Actor700: v15
+ Owner: Neutral
+ Location: 107,142
+ Actor701: v16
+ Owner: Neutral
+ Location: 108,142
+ Actor702: v16
+ Owner: Neutral
+ Location: 109,142
+ Actor703: v15
+ Owner: Neutral
+ Location: 110,142
+ Actor704: v16
+ Owner: Neutral
+ Location: 102,143
+ Actor705: v15
+ Owner: Neutral
+ Location: 103,143
+ Actor706: v16
+ Owner: Neutral
+ Location: 104,143
+ Actor707: v15
+ Owner: Neutral
+ Location: 105,143
+ Actor708: v15
+ Owner: Neutral
+ Location: 105,143
+ Actor709: v16
+ Owner: Neutral
+ Location: 107,143
+ Actor711: v16
+ Owner: Neutral
+ Location: 108,143
+ Actor712: v16
+ Owner: Neutral
+ Location: 109,143
+ Actor713: v16
+ Owner: Neutral
+ Location: 102,144
+ Actor714: v16
+ Owner: Neutral
+ Location: 103,144
+ Actor715: v16
+ Owner: Neutral
+ Location: 104,144
+ Actor637: mine
+ Owner: Neutral
+ Location: 141,134
+ Actor666: v16
+ Owner: Neutral
+ Location: 121,135
+ Actor667: v15
+ Owner: Neutral
+ Location: 122,135
+ Actor716: v15
+ Owner: Neutral
+ Location: 123,135
+ Actor717: v17
+ Owner: Neutral
+ Location: 124,135
+ Actor719: v16
+ Owner: Neutral
+ Location: 120,136
+ Actor720: v16
+ Owner: Neutral
+ Location: 121,136
+ Actor721: v16
+ Owner: Neutral
+ Location: 122,136
+ Actor722: v16
+ Owner: Neutral
+ Location: 123,136
+ Actor723: v16
+ Owner: Neutral
+ Location: 124,136
+ Actor724: v15
+ Owner: Neutral
+ Location: 119,137
+ Actor725: v15
+ Owner: Neutral
+ Location: 120,137
+ Actor726: v15
+ Owner: Neutral
+ Location: 121,137
+ Actor727: v15
+ Owner: Neutral
+ Location: 122,137
+ Actor728: v17
+ Owner: Neutral
+ Location: 123,137
+ Actor729: v17
+ Owner: Neutral
+ Location: 124,137
+ Actor730: v15
+ Owner: Neutral
+ Location: 119,138
+ Actor731: v17
+ Owner: Neutral
+ Location: 120,138
+ Actor732: v17
+ Owner: Neutral
+ Location: 121,138
+ Actor733: v17
+ Owner: Neutral
+ Location: 122,138
+ Actor734: v17
+ Owner: Neutral
+ Location: 123,138
+ Actor735: v15
+ Owner: Neutral
+ Location: 124,138
+ Actor742: v16
+ Owner: Neutral
+ Location: 128,133
+ Actor743: v15
+ Owner: Neutral
+ Location: 129,133
+ Actor744: v15
+ Owner: Neutral
+ Location: 131,133
+ Actor745: v16
+ Owner: Neutral
+ Location: 132,133
+ Actor746: v16
+ Owner: Neutral
+ Location: 126,134
+ Actor747: v15
+ Owner: Neutral
+ Location: 127,134
+ Actor748: v16
+ Owner: Neutral
+ Location: 128,134
+ Actor749: v15
+ Owner: Neutral
+ Location: 129,134
+ Actor750: v15
+ Owner: Neutral
+ Location: 129,134
+ Actor751: v16
+ Owner: Neutral
+ Location: 131,134
+ Actor752: v16
+ Owner: Neutral
+ Location: 132,134
+ Actor753: v16
+ Owner: Neutral
+ Location: 133,134
+ Actor754: v16
+ Owner: Neutral
+ Location: 126,135
+ Actor755: v16
+ Owner: Neutral
+ Location: 127,135
+ Actor756: v16
+ Owner: Neutral
+ Location: 128,135
+ Actor736: v18
+ Owner: Neutral
+ Location: 156,123
+ Actor737: v18
+ Owner: Neutral
+ Location: 157,123
+ Actor738: v17
+ Owner: Neutral
+ Location: 153,124
+ Actor739: v15
+ Owner: Neutral
+ Location: 156,124
+ Actor740: v18
+ Owner: Neutral
+ Location: 157,124
+ Actor741: v18
+ Owner: Neutral
+ Location: 158,124
+ Actor757: v15
+ Owner: Neutral
+ Location: 149,125
+ Actor758: v17
+ Owner: Neutral
+ Location: 150,125
+ Actor759: v17
+ Owner: Neutral
+ Location: 151,125
+ Actor760: v17
+ Owner: Neutral
+ Location: 152,125
+ Actor761: v17
+ Owner: Neutral
+ Location: 153,125
+ Actor762: v18
+ Owner: Neutral
+ Location: 155,125
+ Actor763: v18
+ Owner: Neutral
+ Location: 156,125
+ Actor764: v15
+ Owner: Neutral
+ Location: 150,126
+ Actor765: v17
+ Owner: Neutral
+ Location: 151,126
+ Actor766: v17
+ Owner: Neutral
+ Location: 152,126
+ Actor767: v15
+ Owner: Neutral
+ Location: 153,126
+ Actor768: v18
+ Owner: Neutral
+ Location: 155,126
+ Actor769: v15
+ Owner: Neutral
+ Location: 156,126
+ Actor770: v15
+ Owner: Neutral
+ Location: 151,127
+ Actor771: v15
+ Owner: Neutral
+ Location: 152,127
+ Actor772: v15
+ Owner: Neutral
+ Location: 155,127
+ Actor773: v15
+ Owner: Neutral
+ Location: 156,127
+ Actor633: mine
+ Owner: Neutral
+ Location: 166,128
+ Actor563: tc04
+ Owner: Neutral
+ Location: 180,108
+ Actor591: mine
+ Owner: Neutral
+ Location: 143,52
+ Actor615: mine
+ Owner: Neutral
+ Location: 228,126
+ Actor578: mine
+ Owner: Neutral
+ Location: 105,28
+ Actor580: lhus
+ Owner: Neutral
+ Location: 112,18
+ Actor683: mine
+ Owner: Neutral
+ Location: 75,73
+ Actor693: mine
+ Owner: Neutral
+ Location: 196,79
+ Actor782: mine
+ Owner: Neutral
+ Location: 218,91
+ Actor557: mine
+ Owner: Neutral
+ Location: 194,100
+ Actor623: tc04
+ Owner: Neutral
+ Location: 189,101
+ Actor562: t16
+ Owner: Neutral
+ Location: 46,179
+ Actor662: mine
+ Owner: Neutral
+ Location: 96,111
+ Actor617: tc02
+ Owner: Neutral
+ Location: 79,116
+ Actor682: mine
+ Owner: Neutral
+ Location: 215,70
+ Actor779: mine
+ Owner: Neutral
+ Location: 282,173
+ Actor792: mine
+ Owner: Neutral
+ Location: 281,175
+ Actor624: tc04
+ Owner: Neutral
+ Location: 134,184
+ Actor783: mine
+ Owner: Neutral
+ Location: 139,190
+ Actor787: mine
+ Owner: Neutral
+ Location: 141,192
+ Actor694: mine
+ Owner: Neutral
+ Location: 204,158
+ Actor785: mine
+ Owner: Neutral
+ Location: 203,160
+ Actor628: mpspawn
+ Owner: Neutral
+ Location: 194,156
+ Actor698: tc01
+ Owner: Neutral
+ Location: 195,151
+ Actor786: tc04
+ Owner: Neutral
+ Location: 19,105
+ Actor789: mine
+ Owner: Neutral
+ Location: 16,109
+ Actor790: mine
+ Owner: Neutral
+ Location: 14,112
+ Actor784: mpspawn
+ Owner: Neutral
+ Location: 16,101
+ Actor774: mpspawn
+ Owner: Neutral
+ Location: 184,14
+ Actor776: tc04
+ Owner: Neutral
+ Location: 20,10
+ Actor778: mine
+ Owner: Neutral
+ Location: 25,16
+ Actor795: mine
+ Owner: Neutral
+ Location: 27,18
+ Actor589: mine
+ Owner: Neutral
+ Location: 285,18
+ Actor647: mine
+ Owner: Neutral
+ Location: 282,19
+ Actor648: tc01
+ Owner: Neutral
+ Location: 275,24
+ Actor780: mpspawn
+ Owner: Neutral
+ Location: 279,24
+ Actor777: mpspawn
+ Owner: Neutral
+ Location: 278,181
+ Actor791: mine
+ Owner: Neutral
+ Location: 176,7
+ Actor630: mine
+ Owner: Neutral
+ Location: 177,10
+ Actor781: mpspawn
+ Owner: Neutral
+ Location: 18,16
+ Actor775: mpspawn
+ Owner: Neutral
+ Location: 131,190
+ Actor626: tc01
+ Owner: Neutral
+ Location: 134,194
+ Actor788: tc04
+ Owner: Neutral
+ Location: 176,13
diff --git a/mods/ura/maps/regeneration-basin.oramap b/mods/ura/maps/regeneration-basin.oramap
new file mode 100644
index 0000000..aa8aa18
Binary files /dev/null and b/mods/ura/maps/regeneration-basin.oramap differ
diff --git a/mods/ura/maps/shattered-mountain/map.bin b/mods/ura/maps/shattered-mountain/map.bin
new file mode 100644
index 0000000..ceee95d
Binary files /dev/null and b/mods/ura/maps/shattered-mountain/map.bin differ
diff --git a/mods/ura/maps/shattered-mountain/map.png b/mods/ura/maps/shattered-mountain/map.png
new file mode 100644
index 0000000..223abe9
Binary files /dev/null and b/mods/ura/maps/shattered-mountain/map.png differ
diff --git a/mods/ura/maps/shattered-mountain/map.yaml b/mods/ura/maps/shattered-mountain/map.yaml
new file mode 100644
index 0000000..ccb8908
--- /dev/null
+++ b/mods/ura/maps/shattered-mountain/map.yaml
@@ -0,0 +1,1558 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Shattered Mountain
+
+Author: james.bong
+
+Tileset: SNOW
+
+MapSize: 129,129
+
+Bounds: 1,1,127,127
+
+Visibility: Lobby
+
+Categories: Conquest
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: england
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Faction: england
+ Enemies: Multi0, Multi1, Multi2, Multi3, Multi4, Multi5, Multi6, Multi7
+ PlayerReference@Multi0:
+ Name: Multi0
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi1:
+ Name: Multi1
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi2:
+ Name: Multi2
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi3:
+ Name: Multi3
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi4:
+ Name: Multi4
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi5:
+ Name: Multi5
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi6:
+ Name: Multi6
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi7:
+ Name: Multi7
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+
+Actors:
+ Actor0: mine
+ Owner: Neutral
+ Location: 116,12
+ Actor1: mine
+ Owner: Neutral
+ Location: 116,26
+ Actor2: mine
+ Owner: Neutral
+ Location: 12,12
+ Actor3: mine
+ Owner: Neutral
+ Location: 12,26
+ Actor4: mine
+ Owner: Neutral
+ Location: 116,41
+ Actor5: mine
+ Owner: Neutral
+ Location: 116,55
+ Actor6: mine
+ Owner: Neutral
+ Location: 116,73
+ Actor7: mine
+ Owner: Neutral
+ Location: 116,87
+ Actor8: mine
+ Owner: Neutral
+ Location: 116,102
+ Actor9: mine
+ Owner: Neutral
+ Location: 116,116
+ Actor10: mine
+ Owner: Neutral
+ Location: 12,41
+ Actor11: mine
+ Owner: Neutral
+ Location: 12,55
+ Actor12: mine
+ Owner: Neutral
+ Location: 12,73
+ Actor13: mine
+ Owner: Neutral
+ Location: 12,87
+ Actor14: mine
+ Owner: Neutral
+ Location: 12,116
+ Actor15: mine
+ Owner: Neutral
+ Location: 12,102
+ Actor16: tc02
+ Owner: Neutral
+ Location: 53,4
+ Actor17: tc05
+ Owner: Neutral
+ Location: 47,4
+ Actor18: tc03
+ Owner: Neutral
+ Location: 46,6
+ Actor21: t07
+ Owner: Neutral
+ Location: 55,3
+ Actor22: tc01
+ Owner: Neutral
+ Location: 51,3
+ Actor23: t05
+ Owner: Neutral
+ Location: 50,4
+ Actor24: tc04
+ Owner: Neutral
+ Location: 43,5
+ Actor29: tc04
+ Owner: Neutral
+ Location: 65,9
+ Actor31: tc03
+ Owner: Neutral
+ Location: 63,11
+ Actor32: tc01
+ Owner: Neutral
+ Location: 63,9
+ Actor33: t07
+ Owner: Neutral
+ Location: 48,6
+ Actor34: t08
+ Owner: Neutral
+ Location: 49,7
+ Actor35: t17
+ Owner: Neutral
+ Location: 52,4
+ Actor36: t12
+ Owner: Neutral
+ Location: 51,4
+ Actor40: t08
+ Owner: Neutral
+ Location: 50,4
+ Actor51: t07
+ Owner: Neutral
+ Location: 65,11
+ Actor48: t12
+ Owner: Neutral
+ Location: 67,11
+ Actor49: t06
+ Owner: Neutral
+ Location: 61,11
+ Actor50: t08
+ Owner: Neutral
+ Location: 62,13
+ Actor52: t08
+ Owner: Neutral
+ Location: 66,13
+ Actor53: t11
+ Owner: Neutral
+ Location: 64,12
+ Actor54: t12
+ Owner: Neutral
+ Location: 63,12
+ Actor55: t08
+ Owner: Neutral
+ Location: 50,6
+ Actor56: tc04
+ Owner: Neutral
+ Location: 75,3
+ Actor58: tc05
+ Owner: Neutral
+ Location: 83,5
+ Actor59: tc03
+ Owner: Neutral
+ Location: 78,5
+ Actor60: tc03
+ Owner: Neutral
+ Location: 81,6
+ Actor61: t11
+ Owner: Neutral
+ Location: 80,4
+ Actor62: t07
+ Owner: Neutral
+ Location: 80,5
+ Actor67: t01
+ Owner: Neutral
+ Location: 74,3
+ Actor68: t08
+ Owner: Neutral
+ Location: 74,5
+ Actor69: t08
+ Owner: Neutral
+ Location: 77,5
+ Actor70: t08
+ Owner: Neutral
+ Location: 79,7
+ Actor71: t03
+ Owner: Neutral
+ Location: 80,6
+ Actor72: t03
+ Owner: Neutral
+ Location: 78,4
+ Actor77: tc03
+ Owner: Neutral
+ Location: 71,0
+ Actor82: tc04
+ Owner: Neutral
+ Location: 47,0
+ Actor84: t11
+ Owner: Neutral
+ Location: 55,0
+ Actor85: t16
+ Owner: Neutral
+ Location: 54,0
+ Actor86: t01
+ Owner: Neutral
+ Location: 53,0
+ Actor87: t14
+ Owner: Neutral
+ Location: 51,0
+ Actor88: t02
+ Owner: Neutral
+ Location: 50,0
+ Actor89: tc01
+ Owner: Neutral
+ Location: 45,1
+ Actor90: t15
+ Owner: Neutral
+ Location: 43,0
+ Actor91: t13
+ Owner: Neutral
+ Location: 45,0
+ Actor93: tc05
+ Owner: Neutral
+ Location: 81,0
+ Actor94: tc02
+ Owner: Neutral
+ Location: 78,0
+ Actor95: t08
+ Owner: Neutral
+ Location: 81,2
+ Actor96: t06
+ Owner: Neutral
+ Location: 80,1
+ Actor97: tc01
+ Owner: Neutral
+ Location: 76,0
+ Actor98: t02
+ Owner: Neutral
+ Location: 73,0
+ Actor99: t11
+ Owner: Neutral
+ Location: 74,0
+ Actor100: t16
+ Owner: Neutral
+ Location: 84,0
+ Actor101: tc02
+ Owner: Neutral
+ Location: 86,4
+ Actor102: tc02
+ Owner: Neutral
+ Location: 41,4
+ Actor103: tc03
+ Owner: Neutral
+ Location: 87,2
+ Actor104: tc03
+ Owner: Neutral
+ Location: 40,2
+ Actor105: tc01
+ Owner: Neutral
+ Location: 88,0
+ Actor106: tc01
+ Owner: Neutral
+ Location: 39,0
+ Actor107: t12
+ Owner: Neutral
+ Location: 42,2
+ Actor108: t12
+ Owner: Neutral
+ Location: 86,2
+ Actor109: t08
+ Owner: Neutral
+ Location: 83,8
+ Actor110: t08
+ Owner: Neutral
+ Location: 45,8
+ Actor111: t06
+ Owner: Neutral
+ Location: 84,7
+ Actor112: t06
+ Owner: Neutral
+ Location: 44,7
+ Actor113: t16
+ Owner: Neutral
+ Location: 83,6
+ Actor114: tc03
+ Owner: Neutral
+ Location: 86,6
+ Actor115: tc03
+ Owner: Neutral
+ Location: 41,6
+ Actor116: t07
+ Owner: Neutral
+ Location: 88,3
+ Actor117: t07
+ Owner: Neutral
+ Location: 40,3
+ Actor118: t16
+ Owner: Neutral
+ Location: 39,1
+ Actor119: t16
+ Owner: Neutral
+ Location: 89,1
+ Actor120: t08
+ Owner: Neutral
+ Location: 62,115
+ Actor121: t08
+ Owner: Neutral
+ Location: 66,115
+ Actor122: t03
+ Owner: Neutral
+ Location: 62,11
+ Actor123: t05
+ Owner: Neutral
+ Location: 66,11
+ Actor125: tc01
+ Owner: Neutral
+ Location: 88,127
+ Actor124: tc01
+ Owner: Neutral
+ Location: 39,127
+ Actor126: tc03
+ Owner: Neutral
+ Location: 40,125
+ Actor127: tc03
+ Owner: Neutral
+ Location: 87,125
+ Actor128: tc02
+ Owner: Neutral
+ Location: 41,123
+ Actor129: tc02
+ Owner: Neutral
+ Location: 86,123
+ Actor130: t12
+ Owner: Neutral
+ Location: 86,124
+ Actor131: t08
+ Owner: Neutral
+ Location: 87,127
+ Actor132: tc03
+ Owner: Neutral
+ Location: 41,121
+ Actor133: tc03
+ Owner: Neutral
+ Location: 86,121
+ Actor134: tc04
+ Owner: Neutral
+ Location: 43,120
+ Actor135: t07
+ Owner: Neutral
+ Location: 39,125
+ Actor136: t06
+ Owner: Neutral
+ Location: 40,123
+ Actor137: t06
+ Owner: Neutral
+ Location: 88,123
+ Actor138: t07
+ Owner: Neutral
+ Location: 89,125
+ Actor139: tc05
+ Owner: Neutral
+ Location: 83,120
+ Actor140: tc05
+ Owner: Neutral
+ Location: 72,122
+ Actor141: tc04
+ Owner: Neutral
+ Location: 76,122
+ Actor142: tc04
+ Owner: Neutral
+ Location: 54,122
+ Actor143: tc05
+ Owner: Neutral
+ Location: 47,120
+ Actor145: tc05
+ Owner: Neutral
+ Location: 65,116
+ Actor146: tc04
+ Owner: Neutral
+ Location: 61,116
+ Actor152: tc02
+ Owner: Neutral
+ Location: 79,121
+ Actor153: tc01
+ Owner: Neutral
+ Location: 81,121
+ Actor154: t11
+ Owner: Neutral
+ Location: 80,122
+ Actor155: t16
+ Owner: Neutral
+ Location: 83,121
+ Actor156: t05
+ Owner: Neutral
+ Location: 79,122
+ Actor157: t07
+ Owner: Neutral
+ Location: 75,122
+ Actor158: t12
+ Owner: Neutral
+ Location: 75,123
+ Actor160: t08
+ Owner: Neutral
+ Location: 84,120
+ Actor161: t06
+ Owner: Neutral
+ Location: 83,119
+ Actor162: t03
+ Owner: Neutral
+ Location: 44,119
+ Actor163: t08
+ Owner: Neutral
+ Location: 45,120
+ Actor165: t12
+ Owner: Neutral
+ Location: 82,120
+ Actor166: t17
+ Owner: Neutral
+ Location: 81,120
+ Actor167: t17
+ Owner: Neutral
+ Location: 78,121
+ Actor168: t17
+ Owner: Neutral
+ Location: 68,117
+ Actor169: tc01
+ Owner: Neutral
+ Location: 47,122
+ Actor171: t12
+ Owner: Neutral
+ Location: 45,122
+ Actor172: tc03
+ Owner: Neutral
+ Location: 52,123
+ Actor174: tc05
+ Owner: Neutral
+ Location: 49,122
+ Actor175: t16
+ Owner: Neutral
+ Location: 49,123
+ Actor180: t12
+ Owner: Neutral
+ Location: 60,117
+ Actor181: t12
+ Owner: Neutral
+ Location: 46,120
+ Actor182: t08
+ Owner: Neutral
+ Location: 46,122
+ Actor183: t11
+ Owner: Neutral
+ Location: 64,114
+ Actor184: t16
+ Owner: Neutral
+ Location: 63,114
+ Actor185: t03
+ Owner: Neutral
+ Location: 61,115
+ Actor186: t17
+ Owner: Neutral
+ Location: 67,115
+ Actor187: t11
+ Owner: Neutral
+ Location: 64,117
+ Actor188: t06
+ Owner: Neutral
+ Location: 64,116
+ Actor189: t02
+ Owner: Neutral
+ Location: 63,115
+ Actor190: t06
+ Owner: Neutral
+ Location: 66,115
+ Actor191: t03
+ Owner: Neutral
+ Location: 65,115
+ Actor192: t03
+ Owner: Neutral
+ Location: 62,115
+ Actor210: tc02
+ Owner: Neutral
+ Location: 71,127
+ Actor211: tc04
+ Owner: Neutral
+ Location: 80,125
+ Actor212: tc05
+ Owner: Neutral
+ Location: 44,125
+ Actor213: tc04
+ Owner: Neutral
+ Location: 47,125
+ Actor214: tc01
+ Owner: Neutral
+ Location: 50,126
+ Actor215: tc03
+ Owner: Neutral
+ Location: 52,127
+ Actor216: tc03
+ Owner: Neutral
+ Location: 78,127
+ Actor217: tc03
+ Owner: Neutral
+ Location: 43,127
+ Actor218: t06
+ Owner: Neutral
+ Location: 54,126
+ Actor219: t03
+ Owner: Neutral
+ Location: 55,126
+ Actor220: t06
+ Owner: Neutral
+ Location: 56,126
+ Actor221: t07
+ Owner: Neutral
+ Location: 57,126
+ Actor222: t12
+ Owner: Neutral
+ Location: 58,126
+ Actor223: t08
+ Owner: Neutral
+ Location: 58,126
+ Actor224: t08
+ Owner: Neutral
+ Location: 83,125
+ Actor225: t07
+ Owner: Neutral
+ Location: 83,125
+ Actor226: t12
+ Owner: Neutral
+ Location: 84,125
+ Actor227: tc01
+ Owner: Neutral
+ Location: 76,126
+ Actor228: t12
+ Owner: Neutral
+ Location: 74,126
+ Actor229: t07
+ Owner: Neutral
+ Location: 73,126
+ Actor230: t08
+ Owner: Neutral
+ Location: 75,127
+ Actor231: t16
+ Owner: Neutral
+ Location: 83,126
+ Actor232: t12
+ Owner: Neutral
+ Location: 84,126
+ Actor233: t12
+ Owner: Neutral
+ Location: 79,125
+ Actor236: mine
+ Owner: Neutral
+ Location: 56,119
+ Actor237: mine
+ Owner: Neutral
+ Location: 50,118
+ Actor238: mine
+ Owner: Neutral
+ Location: 72,119
+ Actor239: mine
+ Owner: Neutral
+ Location: 78,118
+ Actor240: mine
+ Owner: Neutral
+ Location: 72,9
+ Actor241: mine
+ Owner: Neutral
+ Location: 78,10
+ Actor242: mine
+ Owner: Neutral
+ Location: 56,9
+ Actor243: mine
+ Owner: Neutral
+ Location: 50,10
+ Actor244: mine
+ Owner: Neutral
+ Location: 70,36
+ Actor245: mine
+ Owner: Neutral
+ Location: 64,37
+ Actor246: mine
+ Owner: Neutral
+ Location: 58,37
+ Actor247: mine
+ Owner: Neutral
+ Location: 52,42
+ Actor248: mine
+ Owner: Neutral
+ Location: 58,92
+ Actor249: mine
+ Owner: Neutral
+ Location: 64,91
+ Actor250: mine
+ Owner: Neutral
+ Location: 70,91
+ Actor251: mine
+ Owner: Neutral
+ Location: 76,86
+ Actor252: oilb
+ Owner: Neutral
+ Location: 31,33
+ Actor253: oilb
+ Owner: Neutral
+ Location: 96,33
+ Actor254: oilb
+ Owner: Neutral
+ Location: 31,94
+ Actor255: oilb
+ Owner: Neutral
+ Location: 96,94
+ Actor257: oilb
+ Owner: Neutral
+ Location: 96,65
+ Actor259: oilb
+ Owner: Neutral
+ Location: 31,65
+ Actor256: oilb
+ Owner: Neutral
+ Location: 96,62
+ Actor258: oilb
+ Owner: Neutral
+ Location: 31,62
+ Actor261: tc05
+ Owner: Neutral
+ Location: 95,35
+ Actor262: tc04
+ Owner: Neutral
+ Location: 96,30
+ Actor263: tc03
+ Owner: Neutral
+ Location: 94,30
+ Actor264: t15
+ Owner: Neutral
+ Location: 93,28
+ Actor265: t08
+ Owner: Neutral
+ Location: 93,30
+ Actor266: tc01
+ Owner: Neutral
+ Location: 98,32
+ Actor267: t11
+ Owner: Neutral
+ Location: 98,33
+ Actor268: t16
+ Owner: Neutral
+ Location: 98,34
+ Actor269: t08
+ Owner: Neutral
+ Location: 98,36
+ Actor270: tc01
+ Owner: Neutral
+ Location: 94,36
+ Actor271: t14
+ Owner: Neutral
+ Location: 93,37
+ Actor272: t03
+ Owner: Neutral
+ Location: 95,31
+ Actor273: t03
+ Owner: Neutral
+ Location: 97,34
+ Actor274: tc04
+ Owner: Neutral
+ Location: 30,30
+ Actor275: tc05
+ Owner: Neutral
+ Location: 31,35
+ Actor276: tc02
+ Owner: Neutral
+ Location: 29,34
+ Actor277: tc01
+ Owner: Neutral
+ Location: 29,32
+ Actor278: t11
+ Owner: Neutral
+ Location: 34,28
+ Actor279: t10
+ Owner: Neutral
+ Location: 32,29
+ Actor280: tc03
+ Owner: Neutral
+ Location: 33,30
+ Actor281: t06
+ Owner: Neutral
+ Location: 34,37
+ Actor282: t12
+ Owner: Neutral
+ Location: 34,38
+ Actor283: t12
+ Owner: Neutral
+ Location: 30,36
+ Actor284: tc04
+ Owner: Neutral
+ Location: 96,96
+ Actor285: tc05
+ Owner: Neutral
+ Location: 95,91
+ Actor286: t14
+ Owner: Neutral
+ Location: 93,90
+ Actor287: t16
+ Owner: Neutral
+ Location: 94,89
+ Actor288: t08
+ Owner: Neutral
+ Location: 94,92
+ Actor289: tc02
+ Owner: Neutral
+ Location: 98,94
+ Actor290: t11
+ Owner: Neutral
+ Location: 98,93
+ Actor291: t06
+ Owner: Neutral
+ Location: 98,92
+ Actor292: t06
+ Owner: Neutral
+ Location: 95,97
+ Actor293: t14
+ Owner: Neutral
+ Location: 93,98
+ Actor294: t16
+ Owner: Neutral
+ Location: 94,97
+ Actor295: t08
+ Owner: Neutral
+ Location: 93,98
+ Actor296: t17
+ Owner: Neutral
+ Location: 95,95
+ Actor297: tc04
+ Owner: Neutral
+ Location: 30,91
+ Actor298: tc05
+ Owner: Neutral
+ Location: 31,96
+ Actor299: tc01
+ Owner: Neutral
+ Location: 29,93
+ Actor300: tc03
+ Owner: Neutral
+ Location: 33,90
+ Actor301: t12
+ Owner: Neutral
+ Location: 34,88
+ Actor302: t08
+ Owner: Neutral
+ Location: 33,92
+ Actor303: tc02
+ Owner: Neutral
+ Location: 29,95
+ Actor304: t12
+ Owner: Neutral
+ Location: 30,97
+ Actor305: t11
+ Owner: Neutral
+ Location: 34,98
+ Actor306: t08
+ Owner: Neutral
+ Location: 34,100
+ Actor307: t06
+ Owner: Neutral
+ Location: 34,97
+ Actor309: gmine
+ Owner: Neutral
+ Location: 64,59
+ Actor310: gmine
+ Owner: Neutral
+ Location: 64,69
+ Actor311: gmine
+ Owner: Neutral
+ Location: 59,64
+ Actor312: gmine
+ Owner: Neutral
+ Location: 69,64
+ Actor308: miss
+ Owner: Neutral
+ Location: 63,63
+ Actor313: v19.husk
+ Owner: Neutral
+ Location: 79,46
+ Actor314: v19.husk
+ Owner: Neutral
+ Location: 49,82
+ Actor316: tc02
+ Owner: Neutral
+ Location: 83,46
+ Actor317: tc02
+ Owner: Neutral
+ Location: 44,81
+ Actor318: t01
+ Owner: Neutral
+ Location: 51,81
+ Actor319: t12
+ Owner: Neutral
+ Location: 49,83
+ Actor315: t03
+ Owner: Neutral
+ Location: 48,81
+ Actor320: t07
+ Owner: Neutral
+ Location: 79,43
+ Actor321: t17
+ Owner: Neutral
+ Location: 77,45
+ Actor322: t01
+ Owner: Neutral
+ Location: 82,43
+ Actor323: t02
+ Owner: Neutral
+ Location: 46,83
+ Actor324: t08
+ Owner: Neutral
+ Location: 47,85
+ Actor325: t08
+ Owner: Neutral
+ Location: 81,42
+ Actor326: miss
+ Owner: Neutral
+ Location: 63,102
+ Actor327: miss
+ Owner: Neutral
+ Location: 63,24
+ Actor328: fcom
+ Owner: Neutral
+ Location: 48,33
+ Actor329: fcom
+ Owner: Neutral
+ Location: 79,93
+ Actor332: tc01
+ Owner: Neutral
+ Location: 79,49
+ Actor333: tc01
+ Owner: Neutral
+ Location: 48,77
+ Actor334: t08
+ Owner: Neutral
+ Location: 47,76
+ Actor335: t08
+ Owner: Neutral
+ Location: 81,51
+ Actor336: t08
+ Owner: Neutral
+ Location: 50,79
+ Actor337: t08
+ Owner: Neutral
+ Location: 78,49
+ Actor338: snowhut
+ Owner: Neutral
+ Location: 52,78
+ Actor330: snowhut
+ Owner: Neutral
+ Location: 75,49
+ Actor331: t03
+ Owner: Neutral
+ Location: 76,48
+ Actor339: tc04
+ Owner: Neutral
+ Location: 31,59
+ Actor341: tc02
+ Owner: Neutral
+ Location: 29,63
+ Actor342: tc01
+ Owner: Neutral
+ Location: 29,65
+ Actor343: tc01
+ Owner: Neutral
+ Location: 29,61
+ Actor344: t12
+ Owner: Neutral
+ Location: 30,60
+ Actor345: t12
+ Owner: Neutral
+ Location: 29,64
+ Actor347: t08
+ Owner: Neutral
+ Location: 95,64
+ Actor340: tc02
+ Owner: Neutral
+ Location: 31,67
+ Actor348: tc02
+ Owner: Neutral
+ Location: 95,67
+ Actor349: t12
+ Owner: Neutral
+ Location: 30,67
+ Actor350: tc02
+ Owner: Neutral
+ Location: 98,63
+ Actor351: tc05
+ Owner: Neutral
+ Location: 94,59
+ Actor352: t16
+ Owner: Neutral
+ Location: 34,59
+ Actor353: t06
+ Owner: Neutral
+ Location: 98,61
+ Actor354: t10
+ Owner: Neutral
+ Location: 97,60
+ Actor355: t12
+ Owner: Neutral
+ Location: 98,65
+ Actor356: t08
+ Owner: Neutral
+ Location: 99,65
+ Actor357: t06
+ Owner: Neutral
+ Location: 98,66
+ Actor358: t05
+ Owner: Neutral
+ Location: 97,66
+ Actor359: t12
+ Owner: Neutral
+ Location: 98,67
+ Actor360: t02
+ Owner: Neutral
+ Location: 97,63
+ Actor361: t07
+ Owner: Neutral
+ Location: 94,57
+ Actor362: t01
+ Owner: Neutral
+ Location: 34,57
+ Actor363: t01
+ Owner: Neutral
+ Location: 34,69
+ Actor364: t16
+ Owner: Neutral
+ Location: 94,69
+ Actor365: t08
+ Owner: Neutral
+ Location: 94,68
+ Actor366: t08
+ Owner: Neutral
+ Location: 34,68
+ Actor367: t12
+ Owner: Neutral
+ Location: 33,67
+ Actor368: t08
+ Owner: Neutral
+ Location: 33,64
+ Actor369: tc04
+ Owner: Neutral
+ Location: 0,0
+ Actor370: tc05
+ Owner: Neutral
+ Location: 126,0
+ Actor371: t08
+ Owner: Neutral
+ Location: 126,2
+ Actor372: t08
+ Owner: Neutral
+ Location: 1,2
+ Actor373: tc05
+ Owner: Neutral
+ Location: 0,125
+ Actor374: tc04
+ Owner: Neutral
+ Location: 126,125
+ Actor375: t02
+ Owner: Neutral
+ Location: 125,126
+ Actor376: tc04
+ Owner: Neutral
+ Location: 6,0
+ Actor377: tc05
+ Owner: Neutral
+ Location: 0,5
+ Actor378: tc03
+ Owner: Neutral
+ Location: 5,3
+ Actor379: tc03
+ Owner: Neutral
+ Location: 3,5
+ Actor380: t14
+ Owner: Neutral
+ Location: 2,4
+ Actor381: t17
+ Owner: Neutral
+ Location: 5,1
+ Actor382: tc04
+ Owner: Neutral
+ Location: 126,5
+ Actor383: tc05
+ Owner: Neutral
+ Location: 120,0
+ Actor384: tc03
+ Owner: Neutral
+ Location: 122,3
+ Actor385: tc03
+ Owner: Neutral
+ Location: 124,5
+ Actor386: t08
+ Owner: Neutral
+ Location: 123,5
+ Actor387: tc04
+ Owner: Neutral
+ Location: 126,121
+ Actor388: tc05
+ Owner: Neutral
+ Location: 120,126
+ Actor389: tc03
+ Owner: Neutral
+ Location: 124,122
+ Actor390: tc03
+ Owner: Neutral
+ Location: 122,124
+ Actor391: t12
+ Owner: Neutral
+ Location: 121,125
+ Actor392: t16
+ Owner: Neutral
+ Location: 119,127
+ Actor393: tc04
+ Owner: Neutral
+ Location: 6,126
+ Actor394: tc05
+ Owner: Neutral
+ Location: 0,121
+ Actor395: tc03
+ Owner: Neutral
+ Location: 5,124
+ Actor396: tc03
+ Owner: Neutral
+ Location: 3,122
+ Actor397: t12
+ Owner: Neutral
+ Location: 5,126
+ Actor398: t08
+ Owner: Neutral
+ Location: 5,123
+ Actor399: t08
+ Owner: Neutral
+ Location: 7,125
+ Actor400: tc02
+ Owner: Neutral
+ Location: 26,5
+ Actor401: tc02
+ Owner: Neutral
+ Location: 101,5
+ Actor402: tc02
+ Owner: Neutral
+ Location: 26,122
+ Actor403: tc02
+ Owner: Neutral
+ Location: 101,122
+ Actor404: t16
+ Owner: Neutral
+ Location: 30,5
+ Actor405: t02
+ Owner: Neutral
+ Location: 32,6
+ Actor406: t08
+ Owner: Neutral
+ Location: 31,6
+ Actor407: t03
+ Owner: Neutral
+ Location: 30,6
+ Actor408: t08
+ Owner: Neutral
+ Location: 25,6
+ Actor409: t08
+ Owner: Neutral
+ Location: 103,6
+ Actor410: t06
+ Owner: Neutral
+ Location: 98,5
+ Actor411: t16
+ Owner: Neutral
+ Location: 96,6
+ Actor412: t14
+ Owner: Neutral
+ Location: 96,5
+ Actor413: t08
+ Owner: Neutral
+ Location: 97,7
+ Actor414: t08
+ Owner: Neutral
+ Location: 100,123
+ Actor415: t08
+ Owner: Neutral
+ Location: 103,122
+ Actor416: t12
+ Owner: Neutral
+ Location: 98,122
+ Actor417: t16
+ Owner: Neutral
+ Location: 98,121
+ Actor418: t06
+ Owner: Neutral
+ Location: 96,120
+ Actor419: t07
+ Owner: Neutral
+ Location: 97,121
+ Actor420: t08
+ Owner: Neutral
+ Location: 25,122
+ Actor421: t07
+ Owner: Neutral
+ Location: 31,120
+ Actor422: t02
+ Owner: Neutral
+ Location: 30,121
+ Actor423: t03
+ Owner: Neutral
+ Location: 32,119
+ Actor424: t08
+ Owner: Neutral
+ Location: 32,121
+ Actor425: tc03
+ Owner: Neutral
+ Location: 0,8
+ Actor426: tc03
+ Owner: Neutral
+ Location: 0,119
+ Actor427: tc03
+ Owner: Neutral
+ Location: 127,119
+ Actor428: tc03
+ Owner: Neutral
+ Location: 127,8
+ Actor429: tc05
+ Owner: Neutral
+ Location: 0,93
+ Actor430: tc02
+ Owner: Neutral
+ Location: 0,91
+ Actor431: tc01
+ Owner: Neutral
+ Location: 0,96
+ Actor432: t08
+ Owner: Neutral
+ Location: 1,98
+ Actor433: tc04
+ Owner: Neutral
+ Location: 126,93
+ Actor434: tc02
+ Owner: Neutral
+ Location: 127,96
+ Actor435: tc01
+ Owner: Neutral
+ Location: 127,91
+ Actor436: t08
+ Owner: Neutral
+ Location: 127,98
+ Actor437: tc05
+ Owner: Neutral
+ Location: 126,63
+ Actor438: tc01
+ Owner: Neutral
+ Location: 127,66
+ Actor439: tc02
+ Owner: Neutral
+ Location: 127,61
+ Actor440: tc04
+ Owner: Neutral
+ Location: 0,63
+ Actor441: tc02
+ Owner: Neutral
+ Location: 0,66
+ Actor442: tc01
+ Owner: Neutral
+ Location: 0,61
+ Actor443: tc05
+ Owner: Neutral
+ Location: 0,32
+ Actor444: tc02
+ Owner: Neutral
+ Location: 0,30
+ Actor445: tc01
+ Owner: Neutral
+ Location: 0,35
+ Actor446: t08
+ Owner: Neutral
+ Location: 1,37
+ Actor448: tc01
+ Owner: Neutral
+ Location: 1,57
+ Actor449: tc01
+ Owner: Neutral
+ Location: 1,69
+ Actor447: tc01
+ Owner: Neutral
+ Location: 1,39
+ Actor452: tc03
+ Owner: Neutral
+ Location: 0,71
+ Actor450: tc03
+ Owner: Neutral
+ Location: 0,41
+ Actor451: tc03
+ Owner: Neutral
+ Location: 0,56
+ Actor453: tc01
+ Owner: Neutral
+ Location: 1,26
+ Actor454: tc03
+ Owner: Neutral
+ Location: 0,25
+ Actor455: tc03
+ Owner: Neutral
+ Location: 0,86
+ Actor456: tc01
+ Owner: Neutral
+ Location: 1,87
+ Actor457: tc01
+ Owner: Neutral
+ Location: 1,100
+ Actor458: tc03
+ Owner: Neutral
+ Location: 0,102
+ Actor459: t08
+ Owner: Neutral
+ Location: 35,127
+ Actor460: tc04
+ Owner: Neutral
+ Location: 126,32
+ Actor461: tc02
+ Owner: Neutral
+ Location: 127,30
+ Actor462: tc01
+ Owner: Neutral
+ Location: 127,35
+ Actor463: t08
+ Owner: Neutral
+ Location: 127,37
+ Actor464: tc01
+ Owner: Neutral
+ Location: 126,26
+ Actor465: tc03
+ Owner: Neutral
+ Location: 127,24
+ Actor466: tc01
+ Owner: Neutral
+ Location: 126,40
+ Actor467: tc03
+ Owner: Neutral
+ Location: 127,42
+ Actor469: tc01
+ Owner: Neutral
+ Location: 126,70
+ Actor468: tc03
+ Owner: Neutral
+ Location: 127,72
+ Actor470: tc03
+ Owner: Neutral
+ Location: 127,103
+ Actor471: tc01
+ Owner: Neutral
+ Location: 126,101
+ Actor472: tc01
+ Owner: Neutral
+ Location: 126,87
+ Actor473: tc03
+ Owner: Neutral
+ Location: 127,85
+ Actor474: tc03
+ Owner: Neutral
+ Location: 127,55
+ Actor475: tc01
+ Owner: Neutral
+ Location: 126,57
+ Actor476: t03
+ Owner: Neutral
+ Location: 35,0
+ Actor477: t16
+ Owner: Neutral
+ Location: 93,0
+ Actor478: t08
+ Owner: Neutral
+ Location: 93,127
+ Actor479: t06
+ Owner: Neutral
+ Location: 92,127
+ Actor480: v03
+ Owner: Neutral
+ Location: 48,106
+ Actor482: v02
+ Owner: Neutral
+ Location: 43,27
+ Actor483: v01
+ Owner: Neutral
+ Location: 79,21
+ Actor481: v06
+ Owner: Neutral
+ Location: 84,100
+ Actor484: t01
+ Owner: Neutral
+ Location: 81,20
+ Actor485: v08
+ Owner: Neutral
+ Location: 74,21
+ Actor486: v09
+ Owner: Neutral
+ Location: 48,25
+ Actor487: v10
+ Owner: Neutral
+ Location: 80,103
+ Actor488: v11
+ Owner: Neutral
+ Location: 53,104
+ Actor489: t08
+ Owner: Neutral
+ Location: 47,24
+ Actor490: t08
+ Owner: Neutral
+ Location: 84,101
+ Actor491: t12
+ Owner: Neutral
+ Location: 52,102
+ Actor492: mpspawn
+ Owner: Neutral
+ Location: 19,19
+ Actor493: mpspawn
+ Owner: Neutral
+ Location: 19,47
+ Actor494: mpspawn
+ Owner: Neutral
+ Location: 19,81
+ Actor495: mpspawn
+ Owner: Neutral
+ Location: 19,109
+ Actor496: mpspawn
+ Owner: Neutral
+ Location: 109,19
+ Actor497: mpspawn
+ Owner: Neutral
+ Location: 109,47
+ Actor498: mpspawn
+ Owner: Neutral
+ Location: 109,81
+ Actor499: mpspawn
+ Owner: Neutral
+ Location: 109,109
+ Actor500: t01
+ Owner: Neutral
+ Location: 71,82
+ Actor502: t06
+ Owner: Neutral
+ Location: 68,84
+ Actor501: t08
+ Owner: Neutral
+ Location: 69,84
+ Actor503: t08
+ Owner: Neutral
+ Location: 61,85
+ Actor504: t16
+ Owner: Neutral
+ Location: 60,42
+ Actor505: t12
+ Owner: Neutral
+ Location: 67,42
+ Actor506: t08
+ Owner: Neutral
+ Location: 58,44
+ Actor507: t01
+ Owner: Neutral
+ Location: 57,44
+ Actor518: t12
+ Owner: Neutral
+ Location: 71,122
+ Actor519: t06
+ Owner: Neutral
+ Location: 72,123
+ Actor520: t01
+ Owner: Neutral
+ Location: 64,120
+ Actor521: t01
+ Owner: Neutral
+ Location: 64,6
+ Actor522: tc04
+ Owner: Neutral
+ Location: 68,-1
+ Actor523: t16
+ Owner: Neutral
+ Location: 70,1
+ Actor524: tc02
+ Owner: Neutral
+ Location: 60,9
+ Actor525: t01
+ Owner: Neutral
+ Location: 62,9
+ Actor526: tc03
+ Owner: Neutral
+ Location: 60,7
+ Actor527: tc03
+ Owner: Neutral
+ Location: 67,7
+ Actor528: t16
+ Owner: Neutral
+ Location: 68,8
+ Actor529: t08
+ Owner: Neutral
+ Location: 68,10
+ Actor532: t17
+ Owner: Neutral
+ Location: 67,5
+ Actor533: t07
+ Owner: Neutral
+ Location: 61,5
+ Actor535: t07
+ Owner: Neutral
+ Location: 57,4
+ Actor536: t08
+ Owner: Neutral
+ Location: 71,5
+ Actor534: t16
+ Owner: Neutral
+ Location: 71,3
+ Actor537: t11
+ Owner: Neutral
+ Location: 72,3
+ Actor538: t01
+ Owner: Neutral
+ Location: 73,4
+ Actor539: t07
+ Owner: Neutral
+ Location: 72,4
+ Actor530: t10
+ Owner: Neutral
+ Location: 55,4
+ Actor531: t05
+ Owner: Neutral
+ Location: 56,3
+ Actor540: tc02
+ Owner: Neutral
+ Location: 59,0
+ Actor541: tc01
+ Owner: Neutral
+ Location: 57,0
+ Actor508: t16
+ Owner: Neutral
+ Location: 57,122
+ Actor510: t07
+ Owner: Neutral
+ Location: 71,123
+ Actor509: t12
+ Owner: Neutral
+ Location: 57,123
+ Actor511: tc03
+ Owner: Neutral
+ Location: 60,120
+ Actor512: tc03
+ Owner: Neutral
+ Location: 67,120
+ Actor514: t11
+ Owner: Neutral
+ Location: 60,118
+ Actor513: t08
+ Owner: Neutral
+ Location: 68,119
+ Actor515: t17
+ Owner: Neutral
+ Location: 67,118
+ Actor517: t08
+ Owner: Neutral
+ Location: 67,122
+ Actor516: t17
+ Owner: Neutral
+ Location: 61,121
+ Actor542: tc02
+ Owner: Neutral
+ Location: 69,126
+ Actor544: t07
+ Owner: Neutral
+ Location: 59,125
+ Actor545: t08
+ Owner: Neutral
+ Location: 59,127
+ Actor546: t16
+ Owner: Neutral
+ Location: 60,126
+ Actor543: t12
+ Owner: Neutral
+ Location: 68,126
+ Actor547: t03
+ Owner: Neutral
+ Location: 63,117
+ Actor548: t01
+ Owner: Neutral
+ Location: 80,63
+ Actor549: t05
+ Owner: Neutral
+ Location: 79,60
+ Actor550: t03
+ Owner: Neutral
+ Location: 78,58
+ Actor551: t08
+ Owner: Neutral
+ Location: 80,61
+ Actor552: t11
+ Owner: Neutral
+ Location: 80,62
+ Actor553: t10
+ Owner: Neutral
+ Location: 47,64
+ Actor554: t16
+ Owner: Neutral
+ Location: 48,63
+ Actor555: t08
+ Owner: Neutral
+ Location: 47,67
+ Actor556: t02
+ Owner: Neutral
+ Location: 48,66
+ Actor557: t12
+ Owner: Neutral
+ Location: 49,68
+ Actor558: t17
+ Owner: Neutral
+ Location: 47,61
+ Actor559: t17
+ Owner: Neutral
+ Location: 81,65
+ Actor560: t08
+ Owner: Neutral
+ Location: 47,63
+ Actor561: t08
+ Owner: Neutral
+ Location: 81,64
+
+Rules: rules.yaml
diff --git a/mods/ura/maps/shattered-mountain/rules.yaml b/mods/ura/maps/shattered-mountain/rules.yaml
new file mode 100644
index 0000000..bf37c5c
--- /dev/null
+++ b/mods/ura/maps/shattered-mountain/rules.yaml
@@ -0,0 +1,21 @@
+World:
+ WeatherOverlay:
+ ChangingWindLevel: true
+ WindLevels: -5, -3, -2, 0, 2, 3, 5, 6
+ WindTick: 150, 550
+ InstantWindChanges: false
+ UseSquares: true
+ ParticleSize: 2, 3
+ ParticleDensityFactor: 8
+ ScatterDirection: -1, 1
+ Gravity: 1.00, 2.00
+ SwingOffset: 1.0, 1.5
+ SwingSpeed: 0.001, 0.025
+ SwingAmplitude: 1.0, 1.5
+ ParticleColors: ECECEC, E4E4E4, D0D0D0, BCBCBC
+ LineTailAlphaValue: 0
+ GlobalLightingPaletteEffect:
+ Red: 0.88
+ Green: 0.92
+ Blue: 1.06
+ Ambient: 1.1
diff --git a/mods/ura/maps/sidestep.oramap b/mods/ura/maps/sidestep.oramap
new file mode 100644
index 0000000..6c0096b
Binary files /dev/null and b/mods/ura/maps/sidestep.oramap differ
diff --git a/mods/ura/maps/singles.oramap b/mods/ura/maps/singles.oramap
new file mode 100644
index 0000000..5ada42e
Binary files /dev/null and b/mods/ura/maps/singles.oramap differ
diff --git a/mods/ura/maps/six-below-zero/map.bin b/mods/ura/maps/six-below-zero/map.bin
new file mode 100644
index 0000000..74dbb77
Binary files /dev/null and b/mods/ura/maps/six-below-zero/map.bin differ
diff --git a/mods/ura/maps/six-below-zero/map.png b/mods/ura/maps/six-below-zero/map.png
new file mode 100644
index 0000000..6fc7761
Binary files /dev/null and b/mods/ura/maps/six-below-zero/map.png differ
diff --git a/mods/ura/maps/six-below-zero/map.yaml b/mods/ura/maps/six-below-zero/map.yaml
new file mode 100644
index 0000000..3c2d580
--- /dev/null
+++ b/mods/ura/maps/six-below-zero/map.yaml
@@ -0,0 +1,2591 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Six Below Zero
+
+Author: Echo of Damnation
+
+Tileset: SNOW
+
+MapSize: 130,130
+
+Bounds: 1,1,128,128
+
+Visibility: Lobby
+
+Categories: Conquest
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: england
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Faction: england
+ Enemies: Multi0, Multi1, Multi2, Multi3, Multi4, Multi5
+ PlayerReference@Multi0:
+ Name: Multi0
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi1:
+ Name: Multi1
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi2:
+ Name: Multi2
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi3:
+ Name: Multi3
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi4:
+ Name: Multi4
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi5:
+ Name: Multi5
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+
+Actors:
+ Actor1: gmine
+ Owner: Neutral
+ Location: 123,64
+ Actor2: gmine
+ Owner: Neutral
+ Location: 6,64
+ Actor3: gmine
+ Owner: Neutral
+ Location: 64,64
+ Actor5: tc03
+ Owner: Neutral
+ Location: 45,66
+ Actor7: t07
+ Owner: Neutral
+ Location: 82,59
+ Actor8: t08
+ Owner: Neutral
+ Location: 85,60
+ Actor9: t08
+ Owner: Neutral
+ Location: 43,67
+ Actor10: t02
+ Owner: Neutral
+ Location: 45,63
+ Actor11: t05
+ Owner: Neutral
+ Location: 85,63
+ Actor12: t11
+ Owner: Neutral
+ Location: 105,64
+ Actor13: t11
+ Owner: Neutral
+ Location: 25,62
+ Actor14: oilb
+ Owner: Neutral
+ Location: 46,46
+ Actor15: oilb
+ Owner: Neutral
+ Location: 81,81
+ Actor16: fenc
+ Owner: Neutral
+ Location: 75,83
+ Actor17: fenc
+ Owner: Neutral
+ Location: 76,83
+ Actor18: fenc
+ Owner: Neutral
+ Location: 76,83
+ Actor19: fenc
+ Owner: Neutral
+ Location: 77,83
+ Actor20: fenc
+ Owner: Neutral
+ Location: 77,84
+ Actor21: fenc
+ Owner: Neutral
+ Location: 80,86
+ Actor22: fenc
+ Owner: Neutral
+ Location: 80,87
+ Actor23: fenc
+ Owner: Neutral
+ Location: 80,88
+ Actor24: fenc
+ Owner: Neutral
+ Location: 79,86
+ Actor25: fenc
+ Owner: Neutral
+ Location: 83,77
+ Actor26: fenc
+ Owner: Neutral
+ Location: 83,76
+ Actor27: fenc
+ Owner: Neutral
+ Location: 83,75
+ Actor28: fenc
+ Owner: Neutral
+ Location: 84,77
+ Actor29: fenc
+ Owner: Neutral
+ Location: 86,80
+ Actor30: fenc
+ Owner: Neutral
+ Location: 87,80
+ Actor31: fenc
+ Owner: Neutral
+ Location: 88,80
+ Actor32: fenc
+ Owner: Neutral
+ Location: 86,79
+ Actor33: fenc
+ Owner: Neutral
+ Location: 51,45
+ Actor34: fenc
+ Owner: Neutral
+ Location: 52,45
+ Actor35: fenc
+ Owner: Neutral
+ Location: 53,45
+ Actor36: fenc
+ Owner: Neutral
+ Location: 51,44
+ Actor37: fenc
+ Owner: Neutral
+ Location: 45,53
+ Actor38: fenc
+ Owner: Neutral
+ Location: 45,52
+ Actor39: fenc
+ Owner: Neutral
+ Location: 45,51
+ Actor40: fenc
+ Owner: Neutral
+ Location: 44,51
+ Actor41: fenc
+ Owner: Neutral
+ Location: 48,42
+ Actor42: fenc
+ Owner: Neutral
+ Location: 48,41
+ Actor43: fenc
+ Owner: Neutral
+ Location: 48,40
+ Actor44: fenc
+ Owner: Neutral
+ Location: 49,42
+ Actor45: fenc
+ Owner: Neutral
+ Location: 40,48
+ Actor46: fenc
+ Owner: Neutral
+ Location: 41,48
+ Actor47: fenc
+ Owner: Neutral
+ Location: 42,48
+ Actor49: fenc
+ Owner: Neutral
+ Location: 42,49
+ Actor48: tc03
+ Owner: Neutral
+ Location: 48,49
+ Actor50: tc03
+ Owner: Neutral
+ Location: 79,78
+ Actor51: v11
+ Owner: Neutral
+ Location: 84,84
+ Actor52: v12
+ Owner: Neutral
+ Location: 83,85
+ Actor53: t08
+ Owner: Neutral
+ Location: 84,83
+ Actor54: brl3
+ Owner: Neutral
+ Location: 80,82
+ Actor55: brl3
+ Owner: Neutral
+ Location: 83,81
+ Actor56: barl
+ Owner: Neutral
+ Location: 81,83
+ Actor57: barl
+ Owner: Neutral
+ Location: 82,80
+ Actor58: brl3
+ Owner: Neutral
+ Location: 46,48
+ Actor59: brl3
+ Owner: Neutral
+ Location: 47,45
+ Actor60: barl
+ Owner: Neutral
+ Location: 48,46
+ Actor61: barl
+ Owner: Neutral
+ Location: 45,47
+ Actor62: v09
+ Owner: Neutral
+ Location: 44,44
+ Actor63: v13
+ Owner: Neutral
+ Location: 45,43
+ Actor64: t16
+ Owner: Neutral
+ Location: 43,44
+ Actor65: t16
+ Owner: Neutral
+ Location: 68,69
+ Actor66: tc01
+ Owner: Neutral
+ Location: 59,69
+ Actor67: tc03
+ Owner: Neutral
+ Location: 59,57
+ Actor68: t02
+ Owner: Neutral
+ Location: 70,59
+ Actor69: t15
+ Owner: Neutral
+ Location: 57,59
+ Actor70: tc04
+ Owner: Neutral
+ Location: 103,71
+ Actor71: tc03
+ Owner: Neutral
+ Location: 104,70
+ Actor72: t11
+ Owner: Neutral
+ Location: 103,69
+ Actor73: tc05
+ Owner: Neutral
+ Location: 25,55
+ Actor74: tc03
+ Owner: Neutral
+ Location: 25,57
+ Actor75: t14
+ Owner: Neutral
+ Location: 25,58
+ Actor76: t15
+ Owner: Neutral
+ Location: 29,52
+ Actor77: tc01
+ Owner: Neutral
+ Location: 99,74
+ Actor78: tc02
+ Owner: Neutral
+ Location: 79,65
+ Actor82: tc02
+ Owner: Neutral
+ Location: 62,26
+ Actor84: t03
+ Owner: Neutral
+ Location: 65,100
+ Actor85: t11
+ Owner: Neutral
+ Location: 63,27
+ Actor86: t11
+ Owner: Neutral
+ Location: 48,65
+ Actor87: t07
+ Owner: Neutral
+ Location: 79,61
+ Actor91: t15
+ Owner: Neutral
+ Location: 50,63
+ Actor92: mine
+ Owner: Neutral
+ Location: 88,88
+ Actor93: mine
+ Owner: Neutral
+ Location: 40,40
+ Actor94: t11
+ Owner: Neutral
+ Location: 29,95
+ Actor95: tc03
+ Owner: Neutral
+ Location: 29,98
+ Actor96: t15
+ Owner: Neutral
+ Location: 26,98
+ Actor97: t01
+ Owner: Neutral
+ Location: 28,98
+ Actor98: tc02
+ Owner: Neutral
+ Location: 29,99
+ Actor99: tc01
+ Owner: Neutral
+ Location: 27,99
+ Actor100: tc04
+ Owner: Neutral
+ Location: 27,100
+ Actor101: tc02
+ Owner: Neutral
+ Location: 27,101
+ Actor102: t13
+ Owner: Neutral
+ Location: 29,100
+ Actor103: tc05
+ Owner: Neutral
+ Location: 27,102
+ Actor104: t08
+ Owner: Neutral
+ Location: 23,103
+ Actor105: tc01
+ Owner: Neutral
+ Location: 24,102
+ Actor106: t11
+ Owner: Neutral
+ Location: 25,102
+ Actor107: tc02
+ Owner: Neutral
+ Location: 26,103
+ Actor108: t08
+ Owner: Neutral
+ Location: 29,105
+ Actor109: t08
+ Owner: Neutral
+ Location: 63,1
+ Actor110: t01
+ Owner: Neutral
+ Location: 102,6
+ Actor111: t15
+ Owner: Neutral
+ Location: 27,121
+ Actor112: tc02
+ Owner: Neutral
+ Location: 35,88
+ Actor113: tc01
+ Owner: Neutral
+ Location: 37,89
+ Actor114: t11
+ Owner: Neutral
+ Location: 34,88
+ Actor115: t15
+ Owner: Neutral
+ Location: 38,90
+ Actor117: boxes04
+ Owner: Neutral
+ Location: 79,80
+ Actor118: barl
+ Owner: Neutral
+ Location: 78,81
+ Actor119: brl3
+ Owner: Neutral
+ Location: 82,78
+ Actor120: brl3
+ Owner: Neutral
+ Location: 50,48
+ Actor121: barl
+ Owner: Neutral
+ Location: 43,46
+ Actor122: boxes07
+ Owner: Neutral
+ Location: 47,50
+ Actor124: v13
+ Owner: Neutral
+ Location: 79,64
+ Actor125: tc03
+ Owner: Neutral
+ Location: 90,38
+ Actor126: t10
+ Owner: Neutral
+ Location: 89,37
+ Actor127: tc02
+ Owner: Neutral
+ Location: 92,39
+ Actor128: t15
+ Owner: Neutral
+ Location: 93,40
+ Actor129: t15
+ Owner: Neutral
+ Location: 92,38
+ Actor131: tc01
+ Owner: Neutral
+ Location: 89,40
+ Actor132: tc01
+ Owner: Neutral
+ Location: 34,90
+ Actor133: tc02
+ Owner: Neutral
+ Location: 93,36
+ Actor136: tc03
+ Owner: Neutral
+ Location: 66,98
+ Actor137: tc01
+ Owner: Neutral
+ Location: 69,99
+ Actor138: t08
+ Owner: Neutral
+ Location: 71,100
+ Actor139: t11
+ Owner: Neutral
+ Location: 68,98
+ Actor140: tc05
+ Owner: Neutral
+ Location: 99,67
+ Actor141: tc04
+ Owner: Neutral
+ Location: 96,67
+ Actor142: tc02
+ Owner: Neutral
+ Location: 98,68
+ Actor143: tc03
+ Owner: Neutral
+ Location: 101,66
+ Actor144: tc01
+ Owner: Neutral
+ Location: 100,69
+ Actor145: tc03
+ Owner: Neutral
+ Location: 61,29
+ Actor146: t08
+ Owner: Neutral
+ Location: 61,31
+ Actor147: tc02
+ Owner: Neutral
+ Location: 59,28
+ Actor148: t07
+ Owner: Neutral
+ Location: 58,28
+ Actor149: t12
+ Owner: Neutral
+ Location: 48,63
+ Actor150: tc04
+ Owner: Neutral
+ Location: 87,82
+ Actor153: tc04
+ Owner: Neutral
+ Location: 44,38
+ Actor154: t08
+ Owner: Neutral
+ Location: 45,40
+ Actor155: t11
+ Owner: Neutral
+ Location: 38,44
+ Actor156: t11
+ Owner: Neutral
+ Location: 89,83
+ Actor157: t08
+ Owner: Neutral
+ Location: 83,89
+ Actor158: tc04
+ Owner: Neutral
+ Location: 28,58
+ Actor159: tc05
+ Owner: Neutral
+ Location: 31,58
+ Actor160: tc01
+ Owner: Neutral
+ Location: 30,59
+ Actor161: tc03
+ Owner: Neutral
+ Location: 27,61
+ Actor162: t08
+ Owner: Neutral
+ Location: 29,61
+ Actor163: tc02
+ Owner: Neutral
+ Location: 29,57
+ Actor164: t12
+ Owner: Neutral
+ Location: 29,59
+ Actor165: tc05
+ Owner: Neutral
+ Location: 100,23
+ Actor166: tc01
+ Owner: Neutral
+ Location: 103,24
+ Actor167: t08
+ Owner: Neutral
+ Location: 105,24
+ Actor168: tc04
+ Owner: Neutral
+ Location: 98,25
+ Actor169: tc02
+ Owner: Neutral
+ Location: 99,24
+ Actor170: t11
+ Owner: Neutral
+ Location: 98,23
+ Actor171: t05
+ Owner: Neutral
+ Location: 99,23
+ Actor172: t08
+ Owner: Neutral
+ Location: 99,22
+ Actor173: tc03
+ Owner: Neutral
+ Location: 100,26
+ Actor174: t11
+ Owner: Neutral
+ Location: 98,31
+ Actor175: tc05
+ Owner: Neutral
+ Location: 98,27
+ Actor176: t11
+ Owner: Neutral
+ Location: 97,28
+ Actor177: t16
+ Owner: Neutral
+ Location: 98,29
+ Actor178: t08
+ Owner: Neutral
+ Location: 101,28
+ Actor179: mine
+ Owner: Neutral
+ Location: 117,117
+ Actor181: mine
+ Owner: Neutral
+ Location: 12,12
+ Actor183: tc05
+ Owner: Neutral
+ Location: 38,43
+ Actor184: tc05
+ Owner: Neutral
+ Location: 82,87
+ Actor185: mine
+ Owner: Neutral
+ Location: 31,65
+ Actor186: mine
+ Owner: Neutral
+ Location: 99,63
+ Actor187: mine
+ Owner: Neutral
+ Location: 63,96
+ Actor188: mine
+ Owner: Neutral
+ Location: 65,33
+ Actor189: mine
+ Owner: Neutral
+ Location: 94,118
+ Actor190: mine
+ Owner: Neutral
+ Location: 35,11
+ Actor193: mine
+ Owner: Neutral
+ Location: 101,101
+ Actor180: mine
+ Owner: Neutral
+ Location: 27,27
+ Actor182: mine
+ Owner: Neutral
+ Location: 33,27
+ Actor191: mine
+ Owner: Neutral
+ Location: 27,33
+ Actor192: mine
+ Owner: Neutral
+ Location: 95,101
+ Actor194: mine
+ Owner: Neutral
+ Location: 101,95
+ Actor195: mine
+ Owner: Neutral
+ Location: 10,30
+ Actor196: mine
+ Owner: Neutral
+ Location: 119,99
+ Actor197: mine
+ Owner: Neutral
+ Location: 43,116
+ Actor198: mine
+ Owner: Neutral
+ Location: 87,14
+ Actor199: mine
+ Owner: Neutral
+ Location: 12,89
+ Actor200: mine
+ Owner: Neutral
+ Location: 118,39
+ Actor201: oilb
+ Owner: Neutral
+ Location: 84,43
+ Actor202: oilb
+ Owner: Neutral
+ Location: 43,84
+ Actor203: fenc
+ Owner: Neutral
+ Location: 45,85
+ Actor204: fenc
+ Owner: Neutral
+ Location: 45,86
+ Actor205: fenc
+ Owner: Neutral
+ Location: 44,86
+ Actor206: fenc
+ Owner: Neutral
+ Location: 43,83
+ Actor207: fenc
+ Owner: Neutral
+ Location: 42,83
+ Actor208: fenc
+ Owner: Neutral
+ Location: 42,84
+ Actor209: fenc
+ Owner: Neutral
+ Location: 85,45
+ Actor210: fenc
+ Owner: Neutral
+ Location: 86,45
+ Actor211: fenc
+ Owner: Neutral
+ Location: 86,44
+ Actor212: fenc
+ Owner: Neutral
+ Location: 83,43
+ Actor213: fenc
+ Owner: Neutral
+ Location: 83,42
+ Actor214: fenc
+ Owner: Neutral
+ Location: 84,42
+ Actor215: fenc
+ Owner: Neutral
+ Location: 87,38
+ Actor216: fenc
+ Owner: Neutral
+ Location: 87,39
+ Actor217: fenc
+ Owner: Neutral
+ Location: 86,39
+ Actor218: fenc
+ Owner: Neutral
+ Location: 91,42
+ Actor219: fenc
+ Owner: Neutral
+ Location: 90,42
+ Actor220: fenc
+ Owner: Neutral
+ Location: 90,43
+ Actor221: fenc
+ Owner: Neutral
+ Location: 41,88
+ Actor222: fenc
+ Owner: Neutral
+ Location: 41,89
+ Actor223: fenc
+ Owner: Neutral
+ Location: 42,89
+ Actor224: tc02
+ Owner: Neutral
+ Location: 38,86
+ Actor225: fenc
+ Owner: Neutral
+ Location: 38,86
+ Actor226: fenc
+ Owner: Neutral
+ Location: 37,86
+ Actor227: fenc
+ Owner: Neutral
+ Location: 37,85
+ Actor228: brl3
+ Owner: Neutral
+ Location: 41,84
+ Actor229: brl3
+ Owner: Neutral
+ Location: 42,88
+ Actor230: barl
+ Owner: Neutral
+ Location: 44,87
+ Actor231: barl
+ Owner: Neutral
+ Location: 38,85
+ Actor232: brl3
+ Owner: Neutral
+ Location: 87,44
+ Actor233: brl3
+ Owner: Neutral
+ Location: 87,40
+ Actor234: barl
+ Owner: Neutral
+ Location: 89,42
+ Actor235: barl
+ Owner: Neutral
+ Location: 84,41
+ Actor236: brl3
+ Owner: Neutral
+ Location: 84,45
+ Actor237: barl
+ Owner: Neutral
+ Location: 45,84
+ Actor238: brl3
+ Owner: Neutral
+ Location: 83,41
+ Actor239: brl3
+ Owner: Neutral
+ Location: 91,43
+ Actor240: brl3
+ Owner: Neutral
+ Location: 45,88
+ Actor241: brl3
+ Owner: Neutral
+ Location: 37,84
+ Actor242: tc04
+ Owner: Neutral
+ Location: 31,30
+ Actor243: tc05
+ Owner: Neutral
+ Location: 95,95
+ Actor244: t02
+ Owner: Neutral
+ Location: 95,96
+ Actor245: t08
+ Owner: Neutral
+ Location: 33,32
+ Actor247: v03
+ Owner: Neutral
+ Location: 52,80
+ Actor246: v10
+ Owner: Neutral
+ Location: 50,80
+ Actor248: v06
+ Owner: Neutral
+ Location: 57,83
+ Actor249: v17
+ Owner: Neutral
+ Location: 57,84
+ Actor250: v17
+ Owner: Neutral
+ Location: 58,84
+ Actor251: v17
+ Owner: Neutral
+ Location: 59,84
+ Actor252: wood
+ Owner: Neutral
+ Location: 57,85
+ Actor253: wood
+ Owner: Neutral
+ Location: 58,85
+ Actor254: wood
+ Owner: Neutral
+ Location: 59,85
+ Actor255: wood
+ Owner: Neutral
+ Location: 60,85
+ Actor256: wood
+ Owner: Neutral
+ Location: 60,84
+ Actor257: wood
+ Owner: Neutral
+ Location: 60,83
+ Actor258: wood
+ Owner: Neutral
+ Location: 59,83
+ Actor259: wood
+ Owner: Neutral
+ Location: 59,82
+ Actor260: wood
+ Owner: Neutral
+ Location: 58,82
+ Actor261: wood
+ Owner: Neutral
+ Location: 57,82
+ Actor262: wood
+ Owner: Neutral
+ Location: 56,85
+ Actor263: wood
+ Owner: Neutral
+ Location: 56,84
+ Actor265: v04
+ Owner: Neutral
+ Location: 60,81
+ Actor266: v11
+ Owner: Neutral
+ Location: 56,83
+ Actor264: v07
+ Owner: Neutral
+ Location: 57,87
+ Actor267: v01
+ Owner: Neutral
+ Location: 57,79
+ Actor268: t11
+ Owner: Neutral
+ Location: 59,79
+ Actor269: v08
+ Owner: Neutral
+ Location: 55,79
+ Actor270: tc01
+ Owner: Neutral
+ Location: 55,77
+ Actor271: tc03
+ Owner: Neutral
+ Location: 61,83
+ Actor273: t08
+ Owner: Neutral
+ Location: 52,81
+ Actor274: t10
+ Owner: Neutral
+ Location: 48,78
+ Actor275: tc01
+ Owner: Neutral
+ Location: 49,85
+ Actor272: fenc
+ Owner: Neutral
+ Location: 57,76
+ Actor276: fenc
+ Owner: Neutral
+ Location: 58,76
+ Actor277: fenc
+ Owner: Neutral
+ Location: 61,76
+ Actor278: fenc
+ Owner: Neutral
+ Location: 62,76
+ Actor282: fenc
+ Owner: Neutral
+ Location: 57,77
+ Actor283: v19
+ Owner: Neutral
+ Location: 58,77
+ Actor284: v19
+ Owner: Neutral
+ Location: 61,77
+ Actor285: fenc
+ Owner: Neutral
+ Location: 62,77
+ Actor286: fenc
+ Owner: Neutral
+ Location: 57,78
+ Actor287: fenc
+ Owner: Neutral
+ Location: 58,78
+ Actor288: fenc
+ Owner: Neutral
+ Location: 59,78
+ Actor289: fenc
+ Owner: Neutral
+ Location: 59,78
+ Actor290: tc02
+ Owner: Neutral
+ Location: 59,78
+ Actor291: fenc
+ Owner: Neutral
+ Location: 60,78
+ Actor292: fenc
+ Owner: Neutral
+ Location: 61,78
+ Actor293: fenc
+ Owner: Neutral
+ Location: 62,78
+ Actor279: brl3
+ Owner: Neutral
+ Location: 60,77
+ Actor280: barl
+ Owner: Neutral
+ Location: 59,77
+ Actor281: fenc
+ Owner: Neutral
+ Location: 66,50
+ Actor294: fenc
+ Owner: Neutral
+ Location: 67,50
+ Actor295: fenc
+ Owner: Neutral
+ Location: 70,50
+ Actor296: fenc
+ Owner: Neutral
+ Location: 71,50
+ Actor297: fenc
+ Owner: Neutral
+ Location: 66,51
+ Actor298: v19
+ Owner: Neutral
+ Location: 67,51
+ Actor301: v19
+ Owner: Neutral
+ Location: 70,51
+ Actor302: fenc
+ Owner: Neutral
+ Location: 71,51
+ Actor303: fenc
+ Owner: Neutral
+ Location: 66,52
+ Actor304: fenc
+ Owner: Neutral
+ Location: 67,52
+ Actor309: fenc
+ Owner: Neutral
+ Location: 70,52
+ Actor310: fenc
+ Owner: Neutral
+ Location: 71,52
+ Actor305: fenc
+ Owner: Neutral
+ Location: 68,50
+ Actor306: fenc
+ Owner: Neutral
+ Location: 69,50
+ Actor299: brl3
+ Owner: Neutral
+ Location: 68,51
+ Actor300: barl
+ Owner: Neutral
+ Location: 69,51
+ Actor307: tc01
+ Owner: Neutral
+ Location: 72,49
+ Actor308: tc02
+ Owner: Neutral
+ Location: 68,48
+ Actor311: t11
+ Owner: Neutral
+ Location: 68,47
+ Actor313: v08
+ Owner: Neutral
+ Location: 73,48
+ Actor316: v10
+ Owner: Neutral
+ Location: 78,48
+ Actor314: v03
+ Owner: Neutral
+ Location: 75,47
+ Actor315: t08
+ Owner: Neutral
+ Location: 76,46
+ Actor317: tc03
+ Owner: Neutral
+ Location: 65,45
+ Actor318: v07
+ Owner: Neutral
+ Location: 70,41
+ Actor324: v01
+ Owner: Neutral
+ Location: 70,47
+ Actor319: wood
+ Owner: Neutral
+ Location: 68,43
+ Actor320: wood
+ Owner: Neutral
+ Location: 69,43
+ Actor321: wood
+ Owner: Neutral
+ Location: 70,43
+ Actor322: wood
+ Owner: Neutral
+ Location: 71,43
+ Actor323: wood
+ Owner: Neutral
+ Location: 67,44
+ Actor325: v17
+ Owner: Neutral
+ Location: 68,44
+ Actor326: v17
+ Owner: Neutral
+ Location: 69,44
+ Actor327: v18
+ Owner: Neutral
+ Location: 70,44
+ Actor328: wood
+ Owner: Neutral
+ Location: 71,44
+ Actor329: wood
+ Owner: Neutral
+ Location: 67,45
+ Actor330: wood
+ Owner: Neutral
+ Location: 68,45
+ Actor331: v06
+ Owner: Neutral
+ Location: 69,45
+ Actor332: v11
+ Owner: Neutral
+ Location: 71,45
+ Actor333: wood
+ Owner: Neutral
+ Location: 68,46
+ Actor337: wood
+ Owner: Neutral
+ Location: 69,46
+ Actor338: wood
+ Owner: Neutral
+ Location: 70,46
+ Actor339: wood
+ Owner: Neutral
+ Location: 67,43
+ Actor334: wood
+ Owner: Neutral
+ Location: 71,46
+ Actor335: tc01
+ Owner: Neutral
+ Location: 78,41
+ Actor336: t03
+ Owner: Neutral
+ Location: 79,48
+ Actor341: oilb
+ Owner: Neutral
+ Location: 63,123
+ Actor342: fenc
+ Owner: Neutral
+ Location: 63,122
+ Actor343: fenc
+ Owner: Neutral
+ Location: 64,122
+ Actor344: fenc
+ Owner: Neutral
+ Location: 65,122
+ Actor346: fenc
+ Owner: Neutral
+ Location: 62,122
+ Actor347: fenc
+ Owner: Neutral
+ Location: 62,123
+ Actor348: fenc
+ Owner: Neutral
+ Location: 66,123
+ Actor349: fenc
+ Owner: Neutral
+ Location: 67,123
+ Actor350: fenc
+ Owner: Neutral
+ Location: 61,123
+ Actor351: fenc
+ Owner: Neutral
+ Location: 60,123
+ Actor352: fenc
+ Owner: Neutral
+ Location: 68,123
+ Actor353: fenc
+ Owner: Neutral
+ Location: 59,123
+ Actor354: fenc
+ Owner: Neutral
+ Location: 59,124
+ Actor355: fenc
+ Owner: Neutral
+ Location: 66,122
+ Actor345: fenc
+ Owner: Neutral
+ Location: 69,123
+ Actor356: fenc
+ Owner: Neutral
+ Location: 69,124
+ Actor357: boxes05
+ Owner: Neutral
+ Location: 65,123
+ Actor358: v11
+ Owner: Neutral
+ Location: 65,124
+ Actor359: tc05
+ Owner: Neutral
+ Location: 73,125
+ Actor360: tc04
+ Owner: Neutral
+ Location: 53,125
+ Actor361: tc03
+ Owner: Neutral
+ Location: 56,125
+ Actor362: t15
+ Owner: Neutral
+ Location: 55,124
+ Actor364: t08
+ Owner: Neutral
+ Location: 61,124
+ Actor365: brl3
+ Owner: Neutral
+ Location: 66,124
+ Actor366: barl
+ Owner: Neutral
+ Location: 62,124
+ Actor367: brl3
+ Owner: Neutral
+ Location: 61,126
+ Actor368: barl
+ Owner: Neutral
+ Location: 67,126
+ Actor369: t11
+ Owner: Neutral
+ Location: 68,126
+ Actor363: t07
+ Owner: Neutral
+ Location: 67,123
+ Actor370: tc02
+ Owner: Neutral
+ Location: 47,127
+ Actor371: t02
+ Owner: Neutral
+ Location: 58,127
+ Actor372: t12
+ Owner: Neutral
+ Location: 70,127
+ Actor374: t14
+ Owner: Neutral
+ Location: 78,127
+ Actor375: tc03
+ Owner: Neutral
+ Location: 60,128
+ Actor376: t08
+ Owner: Neutral
+ Location: 63,127
+ Actor377: t12
+ Owner: Neutral
+ Location: 65,127
+ Actor378: oilb
+ Owner: Neutral
+ Location: 64,5
+ Actor379: fenc
+ Owner: Neutral
+ Location: 65,7
+ Actor380: fenc
+ Owner: Neutral
+ Location: 64,7
+ Actor381: fenc
+ Owner: Neutral
+ Location: 63,7
+ Actor382: fenc
+ Owner: Neutral
+ Location: 62,7
+ Actor383: fenc
+ Owner: Neutral
+ Location: 66,7
+ Actor384: fenc
+ Owner: Neutral
+ Location: 66,6
+ Actor385: fenc
+ Owner: Neutral
+ Location: 67,6
+ Actor386: fenc
+ Owner: Neutral
+ Location: 68,6
+ Actor387: fenc
+ Owner: Neutral
+ Location: 69,6
+ Actor388: fenc
+ Owner: Neutral
+ Location: 62,6
+ Actor389: fenc
+ Owner: Neutral
+ Location: 61,6
+ Actor390: fenc
+ Owner: Neutral
+ Location: 60,6
+ Actor391: fenc
+ Owner: Neutral
+ Location: 59,6
+ Actor392: fenc
+ Owner: Neutral
+ Location: 69,5
+ Actor393: fenc
+ Owner: Neutral
+ Location: 59,5
+ Actor394: boxes08
+ Owner: Neutral
+ Location: 63,6
+ Actor395: v09
+ Owner: Neutral
+ Location: 63,5
+ Actor398: t01
+ Owner: Neutral
+ Location: 61,4
+ Actor399: t08
+ Owner: Neutral
+ Location: 67,5
+ Actor396: barl
+ Owner: Neutral
+ Location: 66,5
+ Actor401: brl3
+ Owner: Neutral
+ Location: 67,3
+ Actor397: brl3
+ Owner: Neutral
+ Location: 62,5
+ Actor400: barl
+ Owner: Neutral
+ Location: 60,3
+ Actor402: tc02
+ Owner: Neutral
+ Location: 53,3
+ Actor403: tc01
+ Owner: Neutral
+ Location: 55,3
+ Actor404: t11
+ Owner: Neutral
+ Location: 55,4
+ Actor405: tc04
+ Owner: Neutral
+ Location: 73,2
+ Actor406: t11
+ Owner: Neutral
+ Location: 60,2
+ Actor407: t17
+ Owner: Neutral
+ Location: 59,1
+ Actor408: t14
+ Owner: Neutral
+ Location: 49,2
+ Actor409: tc02
+ Owner: Neutral
+ Location: 78,1
+ Actor410: t01
+ Owner: Neutral
+ Location: 68,1
+ Actor411: t12
+ Owner: Neutral
+ Location: 70,123
+ Actor412: t12
+ Owner: Neutral
+ Location: 58,4
+ Actor414: v08
+ Owner: Neutral
+ Location: 56,127
+ Actor413: tc03
+ Owner: Neutral
+ Location: 71,4
+ Actor415: snowhut
+ Owner: Neutral
+ Location: 72,2
+ Actor416: t13
+ Owner: Neutral
+ Location: 73,4
+ Actor417: tc04
+ Owner: Neutral
+ Location: 120,53
+ Actor418: tc03
+ Owner: Neutral
+ Location: 121,73
+ Actor419: t16
+ Owner: Neutral
+ Location: 120,72
+ Actor420: t15
+ Owner: Neutral
+ Location: 122,73
+ Actor421: tc05
+ Owner: Neutral
+ Location: 6,72
+ Actor422: t07
+ Owner: Neutral
+ Location: 6,73
+ Actor424: t03
+ Owner: Neutral
+ Location: 8,54
+ Actor425: t08
+ Owner: Neutral
+ Location: 7,55
+ Actor426: tc05
+ Owner: Neutral
+ Location: 43,79
+ Actor427: t08
+ Owner: Neutral
+ Location: 43,80
+ Actor428: tc03
+ Owner: Neutral
+ Location: 84,47
+ Actor429: t01
+ Owner: Neutral
+ Location: 84,46
+ Actor430: t08
+ Owner: Neutral
+ Location: 86,48
+ Actor431: t11
+ Owner: Neutral
+ Location: 83,46
+ Actor432: t07
+ Owner: Neutral
+ Location: 83,47
+ Actor439: oilb
+ Owner: Neutral
+ Location: 8,125
+ Actor444: fenc
+ Owner: Neutral
+ Location: 119,5
+ Actor445: fenc
+ Owner: Neutral
+ Location: 118,5
+ Actor447: fenc
+ Owner: Neutral
+ Location: 117,4
+ Actor448: fenc
+ Owner: Neutral
+ Location: 116,4
+ Actor449: fenc
+ Owner: Neutral
+ Location: 115,4
+ Actor441: fenc
+ Owner: Neutral
+ Location: 127,9
+ Actor450: fenc
+ Owner: Neutral
+ Location: 127,8
+ Actor451: fenc
+ Owner: Neutral
+ Location: 127,7
+ Actor452: fenc
+ Owner: Neutral
+ Location: 126,7
+ Actor453: fenc
+ Owner: Neutral
+ Location: 126,6
+ Actor462: fenc
+ Owner: Neutral
+ Location: 11,124
+ Actor463: fenc
+ Owner: Neutral
+ Location: 12,124
+ Actor464: fenc
+ Owner: Neutral
+ Location: 12,125
+ Actor465: fenc
+ Owner: Neutral
+ Location: 13,125
+ Actor466: fenc
+ Owner: Neutral
+ Location: 14,125
+ Actor459: fenc
+ Owner: Neutral
+ Location: 8,124
+ Actor460: fenc
+ Owner: Neutral
+ Location: 8,124
+ Actor461: fenc
+ Owner: Neutral
+ Location: 7,124
+ Actor470: fenc
+ Owner: Neutral
+ Location: 8,124
+ Actor471: fenc
+ Owner: Neutral
+ Location: 9,124
+ Actor467: fenc
+ Owner: Neutral
+ Location: 11,123
+ Actor468: fenc
+ Owner: Neutral
+ Location: 10,123
+ Actor469: fenc
+ Owner: Neutral
+ Location: 9,123
+ Actor473: fenc
+ Owner: Neutral
+ Location: 3,123
+ Actor474: fenc
+ Owner: Neutral
+ Location: 3,122
+ Actor475: fenc
+ Owner: Neutral
+ Location: 3,121
+ Actor476: fenc
+ Owner: Neutral
+ Location: 3,121
+ Actor477: fenc
+ Owner: Neutral
+ Location: 3,120
+ Actor478: fenc
+ Owner: Neutral
+ Location: 3,119
+ Actor479: fenc
+ Owner: Neutral
+ Location: 4,124
+ Actor480: fenc
+ Owner: Neutral
+ Location: 5,124
+ Actor472: fenc
+ Owner: Neutral
+ Location: 4,123
+ Actor481: snowhut
+ Owner: Neutral
+ Location: 10,123
+ Actor484: fenc
+ Owner: Neutral
+ Location: 15,126
+ Actor483: fenc
+ Owner: Neutral
+ Location: 14,126
+ Actor485: fenc
+ Owner: Neutral
+ Location: 15,127
+ Actor486: fenc
+ Owner: Neutral
+ Location: 15,128
+ Actor487: fenc
+ Owner: Neutral
+ Location: 15,129
+ Actor488: fenc
+ Owner: Neutral
+ Location: 2,119
+ Actor489: fenc
+ Owner: Neutral
+ Location: 2,118
+ Actor490: fenc
+ Owner: Neutral
+ Location: 1,118
+ Actor491: fenc
+ Owner: Neutral
+ Location: 1,117
+ Actor492: fenc
+ Owner: Neutral
+ Location: 0,117
+ Actor493: fenc
+ Owner: Neutral
+ Location: 0,116
+ Actor494: hosp
+ Owner: Neutral
+ Location: 2,124
+ Actor495: v02
+ Owner: Neutral
+ Location: 4,127
+ Actor496: v07
+ Owner: Neutral
+ Location: 1,122
+ Actor497: brl3
+ Owner: Neutral
+ Location: 11,127
+ Actor498: barl
+ Owner: Neutral
+ Location: 10,127
+ Actor499: v03
+ Owner: Neutral
+ Location: 5,126
+ Actor500: tc05
+ Owner: Neutral
+ Location: 0,119
+ Actor502: fenc
+ Owner: Neutral
+ Location: 128,10
+ Actor503: fenc
+ Owner: Neutral
+ Location: 128,11
+ Actor504: fenc
+ Owner: Neutral
+ Location: 128,11
+ Actor505: fenc
+ Owner: Neutral
+ Location: 128,12
+ Actor506: fenc
+ Owner: Neutral
+ Location: 129,12
+ Actor507: fenc
+ Owner: Neutral
+ Location: 129,13
+ Actor508: fenc
+ Owner: Neutral
+ Location: 115,3
+ Actor509: fenc
+ Owner: Neutral
+ Location: 114,3
+ Actor510: fenc
+ Owner: Neutral
+ Location: 114,2
+ Actor511: fenc
+ Owner: Neutral
+ Location: 114,1
+ Actor512: fenc
+ Owner: Neutral
+ Location: 114,0
+ Actor515: fenc
+ Owner: Neutral
+ Location: 117,5
+ Actor522: v08
+ Owner: Neutral
+ Location: 118,4
+ Actor516: brl3
+ Owner: Neutral
+ Location: 118,2
+ Actor517: barl
+ Owner: Neutral
+ Location: 119,2
+ Actor526: fenc
+ Owner: Neutral
+ Location: 125,6
+ Actor527: fenc
+ Owner: Neutral
+ Location: 124,6
+ Actor528: fenc
+ Owner: Neutral
+ Location: 127,10
+ Actor514: fenc
+ Owner: Neutral
+ Location: 119,6
+ Actor501: oilb
+ Owner: Neutral
+ Location: 120,3
+ Actor520: tc02
+ Owner: Neutral
+ Location: 128,8
+ Actor521: tc01
+ Owner: Neutral
+ Location: 128,7
+ Actor523: v05
+ Owner: Neutral
+ Location: 128,7
+ Actor524: hosp
+ Owner: Neutral
+ Location: 126,4
+ Actor525: v06
+ Owner: Neutral
+ Location: 124,1
+ Actor518: v07
+ Owner: Neutral
+ Location: 123,2
+ Actor519: ctflag
+ Owner: Neutral
+ Location: 118,3
+ Actor529: ctflag
+ Owner: Neutral
+ Location: 11,125
+ Actor530: t11
+ Owner: Neutral
+ Location: 66,83
+ Actor531: t11
+ Owner: Neutral
+ Location: 61,43
+ Actor532: tc03
+ Owner: Neutral
+ Location: 66,109
+ Actor533: tc03
+ Owner: Neutral
+ Location: 60,19
+ Actor534: t10
+ Owner: Neutral
+ Location: 62,18
+ Actor535: t17
+ Owner: Neutral
+ Location: 65,109
+ Actor536: t15
+ Owner: Neutral
+ Location: 62,101
+ Actor537: t12
+ Owner: Neutral
+ Location: 66,26
+ Actor538: v03
+ Owner: Neutral
+ Location: 67,26
+ Actor539: v02
+ Owner: Neutral
+ Location: 59,103
+ Actor540: t02
+ Owner: Neutral
+ Location: 58,102
+ Actor542: tc05
+ Owner: Neutral
+ Location: 80,27
+ Actor543: t15
+ Owner: Neutral
+ Location: 79,28
+ Actor544: tc04
+ Owner: Neutral
+ Location: 48,98
+ Actor545: t11
+ Owner: Neutral
+ Location: 50,99
+ Actor546: t08
+ Owner: Neutral
+ Location: 49,100
+ Actor547: tc02
+ Owner: Neutral
+ Location: 54,102
+ Actor548: tc01
+ Owner: Neutral
+ Location: 74,25
+ Actor549: tc03
+ Owner: Neutral
+ Location: 92,92
+ Actor550: tc03
+ Owner: Neutral
+ Location: 35,34
+ Actor551: tc03
+ Owner: Neutral
+ Location: 1,126
+ Actor552: tc03
+ Owner: Neutral
+ Location: 127,2
+ Actor553: tc04
+ Owner: Neutral
+ Location: 97,9
+ Actor554: tc05
+ Owner: Neutral
+ Location: 94,9
+ Actor555: tc05
+ Owner: Neutral
+ Location: 31,117
+ Actor556: tc04
+ Owner: Neutral
+ Location: 34,117
+ Actor557: t08
+ Owner: Neutral
+ Location: 64,85
+ Actor558: t08
+ Owner: Neutral
+ Location: 64,43
+ Actor559: tc02
+ Owner: Neutral
+ Location: 66,101
+ Actor560: railmine
+ Owner: Neutral
+ Location: 68,102
+ Actor561: t10
+ Owner: Neutral
+ Location: 102,82
+ Actor562: t08
+ Owner: Neutral
+ Location: 103,83
+ Actor563: t16
+ Owner: Neutral
+ Location: 104,82
+ Actor565: tc03
+ Owner: Neutral
+ Location: 52,50
+ Actor566: tc04
+ Owner: Neutral
+ Location: 6,53
+ Actor567: v13
+ Owner: Neutral
+ Location: 7,53
+ Actor568: v12
+ Owner: Neutral
+ Location: 122,75
+ Actor569: t11
+ Owner: Neutral
+ Location: 122,52
+ Actor570: t11
+ Owner: Neutral
+ Location: 6,74
+ Actor571: v12
+ Owner: Neutral
+ Location: 47,83
+ Actor572: v13
+ Owner: Neutral
+ Location: 48,84
+ Actor573: v13
+ Owner: Neutral
+ Location: 81,45
+ Actor574: v12
+ Owner: Neutral
+ Location: 80,44
+ Actor575: t08
+ Owner: Neutral
+ Location: 81,44
+ Actor576: t08
+ Owner: Neutral
+ Location: 47,84
+ Actor577: t15
+ Owner: Neutral
+ Location: 55,72
+ Actor578: t08
+ Owner: Neutral
+ Location: 54,72
+ Actor579: t08
+ Owner: Neutral
+ Location: 74,56
+ Actor580: t10
+ Owner: Neutral
+ Location: 71,54
+ Actor581: t07
+ Owner: Neutral
+ Location: 77,63
+ Actor582: tc02
+ Owner: Neutral
+ Location: 81,103
+ Actor583: t11
+ Owner: Neutral
+ Location: 82,104
+ Actor584: tc01
+ Owner: Neutral
+ Location: 46,24
+ Actor585: t11
+ Owner: Neutral
+ Location: 45,23
+ Actor586: tc02
+ Owner: Neutral
+ Location: 26,44
+ Actor587: t11
+ Owner: Neutral
+ Location: 25,45
+ Actor588: t14
+ Owner: Neutral
+ Location: 21,113
+ Actor589: t01
+ Owner: Neutral
+ Location: 106,14
+ Actor590: t12
+ Owner: Neutral
+ Location: 63,110
+ Actor591: t12
+ Owner: Neutral
+ Location: 66,18
+ Actor592: v05
+ Owner: Neutral
+ Location: 83,61
+ Actor593: v08
+ Owner: Neutral
+ Location: 43,65
+ Actor594: v12
+ Owner: Neutral
+ Location: 58,104
+ Actor595: snowhut
+ Owner: Neutral
+ Location: 61,101
+ Actor596: v13
+ Owner: Neutral
+ Location: 70,26
+ Actor597: t06
+ Owner: Neutral
+ Location: 71,25
+ Actor598: v11
+ Owner: Neutral
+ Location: 71,25
+ Actor599: v04
+ Owner: Neutral
+ Location: 29,55
+ Actor600: v07
+ Owner: Neutral
+ Location: 99,72
+ Actor601: tc01
+ Owner: Neutral
+ Location: 51,93
+ Actor602: tc02
+ Owner: Neutral
+ Location: 76,33
+ Actor603: t01
+ Owner: Neutral
+ Location: 65,82
+ Actor604: t01
+ Owner: Neutral
+ Location: 63,44
+ Actor605: t08
+ Owner: Neutral
+ Location: 68,103
+ Actor606: t08
+ Owner: Neutral
+ Location: 61,26
+ Actor607: t03
+ Owner: Neutral
+ Location: 60,26
+ Actor608: v06
+ Owner: Neutral
+ Location: 105,28
+ Actor609: wood
+ Owner: Neutral
+ Location: 106,27
+ Actor610: wood
+ Owner: Neutral
+ Location: 105,27
+ Actor611: wood
+ Owner: Neutral
+ Location: 104,27
+ Actor612: wood
+ Owner: Neutral
+ Location: 104,28
+ Actor613: wood
+ Owner: Neutral
+ Location: 104,29
+ Actor614: wood
+ Owner: Neutral
+ Location: 103,29
+ Actor615: wood
+ Owner: Neutral
+ Location: 103,30
+ Actor616: v03
+ Owner: Neutral
+ Location: 104,29
+ Actor619: wood
+ Owner: Neutral
+ Location: 107,27
+ Actor621: wood
+ Owner: Neutral
+ Location: 108,28
+ Actor622: wood
+ Owner: Neutral
+ Location: 108,29
+ Actor617: wood
+ Owner: Neutral
+ Location: 103,31
+ Actor618: v17
+ Owner: Neutral
+ Location: 106,29
+ Actor623: v17
+ Owner: Neutral
+ Location: 107,29
+ Actor624: v13
+ Owner: Neutral
+ Location: 104,31
+ Actor625: wood
+ Owner: Neutral
+ Location: 103,32
+ Actor626: wood
+ Owner: Neutral
+ Location: 104,32
+ Actor620: v11
+ Owner: Neutral
+ Location: 107,28
+ Actor627: wood
+ Owner: Neutral
+ Location: 108,27
+ Actor628: v02
+ Owner: Neutral
+ Location: 97,33
+ Actor629: v05
+ Owner: Neutral
+ Location: 30,94
+ Actor630: wood
+ Owner: Neutral
+ Location: 20,101
+ Actor631: wood
+ Owner: Neutral
+ Location: 20,100
+ Actor632: wood
+ Owner: Neutral
+ Location: 20,99
+ Actor633: wood
+ Owner: Neutral
+ Location: 21,101
+ Actor634: wood
+ Owner: Neutral
+ Location: 22,101
+ Actor635: wood
+ Owner: Neutral
+ Location: 23,101
+ Actor636: wood
+ Owner: Neutral
+ Location: 24,101
+ Actor637: wood
+ Owner: Neutral
+ Location: 24,100
+ Actor639: wood
+ Owner: Neutral
+ Location: 24,99
+ Actor644: v08
+ Owner: Neutral
+ Location: 21,100
+ Actor645: v06
+ Owner: Neutral
+ Location: 22,100
+ Actor643: v17
+ Owner: Neutral
+ Location: 21,99
+ Actor646: v17
+ Owner: Neutral
+ Location: 22,99
+ Actor638: wood
+ Owner: Neutral
+ Location: 25,99
+ Actor640: wood
+ Owner: Neutral
+ Location: 25,98
+ Actor641: wood
+ Owner: Neutral
+ Location: 25,97
+ Actor647: v12
+ Owner: Neutral
+ Location: 24,97
+ Actor648: wood
+ Owner: Neutral
+ Location: 25,96
+ Actor649: wood
+ Owner: Neutral
+ Location: 24,96
+ Actor642: v02
+ Owner: Neutral
+ Location: 23,98
+ Actor650: tc03
+ Owner: Neutral
+ Location: 26,95
+ Actor651: tc03
+ Owner: Neutral
+ Location: 101,32
+ Actor652: t01
+ Owner: Neutral
+ Location: 101,30
+ Actor653: t08
+ Owner: Neutral
+ Location: 102,31
+ Actor654: t08
+ Owner: Neutral
+ Location: 27,97
+ Actor655: t14
+ Owner: Neutral
+ Location: 25,96
+ Actor656: t08
+ Owner: Neutral
+ Location: 29,93
+ Actor657: t08
+ Owner: Neutral
+ Location: 98,35
+ Actor658: tc05
+ Owner: Neutral
+ Location: 100,48
+ Actor659: tc03
+ Owner: Neutral
+ Location: 98,48
+ Actor661: t15
+ Owner: Neutral
+ Location: 102,49
+ Actor662: tc04
+ Owner: Neutral
+ Location: 101,46
+ Actor663: t07
+ Owner: Neutral
+ Location: 100,45
+ Actor660: t08
+ Owner: Neutral
+ Location: 97,50
+ Actor664: t07
+ Owner: Neutral
+ Location: 98,49
+ Actor665: t11
+ Owner: Neutral
+ Location: 102,45
+ Actor666: t12
+ Owner: Neutral
+ Location: 101,45
+ Actor667: t11
+ Owner: Neutral
+ Location: 99,51
+ Actor668: t11
+ Owner: Neutral
+ Location: 31,77
+ Actor669: t08
+ Owner: Neutral
+ Location: 32,78
+ Actor670: tc05
+ Owner: Neutral
+ Location: 27,77
+ Actor671: tc02
+ Owner: Neutral
+ Location: 30,78
+ Actor672: tc04
+ Owner: Neutral
+ Location: 27,79
+ Actor674: t12
+ Owner: Neutral
+ Location: 29,80
+ Actor676: t14
+ Owner: Neutral
+ Location: 27,80
+ Actor675: tc02
+ Owner: Neutral
+ Location: 32,80
+ Actor677: t15
+ Owner: Neutral
+ Location: 97,46
+ Actor678: t08
+ Owner: Neutral
+ Location: 26,76
+ Actor679: t08
+ Owner: Neutral
+ Location: 104,52
+ Actor680: tc01
+ Owner: Neutral
+ Location: 72,108
+ Actor681: tc02
+ Owner: Neutral
+ Location: 55,19
+ Actor682: tc03
+ Owner: Neutral
+ Location: 44,108
+ Actor683: t10
+ Owner: Neutral
+ Location: 45,108
+ Actor684: snowhut
+ Owner: Neutral
+ Location: 88,73
+ Actor685: t10
+ Owner: Neutral
+ Location: 89,73
+ Actor686: v09
+ Owner: Neutral
+ Location: 40,54
+ Actor687: t14
+ Owner: Neutral
+ Location: 38,53
+ Actor688: v04
+ Owner: Neutral
+ Location: 77,96
+ Actor689: t01
+ Owner: Neutral
+ Location: 79,95
+ Actor691: t07
+ Owner: Neutral
+ Location: 49,31
+ Actor690: v05
+ Owner: Neutral
+ Location: 50,31
+ Actor692: v19
+ Owner: Neutral
+ Location: 57,33
+ Actor693: v19
+ Owner: Neutral
+ Location: 57,35
+ Actor694: fenc
+ Owner: Neutral
+ Location: 56,32
+ Actor695: fenc
+ Owner: Neutral
+ Location: 57,32
+ Actor696: fenc
+ Owner: Neutral
+ Location: 58,32
+ Actor697: fenc
+ Owner: Neutral
+ Location: 58,33
+ Actor698: fenc
+ Owner: Neutral
+ Location: 58,34
+ Actor699: fenc
+ Owner: Neutral
+ Location: 58,35
+ Actor700: fenc
+ Owner: Neutral
+ Location: 58,36
+ Actor701: fenc
+ Owner: Neutral
+ Location: 57,36
+ Actor702: fenc
+ Owner: Neutral
+ Location: 56,36
+ Actor705: fenc
+ Owner: Neutral
+ Location: 56,37
+ Actor706: fenc
+ Owner: Neutral
+ Location: 56,31
+ Actor703: brl3
+ Owner: Neutral
+ Location: 57,34
+ Actor704: barl
+ Owner: Neutral
+ Location: 56,35
+ Actor707: barl
+ Owner: Neutral
+ Location: 56,33
+ Actor708: fenc
+ Owner: Neutral
+ Location: 70,93
+ Actor719: fenc
+ Owner: Neutral
+ Location: 70,97
+ Actor715: fenc
+ Owner: Neutral
+ Location: 72,98
+ Actor716: fenc
+ Owner: Neutral
+ Location: 70,96
+ Actor718: fenc
+ Owner: Neutral
+ Location: 70,95
+ Actor722: fenc
+ Owner: Neutral
+ Location: 70,94
+ Actor709: fenc
+ Owner: Neutral
+ Location: 72,97
+ Actor710: fenc
+ Owner: Neutral
+ Location: 71,97
+ Actor711: fenc
+ Owner: Neutral
+ Location: 71,93
+ Actor712: fenc
+ Owner: Neutral
+ Location: 72,93
+ Actor713: fenc
+ Owner: Neutral
+ Location: 72,92
+ Actor714: v19
+ Owner: Neutral
+ Location: 71,96
+ Actor717: v19
+ Owner: Neutral
+ Location: 71,94
+ Actor720: brl3
+ Owner: Neutral
+ Location: 71,95
+ Actor721: barl
+ Owner: Neutral
+ Location: 72,94
+ Actor723: barl
+ Owner: Neutral
+ Location: 72,96
+ Actor724: tc04
+ Owner: Neutral
+ Location: 69,90
+ Actor725: tc05
+ Owner: Neutral
+ Location: 57,36
+ Actor726: t08
+ Owner: Neutral
+ Location: 57,38
+ Actor727: t15
+ Owner: Neutral
+ Location: 70,91
+ Actor728: t11
+ Owner: Neutral
+ Location: 38,105
+ Actor729: t14
+ Owner: Neutral
+ Location: 88,20
+ Actor730: tc04
+ Owner: Neutral
+ Location: 11,100
+ Actor731: tc05
+ Owner: Neutral
+ Location: 116,26
+ Actor732: t08
+ Owner: Neutral
+ Location: 116,28
+ Actor733: t17
+ Owner: Neutral
+ Location: 13,101
+ Actor734: t11
+ Owner: Neutral
+ Location: 19,108
+ Actor735: t11
+ Owner: Neutral
+ Location: 109,19
+ Actor736: t01.husk
+ Owner: Neutral
+ Location: 90,57
+ Actor737: t17.husk
+ Owner: Neutral
+ Location: 38,70
+ Actor738: tc03
+ Owner: Neutral
+ Location: 75,77
+ Actor739: tc02
+ Owner: Neutral
+ Location: 79,72
+ Actor740: t08
+ Owner: Neutral
+ Location: 75,80
+ Actor741: t08
+ Owner: Neutral
+ Location: 52,48
+ Actor742: v11
+ Owner: Neutral
+ Location: 41,99
+ Actor743: snowhut
+ Owner: Neutral
+ Location: 89,29
+ Actor744: v06
+ Owner: Neutral
+ Location: 53,48
+ Actor745: wood
+ Owner: Neutral
+ Location: 52,49
+ Actor746: wood
+ Owner: Neutral
+ Location: 53,49
+ Actor747: wood
+ Owner: Neutral
+ Location: 54,49
+ Actor748: wood
+ Owner: Neutral
+ Location: 55,49
+ Actor749: v06
+ Owner: Neutral
+ Location: 73,80
+ Actor750: wood
+ Owner: Neutral
+ Location: 76,79
+ Actor751: wood
+ Owner: Neutral
+ Location: 75,79
+ Actor752: wood
+ Owner: Neutral
+ Location: 74,79
+ Actor753: wood
+ Owner: Neutral
+ Location: 73,79
+ Actor754: wood
+ Owner: Neutral
+ Location: 72,79
+ Actor755: t08
+ Owner: Neutral
+ Location: 87,63
+ Actor756: t03
+ Owner: Neutral
+ Location: 41,63
+ Actor757: t08
+ Owner: Neutral
+ Location: 47,30
+ Actor758: t08
+ Owner: Neutral
+ Location: 81,98
+ Actor759: railmine
+ Owner: Neutral
+ Location: 78,106
+ Actor760: t08
+ Owner: Neutral
+ Location: 79,107
+ Actor761: t08
+ Owner: Neutral
+ Location: 49,22
+ Actor762: v08
+ Owner: Neutral
+ Location: 49,23
+ Actor763: t15
+ Owner: Neutral
+ Location: 24,9
+ Actor764: t15
+ Owner: Neutral
+ Location: 11,22
+ Actor765: t01
+ Owner: Neutral
+ Location: 18,17
+ Actor766: tc05
+ Owner: Neutral
+ Location: 45,11
+ Actor767: v13
+ Owner: Neutral
+ Location: 13,44
+ Actor768: v12
+ Owner: Neutral
+ Location: 12,44
+ Actor769: t14
+ Owner: Neutral
+ Location: 11,42
+ Actor770: v02
+ Owner: Neutral
+ Location: 10,43
+ Actor771: v11
+ Owner: Neutral
+ Location: 13,23
+ Actor772: v11
+ Owner: Neutral
+ Location: 13,23
+ Actor774: v12
+ Owner: Neutral
+ Location: 117,84
+ Actor775: v13
+ Owner: Neutral
+ Location: 116,84
+ Actor773: v02
+ Owner: Neutral
+ Location: 118,84
+ Actor776: t08
+ Owner: Neutral
+ Location: 117,85
+ Actor777: t08
+ Owner: Neutral
+ Location: 104,118
+ Actor778: t07
+ Owner: Neutral
+ Location: 110,109
+ Actor779: t14
+ Owner: Neutral
+ Location: 115,104
+ Actor780: v10
+ Owner: Neutral
+ Location: 115,105
+ Actor781: tc04
+ Owner: Neutral
+ Location: 82,116
+ Actor782: t13
+ Owner: Neutral
+ Location: 20,95
+ Actor783: v03
+ Owner: Neutral
+ Location: 16,79
+ Actor784: t11
+ Owner: Neutral
+ Location: 19,80
+ Actor785: t11
+ Owner: Neutral
+ Location: 111,46
+ Actor786: v02
+ Owner: Neutral
+ Location: 113,47
+ Actor787: t14
+ Owner: Neutral
+ Location: 110,31
+ Actor788: tc02
+ Owner: Neutral
+ Location: 102,21
+ Actor789: tc01
+ Owner: Neutral
+ Location: 25,105
+ Actor791: ice01
+ Owner: Neutral
+ Location: 16,52
+ Actor792: ice04
+ Owner: Neutral
+ Location: 18,53
+ Actor790: ice01
+ Owner: Neutral
+ Location: 113,75
+ Actor794: ice04
+ Owner: Neutral
+ Location: 114,77
+ Actor795: ice04
+ Owner: Neutral
+ Location: 16,51
+ Actor796: ice05
+ Owner: Neutral
+ Location: 18,51
+ Actor797: ice05
+ Owner: Neutral
+ Location: 113,77
+ Actor793: ice04
+ Owner: Neutral
+ Location: 112,75
+ Actor798: ice02
+ Owner: Neutral
+ Location: 57,114
+ Actor799: ice02
+ Owner: Neutral
+ Location: 71,14
+ Actor800: ice04
+ Owner: Neutral
+ Location: 10,71
+ Actor801: ice05
+ Owner: Neutral
+ Location: 119,57
+ Actor802: ice03
+ Owner: Neutral
+ Location: 123,126
+ Actor803: ice02
+ Owner: Neutral
+ Location: 125,124
+ Actor804: ice05
+ Owner: Neutral
+ Location: 5,3
+ Actor805: ice04
+ Owner: Neutral
+ Location: 6,3
+ Actor806: ice02
+ Owner: Neutral
+ Location: 4,4
+ Actor807: ice01
+ Owner: Neutral
+ Location: 14,119
+ Actor808: ice03
+ Owner: Neutral
+ Location: 12,120
+ Actor810: ice01
+ Owner: Neutral
+ Location: 115,9
+ Actor809: ice05
+ Owner: Neutral
+ Location: 117,9
+ Actor811: ice04
+ Owner: Neutral
+ Location: 116,8
+ Actor812: ice04
+ Owner: Neutral
+ Location: 68,117
+ Actor813: ice04
+ Owner: Neutral
+ Location: 60,13
+ Actor814: ice05
+ Owner: Neutral
+ Location: 72,7
+ Actor815: ice05
+ Owner: Neutral
+ Location: 57,124
+ Actor816: ice02
+ Owner: Neutral
+ Location: 6,47
+ Actor817: ice02
+ Owner: Neutral
+ Location: 123,80
+ Actor818: ice03
+ Owner: Neutral
+ Location: 31,128
+ Actor819: ice03
+ Owner: Neutral
+ Location: 96,1
+ Actor820: ice03
+ Owner: Neutral
+ Location: 125,46
+ Actor821: ice03
+ Owner: Neutral
+ Location: 3,82
+ Actor822: t17
+ Owner: Neutral
+ Location: 101,10
+ Actor823: t17
+ Owner: Neutral
+ Location: 29,117
+ Actor825: railmine
+ Owner: Neutral
+ Location: 36,89
+ Actor824: c8
+ Owner: Neutral
+ Location: 72,46
+ SubCell: 3
+ Facing: 92
+ Actor826: c7
+ Owner: Neutral
+ Location: 76,49
+ SubCell: 3
+ Facing: 92
+ Actor827: c3
+ Owner: Neutral
+ Location: 69,42
+ SubCell: 3
+ Facing: 92
+ Actor828: c4
+ Owner: Neutral
+ Location: 55,48
+ SubCell: 3
+ Facing: 92
+ Actor829: c3
+ Owner: Neutral
+ Location: 72,80
+ SubCell: 3
+ Facing: 92
+ Actor830: c3
+ Owner: Neutral
+ Location: 57,88
+ SubCell: 3
+ Facing: 92
+ Actor831: c1
+ Owner: Neutral
+ Location: 53,82
+ SubCell: 3
+ Facing: 92
+ Actor832: c2
+ Owner: Neutral
+ Location: 57,81
+ SubCell: 3
+ Facing: 92
+ Actor833: c3
+ Owner: Neutral
+ Location: 106,31
+ SubCell: 3
+ Facing: 92
+ Actor835: c1
+ Owner: Neutral
+ Location: 127,6
+ SubCell: 3
+ Facing: 92
+ Actor836: c4
+ Owner: Neutral
+ Location: 122,2
+ SubCell: 3
+ Facing: 92
+ Actor837: c5
+ Owner: Neutral
+ Location: 83,84
+ SubCell: 3
+ Facing: 92
+ Actor838: c3
+ Owner: Neutral
+ Location: 60,103
+ SubCell: 1
+ Facing: 92
+ Actor840: c4
+ Owner: Neutral
+ Location: 2,123
+ SubCell: 3
+ Facing: 92
+ Actor841: c9
+ Owner: Neutral
+ Location: 5,126
+ SubCell: 1
+ Facing: 92
+ Actor842: c9
+ Owner: Neutral
+ Location: 22,98
+ SubCell: 3
+ Facing: 92
+ Actor843: c1
+ Owner: Neutral
+ Location: 119,86
+ SubCell: 3
+ Facing: 92
+ Actor844: c2
+ Owner: Neutral
+ Location: 17,81
+ SubCell: 3
+ Facing: 92
+ Actor845: c3
+ Owner: Neutral
+ Location: 11,45
+ SubCell: 3
+ Facing: 92
+ Actor846: c6
+ Owner: Neutral
+ Location: 114,47
+ SubCell: 1
+ Facing: 92
+ Actor847: c5
+ Owner: Neutral
+ Location: 45,44
+ SubCell: 3
+ Facing: 92
+ Actor848: c5
+ Owner: Neutral
+ Location: 69,26
+ SubCell: 3
+ Facing: 92
+ Actor849: c4
+ Owner: Neutral
+ Location: 68,124
+ SubCell: 3
+ Facing: 92
+ Actor850: c7
+ Owner: Neutral
+ Location: 60,5
+ SubCell: 3
+ Facing: 92
+ Actor851: railmine
+ Owner: Neutral
+ Location: 101,52
+ Actor852: railmine
+ Owner: Neutral
+ Location: 57,31
+ Actor854: v19
+ Owner: Neutral
+ Location: 117,2
+ Actor855: v19
+ Owner: Neutral
+ Location: 115,2
+ Actor856: brl3
+ Owner: Neutral
+ Location: 116,2
+ Actor857: v19
+ Owner: Neutral
+ Location: 12,127
+ Actor858: v19
+ Owner: Neutral
+ Location: 14,127
+ Actor859: brl3
+ Owner: Neutral
+ Location: 13,127
+ Actor834: c7
+ Owner: Neutral
+ Location: 12,126
+ SubCell: 3
+ Facing: 92
+ Actor839: tc03
+ Owner: Neutral
+ Location: 48,61
+ Actor853: t11
+ Owner: Neutral
+ Location: 81,61
+ Actor860: t11
+ Owner: Neutral
+ Location: 30,75
+ Actor867: mpspawn
+ Owner: Neutral
+ Location: 18,37
+ Actor868: mpspawn
+ Owner: Neutral
+ Location: 20,20
+ Actor869: mpspawn
+ Owner: Neutral
+ Location: 40,19
+ Actor870: mpspawn
+ Owner: Neutral
+ Location: 89,110
+ Actor871: mpspawn
+ Owner: Neutral
+ Location: 108,108
+ Actor872: mpspawn
+ Owner: Neutral
+ Location: 110,91
+
+Rules: rules.yaml
diff --git a/mods/ura/maps/six-below-zero/rules.yaml b/mods/ura/maps/six-below-zero/rules.yaml
new file mode 100644
index 0000000..276b32f
--- /dev/null
+++ b/mods/ura/maps/six-below-zero/rules.yaml
@@ -0,0 +1,15 @@
+World:
+ WeatherOverlay:
+ ChangingWindLevel: true
+ WindLevels: -5, -3, -2, 0, 2, 3, 5, 6
+ WindTick: 150, 550
+ InstantWindChanges: false
+ UseSquares: true
+ ParticleSize: 2, 3
+ ScatterDirection: -1, 1
+ Gravity: 1.00, 2.00
+ SwingOffset: 1.0, 1.5
+ SwingSpeed: 0.001, 0.025
+ SwingAmplitude: 1.0, 1.5
+ ParticleColors: ECECEC, E4E4E4, D0D0D0, BCBCBC
+ LineTailAlphaValue: 0
diff --git a/mods/ura/maps/snow town/map.bin b/mods/ura/maps/snow town/map.bin
new file mode 100644
index 0000000..28bd317
Binary files /dev/null and b/mods/ura/maps/snow town/map.bin differ
diff --git a/mods/ura/maps/snow town/map.png b/mods/ura/maps/snow town/map.png
new file mode 100644
index 0000000..fa62706
Binary files /dev/null and b/mods/ura/maps/snow town/map.png differ
diff --git a/mods/ura/maps/snow town/map.yaml b/mods/ura/maps/snow town/map.yaml
new file mode 100644
index 0000000..a211e23
--- /dev/null
+++ b/mods/ura/maps/snow town/map.yaml
@@ -0,0 +1,738 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Snow Town
+
+Author: MicroBit
+
+Tileset: SNOW
+
+MapSize: 128,128
+
+Bounds: 16,16,96,96
+
+Visibility: Lobby
+
+Categories: Conquest
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Multi0:
+ Name: Multi0
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Faction: allies
+ Enemies: Multi0, Multi1, Multi2, Multi3, Multi4, Multi5
+ PlayerReference@Multi1:
+ Name: Multi1
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi2:
+ Name: Multi2
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi3:
+ Name: Multi3
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi4:
+ Name: Multi4
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi5:
+ Name: Multi5
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+
+Actors:
+ Actor12: v10
+ Location: 63,62
+ Owner: Neutral
+ Actor20: v04
+ Location: 61,66
+ Owner: Neutral
+ Actor21: v12
+ Location: 67,62
+ Owner: Neutral
+ Actor22: v13
+ Location: 65,60
+ Owner: Neutral
+ Actor23: v05
+ Location: 67,59
+ Owner: Neutral
+ Actor24: t07
+ Location: 65,57
+ Owner: Neutral
+ Actor25: t05
+ Location: 65,66
+ Owner: Neutral
+ Actor13: v11
+ Location: 65,65
+ Owner: Neutral
+ Actor47: ice01
+ Location: 22,107
+ Owner: Neutral
+ Actor32: v06
+ Location: 59,61
+ Owner: Neutral
+ Actor50: tanktrap2
+ Location: 46,75
+ Owner: Neutral
+ Actor31: v03
+ Location: 58,63
+ Owner: Neutral
+ Actor30: v01
+ Location: 65,62
+ Owner: Neutral
+ Actor26: t02
+ Location: 61,60
+ Owner: Neutral
+ Actor0: v08
+ Location: 63,63
+ Owner: Neutral
+ Actor8: tc04
+ Location: 69,54
+ Owner: Neutral
+ Actor138: mine
+ Location: 45,24
+ Owner: Neutral
+ Actor7: tc04
+ Location: 54,58
+ Owner: Neutral
+ Actor241: mine
+ Owner: Neutral
+ Location: 45,48
+ Actor242: mine
+ Owner: Neutral
+ Location: 106,103
+ Actor3: mine
+ Location: 82,79
+ Owner: Neutral
+ Actor14: v17
+ Location: 66,65
+ Owner: Neutral
+ Actor18: v18
+ Location: 67,66
+ Owner: Neutral
+ Actor17: v18
+ Location: 67,65
+ Owner: Neutral
+ Actor19: brl3
+ Location: 63,65
+ Owner: Neutral
+ Actor16: v11
+ Location: 59,69
+ Owner: Neutral
+ Actor45: ice05
+ Location: 106,26
+ Owner: Neutral
+ Actor15: v17
+ Location: 66,66
+ Owner: Neutral
+ Actor11: t07
+ Location: 72,70
+ Owner: Neutral
+ Actor10: t07
+ Location: 59,74
+ Owner: Neutral
+ Actor9: t05
+ Location: 55,75
+ Owner: Neutral
+ Actor210: mpspawn
+ Owner: Neutral
+ Location: 21,68
+ Actor29: t06
+ Location: 58,61
+ Owner: Neutral
+ Actor28: tc05
+ Location: 59,58
+ Owner: Neutral
+ Actor27: t02
+ Location: 62,59
+ Owner: Neutral
+ Actor44: ice02
+ Location: 99,22
+ Owner: Neutral
+ Actor49: ice03
+ Location: 19,107
+ Owner: Neutral
+ Actor46: ice03
+ Location: 102,27
+ Owner: Neutral
+ Actor48: ice04
+ Location: 18,99
+ Owner: Neutral
+ Actor39: ice04
+ Location: 98,24
+ Owner: Neutral
+ Actor38: t10
+ Location: 101,21
+ Owner: Neutral
+ Actor35: oilb
+ Location: 103,22
+ Owner: Neutral
+ Actor36: t03
+ Location: 104,20
+ Owner: Neutral
+ Actor37: t06
+ Location: 105,21
+ Owner: Neutral
+ Actor34: t07
+ Location: 21,101
+ Owner: Neutral
+ Actor33: oilb
+ Location: 19,102
+ Owner: Neutral
+ Actor51: tanktrap2
+ Location: 43,77
+ Owner: Neutral
+ Actor52: tanktrap2
+ Location: 51,74
+ Owner: Neutral
+ Actor53: tanktrap2
+ Location: 53,70
+ Owner: Neutral
+ Actor54: utilpol1
+ Location: 57,64
+ Owner: Neutral
+ Actor55: utilpol2
+ Location: 63,57
+ Owner: Neutral
+ Actor56: utilpol2
+ Location: 66,68
+ Owner: Neutral
+ Actor57: utilpol2
+ Location: 62,68
+ Owner: Neutral
+ Actor58: utilpol1
+ Location: 69,71
+ Owner: Neutral
+ Actor59: tc03
+ Location: 67,71
+ Owner: Neutral
+ Actor60: tc03
+ Location: 71,56
+ Owner: Neutral
+ Actor61: fenc
+ Location: 41,77
+ Owner: Neutral
+ Actor62: fenc
+ Location: 42,77
+ Owner: Neutral
+ Actor63: fenc
+ Location: 48,75
+ Owner: Neutral
+ Actor64: fenc
+ Location: 45,75
+ Owner: Neutral
+ Actor65: fenc
+ Location: 52,69
+ Owner: Neutral
+ Actor66: fenc
+ Location: 52,70
+ Owner: Neutral
+ Actor67: fenc
+ Location: 55,73
+ Owner: Neutral
+ Actor68: fenc
+ Location: 54,74
+ Owner: Neutral
+ Actor69: fenc
+ Location: 55,74
+ Owner: Neutral
+ Actor70: tc05
+ Location: 67,51
+ Owner: Neutral
+ Actor71: tc04
+ Location: 68,48
+ Owner: Neutral
+ Actor72: tc01
+ Location: 74,46
+ Owner: Neutral
+ Actor73: tc02
+ Location: 75,52
+ Owner: Neutral
+ Actor74: tc02
+ Location: 71,51
+ Owner: Neutral
+ Actor75: tc03
+ Location: 73,45
+ Owner: Neutral
+ Actor76: tc04
+ Location: 78,49
+ Owner: Neutral
+ Actor77: tc04
+ Location: 77,47
+ Owner: Neutral
+ Actor78: t11
+ Location: 74,42
+ Owner: Neutral
+ Actor79: v11
+ Location: 82,51
+ Owner: Neutral
+ Actor80: utilpol1
+ Location: 81,51
+ Owner: Neutral
+ Actor81: v04
+ Location: 75,47
+ Owner: Neutral
+ Actor82: t06
+ Location: 80,54
+ Owner: Neutral
+ Actor83: t06
+ Location: 76,57
+ Owner: Neutral
+ Actor84: tc02
+ Location: 78,55
+ Owner: Neutral
+ Actor85: t03
+ Location: 74,53
+ Owner: Neutral
+ Actor86: t03
+ Location: 72,59
+ Owner: Neutral
+ Actor87: t10
+ Location: 61,55
+ Owner: Neutral
+ Actor88: t13
+ Location: 67,55
+ Owner: Neutral
+ Actor89: t14
+ Location: 64,55
+ Owner: Neutral
+ Actor90: v17
+ Location: 61,70
+ Owner: Neutral
+ Actor91: v18
+ Location: 60,71
+ Owner: Neutral
+ Actor92: v17
+ Location: 59,71
+ Owner: Neutral
+ Actor93: v14
+ Location: 61,71
+ Owner: Neutral
+ Actor94: v09
+ Location: 63,69
+ Owner: Neutral
+ Actor95: v08
+ Location: 65,69
+ Owner: Neutral
+ Actor96: v07
+ Location: 62,71
+ Owner: Neutral
+ Actor97: mine
+ Location: 65,84
+ Owner: Neutral
+ Actor99: tc02
+ Location: 56,75
+ Owner: Neutral
+ Actor101: mine
+ Location: 45,64
+ Owner: Neutral
+ Actor103: barl
+ Location: 66,70
+ Owner: Neutral
+ Actor104: barl
+ Location: 102,25
+ Owner: Neutral
+ Actor105: tc03
+ Location: 41,33
+ Owner: Neutral
+ Actor106: tc05
+ Location: 38,32
+ Owner: Neutral
+ Actor107: tc04
+ Location: 36,29
+ Owner: Neutral
+ Actor108: tc03
+ Location: 37,16
+ Owner: Neutral
+ Actor109: tc02
+ Location: 37,18
+ Owner: Neutral
+ Actor110: tc02
+ Location: 34,20
+ Owner: Neutral
+ Actor111: tc04
+ Location: 35,25
+ Owner: Neutral
+ Actor112: tc04
+ Location: 18,38
+ Owner: Neutral
+ Actor113: tc05
+ Location: 24,39
+ Owner: Neutral
+ Actor212: t08
+ Owner: Neutral
+ Location: 32,45
+ Actor115: tc01
+ Location: 28,41
+ Owner: Neutral
+ Actor116: tc01
+ Location: 30,57
+ Owner: Neutral
+ Actor117: tc02
+ Location: 33,61
+ Owner: Neutral
+ Actor118: tc01
+ Location: 37,72
+ Owner: Neutral
+ Actor119: tc02
+ Location: 35,71
+ Owner: Neutral
+ Actor120: t07
+ Location: 34,64
+ Owner: Neutral
+ Actor121: t05
+ Location: 33,67
+ Owner: Neutral
+ Actor122: tc01
+ Location: 31,78
+ Owner: Neutral
+ Actor123: t07
+ Location: 34,75
+ Owner: Neutral
+ Actor231: t01
+ Owner: Neutral
+ Location: 58,93
+ Actor125: tc05
+ Location: 53,33
+ Owner: Neutral
+ Actor126: tc02
+ Location: 56,35
+ Owner: Neutral
+ Actor127: tc02
+ Location: 60,37
+ Owner: Neutral
+ Actor128: tc03
+ Location: 58,36
+ Owner: Neutral
+ Actor129: t16
+ Location: 66,40
+ Owner: Neutral
+ Actor130: t05
+ Location: 48,42
+ Owner: Neutral
+ Actor131: tc03
+ Location: 42,56
+ Owner: Neutral
+ Actor132: tc02
+ Location: 40,55
+ Owner: Neutral
+ Actor133: mine
+ Location: 83,103
+ Owner: Neutral
+ Actor134: mine
+ Location: 106,79
+ Owner: Neutral
+ Actor135: mine
+ Location: 43,103
+ Owner: Neutral
+ Actor136: mine
+ Location: 106,39
+ Owner: Neutral
+ Actor137: mine
+ Location: 85,24
+ Owner: Neutral
+ Actor6: mine
+ Location: 21,24
+ Owner: Neutral
+ Actor139: mine
+ Location: 21,88
+ Owner: Neutral
+ Actor140: mine
+ Location: 21,48
+ Owner: Neutral
+ Actor211: mine
+ Owner: Neutral
+ Location: 26,88
+ Actor207: mine
+ Owner: Neutral
+ Location: 40,108
+ Actor143: mine
+ Location: 110,42
+ Owner: Neutral
+ Actor202: mine
+ Owner: Neutral
+ Location: 85,19
+ Actor145: tc02
+ Location: 46,92
+ Owner: Neutral
+ Actor146: tc02
+ Location: 48,93
+ Owner: Neutral
+ Actor147: tc05
+ Location: 57,94
+ Owner: Neutral
+ Actor148: tc01
+ Location: 53,94
+ Owner: Neutral
+ Actor149: tc02
+ Location: 61,94
+ Owner: Neutral
+ Actor150: tc03
+ Location: 63,94
+ Owner: Neutral
+ Actor151: tc01
+ Location: 65,92
+ Owner: Neutral
+ Actor152: t16
+ Location: 43,87
+ Owner: Neutral
+ Actor153: t02
+ Location: 42,88
+ Owner: Neutral
+ Actor154: t01
+ Location: 46,82
+ Owner: Neutral
+ Actor155: tc03
+ Location: 90,110
+ Owner: Neutral
+ Actor199: tc01
+ Owner: Neutral
+ Location: 88,94
+ Actor200: tc03
+ Owner: Neutral
+ Location: 88,95
+ Actor158: tc05
+ Location: 90,101
+ Owner: Neutral
+ Actor159: t05
+ Location: 91,104
+ Owner: Neutral
+ Actor160: t07
+ Location: 90,108
+ Owner: Neutral
+ Actor161: tc04
+ Location: 90,105
+ Owner: Neutral
+ Actor162: t08
+ Location: 89,99
+ Owner: Neutral
+ Actor163: t08
+ Location: 93,82
+ Owner: Neutral
+ Actor164: t17
+ Location: 92,83
+ Owner: Neutral
+ Actor165: tc02
+ Location: 93,84
+ Owner: Neutral
+ Actor166: tc02
+ Location: 109,85
+ Owner: Neutral
+ Actor167: tc04
+ Location: 106,86
+ Owner: Neutral
+ Actor236: tc02
+ Owner: Neutral
+ Location: 95,85
+ Actor169: tc02
+ Location: 100,85
+ Owner: Neutral
+ Actor170: t06
+ Location: 98,86
+ Owner: Neutral
+ Actor171: t16
+ Location: 104,87
+ Owner: Neutral
+ Actor172: tc03
+ Location: 94,64
+ Owner: Neutral
+ Actor173: tc01
+ Location: 84,64
+ Owner: Neutral
+ Actor174: t05
+ Location: 92,64
+ Owner: Neutral
+ Actor175: t06
+ Location: 87,66
+ Owner: Neutral
+ Actor176: t11
+ Location: 81,61
+ Owner: Neutral
+ Actor177: tc04
+ Location: 85,65
+ Owner: Neutral
+ Actor178: tc04
+ Location: 88,65
+ Owner: Neutral
+ Actor179: tc01
+ Location: 84,53
+ Owner: Neutral
+ Actor180: tc03
+ Location: 86,53
+ Owner: Neutral
+ Actor181: t01
+ Location: 92,56
+ Owner: Neutral
+ Actor182: t14
+ Location: 88,54
+ Owner: Neutral
+ Actor183: t17
+ Location: 90,55
+ Owner: Neutral
+ Actor184: t02
+ Location: 99,45
+ Owner: Neutral
+ Actor185: t07
+ Location: 110,63
+ Owner: Neutral
+ Actor186: t07
+ Location: 92,77
+ Owner: Neutral
+ Actor188: t07
+ Location: 55,109
+ Owner: Neutral
+ Actor189: t07
+ Location: 51,94
+ Owner: Neutral
+ Actor190: t07
+ Location: 95,108
+ Owner: Neutral
+ Actor191: t07
+ Location: 105,88
+ Owner: Neutral
+ Actor192: t07
+ Location: 18,56
+ Owner: Neutral
+ Actor193: t07
+ Location: 17,76
+ Owner: Neutral
+ Actor194: t13
+ Location: 32,52
+ Owner: Neutral
+ Actor195: t07
+ Location: 54,23
+ Owner: Neutral
+ Actor196: t07
+ Location: 75,19
+ Owner: Neutral
+ Actor197: t05
+ Location: 74,20
+ Owner: Neutral
+ Actor198: tc02
+ Owner: Neutral
+ Location: 25,17
+ Actor98: snowhut
+ Location: 58,65
+ Owner: Neutral
+ Actor100: snowhut
+ Location: 75,43
+ Owner: Neutral
+ Actor201: t05
+ Owner: Neutral
+ Location: 86,97
+ Actor203: tc01
+ Owner: Neutral
+ Location: 89,49
+ Actor204: mpspawn
+ Owner: Neutral
+ Location: 33,36
+ Actor205: mpspawn
+ Owner: Neutral
+ Location: 65,24
+ Actor206: mpspawn
+ Owner: Neutral
+ Location: 63,103
+ Actor213: tc01
+ Owner: Neutral
+ Location: 26,16
+ Actor214: tc01
+ Owner: Neutral
+ Location: 36,24
+ Actor215: tc01
+ Owner: Neutral
+ Location: 35,30
+ Actor216: t02
+ Owner: Neutral
+ Location: 37,27
+ Actor217: t02
+ Owner: Neutral
+ Location: 29,15
+ Actor218: t05
+ Owner: Neutral
+ Location: 38,21
+ Actor219: t06
+ Owner: Neutral
+ Location: 38,17
+ Actor220: t06
+ Owner: Neutral
+ Location: 36,16
+ Actor221: t06
+ Owner: Neutral
+ Location: 33,28
+ Actor222: t06
+ Owner: Neutral
+ Location: 33,20
+ Actor223: t06
+ Owner: Neutral
+ Location: 38,23
+ Actor224: t06
+ Owner: Neutral
+ Location: 30,42
+ Actor225: tc01
+ Owner: Neutral
+ Location: 20,39
+ Actor226: t05
+ Owner: Neutral
+ Location: 17,40
+ Actor227: tc01
+ Owner: Neutral
+ Location: 15,38
+ Actor228: t06
+ Owner: Neutral
+ Location: 55,35
+ Actor229: t07
+ Owner: Neutral
+ Location: 53,34
+ Actor230: tc04
+ Owner: Neutral
+ Location: 50,34
+ Actor232: t06
+ Owner: Neutral
+ Location: 65,93
+ Actor233: t06
+ Owner: Neutral
+ Location: 47,93
+ Actor234: tc01
+ Owner: Neutral
+ Location: 111,85
+ Actor235: t01
+ Owner: Neutral
+ Location: 95,84
+ Actor237: tc04
+ Owner: Neutral
+ Location: 29,110
+ Actor238: tc01
+ Owner: Neutral
+ Location: 32,108
+ Actor239: t01
+ Owner: Neutral
+ Location: 32,109
+ Actor240: t01
+ Owner: Neutral
+ Location: 35,105
+ Actor245: mpspawn
+ Owner: Neutral
+ Location: 94,92
+ Actor244: mpspawn
+ Owner: Neutral
+ Location: 104,59
+
+Rules: rules.yaml
diff --git a/mods/ura/maps/snow town/rules.yaml b/mods/ura/maps/snow town/rules.yaml
new file mode 100644
index 0000000..80146bd
--- /dev/null
+++ b/mods/ura/maps/snow town/rules.yaml
@@ -0,0 +1,20 @@
+World:
+ WeatherOverlay:
+ ChangingWindLevel: true
+ WindLevels: -5, -3, -2, 0, 2, 3, 5
+ WindTick: 150, 550
+ InstantWindChanges: false
+ UseSquares: true
+ ParticleSize: 1, 3
+ ScatterDirection: -1, 1
+ Gravity: 1.00, 2.00
+ SwingOffset: 1.0, 1.5
+ SwingSpeed: 0.001, 0.025
+ SwingAmplitude: 1.0, 1.5
+ ParticleColors: ECECEC, E4E4E4, D0D0D0, BCBCBC
+ LineTailAlphaValue: 0
+ GlobalLightingPaletteEffect:
+ Red: 0.9
+ Green: 0.9
+ Blue: 1.0
+ Ambient: 1.2
diff --git a/mods/ura/maps/snow-off/map.bin b/mods/ura/maps/snow-off/map.bin
new file mode 100644
index 0000000..8c263ed
Binary files /dev/null and b/mods/ura/maps/snow-off/map.bin differ
diff --git a/mods/ura/maps/snow-off/map.png b/mods/ura/maps/snow-off/map.png
new file mode 100644
index 0000000..4904fe1
Binary files /dev/null and b/mods/ura/maps/snow-off/map.png differ
diff --git a/mods/ura/maps/snow-off/map.yaml b/mods/ura/maps/snow-off/map.yaml
new file mode 100644
index 0000000..e2c9326
--- /dev/null
+++ b/mods/ura/maps/snow-off/map.yaml
@@ -0,0 +1,888 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Snow Off
+
+Author: Aaron Lloyd
+
+Tileset: SNOW
+
+MapSize: 62,52
+
+Bounds: 1,1,60,50
+
+Visibility: Lobby
+
+Categories: Conquest
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: england
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Faction: england
+ Enemies: Multi0, Multi1
+ PlayerReference@Multi0:
+ Name: Multi0
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+ PlayerReference@Multi1:
+ Name: Multi1
+ Playable: True
+ Faction: Random
+ Enemies: Creeps
+
+Actors:
+ Actor4: oilb
+ Owner: Neutral
+ Location: 25,23
+ Actor3: oilb
+ Owner: Neutral
+ Location: 33,25
+ Actor6: tc03
+ Owner: Neutral
+ Location: 35,21
+ Actor7: boxes02
+ Owner: Neutral
+ Location: 27,24
+ Actor8: boxes06
+ Owner: Neutral
+ Location: 34,27
+ Actor9: t17
+ Owner: Neutral
+ Location: 30,24
+ Actor10: tc03
+ Owner: Neutral
+ Location: 21,23
+ Actor12: tc04
+ Owner: Neutral
+ Location: 26,27
+ Actor14: t17
+ Owner: Neutral
+ Location: 34,21
+ Actor17: t02
+ Owner: Neutral
+ Location: 37,24
+ Actor18: t05
+ Owner: Neutral
+ Location: 19,27
+ Actor19: t05
+ Owner: Neutral
+ Location: 33,21
+ Actor20: t08
+ Owner: Neutral
+ Location: 22,29
+ Actor21: v07
+ Owner: Neutral
+ Location: 30,23
+ Actor23: mine
+ Owner: Neutral
+ Location: 47,30
+ Actor45: c5
+ Owner: Neutral
+ Location: 29,25
+ SubCell: 3
+ Facing: 93
+ Actor71: cycl
+ Owner: Neutral
+ Location: 48,17
+ Actor72: cycl
+ Owner: Neutral
+ Location: 49,17
+ Actor74: cycl
+ Owner: Neutral
+ Location: 50,17
+ Actor75: cycl
+ Owner: Neutral
+ Location: 51,17
+ Actor79: oilb
+ Owner: Neutral
+ Location: 49,15
+ Actor76: cycl
+ Owner: Neutral
+ Location: 48,16
+ Actor77: cycl
+ Owner: Neutral
+ Location: 48,15
+ Actor78: cycl
+ Owner: Neutral
+ Location: 51,16
+ Actor73: cycl
+ Owner: Neutral
+ Location: 10,34
+ Actor83: cycl
+ Owner: Neutral
+ Location: 11,34
+ Actor84: cycl
+ Owner: Neutral
+ Location: 12,34
+ Actor86: cycl
+ Owner: Neutral
+ Location: 13,34
+ Actor87: cycl
+ Owner: Neutral
+ Location: 10,35
+ Actor89: oilb
+ Owner: Neutral
+ Location: 11,35
+ Actor91: cycl
+ Owner: Neutral
+ Location: 13,35
+ Actor92: cycl
+ Owner: Neutral
+ Location: 10,36
+ Actor93: cycl
+ Owner: Neutral
+ Location: 13,36
+ Actor95: cycl
+ Owner: Neutral
+ Location: 13,37
+ Actor90: v13
+ Owner: Neutral
+ Location: 7,27
+ Actor96: v03
+ Owner: Neutral
+ Location: 58,21
+ Actor97: v05
+ Owner: Neutral
+ Location: 54,21
+ Actor98: v04
+ Owner: Neutral
+ Location: 57,19
+ Actor104: t03
+ Owner: Neutral
+ Location: 3,27
+ Actor106: tc03
+ Owner: Neutral
+ Location: 8,35
+ Actor107: tc04
+ Owner: Neutral
+ Location: 52,15
+ Actor109: t15
+ Owner: Neutral
+ Location: 53,21
+ Actor110: t13
+ Owner: Neutral
+ Location: 58,19
+ Actor111: t08
+ Owner: Neutral
+ Location: 57,22
+ Actor112: tc05
+ Owner: Neutral
+ Location: 4,47
+ Actor114: t16
+ Owner: Neutral
+ Location: 1,42
+ Actor115: t11
+ Owner: Neutral
+ Location: 1,46
+ Actor116: tc04
+ Owner: Neutral
+ Location: 4,45
+ Actor117: tc03
+ Owner: Neutral
+ Location: 2,47
+ Actor118: t15
+ Owner: Neutral
+ Location: 1,49
+ Actor119: tc02
+ Owner: Neutral
+ Location: 3,49
+ Actor120: tc03
+ Owner: Neutral
+ Location: 0,40
+ Actor121: tc03
+ Owner: Neutral
+ Location: 7,49
+ Actor122: tc03
+ Owner: Neutral
+ Location: 58,49
+ Actor123: tc02
+ Owner: Neutral
+ Location: 55,49
+ Actor124: tc01
+ Owner: Neutral
+ Location: 59,45
+ Actor125: t15
+ Owner: Neutral
+ Location: 56,47
+ Actor126: t17
+ Owner: Neutral
+ Location: 58,47
+ Actor127: tc02
+ Owner: Neutral
+ Location: 59,43
+ Actor128: tc05
+ Owner: Neutral
+ Location: 56,45
+ Actor129: tc05
+ Owner: Neutral
+ Location: 52,49
+ Actor130: tc03
+ Owner: Neutral
+ Location: 55,47
+ Actor131: tc03
+ Owner: Neutral
+ Location: 1,1
+ Actor132: tc05
+ Owner: Neutral
+ Location: 0,3
+ Actor133: tc01
+ Owner: Neutral
+ Location: 5,1
+ Actor134: tc01
+ Owner: Neutral
+ Location: 1,6
+ Actor135: t02
+ Owner: Neutral
+ Location: 4,2
+ Actor136: t01
+ Owner: Neutral
+ Location: 1,8
+ Actor137: t01
+ Owner: Neutral
+ Location: 57,2
+ Actor138: t01
+ Owner: Neutral
+ Location: 58,3
+ Actor139: tc01
+ Owner: Neutral
+ Location: 59,7
+ Actor140: tc02
+ Owner: Neutral
+ Location: 57,5
+ Actor141: tc05
+ Owner: Neutral
+ Location: 53,1
+ Actor142: tc03
+ Owner: Neutral
+ Location: 55,4
+ Actor143: tc01
+ Owner: Neutral
+ Location: 57,3
+ Actor144: t10
+ Owner: Neutral
+ Location: 58,5
+ Actor145: t11
+ Owner: Neutral
+ Location: 58,1
+ Actor146: t13
+ Owner: Neutral
+ Location: 59,3
+ Actor147: t17
+ Owner: Neutral
+ Location: 56,8
+ Actor148: t16
+ Owner: Neutral
+ Location: 3,4
+ Actor149: t11
+ Owner: Neutral
+ Location: 2,2
+ Actor150: t11
+ Owner: Neutral
+ Location: 6,3
+ Actor151: tc01
+ Owner: Neutral
+ Location: 7,1
+ Actor152: tc03
+ Owner: Neutral
+ Location: 9,2
+ Actor153: tc03
+ Owner: Neutral
+ Location: 10,1
+ Actor154: tc04
+ Owner: Neutral
+ Location: 8,0
+ Actor156: tc04
+ Owner: Neutral
+ Location: 51,0
+ Actor159: tc03
+ Owner: Neutral
+ Location: 0,10
+ Actor161: tc02
+ Owner: Neutral
+ Location: 38,1
+ Actor162: tc05
+ Owner: Neutral
+ Location: 23,48
+ Actor163: t17
+ Owner: Neutral
+ Location: 1,35
+ Actor164: t11
+ Owner: Neutral
+ Location: 59,15
+ Actor165: t17
+ Owner: Neutral
+ Location: 59,36
+ Actor166: t16
+ Owner: Neutral
+ Location: 8,44
+ Actor167: t14
+ Owner: Neutral
+ Location: 49,3
+ Actor155: tc01
+ Owner: Neutral
+ Location: 4,4
+ Actor160: t15
+ Owner: Neutral
+ Location: 2,5
+ Actor168: v03
+ Owner: Neutral
+ Location: 2,29
+ Actor169: v09
+ Owner: Neutral
+ Location: 3,31
+ Actor170: tc01
+ Owner: Neutral
+ Location: 6,29
+ Actor171: t16
+ Owner: Neutral
+ Location: 6,26
+ Actor172: t17
+ Owner: Neutral
+ Location: 8,26
+ Actor173: t08
+ Owner: Neutral
+ Location: 2,31
+ Actor174: tc03
+ Owner: Neutral
+ Location: 3,31
+ Actor175: t01
+ Owner: Neutral
+ Location: 57,20
+ Actor176: t01
+ Owner: Neutral
+ Location: 60,22
+ Actor177: t06
+ Owner: Neutral
+ Location: 2,26
+ Actor180: t15
+ Owner: Neutral
+ Location: 4,10
+ Actor181: t10
+ Owner: Neutral
+ Location: 56,39
+ Actor182: t08
+ Owner: Neutral
+ Location: 43,23
+ Actor190: c3
+ Owner: Neutral
+ Location: 4,28
+ SubCell: 3
+ Facing: 92
+ Actor191: c4
+ Owner: Neutral
+ Location: 55,20
+ SubCell: 3
+ Facing: 92
+ Actor192: c9
+ Owner: Neutral
+ Location: 6,31
+ SubCell: 3
+ Facing: 92
+ Actor193: c9
+ Owner: Neutral
+ Location: 57,23
+ SubCell: 3
+ Facing: 92
+ Actor196: t11
+ Owner: Neutral
+ Location: 42,48
+ Actor197: tc01
+ Owner: Neutral
+ Location: 43,49
+ Actor198: tc01
+ Owner: Neutral
+ Location: 18,1
+ Actor199: tc02
+ Owner: Neutral
+ Location: 16,2
+ Actor183: tc05
+ Owner: Neutral
+ Location: 23,29
+ Actor184: t16
+ Owner: Neutral
+ Location: 19,32
+ Actor188: tc04
+ Owner: Neutral
+ Location: 27,32
+ Actor194: t15
+ Owner: Neutral
+ Location: 28,33
+ Actor200: tc01
+ Owner: Neutral
+ Location: 30,33
+ Actor201: t05
+ Owner: Neutral
+ Location: 37,34
+ Actor202: mine
+ Owner: Neutral
+ Location: 19,37
+ Actor203: v10
+ Owner: Neutral
+ Location: 40,37
+ Actor204: t16
+ Owner: Neutral
+ Location: 37,37
+ Actor205: c3
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 40,38
+ Actor206: tc01
+ Owner: Neutral
+ Location: 41,37
+ Actor207: v01
+ Owner: Neutral
+ Location: 42,38
+ Actor208: mine
+ Owner: Neutral
+ Location: 18,39
+ Actor209: v03
+ Owner: Neutral
+ Location: 37,39
+ Actor210: c9
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 39,40
+ Actor211: c7
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 41,40
+ Actor212: t17
+ Owner: Neutral
+ Location: 42,39
+ Actor213: c10
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 43,40
+ Actor214: t16
+ Owner: Neutral
+ Location: 39,40
+ Actor215: v12
+ Owner: Neutral
+ Location: 40,41
+ Actor216: t11
+ Owner: Neutral
+ Location: 41,41
+ Actor217: v05
+ Owner: Neutral
+ Location: 42,42
+ Actor218: tc02
+ Owner: Neutral
+ Location: 44,38
+ Actor185: v02
+ Owner: Neutral
+ Location: 21,9
+ Actor186: v04
+ Owner: Neutral
+ Location: 22,10
+ Actor187: c4
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 21,11
+ Actor195: mine
+ Owner: Neutral
+ Location: 43,12
+ Actor219: c10
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 23,13
+ Actor220: v12
+ Owner: Neutral
+ Location: 24,13
+ Actor221: v11
+ Owner: Neutral
+ Location: 21,14
+ Actor222: mine
+ Owner: Neutral
+ Location: 42,14
+ Actor223: t06
+ Owner: Neutral
+ Location: 22,14
+ Actor224: t16
+ Owner: Neutral
+ Location: 24,14
+ Actor227: t16
+ Owner: Neutral
+ Location: 30,16
+ Actor228: tc03
+ Owner: Neutral
+ Location: 31,17
+ Actor229: tc02
+ Owner: Neutral
+ Location: 32,17
+ Actor230: t17
+ Owner: Neutral
+ Location: 42,17
+ Actor231: t17
+ Owner: Neutral
+ Location: 29,18
+ Actor232: t16
+ Owner: Neutral
+ Location: 30,19
+ Actor234: tc04
+ Owner: Neutral
+ Location: 37,19
+ Actor235: t11
+ Owner: Neutral
+ Location: 16,8
+ Actor236: v08
+ Owner: Neutral
+ Location: 18,9
+ Actor237: t05
+ Owner: Neutral
+ Location: 20,9
+ Actor238: t08
+ Owner: Neutral
+ Location: 17,11
+ Actor239: c2
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 18,11
+ Actor241: v03
+ Owner: Neutral
+ Location: 18,12
+ Actor242: c10
+ Owner: Neutral
+ SubCell: 3
+ Facing: 92
+ Location: 20,13
+ Actor243: tc02
+ Owner: Neutral
+ Location: 19,13
+ Actor245: mine
+ Owner: Neutral
+ Location: 13,20
+ Actor178: v02
+ Owner: Neutral
+ Location: 6,28
+ Actor179: tc01
+ Owner: Neutral
+ Location: 21,18
+ Actor226: t15
+ Owner: Neutral
+ Location: 15,28
+ Actor233: tc01
+ Owner: Neutral
+ Location: 28,19
+ Actor246: tc03
+ Owner: Neutral
+ Location: 26,29
+ Actor247: tc03
+ Owner: Neutral
+ Location: 39,31
+ Actor248: tc02
+ Owner: Neutral
+ Location: 35,19
+ Actor249: t16
+ Owner: Neutral
+ Location: 34,20
+ Actor250: t15
+ Owner: Neutral
+ Location: 23,26
+ Actor252: utilpol2
+ Owner: Neutral
+ Location: 54,20
+ Actor253: tc05
+ Owner: Neutral
+ Location: 47,21
+ Actor254: tc02
+ Owner: Neutral
+ Location: 18,29
+ Actor255: tc03
+ Owner: Neutral
+ Location: 31,30
+ Actor256: t15
+ Owner: Neutral
+ Location: 32,30
+ Actor257: tc04
+ Owner: Neutral
+ Location: 34,29
+ Actor258: tc03
+ Owner: Neutral
+ Location: 19,18
+ Actor259: tc02
+ Owner: Neutral
+ Location: 13,30
+ Actor260: tc03
+ Owner: Neutral
+ Location: 47,20
+ Actor261: t17
+ Owner: Neutral
+ Location: 42,20
+ Actor262: t15
+ Owner: Neutral
+ Location: 41,31
+ Actor263: t12
+ Owner: Neutral
+ Location: 17,27
+ Actor264: t08
+ Owner: Neutral
+ Location: 14,28
+ Actor265: t01
+ Owner: Neutral
+ Location: 30,29
+ Actor266: t12
+ Owner: Neutral
+ Location: 32,20
+ Actor267: t16
+ Owner: Neutral
+ Location: 11,9
+ Actor268: t08
+ Owner: Neutral
+ Location: 48,9
+ Actor269: tc01
+ Owner: Neutral
+ Location: 44,20
+ Actor270: t05
+ Owner: Neutral
+ Location: 40,21
+ Actor271: t16
+ Owner: Neutral
+ Location: 46,19
+ Actor272: t15
+ Owner: Neutral
+ Location: 40,22
+ Actor273: t05
+ Owner: Neutral
+ Location: 50,38
+ Actor274: t10
+ Owner: Neutral
+ Location: 26,19
+ Actor275: tc02
+ Owner: Neutral
+ Location: 20,23
+ Actor276: t07
+ Owner: Neutral
+ Location: 29,26
+ Actor277: t08
+ Owner: Neutral
+ Location: 29,30
+ Actor278: t12
+ Owner: Neutral
+ Location: 28,29
+ Actor279: tc03
+ Owner: Neutral
+ Location: 29,20
+ Actor280: tc01
+ Owner: Neutral
+ Location: 38,21
+ Actor281: tc03
+ Owner: Neutral
+ Location: 40,21
+ Actor282: t14
+ Owner: Neutral
+ Location: 42,21
+ Actor283: tc03
+ Owner: Neutral
+ Location: 17,28
+ Actor284: t13
+ Owner: Neutral
+ Location: 16,29
+ Actor285: t16
+ Owner: Neutral
+ Location: 15,29
+ Actor286: t02
+ Owner: Neutral
+ Location: 20,28
+ Actor287: t03
+ Owner: Neutral
+ Location: 37,22
+ Actor288: t08
+ Owner: Neutral
+ Location: 31,21
+ Actor289: tc05
+ Owner: Neutral
+ Location: 34,22
+ Actor290: tc05
+ Owner: Neutral
+ Location: 38,23
+ Actor291: t16
+ Owner: Neutral
+ Location: 39,24
+ Actor292: t08
+ Owner: Neutral
+ Location: 38,25
+ Actor294: tc03
+ Owner: Neutral
+ Location: 18,27
+ Actor296: t06
+ Owner: Neutral
+ Location: 21,27
+ Actor297: tc04
+ Owner: Neutral
+ Location: 21,27
+ Actor298: tc03
+ Owner: Neutral
+ Location: 58,25
+ Actor299: tc01
+ Owner: Neutral
+ Location: 2,23
+ Actor300: t11
+ Owner: Neutral
+ Location: 29,28
+ Actor301: t03
+ Owner: Neutral
+ Location: 38,31
+ Actor302: t03
+ Owner: Neutral
+ Location: 44,22
+ Actor303: t13
+ Owner: Neutral
+ Location: 43,21
+ Actor304: t16
+ Owner: Neutral
+ Location: 42,22
+ Actor305: t05
+ Owner: Neutral
+ Location: 46,20
+ Actor306: tc01
+ Owner: Neutral
+ Location: 10,28
+ Actor307: t11
+ Owner: Neutral
+ Location: 13,26
+ Actor308: tc03
+ Owner: Neutral
+ Location: 14,28
+ Actor309: t12
+ Owner: Neutral
+ Location: 15,27
+ Actor293: tc01
+ Owner: Neutral
+ Location: 25,26
+ Actor295: t15
+ Owner: Neutral
+ Location: 23,27
+ Actor310: tc03
+ Owner: Neutral
+ Location: 24,28
+ Actor311: tc03
+ Owner: Neutral
+ Location: 25,28
+ Actor244: tc03
+ Owner: Neutral
+ Location: 20,1
+ Actor312: tc03
+ Owner: Neutral
+ Location: 40,49
+ Actor313: t13
+ Owner: Neutral
+ Location: 1,27
+ Actor314: t12
+ Owner: Neutral
+ Location: 22,20
+ Actor315: tc03
+ Owner: Neutral
+ Location: 26,26
+ Actor316: tc03
+ Owner: Neutral
+ Location: 28,28
+ Actor317: tc01
+ Owner: Neutral
+ Location: 32,21
+ Actor318: t13
+ Owner: Neutral
+ Location: 33,22
+ Actor319: t17
+ Owner: Neutral
+ Location: 16,11
+ Actor320: t02
+ Owner: Neutral
+ Location: 11,11
+ Actor321: t03
+ Owner: Neutral
+ Location: 51,36
+ Actor322: t05
+ Owner: Neutral
+ Location: 31,29
+ Actor323: t12
+ Owner: Neutral
+ Location: 36,26
+ Actor324: t08
+ Owner: Neutral
+ Location: 17,24
+ Actor325: tc01
+ Owner: Neutral
+ Location: 1,43
+ Actor326: tc01
+ Owner: Neutral
+ Location: 7,45
+ Actor327: t06
+ Owner: Neutral
+ Location: 51,3
+ Actor328: t06
+ Owner: Neutral
+ Location: 47,42
+ Actor329: t01
+ Owner: Neutral
+ Location: 14,8
+ Actor330: t10
+ Owner: Neutral
+ Location: 7,2
+ Actor331: t10
+ Owner: Neutral
+ Location: 60,16
+ Actor332: t16
+ Owner: Neutral
+ Location: 58,44
+ Actor333: t02
+ Owner: Neutral
+ Location: 25,19
+ Actor334: tc03
+ Owner: Neutral
+ Location: 22,19
+ Actor335: tc03
+ Owner: Neutral
+ Location: 2,45
+ Actor336: v11
+ Owner: Neutral
+ Location: 52,23
+ Actor337: tc02
+ Owner: Neutral
+ Location: 58,27
+ Actor338: t15
+ Owner: Neutral
+ Location: 1,21
+ Actor339: brl3
+ Owner: Creeps
+ Location: 48,14
+ Actor340: brl3
+ Owner: Creeps
+ Location: 13,38
+ Actor341: barl
+ Owner: Creeps
+ Location: 51,15
+ Actor342: barl
+ Owner: Creeps
+ Location: 11,37
+ Actor344: t06
+ Owner: Neutral
+ Location: 46,21
+ Actor345: t03
+ Owner: Neutral
+ Location: 47,22
+ Actor346: t05
+ Owner: Neutral
+ Location: 45,22
+ Actor347: mpspawn
+ Owner: Neutral
+ Location: 26,38
+ Actor348: mpspawn
+ Owner: Neutral
+ Location: 35,12
+
+Rules: rules.yaml
diff --git a/mods/ura/maps/snow-off/rules.yaml b/mods/ura/maps/snow-off/rules.yaml
new file mode 100644
index 0000000..551470f
--- /dev/null
+++ b/mods/ura/maps/snow-off/rules.yaml
@@ -0,0 +1,15 @@
+World:
+ WeatherOverlay:
+ ParticleDensityFactor: 7
+ ChangingWindLevel: true
+ WindLevels: -2, 0, 2
+ WindTick: 150, 550
+ InstantWindChanges: false
+ UseSquares: true
+ ParticleSize: 1, 3
+ ScatterDirection: 0, 0
+ Gravity: 0.50, 1.50
+ SwingOffset: 1, 2
+ SwingSpeed: 0.01, 0.02
+ SwingAmplitude: 0, 0
+ ParticleColors: fbfbfb90, f4f4f480, f1f1f1, ffffff50
diff --git a/mods/ura/maps/soviet-01/map.bin b/mods/ura/maps/soviet-01/map.bin
new file mode 100644
index 0000000..9f63741
Binary files /dev/null and b/mods/ura/maps/soviet-01/map.bin differ
diff --git a/mods/ura/maps/soviet-01/map.png b/mods/ura/maps/soviet-01/map.png
new file mode 100644
index 0000000..dc77417
Binary files /dev/null and b/mods/ura/maps/soviet-01/map.png differ
diff --git a/mods/ura/maps/soviet-01/map.yaml b/mods/ura/maps/soviet-01/map.yaml
new file mode 100644
index 0000000..aef703a
--- /dev/null
+++ b/mods/ura/maps/soviet-01/map.yaml
@@ -0,0 +1,588 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 01: Lesson in Blood
+
+Author: Westwood Studios
+
+Tileset: SNOW
+
+MapSize: 128,128
+
+Bounds: 32,47,32,38
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@France:
+ Name: France
+ Faction: allies
+ Color: 5CC1A3
+ Allies: Germany
+ Enemies: USSR
+ PlayerReference@Germany:
+ Name: Germany
+ NonCombatant: True
+ Faction: allies
+ Color: 505050
+ Allies: France
+ Enemies: USSR
+ PlayerReference@USSR:
+ Name: USSR
+ Playable: True
+ AllowBots: False
+ Required: True
+ LockFaction: True
+ Faction: soviet
+ LockColor: True
+ Color: FE1100
+ LockSpawn: True
+ LockTeam: True
+ Enemies: France, Germany
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+
+Actors:
+ Actor0: wood
+ Location: 44,50
+ Owner: Neutral
+ Actor1: wood
+ Location: 44,51
+ Owner: Neutral
+ Actor2: wood
+ Location: 44,52
+ Owner: Neutral
+ Actor3: wood
+ Location: 44,53
+ Owner: Neutral
+ Actor4: wood
+ Location: 45,53
+ Owner: Neutral
+ Actor5: wood
+ Location: 56,65
+ Owner: Neutral
+ Actor6: v14
+ Location: 54,66
+ Owner: Neutral
+ Actor7: v14
+ Location: 55,66
+ Owner: Neutral
+ Actor8: wood
+ Location: 56,66
+ Owner: Neutral
+ Actor9: wood
+ Location: 53,67
+ Owner: Neutral
+ Actor10: wood
+ Location: 55,67
+ Owner: Neutral
+ Actor11: wood
+ Location: 56,67
+ Owner: Neutral
+ Actor12: wood
+ Location: 45,69
+ Owner: Neutral
+ Actor13: wood
+ Location: 46,69
+ Owner: Neutral
+ Actor14: wood
+ Location: 47,69
+ Owner: Neutral
+ Actor15: wood
+ Location: 45,70
+ Owner: Neutral
+ Actor16: wood
+ Location: 51,70
+ Owner: Neutral
+ Actor17: wood
+ Location: 53,71
+ Owner: Neutral
+ Actor18: wood
+ Location: 52,72
+ Owner: Neutral
+ Actor19: wood
+ Location: 53,72
+ Owner: Neutral
+ Actor20: t16
+ Location: 53,52
+ Owner: Neutral
+ Actor21: tc03
+ Location: 60,61
+ Owner: Neutral
+ Actor22: tc01
+ Location: 48,47
+ Owner: Neutral
+ Actor23: t06
+ Location: 73,59
+ Owner: Neutral
+ Actor24: t01
+ Location: 49,74
+ Owner: Neutral
+ Actor25: t14
+ Location: 60,69
+ Owner: Neutral
+ Actor26: t16
+ Location: 59,72
+ Owner: Neutral
+ Actor27: t14
+ Location: 60,72
+ Owner: Neutral
+ Actor28: t07
+ Location: 62,72
+ Owner: Neutral
+ Actor29: t10
+ Location: 54,74
+ Owner: Neutral
+ Actor30: tc02
+ Location: 46,49
+ Owner: Neutral
+ Actor31: t01
+ Location: 53,57
+ Owner: Neutral
+ Actor32: tc05
+ Location: 41,51
+ Owner: Neutral
+ Actor33: t06
+ Location: 44,53
+ Owner: Neutral
+ Actor34: t01
+ Location: 44,70
+ Owner: Neutral
+ Actor35: t16
+ Location: 52,72
+ Owner: Neutral
+ Actor36: tc02
+ Location: 32,51
+ Owner: Neutral
+ Actor37: tc04
+ Location: 32,55
+ Owner: Neutral
+ Actor38: tc05
+ Location: 32,60
+ Owner: Neutral
+ Actor39: tc02
+ Location: 42,57
+ Owner: Neutral
+ Actor40: tc02
+ Location: 43,68
+ Owner: Neutral
+ Actor41: tc01
+ Location: 42,67
+ Owner: Neutral
+ Actor42: tc04
+ Location: 32,72
+ Owner: Neutral
+ Actor43: tc03
+ Location: 51,77
+ Owner: Neutral
+ Actor44: tc01
+ Location: 39,72
+ Owner: Neutral
+ Actor45: t17
+ Location: 35,76
+ Owner: Neutral
+ Actor46: t15
+ Location: 59,75
+ Owner: Neutral
+ Actor47: tc03
+ Location: 35,65
+ Owner: Neutral
+ Actor48: t01
+ Location: 35,56
+ Owner: Neutral
+ Actor49: t10
+ Location: 47,59
+ Owner: Neutral
+ Actor50: t08
+ Location: 48,64
+ Owner: Neutral
+ Actor51: barl
+ Location: 33,54
+ Owner: Germany
+ Actor52: brl3
+ Location: 57,53
+ Owner: Germany
+ Actor53: v08
+ Location: 41,54
+ Owner: France
+ Health: 52
+ Actor54: v07
+ Location: 54,65
+ Owner: France
+ Health: 44
+ Actor55: v07
+ Location: 38,52
+ Owner: France
+ Health: 44
+ Actor56: v06
+ Location: 46,51
+ Owner: France
+ Health: 99
+ Actor57: v05
+ Location: 36,55
+ Owner: France
+ Health: 50
+ Actor58: v04
+ Location: 35,51
+ Owner: France
+ Health: 35
+ Actor59: v02
+ Location: 36,57
+ Owner: France
+ Health: 56
+ Actor60: brl3
+ Location: 34,52
+ Owner: Germany
+ Actor61: barl
+ Location: 57,54
+ Owner: Germany
+ Actor62: barl
+ Location: 55,54
+ Owner: Germany
+ Actor63: brl3
+ Location: 51,72
+ Owner: Germany
+ Actor64: brl3
+ Location: 51,71
+ Owner: Germany
+ Actor65: brl3
+ Location: 47,71
+ Owner: Germany
+ BridgeBarrel: barl
+ Location: 46,71
+ Owner: Germany
+ Actor67: barl
+ Location: 47,70
+ Owner: Germany
+ Actor68: brl3
+ Location: 43,50
+ Owner: Germany
+ Actor69: brl3
+ Location: 45,52
+ Owner: Germany
+ Actor70: barl
+ Location: 41,51
+ Owner: France
+ Actor71: barl
+ Location: 50,72
+ Owner: Germany
+ Actor72: barl
+ Location: 42,50
+ Owner: Germany
+ Actor75: barl
+ Location: 56,53
+ Owner: Germany
+ Actor76: barl
+ Location: 58,53
+ Owner: Germany
+ Actor77: brl3
+ Location: 59,53
+ Owner: Germany
+ Actor78: brl3
+ Location: 54,53
+ Owner: Germany
+ Actor79: barl
+ Location: 59,56
+ Owner: Germany
+ Actor80: brl3
+ Location: 48,66
+ Owner: Germany
+ Actor81: barl
+ Location: 45,65
+ Owner: Germany
+ Actor82: barl
+ Location: 34,57
+ Owner: Germany
+ Actor83: brl3
+ Location: 35,58
+ Owner: Germany
+ Actor84: barl
+ Location: 46,67
+ Owner: Germany
+ Actor85: barl
+ Location: 48,67
+ Owner: Germany
+ Actor86: brl3
+ Location: 38,65
+ Owner: Germany
+ Actor87: barl
+ Location: 40,52
+ Owner: Germany
+ Actor88: barl
+ Location: 39,64
+ Owner: Germany
+ Actor89: brl3
+ Location: 41,53
+ Owner: Germany
+ Actor90: brl3
+ Location: 46,66
+ Owner: Germany
+ Actor94: barl
+ Location: 35,56
+ Owner: Germany
+ Actor95: brl3
+ Location: 38,64
+ Owner: Germany
+ Actor96: brl3
+ Location: 34,55
+ Owner: Germany
+ Actor97: barl
+ Location: 35,55
+ Owner: Germany
+ Actor98: barl
+ Location: 45,50
+ Owner: Germany
+ Actor99: v04
+ Location: 58,54
+ Owner: France
+ Health: 41
+ Actor100: v02
+ Location: 56,54
+ Owner: France
+ Health: 71
+ Actor101: dome
+ Location: 45,79
+ Owner: USSR
+ Actor102: barl
+ Location: 46,61
+ Owner: Germany
+ Actor103: brl3
+ Location: 43,66
+ Owner: Germany
+ Actor104: barl
+ Location: 43,67
+ Owner: Germany
+ Actor105: brl3
+ Location: 59,57
+ Owner: Germany
+ Actor106: barl
+ Location: 57,58
+ Owner: Germany
+ Actor107: barl
+ Location: 58,58
+ Owner: Germany
+ Actor108: brl3
+ Location: 59,58
+ Owner: Germany
+ Actor109: brl3
+ Location: 56,58
+ Owner: Germany
+ Actor110: barl
+ Location: 56,59
+ Owner: Germany
+ Actor111: barl
+ Location: 56,60
+ Owner: Germany
+ Actor112: barl
+ Location: 41,68
+ Owner: Germany
+ Actor113: barl
+ Location: 42,67
+ Owner: Germany
+ Actor114: brl3
+ Location: 49,55
+ Owner: Germany
+ Actor115: barl
+ Location: 48,55
+ Owner: Germany
+ Actor116: barl
+ Location: 47,56
+ Owner: Germany
+ Actor117: brl3
+ Location: 46,56
+ Owner: Germany
+ Actor118: pbox
+ Location: 46,55
+ Owner: France
+ Actor119: pbox
+ Location: 48,54
+ Owner: France
+ Actor120: barl
+ Location: 34,51
+ Owner: Germany
+ Actor121: v05
+ Location: 48,62
+ Owner: France
+ Health: 41
+ Actor123: jeep
+ Location: 46,52
+ Owner: France
+ Health: 66
+ Facing: 96
+ Actor125: jeep
+ Location: 55,57
+ Owner: France
+ Facing: 160
+ Actor126: jeep
+ Location: 39,65
+ Owner: France
+ Health: 63
+ Facing: 64
+ Actor127: c9
+ Location: 50,64
+ Owner: France
+ Facing: 192
+ SubCell: 1
+ Actor128: c8
+ Location: 47,61
+ Owner: France
+ SubCell: 3
+ Actor129: c8
+ Location: 41,50
+ Owner: France
+ Facing: 224
+ SubCell: 3
+ Actor130: c6
+ Location: 46,61
+ Owner: France
+ Facing: 128
+ SubCell: 2
+ Actor131: c5
+ Location: 46,61
+ Owner: France
+ SubCell: 1
+ Actor132: c4
+ Location: 44,67
+ Owner: France
+ Facing: 96
+ SubCell: 1
+ Actor133: c2
+ Location: 40,54
+ Owner: France
+ Facing: 160
+ SubCell: 2
+ Actor134: c2
+ Location: 45,61
+ Owner: France
+ Facing: 64
+ SubCell: 4
+ Actor135: e1
+ Location: 54,60
+ Owner: France
+ Facing: 160
+ SubCell: 4
+ Actor136: e1
+ Location: 49,60
+ Owner: France
+ Facing: 128
+ SubCell: 2
+ Actor137: c5
+ Location: 45,51
+ Owner: France
+ Facing: 224
+ SubCell: 0
+ Actor138: e1
+ Location: 34,58
+ Owner: France
+ Facing: 96
+ SubCell: 0
+ Actor139: e1
+ Location: 53,54
+ Owner: France
+ Facing: 128
+ SubCell: 2
+ Actor140: e1
+ Location: 58,56
+ Owner: France
+ Facing: 128
+ SubCell: 1
+ Actor141: e1
+ Location: 58,52
+ Owner: France
+ Facing: 160
+ SubCell: 0
+ Actor142: e1
+ Location: 54,64
+ Owner: France
+ Facing: 160
+ SubCell: 3
+ Actor143: c7
+ Location: 56,54
+ Owner: France
+ SubCell: 3
+ Actor144: e1
+ Location: 40,51
+ Owner: France
+ Facing: 160
+ SubCell: 0
+ Actor145: e1
+ Location: 35,53
+ Owner: France
+ Facing: 96
+ SubCell: 1
+ Actor146: e1
+ Location: 35,54
+ Owner: France
+ SubCell: 4
+ Actor147: e1
+ Location: 43,64
+ Owner: France
+ Facing: 96
+ SubCell: 0
+ Actor148: e1
+ Location: 56,63
+ Owner: France
+ Facing: 192
+ SubCell: 2
+ Actor149: e1
+ Location: 40,67
+ Owner: France
+ Facing: 32
+ SubCell: 4
+ Church: v01
+ Location: 40,63
+ Owner: France
+ Health: 54
+ StartJeep: jeep
+ Location: 44,76
+ Owner: France
+ Health: 52
+ Facing: 32
+ LonelyGuard: e1
+ Location: 42,81
+ Owner: USSR
+ Health: 14
+ SubCell: 2
+ Airfield1: afld
+ Location: 39,77
+ Owner: USSR
+ Airfield2: afld
+ Location: 37,79
+ Owner: USSR
+ Airfield3: afld
+ Location: 35,81
+ Owner: USSR
+ Powerplant1: powr
+ Location: 43,82
+ Owner: USSR
+ Powerplant2: powr
+ Location: 45,82
+ Owner: USSR
+ ParadropEntryPoint1: waypoint
+ Location: 67,65
+ Owner: Neutral
+ ParadropPoint1: waypoint
+ Location: 47,67
+ Owner: Neutral
+ StartJeepMovePoint: waypoint
+ Location: 47,66
+ Owner: Neutral
+ BridgeWaypoint: waypoint
+ Location: 47,70
+ Owner: Neutral
+ Flare: flare
+ Location: 47,65
+ Owner: France
+ YakEntry: waypoint
+ Location: 51,84
+ Owner: Neutral
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
diff --git a/mods/ura/maps/soviet-01/rules.yaml b/mods/ura/maps/soviet-01/rules.yaml
new file mode 100644
index 0000000..4c06346
--- /dev/null
+++ b/mods/ura/maps/soviet-01/rules.yaml
@@ -0,0 +1,47 @@
+World:
+ LuaScript:
+ Scripts: soviet01.lua
+ MissionData:
+ Briefing: A pitiful excuse for resistance has blockaded itself in this village.\n\nStalin has decided to make an example of them. Kill them all and destroy their homes. You will have Yak aircraft to use in teaching these rebels a lesson.
+ BackgroundVideo: prolog.vqa
+ BriefingVideo: soviet1.vqa
+ StartVideo: flare.vqa
+ WinVideo: snstrafe.vqa
+ LossVideo: sfrozen.vqa
+
+V01:
+ SpawnActorOnDeath:
+ Actor: healcrate
+
+^CivBuilding:
+ MustBeDestroyed:
+
+JEEP:
+ Explodes:
+ ProximityExternalCondition@JAMMER:
+ Range: 10c0
+ ValidStances: Enemy, Neutral
+ Condition: jammed
+
+YAK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MIG:
+ Buildable:
+ Prerequisites: ~disabled
+
+AFLD:
+ AirstrikePower@spyplane:
+ Prerequisites: ~disabled
+ ParatroopersPower@paratroopers:
+ ChargeInterval: 1500
+ DropItems: E1,E1,E1,E2,E2
+ -RallyPoint:
+ -Sellable:
+
+DOME:
+ -Sellable:
+
+POWR:
+ -Sellable:
diff --git a/mods/ura/maps/soviet-01/soviet01.lua b/mods/ura/maps/soviet-01/soviet01.lua
new file mode 100644
index 0000000..cf2bbae
--- /dev/null
+++ b/mods/ura/maps/soviet-01/soviet01.lua
@@ -0,0 +1,80 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+Yaks = { "yak", "yak", "yak" }
+Airfields = { Airfield1, Airfield2, Airfield3 }
+
+InsertYaks = function()
+ local i = 1
+ Utils.Do(Yaks, function(yakType)
+ local start = YakEntry.CenterPosition + WVec.New(0, (i - 1) * 1536, Actor.CruiseAltitude(yakType))
+ local dest = StartJeep.Location + CVec.New(0, 2 * i)
+ local yak = Actor.Create(yakType, true, { CenterPosition = start, Owner = player, Facing = (Map.CenterOfCell(dest) - start).Facing })
+ yak.Move(dest)
+ yak.ReturnToBase(Airfields[i])
+ i = i + 1
+ end)
+end
+
+JeepDemolishingBridge = function()
+ StartJeep.Move(StartJeepMovePoint.Location)
+
+ Trigger.OnIdle(StartJeep, function()
+ Trigger.ClearAll(StartJeep)
+ if not BridgeBarrel.IsDead then
+ BridgeBarrel.Kill()
+ end
+
+ local bridge = Map.ActorsInBox(BridgeWaypoint.CenterPosition, Airfield1.CenterPosition,
+ function(self) return self.Type == "bridge1" end)[1]
+
+ if not bridge.IsDead then
+ bridge.Kill()
+ end
+ end)
+end
+
+WorldLoaded = function()
+ player = Player.GetPlayer("USSR")
+ france = Player.GetPlayer("France")
+ germany = Player.GetPlayer("Germany")
+
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ VillageRaidObjective = player.AddPrimaryObjective("Raze the village.")
+
+ Trigger.OnAllRemovedFromWorld(Airfields, function()
+ player.MarkFailedObjective(VillageRaidObjective)
+ end)
+
+ JeepDemolishingBridge()
+
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "MissionAccomplished")
+ end)
+
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "MissionFailed")
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(2), InsertYaks)
+end
+
+Tick = function()
+ if france.HasNoRequiredUnits() and germany.HasNoRequiredUnits() then
+ player.MarkCompletedObjective(VillageRaidObjective)
+ end
+end
diff --git a/mods/ura/maps/soviet-02a/map.bin b/mods/ura/maps/soviet-02a/map.bin
new file mode 100644
index 0000000..b22bdb3
Binary files /dev/null and b/mods/ura/maps/soviet-02a/map.bin differ
diff --git a/mods/ura/maps/soviet-02a/map.png b/mods/ura/maps/soviet-02a/map.png
new file mode 100644
index 0000000..dc77417
Binary files /dev/null and b/mods/ura/maps/soviet-02a/map.png differ
diff --git a/mods/ura/maps/soviet-02a/map.yaml b/mods/ura/maps/soviet-02a/map.yaml
new file mode 100644
index 0000000..4b388a3
--- /dev/null
+++ b/mods/ura/maps/soviet-02a/map.yaml
@@ -0,0 +1,561 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 02a: The thin red line
+
+Author: Westwood Studios
+
+Tileset: TEMPERAT
+
+MapSize: 128,128
+
+Bounds: 36,38,50,40
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@USSR:
+ Name: USSR
+ Playable: True
+ AllowBots: False
+ Required: True
+ LockFaction: True
+ Faction: soviet
+ LockColor: True
+ Color: FE1100
+ LockSpawn: True
+ LockTeam: True
+ Enemies: Greece
+ PlayerReference@Greece:
+ Name: Greece
+ Faction: allies
+ Color: E2E6F5
+ Enemies: USSR
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+
+Actors:
+ Actor0: t02
+ Location: 37,45
+ Owner: Neutral
+ Actor1: t06
+ Location: 50,63
+ Owner: Neutral
+ Actor2: t06
+ Location: 59,71
+ Owner: Neutral
+ Actor3: tc01
+ Location: 52,76
+ Owner: Neutral
+ Actor4: tc01
+ Location: 37,66
+ Owner: Neutral
+ Actor5: tc03
+ Location: 37,65
+ Owner: Neutral
+ Actor6: t16
+ Location: 37,63
+ Owner: Neutral
+ Actor7: t12
+ Location: 37,70
+ Owner: Neutral
+ Actor8: t08
+ Location: 36,70
+ Owner: Neutral
+ Actor9: t07
+ Location: 36,68
+ Owner: Neutral
+ Actor10: tc04
+ Location: 40,74
+ Owner: Neutral
+ Actor11: tc05
+ Location: 42,69
+ Owner: Neutral
+ Actor12: t10
+ Location: 50,50
+ Owner: Neutral
+ Actor13: t17
+ Location: 68,47
+ Owner: Neutral
+ Actor14: t13
+ Location: 39,69
+ Owner: Neutral
+ Actor15: t01
+ Location: 69,60
+ Owner: Neutral
+ Actor16: t01
+ Location: 77,39
+ Owner: Neutral
+ Actor17: tc01
+ Location: 72,42
+ Owner: Neutral
+ Actor18: t15
+ Location: 76,64
+ Owner: Neutral
+ Actor19: t01
+ Location: 56,44
+ Owner: Neutral
+ Actor20: t03
+ Location: 61,41
+ Owner: Neutral
+ Actor21: t01
+ Location: 66,73
+ Owner: Neutral
+ Actor22: t02
+ Location: 66,71
+ Owner: Neutral
+ Actor23: t01
+ Location: 67,57
+ Owner: Neutral
+ Actor24: t05
+ Location: 69,51
+ Owner: Neutral
+ Actor25: tc03
+ Location: 47,48
+ Owner: Neutral
+ Actor26: t05
+ Location: 70,66
+ Owner: Neutral
+ Actor27: t01
+ Location: 59,51
+ Owner: Neutral
+ Actor28: t06
+ Location: 62,57
+ Owner: Neutral
+ Actor29: tc05
+ Location: 73,37
+ Owner: Neutral
+ Actor30: tc04
+ Location: 70,37
+ Owner: Neutral
+ Actor31: tc04
+ Location: 83,37
+ Owner: Neutral
+ Actor32: tc03
+ Location: 84,40
+ Owner: Neutral
+ Actor33: t17
+ Location: 82,39
+ Owner: Neutral
+ Actor34: fact
+ Location: 72,52
+ Owner: USSR
+ Actor35: weap
+ Location: 41,50
+ Owner: Greece
+ Actor37: fact
+ Location: 39,54
+ Owner: Greece
+ Actor39: powr
+ Location: 36,55
+ Owner: Greece
+ Actor40: powr
+ Location: 36,52
+ Owner: Greece
+ Actor41: tent
+ Location: 41,58
+ Owner: Greece
+ Actor42: gun
+ Location: 39,61
+ Owner: Greece
+ Facing: 96
+ Actor44: powr
+ Location: 36,49
+ Owner: Greece
+ Actor45: gun
+ Location: 50,55
+ Owner: Greece
+ Facing: 96
+ Actor46: gun
+ Location: 50,59
+ Owner: Greece
+ Facing: 32
+ Actor47: brl3
+ Location: 38,48
+ Owner: Greece
+ Actor48: v19
+ Location: 39,48
+ Owner: Greece
+ Actor49: v19
+ Location: 40,46
+ Owner: Greece
+ Actor50: brl3
+ Location: 40,47
+ Owner: Greece
+ Actor51: barl
+ Location: 39,49
+ Owner: Greece
+ Actor52: brl3
+ Location: 40,48
+ Owner: Greece
+ Actor53: barl
+ Location: 38,49
+ Owner: Greece
+ Actor54: brl3
+ Location: 39,50
+ Owner: Greece
+ Actor55: barl
+ Location: 38,51
+ Owner: Greece
+ Actor56: barl
+ Location: 38,52
+ Owner: Greece
+ Actor57: brl3
+ Location: 39,53
+ Owner: Greece
+ Actor58: barl
+ Location: 38,54
+ Owner: Greece
+ Actor59: brl3
+ Location: 38,53
+ Owner: Greece
+ Actor60: brl3
+ Location: 41,45
+ Owner: Greece
+ Actor61: barl
+ Location: 41,46
+ Owner: Greece
+ Actor62: brl3
+ Location: 58,54
+ Owner: Greece
+ Actor63: v19
+ Location: 59,53
+ Owner: Greece
+ Actor64: barl
+ Location: 58,52
+ Owner: Greece
+ Actor66: barl
+ Location: 60,53
+ Owner: Greece
+ Actor67: brl3
+ Location: 58,53
+ Owner: Greece
+ Actor68: barl
+ Location: 59,51
+ Owner: Greece
+ Actor70: barl
+ Location: 60,59
+ Owner: Greece
+ Actor71: v19
+ Location: 61,59
+ Owner: Greece
+ Actor73: barl
+ Location: 60,61
+ Owner: Greece
+ Actor74: powr
+ Location: 79,52
+ Owner: USSR
+ Actor75: powr
+ Location: 82,52
+ Owner: USSR
+ Actor76: powr
+ Location: 83,56
+ Owner: USSR
+ Actor77: afld
+ Location: 79,56
+ Owner: USSR
+ Actor78: afld
+ Location: 75,56
+ Owner: USSR
+ Actor80: jeep
+ Location: 57,43
+ Owner: Greece
+ Facing: 96
+ Actor81: jeep
+ Location: 46,70
+ Owner: Greece
+ Facing: 96
+ Actor82: jeep
+ Location: 42,48
+ Owner: Greece
+ Facing: 32
+ Actor83: e1
+ Location: 70,52
+ Owner: USSR
+ Facing: 160
+ SubCell: 4
+ Actor84: e1
+ Location: 70,55
+ Owner: USSR
+ Facing: 192
+ SubCell: 3
+ Actor86: e1
+ Location: 44,67
+ Owner: Greece
+ Facing: 64
+ SubCell: 0
+ Actor87: e1
+ Location: 68,53
+ Owner: USSR
+ Facing: 192
+ SubCell: 2
+ Actor88: e1
+ Location: 69,54
+ Owner: USSR
+ Facing: 160
+ SubCell: 0
+ Actor89: e1
+ Location: 70,56
+ Owner: USSR
+ Facing: 160
+ SubCell: 4
+ Actor90: e1
+ Location: 69,57
+ Owner: USSR
+ Facing: 192
+ SubCell: 2
+ Actor91: e1
+ Location: 69,55
+ Owner: USSR
+ Facing: 160
+ SubCell: 3
+ Actor92: dog
+ Location: 77,58
+ Owner: USSR
+ Facing: 192
+ SubCell: 3
+ Actor93: dog
+ Location: 82,50
+ Owner: USSR
+ Facing: 192
+ SubCell: 0
+ Actor96: dog
+ Location: 73,50
+ Owner: USSR
+ Facing: 32
+ SubCell: 3
+ Actor97: dog
+ Location: 73,58
+ Owner: USSR
+ Facing: 160
+ SubCell: 1
+ Actor98: e3
+ Location: 47,44
+ Owner: Greece
+ Facing: 96
+ SubCell: 0
+ Actor99: e3
+ Location: 49,57
+ Owner: Greece
+ Facing: 64
+ SubCell: 1
+ Actor100: e3
+ Location: 44,49
+ Owner: Greece
+ Facing: 96
+ SubCell: 0
+ Actor101: e3
+ Location: 39,51
+ Owner: Greece
+ Facing: 96
+ SubCell: 4
+ Actor102: e3
+ Location: 43,60
+ Owner: Greece
+ Facing: 64
+ SubCell: 0
+ Actor103: e3
+ Location: 42,56
+ Owner: Greece
+ Facing: 64
+ SubCell: 3
+ Actor104: e1
+ Location: 48,43
+ Owner: Greece
+ Facing: 96
+ SubCell: 1
+ Actor113: e1
+ Location: 71,50
+ Owner: USSR
+ SubCell: 2
+ Actor114: e1
+ Location: 74,50
+ Owner: USSR
+ SubCell: 3
+ waypoint8: waypoint
+ Location: 62,38
+ Owner: Neutral
+ waypoint9: waypoint
+ Location: 52,72
+ Owner: Neutral
+ waypoint10: waypoint
+ Location: 83,77
+ Owner: Neutral
+ waypoint11: waypoint
+ Location: 64,62
+ Owner: Neutral
+ waypoint23: waypoint
+ Location: 66,53
+ Owner: Neutral
+ waypoint25: waypoint
+ Location: 75,59
+ Owner: Neutral
+ waypoint26: waypoint
+ Location: 79,67
+ Owner: Neutral
+ waypoint27: waypoint
+ Location: 85,63
+ Owner: Neutral
+ waypoint28: waypoint
+ Location: 85,53
+ Owner: Neutral
+ waypoint42: waypoint
+ Location: 42,53
+ Owner: Neutral
+ waypoint49: waypoint
+ Location: 42,59
+ Owner: Neutral
+ waypoint52: waypoint
+ Location: 60,60
+ Owner: Neutral
+ waypoint53: waypoint
+ Location: 61,59
+ Owner: Neutral
+ waypoint94: waypoint
+ Location: 77,53
+ Owner: Neutral
+ waypoint95: waypoint
+ Location: 59,44
+ Owner: Neutral
+ waypoint1: waypoint
+ Location: 47,57
+ Owner: Neutral
+ waypoint4: waypoint
+ Location: 57,59
+ Owner: Neutral
+ waypoint5: waypoint
+ Location: 63,52
+ Owner: Neutral
+ waypoint6: waypoint
+ Location: 68,39
+ Owner: Neutral
+ Actor121: fenc
+ Location: 68,59
+ Owner: USSR
+ Actor122: fenc
+ Location: 68,58
+ Owner: USSR
+ Actor123: fenc
+ Location: 68,57
+ Owner: USSR
+ Actor124: fenc
+ Location: 68,56
+ Owner: USSR
+ Actor125: fenc
+ Location: 68,52
+ Owner: USSR
+ Actor126: fenc
+ Location: 68,51
+ Owner: USSR
+ Actor127: fenc
+ Location: 70,51
+ Owner: USSR
+ Actor128: fenc
+ Location: 75,51
+ Owner: USSR
+ Actor129: fenc
+ Location: 76,51
+ Owner: USSR
+ Actor130: fenc
+ Location: 77,51
+ Owner: USSR
+ Actor131: fenc
+ Location: 78,51
+ Owner: USSR
+ Actor132: fenc
+ Location: 79,51
+ Owner: USSR
+ Actor133: fenc
+ Location: 69,51
+ Owner: USSR
+ CameraWaypoint: waypoint
+ Location: 68,54
+ Owner: Neutral
+ ParadropLZ: waypoint
+ Location: 45,43
+ Owner: Neutral
+ AttackWaypoint1: waypoint
+ Location: 73,49
+ Owner: Neutral
+ AttackWaypoint2: waypoint
+ Location: 73,76
+ Owner: Neutral
+ CommandCenter: fcom
+ Location: 76,52
+ Owner: USSR
+ AlliedDome: dome
+ Location: 45,50
+ Owner: Greece
+ AlliedProc: proc
+ Location: 43,53
+ Owner: Greece
+ Barrel: brl3
+ Location: 60,60
+ Owner: Greece
+ BridgeBarrel1: brl3
+ Location: 61,58
+ Owner: Greece
+ BridgeBarrel2: brl3
+ Location: 59,54
+ Owner: Greece
+ Follower: e1
+ Location: 69,53
+ Owner: USSR
+ Facing: 160
+ SubCell: 2
+ Fleeing1: e1
+ Location: 62,52
+ Owner: Greece
+ Facing: 64
+ SubCell: 4
+ Fleeing2: e1
+ Location: 63,53
+ Owner: Greece
+ Facing: 64
+ SubCell: 4
+ Attacker1: e1
+ Location: 59,44
+ Owner: Greece
+ Facing: 96
+ SubCell: 4
+ Attacker2: e1
+ Location: 60,44
+ Owner: Greece
+ Facing: 64
+ SubCell: 1
+ Attacker3: e1
+ Location: 59,43
+ Owner: Greece
+ Facing: 64
+ SubCell: 4
+ Attacker4: e1
+ Location: 59,44
+ Owner: Greece
+ Facing: 64
+ SubCell: 1
+ Hunter1: e3
+ Location: 74,67
+ Owner: Greece
+ SubCell: 3
+ Hunter2: e1
+ Location: 73,68
+ Owner: Greece
+ SubCell: 3
+ Hunter3: e1
+ Location: 72,67
+ Owner: Greece
+ SubCell: 4
+ Hunter4: e1
+ Location: 54,74
+ Owner: Greece
+ SubCell: 2
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
diff --git a/mods/ura/maps/soviet-02a/rules.yaml b/mods/ura/maps/soviet-02a/rules.yaml
new file mode 100644
index 0000000..f172708
--- /dev/null
+++ b/mods/ura/maps/soviet-02a/rules.yaml
@@ -0,0 +1,102 @@
+Player:
+ PlayerResources:
+ DefaultCash: 5000
+
+World:
+ LuaScript:
+ Scripts: soviet02a.lua
+ MissionData:
+ Briefing: Tomorrow, the attack on Germany begins, but today, we must protect our facility from Allied attacks.\n\nKeep the Command Center intact at all costs, and destroy any Allied fortification you might find.
+ BriefingVideo: soviet2.vqa
+ StartVideo: spotter.vqa
+ WinVideo: sovtstar.vqa
+ LossVideo: sovcemet.vqa
+
+SPEN:
+ Buildable:
+ Prerequisites: ~disabled
+
+DOME:
+ Buildable:
+ Prerequisites: ~disabled
+
+WEAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+FIX:
+ Buildable:
+ Prerequisites: ~disabled
+
+APWR:
+ Buildable:
+ Prerequisites: ~disabled
+
+STEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+BRIK:
+ Buildable:
+ Prerequisites: ~disabled
+
+TSLA:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+IRON:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+E3:
+ Buildable:
+ Prerequisites: ~disabled
+
+E4:
+ Buildable:
+ Prerequisites: ~disabled
+
+E6:
+ Buildable:
+ Prerequisites: ~disabled
+
+SHOK:
+ Buildable:
+ Prerequisites: ~disabled
+
+SNIPER:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+MIG:
+ Buildable:
+ Prerequisites: ~disabled
+
+AFLD:
+ Buildable:
+ Prerequisites: ~disabled
+ AirstrikePower@spyplane:
+ Prerequisites: ~disabled
+ ParatroopersPower@paratroopers:
+ Prerequisites: ~disabled
+
+HARV:
+ Harvester:
+ SearchFromProcRadius: 50
+ SearchFromOrderRadius: 50
+
+powerproxy.paratroopers:
+ ParatroopersPower:
+ DropItems: E2,E2,E2,E2,E2
diff --git a/mods/ura/maps/soviet-02a/soviet02a.lua b/mods/ura/maps/soviet-02a/soviet02a.lua
new file mode 100644
index 0000000..7c14b3b
--- /dev/null
+++ b/mods/ura/maps/soviet-02a/soviet02a.lua
@@ -0,0 +1,145 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+CameraTriggerArea = { CPos.New(42, 45), CPos.New(43, 45), CPos.New(44, 45), CPos.New(45, 45), CPos.New(46, 45), CPos.New(47, 45), CPos.New(48, 45), CPos.New(48, 56), CPos.New(48, 57), CPos.New(48, 58), CPos.New(48, 59), CPos.New(40, 63), CPos.New(41, 63), CPos.New(42, 63), CPos.New(43, 63), CPos.New(44, 63), CPos.New(45, 63), CPos.New(46, 63), CPos.New(47, 63) }
+PassingBridgeLocation = { CPos.New(59, 56), CPos.New(60, 56) }
+
+CmdAtk = { Attacker1, Attacker2, Attacker3, Attacker4 }
+FleeingUnits = { Fleeing1, Fleeing2 }
+HuntingUnits = { Hunter1, Hunter2, Hunter3, Hunter4 }
+
+WorldLoaded = function()
+ player = Player.GetPlayer("USSR")
+ greece = Player.GetPlayer("Greece")
+
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ CommandCenterIntact = player.AddPrimaryObjective("Protect the Command Center.")
+ DestroyAllAllied = player.AddPrimaryObjective("Destroy all Allied units and structures.")
+
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "MissionAccomplished")
+ end)
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "MissionFailed")
+ end)
+
+ Camera.Position = CameraWaypoint.CenterPosition
+
+ Trigger.OnKilled(CommandCenter, function()
+ player.MarkFailedObjective(CommandCenterIntact)
+ end)
+
+ Trigger.AfterDelay(0, function()
+ local buildings = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == greece and self.HasProperty("StartBuildingRepairs") end)
+ Utils.Do(buildings, function(actor)
+ Trigger.OnDamaged(actor, function(building, attacker)
+ if building.Owner == greece and building.Health < building.MaxHealth * 0.8 then
+ building.StartBuildingRepairs()
+ if attacker.Type ~= "yak" and not AlreadyHunting then
+ AlreadyHunting = true
+ Utils.Do(greece.GetGroundAttackers(), function(unit)
+ Trigger.OnIdle(unit, unit.Hunt)
+ end)
+ end
+ end
+ end)
+ end)
+
+ -- Find the bridge actors
+ bridgepart1 = Map.ActorsInBox(waypoint23.CenterPosition, waypoint49.CenterPosition, function(self) return self.Type == "br1" end)[1]
+ bridgepart2 = Map.ActorsInBox(waypoint23.CenterPosition, waypoint49.CenterPosition, function(self) return self.Type == "br2" end)[1]
+ end)
+
+ -- Discover the area around the bridge exposing the two german soldiers
+ -- When the two infantry near the bridge are discovered move them across the bridge to waypoint4
+ -- in the meanwhile one USSR soldier hunts them down
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ Actor.Create("camera", true, { Owner = player, Location = waypoint23.Location })
+
+ Utils.Do(FleeingUnits, function(unit)
+ unit.Move(waypoint4.Location)
+ end)
+ Follower.AttackMove(waypoint4.Location)
+ end)
+
+ -- To make it look more smooth we will blow up the bridge when the barrel closest to it blows up
+ Trigger.OnAnyKilled({ BridgeBarrel1, BridgeBarrel2 }, function()
+ -- Destroy the bridge
+ if not bridgepart1.IsDead then
+ bridgepart1.Kill()
+ end
+ if not bridgepart2.IsDead then
+ bridgepart2.Kill()
+ end
+ end)
+
+ -- If player passes over the bridge, blow up the barrel and destroy the bridge
+ Trigger.OnEnteredFootprint(PassingBridgeLocation, function(unit, id)
+ if unit.Owner == player then
+ Trigger.RemoveFootprintTrigger(id)
+
+ -- Also don't if the bridge is already dead
+ if bridgepart1.IsDead and bridgepart2.IsDead then
+ return
+ end
+
+ -- Don't "shoot" at the barrels if there is no-one to shoot
+ if not FleeingUnits[1].IsDead then
+ FleeingUnits[1].Attack(Barrel, true, true)
+ elseif not FleeingUnits[2].IsDead then
+ FleeingUnits[2].Attack(Barrel, true, true)
+ end
+ end
+ end)
+
+ -- Four infantry from the small island move towards the USSR command center and attack it after 24 Seconds
+ Trigger.AfterDelay(DateTime.Seconds(24), function()
+ Utils.Do(CmdAtk, function(unit)
+ unit.AttackMove(AttackWaypoint1.Location)
+ Trigger.OnIdle(unit, unit.Hunt)
+ end)
+ end)
+
+ -- Start hunting
+ Hunter4.AttackMove(AttackWaypoint2.Location) -- Move the unit in the correct direction first
+ Utils.Do(HuntingUnits, function(unit)
+ Trigger.OnIdle(unit, unit.Hunt)
+ end)
+
+ -- When destroying the allied radar dome or the refinery drop 2 badgers with 5 grenadiers each
+ Trigger.OnAnyKilled({ AlliedDome, AlliedProc }, function()
+ local powerproxy = Actor.Create("powerproxy.paratroopers", true, { Owner = player })
+ powerproxy.SendParatroopers(ParadropLZ.CenterPosition, false, Facing.South)
+ powerproxy.SendParatroopers(ParadropLZ.CenterPosition, false, Facing.SouthEast)
+ powerproxy.Destroy()
+ end)
+end
+
+Tick = function()
+ if greece.HasNoRequiredUnits() then
+ player.MarkCompletedObjective(CommandCenterIntact)
+ player.MarkCompletedObjective(DestroyAllAllied)
+ end
+
+ if player.HasNoRequiredUnits() then
+ player.MarkFailedObjective(DestroyAllAllied)
+ end
+
+ if greece.Resources > greece.ResourceCapacity / 2 then
+ greece.Resources = greece.ResourceCapacity / 2
+ end
+end
diff --git a/mods/ura/maps/soviet-02b/map.bin b/mods/ura/maps/soviet-02b/map.bin
new file mode 100644
index 0000000..15a6dae
Binary files /dev/null and b/mods/ura/maps/soviet-02b/map.bin differ
diff --git a/mods/ura/maps/soviet-02b/map.png b/mods/ura/maps/soviet-02b/map.png
new file mode 100644
index 0000000..e92632f
Binary files /dev/null and b/mods/ura/maps/soviet-02b/map.png differ
diff --git a/mods/ura/maps/soviet-02b/map.yaml b/mods/ura/maps/soviet-02b/map.yaml
new file mode 100644
index 0000000..94e7168
--- /dev/null
+++ b/mods/ura/maps/soviet-02b/map.yaml
@@ -0,0 +1,486 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 02b: The thin red line
+
+Author: Westwood Studios
+
+Tileset: TEMPERAT
+
+MapSize: 128,128
+
+Bounds: 36,52,54,35
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Enemies: USSR
+ PlayerReference@Greece:
+ Name: Greece
+ Faction: allies
+ Color: E2E6F5
+ Enemies: USSR
+ PlayerReference@USSR:
+ Name: USSR
+ AllowBots: False
+ Playable: True
+ Required: True
+ LockFaction: True
+ Faction: soviet
+ LockColor: True
+ Color: FE1100
+ LockSpawn: True
+ LockTeam: True
+ Enemies: Greece, Creeps
+
+Actors:
+ Actor0: sbag
+ Location: 53,52
+ Owner: Greece
+ Actor1: sbag
+ Location: 54,52
+ Owner: Greece
+ Actor2: sbag
+ Location: 53,53
+ Owner: Neutral
+ Actor3: sbag
+ Location: 54,53
+ Owner: Greece
+ Actor4: sbag
+ Location: 53,56
+ Owner: Greece
+ Actor5: sbag
+ Location: 54,56
+ Owner: Greece
+ Actor6: sbag
+ Location: 53,57
+ Owner: Greece
+ Actor7: sbag
+ Location: 54,57
+ Owner: Greece
+ Actor8: sbag
+ Location: 81,68
+ Owner: Greece
+ Actor9: sbag
+ Location: 83,68
+ Owner: Greece
+ Actor10: sbag
+ Location: 87,68
+ Owner: Greece
+ Actor11: sbag
+ Location: 89,68
+ Owner: Greece
+ Actor12: sbag
+ Location: 81,69
+ Owner: Greece
+ Actor13: sbag
+ Location: 82,69
+ Owner: Greece
+ Actor14: sbag
+ Location: 83,69
+ Owner: Greece
+ Actor15: sbag
+ Location: 87,69
+ Owner: Greece
+ Actor16: sbag
+ Location: 88,69
+ Owner: Greece
+ Actor17: sbag
+ Location: 89,69
+ Owner: Greece
+ Actor18: v14
+ Location: 87,84
+ Owner: Neutral
+ Actor19: v15
+ Location: 88,84
+ Owner: Neutral
+ Actor20: v16
+ Location: 86,85
+ Owner: Neutral
+ Actor21: v17
+ Location: 87,85
+ Owner: Neutral
+ Actor22: v18
+ Location: 88,85
+ Owner: Neutral
+ Actor23: tc05
+ Location: 75,63
+ Owner: Neutral
+ Actor24: tc02
+ Location: 82,58
+ Owner: Neutral
+ Actor25: tc01
+ Location: 85,57
+ Owner: Neutral
+ Actor26: t07
+ Location: 83,60
+ Owner: Neutral
+ Actor27: tc04
+ Location: 36,55
+ Owner: Neutral
+ Actor28: tc05
+ Location: 41,52
+ Owner: Neutral
+ Actor29: t01
+ Location: 73,62
+ Owner: Neutral
+ Actor30: tc01
+ Location: 64,63
+ Owner: Neutral
+ Actor31: t06
+ Location: 69,62
+ Owner: Neutral
+ Actor32: t07
+ Location: 67,63
+ Owner: Neutral
+ Actor33: tc02
+ Location: 73,57
+ Owner: Neutral
+ Actor34: t07
+ Location: 74,55
+ Owner: Neutral
+ Actor35: tc05
+ Location: 61,60
+ Owner: Neutral
+ Actor36: tc01
+ Location: 69,72
+ Owner: Neutral
+ Actor37: tc05
+ Location: 36,81
+ Owner: Neutral
+ Actor38: tc02
+ Location: 43,85
+ Owner: Neutral
+ Actor39: tc01
+ Location: 47,85
+ Owner: Neutral
+ Actor40: tc01
+ Location: 39,84
+ Owner: Neutral
+ Actor41: tc04
+ Location: 51,65
+ Owner: Neutral
+ Actor42: tc05
+ Location: 47,66
+ Owner: Neutral
+ Actor43: tc02
+ Location: 88,65
+ Owner: Neutral
+ Actor44: tc04
+ Location: 79,84
+ Owner: Neutral
+ Actor45: tc04
+ Location: 66,72
+ Owner: Neutral
+ Actor46: weap
+ Location: 84,59
+ Owner: Greece
+ Actor47: dome
+ Location: 72,55
+ Owner: Greece
+ Actor50: fact
+ Location: 75,55
+ Owner: Greece
+ Actor51: proc
+ Location: 80,59
+ Owner: Greece
+ Actor52: powr
+ Location: 83,55
+ Owner: Greece
+ Actor53: powr
+ Location: 85,55
+ Owner: Greece
+ Actor54: brl3
+ Location: 69,64
+ Owner: Creeps
+ Actor55: brl3
+ Location: 68,65
+ Owner: Creeps
+ Actor57: barl
+ Location: 73,64
+ Owner: Creeps
+ Actor58: barl
+ Location: 72,63
+ Owner: Creeps
+ Actor59: barl
+ Location: 70,63
+ Owner: Creeps
+ Actor61: brl3
+ Location: 70,56
+ Owner: Creeps
+ Actor62: brl3
+ Location: 71,56
+ Owner: Creeps
+ Actor63: brl3
+ Location: 70,55
+ Owner: Creeps
+ Actor64: barl
+ Location: 69,54
+ Owner: Creeps
+ Actor65: brl3
+ Location: 68,54
+ Owner: Creeps
+ Actor66: barl
+ Location: 67,53
+ Owner: Creeps
+ Actor68: v03
+ Location: 81,85
+ Owner: Creeps
+ Actor69: v06
+ Location: 87,83
+ Owner: Creeps
+ Actor70: fact
+ Location: 41,76
+ Owner: USSR
+ Actor71: powr
+ Location: 46,80
+ Owner: USSR
+ Actor72: powr
+ Location: 49,80
+ Owner: USSR
+ Actor73: powr
+ Location: 43,80
+ Owner: USSR
+ Actor75: afld
+ Location: 45,77
+ Owner: USSR
+ Actor76: afld
+ Location: 49,77
+ Owner: USSR
+ Actor78: brl3
+ Location: 82,70
+ Owner: Greece
+ Actor79: brl3
+ Location: 83,70
+ Owner: Greece
+ Actor80: brl3
+ Location: 88,70
+ Owner: Greece
+ Actor81: barl
+ Location: 87,70
+ Owner: Greece
+ Actor82: barl
+ Location: 84,69
+ Owner: Greece
+ Actor83: tent
+ Location: 70,57
+ Owner: Greece
+ Actor84: barl
+ Location: 74,55
+ Owner: Creeps
+ Actor85: powr
+ Location: 52,80
+ Owner: USSR
+ Actor86: jeep
+ Location: 85,66
+ Owner: Greece
+ Facing: 128
+ Actor89: jeep
+ Location: 55,56
+ Owner: Greece
+ Facing: 224
+ Actor90: jeep
+ Location: 79,54
+ Owner: Greece
+ Facing: 128
+ Actor92: e1
+ Location: 47,75
+ Owner: USSR
+ Facing: 64
+ SubCell: 4
+ Actor93: e1
+ Location: 48,75
+ Owner: USSR
+ Facing: 64
+ SubCell: 3
+ Actor94: e1
+ Location: 47,76
+ Owner: USSR
+ Facing: 64
+ SubCell: 2
+ Actor95: e1
+ Location: 48,76
+ Owner: USSR
+ Facing: 64
+ SubCell: 1
+ Actor96: dog
+ Location: 49,73
+ Owner: USSR
+ Facing: 64
+ SubCell: 3
+ Actor97: dog
+ Location: 49,76
+ Owner: USSR
+ Facing: 64
+ SubCell: 1
+ Actor98: dog
+ Location: 49,75
+ Owner: USSR
+ Facing: 64
+ SubCell: 3
+ Actor99: dog
+ Location: 49,74
+ Owner: USSR
+ Facing: 64
+ SubCell: 1
+ Actor100: e3
+ Location: 88,68
+ Owner: Greece
+ Facing: 160
+ SubCell: 3
+ Actor103: e1
+ Location: 79,64
+ Owner: Greece
+ Facing: 96
+ SubCell: 3
+ Actor104: e1
+ Location: 79,64
+ Owner: Greece
+ Facing: 96
+ SubCell: 4
+ Actor105: e3
+ Location: 78,57
+ Owner: Greece
+ Facing: 160
+ SubCell: 4
+ Actor106: e2
+ Location: 47,73
+ Owner: USSR
+ Facing: 64
+ SubCell: 4
+ Actor107: e2
+ Location: 47,74
+ Owner: USSR
+ Facing: 64
+ SubCell: 2
+ Actor108: e2
+ Location: 48,74
+ Owner: USSR
+ Facing: 64
+ SubCell: 1
+ Actor109: e2
+ Location: 48,73
+ Owner: USSR
+ Facing: 64
+ SubCell: 3
+ Actor110: e1
+ Location: 72,61
+ Owner: Greece
+ Facing: 160
+ SubCell: 0
+ Actor111: e1
+ Location: 40,54
+ Owner: Greece
+ Facing: 96
+ SubCell: 0
+ Actor112: e1
+ Location: 83,85
+ Owner: Greece
+ Facing: 224
+ SubCell: 3
+ Actor113: e1
+ Location: 82,68
+ Owner: Greece
+ Facing: 96
+ SubCell: 4
+ Actor114: e1
+ Location: 69,55
+ Owner: Greece
+ Facing: 160
+ SubCell: 0
+ BarrelBase: brl3
+ Location: 71,55
+ Owner: Creeps
+ BarrelBridge: brl3
+ Location: 72,65
+ Owner: Creeps
+ BridgeCheck1: waypoint
+ Owner: Neutral
+ Location: 60,60
+ BridgeCheck2: waypoint
+ Owner: Neutral
+ Location: 80,75
+ CameraStart: Camera
+ Location: 60,77
+ Owner: Neutral
+ CameraBridge: Camera
+ Location: 69,67
+ Owner: Neutral
+ CameraBase1: Camera
+ Location: 70,56
+ Owner: Neutral
+ CameraBase2: Camera
+ Location: 82,58
+ Owner: Neutral
+ CameraBaseEntrance: Camera
+ Location: 85,67
+ Owner: Neutral
+ Church1: v01
+ Location: 67,73
+ Owner: Creeps
+ Church2: v01
+ Location: 86,81
+ Owner: Creeps
+ ForwardCommand: fcom
+ Location: 45,73
+ Owner: USSR
+ BridgeGun1: gun
+ Location: 68,64
+ Owner: Greece
+ Facing: 160
+ BridgeGun2: gun
+ Location: 74,64
+ Owner: Greece
+ Facing: 160
+ IntroSoldier1: e1
+ Location: 71,65
+ Owner: Greece
+ Facing: 160
+ SubCell: 3
+ IntroSoldier2: e1
+ Location: 71,60
+ Owner: Greece
+ Facing: 128
+ SubCell: 3
+ IntroSoldier3: e1
+ Location: 70,60
+ Owner: Greece
+ Facing: 128
+ SubCell: 4
+ ParachuteBase1: waypoint
+ Location: 66,54
+ Owner: Neutral
+ ParachuteBase2: waypoint
+ Location: 66,56
+ Owner: Neutral
+ ParachuteBaseEntrance: waypoint
+ Location: 85,68
+ Owner: Neutral
+ TransportTruck: truk
+ Location: 75,58
+ Owner: Greece
+ Facing: 192
+ TransportWaypoint1: waypoint
+ Location: 75,58
+ Owner: Neutral
+ TransportWaypoint2: waypoint
+ Location: 86,83
+ Owner: Neutral
+ TransportWaypoint3: waypoint
+ Location: 67,75
+ Owner: Neutral
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
diff --git a/mods/ura/maps/soviet-02b/rules.yaml b/mods/ura/maps/soviet-02b/rules.yaml
new file mode 100644
index 0000000..426e5fd
--- /dev/null
+++ b/mods/ura/maps/soviet-02b/rules.yaml
@@ -0,0 +1,119 @@
+Player:
+ PlayerResources:
+ DefaultCash: 5000
+
+World:
+ LuaScript:
+ Scripts: soviet02b.lua
+ MissionData:
+ Briefing: Tomorrow, the attack on Germany begins, but today, we must protect our facility from Allied attacks.\n\nKeep the Command Center intact at all costs, and destroy any Allied fortification you might find.
+ BriefingVideo: soviet2.vqa
+ StartVideo: spotter.vqa
+ WinVideo: sovtstar.vqa
+ LossVideo: sovcemet.vqa
+
+SPEN:
+ Buildable:
+ Prerequisites: ~disabled
+
+DOME:
+ Buildable:
+ Prerequisites: ~disabled
+
+WEAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+FIX:
+ Buildable:
+ Prerequisites: ~disabled
+
+APWR:
+ Buildable:
+ Prerequisites: ~disabled
+
+STEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+BRIK:
+ Buildable:
+ Prerequisites: ~disabled
+
+TSLA:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+IRON:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+E3:
+ Buildable:
+ Prerequisites: ~disabled
+
+E4:
+ Buildable:
+ Prerequisites: ~disabled
+
+E6:
+ Buildable:
+ Prerequisites: ~disabled
+
+SHOK:
+ Buildable:
+ Prerequisites: ~disabled
+
+SNIPER:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+MIG:
+ Buildable:
+ Prerequisites: ~disabled
+
+AFLD:
+ Buildable:
+ Prerequisites: ~disabled
+ AirstrikePower@spyplane:
+ Prerequisites: ~disabled
+ ParatroopersPower@paratroopers:
+ Prerequisites: ~disabled
+
+GUN:
+ -RepairableBuilding:
+
+HARV:
+ Harvester:
+ SearchFromProcRadius: 50
+ SearchFromOrderRadius: 50
+
+MONEYCRATE:
+ GiveCashCrateAction:
+ Amount: 2000
+
+powerproxy.paratroopers:
+ ParatroopersPower:
+ DropItems: E1,E1,E2,E2,E2
+
+powerproxy.paratroopers2:
+ Inherits: powerproxy.paratroopers
+ ParatroopersPower:
+ DropItems: E2,E2,E2,E2,E2
+
+powerproxy.paratroopers3:
+ Inherits: powerproxy.paratroopers
+ ParatroopersPower:
+ DropItems: E1,E1,E1,E1,E1
diff --git a/mods/ura/maps/soviet-02b/soviet02b.lua b/mods/ura/maps/soviet-02b/soviet02b.lua
new file mode 100644
index 0000000..4ec70ad
--- /dev/null
+++ b/mods/ura/maps/soviet-02b/soviet02b.lua
@@ -0,0 +1,182 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+IntroAttackers = { IntroSoldier1, IntroSoldier2, IntroSoldier3 }
+
+BridgeShroudTrigger = { CPos.New(63, 71), CPos.New(64, 71), CPos.New(65, 71), CPos.New(69, 65), CPos.New(70, 65), CPos.New(71, 65) }
+BridgeExplosionTrigger = { CPos.New(66, 69), CPos.New(67, 69), CPos.New(68, 69) }
+TransportTrigger = { CPos.New(75, 58) }
+EnemyBaseShroudTrigger = { CPos.New(64, 52), CPos.New(64, 53), CPos.New(64, 54), CPos.New(64, 55), CPos.New(64, 56), CPos.New(64, 57), CPos.New(64, 58), CPos.New(64, 59), CPos.New(64, 60), CPos.New(64, 61), CPos.New(64, 62), CPos.New(64, 63), CPos.New(64, 64) }
+ParachuteTrigger = { CPos.New(80, 66), CPos.New(81, 66), CPos.New(82, 66), CPos.New(83, 66), CPos.New(84, 66), CPos.New(85, 66),CPos.New(86, 66), CPos.New(87, 66), CPos.New(88, 66), CPos.New(89, 66) }
+EnemyBaseEntranceShroudTrigger = { CPos.New(80, 73), CPos.New(81, 73), CPos.New(82, 73), CPos.New(83, 73), CPos.New(84, 73), CPos.New(85, 73),CPos.New(86, 73), CPos.New(87, 73), CPos.New(88, 73), CPos.New(89, 73) }
+
+SendUSSRParadrops = function()
+ paraproxy1 = Actor.Create("powerproxy.paratroopers", false, { Owner = player })
+ paraproxy1.SendParatroopers(ParachuteBaseEntrance.CenterPosition, false, Facing.North)
+ paraproxy1.Destroy()
+end
+
+SendUSSRParadropsBase = function()
+ paraproxy2 = Actor.Create("powerproxy.paratroopers2", false, { Owner = player })
+ paraproxy2.SendParatroopers(ParachuteBase1.CenterPosition, false, Facing.East)
+ paraproxy2.Destroy()
+ paraproxy3 = Actor.Create("powerproxy.paratroopers3", false, { Owner = player })
+ paraproxy3.SendParatroopers(ParachuteBase2.CenterPosition, false, Facing.East)
+ paraproxy3.Destroy()
+end
+
+Trigger.OnEnteredFootprint(BridgeShroudTrigger, function(a, id)
+ if not bridgeShroudTrigger and a.Owner == player then
+ bridgeShroudTrigger = true
+ local cameraBridge = Actor.Create("camera", true, { Owner = player, Location = CameraBridge.Location })
+ Trigger.AfterDelay(DateTime.Seconds(15), function()
+ cameraBridge.Destroy()
+ end)
+ end
+end)
+
+Trigger.OnEnteredFootprint(BridgeExplosionTrigger, function(a, id)
+ if not bridgeExplosionTrigger and a.Owner == player then
+ bridgeExplosionTrigger = true
+ if not BarrelBridge.IsDead then
+ BarrelBridge.Kill()
+ end
+ end
+end)
+
+Trigger.OnEnteredFootprint(EnemyBaseEntranceShroudTrigger, function(a, id)
+ if not enemyBaseEntranceShroudTrigger and a.Owner == player then
+ enemyBaseEntranceShroudTrigger = true
+ local cameraBaseEntrance = Actor.Create("camera", true, { Owner = player, Location = CameraBaseEntrance.Location })
+ Trigger.AfterDelay(DateTime.Seconds(15), function()
+ cameraBaseEntrance.Destroy()
+ end)
+ end
+end)
+
+Trigger.OnEnteredFootprint(EnemyBaseShroudTrigger, function(a, id)
+ if not enemyBaseShroudTrigger and a.Owner == player then
+ enemyBaseShroudTrigger = true
+ local cameraBase1 = Actor.Create("camera", true, { Owner = player, Location = CameraBase1.Location })
+ local cameraBase2 = Actor.Create("camera", true, { Owner = player, Location = CameraBase2.Location })
+ Trigger.AfterDelay(DateTime.Seconds(15), function()
+ cameraBase1.Destroy()
+ cameraBase2.Destroy()
+ end)
+ end
+end)
+
+Trigger.OnEnteredFootprint(ParachuteTrigger, function(a, id)
+ if not parachuteTrigger and a.Owner == player then
+ parachuteTrigger = true
+ SendUSSRParadrops()
+ Media.PlaySpeechNotification(player, "ReinforcementsArrived")
+ end
+end)
+
+Trigger.OnEnteredFootprint(TransportTrigger, function(a, id)
+ if not transportTrigger and a.Type == "truk" then
+ transportTrigger = true
+ if not TransportTruck.IsDead then
+ TransportTruck.Wait(DateTime.Seconds(5))
+ TransportTruck.Move(TransportWaypoint2.Location)
+ TransportTruck.Wait(DateTime.Seconds(5))
+ TransportTruck.Move(TransportWaypoint3.Location)
+ TransportTruck.Wait(DateTime.Seconds(5))
+ TransportTruck.Move(TransportWaypoint1.Location)
+ end
+ Trigger.AfterDelay(DateTime.Seconds(10), function()
+ transportTrigger = false
+ end)
+ end
+end)
+
+Trigger.OnKilled(BarrelBase, function()
+ SendUSSRParadropsBase()
+ Media.PlaySpeechNotification(player, "ReinforcementsArrived")
+end)
+
+Trigger.OnKilled(BarrelBridge, function()
+ local bridgepart = Map.ActorsInBox(BridgeCheck1.CenterPosition, BridgeCheck2.CenterPosition, function(self) return self.Type == "br1" end)[1]
+ if not bridgepart.IsDead then
+ bridgepart.Kill()
+ end
+end)
+
+Trigger.OnKilled(Church1, function()
+ Actor.Create("moneycrate", true, { Owner = player, Location = TransportWaypoint3.Location })
+end)
+
+Trigger.OnKilled(Church2, function()
+ Actor.Create("healcrate", true, { Owner = player, Location = Church2.Location })
+end)
+
+Trigger.OnKilled(ForwardCommand, function()
+ enemy.MarkCompletedObjective(alliedObjective)
+end)
+
+Trigger.OnKilled(IntroSoldier1, function()
+ local cameraIntro = Actor.Create("camera", true, { Owner = player, Location = CameraStart.Location })
+ Trigger.AfterDelay(DateTime.Seconds(15), function()
+ cameraIntro.Destroy()
+ end)
+end)
+
+WorldLoaded = function()
+ player = Player.GetPlayer("USSR")
+ enemy = Player.GetPlayer("Greece")
+ Utils.Do(IntroAttackers, function(actor)
+ if not actor.IsDead then
+ Trigger.OnIdle(actor, actor.Hunt)
+ end
+ end)
+ Trigger.AfterDelay(0, function()
+ local buildings = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == enemy and self.HasProperty("StartBuildingRepairs") end)
+ Utils.Do(buildings, function(actor)
+ Trigger.OnDamaged(actor, function(building, attacker)
+ if building.Owner == enemy and building.Health < building.MaxHealth * 0.8 then
+ building.StartBuildingRepairs()
+ end
+ end)
+ end)
+ end)
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "Win")
+ end)
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "Lose")
+ end)
+ alliedObjective = enemy.AddPrimaryObjective("Destroy all Soviet troops.")
+ sovietObjective1 = player.AddPrimaryObjective("Protect the Command Center.")
+ sovietObjective2 = player.AddPrimaryObjective("Destroy all Allied units and structures.")
+end
+
+Tick = function()
+ if player.HasNoRequiredUnits() then
+ enemy.MarkCompletedObjective(alliedObjective)
+ end
+
+ if enemy.HasNoRequiredUnits() then
+ player.MarkCompletedObjective(sovietObjective1)
+ player.MarkCompletedObjective(sovietObjective2)
+ end
+
+ if enemy.Resources >= enemy.ResourceCapacity * 0.75 then
+ enemy.Cash = enemy.Cash + enemy.Resources - enemy.ResourceCapacity * 0.25
+ enemy.Resources = enemy.ResourceCapacity * 0.25
+ end
+end
diff --git a/mods/ura/maps/soviet-03/map.bin b/mods/ura/maps/soviet-03/map.bin
new file mode 100644
index 0000000..df791e3
Binary files /dev/null and b/mods/ura/maps/soviet-03/map.bin differ
diff --git a/mods/ura/maps/soviet-03/map.png b/mods/ura/maps/soviet-03/map.png
new file mode 100644
index 0000000..e92632f
Binary files /dev/null and b/mods/ura/maps/soviet-03/map.png differ
diff --git a/mods/ura/maps/soviet-03/map.yaml b/mods/ura/maps/soviet-03/map.yaml
new file mode 100644
index 0000000..1dcbe10
--- /dev/null
+++ b/mods/ura/maps/soviet-03/map.yaml
@@ -0,0 +1,1168 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 03: Covert cleanup
+
+Author: Westwood Studios
+
+Tileset: SNOW
+
+MapSize: 128,128
+
+Bounds: 24,22,70,49
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Enemies: Greece, USSR
+ PlayerReference@England:
+ Name: England
+ Faction: allies
+ Color: E2E6F5
+ Allies: Greece, BadGuy
+ Enemies: USSR
+ PlayerReference@BadGuy:
+ Name: BadGuy
+ Faction: soviet
+ Color: FE1100
+ Allies: England, Greece, USSR
+ PlayerReference@Greece:
+ Name: Greece
+ Faction: allies
+ Color: E2E6F5
+ Allies: England, BadGuy
+ Enemies: USSR, Creeps
+ PlayerReference@USSR:
+ Name: USSR
+ AllowBots: False
+ Playable: True
+ Required: True
+ LockFaction: True
+ Faction: soviet
+ LockColor: True
+ Color: FE1100
+ LockSpawn: True
+ LockTeam: True
+ Enemies: Greece, England, Creeps
+
+Actors:
+ Actor0: wood
+ Location: 86,36
+ Owner: Neutral
+ Actor1: wood
+ Location: 88,36
+ Owner: Neutral
+ Actor2: wood
+ Location: 89,36
+ Owner: Neutral
+ Actor3: wood
+ Location: 90,36
+ Owner: Neutral
+ Actor4: v16
+ Location: 85,37
+ Owner: Neutral
+ Actor5: v17
+ Location: 86,37
+ Owner: Neutral
+ Actor6: v14
+ Location: 87,37
+ Owner: Neutral
+ Actor7: wood
+ Location: 90,37
+ Owner: Neutral
+ Actor8: wood
+ Location: 91,37
+ Owner: Neutral
+ Actor9: wood
+ Location: 92,37
+ Owner: Neutral
+ Actor10: wood
+ Location: 93,37
+ Owner: Neutral
+ Actor11: wood
+ Location: 93,38
+ Owner: Neutral
+ Actor12: wood
+ Location: 93,39
+ Owner: Neutral
+ Actor13: wood
+ Location: 90,40
+ Owner: Neutral
+ Actor14: wood
+ Location: 91,40
+ Owner: Neutral
+ Actor15: wood
+ Location: 92,40
+ Owner: Neutral
+ Actor16: wood
+ Location: 93,40
+ Owner: Neutral
+ Actor17: sbag
+ Location: 60,50
+ Owner: Neutral
+ Actor18: sbag
+ Location: 61,50
+ Owner: Neutral
+ Actor19: sbag
+ Location: 62,50
+ Owner: Neutral
+ Actor20: sbag
+ Location: 63,50
+ Owner: Neutral
+ Actor21: sbag
+ Location: 67,50
+ Owner: Neutral
+ Actor22: sbag
+ Location: 68,50
+ Owner: Neutral
+ Actor23: wood
+ Location: 34,61
+ Owner: Neutral
+ Actor24: wood
+ Location: 36,61
+ Owner: Neutral
+ Actor25: wood
+ Location: 37,61
+ Owner: Neutral
+ Actor26: wood
+ Location: 38,61
+ Owner: Neutral
+ Actor27: wood
+ Location: 39,61
+ Owner: Neutral
+ Actor28: wood
+ Location: 39,62
+ Owner: Neutral
+ Actor29: wood
+ Location: 39,63
+ Owner: Neutral
+ Actor30: wood
+ Location: 39,64
+ Owner: Neutral
+ Actor31: t14
+ Location: 60,55
+ Owner: Neutral
+ Actor32: tc02
+ Location: 18,51
+ Owner: Neutral
+ Actor33: tc01
+ Location: 7,67
+ Owner: Neutral
+ Actor34: tc03
+ Location: 7,61
+ Owner: Neutral
+ Actor35: t15
+ Location: 19,47
+ Owner: Neutral
+ Actor36: tc04
+ Location: 60,31
+ Owner: Neutral
+ Actor37: t15
+ Location: 64,32
+ Owner: Neutral
+ Actor38: t03
+ Location: 69,68
+ Owner: Neutral
+ Actor39: tc03
+ Location: 63,29
+ Owner: Neutral
+ Actor40: t10
+ Location: 14,46
+ Owner: Neutral
+ Actor41: tc03
+ Location: 11,48
+ Owner: Neutral
+ Actor42: t01
+ Location: 11,45
+ Owner: Neutral
+ Actor43: tc04
+ Location: 45,42
+ Owner: Neutral
+ Actor44: t11
+ Location: 46,39
+ Owner: Neutral
+ Actor45: t07
+ Location: 63,39
+ Owner: Neutral
+ Actor46: t07
+ Location: 14,61
+ Owner: Neutral
+ Actor47: t12
+ Location: 18,56
+ Owner: Neutral
+ Actor48: tc02
+ Location: 70,35
+ Owner: Neutral
+ Actor49: tc01
+ Location: 84,43
+ Owner: Neutral
+ Actor50: t10
+ Location: 83,37
+ Owner: Neutral
+ Actor51: t02
+ Location: 81,37
+ Owner: Neutral
+ Actor52: t08
+ Location: 90,35
+ Owner: Neutral
+ Actor53: t12
+ Location: 50,41
+ Owner: Neutral
+ Actor54: t01
+ Location: 50,64
+ Owner: Neutral
+ Actor55: t13
+ Location: 45,45
+ Owner: Neutral
+ Actor56: tc03
+ Location: 42,34
+ Owner: Neutral
+ Actor57: tc02
+ Location: 44,34
+ Owner: Neutral
+ Actor58: tc05
+ Location: 21,55
+ Owner: Neutral
+ Actor59: tc04
+ Location: 20,43
+ Owner: Neutral
+ Actor60: tc05
+ Location: 17,43
+ Owner: Neutral
+ Actor61: t12
+ Location: 18,45
+ Owner: Neutral
+ Actor62: t14
+ Location: 21,44
+ Owner: Neutral
+ Actor63: tc05
+ Location: 5,38
+ Owner: Neutral
+ Actor64: tc02
+ Location: 7,36
+ Owner: Neutral
+ Actor65: tc01
+ Location: 5,37
+ Owner: Neutral
+ Actor66: t16
+ Location: 5,39
+ Owner: Neutral
+ Actor67: tc03
+ Location: 64,37
+ Owner: Neutral
+ Actor68: t02
+ Location: 68,53
+ Owner: Neutral
+ Actor69: t03
+ Location: 17,69
+ Owner: Neutral
+ Actor70: tc04
+ Location: 50,48
+ Owner: Neutral
+ Actor71: tc03
+ Location: 48,43
+ Owner: Neutral
+ Actor72: tc04
+ Location: 28,38
+ Owner: Neutral
+ Actor73: tc02
+ Location: 25,38
+ Owner: Neutral
+ Actor74: tc02
+ Location: 80,58
+ Owner: Neutral
+ Actor75: tc01
+ Location: 79,66
+ Owner: Neutral
+ Actor76: t17
+ Location: 73,65
+ Owner: Neutral
+ Actor77: t15
+ Location: 77,65
+ Owner: Neutral
+ Actor78: t10
+ Location: 85,62
+ Owner: Neutral
+ Actor79: t14
+ Location: 83,58
+ Owner: Neutral
+ Actor80: tc02
+ Location: 12,52
+ Owner: Neutral
+ Actor81: t16
+ Location: 17,59
+ Owner: Neutral
+ Actor82: tc03
+ Location: 5,65
+ Owner: Neutral
+ Actor83: tc02
+ Location: 7,52
+ Owner: Neutral
+ Actor84: tc02
+ Location: 27,31
+ Owner: Neutral
+ Actor85: tc01
+ Location: 21,35
+ Owner: Neutral
+ Actor86: tc03
+ Location: 21,34
+ Owner: Neutral
+ Actor87: t14
+ Location: 21,39
+ Owner: Neutral
+ Actor88: tc05
+ Location: 67,22
+ Owner: Neutral
+ Actor89: t17
+ Location: 85,32
+ Owner: Neutral
+ Actor90: tc01
+ Location: 18,29
+ Owner: Neutral
+ Actor91: t02
+ Location: 39,30
+ Owner: Neutral
+ Actor92: t08
+ Location: 38,32
+ Owner: Neutral
+ Actor93: tc03
+ Location: 81,61
+ Owner: Neutral
+ Actor94: t12
+ Location: 80,62
+ Owner: Neutral
+ Actor95: tc04
+ Location: 85,23
+ Owner: Neutral
+ Actor96: tc01
+ Location: 81,28
+ Owner: Neutral
+ Actor97: t16
+ Location: 89,30
+ Owner: Neutral
+ Actor98: t08
+ Location: 71,27
+ Owner: Neutral
+ Actor99: tc01
+ Location: 42,62
+ Owner: Neutral
+ Actor100: tc03
+ Location: 72,56
+ Owner: Neutral
+ Actor101: t15
+ Location: 71,49
+ Owner: Neutral
+ Actor102: t13
+ Location: 79,51
+ Owner: Neutral
+ Actor103: tc01
+ Location: 33,68
+ Owner: Neutral
+ Actor104: tc05
+ Location: 43,68
+ Owner: Neutral
+ Actor105: tc02
+ Location: 54,68
+ Owner: Neutral
+ Actor106: t08
+ Location: 52,63
+ Owner: Neutral
+ Actor107: t08
+ Location: 51,65
+ Owner: Neutral
+ Actor108: t08
+ Location: 55,62
+ Owner: Neutral
+ Actor109: t06
+ Location: 58,64
+ Owner: Neutral
+ Actor110: t15
+ Location: 35,61
+ Owner: Neutral
+ Actor111: t08
+ Location: 43,30
+ Owner: Neutral
+ Actor112: tc02
+ Location: 50,63
+ Owner: Neutral
+ Actor113: tc03
+ Location: 80,47
+ Owner: Neutral
+ Actor117: v03
+ Location: 42,66
+ Owner: Greece
+ Actor118: v04
+ Location: 45,62
+ Owner: Greece
+ Health: 47
+ Actor120: v07
+ Location: 42,37
+ Owner: Greece
+ Actor122: brl3
+ Location: 43,38
+ Owner: Creeps
+ Actor123: barl
+ Location: 44,37
+ Owner: Creeps
+ Actor126: barl
+ Location: 44,38
+ Owner: Creeps
+ Actor131: barl
+ Location: 80,31
+ Owner: Creeps
+ Actor132: brl3
+ Location: 83,30
+ Owner: Creeps
+ Actor133: brl3
+ Location: 74,31
+ Owner: Creeps
+ Actor134: barl
+ Location: 73,31
+ Owner: Creeps
+ Actor136: v06
+ Location: 90,39
+ Owner: Greece
+ Actor138: barl
+ Location: 81,49
+ Owner: Creeps
+ Actor139: brl3
+ Location: 78,49
+ Owner: Creeps
+ Actor140: barl
+ Location: 79,49
+ Owner: Creeps
+ Actor141: barl
+ Location: 76,49
+ Owner: Creeps
+ Actor143: v04
+ Location: 81,53
+ Owner: Greece
+ Health: 39
+ Actor145: v02
+ Location: 62,38
+ Owner: Greece
+ Actor146: v04
+ Location: 56,39
+ Owner: Greece
+ Health: 41
+ Actor148: v08
+ Location: 62,41
+ Owner: Greece
+ Actor150: brl3
+ Location: 58,43
+ Owner: Creeps
+ Actor151: barl
+ Location: 59,42
+ Owner: Creeps
+ Actor153: barl
+ Location: 61,42
+ Owner: Creeps
+ Actor154: brl3
+ Location: 62,42
+ Owner: Creeps
+ Actor155: barl
+ Location: 57,42
+ Owner: Creeps
+ Actor156: barl
+ Location: 57,43
+ Owner: Creeps
+ Actor157: barl
+ Location: 55,44
+ Owner: Creeps
+ Actor158: brl3
+ Location: 55,45
+ Owner: Creeps
+ Actor159: brl3
+ Location: 42,39
+ Owner: Creeps
+ Actor160: brl3
+ Location: 45,38
+ Owner: Creeps
+ Actor161: barl
+ Location: 46,38
+ Owner: Creeps
+ Actor162: brl3
+ Location: 55,46
+ Owner: Creeps
+ Actor163: barl
+ Location: 63,41
+ Owner: Creeps
+ Actor164: brl3
+ Location: 76,48
+ Owner: Creeps
+ Actor165: barl
+ Location: 77,48
+ Owner: Creeps
+ Actor166: barl
+ Location: 73,30
+ Owner: Creeps
+ Actor167: barl
+ Location: 83,31
+ Owner: Creeps
+ Actor168: brl3
+ Location: 80,49
+ Owner: Creeps
+ Actor169: v13
+ Location: 63,36
+ Owner: Greece
+ Actor171: brl3
+ Location: 81,31
+ Owner: Creeps
+ Actor172: e1
+ Location: 16,31
+ Owner: Greece
+ Facing: 128
+ SubCell: 4
+ Actor173: e1
+ Location: 16,31
+ Owner: Greece
+ Facing: 192
+ SubCell: 0
+ Actor174: e1
+ Location: 17,33
+ Owner: Greece
+ Facing: 160
+ SubCell: 1
+ Actor175: e1
+ Location: 17,33
+ Owner: Greece
+ Facing: 128
+ SubCell: 4
+ Actor176: e3
+ Location: 17,33
+ Owner: Greece
+ Facing: 128
+ SubCell: 2
+ Actor177: e3
+ Location: 17,31
+ Owner: Greece
+ SubCell: 1
+ Actor183: e1
+ Location: 77,61
+ Owner: Greece
+ SubCell: 2
+ Actor184: e1
+ Location: 64,41
+ Owner: Greece
+ Facing: 64
+ SubCell: 3
+ Actor185: e1
+ Location: 64,42
+ Owner: Greece
+ Facing: 96
+ SubCell: 0
+ Actor186: e1
+ Location: 63,42
+ Owner: Greece
+ Facing: 128
+ SubCell: 0
+ Actor187: e1
+ Location: 59,45
+ Owner: Greece
+ Facing: 32
+ SubCell: 2
+ Actor188: e1
+ Location: 56,44
+ Owner: Greece
+ Facing: 32
+ SubCell: 4
+ Actor191: e1
+ Location: 56,45
+ Owner: Greece
+ Facing: 64
+ SubCell: 4
+ Actor192: e1
+ Location: 57,44
+ Owner: Greece
+ Facing: 64
+ SubCell: 2
+ Actor193: e1
+ Location: 60,44
+ Owner: Greece
+ Facing: 32
+ SubCell: 1
+ Actor194: e1
+ Location: 56,46
+ Owner: Greece
+ Facing: 64
+ SubCell: 4
+ Actor195: e1
+ Location: 53,37
+ Owner: Greece
+ Facing: 96
+ SubCell: 2
+ Actor196: e1
+ Location: 52,38
+ Owner: Greece
+ Facing: 96
+ SubCell: 3
+ Actor197: e1
+ Location: 52,37
+ Owner: Greece
+ Facing: 96
+ SubCell: 4
+ Actor264: fenc
+ Owner: BadGuy
+ Location: 89,32
+ Actor265: fenc
+ Owner: BadGuy
+ Location: 88,32
+ Actor266: fenc
+ Owner: BadGuy
+ Location: 87,32
+ Actor267: fenc
+ Owner: BadGuy
+ Location: 86,32
+ Actor268: fenc
+ Owner: BadGuy
+ Location: 85,32
+ Actor269: fenc
+ Owner: BadGuy
+ Location: 84,32
+ Actor270: fenc
+ Owner: BadGuy
+ Location: 83,32
+ Actor271: fenc
+ Owner: BadGuy
+ Location: 82,32
+ Actor272: fenc
+ Owner: BadGuy
+ Location: 81,32
+ Actor273: fenc
+ Owner: BadGuy
+ Location: 80,32
+ Actor274: fenc
+ Owner: BadGuy
+ Location: 70,22
+ Actor275: fenc
+ Owner: BadGuy
+ Location: 70,23
+ Actor276: fenc
+ Owner: BadGuy
+ Location: 70,24
+ Actor277: fenc
+ Owner: BadGuy
+ Location: 70,25
+ Actor278: fenc
+ Owner: BadGuy
+ Location: 70,26
+ Actor279: fenc
+ Owner: BadGuy
+ Location: 70,27
+ Actor280: fenc
+ Owner: BadGuy
+ Location: 70,28
+ Actor281: fenc
+ Owner: BadGuy
+ Location: 70,29
+ Actor282: fenc
+ Owner: BadGuy
+ Location: 70,30
+ Actor283: fenc
+ Owner: BadGuy
+ Location: 70,31
+ Actor284: fenc
+ Owner: BadGuy
+ Location: 70,32
+ Actor285: fenc
+ Owner: BadGuy
+ Location: 71,32
+ Actor286: fenc
+ Owner: BadGuy
+ Location: 72,32
+ Actor287: fenc
+ Owner: BadGuy
+ Location: 73,32
+ Actor288: fenc
+ Owner: BadGuy
+ Location: 74,32
+ Actor289: fenc
+ Owner: Neutral
+ Location: 72,43
+ Actor290: fenc
+ Owner: Neutral
+ Location: 73,43
+ Actor291: fenc
+ Owner: Neutral
+ Location: 74,43
+ Actor292: fenc
+ Owner: Neutral
+ Location: 75,43
+ Actor293: fenc
+ Owner: Neutral
+ Location: 75,42
+ Actor294: fenc
+ Owner: Neutral
+ Location: 75,44
+ Actor295: fenc
+ Owner: Neutral
+ Location: 77,44
+ Actor296: fenc
+ Owner: Neutral
+ Location: 77,43
+ Actor297: fenc
+ Owner: Neutral
+ Location: 77,42
+ Actor298: fenc
+ Owner: Neutral
+ Location: 78,43
+ Actor299: fenc
+ Owner: Neutral
+ Location: 79,43
+ Actor300: fenc
+ Owner: Neutral
+ Location: 80,43
+ Actor301: fenc
+ Owner: Neutral
+ Location: 76,46
+ Actor302: fenc
+ Owner: Neutral
+ Location: 75,46
+ Actor303: fenc
+ Owner: Neutral
+ Location: 74,46
+ Actor304: fenc
+ Owner: Neutral
+ Location: 77,46
+ Actor305: fenc
+ Owner: Neutral
+ Location: 78,46
+ Actor306: fenc
+ Owner: Neutral
+ Location: 76,58
+ Actor307: fenc
+ Owner: Neutral
+ Location: 76,59
+ Actor308: fenc
+ Owner: Neutral
+ Location: 76,60
+ Actor309: fenc
+ Owner: Neutral
+ Location: 75,60
+ Actor310: fenc
+ Owner: Neutral
+ Location: 78,60
+ Actor311: fenc
+ Owner: Neutral
+ Location: 79,60
+ Actor312: fenc
+ Owner: Neutral
+ Location: 78,59
+ Actor313: fenc
+ Owner: Neutral
+ Location: 78,58
+ Actor314: fenc
+ Owner: Neutral
+ Location: 65,41
+ Actor315: fenc
+ Owner: Neutral
+ Location: 65,42
+ Actor316: fenc
+ Owner: Neutral
+ Location: 65,43
+ Actor317: fenc
+ Owner: Neutral
+ Location: 64,43
+ Actor318: fenc
+ Owner: Neutral
+ Location: 63,43
+ Actor319: fenc
+ Owner: Neutral
+ Location: 62,43
+ Actor320: fenc
+ Owner: Neutral
+ Location: 61,43
+ Actor321: fenc
+ Owner: Neutral
+ Location: 60,43
+ Actor322: fenc
+ Owner: Neutral
+ Location: 59,43
+ Actor323: fenc
+ Owner: Neutral
+ Location: 59,44
+ Actor324: fenc
+ Owner: Neutral
+ Location: 58,44
+ Actor325: fenc
+ Owner: Neutral
+ Location: 58,45
+ Actor326: fenc
+ Owner: Neutral
+ Location: 63,45
+ Actor327: fenc
+ Owner: Neutral
+ Location: 62,45
+ Actor328: fenc
+ Owner: Neutral
+ Location: 61,45
+ Actor329: fenc
+ Owner: Neutral
+ Location: 61,46
+ Actor330: fenc
+ Owner: Neutral
+ Location: 60,46
+ Actor331: fenc
+ Owner: Neutral
+ Location: 59,46
+ Actor332: fenc
+ Owner: Neutral
+ Location: 59,47
+ Actor333: fenc
+ Owner: Neutral
+ Location: 58,47
+ Actor334: fenc
+ Owner: Neutral
+ Location: 57,47
+ Actor335: fenc
+ Owner: Neutral
+ Location: 56,47
+ Actor336: fenc
+ Owner: Neutral
+ Location: 56,46
+ Actor337: fenc
+ Owner: Neutral
+ Location: 56,45
+ Actor338: fenc
+ Owner: Neutral
+ Location: 56,44
+ Actor339: fenc
+ Owner: Neutral
+ Location: 56,43
+ Actor340: fenc
+ Owner: Neutral
+ Location: 55,43
+ Actor341: fenc
+ Owner: Neutral
+ Location: 58,40
+ Actor342: fenc
+ Owner: Neutral
+ Location: 58,41
+ Actor343: fenc
+ Owner: Neutral
+ Location: 57,41
+ Actor344: fenc
+ Owner: Neutral
+ Location: 56,41
+ Actor345: fenc
+ Owner: Neutral
+ Location: 55,41
+ Actor346: fenc
+ Owner: Neutral
+ Location: 58,42
+ Actor347: fenc
+ Owner: Neutral
+ Location: 61,41
+ Actor348: fenc
+ Owner: Neutral
+ Location: 60,41
+ Actor349: fenc
+ Owner: Neutral
+ Location: 60,40
+ waypoint8: waypoint
+ Location: 79,28
+ Owner: Neutral
+ waypoint12: waypoint
+ Location: 58,49
+ Owner: Neutral
+ waypoint26: waypoint
+ Location: 59,62
+ Owner: Neutral
+ waypoint37: waypoint
+ Location: 72,31
+ Owner: Neutral
+ waypoint38: waypoint
+ Location: 82,31
+ Owner: Neutral
+ waypoint41: waypoint
+ Location: 35,37
+ Owner: Neutral
+ waypoint43: waypoint
+ Location: 73,43
+ Owner: Neutral
+ waypoint56: waypoint
+ Location: 40,70
+ Owner: Neutral
+ waypoint57: waypoint
+ Location: 39,73
+ Owner: Neutral
+ waypoint60: waypoint
+ Location: 58,22
+ Owner: Neutral
+ waypoint61: waypoint
+ Location: 58,20
+ Owner: Neutral
+ waypoint79: waypoint
+ Location: 93,65
+ Owner: Neutral
+ waypoint83: waypoint
+ Location: 37,67
+ Owner: Neutral
+ waypoint85: waypoint
+ Location: 34,65
+ Owner: Neutral
+ waypoint90: waypoint
+ Location: 76,29
+ Owner: Neutral
+ waypoint95: waypoint
+ Location: 77,60
+ Owner: Neutral
+ waypoint99: waypoint
+ Location: 58,59
+ Owner: Neutral
+ BarrierSoldier1: e1
+ Location: 63,49
+ Owner: Greece
+ Facing: 160
+ SubCell: 4
+ BarrierSoldier2: e1
+ Location: 64,50
+ Owner: Greece
+ Facing: 128
+ SubCell: 0
+ BarrierSoldier3: e1
+ Location: 64,49
+ Owner: Greece
+ Facing: 96
+ SubCell: 4
+ BarrierSoldier4: e1
+ Location: 66,50
+ Owner: Greece
+ Facing: 96
+ SubCell: 4
+ BarrierSoldier5: e1
+ Location: 65,49
+ Owner: Greece
+ Facing: 160
+ SubCell: 3
+ BarrierSoldier6: e1
+ Location: 66,49
+ Owner: Greece
+ Facing: 128
+ SubCell: 3
+ BaseBarrel1: barl
+ Location: 72,31
+ Owner: Creeps
+ BaseBarrel2: brl3
+ Location: 82,31
+ Owner: Creeps
+ BaseBuilding1: ftur
+ Location: 75,32
+ Owner: BadGuy
+ BaseBuilding2: ftur
+ Location: 79,32
+ Owner: BadGuy
+ BaseBuilding3: apwr
+ Location: 71,23
+ Owner: BadGuy
+ BaseBuilding4: apwr
+ Location: 86,27
+ Owner: BadGuy
+ BaseBuilding5: barl
+ Location: 74,24
+ Owner: Creeps
+ BaseBuilding6: miss
+ Location: 78,27
+ Owner: BadGuy
+ CameraBarrier: waypoint
+ Location: 64,51
+ Owner: Neutral
+ CameraFinalArea: waypoint
+ Location: 38,36
+ Owner: Neutral
+ CameraSpyHideout31: waypoint
+ Location: 63,40
+ Owner: Neutral
+ CameraSpyHideout32: waypoint
+ Location: 58,45
+ Owner: Neutral
+ CameraSpyHideout33: waypoint
+ Location: 58,37
+ Owner: Neutral
+ CameraSpyVillage: waypoint
+ Location: 58,63
+ Owner: Neutral
+ CameraVillage: waypoint
+ Location: 40,63
+ Owner: Neutral
+ CameraWater1: camera
+ Owner: Neutral
+ Location: 38,48
+ CameraWater2: camera
+ Owner: Neutral
+ Location: 29,48
+ CameraWater3: camera
+ Owner: Neutral
+ Location: 29,55
+ CameraWater4: camera
+ Owner: Neutral
+ Location: 29,63
+ CameraWater5: camera
+ Owner: Neutral
+ Location: 38,55
+ CameraWater6: camera
+ Owner: Neutral
+ Location: 50,55
+ EnemyReinforcements1: waypoint
+ Location: 45,63
+ Owner: Neutral
+ EnemyReinforcements2: waypoint
+ Location: 42,66
+ Owner: Neutral
+ EnemyReinforcements1Goal: waypoint
+ Location: 44,63
+ Owner: Neutral
+ EnemyReinforcements2Goal: waypoint
+ Location: 41,65
+ Owner: Neutral
+ FarmArea: waypoint
+ Location: 89,39
+ Owner: Neutral
+ Farmer1: c7
+ Location: 88,39
+ Owner: Greece
+ SubCell: 4
+ Farmer2: c6
+ Location: 90,38
+ Owner: Greece
+ SubCell: 3
+ Farmer3: e3
+ Location: 89,37
+ Owner: Greece
+ Facing: 160
+ SubCell: 2
+ FarmSpawn: waypoint
+ Location: 90,39
+ Owner: Neutral
+ HelicopterEscape: waypoint
+ Location: 20,33
+ Owner: Neutral
+ HelicopterGoal: waypoint
+ Location: 31,33
+ Owner: Neutral
+ HelicopterSpawn: waypoint
+ Location: 24,33
+ Owner: Neutral
+ Hideout1Barrel: brl3
+ Location: 77,49
+ Owner: Creeps
+ Hideout1PBox: pbox
+ Location: 76,47
+ Owner: Greece
+ Hideout3Barrel: brl3
+ Location: 60,42
+ Owner: Creeps
+ IntroCamera: waypoint
+ Location: 76,40
+ Owner: Neutral
+ Playerbase: waypoint
+ Location: 77,25
+ Owner: Neutral
+ RedBuilding1: v05
+ Location: 37,67
+ Owner: Greece
+ Health: 39
+ RedBuilding2: v05
+ Location: 56,37
+ Owner: Greece
+ Health: 39
+ RedBuilding3: v05
+ Location: 72,53
+ Owner: Greece
+ Health: 43
+ ReinforcementDropOff: waypoint
+ Location: 63,61
+ Owner: Neutral
+ ReinforcementGoal: waypoint
+ Location: 76,25
+ Owner: Neutral
+ ReinforcementSpawn: waypoint
+ Location: 77,22
+ Owner: Neutral
+ RSoldier1: e3
+ Location: 73,35
+ Owner: Greece
+ SubCell: 1
+ RSoldier2: e3
+ Location: 80,35
+ Owner: Greece
+ SubCell: 2
+ RSoldier3: e3
+ Location: 36,37
+ Owner: Greece
+ Facing: 64
+ SubCell: 1
+ RSoldier4: e3
+ Location: 36,37
+ Owner: Greece
+ Facing: 64
+ SubCell: 4
+ RSoldierTrap: barl
+ Location: 42,38
+ Owner: Creeps
+ RStandoff: waypoint
+ Location: 77,57
+ Owner: Neutral
+ SpyGoal: waypoint
+ Location: 31,34
+ Owner: Neutral
+ SpyHideout1: v01
+ Location: 77,52
+ Owner: Greece
+ SpyHideout2: v01
+ Location: 37,63
+ Owner: Greece
+ SpyHideout3: v01
+ Location: 61,36
+ Owner: Greece
+ SpyHideout4: v01
+ Location: 36,32
+ Owner: Greece
+ SpyWaypoint1: waypoint
+ Location: 76,42
+ Owner: Neutral
+ SpyWaypoint2: waypoint
+ Location: 75,53
+ Owner: Neutral
+ SpyWaypoint3: waypoint
+ Location: 74,63
+ Owner: Neutral
+ SpyWaypoint4: waypoint
+ Location: 47,65
+ Owner: Neutral
+ TheSpy: spy
+ Location: 77,28
+ Owner: England
+ SubCell: 1
+ Transport: lst
+ Location: 28,65
+ Owner: Greece
+ TransportPath1: waypoint
+ Location: 31,65
+ Owner: Neutral
+ TransportPath1Water: waypoint
+ Location: 30,65
+ Owner: Neutral
+ TransportPath2Water: waypoint
+ Location: 47,51
+ Owner: Neutral
+ TransportPath2: waypoint
+ Location: 47,50
+ Owner: Neutral
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
+
+Notifications: notifications.yaml
diff --git a/mods/ura/maps/soviet-03/notifications.yaml b/mods/ura/maps/soviet-03/notifications.yaml
new file mode 100644
index 0000000..b50090b
--- /dev/null
+++ b/mods/ura/maps/soviet-03/notifications.yaml
@@ -0,0 +1,3 @@
+Sounds:
+ Notifications:
+ sking: sking1
\ No newline at end of file
diff --git a/mods/ura/maps/soviet-03/rules.yaml b/mods/ura/maps/soviet-03/rules.yaml
new file mode 100644
index 0000000..be71429
--- /dev/null
+++ b/mods/ura/maps/soviet-03/rules.yaml
@@ -0,0 +1,57 @@
+World:
+ LuaScript:
+ Scripts: soviet03.lua
+ MissionData:
+ Briefing: A spy who has compromised the security of one of the northern sarin gas sites has been traced back to Lund, Sweden, by Nadia's intelligence groups.\n\nHe has been marked for death and a squad of Soviet troops was dispatched to the location to hunt him down.
+ BriefingVideo: soviet3.vqa
+ StartVideo: search.vqa
+ WinVideo: execute.vqa
+ LossVideo: take_off.vqa
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ hard: Hard
+ Default: easy
+
+Player:
+ LobbyPrerequisiteCheckbox@GLOBALBOUNTY:
+ Enabled: False
+ Locked: True
+
+^Helicopter:
+ Health:
+ HP: 9000
+
+FENC:
+ Health:
+ HP: 9000
+
+V01:
+ Cargo:
+ Types: Infantry
+ MaxWeight: 1
+ PipCount: 1
+
+V05:
+ SpawnActorOnDeath:
+ Actor: healcrate
+
+DOG:
+ # HACK: Disable experience without killing the linter
+ -GainsExperience:
+ ExternalCondition@RANK-VETERAN:
+ Condition: rank-veteran
+ ExternalCondition@RANK-ELITE:
+ Condition: rank-elite
+ -GrantCondition@RANK-ELITE:
+
+SPY:
+ Mobile:
+ Speed: 80
+
+powerproxy.paratroopers:
+ ParatroopersPower:
+ DropItems: E1,E1,E1,E2,E2
diff --git a/mods/ura/maps/soviet-03/soviet03.lua b/mods/ura/maps/soviet-03/soviet03.lua
new file mode 100644
index 0000000..6cfed53
--- /dev/null
+++ b/mods/ura/maps/soviet-03/soviet03.lua
@@ -0,0 +1,395 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+if Map.LobbyOption("difficulty") == "easy" then
+ remainingTime = DateTime.Minutes(7)
+elseif Map.LobbyOption("difficulty") == "normal" then
+ remainingTime = DateTime.Minutes(6)
+elseif Map.LobbyOption("difficulty") == "hard" then
+ remainingTime = DateTime.Minutes(5)
+end
+
+USSRReinforcements1 = { "dog", "dog", "dog", "dog", "dog" }
+USSRReinforcements2 = { "e1", "e2", "e2" }
+USSRReinforcementsFarm = { "e1", "e1", "e1", "e2", "e2" }
+EnemyReinforcements1SpyHideout2 = { "e1", "e3" }
+EnemyReinforcements2SpyHideout2 = { "e3", "e3" }
+ExtractionHeliType = "tran"
+ExtractionPath = { HelicopterSpawn.Location, HelicopterGoal.Location }
+Farmers = { Farmer1, Farmer2, Farmer3 }
+BarrierSoldiers = { BarrierSoldier1, BarrierSoldier2, BarrierSoldier3, BarrierSoldier4, BarrierSoldier5, BarrierSoldier6 }
+RedBuildings = { RedBuildung1, RedBuilding2, RedBuilding3 }
+BaseBuildings1 = { BaseBarrel1, BaseBarrel2, BaseBuilding1, BaseBuilding2 }
+BaseBuildings2 = { BaseBuilding3, BaseBuilding4, BaseBuilding5, BaseBuilding6 }
+
+SpyHideout1Trigger = { CPos.New(84, 45), CPos.New(85, 45), CPos.New(86, 45), CPos.New(87, 45), CPos.New(88, 45), CPos.New(89, 45), CPos.New(90, 45) }
+SpyHideout2PathTrigger = { CPos.New(70, 61), CPos.New(70, 62), CPos.New(70, 63), CPos.New(70, 64), CPos.New(70, 65) }
+SpyHideout2Trigger = { CPos.New(50, 63), CPos.New(50, 64), CPos.New(50, 65), CPos.New(50, 66), CPos.New(50, 67), CPos.New(50, 68), CPos.New(50, 69) }
+SpyTransport1CheckpointTrigger = { CPos.New(31, 65) }
+SpyTransport2CheckpointTrigger = { CPos.New(47, 51) }
+Barrier1Trigger = { CPos.New(59,57), CPos.New(60,57), CPos.New(61,57), CPos.New(62,57), CPos.New(63,57), CPos.New(64,57), CPos.New(65,57), CPos.New(66,57), CPos.New(67,57), CPos.New(68,57) }
+Barrier2Trigger = { CPos.New(63, 47), CPos.New(64, 47), CPos.New(65, 47), CPos.New(66, 47), CPos.New(67, 47), CPos.New(68, 47) }
+SpyHideout3Trigger = { CPos.New(58, 45), CPos.New(58, 46), CPos.New(58, 47) }
+RTrapTrigger = { CPos.New(46, 34), CPos.New(47, 35), CPos.New(48, 36), CPos.New(48, 37), CPos.New(48, 38), CPos.New(48, 39) }
+SpyHideout4Trigger = { CPos.New(41, 34), CPos.New(41, 35), CPos.New(41, 36), CPos.New(41, 37), CPos.New(41, 38) }
+
+IntroSequence = function()
+ TheSpy.DisguiseAsType("e1", player)
+ Actor.Create("camera", true, { Owner = player, Location = Playerbase.Location })
+ Actor.Create("camera", true, { Owner = player, Location = IntroCamera.Location })
+ Actor.Create("camera", true, { Owner = player, Location = FarmArea.Location })
+ if not TheSpy.IsDead then
+ TheSpy.Move(SpyWaypoint1.Location)
+ TheSpy.Move(SpyWaypoint2.Location)
+ end
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ Media.PlaySoundNotification(player, "sking")
+ end)
+ Trigger.AfterDelay(DateTime.Seconds(2), function()
+ Media.PlaySpeechNotification(player, "ExplosiveChargePlaced")
+ end)
+ Trigger.AfterDelay(DateTime.Seconds(4), function()
+ if not RSoldier1.IsDead and not BaseBarrel1.IsDead then
+ RSoldier1.Attack(BaseBarrel1)
+ end
+ if not RSoldier2.IsDead and not BaseBarrel2.IsDead then
+ RSoldier2.Attack(BaseBarrel2)
+ end
+ end)
+ Trigger.AfterDelay(DateTime.Seconds(5), function()
+ Utils.Do(BaseBuildings1, function(actor)
+ if not actor.IsDead then
+ actor.Kill()
+ end
+ end)
+ end)
+ Trigger.AfterDelay(DateTime.Seconds(6), function()
+ Utils.Do(BaseBuildings2, function(actor)
+ if not actor.IsDead then
+ actor.Kill()
+ end
+ end)
+ if not RSoldier1.IsDead then
+ RSoldier1.Move(SpyWaypoint2.Location)
+ end
+ if not RSoldier2.IsDead then
+ RSoldier2.Move(SpyWaypoint2.Location)
+ end
+ end)
+ Trigger.AfterDelay(DateTime.Seconds(8), function()
+ Dogs = Reinforcements.Reinforce(player, USSRReinforcements1, { ReinforcementSpawn.Location, ReinforcementGoal.Location }, 0)
+ Media.PlaySpeechNotification(player, "ReinforcementsArrived")
+ timerstarted = true
+ end)
+ Trigger.AfterDelay(DateTime.Seconds(9), function()
+ Media.PlaySoundNotification(player, "AlertBleep")
+ end)
+ Trigger.AfterDelay(DateTime.Seconds(10), function()
+ Media.PlaySpeechNotification(player, "TimerStarted")
+ end)
+end
+
+SendUSSRParadrops = function()
+ paraproxy = Actor.Create("powerproxy.paratroopers", false, { Owner = player })
+ paraproxy.SendParatroopers(ReinforcementDropOff.CenterPosition, false, 0)
+ paraproxy.Destroy()
+end
+
+SpyFinalSequency = function()
+ if not SpyHideout4.IsDead then
+ SpyHideout4.UnloadPassengers()
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ if not TheSpy.IsDead then
+ TheSpy.Move(SpyGoal.Location)
+ end
+ end)
+ end
+end
+
+SpyHelicopterEscape = function()
+ if not spyHelicopterEscape then
+ spyHelicopterEscape = true
+ SpyFinalSequency()
+ Actor.Create("camera", true, { Owner = player, Location = CameraFinalArea.Location })
+ ExtractionHeli = Reinforcements.ReinforceWithTransport(greece, ExtractionHeliType, nil, ExtractionPath)[1]
+ local exitPos = CPos.New(ExtractionPath[1].X, ExtractionPath[2].Y)
+ Trigger.AfterDelay(DateTime.Seconds(5), function()
+ if not TheSpy.IsDead and not ExtractionHeli.IsDead then
+ TheSpy.EnterTransport(ExtractionHeli)
+ end
+ end)
+ Trigger.AfterDelay(DateTime.Seconds(7), function()
+ if not ExtractionHeli.IsDead then
+ ExtractionHeli.Move(HelicopterEscape.Location)
+ end
+ end)
+ Trigger.AfterDelay(DateTime.Seconds(12), function()
+ enemy.MarkCompletedObjective(alliedObjective)
+ end)
+ end
+end
+
+Trigger.OnAllKilled(Farmers, function()
+ Reinforcements.Reinforce(player, USSRReinforcementsFarm, { FarmSpawn.Location, FarmArea.Location }, 0)
+ player.MarkCompletedObjective(sovietObjective2)
+end)
+
+Trigger.OnAllKilled(RedBuildings, function()
+ player.MarkCompletedObjective(sovietObjective3)
+end)
+
+Trigger.OnAnyKilled(BarrierSoldiers, function()
+ if barrier1Trigger then
+ Utils.Do(BarrierSoldiers, function(actor)
+ if not actor.IsDead then
+ Trigger.OnIdle(actor, actor.Hunt)
+ end
+ end)
+ end
+end)
+
+Trigger.OnEnteredFootprint(SpyHideout1Trigger, function(a, id)
+ if not spyHideout1Trigger and a.Owner == player then
+ spyHideout1Trigger = true
+ Trigger.RemoveFootprintTrigger(id)
+ Actor.Create("camera", true, { Owner = player, Location = SpyHideout1.Location })
+ if not TheSpy.IsDead and not SpyHideout1.IsDead then
+ TheSpy.EnterTransport(SpyHideout1)
+ end
+ end
+end)
+
+Trigger.OnEnteredFootprint(SpyHideout2PathTrigger, function(a, id)
+ if not spyHideout2PathTrigger and a.Owner == player then
+ spyHideout2PathTrigger = true
+ Trigger.RemoveFootprintTrigger(id)
+ Actor.Create("camera", true, { Owner = player, Location = CameraSpyVillage.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraVillage.Location })
+ if not TheSpy.IsDead and not SpyHideout2.IsDead then
+ TheSpy.EnterTransport(SpyHideout2)
+ end
+ end
+end)
+
+Trigger.OnEnteredFootprint(SpyHideout2Trigger, function(a, id)
+ if not spyHideout2Trigger and a.Owner == player then
+ spyHideout2Trigger = true
+ SpyGuards1 = Reinforcements.Reinforce(greece, EnemyReinforcements1SpyHideout2, { EnemyReinforcements1.Location, EnemyReinforcements1Goal.Location }, 0)
+ SpyGuards2 = Reinforcements.Reinforce(greece, EnemyReinforcements2SpyHideout2, { EnemyReinforcements2.Location, EnemyReinforcements2Goal.Location }, 0)
+ Utils.Do(SpyGuards1, function(actor)
+ if not actor.IsDead then
+ Trigger.OnIdle(actor, actor.Hunt)
+ end
+ end)
+ Utils.Do(SpyGuards2, function(actor)
+ if not actor.IsDead then
+ Trigger.OnIdle(actor, actor.Hunt)
+ end
+ end)
+ if not SpyHideout2.IsDead and not Transport.IsDead then
+ SpyHideout2.UnloadPassengers()
+ Transport.Move(TransportPath1Water.Location)
+ end
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ if not TheSpy.IsDead then
+ TheSpy.Move(TransportPath1.Location)
+ TheSpy.EnterTransport(Transport)
+ end
+ end)
+ Trigger.AfterDelay(DateTime.Seconds(7), function()
+ SendUSSRParadrops()
+ Media.PlaySpeechNotification(player, "ReinforcementsArrived")
+ end)
+ end
+end)
+
+Trigger.OnEnteredFootprint(SpyTransport1CheckpointTrigger, function(a, id)
+ if not spyTransport1CheckpointTrigger and a.Owner == enemy then
+ spyTransport1CheckpointTrigger = true
+ Trigger.AfterDelay(DateTime.Seconds(2), function()
+ Actor.Create("camera", true, { Owner = player, Location = CameraWater1.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraWater2.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraWater3.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraWater4.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraWater5.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraWater6.Location })
+ Actor.Create("camera", true, { Owner = player, Location = TransportPath2.Location })
+ if not Transport.IsDead then
+ Transport.Wait(25)
+ Transport.Move(TransportPath2Water.Location)
+ end
+ end)
+ end
+end)
+
+Trigger.OnEnteredFootprint(SpyTransport2CheckpointTrigger, function(a, id)
+ if not spyTransport2CheckpointTrigger and a.Owner == greece then
+ spyTransport2CheckpointTrigger = true
+ Transport.UnloadPassengers()
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ if not TheSpy.IsDead then
+ if not Hideout3Barrel.IsDead then
+ TheSpy.EnterTransport(SpyHideout3)
+ elseif not SpyHideout4.IsDead then
+ TheSpy.EnterTransport(SpyHideout4)
+ else
+ TheSpy.Move(SpyGoal.Location)
+ end
+ end
+ end)
+ end
+end)
+
+Trigger.OnEnteredFootprint(Barrier1Trigger, function(a, id)
+ if not barrier1Trigger and a.Owner == player then
+ barrier1Trigger = true
+ Actor.Create("camera", true, { Owner = player, Location = CameraBarrier.Location })
+ end
+end)
+
+Trigger.OnEnteredFootprint(Barrier2Trigger, function(a, id)
+ if not barrier2Trigger and a.Owner == player then
+ barrier2Trigger = true
+ Actor.Create("camera", true, { Owner = player, Location = CameraSpyHideout31.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraSpyHideout32.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraSpyHideout33.Location })
+ end
+end)
+
+Trigger.OnEnteredFootprint(SpyHideout3Trigger, function(a, id)
+ if not spyHideout3Trigger and a.Owner == player then
+ spyHideout3Trigger = true
+ if Map.LobbyOption("difficulty") ~= "hard" then
+ Reinforcements.Reinforce(player, USSRReinforcements2, { ReinforcementSpawn.Location, CameraSpyHideout33.Location }, 0)
+ Media.PlaySpeechNotification(player, "ReinforcementsArrived")
+ end
+ end
+end)
+
+Trigger.OnEnteredFootprint(RTrapTrigger, function(a, id)
+ if not rTrapTrigger and a.Owner == player then
+ rTrapTrigger = true
+ Actor.Create("camera", true, { Owner = player, Location = CameraFinalArea.Location })
+ if not RSoldier3.IsDead and not RSoldierTrap.IsDead then
+ RSoldier3.Attack(RSoldierTrap)
+ end
+ if not RSoldier4.IsDead and not RSoldierTrap.IsDead then
+ RSoldier4.Attack(RSoldierTrap)
+ end
+ end
+end)
+
+Trigger.OnEnteredFootprint(SpyHideout4Trigger, function(a, id)
+ if not spyHideout4Trigger and a.Owner == player then
+ spyHideout4Trigger = true
+ SpyFinalSequency()
+ Actor.Create("camera", true, { Owner = player, Location = HelicopterGoal.Location })
+ end
+end)
+
+Trigger.OnKilled(Hideout1Barrel, function()
+ if not Hideout1PBox.IsDead then
+ Hideout1PBox.Kill()
+ end
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ if not SpyHideout1.IsDead then
+ SpyHideout1.UnloadPassengers()
+ end
+ end)
+ Trigger.AfterDelay(DateTime.Seconds(2), function()
+ if not TheSpy.IsDead then
+ TheSpy.Move(SpyWaypoint3.Location)
+ TheSpy.Move(SpyWaypoint4.Location)
+ end
+ end)
+ if not RSoldier1.IsDead then
+ RSoldier1.Move(RStandoff.Location)
+ end
+ if not RSoldier2.IsDead then
+ RSoldier2.Move(RStandoff.Location)
+ end
+end)
+
+Trigger.OnKilled(Hideout3Barrel, function()
+ if not SpyHideout3.IsDead then
+ SpyHideout3.UnloadPassengers()
+ end
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ if not TheSpy.IsDead then
+ TheSpy.Move(SpyGoal.Location)
+ end
+ end)
+ Trigger.AfterDelay(DateTime.Seconds(7), function()
+ if not TheSpy.IsDead and not SpyHideout4.IsDead then
+ TheSpy.EnterTransport(SpyHideout4)
+ end
+ end)
+end)
+
+WorldLoaded = function()
+ player = Player.GetPlayer("USSR")
+ enemy = Player.GetPlayer("England")
+ greece = Player.GetPlayer("Greece")
+ Camera.Position = Playerbase.CenterPosition
+ IntroSequence()
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "Win")
+ end)
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "Lose")
+ end)
+ alliedObjective = enemy.AddPrimaryObjective("Destroy all Soviet troops.")
+ sovietObjective1 = player.AddPrimaryObjective("Kill the enemy spy.")
+ sovietObjective2 = player.AddSecondaryObjective("Clear the nearby farm for reinforcements.")
+ sovietObjective3 = player.AddSecondaryObjective("Scavenge the civilian buildings for supplies.")
+end
+
+Trigger.OnKilled(TheSpy, function()
+ player.MarkCompletedObjective(sovietObjective1)
+end)
+
+Tick = function()
+ Trigger.AfterDelay(DateTime.Seconds(12), function()
+ if player.HasNoRequiredUnits() then
+ enemy.MarkCompletedObjective(alliedObjective)
+ end
+ end)
+ if not SpyHideout4.IsDead and SpyHideout4.HasPassengers then
+ spyReachedHideout4 = true
+ end
+ if remainingTime == DateTime.Minutes(5) and Map.LobbyOption("difficulty") ~= "hard" then
+ Media.PlaySpeechNotification(player, "WarningFiveMinutesRemaining")
+ elseif remainingTime == DateTime.Minutes(4) then
+ Media.PlaySpeechNotification(player, "WarningFourMinutesRemaining")
+ elseif remainingTime == DateTime.Minutes(3) then
+ Media.PlaySpeechNotification(player, "WarningThreeMinutesRemaining")
+ elseif remainingTime == DateTime.Minutes(2) then
+ Media.PlaySpeechNotification(player, "WarningTwoMinutesRemaining")
+ elseif remainingTime == DateTime.Minutes(1) then
+ Media.PlaySpeechNotification(player, "WarningOneMinuteRemaining")
+ end
+ if remainingTime > 0 and timerstarted then
+ UserInterface.SetMissionText("Time Remaining: " .. Utils.FormatTime(remainingTime), player.Color)
+ remainingTime = remainingTime - 1
+ elseif remainingTime == 0 and not spyReachedHideout4 then
+ UserInterface.SetMissionText("")
+ enemy.MarkCompletedObjective(alliedObjective)
+ elseif remainingTime == 0 and spyReachedHideout4 then
+ UserInterface.SetMissionText("")
+ SpyHelicopterEscape()
+ end
+end
diff --git a/mods/ura/maps/soviet-04a/map.bin b/mods/ura/maps/soviet-04a/map.bin
new file mode 100644
index 0000000..0366e16
Binary files /dev/null and b/mods/ura/maps/soviet-04a/map.bin differ
diff --git a/mods/ura/maps/soviet-04a/map.png b/mods/ura/maps/soviet-04a/map.png
new file mode 100644
index 0000000..dc77417
Binary files /dev/null and b/mods/ura/maps/soviet-04a/map.png differ
diff --git a/mods/ura/maps/soviet-04a/map.yaml b/mods/ura/maps/soviet-04a/map.yaml
new file mode 100644
index 0000000..6323816
--- /dev/null
+++ b/mods/ura/maps/soviet-04a/map.yaml
@@ -0,0 +1,617 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 04a: Behind the lines
+
+Author: Westwood Studios
+
+Tileset: SNOW
+
+MapSize: 128,128
+
+Bounds: 38,45,72,46
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: england
+ PlayerReference@Spain:
+ Name: Spain
+ Faction: england
+ Allies: Greece
+ Enemies: USSR
+ PlayerReference@Greece:
+ Name: Greece
+ Faction: allies
+ Color: E2E6F5
+ Allies: Spain
+ Enemies: USSR
+ PlayerReference@USSR:
+ Name: USSR
+ Playable: True
+ AllowBots: False
+ Required: True
+ LockFaction: True
+ Faction: soviet
+ LockColor: True
+ Color: FE1100
+ LockSpawn: True
+ LockTeam: True
+ Enemies: Greece, Spain
+
+Actors:
+ Actor0: sbag
+ Location: 71,43
+ Owner: Neutral
+ Actor1: sbag
+ Location: 72,43
+ Owner: Neutral
+ Actor2: sbag
+ Location: 72,44
+ Owner: Neutral
+ Actor3: cycl
+ Location: 47,45
+ Owner: Neutral
+ Actor4: cycl
+ Location: 48,45
+ Owner: Neutral
+ Actor5: cycl
+ Location: 49,45
+ Owner: Neutral
+ Actor6: cycl
+ Location: 50,45
+ Owner: Neutral
+ Actor7: cycl
+ Location: 53,45
+ Owner: Neutral
+ Actor8: sbag
+ Location: 72,45
+ Owner: Neutral
+ Actor9: sbag
+ Location: 72,46
+ Owner: Neutral
+ Actor10: sbag
+ Location: 73,46
+ Owner: Neutral
+ Actor11: sbag
+ Location: 74,46
+ Owner: Neutral
+ Actor12: cycl
+ Location: 46,47
+ Owner: Neutral
+ Actor13: sbag
+ Location: 72,47
+ Owner: Neutral
+ Actor14: cycl
+ Location: 46,48
+ Owner: Neutral
+ Actor15: sbag
+ Location: 71,48
+ Owner: Neutral
+ Actor16: sbag
+ Location: 72,48
+ Owner: Neutral
+ Actor17: cycl
+ Location: 46,49
+ Owner: Neutral
+ Actor18: sbag
+ Location: 71,52
+ Owner: Neutral
+ Actor19: sbag
+ Location: 72,52
+ Owner: Neutral
+ Actor20: sbag
+ Location: 72,53
+ Owner: Neutral
+ Actor21: sbag
+ Location: 72,54
+ Owner: Neutral
+ Actor22: sbag
+ Location: 72,55
+ Owner: Neutral
+ Actor23: sbag
+ Location: 73,55
+ Owner: Neutral
+ Actor24: sbag
+ Location: 74,55
+ Owner: Neutral
+ Actor25: sbag
+ Location: 72,56
+ Owner: Neutral
+ Actor26: sbag
+ Location: 86,56
+ Owner: Neutral
+ Actor27: sbag
+ Location: 88,56
+ Owner: Neutral
+ Actor28: sbag
+ Location: 89,56
+ Owner: Neutral
+ Actor29: sbag
+ Location: 90,56
+ Owner: Neutral
+ Actor30: sbag
+ Location: 91,56
+ Owner: Neutral
+ Actor31: sbag
+ Location: 92,56
+ Owner: Neutral
+ Actor32: sbag
+ Location: 67,57
+ Owner: Neutral
+ Actor33: sbag
+ Location: 68,57
+ Owner: Neutral
+ Actor34: sbag
+ Location: 69,57
+ Owner: Neutral
+ Actor35: sbag
+ Location: 70,57
+ Owner: Neutral
+ Actor36: sbag
+ Location: 71,57
+ Owner: Neutral
+ Actor37: sbag
+ Location: 72,57
+ Owner: Neutral
+ Actor38: sbag
+ Location: 78,58
+ Owner: Neutral
+ Actor39: sbag
+ Location: 79,58
+ Owner: Neutral
+ Actor40: sbag
+ Location: 80,58
+ Owner: Neutral
+ Actor41: sbag
+ Location: 81,58
+ Owner: Neutral
+ Actor42: sbag
+ Location: 82,58
+ Owner: Neutral
+ Actor43: sbag
+ Location: 83,58
+ Owner: Neutral
+ Actor44: sbag
+ Location: 57,69
+ Owner: Neutral
+ Actor45: sbag
+ Location: 61,69
+ Owner: Neutral
+ Actor46: sbag
+ Location: 44,72
+ Owner: Neutral
+ Actor47: sbag
+ Location: 48,72
+ Owner: Neutral
+ Actor48: tc04
+ Location: 97,67
+ Owner: Neutral
+ Actor49: tc05
+ Location: 71,79
+ Owner: Neutral
+ Actor50: t10
+ Location: 100,59
+ Owner: Neutral
+ Actor51: t13
+ Location: 78,50
+ Owner: Neutral
+ Actor52: tc01
+ Location: 68,55
+ Owner: Neutral
+ Actor53: t08
+ Location: 73,47
+ Owner: Neutral
+ Actor54: tc01
+ Location: 29,86
+ Owner: Neutral
+ Actor55: t08
+ Location: 36,84
+ Owner: Neutral
+ Actor56: t06
+ Location: 36,87
+ Owner: Neutral
+ Actor57: t11
+ Location: 38,74
+ Owner: Neutral
+ Actor58: tc02
+ Location: 42,75
+ Owner: Neutral
+ Actor59: tc03
+ Location: 60,80
+ Owner: Neutral
+ Actor60: tc05
+ Location: 54,73
+ Owner: Neutral
+ Actor61: tc01
+ Location: 47,87
+ Owner: Neutral
+ Actor62: t16
+ Location: 56,79
+ Owner: Neutral
+ Actor63: tc04
+ Location: 79,70
+ Owner: Neutral
+ Actor64: tc01
+ Location: 108,73
+ Owner: Neutral
+ Actor65: t07
+ Location: 94,60
+ Owner: Neutral
+ Actor66: tc05
+ Location: 91,66
+ Owner: Neutral
+ Actor67: t17
+ Location: 82,64
+ Owner: Neutral
+ Actor68: tc04
+ Location: 28,80
+ Owner: Neutral
+ Actor69: tc05
+ Location: 29,75
+ Owner: Neutral
+ Actor70: tc02
+ Location: 27,76
+ Owner: Neutral
+ Actor71: t17
+ Location: 42,52
+ Owner: Neutral
+ Actor72: t01
+ Location: 53,81
+ Owner: Neutral
+ Actor73: tc01
+ Location: 99,77
+ Owner: Neutral
+ Actor74: mine
+ Location: 106,86
+ Owner: Neutral
+ Actor75: mine
+ Location: 70,87
+ Owner: Neutral
+ Actor76: tc04
+ Location: 39,46
+ Owner: Neutral
+ Actor77: tc05
+ Location: 45,61
+ Owner: Neutral
+ Actor78: tc02
+ Location: 41,48
+ Owner: Neutral
+ Actor79: tc04
+ Location: 98,45
+ Owner: Neutral
+ Actor80: t15
+ Location: 95,48
+ Owner: Neutral
+ Actor81: tc03
+ Location: 38,68
+ Owner: Neutral
+ Actor82: t08
+ Location: 38,67
+ Owner: Neutral
+ Actor83: t08
+ Location: 40,69
+ Owner: Neutral
+ Actor84: tc05
+ Location: 38,79
+ Owner: Neutral
+ Actor104: brl3
+ Location: 95,50
+ Owner: Greece
+ Actor105: barl
+ Location: 93,49
+ Owner: Greece
+ Actor106: brl3
+ Location: 94,50
+ Owner: Greece
+ Actor107: barl
+ Location: 93,50
+ Owner: Greece
+ Actor108: v19
+ Location: 92,48
+ Owner: Greece
+ Actor110: brl3
+ Location: 83,57
+ Owner: Greece
+ Actor111: barl
+ Location: 82,57
+ Owner: Greece
+ Actor112: barl
+ Location: 81,57
+ Owner: Greece
+ Actor113: brl3
+ Location: 88,55
+ Owner: Greece
+ Actor114: barl
+ Location: 87,55
+ Owner: Greece
+ Actor115: brl3
+ Location: 87,56
+ Owner: Greece
+ Actor116: brl3
+ Location: 57,46
+ Owner: Greece
+ Actor117: barl
+ Location: 57,47
+ Owner: Greece
+ Actor118: brl3
+ Location: 92,50
+ Owner: Greece
+ Actor119: barl
+ Location: 92,49
+ Owner: Greece
+ Actor120: barl
+ Location: 94,49
+ Owner: Greece
+ Actor133: 2tnk
+ Location: 69,54
+ Owner: Greece
+ Facing: 64
+ Actor136: 1tnk
+ Location: 59,68
+ Owner: Greece
+ Facing: 128
+ Actor137: 1tnk
+ Location: 46,71
+ Owner: Greece
+ Facing: 128
+ Actor139: jeep
+ Location: 57,54
+ Owner: Greece
+ Facing: 96
+ Actor140: 1tnk
+ Location: 62,46
+ Owner: Greece
+ Facing: 160
+ Actor141: 1tnk
+ Location: 60,57
+ Owner: Greece
+ Facing: 128
+ Actor142: 1tnk
+ Location: 54,57
+ Owner: Greece
+ Facing: 128
+ Actor143: 2tnk
+ Location: 92,53
+ Owner: Greece
+ Facing: 192
+ Actor144: 2tnk
+ Location: 92,55
+ Owner: Greece
+ Facing: 192
+ Actor145: 2tnk
+ Location: 86,58
+ Owner: Greece
+ Facing: 160
+ Actor146: jeep
+ Location: 89,60
+ Owner: Greece
+ Facing: 160
+ Actor151: 2tnk
+ Location: 40,55
+ Owner: Greece
+ Facing: 128
+ Actor152: 2tnk
+ Location: 44,55
+ Owner: Greece
+ Facing: 128
+ Actor154: 2tnk
+ Location: 67,64
+ Owner: Greece
+ Facing: 160
+ Actor155: 2tnk
+ Location: 69,63
+ Owner: Greece
+ Facing: 160
+ Actor159: mine
+ Location: 77,46
+ Owner: Neutral
+ Radar: dome
+ Location: 49,46
+ Owner: Greece
+ CYard: fact
+ Location: 58,45
+ Owner: Greece
+ Proc: proc
+ Location: 63,53
+ Owner: Greece
+ FreeActor: False
+ Silo1: silo
+ Location: 62,52
+ Owner: Greece
+ Silo2: silo
+ Location: 63,53
+ Owner: Greece
+ Silo3: silo
+ Location: 65,52
+ Owner: Greece
+ Silo4: silo
+ Location: 66,53
+ Owner: Greece
+ Barr: tent
+ Location: 50,52
+ Owner: Greece
+ Gun1: gun
+ Location: 87,57
+ Owner: Greece
+ Facing: 96
+ Gun2: gun
+ Location: 84,58
+ Owner: Greece
+ Facing: 96
+ Gun3: gun
+ Location: 53,48
+ Owner: Greece
+ Facing: 96
+ Gun4: gun
+ Location: 67,65
+ Owner: Greece
+ Facing: 96
+ Gun5: gun
+ Location: 70,63
+ Owner: Greece
+ Facing: 96
+ Pbox1: pbox
+ Location: 57,70
+ Owner: Greece
+ Pbox2: powr
+ Location: 51,45
+ Owner: Greece
+ Pbox3: pbox
+ Location: 61,70
+ Owner: Greece
+ Pbox4: pbox
+ Location: 67,63
+ Owner: Greece
+ Pbox5: pbox
+ Location: 44,73
+ Owner: Greece
+ Pbox6: pbox
+ Location: 48,73
+ Owner: Greece
+ village1: v11
+ Location: 57,80
+ Owner: Spain
+ village2: v03
+ Location: 49,77
+ Owner: Spain
+ Health: 75
+ village3: v02
+ Location: 43,77
+ Owner: Spain
+ village4: v01
+ Location: 40,75
+ Owner: Spain
+ village5: v05
+ Location: 55,76
+ Owner: Spain
+ Health: 39
+ Weap: weap
+ Location: 67,45
+ Owner: Greece
+ Gap1: gap
+ Location: 83,52
+ Owner: Greece
+ Gap2: gap
+ Location: 59,66
+ Owner: Greece
+ Powr1: powr
+ Location: 47,47
+ Owner: Greece
+ Powr2: powr
+ Location: 93,46
+ Owner: Greece
+ Powr3: powr
+ Location: 96,45
+ Owner: Greece
+ APwr: apwr
+ Location: 49,57
+ Owner: Greece
+ Fix1: fix
+ Location: 56,55
+ Owner: Greece
+ Tank1: 3tnk
+ Location: 88,87
+ Owner: USSR
+ Tank2: 3tnk
+ Location: 84,87
+ Owner: USSR
+ Tank3: 3tnk
+ Location: 87,86
+ Owner: USSR
+ Tank4: 3tnk
+ Location: 85,86
+ Owner: USSR
+ Tank5: v2rl
+ Location: 86,87
+ Owner: USSR
+ civ1: c6
+ Location: 53,80
+ Owner: Spain
+ Facing: 64
+ SubCell: 2
+ civ2: c7
+ Location: 58,79
+ Owner: Spain
+ SubCell: 3
+ civ3: c5
+ Location: 57,81
+ Owner: Spain
+ Facing: 64
+ SubCell: 3
+ Harvester: harv
+ Location: 76,47
+ Owner: Greece
+ Facing: 160
+ Runner1: jeep
+ Location: 88,83
+ Owner: Greece
+ Runner2: jeep
+ Location: 84,83
+ Owner: Greece
+ Facing: 64
+ GreeceCYard: waypoint
+ Location: 59,47
+ Owner: Neutral
+ BridgeEntrancePoint: waypoint
+ Location: 83,55
+ Owner: Neutral
+ SovietBasePoint: waypoint
+ Location: 86,88
+ Owner: Neutral
+ ToRadarPoint: waypoint
+ Location: 42,60
+ Owner: Neutral
+ InVillagePoint: waypoint
+ Location: 56,82
+ Owner: Neutral
+ NRoadPoint: waypoint
+ Location: 80,45
+ Owner: Neutral
+ SWRoadPoint: waypoint
+ Location: 38,90
+ Owner: Neutral
+ VillagePoint: waypoint
+ Location: 57,80
+ Owner: Neutral
+ CrossroadsNorthPoint: waypoint
+ Location: 80,49
+ Owner: Neutral
+ StartPoint: waypoint
+ Location: 86,90
+ Owner: Neutral
+ SovietBaseEntryPointW: waypoint
+ Location: 69,79
+ Owner: Neutral
+ NearRadarPoint: waypoint
+ Location: 43,47
+ Owner: Neutral
+ NERoadTurnPoint: waypoint
+ Location: 106,54
+ Owner: Neutral
+ CrossroadsEastPoint: waypoint
+ Location: 106,64
+ Owner: Neutral
+ VillageEntrancePoint: waypoint
+ Location: 59,75
+ Owner: Neutral
+ StartCamPoint: waypoint
+ Location: 86,87
+ Owner: Neutral
+ SovietBaseEntryPointNE: waypoint
+ Location: 96,77
+ Owner: Neutral
+ V2MovePoint: waypoint
+ Location: 84,83
+ Owner: Neutral
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
diff --git a/mods/ura/maps/soviet-04a/rules.yaml b/mods/ura/maps/soviet-04a/rules.yaml
new file mode 100644
index 0000000..e465bfe
--- /dev/null
+++ b/mods/ura/maps/soviet-04a/rules.yaml
@@ -0,0 +1,95 @@
+Player:
+ PlayerResources:
+ DefaultCash: 5000
+
+World:
+ LuaScript:
+ Scripts: soviet04a.lua, soviet04a-AI.lua, soviet04a-reinforcements_teams.lua
+ MissionData:
+ Briefing: The Allied base in this region is proving to be problematic.\n\nYour mission is to take it out so that we can begin to move forces through this area.\n\nAs long as they have communications they will be able to call upon heavy reinforcements.\n\nCrush their communications, and they should be easier to remove.
+ BriefingVideo: soviet4.vqa
+ StartVideo: sovmcv.vqa
+ WinVideo: radrraid.vqa
+ LossVideo: allymorf.vqa
+ MapOptions:
+ TechLevel: medium
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ hard: Hard
+ Default: easy
+
+AFLD:
+ ParatroopersPower@paratroopers:
+ DropItems: E1,E1,E1,E2,E2
+
+TSLA:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+HPAD:
+ Buildable:
+ Prerequisites: ~disabled
+
+APWR:
+ Buildable:
+ Prerequisites: ~disabled
+
+BRIK:
+ Buildable:
+ Prerequisites: ~disabled
+
+E3:
+ Buildable:
+ Prerequisites: ~tent
+
+E4:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPY:
+ Buildable:
+ Prerequisites: ~disabled
+
+MECH:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+FTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+TRUK:
+ Buildable:
+ Prerequisites: ~disabled
+
+APC:
+ Buildable:
+ Prerequisites: ~disabled
+
+AGUN:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPEN:
+ Buildable:
+ Prerequisites: ~disabled
+
+SYRD:
+ Buildable:
+ Prerequisites: ~disabled
diff --git a/mods/ura/maps/soviet-04a/soviet04a-AI.lua b/mods/ura/maps/soviet-04a/soviet04a-AI.lua
new file mode 100644
index 0000000..475954f
--- /dev/null
+++ b/mods/ura/maps/soviet-04a/soviet04a-AI.lua
@@ -0,0 +1,122 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
+
+IdlingUnits = function()
+ local lazyUnits = Greece.GetGroundAttackers()
+
+ Utils.Do(lazyUnits, function(unit)
+ Trigger.OnDamaged(unit, function()
+ Trigger.ClearAll(unit)
+ Trigger.AfterDelay(0, function() IdleHunt(unit) end)
+ end)
+ end)
+end
+
+BaseBarracks = { type = "tent", pos = CVec.New(-9, 6), cost = 400, exists = true }
+BaseProc = { type = "proc", pos = CVec.New(4, 7), cost = 1400, exists = true }
+BaseWeaponsFactory = { type = "weap", pos = CVec.New(8, -1), cost = 2000, exists = true }
+BaseBuildings =
+{
+ { type = "powr", pos = CVec.New(0, 4), cost = 300 },
+ BaseBarracks,
+ BaseProc,
+ BaseWeaponsFactory
+}
+
+BuildBase = function()
+ for i,v in ipairs(BaseBuildings) do
+ if not v.exists then
+ BuildBuilding(v)
+ return
+ end
+ end
+
+ Trigger.AfterDelay(DateTime.Seconds(10), BuildBase)
+end
+
+BuildBuilding = function(building)
+ Trigger.AfterDelay(Actor.BuildTime(building.type), function()
+ if CYard.IsDead or CYard.Owner ~= Greece then
+ return
+ elseif Harvester.IsDead and Greece.Resources <= 299 then
+ return
+ end
+
+ local actor = Actor.Create(building.type, true, { Owner = Greece, Location = GreeceCYard.Location + building.pos })
+ Greece.Cash = Greece.Cash - building.cost
+
+ building.exists = true
+ Trigger.OnKilled(actor, function() building.exists = false end)
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == Greece and building.Health < building.MaxHealth * 3/4 then
+ building.StartBuildingRepairs()
+ end
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(10), BuildBase)
+ end)
+end
+
+ProduceInfantry = function()
+ if not BaseBarracks.exists then
+ return
+ elseif Harvester.IsDead and Greece.Resources <= 299 then
+ return
+ end
+
+ local delay = Utils.RandomInteger(DateTime.Seconds(3), DateTime.Seconds(9))
+ local toBuild = { Utils.Random(AlliedInfantryTypes) }
+ local Path = Utils.Random(AttackPaths)
+ Greece.Build(toBuild, function(unit)
+ InfAttack[#InfAttack + 1] = unit[1]
+
+ if #InfAttack >= 10 then
+ SendUnits(InfAttack, Path)
+ InfAttack = { }
+ Trigger.AfterDelay(DateTime.Minutes(2), ProduceInfantry)
+ else
+ Trigger.AfterDelay(delay, ProduceInfantry)
+ end
+ end)
+end
+
+ProduceArmor = function()
+ if not BaseWeaponsFactory.exists then
+ return
+ elseif Harvester.IsDead and Greece.Resources <= 599 then
+ return
+ end
+
+ local delay = Utils.RandomInteger(DateTime.Seconds(12), DateTime.Seconds(17))
+ local toBuild = { Utils.Random(AlliedArmorTypes) }
+ local Path = Utils.Random(AttackPaths)
+ Greece.Build(toBuild, function(unit)
+ ArmorAttack[#ArmorAttack + 1] = unit[1]
+
+ if #ArmorAttack >= 6 then
+ SendUnits(ArmorAttack, Path)
+ ArmorAttack = { }
+ Trigger.AfterDelay(DateTime.Minutes(3), ProduceArmor)
+ else
+ Trigger.AfterDelay(delay, ProduceArmor)
+ end
+ end)
+end
+
+SendUnits = function(units, waypoints)
+ Utils.Do(units, function(unit)
+ if not unit.IsDead then
+ Utils.Do(waypoints, function(waypoint)
+ unit.AttackMove(waypoint.Location)
+ end)
+ unit.Hunt()
+ end
+ end)
+end
diff --git a/mods/ura/maps/soviet-04a/soviet04a-reinforcements_teams.lua b/mods/ura/maps/soviet-04a/soviet04a-reinforcements_teams.lua
new file mode 100644
index 0000000..e266ce4
--- /dev/null
+++ b/mods/ura/maps/soviet-04a/soviet04a-reinforcements_teams.lua
@@ -0,0 +1,96 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+Civs = { civ1, civ2, civ3 }
+Village = { civ1, civ2, civ3, village1, village2, village5 }
+SovietMCV = { "mcv" }
+InfantryReinfGreece = { "e1", "e1", "e1", "e1", "e1" }
+Avengers = { "jeep", "1tnk", "2tnk", "2tnk", "1tnk" }
+Patrol1Group = { "jeep", "jeep", "2tnk", "2tnk" }
+Patrol2Group = { "jeep", "1tnk", "1tnk", "1tnk" }
+AlliedInfantryTypes = { "e1", "e3" }
+AlliedArmorTypes = { "jeep", "jeep", "1tnk", "1tnk", "1tnk" }
+InfAttack = { }
+ArmorAttack = { }
+
+SovietStartToBasePath = { StartPoint.Location, SovietBasePoint.Location }
+InfReinfPath = { SWRoadPoint.Location, InVillagePoint.Location }
+ArmorReinfPath = { NRoadPoint.Location, CrossroadsNorthPoint.Location }
+Patrol1Path = { NearRadarPoint.Location, ToRadarPoint.Location, InVillagePoint.Location, ToRadarPoint.Location }
+Patrol2Path = { BridgeEntrancePoint.Location, NERoadTurnPoint.Location, CrossroadsEastPoint.Location, BridgeEntrancePoint.Location }
+
+VillageCamArea = { CPos.New(68, 75),CPos.New(68, 76),CPos.New(68, 77),CPos.New(68, 78),CPos.New(68, 79), CPos.New(68, 80), CPos.New(68, 81), CPos.New(68, 82) }
+
+if Map.LobbyOption("difficulty") == "easy" then
+ ArmorReinfGreece = { "jeep", "1tnk", "1tnk" }
+else
+ ArmorReinfGreece = { "jeep", "jeep", "1tnk", "1tnk", "1tnk" }
+end
+
+AttackPaths =
+{
+ { VillageEntrancePoint },
+ { BridgeEntrancePoint, NERoadTurnPoint, CrossroadsEastPoint }
+}
+
+ReinfInf = function()
+ if Radar.IsDead or Radar.Owner ~= Greece then
+ return
+ end
+
+ Reinforcements.Reinforce(Greece, InfantryReinfGreece, InfReinfPath, 0, function(soldier)
+ soldier.Hunt()
+ end)
+end
+
+ReinfArmor = function()
+ if not Radar.IsDead and Radar.Owner == Greece then
+ RCheck = true
+ Reinforcements.Reinforce(Greece, ArmorReinfGreece, ArmorReinfPath, 0, function(soldier)
+ soldier.Hunt()
+ end)
+ end
+end
+
+BringPatrol1 = function()
+ if Radar.IsDead or Radar.Owner ~= Greece then
+ return
+ end
+
+ local units = Reinforcements.Reinforce(Greece, Patrol1Group, { SWRoadPoint.Location }, 0)
+ Utils.Do(units, function(patrols)
+ patrols.Patrol(Patrol1Path, true, 250)
+ end)
+
+ Trigger.OnAllKilled(units, function()
+ if Map.LobbyOption("difficulty") == "hard" then
+ Trigger.AfterDelay(DateTime.Minutes(4), BringPatrol1)
+ else
+ Trigger.AfterDelay(DateTime.Minutes(7), BringPatrol1)
+ end
+ end)
+end
+
+BringPatrol2 = function()
+ if Radar.IsDead or Radar.Owner ~= Greece then
+ return
+ end
+
+ local units = Reinforcements.Reinforce(Greece, Patrol2Group, { NRoadPoint.Location }, 0)
+ Utils.Do(units, function(patrols)
+ patrols.Patrol(Patrol2Path, true, 250)
+ end)
+
+ Trigger.OnAllKilled(units, function()
+ if Map.LobbyOption("difficulty") == "hard" then
+ Trigger.AfterDelay(DateTime.Minutes(4), BringPatrol2)
+ else
+ Trigger.AfterDelay(DateTime.Minutes(7), BringPatrol2)
+ end
+ end)
+end
diff --git a/mods/ura/maps/soviet-04a/soviet04a.lua b/mods/ura/maps/soviet-04a/soviet04a.lua
new file mode 100644
index 0000000..dbcffbb
--- /dev/null
+++ b/mods/ura/maps/soviet-04a/soviet04a.lua
@@ -0,0 +1,163 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+
+RunInitialActivities = function()
+ Harvester.FindResources()
+ IdlingUnits()
+ Trigger.AfterDelay(10, function()
+ BringPatrol1()
+ BringPatrol2()
+ BuildBase()
+ end)
+
+ Utils.Do(Map.NamedActors, function(actor)
+ if actor.Owner == Greece and actor.HasProperty("StartBuildingRepairs") then
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == Greece and building.Health < 3/4 * building.MaxHealth then
+ building.StartBuildingRepairs()
+ end
+ end)
+ end
+ end)
+
+ Reinforcements.Reinforce(player, SovietMCV, SovietStartToBasePath, 0, function(mcv)
+ mcv.Move(StartCamPoint.Location)
+ end)
+ Media.PlaySpeechNotification(player, "ReinforcementsArrived")
+
+ Trigger.OnKilled(Barr, function(building)
+ BaseBarracks.exists = false
+ end)
+
+ Trigger.OnKilled(Proc, function(building)
+ BaseProc.exists = false
+ end)
+
+ Trigger.OnKilled(Weap, function(building)
+ BaseWeaponsFactory.exists = false
+ end)
+
+ Trigger.OnEnteredFootprint(VillageCamArea, function(actor, id)
+ if actor.Owner == player then
+ Trigger.RemoveFootprintTrigger(id)
+
+ if not AllVillagersDead then
+ VillageCamera = Actor.Create("camera", true, { Owner = player, Location = VillagePoint.Location })
+ end
+ end
+ end)
+
+ Trigger.OnAllKilled(Village, function()
+ if VillageCamera then
+ VillageCamera.Destroy()
+ end
+ AllVillagersDead = true
+ end)
+
+ Trigger.OnAnyKilled(Civs, function()
+ Trigger.ClearAll(civ1)
+ Trigger.ClearAll(civ2)
+ Trigger.ClearAll(civ3)
+ local units = Reinforcements.Reinforce(Greece, Avengers, { SWRoadPoint.Location }, 0)
+ Utils.Do(units, function(unit)
+ unit.Hunt()
+ end)
+ end)
+
+ Runner1.Move(CrossroadsEastPoint.Location)
+ Runner2.Move(InVillagePoint.Location)
+ Tank5.Move(V2MovePoint.Location)
+ Trigger.AfterDelay(DateTime.Seconds(2), function()
+ Tank1.Stop()
+ Tank2.Stop()
+ Tank3.Stop()
+ Tank4.Stop()
+ Tank5.Stop()
+ Trigger.AfterDelay(1, function()
+ Tank1.Move(SovietBaseEntryPointNE.Location)
+ Tank2.Move(SovietBaseEntryPointW.Location)
+ Tank3.Move(SovietBaseEntryPointNE.Location)
+ Tank4.Move(SovietBaseEntryPointW.Location)
+ Tank5.Move(V2MovePoint.Location)
+ end)
+ end)
+
+ Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry)
+ Trigger.AfterDelay(DateTime.Minutes(2), ProduceArmor)
+
+ if Map.LobbyOption("difficulty") == "hard" or Map.LobbyOption("difficulty") == "normal" then
+ Trigger.AfterDelay(DateTime.Seconds(15), ReinfInf)
+ end
+ Trigger.AfterDelay(DateTime.Minutes(1), ReinfInf)
+ Trigger.AfterDelay(DateTime.Minutes(3), ReinfInf)
+ Trigger.AfterDelay(DateTime.Minutes(2), ReinfArmor)
+end
+
+Tick = function()
+ if Greece.HasNoRequiredUnits() then
+ player.MarkCompletedObjective(KillAll)
+ player.MarkCompletedObjective(KillRadar)
+ end
+
+ if player.HasNoRequiredUnits() then
+ Greece.MarkCompletedObjective(BeatUSSR)
+ end
+
+ if Greece.Resources >= Greece.ResourceCapacity * 0.75 then
+ Greece.Cash = Greece.Cash + Greece.Resources - Greece.ResourceCapacity * 0.25
+ Greece.Resources = Greece.ResourceCapacity * 0.25
+ end
+
+ if RCheck then
+ RCheck = false
+ if Map.LobbyOption("difficulty") == "hard" then
+ Trigger.AfterDelay(DateTime.Seconds(150), ReinfArmor)
+ elseif Map.LobbyOption("difficulty") == "normal" then
+ Trigger.AfterDelay(DateTime.Minutes(5), ReinfArmor)
+ else
+ Trigger.AfterDelay(DateTime.Minutes(8), ReinfArmor)
+ end
+ end
+end
+
+WorldLoaded = function()
+ player = Player.GetPlayer("USSR")
+ Greece = Player.GetPlayer("Greece")
+
+ RunInitialActivities()
+
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ KillAll = player.AddPrimaryObjective("Defeat the Allied forces.")
+ BeatUSSR = Greece.AddPrimaryObjective("Defeat the Soviet forces.")
+ KillRadar = player.AddSecondaryObjective("Destroy Allied Radar Dome to stop enemy\nreinforcements.")
+
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "Lose")
+ end)
+
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "Win")
+ end)
+
+ Trigger.OnKilled(Radar, function()
+ player.MarkCompletedObjective(KillRadar)
+ Media.PlaySpeechNotification(player, "ObjectiveMet")
+ end)
+
+ Camera.Position = StartCamPoint.CenterPosition
+end
diff --git a/mods/ura/maps/soviet-04b/map.bin b/mods/ura/maps/soviet-04b/map.bin
new file mode 100644
index 0000000..a4df51f
Binary files /dev/null and b/mods/ura/maps/soviet-04b/map.bin differ
diff --git a/mods/ura/maps/soviet-04b/map.png b/mods/ura/maps/soviet-04b/map.png
new file mode 100644
index 0000000..dc77417
Binary files /dev/null and b/mods/ura/maps/soviet-04b/map.png differ
diff --git a/mods/ura/maps/soviet-04b/map.yaml b/mods/ura/maps/soviet-04b/map.yaml
new file mode 100644
index 0000000..a9012a1
--- /dev/null
+++ b/mods/ura/maps/soviet-04b/map.yaml
@@ -0,0 +1,648 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 04b: Behind the lines
+
+Author: Westwood Studios
+
+Tileset: SNOW
+
+MapSize: 128,128
+
+Bounds: 28,45,91,49
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: england
+ PlayerReference@Spain:
+ Name: Spain
+ Faction: england
+ Allies: Greece
+ Enemies: USSR
+ PlayerReference@Greece:
+ Name: Greece
+ Faction: allies
+ Color: E2E6F5
+ Allies: Spain
+ Enemies: USSR
+ PlayerReference@USSR:
+ Name: USSR
+ Playable: True
+ AllowBots: False
+ Required: True
+ LockFaction: True
+ Faction: soviet
+ LockColor: True
+ Color: FE1100
+ LockSpawn: True
+ LockTeam: True
+ Enemies: Greece, Spain
+
+Actors:
+ Helper: proc
+ Owner: Greece
+ Location: 92,75
+ FreeActor: False
+ Actor0: sbag
+ Location: 85,50
+ Owner: Neutral
+ Actor1: sbag
+ Location: 86,50
+ Owner: Neutral
+ Actor2: sbag
+ Location: 103,50
+ Owner: Neutral
+ Actor3: sbag
+ Location: 104,50
+ Owner: Neutral
+ Actor4: sbag
+ Location: 105,50
+ Owner: Neutral
+ Actor5: sbag
+ Location: 106,50
+ Owner: Neutral
+ Actor6: sbag
+ Location: 109,50
+ Owner: Neutral
+ Actor7: sbag
+ Location: 110,50
+ Owner: Neutral
+ Actor8: sbag
+ Location: 113,50
+ Owner: Neutral
+ Actor9: sbag
+ Location: 114,50
+ Owner: Neutral
+ Actor10: sbag
+ Location: 85,51
+ Owner: Neutral
+ Actor11: sbag
+ Location: 106,51
+ Owner: Neutral
+ Actor12: sbag
+ Location: 109,51
+ Owner: Neutral
+ Actor13: sbag
+ Location: 114,51
+ Owner: Neutral
+ Actor14: sbag
+ Location: 85,52
+ Owner: Neutral
+ Actor15: sbag
+ Location: 106,52
+ Owner: Neutral
+ Actor16: sbag
+ Location: 109,52
+ Owner: Neutral
+ Actor17: sbag
+ Location: 114,52
+ Owner: Neutral
+ Actor18: sbag
+ Location: 85,53
+ Owner: Neutral
+ Actor19: sbag
+ Location: 106,53
+ Owner: Neutral
+ Actor20: sbag
+ Location: 109,53
+ Owner: Neutral
+ Actor21: sbag
+ Location: 110,53
+ Owner: Neutral
+ Actor22: sbag
+ Location: 113,53
+ Owner: Neutral
+ Actor23: sbag
+ Location: 114,53
+ Owner: Neutral
+ Actor24: sbag
+ Location: 85,54
+ Owner: Neutral
+ Actor25: sbag
+ Location: 106,54
+ Owner: Neutral
+ Actor26: sbag
+ Location: 106,55
+ Owner: Neutral
+ Actor27: sbag
+ Location: 106,56
+ Owner: Neutral
+ Actor28: sbag
+ Location: 106,57
+ Owner: Neutral
+ Actor29: sbag
+ Location: 106,58
+ Owner: Neutral
+ Actor30: sbag
+ Location: 85,59
+ Owner: Neutral
+ Actor31: sbag
+ Location: 106,59
+ Owner: Neutral
+ Actor32: sbag
+ Location: 85,60
+ Owner: Neutral
+ Actor33: sbag
+ Location: 106,60
+ Owner: Neutral
+ Actor34: sbag
+ Location: 85,61
+ Owner: Neutral
+ Actor35: sbag
+ Location: 106,61
+ Owner: Neutral
+ Actor36: sbag
+ Location: 85,62
+ Owner: Neutral
+ Actor37: sbag
+ Location: 101,62
+ Owner: Neutral
+ Actor38: sbag
+ Location: 102,62
+ Owner: Neutral
+ Actor39: sbag
+ Location: 103,62
+ Owner: Neutral
+ Actor40: sbag
+ Location: 104,62
+ Owner: Neutral
+ Actor41: sbag
+ Location: 105,62
+ Owner: Neutral
+ Actor42: sbag
+ Location: 106,62
+ Owner: Neutral
+ Actor43: sbag
+ Location: 85,63
+ Owner: Neutral
+ Actor44: sbag
+ Location: 100,63
+ Owner: Neutral
+ Actor45: sbag
+ Location: 101,63
+ Owner: Neutral
+ Actor46: sbag
+ Location: 85,64
+ Owner: Neutral
+ Actor47: sbag
+ Location: 86,64
+ Owner: Neutral
+ Actor48: sbag
+ Location: 87,64
+ Owner: Neutral
+ Actor49: sbag
+ Location: 88,64
+ Owner: Neutral
+ Actor50: sbag
+ Location: 89,64
+ Owner: Neutral
+ Actor51: sbag
+ Location: 90,64
+ Owner: Neutral
+ Actor52: sbag
+ Location: 97,64
+ Owner: Neutral
+ Actor53: sbag
+ Location: 98,64
+ Owner: Neutral
+ Actor54: sbag
+ Location: 99,64
+ Owner: Neutral
+ Actor55: sbag
+ Location: 100,64
+ Owner: Neutral
+ Actor56: t01
+ Location: 112,62
+ Owner: Neutral
+ Actor57: tc01
+ Location: 109,61
+ Owner: Neutral
+ Actor58: tc04
+ Location: 110,45
+ Owner: Neutral
+ Actor59: tc03
+ Location: 114,45
+ Owner: Neutral
+ Actor60: tc05
+ Location: 99,45
+ Owner: Neutral
+ Actor61: tc01
+ Location: 117,79
+ Owner: Neutral
+ Actor62: tc02
+ Location: 109,79
+ Owner: Neutral
+ Actor63: tc01
+ Location: 113,48
+ Owner: Neutral
+ Actor64: tc04
+ Location: 116,51
+ Owner: Neutral
+ Actor65: tc05
+ Location: 113,53
+ Owner: Neutral
+ Actor66: tc02
+ Location: 109,54
+ Owner: Neutral
+ Actor67: tc05
+ Location: 73,60
+ Owner: Neutral
+ Actor68: tc04
+ Location: 82,63
+ Owner: Neutral
+ Actor69: tc01
+ Location: 77,62
+ Owner: Neutral
+ Actor70: tc02
+ Location: 78,60
+ Owner: Neutral
+ Actor71: tc05
+ Location: 95,66
+ Owner: Neutral
+ Actor72: tc03
+ Location: 86,62
+ Owner: Neutral
+ Actor73: tc02
+ Location: 95,69
+ Owner: Neutral
+ Actor74: tc01
+ Location: 102,62
+ Owner: Neutral
+ Actor75: t11
+ Location: 107,61
+ Owner: Neutral
+ Actor76: tc04
+ Location: 82,49
+ Owner: Neutral
+ Actor77: tc04
+ Location: 50,69
+ Owner: Neutral
+ Actor78: tc01
+ Location: 58,70
+ Owner: Neutral
+ Actor79: tc01
+ Location: 84,89
+ Owner: Neutral
+ Actor80: tc04
+ Location: 94,80
+ Owner: Neutral
+ Actor81: tc05
+ Location: 93,85
+ Owner: Neutral
+ Actor82: tc05
+ Location: 29,55
+ Owner: Neutral
+ Actor83: tc03
+ Location: 39,48
+ Owner: Neutral
+ Actor84: tc02
+ Location: 29,51
+ Owner: Neutral
+ Actor85: tc01
+ Location: 36,56
+ Owner: Neutral
+ Actor86: tc04
+ Location: 42,48
+ Owner: Neutral
+ Actor87: t15
+ Location: 36,50
+ Owner: Neutral
+ Actor88: tc05
+ Location: 48,49
+ Owner: Neutral
+ Actor89: tc04
+ Location: 67,49
+ Owner: Neutral
+ Actor90: t17
+ Location: 71,71
+ Owner: Neutral
+ Actor91: tc04
+ Location: 50,78
+ Owner: Neutral
+ Actor92: tc04
+ Location: 34,65
+ Owner: Neutral
+ Actor93: tc04
+ Location: 57,91
+ Owner: Neutral
+ Actor94: tc05
+ Location: 60,91
+ Owner: Neutral
+ Actor95: tc02
+ Location: 72,90
+ Owner: Neutral
+ Actor114: pbox
+ Location: 89,65
+ Owner: Greece
+ Actor115: pbox
+ Location: 97,65
+ Owner: Greece
+ Actor116: pbox
+ Location: 84,60
+ Owner: Greece
+ Actor117: pbox
+ Location: 84,53
+ Owner: Greece
+ Actor118: pbox
+ Location: 51,71
+ Owner: Greece
+ Actor119: pbox
+ Location: 57,71
+ Owner: Greece
+ Actor125: gun
+ Location: 84,61
+ Owner: Greece
+ Facing: 192
+ Actor126: gun
+ Location: 97,63
+ Owner: Greece
+ Facing: 128
+ Actor129: 1tnk
+ Location: 56,71
+ Owner: Greece
+ Facing: 96
+ Actor130: 1tnk
+ Location: 53,71
+ Owner: Greece
+ Facing: 96
+ Actor135: mcv
+ Location: 33,90
+ Owner: USSR
+ Actor136: 1tnk
+ Location: 117,62
+ Owner: Greece
+ Facing: 96
+ Actor137: 1tnk
+ Location: 114,62
+ Owner: Greece
+ Facing: 96
+ Actor138: 2tnk
+ Location: 111,53
+ Owner: Greece
+ Facing: 128
+ Actor139: 2tnk
+ Location: 112,53
+ Owner: Greece
+ Facing: 128
+ Actor142: jeep
+ Location: 74,91
+ Owner: Greece
+ Actor143: jeep
+ Location: 48,49
+ Owner: Greece
+ Facing: 160
+ Actor144: 1tnk
+ Location: 86,90
+ Owner: Greece
+ Facing: 32
+ Actor145: 1tnk
+ Location: 96,86
+ Owner: Greece
+ Facing: 96
+ Actor146: 2tnk
+ Location: 96,47
+ Owner: Greece
+ Facing: 160
+ Actor148: e1
+ Location: 76,57
+ Owner: Greece
+ SubCell: 0
+ Actor149: e1
+ Location: 77,58
+ Owner: Greece
+ SubCell: 2
+ Actor150: e1
+ Location: 76,58
+ Owner: Greece
+ SubCell: 0
+ Actor151: e3
+ Location: 73,58
+ Owner: Greece
+ SubCell: 0
+ Actor152: e3
+ Location: 72,57
+ Owner: Greece
+ SubCell: 4
+ Actor153: e3
+ Location: 72,58
+ Owner: Greece
+ SubCell: 2
+ Actor154: e3
+ Location: 95,80
+ Owner: Greece
+ SubCell: 3
+ Actor155: e3
+ Location: 96,80
+ Owner: Greece
+ SubCell: 0
+ Actor160: dog
+ Location: 33,86
+ Owner: USSR
+ SubCell: 1
+ Actor161: dog
+ Location: 34,86
+ Owner: USSR
+ SubCell: 1
+ Actor162: dog
+ Location: 33,85
+ Owner: USSR
+ SubCell: 1
+ Actor163: dog
+ Location: 34,85
+ Owner: USSR
+ SubCell: 1
+ Actor164: e3
+ Location: 102,53
+ Owner: Greece
+ SubCell: 1
+ Actor165: e3
+ Location: 95,52
+ Owner: Greece
+ SubCell: 0
+ Actor166: e3
+ Location: 102,57
+ Owner: Greece
+ SubCell: 0
+ Actor167: mine
+ Location: 37,55
+ Owner: Neutral
+ Actor168: mine
+ Location: 52,88
+ Owner: Neutral
+ Actor169: mine
+ Location: 91,87
+ Owner: Neutral
+ Radar: dome
+ Location: 111,50
+ Owner: Greece
+ Pbox1: pbox
+ Location: 111,80
+ Owner: Greece
+ Pbox2: pbox
+ Location: 116,80
+ Owner: Greece
+ NavyYard: syrd
+ Location: 78,65
+ Owner: Greece
+ CYard: fact
+ Location: 103,51
+ Owner: Greece
+ Proc: proc
+ Location: 99,54
+ Owner: Greece
+ FreeActor: False
+ Silo1: silo
+ Location: 104,55
+ Owner: Greece
+ Silo2: silo
+ Location: 104,56
+ Owner: Greece
+ Silo3: silo
+ Location: 105,56
+ Owner: Greece
+ Silo4: silo
+ Location: 105,55
+ Owner: Greece
+ Powr: powr
+ Location: 100,50
+ Owner: Greece
+ Powr2: powr
+ Location: 88,61
+ Owner: Greece
+ Powr3: powr
+ Location: 96,50
+ Owner: Greece
+ Powr4: powr
+ Location: 86,52
+ Owner: Greece
+ Powr5: powr
+ Location: 89,51
+ Owner: Greece
+ Powr6: powr
+ Location: 98,50
+ Owner: Greece
+ Barr: tent
+ Location: 96,54
+ Owner: Greece
+ Gap1: gap
+ Location: 86,51
+ Owner: Greece
+ Gap2: gap
+ Location: 90,63
+ Owner: Greece
+ Weap: weap
+ Location: 92,50
+ Owner: Greece
+ village1: v01
+ Location: 37,48
+ Owner: Spain
+ village2: v03
+ Location: 42,47
+ Owner: Spain
+ village3: v05
+ Location: 44,50
+ Owner: Spain
+ village4: v06
+ Location: 40,50
+ Owner: Spain
+ village5: v07
+ Location: 36,52
+ Owner: Spain
+ Harvester: harv
+ Location: 93,78
+ Owner: Greece
+ Facing: 128
+ Tank1: 3tnk
+ Location: 32,87
+ Owner: USSR
+ Tank2: 3tnk
+ Location: 34,87
+ Owner: USSR
+ Tank3: v2rl
+ Location: 32,88
+ Owner: USSR
+ Tank4: v2rl
+ Location: 34,88
+ Owner: USSR
+ civ1: c1
+ Location: 41,53
+ Owner: Spain
+ Facing: 160
+ SubCell: 0
+ civ2: c2
+ Location: 47,49
+ Owner: Spain
+ Facing: 224
+ SubCell: 1
+ civ3: c3
+ Location: 39,51
+ Owner: Spain
+ SubCell: 2
+ civ4: c4
+ Location: 46,52
+ Owner: Spain
+ Facing: 96
+ SubCell: 4
+ Guard1: 1tnk
+ Location: 105,59
+ Owner: Greece
+ Facing: 64
+ Guard2: 1tnk
+ Location: 105,60
+ Owner: Greece
+ Facing: 64
+ Guard3: 2tnk
+ Location: 105,61
+ Owner: Greece
+ Facing: 64
+ NRoadPoint: waypoint
+ Location: 75,45
+ Owner: Neutral
+ CrossroadsPoint: waypoint
+ Location: 74,57
+ Owner: Neutral
+ VillagePoint: waypoint
+ Location: 40,58
+ Owner: Neutral
+ ToVillageRoadPoint: waypoint
+ Location: 52,57
+ Owner: Neutral
+ InBasePoint: waypoint
+ Location: 94,57
+ Owner: Neutral
+ OrefieldSouthPoint: waypoint
+ Location: 91,84
+ Owner: Neutral
+ ToBridgePoint: waypoint
+ Location: 66,66
+ Owner: Neutral
+ ToRadarBridgePoint: waypoint
+ Location: 107,88
+ Owner: Neutral
+ IslandPoint: waypoint
+ Location: 113,75
+ Owner: Neutral
+ EntranceSouthPoint: waypoint
+ Location: 93,67
+ Owner: Neutral
+ GreeceCYard: waypoint
+ Location: 104,52
+ Owner: Neutral
+ VillageCamPoint: waypoint
+ Location: 43,52
+ Owner: Neutral
+ StartCamPoint: waypoint
+ Location: 33,88
+ Owner: Neutral
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
diff --git a/mods/ura/maps/soviet-04b/rules.yaml b/mods/ura/maps/soviet-04b/rules.yaml
new file mode 100644
index 0000000..da697fa
--- /dev/null
+++ b/mods/ura/maps/soviet-04b/rules.yaml
@@ -0,0 +1,87 @@
+Player:
+ PlayerResources:
+ DefaultCash: 5000
+
+World:
+ LuaScript:
+ Scripts: soviet04b.lua, soviet04b-AI.lua, soviet04b-reinforcements_teams.lua
+ MissionData:
+ Briefing: The Allied base in this region is proving to be problematic.\n\nYour mission is to take it out so that we can begin to move forces through this area.\n\nAs long as they have communications they will be able to call upon heavy reinforcements.\n\nCrush their communications, and they should be easier to remove.
+ BriefingVideo: soviet4.vqa
+ StartVideo: sovmcv.vqa
+ WinVideo: radrraid.vqa
+ LossVideo: allymorf.vqa
+ MapOptions:
+ TechLevel: medium
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ hard: Hard
+ Default: easy
+
+AFLD:
+ ParatroopersPower@paratroopers:
+ DropItems: E1,E1,E1,E2,E2
+
+TSLA:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+HPAD:
+ Buildable:
+ Prerequisites: ~disabled
+
+APWR:
+ Buildable:
+ Prerequisites: ~disabled
+
+BRIK:
+ Buildable:
+ Prerequisites: ~disabled
+
+E3:
+ Buildable:
+ Prerequisites: ~tent
+
+E4:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPY:
+ Buildable:
+ Prerequisites: ~disabled
+
+MECH:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+FTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+TRUK:
+ Buildable:
+ Prerequisites: ~disabled
+
+APC:
+ Buildable:
+ Prerequisites: ~disabled
+
+AGUN:
+ Buildable:
+ Prerequisites: ~disabled
diff --git a/mods/ura/maps/soviet-04b/soviet04b-AI.lua b/mods/ura/maps/soviet-04b/soviet04b-AI.lua
new file mode 100644
index 0000000..1fd6bc7
--- /dev/null
+++ b/mods/ura/maps/soviet-04b/soviet04b-AI.lua
@@ -0,0 +1,118 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
+
+IdlingUnits = function()
+ local lazyUnits = Greece.GetGroundAttackers()
+
+ Utils.Do(lazyUnits, function(unit)
+ Trigger.OnDamaged(unit, function()
+ Trigger.ClearAll(unit)
+ Trigger.AfterDelay(0, function() IdleHunt(unit) end)
+ end)
+ end)
+end
+
+BasePower = { type = "powr", pos = CVec.New(-4, -2), cost = 300, exists = true }
+BaseBarracks = { type = "tent", pos = CVec.New(-8, 1), cost = 400, exists = true }
+BaseProc = { type = "proc", pos = CVec.New(-5, 1), cost = 1400, exists = true }
+BaseWeaponsFactory = { type = "weap", pos = CVec.New(-12, -1), cost = 2000, exists = true }
+
+BaseBuildings = { BasePower, BaseBarracks, BaseProc, BaseWeaponsFactory }
+
+BuildBase = function()
+ for i,v in ipairs(BaseBuildings) do
+ if not v.exists then
+ BuildBuilding(v)
+ return
+ end
+ end
+
+ Trigger.AfterDelay(DateTime.Seconds(10), BuildBase)
+end
+
+BuildBuilding = function(building)
+ Trigger.AfterDelay(Actor.BuildTime(building.type), function()
+ if CYard.IsDead or CYard.Owner ~= Greece then
+ return
+ elseif Harvester.IsDead and Greece.Resources <= 299 then
+ return
+ end
+
+ local actor = Actor.Create(building.type, true, { Owner = Greece, Location = GreeceCYard.Location + building.pos })
+ Greece.Cash = Greece.Cash - building.cost
+
+ building.exists = true
+ Trigger.OnKilled(actor, function() building.exists = false end)
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == Greece and building.Health < building.MaxHealth * 3/4 then
+ building.StartBuildingRepairs()
+ end
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(10), BuildBase)
+ end)
+end
+
+ProduceInfantry = function()
+ if not BaseBarracks.exists then
+ return
+ elseif Harvester.IsDead and Greece.Resources <= 299 then
+ return
+ end
+
+ local delay = Utils.RandomInteger(DateTime.Seconds(3), DateTime.Seconds(9))
+ local toBuild = { Utils.Random(AlliedInfantryTypes) }
+ local Path = Utils.Random(AttackPaths)
+ Greece.Build(toBuild, function(unit)
+ InfAttack[#InfAttack + 1] = unit[1]
+
+ if #InfAttack >= 10 then
+ SendUnits(InfAttack, Path)
+ InfAttack = { }
+ Trigger.AfterDelay(DateTime.Minutes(2), ProduceInfantry)
+ else
+ Trigger.AfterDelay(delay, ProduceInfantry)
+ end
+ end)
+end
+
+ProduceArmor = function()
+ if not BaseWeaponsFactory.exists then
+ return
+ elseif Harvester.IsDead and Greece.Resources <= 599 then
+ return
+ end
+
+ local delay = Utils.RandomInteger(DateTime.Seconds(12), DateTime.Seconds(17))
+ local toBuild = { Utils.Random(AlliedArmorTypes) }
+ local Path = Utils.Random(AttackPaths)
+ Greece.Build(toBuild, function(unit)
+ ArmorAttack[#ArmorAttack + 1] = unit[1]
+
+ if #ArmorAttack >= 6 then
+ SendUnits(ArmorAttack, Path)
+ ArmorAttack = { }
+ Trigger.AfterDelay(DateTime.Minutes(3), ProduceArmor)
+ else
+ Trigger.AfterDelay(delay, ProduceArmor)
+ end
+ end)
+end
+
+SendUnits = function(units, waypoints)
+ Utils.Do(units, function(unit)
+ if not unit.IsDead then
+ Utils.Do(waypoints, function(waypoint)
+ unit.AttackMove(waypoint.Location)
+ end)
+ unit.Hunt()
+ end
+ end)
+end
diff --git a/mods/ura/maps/soviet-04b/soviet04b-reinforcements_teams.lua b/mods/ura/maps/soviet-04b/soviet04b-reinforcements_teams.lua
new file mode 100644
index 0000000..03ae034
--- /dev/null
+++ b/mods/ura/maps/soviet-04b/soviet04b-reinforcements_teams.lua
@@ -0,0 +1,96 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+Civs = { civ1, civ2, civ3, civ4 }
+Village = { civ1, civ3, civ4, village1, village3 }
+Guards = { Guard1, Guard2, Guard3 }
+SovietMCV = { "mcv" }
+InfantryReinfGreece = { "e1", "e1", "e1", "e1", "e1" }
+Avengers = { "jeep", "1tnk", "2tnk", "2tnk", "1tnk" }
+Patrol1Group = { "jeep", "jeep", "2tnk", "2tnk" }
+Patrol2Group = { "jeep", "1tnk", "1tnk", "1tnk" }
+AlliedInfantryTypes = { "e1", "e3" }
+AlliedArmorTypes = { "jeep", "jeep", "1tnk", "1tnk", "1tnk" }
+InfAttack = { }
+ArmorAttack = { }
+
+InfReinfPath = { NRoadPoint.Location, CrossroadsPoint.Location, ToVillageRoadPoint.Location, VillagePoint.Location }
+Patrol1Path = { ToVillageRoadPoint.Location, ToBridgePoint.Location, InBasePoint.Location }
+Patrol2Path = { EntranceSouthPoint.Location, ToRadarBridgePoint.Location, IslandPoint.Location, ToRadarBridgePoint.Location }
+
+VillageCamArea = { CPos.New(37, 58),CPos.New(37, 59),CPos.New(37, 60),CPos.New(38, 60),CPos.New(39, 60), CPos.New(40, 60), CPos.New(41, 60), CPos.New(35, 57), CPos.New(34, 57), CPos.New(33, 57), CPos.New(32, 57) }
+
+if Map.LobbyOption("difficulty") == "easy" then
+ ArmorReinfGreece = { "jeep", "1tnk", "1tnk" }
+else
+ ArmorReinfGreece = { "jeep", "jeep", "1tnk", "1tnk", "1tnk" }
+end
+
+AttackPaths =
+{
+ { CrossroadsPoint, ToVillageRoadPoint, VillagePoint },
+ { EntranceSouthPoint, OrefieldSouthPoint },
+ { CrossroadsPoint, ToBridgePoint }
+}
+
+ReinfInf = function()
+ if Radar.IsDead or Radar.Owner ~= Greece then
+ return
+ end
+
+ Reinforcements.Reinforce(Greece, InfantryReinfGreece, InfReinfPath, 0, function(soldier)
+ soldier.Hunt()
+ end)
+end
+
+ReinfArmor = function()
+ if not Radar.IsDead and Radar.Owner == Greece then
+ RCheck = true
+ Reinforcements.Reinforce(Greece, ArmorReinfGreece, InfReinfPath, 0, function(soldier)
+ soldier.Hunt()
+ end)
+ end
+end
+
+BringPatrol1 = function()
+ if Radar.IsDead or Radar.Owner ~= Greece then
+ return
+ end
+
+ local units = Reinforcements.Reinforce(Greece, Patrol1Group, { NRoadPoint.Location }, 0)
+ Utils.Do(units, function(patrols)
+ patrols.Patrol(Patrol1Path, true, 250)
+ end)
+
+ Trigger.OnAllKilled(units, function()
+ if Map.LobbyOption("difficulty") == "hard" then
+ Trigger.AfterDelay(DateTime.Minutes(4), BringPatrol1)
+ else
+ Trigger.AfterDelay(DateTime.Minutes(7), BringPatrol1)
+ end
+ end)
+end
+
+BringPatrol2 = function()
+ if Radar.IsDead or Radar.Owner ~= Greece then
+ return
+ end
+
+ local units = Reinforcements.Reinforce(Greece, Patrol2Group, { NRoadPoint.Location }, 0)
+ Utils.Do(units, function(patrols)
+ patrols.Patrol(Patrol2Path, true, 250)
+ end)
+
+ Trigger.OnAllKilled(units, function()
+ if Map.LobbyOption("difficulty") == "hard" then
+ Trigger.AfterDelay(DateTime.Minutes(4), BringPatrol2)
+ else
+ Trigger.AfterDelay(DateTime.Minutes(7), BringPatrol2)
+ end
+ end)
+end
diff --git a/mods/ura/maps/soviet-04b/soviet04b.lua b/mods/ura/maps/soviet-04b/soviet04b.lua
new file mode 100644
index 0000000..0d5d4d9
--- /dev/null
+++ b/mods/ura/maps/soviet-04b/soviet04b.lua
@@ -0,0 +1,156 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+
+RunInitialActivities = function()
+ Harvester.FindResources()
+ Helper.Destroy()
+ IdlingUnits()
+ Trigger.AfterDelay(DateTime.Seconds(1), function()
+ BringPatrol1()
+ Trigger.AfterDelay(DateTime.Seconds(5), function()
+ BringPatrol2()
+ end)
+ BuildBase()
+ end)
+
+ Utils.Do(Map.NamedActors, function(actor)
+ if actor.Owner == Greece and actor.HasProperty("StartBuildingRepairs") then
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == Greece and building.Health < 3/4 * building.MaxHealth then
+ building.StartBuildingRepairs()
+ end
+ end)
+ end
+ end)
+
+ Trigger.OnKilled(Powr, function(building)
+ BasePower.exists = false
+ end)
+
+ Trigger.OnKilled(Barr, function(building)
+ BaseBarracks.exists = false
+ end)
+
+ Trigger.OnKilled(Proc, function(building)
+ BaseProc.exists = false
+ end)
+
+ Trigger.OnKilled(Weap, function(building)
+ BaseWeaponsFactory.exists = false
+ end)
+
+ Trigger.OnEnteredFootprint(VillageCamArea, function(actor, id)
+ if actor.Owner == player then
+ Trigger.RemoveFootprintTrigger(id)
+
+ if not AllVillagersDead then
+ VillageCamera = Actor.Create("camera", true, { Owner = player, Location = VillagePoint.Location })
+ end
+ end
+ end)
+
+ Trigger.OnAllKilled(Village, function()
+ if VillageCamera then
+ VillageCamera.Destroy()
+ end
+ AllVillagersDead = true
+ end)
+
+ Trigger.OnAnyKilled(Civs, function()
+ Trigger.ClearAll(civ1)
+ Trigger.ClearAll(civ2)
+ Trigger.ClearAll(civ3)
+ Trigger.ClearAll(civ4)
+ local units = Reinforcements.Reinforce(Greece, Avengers, { NRoadPoint.Location }, 0)
+ Utils.Do(units, function(unit)
+ unit.Hunt()
+ end)
+ end)
+
+ Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry)
+ Trigger.AfterDelay(DateTime.Minutes(2), ProduceArmor)
+
+ if Map.LobbyOption("difficulty") == "hard" or Map.LobbyOption("difficulty") == "normal" then
+ Trigger.AfterDelay(DateTime.Seconds(5), ReinfInf)
+ end
+ Trigger.AfterDelay(DateTime.Minutes(1), ReinfInf)
+ Trigger.AfterDelay(DateTime.Minutes(3), ReinfInf)
+ Trigger.AfterDelay(DateTime.Minutes(2), ReinfArmor)
+end
+
+Tick = function()
+ if Greece.HasNoRequiredUnits() then
+ player.MarkCompletedObjective(KillAll)
+ player.MarkCompletedObjective(KillRadar)
+ end
+
+ if player.HasNoRequiredUnits() then
+ Greece.MarkCompletedObjective(BeatUSSR)
+ end
+
+ if Greece.Resources >= Greece.ResourceCapacity * 0.75 then
+ Greece.Cash = Greece.Cash + Greece.Resources - Greece.ResourceCapacity * 0.25
+ Greece.Resources = Greece.ResourceCapacity * 0.25
+ end
+
+ if RCheck then
+ RCheck = false
+ if Map.LobbyOption("difficulty") == "hard" then
+ Trigger.AfterDelay(DateTime.Seconds(150), ReinfArmor)
+ elseif Map.LobbyOption("difficulty") == "normal" then
+ Trigger.AfterDelay(DateTime.Minutes(5), ReinfArmor)
+ else
+ Trigger.AfterDelay(DateTime.Minutes(8), ReinfArmor)
+ end
+ end
+end
+
+WorldLoaded = function()
+ player = Player.GetPlayer("USSR")
+ Greece = Player.GetPlayer("Greece")
+
+ RunInitialActivities()
+
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ KillAll = player.AddPrimaryObjective("Defeat the Allied forces.")
+ BeatUSSR = Greece.AddPrimaryObjective("Defeat the Soviet forces.")
+ KillRadar = player.AddSecondaryObjective("Destroy Allied Radar Dome to stop enemy\nreinforcements.")
+
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "Lose")
+ end)
+
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "Win")
+ end)
+
+ Trigger.OnKilled(Radar, function()
+ player.MarkCompletedObjective(KillRadar)
+ Media.PlaySpeechNotification(player, "ObjectiveMet")
+ end)
+
+ Trigger.OnDamaged(Harvester, function()
+ Utils.Do(Guards, function(unit)
+ if not unit.IsDead and not Harvester.IsDead then
+ unit.AttackMove(Harvester.Location)
+ end
+ end)
+ end)
+
+ Camera.Position = StartCamPoint.CenterPosition
+end
diff --git a/mods/ura/maps/soviet-05/map.bin b/mods/ura/maps/soviet-05/map.bin
new file mode 100644
index 0000000..68e748c
Binary files /dev/null and b/mods/ura/maps/soviet-05/map.bin differ
diff --git a/mods/ura/maps/soviet-05/map.png b/mods/ura/maps/soviet-05/map.png
new file mode 100644
index 0000000..dc77417
Binary files /dev/null and b/mods/ura/maps/soviet-05/map.png differ
diff --git a/mods/ura/maps/soviet-05/map.yaml b/mods/ura/maps/soviet-05/map.yaml
new file mode 100644
index 0000000..5195653
--- /dev/null
+++ b/mods/ura/maps/soviet-05/map.yaml
@@ -0,0 +1,605 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 05: Distant Thunder
+
+Author: Westwood Studios
+
+Tileset: TEMPERAT
+
+MapSize: 128,128
+
+Bounds: 20,42,90,50
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: england
+ PlayerReference@Greece:
+ Name: Greece
+ Faction: allies
+ Color: E2E6F5
+ Allies: GoodGuy, France
+ Enemies: USSR
+ PlayerReference@USSR:
+ Name: USSR
+ Faction: soviet
+ Playable: True
+ AllowBots: False
+ Required: True
+ LockFaction: True
+ LockColor: True
+ Color: FE1100
+ LockSpawn: True
+ LockTeam: True
+ Enemies: Greece, GoodGuy, France
+ PlayerReference@GoodGuy:
+ Name: GoodGuy
+ Faction: allies
+ Color: E2E6F5
+ Allies: Greece, France
+ Enemies: USSR
+ PlayerReference@France:
+ Name: France
+ Faction: allies
+ Color: 0CF7B2
+ Allies: Greece, GoodGuy
+ Enemies: USSR
+
+Actors:
+ Actor0: sbag
+ Location: 60,42
+ Owner: Neutral
+ Actor1: sbag
+ Location: 61,42
+ Owner: Neutral
+ Actor2: sbag
+ Location: 60,43
+ Owner: Neutral
+ Actor3: sbag
+ Location: 60,44
+ Owner: Neutral
+ Actor4: sbag
+ Location: 60,48
+ Owner: Neutral
+ Actor5: sbag
+ Location: 60,49
+ Owner: Neutral
+ Actor6: sbag
+ Location: 60,50
+ Owner: Neutral
+ Actor7: sbag
+ Location: 61,50
+ Owner: Neutral
+ Actor8: tc01
+ Location: 33,41
+ Owner: Neutral
+ Actor9: tc03
+ Location: 20,52
+ Owner: Neutral
+ Actor10: tc02
+ Location: 24,62
+ Owner: Neutral
+ Actor11: t06
+ Location: 62,84
+ Owner: Neutral
+ Actor12: t07
+ Location: 85,78
+ Owner: Neutral
+ Actor13: t14
+ Location: 84,77
+ Owner: Neutral
+ Actor14: t12
+ Location: 95,77
+ Owner: Neutral
+ Actor15: t07
+ Location: 78,77
+ Owner: Neutral
+ Actor16: t02
+ Location: 81,74
+ Owner: Neutral
+ Actor17: t16
+ Location: 46,79
+ Owner: Neutral
+ Actor18: tc03
+ Location: 47,78
+ Owner: Neutral
+ Actor19: t10
+ Location: 45,78
+ Owner: Neutral
+ Actor20: t14
+ Location: 45,77
+ Owner: Neutral
+ Actor21: t17
+ Location: 45,76
+ Owner: Neutral
+ Actor22: t08
+ Location: 60,83
+ Owner: Neutral
+ Actor23: t17
+ Location: 81,71
+ Owner: Neutral
+ Actor24: tc02
+ Location: 45,48
+ Owner: Neutral
+ Actor25: tc01
+ Location: 32,90
+ Owner: Neutral
+ Actor26: tc03
+ Location: 33,89
+ Owner: Neutral
+ Actor27: tc05
+ Location: 20,83
+ Owner: Neutral
+ Actor28: t11
+ Location: 25,88
+ Owner: Neutral
+ Actor29: t17
+ Location: 20,90
+ Owner: Neutral
+ Actor30: tc01
+ Location: 24,90
+ Owner: Neutral
+ Actor31: tc04
+ Location: 23,89
+ Owner: Neutral
+ Actor32: tc05
+ Location: 20,89
+ Owner: Neutral
+ Actor33: t01
+ Location: 28,47
+ Owner: Neutral
+ Actor34: t05
+ Location: 24,42
+ Owner: Neutral
+ Actor35: tc04
+ Location: 36,54
+ Owner: Neutral
+ Actor36: tc01
+ Location: 36,51
+ Owner: Neutral
+ Actor37: tc02
+ Location: 61,42
+ Owner: Neutral
+ Actor38: tc02
+ Location: 63,70
+ Owner: Neutral
+ Actor39: t12
+ Location: 73,79
+ Owner: Neutral
+ Actor40: tc03
+ Location: 82,64
+ Owner: Neutral
+ Actor41: t03
+ Location: 46,58
+ Owner: Neutral
+ Actor42: tc05
+ Location: 57,50
+ Owner: Neutral
+ Actor43: t16
+ Location: 59,41
+ Owner: Neutral
+ Actor44: tc01
+ Location: 56,51
+ Owner: Neutral
+ Actor45: t11
+ Location: 47,48
+ Owner: Neutral
+ Actor46: t05
+ Location: 51,48
+ Owner: Neutral
+ Actor47: mine
+ Location: 27,48
+ Owner: Neutral
+ Actor48: t01
+ Location: 71,81
+ Owner: Neutral
+ Actor49: t02
+ Location: 71,82
+ Owner: Neutral
+ Actor50: t02
+ Location: 81,61
+ Owner: Neutral
+ Actor51: t03
+ Location: 80,57
+ Owner: Neutral
+ Actor52: t05
+ Location: 80,58
+ Owner: Neutral
+ Actor53: tc01
+ Location: 78,61
+ Owner: Neutral
+ Actor54: agun
+ Location: 73,46
+ Owner: Greece
+ Actor55: gun
+ Location: 69,49
+ Owner: Greece
+ Facing: 32
+ Radar: dome
+ Location: 70,45
+ Owner: France
+ Actor57: fact
+ Location: 67,42
+ Owner: Greece
+ Actor58: powr
+ Location: 74,47
+ Owner: Greece
+ Actor59: brl3
+ Location: 66,42
+ Owner: Greece
+ Actor60: brl3
+ Location: 71,42
+ Owner: Greece
+ Actor61: brl3
+ Location: 71,43
+ Owner: Greece
+ Actor62: brl3
+ Location: 76,43
+ Owner: Greece
+ Actor63: barl
+ Location: 71,44
+ Owner: Greece
+ Actor64: brl3
+ Location: 73,47
+ Owner: Greece
+ Actor65: barl
+ Location: 66,43
+ Owner: Greece
+ Actor66: brl3
+ Location: 70,42
+ Owner: Greece
+ Actor67: gun
+ Location: 61,44
+ Owner: Greece
+ Facing: 192
+ Actor68: gun
+ Location: 61,48
+ Owner: Greece
+ Facing: 160
+ Actor69: agun
+ Location: 68,47
+ Owner: Greece
+ Actor70: proc
+ Location: 63,42
+ Owner: Greece
+ FreeActor: False
+ Barr: tent
+ Location: 63,47
+ Owner: Greece
+ Navalyard: syrd
+ Location: 78,48
+ Owner: Greece
+ Actor73: powr
+ Location: 74,42
+ Owner: Greece
+ Actor74: powr
+ Location: 72,42
+ Owner: Greece
+ Actor75: powr
+ Location: 72,48
+ Owner: Greece
+ startmcv: mcv
+ Location: 22,80
+ Owner: USSR
+ Facing: 192
+ Actor77: 2tnk
+ Location: 59,43
+ Owner: Greece
+ Facing: 32
+ TurretFacing: 32
+ Actor78: 1tnk
+ Location: 58,48
+ Owner: Greece
+ Facing: 32
+ TurretFacing: 32
+ Actor79: 1tnk
+ Location: 57,44
+ Owner: Greece
+ Facing: 96
+ TurretFacing: 96
+ Actor80: 1tnk
+ Location: 67,49
+ Owner: Greece
+ Facing: 224
+ TurretFacing: 224
+ Harvester: harv
+ Location: 45,45
+ Owner: Greece
+ Facing: 96
+ mcvGG: mcv
+ Location: 75,46
+ Owner: GoodGuy
+ Facing: 192
+ Actor83: 1tnk
+ Location: 43,47
+ Owner: Greece
+ Facing: 224
+ TurretFacing: 64
+ Actor84: e1
+ Location: 61,45
+ Owner: Greece
+ Facing: 160
+ SubCell: 1
+ Actor85: e1
+ Location: 62,46
+ Owner: Greece
+ Facing: 160
+ SubCell: 0
+ Actor86: e1
+ Location: 61,49
+ Owner: Greece
+ Facing: 224
+ SubCell: 2
+ Runner1: e1
+ Location: 25,75
+ Owner: GoodGuy
+ SubCell: 0
+ Runner2: e1
+ Location: 25,76
+ Owner: GoodGuy
+ SubCell: 2
+ Runner3: e1
+ Location: 26,75
+ Owner: GoodGuy
+ SubCell: 0
+ Actor90: e1
+ Location: 64,49
+ Owner: Greece
+ Facing: 96
+ SubCell: 2
+ Actor91: e3
+ Location: 66,44
+ Owner: Greece
+ Facing: 160
+ SubCell: 4
+ Actor92: e3
+ Location: 63,49
+ Owner: Greece
+ Facing: 160
+ SubCell: 4
+ Actor93: e1
+ Location: 58,46
+ Owner: Greece
+ Facing: 160
+ SubCell: 2
+ Actor94: e1
+ Location: 60,48
+ Owner: Greece
+ SubCell: 2
+ Actor96: e3
+ Location: 41,45
+ Owner: Greece
+ SubCell: 4
+ Facing: 64
+ TurretFacing: 128
+ Actor97: e3
+ Location: 41,44
+ Owner: Greece
+ SubCell: 1
+ Facing: 96
+ TurretFacing: 160
+ Actor98: e3
+ Location: 40,45
+ Owner: Greece
+ SubCell: 4
+ Facing: 64
+ TurretFacing: 160
+ Actor99: e3
+ Location: 40,43
+ Owner: Greece
+ SubCell: 1
+ Facing: 96
+ TurretFacing: 160
+ Actor100: e1
+ Location: 39,45
+ Owner: Greece
+ Facing: 160
+ SubCell: 0
+ Actor101: e1
+ Location: 39,44
+ Owner: Greece
+ SubCell: 1
+ Facing: 96
+ TurretFacing: 192
+ Minelayer: mnly
+ Owner: GoodGuy
+ Location: 67,45
+ Facing: 92
+ Actor166: pt
+ Owner: GoodGuy
+ Location: 67,54
+ Facing: 92
+ TurretFacing: 92
+ Actor167: pt
+ Owner: GoodGuy
+ Location: 67,59
+ Facing: 60
+ TurretFacing: 60
+ Actor168: pt
+ Owner: GoodGuy
+ Location: 83,56
+ Facing: 28
+ TurretFacing: 28
+ Actor169: pt
+ Owner: GoodGuy
+ Location: 83,51
+ Facing: 92
+ TurretFacing: 92
+ mcvtransport: lst
+ Owner: GoodGuy
+ Location: 80,45
+ Facing: 92
+ Actor171: dd
+ Owner: GoodGuy
+ Location: 91,51
+ Facing: 28
+ TurretFacing: 28
+ Actor172: dd
+ Owner: GoodGuy
+ Location: 84,44
+ Facing: 92
+ TurretFacing: 92
+ Actor173: dd
+ Owner: GoodGuy
+ Location: 96,44
+ Facing: 92
+ TurretFacing: 92
+ Actor174: pt
+ Owner: GoodGuy
+ Location: 96,51
+ Facing: 92
+ TurretFacing: 92
+ Actor175: dd
+ Owner: GoodGuy
+ Location: 101,49
+ Facing: 60
+ TurretFacing: 60
+ Actor176: pt
+ Owner: GoodGuy
+ Location: 107,70
+ Facing: 188
+ TurretFacing: 188
+ Actor177: pt
+ Owner: GoodGuy
+ Location: 58,89
+ Facing: 60
+ TurretFacing: 60
+ Helper: proc
+ Owner: Greece
+ Location: 42,42
+ FreeActor: False
+ Actor181: mine
+ Owner: Neutral
+ Location: 63,65
+ Actor182: mine
+ Owner: Neutral
+ Location: 81,78
+ StartPoint: waypoint
+ Location: 20,80
+ Owner: Neutral
+ SovietBasePoint: waypoint
+ Location: 24,77
+ Owner: Neutral
+ MCVStartMovePoint: waypoint
+ Location: 28,76
+ Owner: Neutral
+ CrossroadPoint: waypoint
+ Location: 52,46
+ Owner: Neutral
+ GreeceBaseEPoint: waypoint
+ Location: 60,46
+ Owner: Neutral
+ NReinfPathPoint1: waypoint
+ Location: 107,68
+ Owner: Neutral
+ SReinfPathPoint1: waypoint
+ Location: 100,81
+ Owner: Neutral
+ SReinfPathPoint2: waypoint
+ Location: 83,90
+ Owner: Neutral
+ NearExpPoint: waypoint
+ Location: 94,49
+ Owner: Neutral
+ CoastGuardPoint: waypoint
+ Location: 96,56
+ Owner: Neutral
+ MCVDeploy: waypoint
+ Location: 96,60
+ Owner: Neutral
+ ReinfSouthPoint: waypoint
+ Location: 44,91
+ Owner: Neutral
+ WIslandPoint: waypoint
+ Location: 41,61
+ Owner: Neutral
+ NearDockPoint: waypoint
+ Location: 85,46
+ Owner: Neutral
+ SReinfPathPoint4: waypoint
+ Location: 58,88
+ Owner: Neutral
+ PatrolPoint1: waypoint
+ Location: 91,69
+ Owner: Neutral
+ PatrolPoint4: waypoint
+ Location: 73,70
+ Owner: Neutral
+ SReinfPathPoint3: waypoint
+ Location: 69,90
+ Owner: Neutral
+ PatrolPoint2: waypoint
+ Location: 89,80
+ Owner: Neutral
+ BetweenBasesPoint: waypoint
+ Location: 78,73
+ Owner: Neutral
+ PatrolPoint3: waypoint
+ Location: 78,80
+ Owner: Neutral
+ USSRExpansionPoint: waypoint
+ Location: 56,77
+ Owner: Neutral
+ PrepGGArmyPoint: waypoint
+ Location: 71,74
+ Owner: Neutral
+ ReinfNorthPoint: waypoint
+ Location: 81,42
+ Owner: Neutral
+ ReinfEastPoint: waypoint
+ Location: 109,75
+ Owner: Neutral
+ NWOrefieldPoint: waypoint
+ Location: 32,49
+ Owner: Neutral
+ AtUSSRBasePoint: waypoint
+ Location: 27,61
+ Owner: Neutral
+ DDAttackPoint: waypoint
+ Location: 40,78
+ Owner: Neutral
+ RunnerPoint: waypoint
+ Location: 28,50
+ Owner: Neutral
+ USSRlstPoint: waypoint
+ Location: 48,83
+ Owner: Neutral
+ CFBPoint: waypoint
+ Location: 42,90
+ Owner: Neutral
+ GreeceBasePoint: waypoint
+ Location: 69,46
+ Owner: Neutral
+ ReinfRoadPoint: waypoint
+ Location: 52,42
+ Owner: Neutral
+ EIslandPoint: waypoint
+ Location: 51,58
+ Owner: Neutral
+ mcvGGLoadPoint: waypoint
+ Location: 77,45
+ Owner: Neutral
+ lstBeachPoint: waypoint
+ Location: 78,45
+ Owner: Neutral
+ GGUnloadPoint: waypoint
+ Location: 94,54
+ Owner: Neutral
+ ParaPoint: waypoint
+ Location: 29,75
+ Owner: Neutral
+ StartCamPoint: waypoint
+ Location: 21,80
+ Owner: Neutral
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
diff --git a/mods/ura/maps/soviet-05/rules.yaml b/mods/ura/maps/soviet-05/rules.yaml
new file mode 100644
index 0000000..b504f1e
--- /dev/null
+++ b/mods/ura/maps/soviet-05/rules.yaml
@@ -0,0 +1,103 @@
+Player:
+ PlayerResources:
+ DefaultCash: 5000
+
+World:
+ LuaScript:
+ Scripts: soviet05.lua, soviet05-AI.lua, soviet05-reinforcements_teams.lua
+ MissionData:
+ Briefing: Khalkis island contains a large quantity of ore that we need.\n\nThe Allies are well aware of our plans, and intend to establish their own base there. See to it that they fail.\n\nIn addition, capture their radar center so we can track Allied activity in this area.
+ BriefingVideo: soviet5.vqa
+ StartVideo: double.vqa
+ WinVideo: strafe.vqa
+ LossVideo: sovbatl.vqa
+ MapOptions:
+ TechLevel: medium
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ hard: Hard
+ Default: easy
+
+MCV.CAM:
+ Inherits: CAMERA
+ RevealsShroud:
+ Range: 4c0
+ Type: CenterPosition
+
+AFLD:
+ ParatroopersPower@paratroopers:
+ DropItems: E1,E1,E1,E2,E2
+
+TSLA:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+HPAD:
+ Buildable:
+ Prerequisites: ~disabled
+
+APWR:
+ Buildable:
+ Prerequisites: ~disabled
+
+BRIK:
+ Buildable:
+ Prerequisites: ~disabled
+
+E3:
+ Buildable:
+ Prerequisites: ~tent
+
+E4:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPY:
+ Buildable:
+ Prerequisites: ~disabled
+
+MECH:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+FTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+TRUK:
+ Buildable:
+ Prerequisites: ~disabled
+
+APC:
+ Buildable:
+ Prerequisites: ~disabled
+
+DOME:
+ ExternalCondition@lua:
+ Condition: french
+ WithColoredOverlay@IDISABLE:
+ RequiresCondition: !french && disabled
+
+powerproxy.paratroopers:
+ ParatroopersPower:
+ DropItems: E1,E1,E1,E1,E1
+
+AGUN:
+ Buildable:
+ Prerequisites: ~disabled
diff --git a/mods/ura/maps/soviet-05/soviet05-AI.lua b/mods/ura/maps/soviet-05/soviet05-AI.lua
new file mode 100644
index 0000000..8c31aeb
--- /dev/null
+++ b/mods/ura/maps/soviet-05/soviet05-AI.lua
@@ -0,0 +1,168 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
+
+IdlingUnits = function()
+ local lazyUnits = Utils.Where(Map.ActorsInWorld, function(actor)
+ return actor.HasProperty("Hunt") and (actor.Owner == GoodGuy or actor.Owner == Greece) end)
+
+ Utils.Do(lazyUnits, function(unit)
+ Trigger.OnDamaged(unit, function()
+ Trigger.ClearAll(unit)
+ Trigger.AfterDelay(0, function() IdleHunt(unit) end)
+ end)
+ end)
+end
+
+BaseBuildings =
+{
+ { type = "powr", pos = CVec.New(3, -2), cost = 300 },
+ { type = "tent", pos = CVec.New(0, 4), cost = 400 },
+ { type = "hbox", pos = CVec.New(3, 6), cost = 600 },
+ { type = "proc", pos = CVec.New(4, 2), cost = 1400 },
+ { type = "powr", pos = CVec.New(5, -3), cost = 300 },
+ { type = "weap", pos = CVec.New(-5, 3), cost = 2000 },
+ { type = "hbox", pos = CVec.New(-6, 5), cost = 600 },
+ { type = "gun", pos = CVec.New(0, 8), cost = 600 },
+ { type = "gun", pos = CVec.New(-4, 7), cost = 600 },
+ { type = "powr", pos = CVec.New(-4, -3), cost = 300 },
+ { type = "proc", pos = CVec.New(-9, 1), cost = 1400 },
+ { type = "powr", pos = CVec.New(-8, -2), cost = 300 },
+ { type = "silo", pos = CVec.New(6, 0), cost = 150 },
+ { type = "agun", pos = CVec.New(-3, 0), cost = 800 },
+ { type = "powr", pos = CVec.New(-6, -2), cost = 300 },
+ { type = "agun", pos = CVec.New(4, 1), cost = 800 },
+ { type = "gun", pos = CVec.New(-9, 5), cost = 600 },
+ { type = "gun", pos = CVec.New(-2, -3), cost = 600 },
+ { type = "powr", pos = CVec.New(4, 6), cost = 300 },
+ { type = "gun", pos = CVec.New(3, -6), cost = 600 },
+ { type = "hbox", pos = CVec.New(3, -4), cost = 600 },
+ { type = "gun", pos = CVec.New(2, 3), cost = 600 }
+}
+
+BuildBase = function()
+ if not CheckForCYard() then
+ return
+ end
+
+ for i,v in ipairs(BaseBuildings) do
+ if not v.exists then
+ BuildBuilding(v)
+ return
+ end
+ end
+
+ Trigger.AfterDelay(DateTime.Seconds(5), BuildBase)
+end
+
+BuildBuilding = function(building)
+ Trigger.AfterDelay(Actor.BuildTime(building.type), function()
+ local actor = Actor.Create(building.type, true, { Owner = GoodGuy, Location = MCVDeploy.Location + building.pos })
+ GoodGuy.Cash = GoodGuy.Cash - building.cost
+
+ building.exists = true
+ Trigger.OnKilled(actor, function() building.exists = false end)
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == GoodGuy and building.Health < building.MaxHealth * 3/4 then
+ building.StartBuildingRepairs()
+ end
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(1), BuildBase)
+ end)
+end
+
+ProduceInfantry = function()
+ if Barr.IsDead then
+ return
+ end
+
+ local delay = Utils.RandomInteger(DateTime.Seconds(3), DateTime.Seconds(9))
+ local toBuild = { Utils.Random(AlliedInfantryTypes) }
+ Greece.Build(toBuild, function(unit)
+ GreeceInfAttack[#GreeceInfAttack + 1] = unit[1]
+
+ if #GreeceInfAttack >= 7 then
+ SendUnits(GreeceInfAttack, InfantryWaypoints)
+ GreeceInfAttack = { }
+ Trigger.AfterDelay(DateTime.Minutes(2), ProduceInfantry)
+ else
+ Trigger.AfterDelay(delay, ProduceInfantry)
+ end
+ end)
+end
+
+ProduceShips = function()
+ if Navalyard.IsDead then
+ return
+ end
+
+ Greece.Build( {"dd"}, function(unit)
+ Ships[#Ships + 1] = unit[1]
+
+ if #Ships >= 2 then
+ SendUnits(Ships, ShipWaypoints)
+ Ships = { }
+ Trigger.AfterDelay(DateTime.Minutes(6), ProduceShips)
+ else
+ Trigger.AfterDelay(Actor.BuildTime("dd"), ProduceShips)
+ end
+ end)
+end
+
+ProduceInfantryGG = function()
+ if not BaseBuildings[2][4] then
+ return
+ end
+
+ local delay = Utils.RandomInteger(DateTime.Seconds(3), DateTime.Seconds(9))
+ local toBuild = { Utils.Random(AlliedInfantryTypes) }
+ GoodGuy.Build(toBuild, function(unit)
+ GGInfAttack[#GGInfAttack + 1] = unit[1]
+
+ if #GGInfAttack >= 10 then
+ SendUnits(GGInfAttack, InfantryGGWaypoints)
+ GGInfAttack = { }
+ Trigger.AfterDelay(DateTime.Minutes(2), ProduceInfantryGG)
+ else
+ Trigger.AfterDelay(delay, ProduceInfantryGG)
+ end
+ end)
+end
+
+ProduceTanksGG = function()
+ if not BaseBuildings[6][4] then
+ return
+ end
+
+ local delay = Utils.RandomInteger(DateTime.Seconds(12), DateTime.Seconds(17))
+ local toBuild = { Utils.Random(AlliedTankTypes) }
+ GoodGuy.Build(toBuild, function(unit)
+ TankAttackGG[#TankAttackGG + 1] = unit[1]
+
+ if #TankAttackGG >= 6 then
+ SendUnits(TankAttackGG, TanksGGWaypoints)
+ TankAttackGG = { }
+ Trigger.AfterDelay(DateTime.Minutes(3), ProduceTanksGG)
+ else
+ Trigger.AfterDelay(delay, ProduceTanksGG)
+ end
+ end)
+end
+
+SendUnits = function(units, waypoints)
+ Utils.Do(units, function(unit)
+ if not unit.IsDead then
+ Utils.Do(waypoints, function(waypoint)
+ unit.AttackMove(waypoint.Location)
+ end)
+ unit.Hunt()
+ end
+ end)
+end
diff --git a/mods/ura/maps/soviet-05/soviet05-reinforcements_teams.lua b/mods/ura/maps/soviet-05/soviet05-reinforcements_teams.lua
new file mode 100644
index 0000000..8d5f5bc
--- /dev/null
+++ b/mods/ura/maps/soviet-05/soviet05-reinforcements_teams.lua
@@ -0,0 +1,176 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+SovietStartReinf = { "e2", "e2" }
+SovietStartToBasePath = { StartPoint.Location, SovietBasePoint.Location }
+SovietMCVReinf = { "mcv", "3tnk", "3tnk", "e1", "e1" }
+SovExpansionPointGuard = { "2tnk", "2tnk", "e3", "e3", "e3" }
+
+if Map.LobbyOption("difficulty") == "easy" then
+ ArmorReinfGreece = { "jeep", "1tnk", "1tnk" }
+else
+ ArmorReinfGreece = { "jeep", "jeep", "1tnk", "1tnk", "1tnk" }
+end
+InfantryReinfGreece = { "e1", "e1", "e1", "e1", "e1" }
+CrossroadsReinfPath = { ReinfRoadPoint.Location }
+ArtyReinf = { "e3", "e3", "e3", "arty", "arty" }
+CoastGuardReinf = { "e1", "e1", "e3", "e1", "e3" }
+DDPatrol1 = { "dd", "dd", "dd" }
+DDPatrol1Path = { EIslandPoint.Location, WIslandPoint.Location, DDAttackPoint.Location, SReinfPathPoint4.Location, DDAttackPoint.Location, WIslandPoint.Location, EIslandPoint.Location, NearDockPoint.Location }
+DDPatrol2 = { "dd", "dd" }
+DDPatrol2Path = { NReinfPathPoint1.Location, SReinfPathPoint1.Location, SReinfPathPoint2.Location, SReinfPathPoint1.Location, NReinfPathPoint1.Location, NearDockPoint.Location }
+ShipArrivePath = { ReinfNorthPoint.Location, NearDockPoint.Location }
+
+AlliedInfantryTypes = { "e1", "e3" }
+AlliedTankTypes = { "jeep", "1tnk" }
+AlliedAttackPath = { GreeceBaseEPoint.Location, CrossroadPoint.Location, NWOrefieldPoint.Location, AtUSSRBasePoint.Location }
+AlliedCrossroadsToRadarPath = { ReinfRoadPoint.Location, CrossroadPoint.Location, GreeceBaseEPoint.Location, GreeceBasePoint.Location }
+SouthReinfPath = { ReinfEastPoint.Location, SReinfPathPoint1.Location, SReinfPathPoint2.Location, SReinfPathPoint3.Location, SReinfPathPoint4.Location, USSRlstPoint.Location }
+NorthReinfPath = { ReinfEastPoint.Location, NReinfPathPoint1.Location, GGUnloadPoint.Location }
+GoodGuyOrefieldPatrolPath = { PatrolPoint1.Location, PatrolPoint2.Location, PatrolPoint3.Location, PatrolPoint4.Location }
+
+Ships = { }
+GreeceInfAttack = { }
+GGInfAttack = { }
+TankAttackGG = { }
+
+ShipWaypoints = { EIslandPoint, WIslandPoint, DDAttackPoint }
+InfantryWaypoints = { CrossroadPoint, NWOrefieldPoint, AtUSSRBasePoint, SovietBasePoint }
+InfantryGGWaypoints = { PatrolPoint2, BetweenBasesPoint, PrepGGArmyPoint }
+TanksGGWaypoints = { PatrolPoint2, BetweenBasesPoint, PrepGGArmyPoint }
+
+Para = function()
+ local powerproxy = Actor.Create("powerproxy.paratroopers", false, { Owner = player })
+ local units = powerproxy.SendParatroopers(ParaPoint.CenterPosition, false, 28)
+ powerproxy.Destroy()
+end
+
+Para2 = function()
+ local powerproxy = Actor.Create("powerproxy.paratroopers", false, { Owner = player })
+ local units = powerproxy.SendParatroopers(USSRExpansionPoint.CenterPosition, false, 28)
+ powerproxy.Destroy()
+end
+
+ReinfInf = function()
+ Reinforcements.Reinforce(Greece, InfantryReinfGreece, CrossroadsReinfPath, 0, function(soldier)
+ soldier.Hunt()
+ end)
+end
+
+ReinfArmor = function()
+ RCheck = false
+ Reinforcements.Reinforce(Greece, ArmorReinfGreece, CrossroadsReinfPath, 0, function(soldier)
+ soldier.Hunt()
+ end)
+end
+
+IslandTroops1 = function()
+ local units = Reinforcements.ReinforceWithTransport(GoodGuy, "lst", CoastGuardReinf, { ReinfEastPoint.Location, NReinfPathPoint1.Location, GGUnloadPoint.Location }, { ReinfEastPoint.Location })[2]
+ Utils.Do(units, function(unit)
+ Trigger.OnIdle(unit, function(coastguard)
+ coastguard.AttackMove(CoastGuardPoint.Location)
+ end)
+ end)
+ if not CheckForCYard() then
+ return
+ elseif Map.LobbyOption("difficulty") == "easy" then
+ return
+ else
+ Trigger.OnAllKilled(units, function()
+ if Map.LobbyOption("difficulty") == "hard" then
+ Trigger.AfterDelay(DateTime.Minutes(3), IslandTroops1)
+ else
+ Trigger.AfterDelay(DateTime.Minutes(5), IslandTroops1)
+ end
+ end)
+ end
+end
+
+IslandTroops2 = function()
+ local units = Reinforcements.ReinforceWithTransport(GoodGuy, "lst", ArmorReinfGreece, NorthReinfPath, { ReinfEastPoint.Location })[2]
+ Utils.Do(units, function(unit)
+ Trigger.OnIdle(unit, function(patrols)
+ patrols.Patrol(GoodGuyOrefieldPatrolPath, true, 150)
+ end)
+ end)
+ if not CheckForCYard() then
+ return
+ elseif Map.LobbyOption("difficulty") == "easy" then
+ return
+ else
+ Trigger.OnAllKilled(units, function()
+ if Map.LobbyOption("difficulty") == "hard" then
+ Trigger.AfterDelay(DateTime.Minutes(3), IslandTroops2)
+ else
+ Trigger.AfterDelay(DateTime.Minutes(5), IslandTroops2)
+ end
+ end)
+ end
+end
+
+IslandTroops3 = function()
+ local units = Reinforcements.ReinforceWithTransport(GoodGuy, "lst", SovExpansionPointGuard, SouthReinfPath, { ReinfEastPoint.Location })[2]
+ Utils.Do(units, function(unit)
+ Trigger.OnIdle(unit, function(guards)
+ guards.AttackMove(USSRExpansionPoint.Location)
+ end)
+ end)
+ if not CheckForCYard() then
+ return
+ elseif Map.LobbyOption("difficulty") == "easy" then
+ return
+ else
+ Trigger.OnAllKilled(units, function()
+ if Map.LobbyOption("difficulty") == "hard" then
+ Trigger.AfterDelay(DateTime.Minutes(3), IslandTroops3)
+ else
+ Trigger.AfterDelay(DateTime.Minutes(5), IslandTroops3)
+ end
+ end)
+ end
+end
+
+BringDDPatrol1 = function()
+ local units = Reinforcements.Reinforce(Greece, DDPatrol1, ShipArrivePath, 0)
+ Utils.Do(units, function(unit)
+ Trigger.OnIdle(unit, function(patrols)
+ patrols.Patrol(DDPatrol1Path, true, 250)
+ end)
+ end)
+ if not CheckForCYard() then
+ return
+ else
+ Trigger.OnAllKilled(units, function()
+ if Map.LobbyOption("difficulty") == "hard" then
+ Trigger.AfterDelay(DateTime.Minutes(4), BringDDPatrol1)
+ else
+ Trigger.AfterDelay(DateTime.Minutes(7), BringDDPatrol1)
+ end
+ end)
+ end
+end
+
+BringDDPatrol2 = function()
+ local units = Reinforcements.Reinforce(Greece, DDPatrol2, ShipArrivePath, 0)
+ Utils.Do(units, function(unit)
+ Trigger.OnIdle(unit, function(patrols)
+ patrols.Patrol(DDPatrol2Path, true, 250)
+ end)
+ end)
+ if not CheckForCYard() then
+ return
+ else
+ Trigger.OnAllKilled(units, function()
+ if Map.LobbyOption("difficulty") == "hard" then
+ Trigger.AfterDelay(DateTime.Minutes(4), BringDDPatrol2)
+ else
+ Trigger.AfterDelay(DateTime.Minutes(7), BringDDPatrol2)
+ end
+ end)
+ end
+end
diff --git a/mods/ura/maps/soviet-05/soviet05.lua b/mods/ura/maps/soviet-05/soviet05.lua
new file mode 100644
index 0000000..ef829c4
--- /dev/null
+++ b/mods/ura/maps/soviet-05/soviet05.lua
@@ -0,0 +1,288 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+CheckForBase = function()
+ baseBuildings = Map.ActorsInBox(Map.TopLeft, CFBPoint.CenterPosition, function(actor)
+ return actor.Type == "fact" or actor.Type == "powr"
+ end)
+
+ return #baseBuildings >= 2
+end
+
+CheckForCYard = function()
+ ConYard = Map.ActorsInBox(mcvGGLoadPoint.CenterPosition, ReinfEastPoint.CenterPosition, function(actor)
+ return actor.Type == "fact" and actor.Owner == GoodGuy
+ end)
+
+ return #ConYard >= 1
+end
+
+CheckForSPen = function()
+ return Utils.Any(Map.ActorsInWorld, function(actor) return actor.Type == "spen" end)
+end
+
+RunInitialActivities = function()
+ if Map.LobbyOption("difficulty") == "hard" then
+ Expand()
+ ExpansionCheck = true
+ else
+ ExpansionCheck = false
+ end
+
+ Trigger.AfterDelay(1, function()
+ Harvester.FindResources()
+ Helper.Destroy()
+ IdlingUnits()
+ Media.PlaySpeechNotification(player, "ReinforcementsArrived")
+
+ local buildings = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == Greece and self.HasProperty("StartBuildingRepairs") end)
+ Utils.Do(buildings, function(actor)
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == Greece and building.Health < building.MaxHealth * 3/4 then
+ building.StartBuildingRepairs()
+ end
+ end)
+ end)
+ end)
+
+ Reinforcements.Reinforce(player, SovietStartReinf, SovietStartToBasePath, 0, function(soldier)
+ soldier.AttackMove(SovietBasePoint.Location)
+ end)
+
+ Actor.Create("camera", true, { Owner = player, Location = GreeceBasePoint.Location })
+ Actor.Create("camera", true, { Owner = player, Location = SovietBasePoint.Location })
+
+ startmcv.Move(MCVStartMovePoint.Location)
+ Runner1.Move(RunnerPoint.Location)
+ Runner2.Move(RunnerPoint.Location)
+ Runner3.Move(RunnerPoint.Location)
+
+ ProduceInfantry()
+ Trigger.AfterDelay(DateTime.Minutes(2), ProduceShips)
+
+ if Map.LobbyOption("difficulty") == "hard" or Map.LobbyOption("difficulty") == "normal" then
+ Trigger.AfterDelay(DateTime.Seconds(25), ReinfInf)
+ end
+ Trigger.AfterDelay(DateTime.Minutes(2), ReinfInf)
+ Trigger.AfterDelay(DateTime.Minutes(3), BringDDPatrol2)
+ Trigger.AfterDelay(DateTime.Minutes(5), ReinfInf)
+ Trigger.AfterDelay(DateTime.Minutes(6), BringDDPatrol1)
+end
+
+Expand = function()
+ if ExpansionCheck then
+ return
+ elseif mcvtransport.IsDead then
+ return
+ elseif mcvGG.IsDead then
+ return
+ end
+
+ mcvGG.Move(mcvGGLoadPoint.Location)
+ mcvtransport.Move(lstBeachPoint.Location)
+ Media.DisplayMessage("Allied MCV detected moving to the island.")
+
+ Reinforcements.Reinforce(GoodGuy, { "dd", "dd" }, ShipArrivePath, 0, function(ddsquad)
+ ddsquad.AttackMove(NearExpPoint.Location) end)
+
+ ExpansionCheck = true
+ Trigger.ClearAll(mcvGG)
+ Trigger.ClearAll(mcvtransport)
+ Trigger.AfterDelay(DateTime.Seconds(3), function()
+ if mcvtransport.IsDead then
+ return
+ elseif mcvGG.IsDead then
+ return
+ end
+
+ mcvGG.EnterTransport(mcvtransport)
+ mcvtransport.Move(GGUnloadPoint.Location)
+ mcvtransport.UnloadPassengers()
+ Trigger.AfterDelay(DateTime.Seconds(12), function()
+ if mcvGG.IsDead then
+ return
+ end
+
+ mcvGG.Move(MCVDeploy.Location)
+ Trigger.AfterDelay(DateTime.Seconds(4), function()
+ if not mcvGG.IsDead then
+ mcvGG.Deploy()
+ Trigger.AfterDelay(DateTime.Seconds(4), function()
+ local fact = Map.ActorsInBox(mcvGGLoadPoint.CenterPosition, ReinfEastPoint.CenterPosition, function(actor)
+ return actor.Type == "fact" and actor.Owner == GoodGuy end)
+ if #fact == 0 then
+ return
+ else
+ Trigger.OnDamaged(fact[1], function()
+ if fact[1].Owner == GoodGuy and fact[1].Health < fact[1].MaxHealth * 3/4 then
+ fact[1].StartBuildingRepairs()
+ end
+ end)
+ end
+ end)
+
+ IslandTroops1()
+ Trigger.AfterDelay(DateTime.Minutes(3), IslandTroops2)
+ Trigger.AfterDelay(DateTime.Minutes(6), IslandTroops3)
+ Trigger.AfterDelay(DateTime.Seconds(7), BuildBase)
+ end
+
+ if not mcvtransport.IsDead then
+ mcvtransport.Move(ReinfNorthPoint.Location)
+ mcvtransport.Destroy()
+ end
+ end)
+ end)
+ end)
+end
+
+Tick = function()
+ if Greece.HasNoRequiredUnits() and GoodGuy.HasNoRequiredUnits() then
+ player.MarkCompletedObjective(KillAll)
+ player.MarkCompletedObjective(HoldObjective)
+ end
+
+ if player.HasNoRequiredUnits() then
+ GoodGuy.MarkCompletedObjective(BeatUSSR)
+ end
+
+ if Greece.Resources >= Greece.ResourceCapacity * 0.75 then
+ Greece.Cash = Greece.Cash + Greece.Resources - Greece.ResourceCapacity * 0.25
+ Greece.Resources = Greece.ResourceCapacity * 0.25
+ end
+
+ if GoodGuy.Resources >= GoodGuy.ResourceCapacity * 0.75 then
+ GoodGuy.Cash = GoodGuy.Cash + GoodGuy.Resources - GoodGuy.ResourceCapacity * 0.25
+ GoodGuy.Resources = GoodGuy.ResourceCapacity * 0.25
+ end
+
+ if not baseEstablished and CheckForBase() then
+ baseEstablished = true
+ Para()
+ end
+
+ if not SPenEstablished and CheckForSPen() then
+ SPenEstablished = true
+
+ local units = Reinforcements.ReinforceWithTransport(Greece, "lst", ArtyReinf, SouthReinfPath, { ReinfEastPoint.Location })[2]
+ Utils.Do(units, function(unit) IdleHunt(unit) end)
+ if not ExpansionCheck then
+ Expand()
+ ExpansionCheck = true
+ end
+ end
+
+ if not RCheck then
+ RCheck = true
+ if Map.LobbyOption("difficulty") == "easy" and ReinfCheck then
+ Trigger.AfterDelay(DateTime.Minutes(6), ReinfArmor)
+ elseif Map.LobbyOption("difficulty") == "normal" then
+ Trigger.AfterDelay(DateTime.Minutes(4), ReinfArmor)
+ else
+ Trigger.AfterDelay(DateTime.Minutes(3), ReinfArmor)
+ end
+ end
+end
+
+WorldLoaded = function()
+ player = Player.GetPlayer("USSR")
+ GoodGuy = Player.GetPlayer("GoodGuy")
+ Greece = Player.GetPlayer("Greece")
+
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ Media.PlaySpeechNotification(player, "ObjectiveMet")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ CaptureObjective = player.AddPrimaryObjective("Capture the Radar Dome.")
+ KillAll = player.AddPrimaryObjective("Defeat the Allied forces.")
+ BeatUSSR = GoodGuy.AddPrimaryObjective("Defeat the Soviet forces.")
+
+ RunInitialActivities()
+
+ Trigger.OnDamaged(mcvGG, Expand)
+ Trigger.OnDamaged(mcvtransport, Expand)
+
+ Trigger.OnKilled(Radar, function()
+ if not player.IsObjectiveCompleted(CaptureObjective) then
+ player.MarkFailedObjective(CaptureObjective)
+ end
+
+ if HoldObjective then
+ player.MarkFailedObjective(HoldObjective)
+ end
+ end)
+
+ Radar.GrantCondition("french")
+ Trigger.OnCapture(Radar, function()
+ HoldObjective = player.AddPrimaryObjective("Defend the Radar Dome.")
+ player.MarkCompletedObjective(CaptureObjective)
+ Beacon.New(player, MCVDeploy.CenterPosition)
+ if Map.LobbyOption("difficulty") == "easy" then
+ Actor.Create("camera", true, { Owner = player, Location = MCVDeploy.Location })
+ Media.DisplayMessage("Movement of an Allied expansion base discovered.")
+ else
+ Actor.Create("MCV.CAM", true, { Owner = player, Location = MCVDeploy.Location })
+ Media.DisplayMessage("Coordinates of an Allied expansion base discovered.")
+ end
+
+ if not ExpansionCheck then
+ Expand()
+ ExpansionCheck = true
+ end
+
+ Reinforcements.Reinforce(Greece, ArmorReinfGreece, AlliedCrossroadsToRadarPath , 0, IdleHunt)
+
+ Radar.RevokeCondition(1)
+ Trigger.ClearAll(Radar)
+ Trigger.AfterDelay(0, function()
+ Trigger.OnRemovedFromWorld(Radar, function()
+ player.MarkFailedObjective(HoldObjective)
+ end)
+ end)
+ end)
+
+ Trigger.OnEnteredProximityTrigger(USSRExpansionPoint.CenterPosition, WDist.New(4 * 1024), function(unit, id)
+ if unit.Owner == player and Radar.Owner == player then
+ Trigger.RemoveProximityTrigger(id)
+
+ Para2()
+ ProduceInfantryGG()
+ ProduceTanksGG()
+
+ local units = Reinforcements.ReinforceWithTransport(player, "lst", SovietMCVReinf, { ReinfSouthPoint.Location, USSRlstPoint.Location }, { ReinfSouthPoint.Location })[2]
+ Utils.Do(units, function(unit)
+ Trigger.OnAddedToWorld(unit, function()
+ if unit.Type == "mcv" then
+ unit.Move(USSRExpansionPoint.Location)
+ else
+ unit.AttackMove(USSRExpansionPoint.Location)
+ end
+ end)
+ end)
+
+ Media.PlaySpeechNotification(player, "ReinforcementsArrived")
+ end
+ end)
+
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "Lose")
+ end)
+
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "Win")
+ end)
+
+ Camera.Position = StartCamPoint.CenterPosition
+end
diff --git a/mods/ura/maps/soviet-06a/map.bin b/mods/ura/maps/soviet-06a/map.bin
new file mode 100644
index 0000000..63c5895
Binary files /dev/null and b/mods/ura/maps/soviet-06a/map.bin differ
diff --git a/mods/ura/maps/soviet-06a/map.png b/mods/ura/maps/soviet-06a/map.png
new file mode 100644
index 0000000..e92632f
Binary files /dev/null and b/mods/ura/maps/soviet-06a/map.png differ
diff --git a/mods/ura/maps/soviet-06a/map.yaml b/mods/ura/maps/soviet-06a/map.yaml
new file mode 100644
index 0000000..f8113ef
--- /dev/null
+++ b/mods/ura/maps/soviet-06a/map.yaml
@@ -0,0 +1,828 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 06a: Bridge over the River Grotzny
+
+Author: Westwood Studios
+
+Tileset: TEMPERAT
+
+MapSize: 128,128
+
+Bounds: 5,1,93,53
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Greece:
+ Name: Greece
+ Faction: allies
+ Color: E2E6F5
+ Enemies: USSR
+ PlayerReference@USSR:
+ Name: USSR
+ AllowBots: False
+ Playable: True
+ Required: True
+ LockFaction: True
+ Faction: soviet
+ LockColor: True
+ Color: FE1100
+ LockSpawn: True
+ LockTeam: True
+ Enemies: Greece
+
+Actors:
+ Actor0: cycl
+ Location: 17,1
+ Owner: Greece
+ Actor1: cycl
+ Location: 18,1
+ Owner: Greece
+ Actor2: cycl
+ Location: 19,1
+ Owner: Greece
+ Actor3: cycl
+ Location: 20,1
+ Owner: Greece
+ Actor4: cycl
+ Location: 21,1
+ Owner: Greece
+ Actor5: cycl
+ Location: 22,1
+ Owner: Greece
+ Actor6: cycl
+ Location: 23,1
+ Owner: Greece
+ Actor7: cycl
+ Location: 24,1
+ Owner: Greece
+ Actor8: cycl
+ Location: 25,1
+ Owner: Greece
+ Actor9: cycl
+ Location: 26,1
+ Owner: Greece
+ Actor10: cycl
+ Location: 27,1
+ Owner: Greece
+ Actor11: cycl
+ Location: 28,1
+ Owner: Greece
+ Actor12: cycl
+ Location: 29,1
+ Owner: Greece
+ Actor13: cycl
+ Location: 30,1
+ Owner: Greece
+ Actor14: cycl
+ Location: 31,1
+ Owner: Greece
+ Actor15: cycl
+ Location: 32,1
+ Owner: Greece
+ Actor16: cycl
+ Location: 33,1
+ Owner: Greece
+ Actor17: cycl
+ Location: 34,1
+ Owner: Greece
+ Actor18: cycl
+ Location: 35,1
+ Owner: Greece
+ Actor19: cycl
+ Location: 17,2
+ Owner: Greece
+ Actor20: cycl
+ Location: 17,3
+ Owner: Greece
+ Actor21: cycl
+ Location: 18,3
+ Owner: Greece
+ Actor22: cycl
+ Location: 17,4
+ Owner: Greece
+ Actor23: cycl
+ Location: 18,4
+ Owner: Greece
+ Actor24: cycl
+ Location: 17,10
+ Owner: Greece
+ Actor25: cycl
+ Location: 18,10
+ Owner: Greece
+ Actor26: cycl
+ Location: 17,11
+ Owner: Greece
+ Actor27: cycl
+ Location: 18,11
+ Owner: Greece
+ Actor28: cycl
+ Location: 17,12
+ Owner: Greece
+ Actor29: cycl
+ Location: 17,13
+ Owner: Greece
+ Actor30: cycl
+ Location: 17,14
+ Owner: Greece
+ Actor31: cycl
+ Location: 17,15
+ Owner: Greece
+ Actor32: cycl
+ Location: 17,16
+ Owner: Greece
+ Actor33: cycl
+ Location: 17,17
+ Owner: Greece
+ Actor34: cycl
+ Location: 17,18
+ Owner: Greece
+ Actor35: cycl
+ Location: 18,18
+ Owner: Greece
+ Actor36: cycl
+ Location: 18,19
+ Owner: Greece
+ Actor37: cycl
+ Location: 31,19
+ Owner: Greece
+ Actor38: cycl
+ Location: 32,19
+ Owner: Greece
+ Actor39: cycl
+ Location: 18,20
+ Owner: Greece
+ Actor40: cycl
+ Location: 31,20
+ Owner: Greece
+ Actor41: cycl
+ Location: 17,21
+ Owner: Greece
+ Actor42: cycl
+ Location: 18,21
+ Owner: Greece
+ Actor43: cycl
+ Location: 31,21
+ Owner: Greece
+ Actor44: cycl
+ Location: 17,22
+ Owner: Greece
+ Actor45: sbag
+ Location: 19,22
+ Owner: Greece
+ Actor46: sbag
+ Location: 20,22
+ Owner: Greece
+ Actor47: sbag
+ Location: 21,22
+ Owner: Greece
+ Actor48: sbag
+ Location: 27,22
+ Owner: Greece
+ Actor49: sbag
+ Location: 28,22
+ Owner: Greece
+ Actor50: sbag
+ Location: 29,22
+ Owner: Greece
+ Actor51: cycl
+ Location: 31,22
+ Owner: Greece
+ Actor52: cycl
+ Location: 17,23
+ Owner: Greece
+ Actor53: sbag
+ Location: 21,23
+ Owner: Greece
+ Actor54: sbag
+ Location: 27,23
+ Owner: Greece
+ Actor55: cycl
+ Location: 31,23
+ Owner: Greece
+ Actor56: cycl
+ Location: 17,24
+ Owner: Greece
+ Actor57: cycl
+ Location: 18,24
+ Owner: Greece
+ Actor58: cycl
+ Location: 19,24
+ Owner: Greece
+ Actor59: cycl
+ Location: 20,24
+ Owner: Greece
+ Actor60: cycl
+ Location: 21,24
+ Owner: Greece
+ Actor61: cycl
+ Location: 27,24
+ Owner: Greece
+ Actor62: cycl
+ Location: 28,24
+ Owner: Greece
+ Actor63: cycl
+ Location: 29,24
+ Owner: Greece
+ Actor64: cycl
+ Location: 30,24
+ Owner: Greece
+ Actor65: cycl
+ Location: 31,24
+ Owner: Greece
+ Actor66: sbag
+ Location: 71,31
+ Owner: Greece
+ Actor67: sbag
+ Location: 72,31
+ Owner: Greece
+ Actor68: sbag
+ Location: 71,32
+ Owner: Greece
+ Actor69: sbag
+ Location: 72,32
+ Owner: Greece
+ Actor70: sbag
+ Location: 72,33
+ Owner: Greece
+ Actor71: sbag
+ Location: 73,33
+ Owner: Greece
+ Actor72: sbag
+ Location: 73,34
+ Owner: Greece
+ Actor73: sbag
+ Location: 74,34
+ Owner: Greece
+ Actor74: sbag
+ Location: 75,34
+ Owner: Greece
+ Actor75: sbag
+ Location: 74,35
+ Owner: Greece
+ Actor76: sbag
+ Location: 75,35
+ Owner: Greece
+ Actor77: t17
+ Location: 66,28
+ Owner: Neutral
+ Actor78: t08
+ Location: 83,35
+ Owner: Neutral
+ Actor79: t16
+ Location: 82,34
+ Owner: Neutral
+ Actor80: tc04
+ Location: 80,36
+ Owner: Neutral
+ Actor81: tc05
+ Location: 77,34
+ Owner: Neutral
+ Actor82: tc01
+ Location: 79,32
+ Owner: Neutral
+ Actor83: tc01
+ Location: 61,52
+ Owner: Neutral
+ Actor84: tc02
+ Location: 61,49
+ Owner: Neutral
+ Actor85: tc03
+ Location: 58,52
+ Owner: Neutral
+ Actor86: tc05
+ Location: 52,47
+ Owner: Neutral
+ Actor87: t16
+ Location: 35,21
+ Owner: Neutral
+ Actor88: tc04
+ Location: 36,24
+ Owner: Neutral
+ Actor89: t15
+ Location: 38,22
+ Owner: Neutral
+ Actor90: t12
+ Location: 31,24
+ Owner: Neutral
+ Actor91: tc05
+ Location: 95,15
+ Owner: Neutral
+ Actor92: tc01
+ Location: 94,19
+ Owner: Neutral
+ Actor93: tc03
+ Location: 85,13
+ Owner: Neutral
+ Actor94: tc02
+ Location: 94,6
+ Owner: Neutral
+ Actor95: tc01
+ Location: 96,11
+ Owner: Neutral
+ Actor96: tc04
+ Location: 84,4
+ Owner: Neutral
+ Actor97: t17
+ Location: 83,13
+ Owner: Neutral
+ Actor98: t16
+ Location: 88,11
+ Owner: Neutral
+ Actor99: t16
+ Location: 91,23
+ Owner: Neutral
+ Actor100: t14
+ Location: 93,24
+ Owner: Neutral
+ Actor101: t11
+ Location: 95,22
+ Owner: Neutral
+ Actor102: tc05
+ Location: 32,22
+ Owner: Neutral
+ Actor103: tc05
+ Location: 5,12
+ Owner: Neutral
+ Actor104: tc01
+ Location: 9,12
+ Owner: Neutral
+ Actor105: tc05
+ Location: 50,34
+ Owner: Neutral
+ Actor106: tc04
+ Location: 53,34
+ Owner: Neutral
+ Actor107: tc05
+ Location: 74,47
+ Owner: Neutral
+ Actor108: tc04
+ Location: 80,43
+ Owner: Neutral
+ Actor109: tc02
+ Location: 78,42
+ Owner: Neutral
+ Actor110: tc01
+ Location: 74,46
+ Owner: Neutral
+ Actor111: t17
+ Location: 73,48
+ Owner: Neutral
+ Actor112: t16
+ Location: 77,46
+ Owner: Neutral
+ Actor113: t15
+ Location: 80,41
+ Owner: Neutral
+ Actor114: t14
+ Location: 68,52
+ Owner: Neutral
+ Actor115: t13
+ Location: 84,40
+ Owner: Neutral
+ Actor116: tc02
+ Location: 65,52
+ Owner: Neutral
+ Actor117: tc01
+ Location: 66,49
+ Owner: Neutral
+ Actor118: t08
+ Location: 32,20
+ Owner: Neutral
+ Actor119: tc02
+ Location: 18,52
+ Owner: Neutral
+ Actor120: t15
+ Location: 27,51
+ Owner: Neutral
+ Actor121: t11
+ Location: 40,40
+ Owner: Neutral
+ Actor122: t10
+ Location: 41,34
+ Owner: Neutral
+ Actor123: t10
+ Location: 43,29
+ Owner: Neutral
+ Actor124: t08
+ Location: 41,32
+ Owner: Neutral
+ Actor125: t08
+ Location: 42,41
+ Owner: Neutral
+ Actor126: tc05
+ Location: 29,28
+ Owner: Neutral
+ Actor127: tc02
+ Location: 19,26
+ Owner: Neutral
+ Actor128: tc04
+ Location: 17,24
+ Owner: Neutral
+ Actor129: t14
+ Location: 37,33
+ Owner: Neutral
+ Actor130: tc01
+ Location: 38,28
+ Owner: Neutral
+ Actor131: t16
+ Location: 39,27
+ Owner: Neutral
+ Actor132: t16
+ Location: 37,28
+ Owner: Neutral
+ Actor133: t10
+ Location: 11,49
+ Owner: Neutral
+ Actor134: tc05
+ Location: 12,24
+ Owner: Neutral
+ Actor135: tc04
+ Location: 5,30
+ Owner: Neutral
+ Actor136: tc02
+ Location: 12,12
+ Owner: Neutral
+ Actor137: t16
+ Location: 11,12
+ Owner: Neutral
+ Actor234: t12
+ Owner: Neutral
+ Location: 15,14
+ Actor139: t08
+ Location: 16,15
+ Owner: Neutral
+ Actor140: t01
+ Location: 8,12
+ Owner: Neutral
+ Actor141: t10
+ Location: 13,33
+ Owner: Neutral
+ Actor142: t15
+ Location: 7,40
+ Owner: Neutral
+ Actor143: t14
+ Location: 17,32
+ Owner: Neutral
+ Actor144: tc02
+ Location: 5,39
+ Owner: Neutral
+ Actor145: tc03
+ Location: 85,6
+ Owner: Neutral
+ Actor233: t01
+ Owner: Neutral
+ Location: 15,13
+ Actor147: t10
+ Location: 14,12
+ Owner: Neutral
+ Actor148: tc05
+ Location: 81,4
+ Owner: Neutral
+ Actor149: t01
+ Location: 61,9
+ Owner: Neutral
+ Actor150: tc03
+ Location: 71,6
+ Owner: Neutral
+ Actor151: t17
+ Location: 60,6
+ Owner: Neutral
+ Actor152: t11
+ Location: 70,3
+ Owner: Neutral
+ Actor153: tc05
+ Location: 22,2
+ Owner: Neutral
+ Actor154: tc03
+ Location: 28,2
+ Owner: Neutral
+ Actor155: tc01
+ Location: 33,1
+ Owner: Neutral
+ Actor156: hbox
+ Location: 19,23
+ Owner: Greece
+ Actor157: hbox
+ Location: 29,23
+ Owner: Greece
+ Actor158: gun
+ Location: 20,23
+ Owner: Greece
+ Facing: 128
+ Actor159: gun
+ Location: 28,23
+ Owner: Greece
+ Facing: 128
+ Actor163: gap
+ Location: 24,22
+ Owner: Greece
+ Actor164: syrd
+ Location: 35,14
+ Owner: Greece
+ Actor167: gun
+ Location: 33,5
+ Owner: Greece
+ Facing: 192
+ Actor168: gun
+ Location: 33,9
+ Owner: Greece
+ Facing: 192
+ Actor169: v07
+ Location: 66,4
+ Owner: Greece
+ Health: 45
+ Actor170: v03
+ Location: 64,8
+ Owner: Greece
+ Actor171: v01
+ Location: 71,8
+ Owner: Greece
+ Actor172: v05
+ Location: 61,8
+ Owner: Greece
+ Health: 43
+ Actor173: v06
+ Location: 68,4
+ Owner: Greece
+ Actor174: powr
+ Location: 20,2
+ Owner: Greece
+ Actor175: powr
+ Location: 25,2
+ Owner: Greece
+ Actor179: 2tnk
+ Location: 73,35
+ Owner: Greece
+ Facing: 160
+ Actor180: 2tnk
+ Location: 72,34
+ Owner: Greece
+ Facing: 160
+ Actor181: 2tnk
+ Location: 71,33
+ Owner: Greece
+ Facing: 160
+ Actor182: arty
+ Location: 74,33
+ Owner: Greece
+ Facing: 160
+ Actor183: arty
+ Location: 73,32
+ Owner: Greece
+ Facing: 160
+ Actor186: 3tnk
+ Location: 56,47
+ Owner: USSR
+ Facing: 32
+ Actor187: 3tnk
+ Location: 60,49
+ Owner: USSR
+ Facing: 32
+ Actor191: v2rl
+ Location: 57,49
+ Owner: USSR
+ Facing: 32
+ Actor193: 2tnk
+ Location: 73,31
+ Owner: Greece
+ Facing: 160
+ Actor194: 2tnk
+ Location: 75,33
+ Owner: Greece
+ Facing: 160
+ Actor195: 2tnk
+ Location: 85,18
+ Owner: Greece
+ Facing: 160
+ Actor196: 2tnk
+ Location: 88,20
+ Owner: Greece
+ Facing: 160
+ Actor197: 2tnk
+ Location: 22,23
+ Owner: Greece
+ Facing: 128
+ Actor198: 2tnk
+ Location: 26,23
+ Owner: Greece
+ Facing: 128
+ Actor199: arty
+ Location: 18,23
+ Owner: Greece
+ Facing: 96
+ Actor200: arty
+ Location: 30,23
+ Owner: Greece
+ Facing: 160
+ Actor202: 1tnk
+ Location: 23,21
+ Owner: Greece
+ Facing: 128
+ Actor203: 1tnk
+ Location: 25,21
+ Owner: Greece
+ Facing: 128
+ Actor204: 2tnk
+ Location: 40,6
+ Owner: Greece
+ Facing: 192
+ Actor205: 2tnk
+ Location: 40,8
+ Owner: Greece
+ Facing: 192
+ Actor206: arty
+ Location: 40,7
+ Owner: Greece
+ Facing: 192
+ Actor207: 1tnk
+ Location: 77,10
+ Owner: Greece
+ Facing: 192
+ Actor208: 1tnk
+ Location: 77,11
+ Owner: Greece
+ Facing: 192
+ Actor209: 1tnk
+ Location: 77,12
+ Owner: Greece
+ Facing: 192
+ Actor210: ca
+ Location: 87,29
+ Owner: Greece
+ Facing: 224
+ Actor211: ca
+ Location: 87,25
+ Owner: Greece
+ Facing: 160
+ Actor212: ca
+ Location: 76,22
+ Owner: Greece
+ Facing: 224
+ Actor213: pt
+ Location: 38,4
+ Owner: Greece
+ Facing: 192
+ Actor214: pt
+ Location: 38,10
+ Owner: Greece
+ Facing: 192
+ Actor215: dd
+ Location: 55,15
+ Owner: Greece
+ Facing: 192
+ Actor216: waypoint
+ Location: 39,13
+ Owner: Neutral
+ Actor235: silo
+ Owner: Greece
+ Location: 26,9
+ Actor236: silo
+ Owner: Greece
+ Location: 24,9
+ Actor237: silo
+ Owner: Greece
+ Location: 27,2
+ Actor238: silo
+ Owner: Greece
+ Location: 27,3
+ waypoint78: waypoint
+ Location: 83,23
+ Owner: Neutral
+ waypoint79: waypoint
+ Location: 87,19
+ Owner: Neutral
+ waypoint80: waypoint
+ Location: 84,22
+ Owner: Neutral
+ waypoint81: waypoint
+ Location: 76,22
+ Owner: Neutral
+ waypoint82: waypoint
+ Location: 87,29
+ Owner: Neutral
+ AGun: agun
+ Owner: Greece
+ Location: 25,5
+ TurretFacing: 92
+ APCWaypoint1: waypoint
+ Location: 52,50
+ Owner: Neutral
+ APCWaypoint2: waypoint
+ Location: 58,51
+ Owner: Neutral
+ Apwr: apwr
+ Location: 18,12
+ Owner: Greece
+ Apwr2: apwr
+ Owner: Greece
+ Location: 27,6
+ AttackWaypoint1: waypoint
+ Owner: Neutral
+ Location: 24,30
+ AttackWaypoint2: waypoint
+ Owner: Neutral
+ Location: 35,30
+ Barr: tent
+ Location: 29,16
+ Owner: Greece
+ BaseAttacker1: 1tnk
+ Location: 76,35
+ Owner: Greece
+ Facing: 160
+ BaseAttacker2: 1tnk
+ Location: 71,30
+ Owner: Greece
+ Facing: 160
+ CameraBarrier: camera
+ Location: 70,36
+ Owner: Neutral
+ CameraBase1: camera
+ Location: 34,40
+ Owner: Neutral
+ CameraBase2: camera
+ Location: 24,40
+ Owner: Neutral
+ CameraBase3: camera
+ Location: 30,46
+ Owner: Neutral
+ CameraBase4: camera
+ Location: 48,39
+ Owner: Neutral
+ CameraStart: camera
+ Location: 58,48
+ Owner: Neutral
+ CYard: fact
+ Location: 30,2
+ Owner: Greece
+ CYardLocation: waypoint
+ Owner: Neutral
+ Location: 31,4
+ Dome: dome
+ Location: 23,5
+ Owner: Greece
+ EnemyEntry1: waypoint
+ Owner: Neutral
+ Location: 10,1
+ EnemyEntry2: waypoint
+ Owner: Neutral
+ Location: 97,37
+ EnemyRally1: waypoint
+ Owner: Neutral
+ Location: 9,23
+ EnemyRally2: waypoint
+ Owner: Neutral
+ Location: 88,37
+ Harvester: harv
+ Location: 12,10
+ Owner: Greece
+ IntroEnemy1: 1tnk
+ Location: 63,42
+ Owner: Greece
+ Health: 28
+ Facing: 160
+ IntroEnemy2: jeep
+ Location: 64,42
+ Owner: Greece
+ Health: 43
+ Facing: 160
+ IntroEnemy3: 1tnk
+ Location: 64,43
+ Owner: Greece
+ Health: 50
+ Facing: 160
+ Mcv: mcv
+ Location: 61,45
+ Owner: USSR
+ Facing: 96
+ McvWaypoint: waypoint
+ Location: 53,53
+ Owner: Neutral
+ Proc: proc
+ Location: 24,9
+ Owner: Greece
+ FreeActor: False
+ Truck1: truk
+ Location: 54,52
+ Owner: USSR
+ Facing: 32
+ Truck2: truk
+ Location: 55,51
+ Owner: USSR
+ Facing: 32
+ Weap: weap
+ Location: 22,15
+ Owner: Greece
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
diff --git a/mods/ura/maps/soviet-06a/rules.yaml b/mods/ura/maps/soviet-06a/rules.yaml
new file mode 100644
index 0000000..4c3b9c8
--- /dev/null
+++ b/mods/ura/maps/soviet-06a/rules.yaml
@@ -0,0 +1,168 @@
+Player:
+ PlayerResources:
+ DefaultCash: 11500
+
+World:
+ LuaScript:
+ Scripts: soviet06a.lua, soviet06a-AI.lua, soviet06a-reinforcements_teams.lua
+ MissionData:
+ Briefing: There is a special cargo that needs to be transported to a nearby Soviet base in the northeast.\n\nMake sure the trucks reach their destination intact. Along the way, there is a bridge which the Allies may have destroyed.\n\nIf so, use the Naval options at your disposal. Our attack subs will make short work of any Allied boats you discover.
+ BriefingVideo: soviet6.vqa
+ StartVideo: onthprwl.vqa
+ WinVideo: sitduck.vqa
+ LossVideo: dpthchrg.vqa
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ hard: Hard
+ Default: easy
+
+APWR:
+ Buildable:
+ Prerequisites: ~structures.allies
+
+ARTY:
+ Buildable:
+ Prerequisites: ~vehicles.allies, ~techlevel.low
+
+ATEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+BRIK:
+ Buildable:
+ Prerequisites: ~disabled
+
+TSLA:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+IRON:
+ Buildable:
+ Prerequisites: ~disabled
+
+MECH:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+E3:
+ Buildable:
+ Prerequisites: ~tent
+
+E7:
+ Buildable:
+ Prerequisites: ~disabled
+
+SHOK:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPY:
+ Buildable:
+ Prerequisites: ~disabled
+
+SNIPER:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+MIG:
+ Buildable:
+ Prerequisites: ~disabled
+
+FTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+2TNK:
+ Buildable:
+ Prerequisites: ~vehicles.allies, ~techlevel.low
+
+4TNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+APC:
+ Buildable:
+ Prerequisites: ~disabled
+
+TRUK:
+ -SpawnActorOnDeath:
+ -DeliversCash:
+ Buildable:
+ Prerequisites: ~disabled
+
+QTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSUB:
+ Buildable:
+ Prerequisites: ~disabled
+
+STEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+PDOX:
+ Buildable:
+ Prerequisites: ~disabled
+
+MRJ:
+ Buildable:
+ Prerequisites: ~disabled
+
+CA:
+ Buildable:
+ Prerequisites: ~disabled
+
+HELI:
+ Buildable:
+ Prerequisites: ~disabled
+
+GAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+MNLY:
+ Buildable:
+ Prerequisites: ~disabled
+
+HARV:
+ Harvester:
+ SearchFromProcRadius: 50
+ SearchFromOrderRadius: 50
+
+AFLD:
+ ParatroopersPower@paratroopers:
+ DropItems: E1,E1,E1,E1,E1
+
+MONEYCRATE:
+ GiveCashCrateAction:
+ Amount: 2000
+
+V01:
+ SpawnActorOnDeath:
+ Actor: moneycrate
+
+V05:
+ SpawnActorOnDeath:
+ Actor: healcrate
diff --git a/mods/ura/maps/soviet-06a/soviet06a-AI.lua b/mods/ura/maps/soviet-06a/soviet06a-AI.lua
new file mode 100644
index 0000000..1334023
--- /dev/null
+++ b/mods/ura/maps/soviet-06a/soviet06a-AI.lua
@@ -0,0 +1,119 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
+
+IdlingUnits = function()
+ local lazyUnits = enemy.GetGroundAttackers()
+
+ Utils.Do(lazyUnits, function(unit)
+ Trigger.OnDamaged(unit, function()
+ Trigger.ClearAll(unit)
+ Trigger.AfterDelay(0, function() IdleHunt(unit) end)
+ end)
+ end)
+end
+
+BaseApwr = { type = "apwr", pos = CVec.New(-13, 7), cost = 500, exists = true }
+BaseTent = { type = "tent", pos = CVec.New(-2, 12), cost = 400, exists = true }
+BaseProc = { type = "proc", pos = CVec.New(-7, 5), cost = 1400, exists = true }
+BaseWeap = { type = "weap", pos = CVec.New(-9, 11), cost = 2000, exists = true }
+BaseApwr2 = { type = "apwr", pos = CVec.New(-4, 1), cost = 500, exists = true }
+
+BaseBuildings = { BaseApwr, BaseTent, BaseProc, BaseWeap, BaseApwr2 }
+
+BuildBase = function()
+ for i,v in ipairs(BaseBuildings) do
+ if not v.exists then
+ BuildBuilding(v)
+ return
+ end
+ end
+
+ Trigger.AfterDelay(DateTime.Seconds(10), BuildBase)
+end
+
+BuildBuilding = function(building)
+ Trigger.AfterDelay(Actor.BuildTime(building.type), function()
+ if CYard.IsDead or CYard.Owner ~= enemy then
+ return
+ elseif Harvester.IsDead and enemy.Resources <= 299 then
+ return
+ end
+
+ local actor = Actor.Create(building.type, true, { Owner = enemy, Location = CYardLocation.Location + building.pos })
+ enemy.Cash = enemy.Cash - building.cost
+
+ building.exists = true
+ Trigger.OnKilled(actor, function() building.exists = false end)
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == enemy and building.Health < building.MaxHealth * 3/4 then
+ building.StartBuildingRepairs()
+ end
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(10), BuildBase)
+ end)
+end
+
+ProduceInfantry = function()
+ if not BaseTent.exists then
+ return
+ elseif Harvester.IsDead and enemy.Resources <= 299 then
+ return
+ end
+
+ local delay = Utils.RandomInteger(DateTime.Seconds(3), DateTime.Seconds(9))
+ local toBuild = { Utils.Random(AlliedInfantryTypes) }
+ local Path = Utils.Random(AttackPaths)
+ enemy.Build(toBuild, function(unit)
+ InfAttack[#InfAttack + 1] = unit[1]
+
+ if #InfAttack >= 10 then
+ SendUnits(InfAttack, Path)
+ InfAttack = { }
+ Trigger.AfterDelay(DateTime.Minutes(2), ProduceInfantry)
+ else
+ Trigger.AfterDelay(delay, ProduceInfantry)
+ end
+ end)
+end
+
+ProduceArmor = function()
+ if not BaseWeap.exists then
+ return
+ elseif Harvester.IsDead and enemy.Resources <= 599 then
+ return
+ end
+
+ local delay = Utils.RandomInteger(DateTime.Seconds(12), DateTime.Seconds(17))
+ local toBuild = { Utils.Random(AlliedArmorTypes) }
+ local Path = Utils.Random(AttackPaths)
+ enemy.Build(toBuild, function(unit)
+ ArmorAttack[#ArmorAttack + 1] = unit[1]
+
+ if #ArmorAttack >= 6 then
+ SendUnits(ArmorAttack, Path)
+ ArmorAttack = { }
+ Trigger.AfterDelay(DateTime.Minutes(3), ProduceArmor)
+ else
+ Trigger.AfterDelay(delay, ProduceArmor)
+ end
+ end)
+end
+
+SendUnits = function(units, waypoints)
+ Utils.Do(units, function(unit)
+ if not unit.IsDead then
+ Utils.Do(waypoints, function(waypoint)
+ unit.AttackMove(waypoint.Location)
+ end)
+ IdleHunt(unit)
+ end
+ end)
+end
diff --git a/mods/ura/maps/soviet-06a/soviet06a-reinforcements_teams.lua b/mods/ura/maps/soviet-06a/soviet06a-reinforcements_teams.lua
new file mode 100644
index 0000000..c9015df
--- /dev/null
+++ b/mods/ura/maps/soviet-06a/soviet06a-reinforcements_teams.lua
@@ -0,0 +1,67 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+EnemyReinforcements =
+{
+ easy =
+ {
+ { "e1", "e1", "e3" },
+ { "e1", "e3", "jeep" },
+ { "e1", "jeep", "1tnk" }
+ },
+
+ normal =
+ {
+ { "e1", "e1", "e3", "e3" },
+ { "e1", "e3", "jeep", "jeep" },
+ { "e1", "jeep", "1tnk", "2tnk" }
+ },
+
+ hard =
+ {
+ { "e1", "e1", "e3", "e3", "e1" },
+ { "e1", "e3", "jeep", "jeep", "1tnk" },
+ { "e1", "jeep", "1tnk", "2tnk", "arty" }
+ }
+}
+
+EnemyAttackDelay =
+{
+ easy = DateTime.Minutes(5),
+ normal = DateTime.Minutes(2) + DateTime.Seconds(40),
+ hard = DateTime.Minutes(1) + DateTime.Seconds(30)
+}
+
+EnemyPaths =
+{
+ { EnemyEntry1.Location, EnemyRally1.Location },
+ { EnemyEntry2.Location, EnemyRally2.Location }
+}
+
+wave = 0
+SendEnemies = function()
+ Trigger.AfterDelay(EnemyAttackDelay[Map.LobbyOption("difficulty")], function()
+
+ wave = wave + 1
+ if wave > 3 then
+ wave = 1
+ end
+
+ if wave == 1 then
+ local units = Reinforcements.ReinforceWithTransport(enemy, "tran", EnemyReinforcements[Map.LobbyOption("difficulty")][wave], EnemyPaths[1], { EnemyPaths[1][1] })[2]
+ Utils.Do(units, IdleHunt)
+ else
+ local units = Reinforcements.ReinforceWithTransport(enemy, "lst", EnemyReinforcements[Map.LobbyOption("difficulty")][wave], EnemyPaths[2], { EnemyPaths[2][1] })[2]
+ Utils.Do(units, IdleHunt)
+ end
+
+ if not Dome.IsDead then
+ SendEnemies()
+ end
+ end)
+end
diff --git a/mods/ura/maps/soviet-06a/soviet06a.lua b/mods/ura/maps/soviet-06a/soviet06a.lua
new file mode 100644
index 0000000..bcbe4a2
--- /dev/null
+++ b/mods/ura/maps/soviet-06a/soviet06a.lua
@@ -0,0 +1,163 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+ArmorAttack = { }
+AttackPaths = { { AttackWaypoint1 }, { AttackWaypoint2 } }
+BaseAttackers = { BaseAttacker1, BaseAttacker2 }
+InfAttack = { }
+IntroAttackers = { IntroEnemy1, IntroEnemy2, IntroEnemy3 }
+Trucks = { Truck1, Truck2 }
+
+AlliedInfantryTypes = { "e1", "e1", "e3" }
+AlliedArmorTypes = { "jeep", "jeep", "1tnk", "1tnk", "2tnk", "2tnk", "arty" }
+
+SovietReinforcements1 = { "e6", "e6", "e6", "e6", "e6" }
+SovietReinforcements2 = { "e4", "e4", "e2", "e2", "e2" }
+SovietReinforcements1Waypoints = { McvWaypoint.Location, APCWaypoint1.Location }
+SovietReinforcements2Waypoints = { McvWaypoint.Location, APCWaypoint2.Location }
+
+TruckGoalTrigger = { CPos.New(83, 7), CPos.New(83, 8), CPos.New(83, 9), CPos.New(83, 10), CPos.New(84, 10), CPos.New(84, 11), CPos.New(84, 12), CPos.New(85, 12), CPos.New(86, 12), CPos.New(87, 12), CPos.New(87, 13), CPos.New(88, 13), CPos.New(89, 13), CPos.New(90, 13), CPos.New(90, 14), CPos.New(90, 15), CPos.New(91, 15), CPos.New(92, 15), CPos.New(93, 15), CPos.New(94, 15) }
+CameraBarrierTrigger = { CPos.New(65, 39), CPos.New(65, 40), CPos.New(66, 40), CPos.New(66, 41), CPos.New(67, 41), CPos.New(67, 42), CPos.New(68, 42), CPos.New(68, 43), CPos.New(68, 44) }
+CameraBaseTrigger = { CPos.New(53, 42), CPos.New(54, 42), CPos.New(54, 41), CPos.New(55, 41), CPos.New(56, 41), CPos.New(56, 40), CPos.New(57, 40), CPos.New(57, 39), CPos.New(58, 39), CPos.New(59, 39), CPos.New(59, 38), CPos.New(60, 38), CPos.New(61, 38) }
+
+Trigger.OnEnteredFootprint(TruckGoalTrigger, function(a, id)
+ if not truckGoalTrigger and a.Owner == player and a.Type == "truk" then
+ truckGoalTrigger = true
+ player.MarkCompletedObjective(sovietObjective)
+ player.MarkCompletedObjective(SaveAllTrucks)
+ end
+end)
+
+Trigger.OnEnteredFootprint(CameraBarrierTrigger, function(a, id)
+ if not cameraBarrierTrigger and a.Owner == player then
+ cameraBarrierTrigger = true
+ local cameraBarrier = Actor.Create("camera", true, { Owner = player, Location = CameraBarrier.Location })
+ Trigger.AfterDelay(DateTime.Seconds(15), function()
+ cameraBarrier.Destroy()
+ end)
+ end
+end)
+
+Trigger.OnEnteredFootprint(CameraBaseTrigger, function(a, id)
+ if not cameraBaseTrigger and a.Owner == player then
+ cameraBaseTrigger = true
+ local cameraBase1 = Actor.Create("camera", true, { Owner = player, Location = CameraBase1.Location })
+ local cameraBase2 = Actor.Create("camera", true, { Owner = player, Location = CameraBase2.Location })
+ local cameraBase3 = Actor.Create("camera", true, { Owner = player, Location = CameraBase3.Location })
+ local cameraBase4 = Actor.Create("camera", true, { Owner = player, Location = CameraBase4.Location })
+ Trigger.AfterDelay(DateTime.Minutes(1), function()
+ cameraBase1.Destroy()
+ cameraBase2.Destroy()
+ cameraBase3.Destroy()
+ cameraBase4.Destroy()
+ end)
+ end
+end)
+
+Trigger.OnAllKilled(Trucks, function()
+ enemy.MarkCompletedObjective(alliedObjective)
+end)
+
+Trigger.OnAnyKilled(Trucks, function()
+ player.MarkFailedObjective(SaveAllTrucks)
+end)
+
+Trigger.OnKilled(Apwr, function(building)
+ BaseApwr.exists = false
+end)
+
+Trigger.OnKilled(Barr, function(building)
+ BaseTent.exists = false
+end)
+
+Trigger.OnKilled(Proc, function(building)
+ BaseProc.exists = false
+end)
+
+Trigger.OnKilled(Weap, function(building)
+ BaseWeap.exists = false
+end)
+
+Trigger.OnKilled(Apwr2, function(building)
+ BaseApwr2.exists = false
+end)
+
+Trigger.OnKilledOrCaptured(Dome, function()
+ Trigger.AfterDelay(DateTime.Seconds(2), function()
+ player.MarkCompletedObjective(sovietObjective2)
+ Media.PlaySpeechNotification(player, "ObjectiveMet")
+ end)
+end)
+
+-- Activate the AI once the player deployed the Mcv
+Trigger.OnRemovedFromWorld(Mcv, function()
+ if not mcvDeployed then
+ mcvDeployed = true
+ BuildBase()
+ SendEnemies()
+ Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry)
+ Trigger.AfterDelay(DateTime.Minutes(2), ProduceArmor)
+ Trigger.AfterDelay(DateTime.Minutes(2), function()
+ Utils.Do(BaseAttackers, function(actor)
+ IdleHunt(actor)
+ end)
+ end)
+ end
+end)
+
+WorldLoaded = function()
+ player = Player.GetPlayer("USSR")
+ enemy = Player.GetPlayer("Greece")
+ Camera.Position = CameraStart.CenterPosition
+ Mcv.Move(McvWaypoint.Location)
+ Harvester.FindResources()
+ Utils.Do(IntroAttackers, function(actor)
+ IdleHunt(actor)
+ end)
+ Utils.Do(Map.NamedActors, function(actor)
+ if actor.Owner == enemy and actor.HasProperty("StartBuildingRepairs") then
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == enemy and building.Health < 3/4 * building.MaxHealth then
+ building.StartBuildingRepairs()
+ end
+ end)
+ end
+ end)
+ Reinforcements.ReinforceWithTransport(player, "apc", SovietReinforcements1, SovietReinforcements1Waypoints)
+ Reinforcements.ReinforceWithTransport(player, "apc", SovietReinforcements2, SovietReinforcements2Waypoints)
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "Win")
+ end)
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "Lose")
+ end)
+ alliedObjective = enemy.AddPrimaryObjective("Destroy all Soviet troops.")
+ sovietObjective = player.AddPrimaryObjective("Escort the Convoy.")
+ sovietObjective2 = player.AddSecondaryObjective("Destroy or capture the Allied radar dome to stop\nenemy reinforcements.")
+ SaveAllTrucks = player.AddSecondaryObjective("Keep all trucks alive.")
+end
+
+Tick = function()
+ if player.HasNoRequiredUnits() then
+ enemy.MarkCompletedObjective(alliedObjective)
+ end
+
+ if enemy.Resources >= enemy.ResourceCapacity * 0.75 then
+ enemy.Cash = enemy.Cash + enemy.Resources - enemy.ResourceCapacity * 0.25
+ enemy.Resources = enemy.ResourceCapacity * 0.25
+ end
+end
diff --git a/mods/ura/maps/soviet-06b/map.bin b/mods/ura/maps/soviet-06b/map.bin
new file mode 100644
index 0000000..f563616
Binary files /dev/null and b/mods/ura/maps/soviet-06b/map.bin differ
diff --git a/mods/ura/maps/soviet-06b/map.png b/mods/ura/maps/soviet-06b/map.png
new file mode 100644
index 0000000..e92632f
Binary files /dev/null and b/mods/ura/maps/soviet-06b/map.png differ
diff --git a/mods/ura/maps/soviet-06b/map.yaml b/mods/ura/maps/soviet-06b/map.yaml
new file mode 100644
index 0000000..1a10521
--- /dev/null
+++ b/mods/ura/maps/soviet-06b/map.yaml
@@ -0,0 +1,520 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 06b: Bridge over the River VizchGoi
+
+Author: Westwood Studios
+
+Tileset: TEMPERAT
+
+MapSize: 128,128
+
+Bounds: 18,10,81,58
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Greece:
+ Name: Greece
+ Faction: allies
+ Color: E2E6F5
+ Enemies: USSR
+ PlayerReference@USSR:
+ Name: USSR
+ AllowBots: False
+ Playable: True
+ Required: True
+ LockFaction: True
+ Faction: soviet
+ LockColor: True
+ Color: FE1100
+ LockSpawn: True
+ LockTeam: True
+ Enemies: Greece
+
+Actors:
+ Actor0: cycl
+ Location: 17,14
+ Owner: Neutral
+ Actor1: cycl
+ Location: 17,15
+ Owner: Neutral
+ Actor2: cycl
+ Location: 17,16
+ Owner: Neutral
+ Actor3: cycl
+ Location: 17,17
+ Owner: Neutral
+ Actor4: cycl
+ Location: 17,18
+ Owner: Neutral
+ Actor5: sbag
+ Location: 62,37
+ Owner: Greece
+ Actor6: sbag
+ Location: 63,37
+ Owner: Greece
+ Actor7: sbag
+ Location: 64,37
+ Owner: Greece
+ Actor8: sbag
+ Location: 65,37
+ Owner: Greece
+ Actor9: sbag
+ Location: 65,38
+ Owner: Greece
+ Actor10: sbag
+ Location: 66,38
+ Owner: Greece
+ Actor11: sbag
+ Location: 71,38
+ Owner: Greece
+ Actor12: sbag
+ Location: 72,38
+ Owner: Greece
+ Actor13: sbag
+ Location: 73,38
+ Owner: Greece
+ Actor14: sbag
+ Location: 74,38
+ Owner: Greece
+ Actor15: sbag
+ Location: 82,38
+ Owner: Greece
+ Actor16: sbag
+ Location: 83,38
+ Owner: Greece
+ Actor17: sbag
+ Location: 70,39
+ Owner: Greece
+ Actor18: sbag
+ Location: 71,39
+ Owner: Greece
+ Actor19: sbag
+ Location: 83,39
+ Owner: Greece
+ Actor20: sbag
+ Location: 83,40
+ Owner: Greece
+ Actor21: sbag
+ Location: 57,43
+ Owner: Greece
+ Actor22: sbag
+ Location: 58,43
+ Owner: Greece
+ Actor23: sbag
+ Location: 57,44
+ Owner: Greece
+ Actor24: sbag
+ Location: 80,46
+ Owner: Greece
+ Actor25: sbag
+ Location: 80,47
+ Owner: Greece
+ Actor26: sbag
+ Location: 63,48
+ Owner: Greece
+ Actor27: sbag
+ Location: 64,48
+ Owner: Greece
+ Actor28: sbag
+ Location: 79,48
+ Owner: Greece
+ Actor29: sbag
+ Location: 80,48
+ Owner: Greece
+ Actor30: sbag
+ Location: 64,49
+ Owner: Greece
+ Actor31: sbag
+ Location: 64,50
+ Owner: Greece
+ Actor32: sbag
+ Location: 65,50
+ Owner: Greece
+ Actor33: t17
+ Location: 66,28
+ Owner: Neutral
+ Actor34: t08
+ Location: 83,35
+ Owner: Neutral
+ Actor35: t16
+ Location: 82,34
+ Owner: Neutral
+ Actor36: tc04
+ Location: 63,26
+ Owner: Neutral
+ Actor37: tc05
+ Location: 67,30
+ Owner: Neutral
+ Actor38: tc01
+ Location: 79,32
+ Owner: Neutral
+ Actor39: tc04
+ Location: 34,20
+ Owner: Neutral
+ Actor40: tc05
+ Location: 82,15
+ Owner: Neutral
+ Actor41: tc04
+ Location: 90,17
+ Owner: Neutral
+ Actor42: tc01
+ Location: 92,18
+ Owner: Neutral
+ Actor43: tc03
+ Location: 82,14
+ Owner: Neutral
+ Actor44: tc01
+ Location: 95,15
+ Owner: Neutral
+ Actor45: tc02
+ Location: 83,12
+ Owner: Neutral
+ Actor46: t17
+ Location: 85,12
+ Owner: Neutral
+ Actor47: t16
+ Location: 86,13
+ Owner: Neutral
+ Actor48: t16
+ Location: 92,24
+ Owner: Neutral
+ Actor49: t14
+ Location: 93,24
+ Owner: Neutral
+ Actor50: t11
+ Location: 93,21
+ Owner: Neutral
+ Actor51: tc05
+ Location: 54,23
+ Owner: Neutral
+ Actor52: tc05
+ Location: 74,46
+ Owner: Neutral
+ Actor53: tc04
+ Location: 80,43
+ Owner: Neutral
+ Actor54: tc02
+ Location: 81,42
+ Owner: Neutral
+ Actor55: tc01
+ Location: 73,40
+ Owner: Neutral
+ Actor56: t17
+ Location: 71,40
+ Owner: Neutral
+ Actor57: t15
+ Location: 80,36
+ Owner: Neutral
+ Actor58: t12
+ Location: 31,57
+ Owner: Neutral
+ Actor59: tc04
+ Location: 54,26
+ Owner: Neutral
+ Actor60: t14
+ Location: 50,31
+ Owner: Neutral
+ Actor62: t05
+ Location: 48,39
+ Owner: Neutral
+ Actor63: t06
+ Location: 47,39
+ Owner: Neutral
+ Actor66: t08
+ Location: 49,38
+ Owner: Neutral
+ Actor68: t08
+ Location: 50,39
+ Owner: Neutral
+ Actor69: tc05
+ Location: 35,58
+ Owner: Neutral
+ Actor70: tc04
+ Location: 44,55
+ Owner: Neutral
+ Actor71: tc02
+ Location: 34,66
+ Owner: Neutral
+ Actor72: tc04
+ Location: 56,65
+ Owner: Neutral
+ Actor73: t17
+ Location: 49,66
+ Owner: Neutral
+ Actor74: t16
+ Location: 50,65
+ Owner: Neutral
+ Actor75: tc02
+ Location: 54,66
+ Owner: Neutral
+ Actor76: tc01
+ Location: 52,66
+ Owner: Neutral
+ Actor77: tc02
+ Location: 58,58
+ Owner: Neutral
+ Actor78: t15
+ Location: 59,60
+ Owner: Neutral
+ Actor79: t14
+ Location: 48,38
+ Owner: Neutral
+ Actor81: tc03
+ Location: 49,20
+ Owner: Neutral
+ Actor82: tc02
+ Location: 36,19
+ Owner: Neutral
+ Actor83: t15
+ Location: 39,25
+ Owner: Neutral
+ Actor84: t08
+ Location: 38,27
+ Owner: Neutral
+ Actor85: t08
+ Location: 40,25
+ Owner: Neutral
+ Actor86: t13
+ Location: 49,40
+ Owner: Neutral
+ Actor88: t02
+ Location: 50,37
+ Owner: Neutral
+ Actor90: hbox
+ Location: 58,46
+ Owner: Greece
+ Actor91: hbox
+ Location: 62,47
+ Owner: Greece
+ Actor92: gun
+ Location: 57,46
+ Owner: Greece
+ Facing: 160
+ Actor93: gun
+ Location: 61,48
+ Owner: Greece
+ Facing: 160
+ Actor103: 2tnk
+ Location: 76,30
+ Owner: Greece
+ Facing: 160
+ Actor104: 2tnk
+ Location: 76,29
+ Owner: Greece
+ Facing: 160
+ Actor106: arty
+ Location: 63,47
+ Owner: Greece
+ Facing: 160
+ Actor107: arty
+ Location: 58,44
+ Owner: Greece
+ Facing: 160
+ Actor110: 3tnk
+ Location: 43,63
+ Owner: USSR
+ Facing: 32
+ Actor111: 3tnk
+ Location: 44,62
+ Owner: USSR
+ Facing: 32
+ Actor112: v2rl
+ Location: 41,64
+ Owner: USSR
+ Facing: 32
+ Actor113: v2rl
+ Location: 43,64
+ Owner: USSR
+ Facing: 32
+ Actor115: 2tnk
+ Location: 75,30
+ Owner: Greece
+ Facing: 160
+ Actor116: 2tnk
+ Location: 75,31
+ Owner: Greece
+ Facing: 160
+ Actor117: 2tnk
+ Location: 83,20
+ Owner: Greece
+ Facing: 160
+ Actor118: 2tnk
+ Location: 88,21
+ Owner: Greece
+ Facing: 160
+ Actor119: 2tnk
+ Location: 62,44
+ Owner: Greece
+ Facing: 160
+ Actor120: 1tnk
+ Location: 59,44
+ Owner: Greece
+ Facing: 160
+ Actor121: 1tnk
+ Location: 63,46
+ Owner: Greece
+ Facing: 160
+ Actor123: ca
+ Location: 87,29
+ Owner: Greece
+ Facing: 224
+ Actor124: ca
+ Location: 87,31
+ Owner: Greece
+ Facing: 160
+ Actor125: ca
+ Location: 75,25
+ Owner: Greece
+ Facing: 224
+ Actor126: pt
+ Location: 71,16
+ Owner: Greece
+ Facing: 224
+ Actor127: pt
+ Location: 65,20
+ Owner: Greece
+ Facing: 224
+ Actor128: dd
+ Location: 70,20
+ Owner: Greece
+ Facing: 224
+ Actor129: waypoint
+ Location: 46,60
+ Owner: Neutral
+ Actor144: silo
+ Owner: Greece
+ Location: 73,46
+ Actor145: silo
+ Owner: Greece
+ Location: 73,47
+ Actor146: silo
+ Owner: Greece
+ Location: 73,48
+ Actor147: silo
+ Owner: Greece
+ Location: 73,49
+ Actor148: sbag
+ Owner: Greece
+ Location: 65,51
+ waypoint69: waypoint
+ Location: 21,28
+ Owner: Neutral
+ waypoint78: waypoint
+ Location: 83,23
+ Owner: Neutral
+ waypoint79: waypoint
+ Location: 87,19
+ Owner: Neutral
+ waypoint80: waypoint
+ Location: 84,22
+ Owner: Neutral
+ waypoint81: waypoint
+ Location: 76,22
+ Owner: Neutral
+ waypoint82: waypoint
+ Location: 87,29
+ Owner: Neutral
+ waypoint94: waypoint
+ Location: 49,16
+ Owner: Neutral
+ AGun: agun
+ Owner: Greece
+ Location: 69,49
+ TurretFacing: 92
+ APCWaypoint1: waypoint
+ Location: 39,62
+ Owner: Neutral
+ APCWaypoint2: waypoint
+ Location: 46,66
+ Owner: Neutral
+ Apwr: apwr
+ Location: 76,41
+ Owner: Greece
+ Apwr2: apwr
+ Location: 77,45
+ Owner: Greece
+ AttackWaypoint1: waypoint
+ Owner: Neutral
+ Location: 26,55
+ AttackWaypoint2: waypoint
+ Owner: Neutral
+ Location: 41,55
+ Barr: tent
+ Location: 67,45
+ Owner: Greece
+ CameraStart: camera
+ Location: 46,61
+ Owner: Neutral
+ CYard: fact
+ Location: 70,46
+ Owner: Greece
+ CYardLocation: waypoint
+ Owner: Neutral
+ Location: 71,49
+ Dome: dome
+ Location: 67,49
+ Owner: Greece
+ EnemyEntry1: waypoint
+ Owner: Neutral
+ Location: 53,10
+ EnemyEntry2: waypoint
+ Owner: Neutral
+ Location: 18,62
+ EnemyRally1: waypoint
+ Owner: Neutral
+ Location: 53,31
+ EnemyRally2: waypoint
+ Owner: Neutral
+ Location: 25,62
+ Harvester: harv
+ Location: 77,39
+ Owner: Greece
+ IntroEnemy1: 1tnk
+ Location: 55,49
+ Owner: Greece
+ Facing: 160
+ IntroEnemy2: 2tnk
+ Location: 56,50
+ Owner: Greece
+ Facing: 160
+ IntroEnemy3: 1tnk
+ Location: 58,50
+ Owner: Greece
+ Facing: 160
+ Mcv: mcv
+ Location: 51,55
+ Owner: USSR
+ Health: 82
+ Facing: 160
+ McvWaypoint: waypoint
+ Location: 39,67
+ Owner: Neutral
+ Proc: proc
+ Location: 71,41
+ Owner: Greece
+ FreeActor: False
+ Truck1: truk
+ Location: 42,66
+ Owner: USSR
+ Facing: 32
+ Truck2: truk
+ Location: 39,65
+ Owner: USSR
+ Facing: 32
+ Weap: weap
+ Location: 67,41
+ Owner: Greece
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
diff --git a/mods/ura/maps/soviet-06b/rules.yaml b/mods/ura/maps/soviet-06b/rules.yaml
new file mode 100644
index 0000000..74890e3
--- /dev/null
+++ b/mods/ura/maps/soviet-06b/rules.yaml
@@ -0,0 +1,156 @@
+Player:
+ PlayerResources:
+ DefaultCash: 11500
+
+World:
+ LuaScript:
+ Scripts: soviet06b.lua, soviet06b-AI.lua, soviet06b-reinforcements_teams.lua
+ MissionData:
+ Briefing: There is a special cargo that needs to be transported to a nearby Soviet base in the northeast.\n\nMake sure the trucks reach their destination intact. Along the way, there is a bridge which the Allies may have destroyed.\n\nIf so, use the Naval options at your disposal. Our attack subs will make short work of any Allied boats you discover.
+ BriefingVideo: soviet6.vqa
+ StartVideo: onthprwl.vqa
+ WinVideo: sitduck.vqa
+ LossVideo: dpthchrg.vqa
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ hard: Hard
+ Default: easy
+
+APWR:
+ Buildable:
+ Prerequisites: ~structures.allies
+
+ARTY:
+ Buildable:
+ Prerequisites: ~vehicles.allies, ~techlevel.low
+
+ATEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+BRIK:
+ Buildable:
+ Prerequisites: ~disabled
+
+TSLA:
+ Buildable:
+ Prerequisites: ~disabled
+
+SAM:
+ Buildable:
+ Prerequisites: ~disabled
+
+IRON:
+ Buildable:
+ Prerequisites: ~disabled
+
+MECH:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+E3:
+ Buildable:
+ Prerequisites: ~tent
+
+E7:
+ Buildable:
+ Prerequisites: ~disabled
+
+SHOK:
+ Buildable:
+ Prerequisites: ~disabled
+
+SPY:
+ Buildable:
+ Prerequisites: ~disabled
+
+SNIPER:
+ Buildable:
+ Prerequisites: ~disabled
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+MIG:
+ Buildable:
+ Prerequisites: ~disabled
+
+FTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+2TNK:
+ Buildable:
+ Prerequisites: ~vehicles.allies, ~techlevel.low
+
+4TNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+APC:
+ Buildable:
+ Prerequisites: ~disabled
+
+TRUK:
+ -SpawnActorOnDeath:
+ -DeliversCash:
+ Buildable:
+ Prerequisites: ~disabled
+
+QTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSUB:
+ Buildable:
+ Prerequisites: ~disabled
+
+STEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+PDOX:
+ Buildable:
+ Prerequisites: ~disabled
+
+MRJ:
+ Buildable:
+ Prerequisites: ~disabled
+
+CA:
+ Buildable:
+ Prerequisites: ~disabled
+
+HELI:
+ Buildable:
+ Prerequisites: ~disabled
+
+GAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+MNLY:
+ Buildable:
+ Prerequisites: ~disabled
+
+HARV:
+ Harvester:
+ SearchFromProcRadius: 50
+ SearchFromOrderRadius: 50
+
+AFLD:
+ ParatroopersPower@paratroopers:
+ DropItems: E1,E1,E1,E1,E1
diff --git a/mods/ura/maps/soviet-06b/soviet06b-AI.lua b/mods/ura/maps/soviet-06b/soviet06b-AI.lua
new file mode 100644
index 0000000..ac1cf26
--- /dev/null
+++ b/mods/ura/maps/soviet-06b/soviet06b-AI.lua
@@ -0,0 +1,119 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+IdleHunt = function(unit) if not unit.IsDead then Trigger.OnIdle(unit, unit.Hunt) end end
+
+IdlingUnits = function()
+ local lazyUnits = enemy.GetGroundAttackers()
+
+ Utils.Do(lazyUnits, function(unit)
+ Trigger.OnDamaged(unit, function()
+ Trigger.ClearAll(unit)
+ Trigger.AfterDelay(0, function() IdleHunt(unit) end)
+ end)
+ end)
+end
+
+BaseApwr = { type = "apwr", pos = CVec.New(5, -9), cost = 500, exists = true }
+BaseTent = { type = "tent", pos = CVec.New(-4, -4), cost = 400, exists = true }
+BaseProc = { type = "proc", pos = CVec.New(0, -8), cost = 1400, exists = true }
+BaseWeap = { type = "weap", pos = CVec.New(-4, -8), cost = 2000, exists = true }
+BaseApwr2 = { type = "apwr", pos = CVec.New(6, -5), cost = 500, exists = true }
+
+BaseBuildings = { BaseApwr, BaseTent, BaseProc, BaseWeap, BaseApwr2 }
+
+BuildBase = function()
+ for i,v in ipairs(BaseBuildings) do
+ if not v.exists then
+ BuildBuilding(v)
+ return
+ end
+ end
+
+ Trigger.AfterDelay(DateTime.Seconds(10), BuildBase)
+end
+
+BuildBuilding = function(building)
+ Trigger.AfterDelay(Actor.BuildTime(building.type), function()
+ if CYard.IsDead or CYard.Owner ~= enemy then
+ return
+ elseif Harvester.IsDead and enemy.Resources <= 299 then
+ return
+ end
+
+ local actor = Actor.Create(building.type, true, { Owner = enemy, Location = CYardLocation.Location + building.pos })
+ enemy.Cash = enemy.Cash - building.cost
+
+ building.exists = true
+ Trigger.OnKilled(actor, function() building.exists = false end)
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == enemy and building.Health < building.MaxHealth * 3/4 then
+ building.StartBuildingRepairs()
+ end
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(10), BuildBase)
+ end)
+end
+
+ProduceInfantry = function()
+ if not BaseTent.exists then
+ return
+ elseif Harvester.IsDead and enemy.Resources <= 299 then
+ return
+ end
+
+ local delay = Utils.RandomInteger(DateTime.Seconds(3), DateTime.Seconds(9))
+ local toBuild = { Utils.Random(AlliedInfantryTypes) }
+ local Path = Utils.Random(AttackPaths)
+ enemy.Build(toBuild, function(unit)
+ InfAttack[#InfAttack + 1] = unit[1]
+
+ if #InfAttack >= 10 then
+ SendUnits(InfAttack, Path)
+ InfAttack = { }
+ Trigger.AfterDelay(DateTime.Minutes(2), ProduceInfantry)
+ else
+ Trigger.AfterDelay(delay, ProduceInfantry)
+ end
+ end)
+end
+
+ProduceArmor = function()
+ if not BaseWeap.exists then
+ return
+ elseif Harvester.IsDead and enemy.Resources <= 599 then
+ return
+ end
+
+ local delay = Utils.RandomInteger(DateTime.Seconds(12), DateTime.Seconds(17))
+ local toBuild = { Utils.Random(AlliedArmorTypes) }
+ local Path = Utils.Random(AttackPaths)
+ enemy.Build(toBuild, function(unit)
+ ArmorAttack[#ArmorAttack + 1] = unit[1]
+
+ if #ArmorAttack >= 6 then
+ SendUnits(ArmorAttack, Path)
+ ArmorAttack = { }
+ Trigger.AfterDelay(DateTime.Minutes(3), ProduceArmor)
+ else
+ Trigger.AfterDelay(delay, ProduceArmor)
+ end
+ end)
+end
+
+SendUnits = function(units, waypoints)
+ Utils.Do(units, function(unit)
+ if not unit.IsDead then
+ Utils.Do(waypoints, function(waypoint)
+ unit.AttackMove(waypoint.Location)
+ end)
+ IdleHunt(unit)
+ end
+ end)
+end
diff --git a/mods/ura/maps/soviet-06b/soviet06b-reinforcements_teams.lua b/mods/ura/maps/soviet-06b/soviet06b-reinforcements_teams.lua
new file mode 100644
index 0000000..c9015df
--- /dev/null
+++ b/mods/ura/maps/soviet-06b/soviet06b-reinforcements_teams.lua
@@ -0,0 +1,67 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+EnemyReinforcements =
+{
+ easy =
+ {
+ { "e1", "e1", "e3" },
+ { "e1", "e3", "jeep" },
+ { "e1", "jeep", "1tnk" }
+ },
+
+ normal =
+ {
+ { "e1", "e1", "e3", "e3" },
+ { "e1", "e3", "jeep", "jeep" },
+ { "e1", "jeep", "1tnk", "2tnk" }
+ },
+
+ hard =
+ {
+ { "e1", "e1", "e3", "e3", "e1" },
+ { "e1", "e3", "jeep", "jeep", "1tnk" },
+ { "e1", "jeep", "1tnk", "2tnk", "arty" }
+ }
+}
+
+EnemyAttackDelay =
+{
+ easy = DateTime.Minutes(5),
+ normal = DateTime.Minutes(2) + DateTime.Seconds(40),
+ hard = DateTime.Minutes(1) + DateTime.Seconds(30)
+}
+
+EnemyPaths =
+{
+ { EnemyEntry1.Location, EnemyRally1.Location },
+ { EnemyEntry2.Location, EnemyRally2.Location }
+}
+
+wave = 0
+SendEnemies = function()
+ Trigger.AfterDelay(EnemyAttackDelay[Map.LobbyOption("difficulty")], function()
+
+ wave = wave + 1
+ if wave > 3 then
+ wave = 1
+ end
+
+ if wave == 1 then
+ local units = Reinforcements.ReinforceWithTransport(enemy, "tran", EnemyReinforcements[Map.LobbyOption("difficulty")][wave], EnemyPaths[1], { EnemyPaths[1][1] })[2]
+ Utils.Do(units, IdleHunt)
+ else
+ local units = Reinforcements.ReinforceWithTransport(enemy, "lst", EnemyReinforcements[Map.LobbyOption("difficulty")][wave], EnemyPaths[2], { EnemyPaths[2][1] })[2]
+ Utils.Do(units, IdleHunt)
+ end
+
+ if not Dome.IsDead then
+ SendEnemies()
+ end
+ end)
+end
diff --git a/mods/ura/maps/soviet-06b/soviet06b.lua b/mods/ura/maps/soviet-06b/soviet06b.lua
new file mode 100644
index 0000000..904bf8e
--- /dev/null
+++ b/mods/ura/maps/soviet-06b/soviet06b.lua
@@ -0,0 +1,128 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+IntroAttackers = { IntroEnemy1, IntroEnemy2, IntroEnemy3 }
+Trucks = { Truck1, Truck2 }
+InfAttack = { }
+ArmorAttack = { }
+AttackPaths = { { AttackWaypoint1 }, { AttackWaypoint2 } }
+
+AlliedInfantryTypes = { "e1", "e1", "e3" }
+AlliedArmorTypes = { "jeep", "jeep", "1tnk", "1tnk", "2tnk", "2tnk", "arty" }
+
+SovietReinforcements1 = { "e6", "e6", "e6", "e6", "e6" }
+SovietReinforcements2 = { "e4", "e4", "e2", "e2", "e2" }
+SovietReinforcements1Waypoints = { McvWaypoint.Location, APCWaypoint1.Location }
+SovietReinforcements2Waypoints = { McvWaypoint.Location, APCWaypoint2.Location }
+
+TruckGoalTrigger = { CPos.New(85, 10), CPos.New(85, 11), CPos.New(85, 12), CPos.New(86, 13), CPos.New(87, 13), CPos.New(88, 13), CPos.New(88, 14), CPos.New(89, 14), CPos.New(90, 14), CPos.New(90, 15), CPos.New(91, 15), CPos.New(91, 16), CPos.New(91, 17), CPos.New(92, 17), CPos.New(93, 17), CPos.New(94, 17), CPos.New(94, 18), CPos.New(95, 18), CPos.New(96, 18), CPos.New(96, 19), CPos.New(97, 19), CPos.New(98, 19)}
+
+Trigger.OnEnteredFootprint(TruckGoalTrigger, function(a, id)
+ if not truckGoalTrigger and a.Owner == player and a.Type == "truk" then
+ truckGoalTrigger = true
+ player.MarkCompletedObjective(sovietObjective)
+ player.MarkCompletedObjective(SaveAllTrucks)
+ end
+end)
+
+Trigger.OnAllKilled(Trucks, function()
+ enemy.MarkCompletedObjective(alliedObjective)
+end)
+
+Trigger.OnAnyKilled(Trucks, function()
+ player.MarkFailedObjective(SaveAllTrucks)
+end)
+
+Trigger.OnKilled(Apwr, function(building)
+ BaseApwr.exists = false
+end)
+
+Trigger.OnKilled(Barr, function(building)
+ BaseTent.exists = false
+end)
+
+Trigger.OnKilled(Proc, function(building)
+ BaseProc.exists = false
+end)
+
+Trigger.OnKilled(Weap, function(building)
+ BaseWeap.exists = false
+end)
+
+Trigger.OnKilled(Apwr2, function(building)
+ BaseApwr2.exists = false
+end)
+
+Trigger.OnKilledOrCaptured(Dome, function()
+ Trigger.AfterDelay(DateTime.Seconds(2), function()
+ player.MarkCompletedObjective(sovietObjective2)
+ Media.PlaySpeechNotification(player, "ObjectiveMet")
+ end)
+end)
+
+Trigger.OnRemovedFromWorld(Mcv, function()
+ if not mcvDeployed then
+ mcvDeployed = true
+ BuildBase()
+ SendEnemies()
+ Trigger.AfterDelay(DateTime.Minutes(1), ProduceInfantry)
+ Trigger.AfterDelay(DateTime.Minutes(2), ProduceArmor)
+ end
+end)
+
+WorldLoaded = function()
+ player = Player.GetPlayer("USSR")
+ enemy = Player.GetPlayer("Greece")
+ Camera.Position = CameraStart.CenterPosition
+ Mcv.Move(McvWaypoint.Location)
+ Harvester.FindResources()
+ Utils.Do(IntroAttackers, function(actor)
+ IdleHunt(actor)
+ end)
+ Reinforcements.ReinforceWithTransport(player, "apc", SovietReinforcements1, SovietReinforcements1Waypoints)
+ Reinforcements.ReinforceWithTransport(player, "apc", SovietReinforcements2, SovietReinforcements2Waypoints)
+ Utils.Do(Map.NamedActors, function(actor)
+ if actor.Owner == enemy and actor.HasProperty("StartBuildingRepairs") then
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == enemy and building.Health < 3/4 * building.MaxHealth then
+ building.StartBuildingRepairs()
+ end
+ end)
+ end
+ end)
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "Win")
+ end)
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "Lose")
+ end)
+ alliedObjective = enemy.AddPrimaryObjective("Destroy all Soviet troops.")
+ sovietObjective = player.AddPrimaryObjective("Escort the Convoy.")
+ sovietObjective2 = player.AddSecondaryObjective("Destroy or capture the Allied radar dome to stop\nenemy reinforcements.")
+ SaveAllTrucks = player.AddSecondaryObjective("Keep all trucks alive.")
+end
+
+Tick = function()
+ if player.HasNoRequiredUnits() then
+ enemy.MarkCompletedObjective(alliedObjective)
+ end
+
+ if enemy.Resources >= enemy.ResourceCapacity * 0.75 then
+ enemy.Cash = enemy.Cash + enemy.Resources - enemy.ResourceCapacity * 0.25
+ enemy.Resources = enemy.ResourceCapacity * 0.25
+ end
+end
diff --git a/mods/ura/maps/soviet-07/map.bin b/mods/ura/maps/soviet-07/map.bin
new file mode 100644
index 0000000..b6090bb
Binary files /dev/null and b/mods/ura/maps/soviet-07/map.bin differ
diff --git a/mods/ura/maps/soviet-07/map.png b/mods/ura/maps/soviet-07/map.png
new file mode 100644
index 0000000..dc77417
Binary files /dev/null and b/mods/ura/maps/soviet-07/map.png differ
diff --git a/mods/ura/maps/soviet-07/map.yaml b/mods/ura/maps/soviet-07/map.yaml
new file mode 100644
index 0000000..921adb2
--- /dev/null
+++ b/mods/ura/maps/soviet-07/map.yaml
@@ -0,0 +1,795 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: 07: Core of the matter
+
+Author: Westwood Studios
+
+Tileset: INTERIOR
+
+MapSize: 128,128
+
+Bounds: 40,43,70,45
+
+Visibility: MissionSelector
+
+Categories: Campaign
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: england
+ PlayerReference@Creeps:
+ Name: Creeps
+ NonCombatant: True
+ Faction: england
+ Enemies: Greece, USSR
+ PlayerReference@Greece:
+ Name: Greece
+ Faction: allies
+ Color: E2E6F5
+ Allies: Soviet
+ Enemies: USSR, Creeps
+ PlayerReference@USSR:
+ Name: USSR
+ AllowBots: False
+ Playable: True
+ Required: True
+ LockFaction: True
+ Faction: soviet
+ LockColor: True
+ Color: FE1100
+ LockSpawn: True
+ LockTeam: True
+ Allies: Soviet
+ Enemies: Greece, Creeps
+ PlayerReference@Soviet:
+ Name: Soviet
+ Faction: soviet
+ Color: FE1100
+ Allies: USSR, Greece
+ PlayerReference@Spain:
+ Name: Spain
+ Faction: allies
+ Color: 0CBB4A
+
+Actors:
+ Actor0: boxes01
+ Location: 49,46
+ Owner: Neutral
+ Actor1: boxes02
+ Location: 42,46
+ Owner: Neutral
+ Actor2: boxes03
+ Location: 49,48
+ Owner: Neutral
+ Actor3: boxes04
+ Location: 42,48
+ Owner: Neutral
+ Actor4: boxes06
+ Location: 48,46
+ Owner: Neutral
+ Actor5: boxes07
+ Location: 49,47
+ Owner: Neutral
+ Actor6: boxes01
+ Location: 67,74
+ Owner: Neutral
+ Actor7: boxes01
+ Location: 47,68
+ Owner: Neutral
+ Actor8: boxes02
+ Location: 42,67
+ Owner: Neutral
+ Actor9: boxes01
+ Location: 43,67
+ Owner: Neutral
+ Actor10: boxes01
+ Location: 44,67
+ Owner: Neutral
+ Actor11: boxes03
+ Location: 48,60
+ Owner: Neutral
+ Actor12: boxes03
+ Location: 44,68
+ Owner: Neutral
+ Actor13: boxes04
+ Location: 46,66
+ Owner: Neutral
+ Actor14: boxes04
+ Location: 47,69
+ Owner: Neutral
+ Actor15: boxes03
+ Location: 44,69
+ Owner: Neutral
+ Actor16: boxes02
+ Location: 44,62
+ Owner: Neutral
+ Actor17: boxes02
+ Location: 49,68
+ Owner: Neutral
+ Actor18: boxes01
+ Location: 48,66
+ Owner: Neutral
+ Actor19: boxes01
+ Location: 43,65
+ Owner: Neutral
+ Actor20: boxes02
+ Location: 46,65
+ Owner: Neutral
+ Actor21: boxes03
+ Location: 44,65
+ Owner: Neutral
+ Actor22: boxes01
+ Location: 43,62
+ Owner: Neutral
+ Actor23: boxes04
+ Location: 43,63
+ Owner: Neutral
+ Actor24: boxes05
+ Location: 43,64
+ Owner: Neutral
+ Actor25: boxes05
+ Location: 41,67
+ Owner: Neutral
+ Actor26: boxes05
+ Location: 47,66
+ Owner: Neutral
+ Actor27: boxes05
+ Location: 46,62
+ Owner: Neutral
+ Actor28: boxes06
+ Location: 48,62
+ Owner: Neutral
+ Actor29: boxes04
+ Location: 49,62
+ Owner: Neutral
+ Actor30: boxes03
+ Location: 49,63
+ Owner: Neutral
+ Actor31: boxes03
+ Location: 46,64
+ Owner: Neutral
+ Actor32: boxes03
+ Location: 48,68
+ Owner: Neutral
+ Actor33: boxes02
+ Location: 46,61
+ Owner: Neutral
+ Actor34: boxes01
+ Location: 46,60
+ Owner: Neutral
+ Actor35: boxes04
+ Location: 43,59
+ Owner: Neutral
+ Actor36: boxes04
+ Location: 43,60
+ Owner: Neutral
+ Actor37: boxes05
+ Location: 42,57
+ Owner: Neutral
+ Actor38: boxes06
+ Location: 43,58
+ Owner: Neutral
+ Actor39: boxes07
+ Location: 45,62
+ Owner: Neutral
+ Actor40: boxes08
+ Location: 45,56
+ Owner: Neutral
+ Actor41: boxes05
+ Location: 46,57
+ Owner: Neutral
+ Actor42: boxes03
+ Location: 48,57
+ Owner: Neutral
+ Actor43: boxes03
+ Location: 44,55
+ Owner: Neutral
+ Actor44: boxes09
+ Location: 46,54
+ Owner: Neutral
+ Actor45: boxes08
+ Location: 45,55
+ Owner: Neutral
+ Actor46: boxes07
+ Location: 45,54
+ Owner: Neutral
+ Actor47: boxes05
+ Location: 45,53
+ Owner: Neutral
+ Actor48: boxes04
+ Location: 47,55
+ Owner: Neutral
+ Actor49: boxes03
+ Location: 47,54
+ Owner: Neutral
+ Actor50: boxes03
+ Location: 47,60
+ Owner: Neutral
+ Actor51: boxes02
+ Location: 46,59
+ Owner: Neutral
+ Actor52: boxes01
+ Location: 49,57
+ Owner: Neutral
+ Actor53: boxes05
+ Location: 46,63
+ Owner: Neutral
+ Actor54: boxes01
+ Location: 41,57
+ Owner: Neutral
+ Actor55: boxes01
+ Location: 45,57
+ Owner: Neutral
+ Actor56: boxes02
+ Location: 45,58
+ Owner: Neutral
+ Actor57: boxes03
+ Location: 45,59
+ Owner: Neutral
+ Actor58: boxes01
+ Location: 46,56
+ Owner: Neutral
+ Actor59: boxes01
+ Location: 43,57
+ Owner: Neutral
+ Actor60: boxes01
+ Location: 46,55
+ Owner: Neutral
+ Actor61: boxes06
+ Location: 86,69
+ Owner: Neutral
+ Actor65: barl
+ Location: 98,45
+ Owner: Creeps
+ Actor66: barl
+ Location: 98,49
+ Owner: Creeps
+ Actor67: brl3
+ Location: 98,46
+ Owner: Creeps
+ Actor68: brl3
+ Location: 100,44
+ Owner: Creeps
+ Actor69: barl
+ Location: 105,48
+ Owner: Creeps
+ Actor70: barl
+ Location: 106,49
+ Owner: Creeps
+ Actor71: barl
+ Location: 105,50
+ Owner: Creeps
+ Actor72: brl3
+ Location: 105,51
+ Owner: Creeps
+ Actor73: barl
+ Location: 106,52
+ Owner: Creeps
+ Actor75: barl
+ Location: 105,54
+ Owner: Creeps
+ Actor76: barl
+ Location: 105,55
+ Owner: Creeps
+ Actor77: brl3
+ Location: 105,56
+ Owner: Creeps
+ Actor78: brl3
+ Location: 106,57
+ Owner: Creeps
+ Actor79: barl
+ Location: 105,58
+ Owner: Creeps
+ Actor80: barl
+ Location: 105,59
+ Owner: Creeps
+ Actor81: barl
+ Location: 106,60
+ Owner: Creeps
+ Actor82: barl
+ Location: 105,61
+ Owner: Creeps
+ Actor83: brl3
+ Location: 106,62
+ Owner: Creeps
+ Actor84: barl
+ Location: 104,63
+ Owner: Creeps
+ Actor86: barl
+ Location: 98,47
+ Owner: Creeps
+ Actor87: brl3
+ Location: 98,48
+ Owner: Creeps
+ Actor88: brl3
+ Location: 105,63
+ Owner: Creeps
+ Actor89: barl
+ Location: 101,44
+ Owner: Creeps
+ Actor90: brl3
+ Location: 69,74
+ Owner: Creeps
+ Actor93: brl3
+ Location: 64,73
+ Owner: Creeps
+ Actor94: barl
+ Location: 62,73
+ Owner: Creeps
+ Actor95: barl
+ Location: 65,73
+ Owner: Creeps
+ Actor97: barl
+ Location: 70,74
+ Owner: Creeps
+ Actor98: brl3
+ Location: 70,72
+ Owner: Creeps
+ Actor99: barl
+ Location: 69,72
+ Owner: Creeps
+ Actor100: brl3
+ Location: 43,46
+ Owner: Creeps
+ Actor101: barl
+ Location: 45,45
+ Owner: Creeps
+ Actor102: brl3
+ Location: 47,46
+ Owner: Creeps
+ Actor103: barl
+ Location: 44,45
+ Owner: Creeps
+ Actor104: brl3
+ Location: 46,45
+ Owner: Creeps
+ Actor105: brl3
+ Location: 63,73
+ Owner: Creeps
+ Actor106: brl3
+ Location: 49,71
+ Owner: Creeps
+ Actor107: barl
+ Location: 48,71
+ Owner: Creeps
+ Actor108: brl3
+ Location: 47,72
+ Owner: Creeps
+ Actor110: barl
+ Location: 45,72
+ Owner: Creeps
+ Actor111: brl3
+ Location: 45,71
+ Owner: Creeps
+ Actor112: brl3
+ Location: 44,70
+ Owner: Creeps
+ Actor113: barl
+ Location: 43,71
+ Owner: Creeps
+ Actor114: brl3
+ Location: 44,72
+ Owner: Creeps
+ Actor115: brl3
+ Location: 42,72
+ Owner: Creeps
+ Actor116: barl
+ Location: 42,70
+ Owner: Creeps
+ Actor117: brl3
+ Location: 43,69
+ Owner: Creeps
+ Actor118: barl
+ Location: 42,73
+ Owner: Creeps
+ Actor119: barl
+ Location: 42,74
+ Owner: Creeps
+ Actor120: barl
+ Location: 83,67
+ Owner: Creeps
+ Actor121: barl
+ Location: 83,68
+ Owner: Creeps
+ Actor122: barl
+ Location: 83,69
+ Owner: Creeps
+ Actor124: barl
+ Location: 81,79
+ Owner: Creeps
+ Actor125: barl
+ Location: 81,80
+ Owner: Creeps
+ Actor126: brl3
+ Location: 82,80
+ Owner: Creeps
+ Actor127: bio
+ Location: 65,46
+ Owner: Greece
+ Actor128: bio
+ Location: 87,46
+ Owner: Greece
+ Actor130: barl
+ Location: 80,79
+ Owner: Creeps
+ Actor133: barl
+ Location: 99,44
+ Owner: Creeps
+ Actor134: brl3
+ Location: 98,44
+ Owner: Creeps
+ Actor135: brl3
+ Location: 99,45
+ Owner: Creeps
+ Actor136: barl
+ Location: 102,44
+ Owner: Creeps
+ Actor138: barl
+ Location: 78,80
+ Owner: Creeps
+ Actor139: brl3
+ Location: 79,80
+ Owner: Creeps
+ Actor150: e1
+ Location: 84,67
+ Owner: Greece
+ Facing: 192
+ SubCell: 4
+ Actor172: e1
+ Location: 77,80
+ Owner: Greece
+ Facing: 224
+ SubCell: 2
+ Actor214: healcrate
+ Owner: Neutral
+ Location: 88,69
+ Actor227: flare
+ Owner: Spain
+ Location: 75,49
+ Actor226: flare
+ Owner: Spain
+ Location: 76,49
+ Actor228: flare
+ Owner: Spain
+ Location: 75,48
+ Actor229: flare
+ Owner: Spain
+ Location: 76,48
+ Actor223: brl3
+ Owner: Creeps
+ Location: 105,53
+ BarlCC: barl
+ Location: 83,70
+ Owner: Creeps
+ CameraCC: camera
+ Owner: Neutral
+ Location: 87,69
+ CameraFTurBottom: camera
+ Owner: Neutral
+ Location: 62,80
+ CameraFTurLeft: camera
+ Owner: Neutral
+ Location: 59,65
+ CameraFTurRight: camera
+ Owner: Neutral
+ Location: 93,65
+ CameraGoalCenter1: camera
+ Owner: Neutral
+ Location: 75,51
+ CameraGoalCenter2: camera
+ Owner: Neutral
+ Location: 75,55
+ CameraGoalCenter3: camera
+ Owner: Neutral
+ Location: 75,61
+ CameraGoalLeft1: camera
+ Owner: Neutral
+ Location: 68,58
+ CameraGoalLeft2: camera
+ Owner: Neutral
+ Location: 68,63
+ CameraGoalRight1: camera
+ Owner: Neutral
+ Location: 84,58
+ CameraGoalRight2: camera
+ Owner: Neutral
+ Location: 84,63
+ CameraRSoldier: camera
+ Owner: Neutral
+ Location: 62,72
+ CameraStart1: camera
+ Owner: Neutral
+ Location: 102,48
+ CameraStart2: camera
+ Owner: Neutral
+ Location: 102,54
+ CameraSoldierTrap2: camera
+ Owner: Neutral
+ Location: 47,71
+ CCGuard1: e1
+ Location: 87,67
+ Owner: Greece
+ Facing: 192
+ SubCell: 3
+ CCGuard2: e1
+ Location: 88,67
+ Owner: Greece
+ Facing: 192
+ SubCell: 4
+ CCGuard3: e1
+ Location: 88,68
+ Owner: Greece
+ Facing: 192
+ SubCell: 1
+ CCGuard4: e1
+ Location: 87,68
+ Owner: Greece
+ Facing: 192
+ SubCell: 3
+ Dog1: dog
+ Location: 84,84
+ Owner: Soviet
+ Facing: 224
+ SubCell: 1
+ Dog2: dog
+ Owner: Soviet
+ Location: 84,83
+ SubCell: 3
+ Facing: 92
+ Dog3: dog
+ Location: 82,83
+ Owner: Soviet
+ SubCell: 4
+ Dog4: dog
+ Location: 80,83
+ Owner: Soviet
+ Facing: 64
+ SubCell: 2
+ Dog5: dog
+ Location: 85,82
+ Owner: Soviet
+ Facing: 224
+ SubCell: 1
+ Dog6: dog
+ Location: 85,79
+ Owner: Soviet
+ Facing: 192
+ SubCell: 4
+ Dog7: dog
+ Location: 85,81
+ Owner: Soviet
+ Facing: 192
+ SubCell: 4
+ Dog8: dog
+ Location: 86,83
+ Owner: Soviet
+ Facing: 224
+ SubCell: 1
+ Dog9: dog
+ Location: 86,84
+ Owner: Soviet
+ SubCell: 0
+ Dog10: dog
+ Location: 86,82
+ Owner: Soviet
+ Facing: 192
+ SubCell: 0
+ Dog11: dog
+ Location: 82,84
+ Owner: Soviet
+ Facing: 32
+ SubCell: 1
+ Dog12: dog
+ Location: 83,84
+ Owner: Soviet
+ SubCell: 1
+ Dog13: dog
+ Location: 86,81
+ Owner: Soviet
+ Facing: 32
+ SubCell: 1
+ Dog14: dog
+ Location: 85,83
+ Owner: Soviet
+ SubCell: 3
+ Dog15: dog
+ Location: 81,83
+ Owner: Soviet
+ SubCell: 4
+ Dog16: dog
+ Location: 86,80
+ Owner: Soviet
+ SubCell: 4
+ Dog17: dog
+ Location: 85,84
+ Owner: Soviet
+ SubCell: 0
+ Dog18: dog
+ Location: 81,84
+ Owner: Soviet
+ SubCell: 1
+ Dog19: dog
+ Location: 86,79
+ Owner: Soviet
+ Facing: 224
+ SubCell: 0
+ EntranceGuard1: e1
+ Location: 100,57
+ Owner: Greece
+ SubCell: 1
+ EntranceGuard2: e1
+ Location: 99,55
+ Owner: Greece
+ SubCell: 1
+ EntranceGuard3: e1
+ Location: 100,56
+ Owner: Greece
+ SubCell: 2
+ EntranceGuard4: e1
+ Location: 98,56
+ Owner: Greece
+ SubCell: 2
+ EntranceGuard5: e1
+ Location: 98,57
+ Owner: Greece
+ SubCell: 1
+ EntranceGuard6: e1
+ Location: 99,56
+ Owner: Greece
+ SubCell: 2
+ EntranceGuard7: e1
+ Location: 97,56
+ Owner: Greece
+ SubCell: 2
+ EntranceGuard8: e1
+ Location: 99,56
+ Owner: Greece
+ SubCell: 3
+ Tanya: e7
+ Location: 75,54
+ Owner: Greece
+ Facing: 128
+ SubCell: 2
+ GoalGuard1: e1
+ Location: 74,54
+ Owner: Greece
+ Facing: 128
+ SubCell: 2
+ GoalGuard2: e1
+ Location: 73,54
+ Owner: Greece
+ Facing: 128
+ SubCell: 2
+ GoalGuard3: e1
+ Location: 76,54
+ Owner: Greece
+ Facing: 128
+ SubCell: 2
+ GoalGuard4: e1
+ Location: 77,54
+ Owner: Greece
+ Facing: 128
+ SubCell: 2
+ FTurBottom: ftur
+ Location: 62,79
+ Owner: Greece
+ FTur1Goal: waypoint
+ Owner: Neutral
+ Location: 77,53
+ FTur2Goal: waypoint
+ Owner: Neutral
+ Location: 74,53
+ FTurLeft: ftur
+ Location: 45,50
+ Owner: Greece
+ FTurPrisoners: ftur
+ Location: 59,64
+ Owner: Greece
+ FTurRight: ftur
+ Location: 93,64
+ Owner: Greece
+ PBox: pbox
+ Location: 83,81
+ Owner: Greece
+ PBoxBrl: brl3
+ Location: 80,80
+ Owner: Creeps
+ Prisoner1: e6
+ Location: 44,46
+ Owner: Soviet
+ Facing: 160
+ SubCell: 4
+ Prisoner2: e6
+ Location: 44,47
+ Owner: Soviet
+ Facing: 128
+ SubCell: 4
+ Prisoner3: e6
+ Location: 46,47
+ Owner: Soviet
+ Facing: 96
+ SubCell: 0
+ Prisoner4: e6
+ Location: 45,47
+ Owner: Soviet
+ Facing: 96
+ SubCell: 1
+ Prisoner5: e6
+ Location: 46,46
+ Owner: Soviet
+ Facing: 128
+ SubCell: 3
+ Prisoner6: e1
+ Location: 46,46
+ Owner: Soviet
+ Health: 51
+ SubCell: 4
+ PrisonEntranceGuard: e1
+ Location: 46,69
+ Owner: Greece
+ Facing: 128
+ SubCell: 1
+ PrisonerGuard1: e1
+ Location: 45,48
+ Owner: Greece
+ SubCell: 0
+ PrisonerGuard2: e1
+ Location: 46,49
+ Owner: Greece
+ Facing: 128
+ SubCell: 0
+ PrisonerGuard3: e1
+ Location: 44,49
+ Owner: Greece
+ Facing: 128
+ SubCell: 0
+ RSoldier1: e3
+ Owner: Greece
+ Location: 65,72
+ SubCell: 3
+ Facing: 92
+ TurretFacing: 92
+ RSoldier2: e3
+ Location: 65,74
+ Owner: Greece
+ Facing: 92
+ SubCell: 2
+ TurretFacing: 92
+ RSoldierTrap1: brl3
+ Owner: Creeps
+ Location: 68,72
+ RSoldierTrap2: barl
+ Owner: Creeps
+ Location: 68,74
+ StartingUnitsSpawn: waypoint
+ Location: 102,43
+ Owner: Neutral
+ SoldierTrap1: brl3
+ Owner: Creeps
+ Location: 98,50
+ SoldierTrap2: barl
+ Owner: Creeps
+ Location: 46,71
+ SoldierTrap1Waypoint1: waypoint
+ Location: 102,46
+ Owner: Neutral
+ SoldierTrap1Waypoint2: waypoint
+ Owner: Neutral
+ Location: 104,53
+ SoldierTrap1Waypoint3: waypoint
+ Owner: Neutral
+ Location: 93,72
+ SoldierTrap2Waypoint: waypoint
+ Owner: Neutral
+ Location: 45,52
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
+
+Weapons: weapons.yaml
diff --git a/mods/ura/maps/soviet-07/rules.yaml b/mods/ura/maps/soviet-07/rules.yaml
new file mode 100644
index 0000000..3978f84
--- /dev/null
+++ b/mods/ura/maps/soviet-07/rules.yaml
@@ -0,0 +1,38 @@
+World:
+ LuaScript:
+ Scripts: soviet07.lua
+ MissionData:
+ Briefing: The Allies have infiltrated one of our nuclear reactors! They have tampered with the core so that a meltdown is imminent within 30 minutes. They must not succeed!\n\nEnter the base and find any remaining technicians. Guide them to the 4 coolant stations so they can activate them, then activate the main computer. The security systems have been armed so beware.\n\nKill any Allies you find.
+ BriefingVideo: soviet7.vqa
+ StartVideo: countdwn.vqa
+ WinVideo: averted.vqa
+ LossVideo: nukestok.vqa
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ hard: Hard
+ Default: easy
+
+Player:
+ LobbyPrerequisiteCheckbox@GLOBALBOUNTY:
+ Enabled: False
+ Locked: True
+
+CAMERA:
+ RevealsShroud:
+ Range: 6c0
+
+FTUR:
+ Valued:
+ Cost: 0
+ Power:
+ Amount: 0
+ -Sellable:
+
+PBOX:
+ -AutoTarget:
+ -AutoTargetPriority@DEFAULT:
+ -AutoTargetPriority@ATTACKANYTHING:
diff --git a/mods/ura/maps/soviet-07/soviet07.lua b/mods/ura/maps/soviet-07/soviet07.lua
new file mode 100644
index 0000000..d5c7bcf
--- /dev/null
+++ b/mods/ura/maps/soviet-07/soviet07.lua
@@ -0,0 +1,333 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+if Map.LobbyOption("difficulty") == "easy" then
+ remainingTime = DateTime.Minutes(7)
+elseif Map.LobbyOption("difficulty") == "normal" then
+ remainingTime = DateTime.Minutes(6)
+elseif Map.LobbyOption("difficulty") == "hard" then
+ remainingTime = DateTime.Minutes(5)
+end
+
+Dogs = { Dog1, Dog2, Dog3, Dog4, Dog5, Dog6, Dog7, Dog8, Dog9, Dog10, Dog11, Dog12, Dog13, Dog14, Dog15, Dog16, Dog17, Dog18, Dog19 }
+Engineers = { Prisoner1, Prisoner2, Prisoner3, Prisoner4, Prisoner5 }
+PrisonerGuards = { PrisonerGuard1, PrisonerGuard2, PrisonerGuard3 }
+EntranceGuards = { EntranceGuard1, EntranceGuard2, EntranceGuard3, EntranceGuard4, EntranceGuard5, EntranceGuard6, EntranceGuard7, EntranceGuard8, EntranceGuard9, EntranceGuard10 }
+GoalGuards = { GoalGuard1, GoalGuard2, GoalGuard3, GoalGuard4 }
+CCGuards = { CCGuard1, CCGuard2, CCGuard3, CCGuard4 }
+StartingUnitsReinforcements = { "e1", "e1", "e1", "e1" }
+
+CameraCCTrigger = { CPos.New(83, 71), CPos.New(84,71) }
+CameraGoalCenterTrigger = { CPos.New(74, 66), CPos.New(75, 66), CPos.New(76, 66), CPos.New(77, 66) }
+CameraGoalLeftTrigger = { CPos.New(62, 59), CPos.New(62, 60), CPos.New(62, 62), CPos.New(62, 63) }
+CameraGoalRightTrigger = { CPos.New(90, 59), CPos.New(90, 60), CPos.New(90, 62), CPos.New(90, 63) }
+ControlCenterTrigger = { CPos.New(87, 67), CPos.New(88, 67) }
+ControlCenterEngineerTrigger = { CPos.New(87, 67), CPos.New(88, 67) }
+FTurBottomTrigger = { CPos.New(67, 82), CPos.New(67, 83) }
+FTurLeftTrigger = { CPos.New(57, 70), CPos.New(58, 70), CPos.New(59, 70), CPos.New(60, 70) }
+FTurRightTrigger = { CPos.New(97, 68), CPos.New(97, 69), CPos.New(97, 70) }
+GoalCenterTrigger = { CPos.New(73, 52), CPos.New(74, 52), CPos.New(75, 52), CPos.New(76, 52), CPos.New(77, 52), CPos.New(78, 52) }
+GoalLeft1Trigger = { CPos.New(65, 58), CPos.New(66, 58), CPos.New(67, 58), CPos.New(65, 59), CPos.New(66, 59), CPos.New(67, 59) }
+GoalLeft2Trigger = { CPos.New(65, 64), CPos.New(66, 64), CPos.New(67, 64), CPos.New(65, 65), CPos.New(66, 65), CPos.New(67, 65) }
+GoalRight1Trigger = { CPos.New(86, 57), CPos.New(87, 57), CPos.New(88, 57), CPos.New(86, 58), CPos.New(87, 58), CPos.New(88, 58) }
+GoalRight2Trigger = { CPos.New(86, 64), CPos.New(87, 64), CPos.New(88, 64), CPos.New(86, 65), CPos.New(87, 65), CPos.New(88, 65) }
+RSoldierTrapTrigger = { CPos.New(72, 72), CPos.New(72,73), CPos.New(72,74) }
+SoldierTrap2Trigger = { CPos.New(51, 73), CPos.New(51, 74) }
+
+Trigger.OnEnteredFootprint(CameraCCTrigger, function(a, id)
+ if not cameraCCTrigger and a.Owner == player then
+ cameraCCTrigger = true
+ Actor.Create("camera", true, { Owner = player, Location = CameraCC.Location })
+ end
+end)
+
+Trigger.OnEnteredFootprint(CameraGoalCenterTrigger, function(a, id)
+ if not cameraGoalCenterTrigger and a.Owner == player then
+ cameraGoalCenterTrigger = true
+ if not controlCenterEngineerTrigger then
+ Actor.Create("camera", true, { Owner = player, Location = CameraGoalCenter1.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraGoalCenter2.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraGoalCenter3.Location })
+ end
+ end
+end)
+
+Trigger.OnEnteredFootprint(CameraGoalLeftTrigger, function(a, id)
+ if not cameraGoalLeftTrigger and a.Owner == player then
+ cameraGoalLeftTrigger = true
+ Actor.Create("camera", true, { Owner = player, Location = CameraGoalLeft1.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraGoalLeft2.Location })
+ end
+end)
+
+Trigger.OnEnteredFootprint(CameraGoalRightTrigger, function(a, id)
+ if not cameraGoalRightTrigger and a.Owner == player then
+ cameraGoalRightTrigger = true
+ Actor.Create("camera", true, { Owner = player, Location = CameraGoalRight1.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraGoalRight2.Location })
+ end
+end)
+
+Trigger.OnEnteredFootprint(ControlCenterTrigger, function(a, id)
+ if not controlCenterTrigger and a.Owner == player and a.Type == "e1" then
+ controlCenterTrigger = true
+ FTurPrisoners.Kill()
+ FTurLeft.Kill()
+ FTurRight.Kill()
+ FTurBottom.Kill()
+ player.MarkCompletedObjective(sovietObjective1)
+ end
+end)
+
+Trigger.OnEnteredFootprint(ControlCenterEngineerTrigger, function(a, id)
+ if not controlCenterEngineerTrigger and a.Owner == player and a.Type == "e6" then
+ controlCenterEngineerTrigger = true
+ local fturA = Actor.Create("ftur", true, { Owner = player, Location = FTur1Goal.Location})
+ local fturB = Actor.Create("ftur", true, { Owner = player, Location = FTur2Goal.Location})
+ Camera.Position = CameraGoalCenter1.CenterPosition
+
+ if not cameraGoalRightTrigger then
+ Actor.Create("camera", true, { Owner = player, Location = CameraGoalCenter1.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraGoalCenter2.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraGoalCenter3.Location })
+ end
+
+ Utils.Do(GoalGuards, function(actor)
+ if not actor.IsDead then
+ actor.AttackMove(FTur1Goal.Location)
+ end
+ end)
+
+ if not Tanya.IsDead then
+ Tanya.Demolish(fturA)
+ Tanya.Demolish(fturB)
+ end
+
+ player.MarkCompletedObjective(sovietObjective4)
+ end
+end)
+
+Trigger.OnEnteredFootprint(FTurBottomTrigger, function(a, id)
+ if not fTurBottomTrigger and a.Owner == player then
+ fTurBottomTrigger = true
+ if not rSoldierTrapTrigger then
+ Actor.Create("camera", true, { Owner = player, Location = CameraRSoldier.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraFTurBottom.Location })
+ end
+ end
+end)
+
+Trigger.OnEnteredFootprint(FTurLeftTrigger, function(a, id)
+ if not fTurLeftTrigger and a.Owner == player then
+ fTurLeftTrigger = true
+ Actor.Create("camera", true, { Owner = player, Location = CameraFTurLeft.Location })
+ end
+end)
+
+Trigger.OnEnteredFootprint(FTurRightTrigger, function(a, id)
+ if not fTurRightTrigger and a.Owner == player then
+ fTurRightTrigger = true
+ Actor.Create("camera", true, { Owner = player, Location = CameraFTurRight.Location })
+ end
+end)
+
+Trigger.OnEnteredFootprint(GoalCenterTrigger, function(a, id)
+ if not goalCenterTrigger and a.Owner == player and a.Type == "e6" then
+ goalCenterTrigger = true
+ player.MarkCompletedObjective(sovietObjective5)
+ end
+end)
+
+Trigger.OnEnteredFootprint(GoalLeft1Trigger, function(a, id)
+ if not goalLeft1Trigger and a.Owner == player and a.Type == "e6" then
+ goalLeft1Trigger = true
+ Media.PlaySpeechNotification(player, "ControlCenterDeactivated")
+ end
+end)
+
+Trigger.OnEnteredFootprint(GoalLeft2Trigger, function(a, id)
+ if not goalLeft2Trigger and a.Owner == player and a.Type == "e6" then
+ goalLeft2Trigger = true
+ Media.PlaySpeechNotification(player, "ControlCenterDeactivated")
+ end
+end)
+
+Trigger.OnEnteredFootprint(GoalRight1Trigger, function(a, id)
+ if not goalRight1Trigger and a.Owner == player and a.Type == "e6" then
+ goalRight1Trigger = true
+ Media.PlaySpeechNotification(player, "ControlCenterDeactivated")
+ end
+end)
+
+Trigger.OnEnteredFootprint(GoalRight2Trigger, function(a, id)
+ if not goalRight2Trigger and a.Owner == player and a.Type == "e6" then
+ goalRight2Trigger = true
+ Media.PlaySpeechNotification(player, "ControlCenterDeactivated")
+ end
+end)
+
+Trigger.OnEnteredFootprint(RSoldierTrapTrigger, function(a, id)
+ if not rSoldierTrapTrigger and a.Owner == player then
+ rSoldierTrapTrigger = true
+ if not fTurBottomTrigger then
+ Actor.Create("camera", true, { Owner = player, Location = CameraRSoldier.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraFTurBottom.Location })
+ end
+
+ if not RSoldier1.IsDead and not RSoldierTrap1.IsDead then
+ RSoldier1.Attack(RSoldierTrap1)
+ end
+
+ if not RSoldier2.IsDead and not RSoldierTrap2.IsDead then
+ RSoldier2.Attack(RSoldierTrap2)
+ end
+ end
+end)
+
+Trigger.OnEnteredFootprint(SoldierTrap2Trigger, function(a, id)
+ if not soldierTrap2Trigger and a.Owner == player then
+ soldierTrap2Trigger = true
+ Actor.Create("camera", true, { Owner = player, Location = CameraSoldierTrap2.Location })
+ if not SoldierTrap2.IsDead then
+ PrisonEntranceGuard.Attack(SoldierTrap2)
+ end
+ PrisonEntranceGuard.Move(SoldierTrap2Waypoint.Location)
+ end
+end)
+
+Trigger.OnAllKilled(Engineers, function()
+ enemy.MarkCompletedObjective(alliedObjective)
+end)
+
+Trigger.OnAllKilled(PrisonerGuards, function()
+ Utils.Do(Engineers, function(actor)
+ actor.Owner = player
+ end)
+
+ Prisoner6.Owner = player
+ player.MarkCompletedObjective(sovietObjective2)
+end)
+
+Trigger.OnKilled(BarlCC, function()
+ if not cameraCCTrigger then
+ Actor.Create("camera", true, { Owner = player, Location = CameraCC.Location })
+ cameraCCTrigger = true
+ end
+
+ Utils.Do(CCGuards, function(actor)
+ if not actor.IsDead then
+ actor.Hunt()
+ end
+ end)
+end)
+
+Trigger.OnKilled(PBoxBrl, function()
+ PBox.Kill()
+ Utils.Do(Dogs, function(actor)
+ actor.Owner = player
+ end)
+ player.MarkCompletedObjective(sovietObjective6)
+end)
+
+Trigger.OnKilled(PrisonEntranceGuard, function()
+ if controlCenterTrigger then
+ Utils.Do(PrisonerGuards, function(actor)
+ if not actor.IsDead then
+ actor.Hunt()
+ end
+ end)
+ end
+end)
+
+IntroSequence = function()
+ StartingUnits = Reinforcements.Reinforce(player, StartingUnitsReinforcements, { StartingUnitsSpawn.Location, SoldierTrap1Waypoint1.Location }, 0)
+ Trigger.AfterDelay(DateTime.Seconds(3), function()
+ Utils.Do(EntranceGuards, function(actor)
+ if not SoldierTrap1.IsDead then
+ actor.Attack(SoldierTrap1)
+ end
+ actor.AttackMove(SoldierTrap1Waypoint1.Location)
+ actor.AttackMove(SoldierTrap1Waypoint2.Location)
+ actor.AttackMove(SoldierTrap1Waypoint3.Location)
+ end)
+ Media.PlaySpeechNotification(player, "TimerStarted")
+ timerStarted = true
+ end)
+
+ -- Trigger a game over if the player lost all human units before the security system has been deactivated
+ Trigger.OnAllKilled(StartingUnits, function()
+ if not controlCenterTrigger then
+ enemy.MarkCompletedObjective(alliedObjective)
+ end
+ end)
+end
+
+WorldLoaded = function()
+ player = Player.GetPlayer("USSR")
+ enemy = Player.GetPlayer("Greece")
+
+ Camera.Position = SoldierTrap1Waypoint1.CenterPosition
+ Actor.Create("camera", true, { Owner = player, Location = CameraStart1.Location })
+ Actor.Create("camera", true, { Owner = player, Location = CameraStart2.Location })
+
+ IntroSequence()
+
+ Trigger.OnObjectiveAdded(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+ Trigger.OnObjectiveCompleted(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(player, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+ Trigger.OnPlayerWon(player, function()
+ Media.PlaySpeechNotification(player, "Win")
+ end)
+ Trigger.OnPlayerLost(player, function()
+ Media.PlaySpeechNotification(player, "Lose")
+ end)
+
+ alliedObjective = enemy.AddPrimaryObjective("Destroy all Soviet troops.")
+ sovietObjective1 = player.AddPrimaryObjective("Deactivate the security system.")
+ sovietObjective2 = player.AddPrimaryObjective("Rescue the engineers.")
+ sovietObjective3 = player.AddPrimaryObjective("Get the engineers to the coolant stations.")
+ sovietObjective4 = player.AddPrimaryObjective("Use an Engineer to reprogram the security system.")
+ sovietObjective5 = player.AddPrimaryObjective("Get an Engineer to the reactor core.")
+ sovietObjective6 = player.AddSecondaryObjective("Free the dogs.")
+end
+
+Tick = function()
+ if player.HasNoRequiredUnits() and timerStarted then
+ enemy.MarkCompletedObjective(alliedObjective)
+ end
+
+ if remainingTime == DateTime.Minutes(5) and Map.LobbyOption("difficulty") ~= "hard" then
+ Media.PlaySpeechNotification(player, "WarningFiveMinutesRemaining")
+ elseif remainingTime == DateTime.Minutes(4) then
+ Media.PlaySpeechNotification(player, "WarningFourMinutesRemaining")
+ elseif remainingTime == DateTime.Minutes(3) then
+ Media.PlaySpeechNotification(player, "WarningThreeMinutesRemaining")
+ elseif remainingTime == DateTime.Minutes(2) then
+ Media.PlaySpeechNotification(player, "WarningTwoMinutesRemaining")
+ elseif remainingTime == DateTime.Minutes(1) then
+ Media.PlaySpeechNotification(player, "WarningOneMinuteRemaining")
+ end
+
+ if goalLeft1Trigger and goalLeft2Trigger and goalRight1Trigger and goalRight2Trigger then
+ player.MarkCompletedObjective(sovietObjective3)
+ end
+
+ if remainingTime > 0 and timerStarted then
+ UserInterface.SetMissionText("Time until Meltdown: " .. Utils.FormatTime(remainingTime), player.Color)
+ remainingTime = remainingTime - 1
+ elseif remainingTime == 0 then
+ UserInterface.SetMissionText("")
+ enemy.MarkCompletedObjective(alliedObjective)
+ end
+end
diff --git a/mods/ura/maps/soviet-07/weapons.yaml b/mods/ura/maps/soviet-07/weapons.yaml
new file mode 100644
index 0000000..077f968
--- /dev/null
+++ b/mods/ura/maps/soviet-07/weapons.yaml
@@ -0,0 +1,5 @@
+M1Carbine:
+ Range: 3c0
+
+FireballLauncher:
+ Range: 3c128
diff --git a/mods/ura/maps/sudden-death.oramap b/mods/ura/maps/sudden-death.oramap
new file mode 100644
index 0000000..4fdc0b5
Binary files /dev/null and b/mods/ura/maps/sudden-death.oramap differ
diff --git a/mods/ura/maps/sunstroke.oramap b/mods/ura/maps/sunstroke.oramap
new file mode 100644
index 0000000..eb21bb2
Binary files /dev/null and b/mods/ura/maps/sunstroke.oramap differ
diff --git a/mods/ura/maps/survival01/map.bin b/mods/ura/maps/survival01/map.bin
new file mode 100644
index 0000000..a2b65ac
Binary files /dev/null and b/mods/ura/maps/survival01/map.bin differ
diff --git a/mods/ura/maps/survival01/map.png b/mods/ura/maps/survival01/map.png
new file mode 100644
index 0000000..29bfd56
Binary files /dev/null and b/mods/ura/maps/survival01/map.png differ
diff --git a/mods/ura/maps/survival01/map.yaml b/mods/ura/maps/survival01/map.yaml
new file mode 100644
index 0000000..898e5c3
--- /dev/null
+++ b/mods/ura/maps/survival01/map.yaml
@@ -0,0 +1,1196 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Survival 01
+
+Author: Nuke'm Bro
+
+Tileset: TEMPERAT
+
+MapSize: 96,64
+
+Bounds: 4,4,88,56
+
+Visibility: MissionSelector
+
+Categories: Mission
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Allies:
+ Name: Allies
+ Playable: True
+ AllowBots: False
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: 0CF7B2
+ LockSpawn: True
+ LockTeam: True
+ Enemies: Soviets
+ PlayerReference@Soviets:
+ Name: Soviets
+ Faction: soviet
+ Color: FF0101
+ Enemies: Allies
+
+Actors:
+ Actor113: fenc
+ Location: 46,54
+ Owner: Allies
+ Actor115: fenc
+ Location: 46,55
+ Owner: Allies
+ Actor88: brik
+ Location: 48,54
+ Owner: Allies
+ Actor84: hpad
+ Location: 66,47
+ Owner: Allies
+ Actor5: brik
+ Location: 72,55
+ Owner: Allies
+ Actor4: brik
+ Location: 72,54
+ Owner: Allies
+ Actor6: brik
+ Location: 72,53
+ Owner: Allies
+ Actor77: brik
+ Location: 67,57
+ Owner: Allies
+ Actor8: brik
+ Location: 72,52
+ Owner: Allies
+ Actor9: brik
+ Location: 72,51
+ Owner: Allies
+ Actor13: brik
+ Location: 75,50
+ Owner: Allies
+ Actor12: brik
+ Location: 75,51
+ Owner: Allies
+ Actor11: brik
+ Location: 74,51
+ Owner: Allies
+ Actor10: brik
+ Location: 73,51
+ Owner: Allies
+ Actor14: brik
+ Location: 75,49
+ Owner: Allies
+ Actor15: brik
+ Location: 75,48
+ Owner: Allies
+ Actor16: brik
+ Location: 76,48
+ Owner: Allies
+ Actor17: brik
+ Location: 76,47
+ Owner: Allies
+ Actor18: brik
+ Location: 75,47
+ Owner: Allies
+ Actor19: brik
+ Location: 75,41
+ Owner: Allies
+ Actor20: brik
+ Location: 75,42
+ Owner: Allies
+ Actor21: brik
+ Location: 76,42
+ Owner: Allies
+ Actor22: brik
+ Location: 76,41
+ Owner: Allies
+ Actor23: brik
+ Location: 74,41
+ Owner: Allies
+ Actor24: brik
+ Location: 73,41
+ Owner: Allies
+ Actor25: brik
+ Location: 72,41
+ Owner: Allies
+ Actor26: brik
+ Location: 71,41
+ Owner: Allies
+ Actor27: brik
+ Location: 71,40
+ Owner: Allies
+ Actor28: brik
+ Location: 70,40
+ Owner: Allies
+ Actor29: brik
+ Location: 70,41
+ Owner: Allies
+ Actor30: brik
+ Location: 61,40
+ Owner: Allies
+ Actor31: brik
+ Location: 61,41
+ Owner: Allies
+ Actor83: hpad
+ Location: 57,48
+ Owner: Allies
+ Actor33: brik
+ Location: 60,40
+ Owner: Allies
+ Actor1: brik
+ Location: 57,56
+ Owner: Allies
+ Actor35: brik
+ Location: 59,40
+ Owner: Allies
+ Actor36: brik
+ Location: 58,40
+ Owner: Allies
+ Actor37: brik
+ Location: 57,40
+ Owner: Allies
+ Actor38: brik
+ Location: 57,41
+ Owner: Allies
+ Actor39: brik
+ Location: 56,41
+ Owner: Allies
+ Actor40: brik
+ Location: 55,41
+ Owner: Allies
+ Actor41: brik
+ Location: 54,41
+ Owner: Allies
+ Actor42: brik
+ Location: 53,41
+ Owner: Allies
+ Actor43: brik
+ Location: 53,42
+ Owner: Allies
+ Actor44: brik
+ Location: 52,42
+ Owner: Allies
+ Actor45: brik
+ Location: 51,42
+ Owner: Allies
+ Actor46: brik
+ Location: 50,42
+ Owner: Allies
+ Actor47: brik
+ Location: 49,42
+ Owner: Allies
+ Actor48: brik
+ Location: 48,42
+ Owner: Allies
+ Actor49: brik
+ Location: 48,43
+ Owner: Allies
+ Actor50: brik
+ Location: 49,43
+ Owner: Allies
+ Actor51: brik
+ Location: 48,52
+ Owner: Allies
+ Actor52: brik
+ Location: 48,51
+ Owner: Allies
+ Actor53: brik
+ Location: 48,50
+ Owner: Allies
+ Actor54: brik
+ Location: 48,49
+ Owner: Allies
+ Actor55: brik
+ Location: 48,48
+ Owner: Allies
+ Actor71: brik
+ Location: 64,56
+ Owner: Allies
+ Actor58: brik
+ Location: 46,47
+ Owner: Allies
+ Actor57: brik
+ Location: 46,48
+ Owner: Allies
+ Actor56: brik
+ Location: 47,48
+ Owner: Allies
+ Actor59: brik
+ Location: 47,47
+ Owner: Allies
+ Actor72: brik
+ Location: 64,57
+ Owner: Allies
+ Actor65: brik
+ Location: 51,57
+ Owner: Allies
+ Actor66: brik
+ Location: 50,57
+ Owner: Allies
+ Actor61: brik
+ Location: 55,57
+ Owner: Allies
+ Actor2: brik
+ Location: 57,57
+ Owner: Allies
+ Actor34: brik
+ Location: 56,57
+ Owner: Allies
+ Actor62: brik
+ Location: 54,57
+ Owner: Allies
+ Actor74: brik
+ Location: 63,56
+ Owner: Allies
+ Actor79: brik
+ Location: 65,57
+ Owner: Allies
+ Actor80: apwr
+ Location: 68,54
+ Owner: Allies
+ Actor81: powr
+ Location: 65,53
+ Owner: Allies
+ Actor63: brik
+ Location: 53,57
+ Owner: Allies
+ Actor64: brik
+ Location: 52,57
+ Owner: Allies
+ Actor68: brik
+ Location: 72,57
+ Owner: Allies
+ Actor73: brik
+ Location: 63,57
+ Owner: Allies
+ Actor69: brik
+ Location: 71,57
+ Owner: Allies
+ Actor76: brik
+ Location: 68,57
+ Owner: Allies
+ Actor78: brik
+ Location: 66,57
+ Owner: Allies
+ Actor75: brik
+ Location: 69,57
+ Owner: Allies
+ Actor70: brik
+ Location: 70,57
+ Owner: Allies
+ Actor7: brik
+ Location: 72,56
+ Owner: Allies
+ Actor60: brik
+ Location: 56,56
+ Owner: Allies
+ Actor408: weap
+ Location: 53,46
+ Owner: Allies
+ Actor32: tent
+ Location: 62,47
+ Owner: Allies
+ Actor0: brik
+ Location: 48,53
+ Owner: Allies
+ Actor111: proc
+ Location: 43,55
+ Owner: Allies
+ Actor112: fenc
+ Location: 45,54
+ Owner: Allies
+ Actor116: fenc
+ Location: 46,56
+ Owner: Allies
+ Actor89: fenc
+ Location: 65,46
+ Owner: Allies
+ Actor90: fenc
+ Location: 66,46
+ Owner: Allies
+ Actor91: fenc
+ Location: 67,46
+ Owner: Allies
+ Actor92: fenc
+ Location: 68,46
+ Owner: Allies
+ Actor93: fenc
+ Location: 68,47
+ Owner: Allies
+ Actor94: fenc
+ Location: 68,48
+ Owner: Allies
+ Actor95: fenc
+ Location: 68,49
+ Owner: Allies
+ Actor96: fenc
+ Location: 57,47
+ Owner: Allies
+ Actor97: fenc
+ Location: 58,47
+ Owner: Allies
+ Actor98: fenc
+ Location: 59,47
+ Owner: Allies
+ Actor99: fenc
+ Location: 59,48
+ Owner: Allies
+ Actor100: fenc
+ Location: 59,49
+ Owner: Allies
+ Actor101: fix
+ Location: 50,52
+ Owner: Allies
+ Actor102: dome
+ Location: 55,53
+ Owner: Allies
+ Actor103: powr
+ Location: 58,41
+ Owner: Allies
+ Actor104: apwr
+ Location: 71,48
+ Owner: Allies
+ Actor105: fact
+ Location: 59,51
+ Owner: Allies
+ Actor106: powr
+ Location: 55,42
+ Owner: Allies
+ Actor107: gun
+ Location: 64,42
+ Owner: Allies
+ Actor108: pbox
+ Location: 67,42
+ Owner: Allies
+ Actor109: pbox
+ Location: 74,45
+ Owner: Allies
+ Actor110: gun
+ Location: 50,45
+ Owner: Allies
+ Actor114: fenc
+ Location: 44,54
+ Owner: Allies
+ Actor118: fenc
+ Location: 42,57
+ Owner: Allies
+ Actor117: fenc
+ Location: 46,57
+ Owner: Allies
+ Actor67: brik
+ Location: 49,57
+ Owner: Allies
+ Actor82: brik
+ Location: 48,57
+ Owner: Allies
+ Actor85: brik
+ Location: 48,56
+ Owner: Allies
+ Actor87: brik
+ Location: 48,55
+ Owner: Allies
+ Actor86: brik
+ Location: 49,56
+ Owner: Allies
+ Actor119: fenc
+ Location: 42,56
+ Owner: Allies
+ Actor120: mine
+ Location: 30,58
+ Owner: Neutral
+ Actor121: oilb
+ Location: 43,38
+ Owner: Neutral
+ Actor122: oilb
+ Location: 36,37
+ Owner: Neutral
+ Actor124: oilb
+ Location: 88,46
+ Owner: Allies
+ Actor123: oilb
+ Location: 80,46
+ Owner: Allies
+ Actor130: fenc
+ Location: 88,48
+ Owner: Neutral
+ Actor129: fenc
+ Location: 89,48
+ Owner: Neutral
+ Actor125: fenc
+ Location: 90,45
+ Owner: Neutral
+ Actor127: fenc
+ Location: 90,47
+ Owner: Neutral
+ Actor126: fenc
+ Location: 90,46
+ Owner: Neutral
+ Actor128: fenc
+ Location: 90,48
+ Owner: Neutral
+ Actor131: fenc
+ Location: 87,48
+ Owner: Neutral
+ Actor141: fenc
+ Location: 78,11
+ Owner: Neutral
+ Actor160: fenc
+ Location: 77,4
+ Owner: Neutral
+ Actor159: fenc
+ Location: 76,4
+ Owner: Neutral
+ Actor162: fenc
+ Location: 74,4
+ Owner: Neutral
+ Actor161: fenc
+ Location: 78,4
+ Owner: Neutral
+ Actor136: fenc
+ Location: 75,11
+ Owner: Neutral
+ Actor137: fenc
+ Location: 75,10
+ Owner: Neutral
+ Actor138: fenc
+ Location: 76,10
+ Owner: Neutral
+ Actor139: fenc
+ Location: 77,10
+ Owner: Neutral
+ Actor140: fenc
+ Location: 78,10
+ Owner: Neutral
+ Actor143: barl
+ Location: 79,6
+ Owner: Soviets
+ Actor144: brl3
+ Location: 74,5
+ Owner: Soviets
+ Actor145: brl3
+ Location: 75,7
+ Owner: Soviets
+ Actor146: barl
+ Location: 74,6
+ Owner: Soviets
+ Actor147: barl
+ Location: 80,5
+ Owner: Soviets
+ Actor148: brl3
+ Location: 84,6
+ Owner: Soviets
+ Actor149: brl3
+ Location: 85,5
+ Owner: Soviets
+ Actor150: brl3
+ Location: 83,6
+ Owner: Soviets
+ Actor151: barl
+ Location: 84,5
+ Owner: Soviets
+ Actor142: brl3
+ Location: 79,5
+ Owner: Soviets
+ Actor152: barl
+ Location: 82,6
+ Owner: Soviets
+ Actor153: barl
+ Location: 84,7
+ Owner: Soviets
+ Actor154: barl
+ Location: 85,6
+ Owner: Soviets
+ Actor155: barl
+ Location: 89,5
+ Owner: Soviets
+ Actor171: fenc
+ Location: 87,4
+ Owner: Neutral
+ Actor172: fenc
+ Location: 88,4
+ Owner: Neutral
+ Actor156: brl3
+ Location: 90,5
+ Owner: Soviets
+ Actor170: fenc
+ Location: 86,4
+ Owner: Neutral
+ Actor169: fenc
+ Location: 85,4
+ Owner: Neutral
+ Actor158: fenc
+ Location: 75,4
+ Owner: Neutral
+ Actor168: fenc
+ Location: 84,4
+ Owner: Neutral
+ Actor157: barl
+ Location: 90,6
+ Owner: Soviets
+ Actor167: fenc
+ Location: 83,4
+ Owner: Neutral
+ Actor166: fenc
+ Location: 82,4
+ Owner: Neutral
+ Actor165: fenc
+ Location: 81,4
+ Owner: Neutral
+ Actor164: fenc
+ Location: 80,4
+ Owner: Neutral
+ Actor163: fenc
+ Location: 79,4
+ Owner: Neutral
+ Actor173: fenc
+ Location: 89,4
+ Owner: Neutral
+ Actor174: fenc
+ Location: 90,4
+ Owner: Neutral
+ Actor175: fenc
+ Location: 91,4
+ Owner: Neutral
+ Actor176: fenc
+ Location: 91,5
+ Owner: Neutral
+ Actor177: fenc
+ Location: 91,6
+ Owner: Neutral
+ Actor178: fenc
+ Location: 91,7
+ Owner: Neutral
+ Actor179: fenc
+ Location: 91,8
+ Owner: Neutral
+ Actor180: fenc
+ Location: 90,8
+ Owner: Neutral
+ Actor181: fenc
+ Location: 90,7
+ Owner: Neutral
+ Actor187: t11
+ Location: 69,10
+ Owner: Neutral
+ Actor186: t16
+ Location: 58,6
+ Owner: Neutral
+ Actor185: tc04
+ Location: 57,8
+ Owner: Neutral
+ Actor184: mine
+ Location: 85,22
+ Owner: Neutral
+ Actor188: tc01
+ Location: 69,6
+ Owner: Neutral
+ Actor189: t12
+ Location: 62,13
+ Owner: Neutral
+ Actor193: fenc
+ Location: 75,16
+ Owner: Neutral
+ Actor194: fenc
+ Location: 75,15
+ Owner: Neutral
+ Actor191: fenc
+ Location: 74,15
+ Owner: Neutral
+ Actor192: fenc
+ Location: 74,16
+ Owner: Neutral
+ Actor190: fenc
+ Location: 74,14
+ Owner: Neutral
+ Actor199: e1
+ Location: 79,15
+ Owner: Soviets
+ Actor200: e2
+ Location: 81,17
+ Owner: Soviets
+ Actor201: v2rl
+ Location: 76,15
+ Owner: Soviets
+ Actor202: tc04
+ Location: 4,15
+ Owner: Neutral
+ Actor203: tc01
+ Location: 7,17
+ Owner: Neutral
+ Actor204: t15
+ Location: 9,16
+ Owner: Neutral
+ Actor205: tc05
+ Location: 4,26
+ Owner: Neutral
+ Actor206: tc02
+ Location: 5,24
+ Owner: Neutral
+ Actor207: tc04
+ Location: 7,25
+ Owner: Neutral
+ Actor208: tc03
+ Location: 40,21
+ Owner: Neutral
+ Actor210: tc04
+ Location: 34,22
+ Owner: Neutral
+ Actor211: tc02
+ Location: 32,33
+ Owner: Neutral
+ Actor212: t16
+ Location: 35,33
+ Owner: Neutral
+ Actor213: t11
+ Location: 49,37
+ Owner: Neutral
+ Actor214: tc04
+ Location: 82,39
+ Owner: Neutral
+ Actor215: tc01
+ Location: 89,39
+ Owner: Neutral
+ Actor216: tc05
+ Location: 85,39
+ Owner: Neutral
+ Actor217: t16
+ Location: 80,41
+ Owner: Neutral
+ Actor218: fenc
+ Location: 79,48
+ Owner: Neutral
+ Actor219: fenc
+ Location: 80,48
+ Owner: Neutral
+ Actor220: fenc
+ Location: 81,48
+ Owner: Neutral
+ Actor221: fenc
+ Location: 82,48
+ Owner: Neutral
+ Actor222: fenc
+ Location: 82,47
+ Owner: Neutral
+ Actor223: tc02
+ Location: 21,41
+ Owner: Neutral
+ Actor224: tc04
+ Location: 35,43
+ Owner: Neutral
+ Actor225: tc02
+ Location: 38,44
+ Owner: Neutral
+ Actor226: t16
+ Location: 38,42
+ Owner: Neutral
+ Actor227: t13
+ Location: 44,33
+ Owner: Neutral
+ Actor228: t02
+ Location: 39,31
+ Owner: Neutral
+ Actor229: tc04
+ Location: 54,13
+ Owner: Neutral
+ Actor230: t07
+ Location: 47,12
+ Owner: Neutral
+ Actor235: brik
+ Location: 12,18
+ Owner: Neutral
+ Actor267: brik
+ Location: 33,17
+ Owner: Neutral
+ Actor237: brik
+ Location: 11,19
+ Owner: Neutral
+ Actor231: brik
+ Location: 11,16
+ Owner: Neutral
+ Actor238: brik
+ Location: 12,19
+ Owner: Neutral
+ Actor232: brik
+ Location: 11,17
+ Owner: Neutral
+ Actor307: v2rl
+ Location: 31,9
+ Owner: Soviets
+ Actor306: v2rl
+ Location: 31,18
+ Owner: Soviets
+ Actor234: brik
+ Location: 12,16
+ Owner: Neutral
+ Actor233: brik
+ Location: 12,17
+ Owner: Neutral
+ Actor236: brik
+ Location: 11,18
+ Owner: Neutral
+ Actor293: brik
+ Location: 25,4
+ Owner: Neutral
+ Actor291: brik
+ Location: 26,4
+ Owner: Neutral
+ Actor295: brik
+ Location: 23,4
+ Owner: Neutral
+ Actor294: brik
+ Location: 24,4
+ Owner: Neutral
+ Actor290: brik
+ Location: 27,4
+ Owner: Neutral
+ Actor289: brik
+ Location: 28,4
+ Owner: Neutral
+ Actor288: brik
+ Location: 29,4
+ Owner: Neutral
+ Actor287: brik
+ Location: 30,4
+ Owner: Neutral
+ Actor286: brik
+ Location: 31,4
+ Owner: Neutral
+ Actor285: brik
+ Location: 32,5
+ Owner: Neutral
+ Actor284: brik
+ Location: 32,4
+ Owner: Neutral
+ Actor283: brik
+ Location: 33,4
+ Owner: Neutral
+ Actor261: brik
+ Location: 29,19
+ Owner: Neutral
+ Actor262: brik
+ Location: 30,19
+ Owner: Neutral
+ Actor260: brik
+ Location: 28,19
+ Owner: Neutral
+ Actor265: brik
+ Location: 32,18
+ Owner: Neutral
+ Actor259: brik
+ Location: 27,19
+ Owner: Neutral
+ Actor264: brik
+ Location: 32,19
+ Owner: Neutral
+ Actor246: brik
+ Location: 14,19
+ Owner: Neutral
+ Actor242: brik
+ Location: 13,19
+ Owner: Neutral
+ Actor263: brik
+ Location: 31,19
+ Owner: Neutral
+ Actor266: brik
+ Location: 33,18
+ Owner: Neutral
+ Actor247: brik
+ Location: 15,19
+ Owner: Neutral
+ Actor248: brik
+ Location: 16,19
+ Owner: Neutral
+ Actor249: brik
+ Location: 17,19
+ Owner: Neutral
+ Actor251: brik
+ Location: 19,19
+ Owner: Neutral
+ Actor250: brik
+ Location: 18,19
+ Owner: Neutral
+ Actor254: brik
+ Location: 19,18
+ Owner: Neutral
+ Actor253: brik
+ Location: 20,18
+ Owner: Neutral
+ Actor252: brik
+ Location: 20,19
+ Owner: Neutral
+ Actor281: brik
+ Location: 33,6
+ Owner: Neutral
+ Actor277: brik
+ Location: 33,9
+ Owner: Neutral
+ Actor276: brik
+ Location: 32,10
+ Owner: Neutral
+ Actor270: brik
+ Location: 33,15
+ Owner: Neutral
+ Actor278: brik
+ Location: 33,8
+ Owner: Neutral
+ Actor275: brik
+ Location: 33,10
+ Owner: Neutral
+ Actor274: brik
+ Location: 33,11
+ Owner: Neutral
+ Actor273: brik
+ Location: 32,15
+ Owner: Neutral
+ Actor271: brik
+ Location: 32,16
+ Owner: Neutral
+ Actor282: brik
+ Location: 33,5
+ Owner: Neutral
+ Actor272: brik
+ Location: 32,11
+ Owner: Neutral
+ Actor279: brik
+ Location: 33,7
+ Owner: Neutral
+ Actor269: brik
+ Location: 33,16
+ Owner: Neutral
+ Actor268: brik
+ Location: 33,19
+ Owner: Neutral
+ Actor258: brik
+ Location: 26,18
+ Owner: Neutral
+ Actor255: brik
+ Location: 25,18
+ Owner: Neutral
+ Actor256: brik
+ Location: 25,19
+ Owner: Neutral
+ Actor257: brik
+ Location: 26,19
+ Owner: Neutral
+ Actor309: e1
+ Location: 52,44
+ Owner: Allies
+ Actor305: v2rl
+ Location: 17,18
+ Owner: Soviets
+ Actor304: e3
+ Location: 17,17
+ Owner: Soviets
+ Actor303: e1
+ Location: 29,15
+ Owner: Soviets
+ Actor300: e1
+ Location: 25,16
+ Owner: Soviets
+ Actor301: e2
+ Location: 21,17
+ Owner: Soviets
+ Actor302: e3
+ Location: 28,10
+ Owner: Soviets
+ Actor310: e1
+ Location: 50,47
+ Owner: Allies
+ Actor311: e1
+ Location: 62,43
+ Owner: Allies
+ Actor312: e1
+ Location: 64,44
+ Owner: Allies
+ Actor313: e3
+ Location: 66,44
+ Owner: Allies
+ Actor314: e1
+ Location: 69,43
+ Owner: Allies
+ Actor315: e1
+ Location: 73,43
+ Owner: Allies
+ Actor316: jeep
+ Location: 54,49
+ Owner: Allies
+ Actor317: 1tnk
+ Location: 69,45
+ Owner: Allies
+ Actor318: 1tnk
+ Location: 52,46
+ Owner: Allies
+ Actor296: tc02
+ Location: 73,32
+ Owner: Neutral
+ Actor298: tc01
+ Location: 77,34
+ Owner: Neutral
+ Actor299: tc04
+ Location: 83,35
+ Owner: Neutral
+ Actor308: tc01
+ Location: 86,35
+ Owner: Neutral
+ Actor319: t07
+ Location: 90,27
+ Owner: Neutral
+ Actor320: tc01
+ Location: 80,26
+ Owner: Neutral
+ Actor321: brik
+ Location: 60,41
+ Owner: Allies
+ Actor135: e1
+ Location: 63,39
+ Owner: Soviets
+ Actor209: e2
+ Location: 65,40
+ Owner: Soviets
+ Actor280: e1
+ Location: 68,40
+ Owner: Soviets
+ Actor292: e1
+ Location: 76,44
+ Owner: Soviets
+ Actor322: e2
+ Location: 78,46
+ Owner: Soviets
+ Actor323: e1
+ Location: 46,44
+ Owner: Soviets
+ Actor324: e3
+ Location: 45,46
+ Owner: Soviets
+ Actor325: e3
+ Location: 66,39
+ Owner: Soviets
+ Actor326: v2rl
+ Location: 61,37
+ Owner: Soviets
+ Actor327: brl3
+ Location: 79,47
+ Owner: Allies
+ Actor328: barl
+ Location: 79,46
+ Owner: Allies
+ Actor329: brl3
+ Location: 87,45
+ Owner: Allies
+ Actor330: barl
+ Location: 87,46
+ Owner: Allies
+ Actor331: barl
+ Location: 88,45
+ Owner: Allies
+ Actor332: oilb
+ Location: 74,53
+ Owner: Allies
+ Actor333: fenc
+ Location: 73,55
+ Owner: Allies
+ Actor334: fenc
+ Location: 74,55
+ Owner: Allies
+ Actor335: fenc
+ Location: 75,55
+ Owner: Allies
+ Actor336: fenc
+ Location: 75,52
+ Owner: Allies
+ Actor337: fenc
+ Location: 76,52
+ Owner: Allies
+ Actor338: fenc
+ Location: 74,52
+ Owner: Allies
+ Actor339: brl3
+ Location: 73,53
+ Owner: Allies
+ Actor340: barl
+ Location: 73,52
+ Owner: Allies
+ Actor297: brik
+ Location: 22,4
+ Owner: Neutral
+ Actor341: brik
+ Location: 21,4
+ Owner: Neutral
+ Actor342: brik
+ Location: 21,5
+ Owner: Neutral
+ Actor343: brik
+ Location: 22,5
+ Owner: Neutral
+ Actor346: t15
+ Location: 57,24
+ Owner: Neutral
+ FlameTower3: ftur
+ Location: 78,17
+ Owner: Soviets
+ AdvancedPowerPlant3: apwr
+ Location: 88,13
+ Owner: Soviets
+ Silo1: silo
+ Location: 84,13
+ Owner: Soviets
+ Silo2: silo
+ Location: 84,12
+ Owner: Soviets
+ Refinery: proc
+ Location: 81,11
+ Owner: Soviets
+ SovietAirfield1: afld.mission
+ Location: 86,5
+ Owner: Soviets
+ SovietAirfield2: afld.mission
+ Location: 80,6
+ Owner: Soviets
+ SovietAirfield3: afld.mission
+ Location: 75,5
+ Owner: Soviets
+ FlameTower1: ftur
+ Location: 23,16
+ Owner: Soviets
+ FlameTower2: ftur
+ Location: 29,13
+ Owner: Soviets
+ Sam1: sam
+ Location: 62,27
+ Owner: Soviets
+ Sam2: sam
+ Location: 17,31
+ Owner: Soviets
+ Sam3: sam
+ Location: 76,11
+ Owner: Soviets
+ Sam4: sam
+ Location: 29,17
+ Owner: Soviets
+ RadarDome: dome
+ Location: 14,16
+ Owner: Soviets
+ SubPen: spen
+ Location: 13,9
+ Owner: Soviets
+ Barrack1: barr
+ Location: 28,7
+ Owner: Soviets
+ WarFactory: weap
+ Location: 22,12
+ Owner: Soviets
+ AdvancedPowerPlant1: apwr
+ Location: 24,6
+ Owner: Soviets
+ AdvancedPowerPlant2: apwr
+ Location: 16,14
+ Owner: Soviets
+ BadgerEntryPoint1: waypoint
+ Location: 4,54
+ Owner: Neutral
+ BadgerEntryPoint2: waypoint
+ Location: 4,47
+ Owner: Neutral
+ ParaDrop1: waypoint
+ Location: 54,51
+ Owner: Neutral
+ ParaDrop2: waypoint
+ Location: 67,51
+ Owner: Neutral
+ Alliesbase: waypoint
+ Location: 60,48
+ Owner: Neutral
+ Alliesbase1: waypoint
+ Location: 66,45
+ Owner: Neutral
+ Alliesbase2: waypoint
+ Location: 51,46
+ Owner: Neutral
+ Alliesbase3: waypoint
+ Location: 72,45
+ Owner: Neutral
+ AlliesEntryPoint: waypoint
+ Location: 60,59
+ Owner: Neutral
+ AlliesBaseGate1: waypoint
+ Location: 64,33
+ Owner: Neutral
+ AlliesBaseGate2: waypoint
+ Location: 42,42
+ Owner: Neutral
+ SovietEntryPoint1: waypoint
+ Location: 4,31
+ Owner: Neutral
+ SovietEntryPoint2: waypoint
+ Location: 4,21
+ Owner: Neutral
+ SovietEntryPoint3: waypoint
+ Location: 37,4
+ Owner: Neutral
+ SovietEntryPoint4: waypoint
+ Location: 65,4
+ Owner: Neutral
+ SovietEntryPoint5: waypoint
+ Location: 91,19
+ Owner: Neutral
+ SovietEntryPoint7: waypoint
+ Location: 91,43
+ Owner: Neutral
+ SovietRallyPoint1: waypoint
+ Location: 23,39
+ Owner: Neutral
+ SovietRallyPoint2: waypoint
+ Location: 23,21
+ Owner: Neutral
+ SovietRallyPoint3: waypoint
+ Location: 37,13
+ Owner: Neutral
+ SovietRallyPoint4: waypoint
+ Location: 65,13
+ Owner: Neutral
+ SovietRallyPoint5: waypoint
+ Location: 80,19
+ Owner: Neutral
+ SovietInfantryEntry1: waypoint
+ Location: 28,9
+ Owner: Neutral
+ SovietInfantryRally1: waypoint
+ Location: 23,26
+ Owner: Neutral
+ NavalEntryPoint: waypoint
+ Location: 4,59
+ Owner: Neutral
+ NavalWaypoint1: waypoint
+ Location: 41,48
+ Owner: Neutral
+ NavalWaypoint2: waypoint
+ Location: 26,54
+ Owner: Neutral
+ NavalWaypoint3: waypoint
+ Location: 42,53
+ Owner: Neutral
+ AirReinforcementsEntry1: waypoint
+ Location: 91,55
+ Owner: Neutral
+ AirReinforcementsRally1: waypoint
+ Location: 63,26
+ Owner: Neutral
+ AirReinforcementsEntry2: waypoint
+ Location: 83,59
+ Owner: Neutral
+ AirReinforcementsRally2: waypoint
+ Location: 17,31
+ Owner: Neutral
+ HiddenATEK: waypoint
+ Location: 58,61
+ Owner: Neutral
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
diff --git a/mods/ura/maps/survival01/rules.yaml b/mods/ura/maps/survival01/rules.yaml
new file mode 100644
index 0000000..d7da59c
--- /dev/null
+++ b/mods/ura/maps/survival01/rules.yaml
@@ -0,0 +1,180 @@
+Player:
+ PlayerResources:
+ DefaultCash: 5000
+
+World:
+ LuaScript:
+ Scripts: survival01.lua
+ MissionData:
+ Briefing: LANDCOM 66 HQS.\nTOP SECRET.\nTO: FIELD COMMANDER A34\n\nTHE SOVIETS STARTED HEAVY ATTACKS AT OUR POSITION.\n SURVIVE AND HOLD THE BASE UNTIL OUR FRENCH ALLIES ARRIVE.\n\nCONFIRMATION CODE 5593.\n\nTRANSMISSION ENDS.
+ ScriptLobbyDropdown@difficulty:
+ ID: difficulty
+ Label: Difficulty
+ Values:
+ easy: Easy
+ normal: Normal
+ hard: Hard
+ Default: easy
+
+^Palettes:
+ IndexedPlayerPalette:
+ PlayerIndex:
+ Soviets: 229, 230, 231, 232, 233, 234, 235, 8, 236, 237, 238, 239, 221, 222, 223, 223
+ Allies: 224, 224, 225, 225, 226, 184, 185, 186, 187, 188, 188, 189, 190, 190, 191, 191
+
+powerproxy.paratroopers:
+ ParatroopersPower:
+ DropItems: E1,E1,E1,E2,E2
+
+powerproxy.allied:
+ Inherits: powerproxy.paratroopers
+ ParatroopersPower:
+ DropItems: ARTY,ARTY,ARTY
+
+CAMERA.sam:
+ Inherits: CAMERA
+ RevealsShroud:
+ Range: 4c0
+
+AFLD.mission:
+ Inherits: AFLD
+ -AirstrikePower@spyplane:
+ -ParatroopersPower@paratroopers:
+ -AirstrikePower@parabombs:
+ -SupportPowerChargeBar:
+ RenderSprites:
+ Image: AFLD
+
+ATEK.mission:
+ Inherits: ATEK
+ GpsPower:
+ ChargeInterval: 0
+ Power:
+ Amount: 0
+ -Selectable:
+ -Targetable:
+ -GivesBuildableArea:
+ -Huntable:
+ RenderSprites:
+ Image: ATEK
+ Interactable:
+
+GUN:
+ Valued:
+ Cost: 1000
+
+E7:
+ Buildable:
+ Prerequisites: ~disabled
+
+SHOK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MIG:
+ Buildable:
+ Prerequisites: ~disabled
+
+HELI:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+GAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+SYRD:
+ Buildable:
+ Prerequisites: ~disabled
+
+PDOX:
+ Buildable:
+ Prerequisites: ~disabled
+
+AGUN:
+ Buildable:
+ Prerequisites: ~disabled
+
+ATEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+4TNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+MNLY:
+ Buildable:
+ Prerequisites: ~disabled
+
+TTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+CTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+DOME:
+ Buildable:
+ Prerequisites: ~disabled
+
+BRIK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MRJ:
+ Buildable:
+ Prerequisites: ~disabled
+
+MGG:
+ Buildable:
+ Prerequisites: ~disabled
+
+STNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+QTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+DTRK:
+ Buildable:
+ Prerequisites: ~disabled
+
+FACF:
+ Buildable:
+ Prerequisites: ~disabled
+
+WEAF:
+ Buildable:
+ Prerequisites: ~disabled
+
+SYRF:
+ Buildable:
+ Prerequisites: ~disabled
+
+DOMF:
+ Buildable:
+ Prerequisites: ~disabled
+
+ATEF:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLF:
+ Buildable:
+ Prerequisites: ~disabled
+
+PDOF:
+ Buildable:
+ Prerequisites: ~disabled
diff --git a/mods/ura/maps/survival01/survival01.lua b/mods/ura/maps/survival01/survival01.lua
new file mode 100644
index 0000000..280a91a
--- /dev/null
+++ b/mods/ura/maps/survival01/survival01.lua
@@ -0,0 +1,432 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+Difficulty = Map.LobbyOption("difficulty")
+
+if Difficulty == "easy" then
+ AttackAtFrameIncrement = DateTime.Seconds(22)
+ AttackAtFrameIncrementInf = DateTime.Seconds(16)
+ TimerTicks = DateTime.Minutes(15)
+ IncrementTurningPoint = TimerTicks / 2
+ DamageModifier = 0.5
+ LongBowReinforcements = { "heli", "heli" }
+ ParadropArtillery = true
+elseif Difficulty == "normal" then
+ AttackAtFrameIncrement = DateTime.Seconds(18)
+ AttackAtFrameIncrementInf = DateTime.Seconds(12)
+ TimerTicks = DateTime.Minutes(20)
+ IncrementTurningPoint = TimerTicks / 2
+ MoreParas = true
+ DamageModifier = 0.75
+ LongBowReinforcements = { "heli", "heli" }
+else --Difficulty == "hard"
+ AttackAtFrameIncrement = DateTime.Seconds(14)
+ AttackAtFrameIncrementInf = DateTime.Seconds(8)
+ TimerTicks = DateTime.Minutes(25)
+ IncrementTurningPoint = DateTime.Minutes(10)
+ MoreParas = true
+ AttackAtFrameNaval = DateTime.Minutes(3) + DateTime.Seconds(45)
+ SpawnNavalUnits = true
+ DamageModifier = 1
+ LongBowReinforcements = { "heli" }
+end
+
+AlliedAirReinforcementsWaypoints =
+{
+ { AirReinforcementsEntry1.Location, AirReinforcementsRally1.Location },
+ { AirReinforcementsEntry2.Location, AirReinforcementsRally2.Location }
+}
+FrenchReinforcements = { "2tnk", "2tnk", "2tnk", "2tnk", "2tnk", "1tnk", "1tnk", "1tnk", "arty", "arty", "arty", "jeep", "jeep" }
+
+SpawningSovietUnits = true
+SpawningInfantry = true
+AttackAtFrameInf = DateTime.Seconds(12)
+AttackAtFrame = DateTime.Seconds(18)
+SovietAttackGroupSize = 5
+SovietInfantryGroupSize = 7
+FactoryClearRange = 10
+ParadropTicks = DateTime.Seconds(30)
+ParadropWaypoints =
+{
+ { 192 + 4, ParaDrop1},
+ { 192 - 4, ParaDrop2},
+ { 192 + 4, Alliesbase2},
+ { 192 - 4, Alliesbase1}
+}
+NavalTransportPassengers = { "e1", "e1", "e2", "e4", "e4" }
+NavalReinforcementsWaypoints = { NavalWaypoint1, NavalWaypoint2, NavalWaypoint2, NavalWaypoint3 }
+Squad1 = { "e1", "e1" }
+Squad2 = { "e2", "e2" }
+SovietVehicles = { "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "3tnk", "v2rl", "v2rl", "ftrk", "ftrk", "ftrk", "apc", "apc" }
+SovietInfantry = { "e1", "e1", "e1", "e1", "e2", "e2", "e2", "e4", "e4", "e3" }
+SovietEntryPoints = { SovietEntryPoint1, SovietEntryPoint2, SovietEntryPoint3, SovietEntryPoint4, SovietEntryPoint5 }
+SovietRallyPoints = { SovietRallyPoint1, SovietRallyPoint2, SovietRallyPoint3, SovietRallyPoint4, SovietRallyPoint5 }
+SovietGateRallyPoints = { AlliesBaseGate2, AlliesBaseGate2, AlliesBaseGate1, AlliesBaseGate1, AlliesBaseGate1 }
+
+Airfields = { SovietAirfield1, SovietAirfield2, SovietAirfield3 }
+SovietBuildings = { Barrack1, SubPen, RadarDome, AdvancedPowerPlant1, AdvancedPowerPlant2, AdvancedPowerPlant3, WarFactory, Refinery, Silo1, Silo2, FlameTower1, FlameTower2, FlameTower3, Sam1, Sam2, Sam3, Sam4, SovietAirfield1, SovietAirfield2, SovietAirfield3 }
+
+IdleTrigger = function(units, dest)
+ Utils.Do(units, function(unit)
+
+ if not unit.IsDead then
+ Trigger.OnIdle(unit, function()
+ local bool = Utils.All(units, function(unit) return unit.IsIdle end)
+ if bool then
+ SetupHuntTrigger(units)
+ end
+ end)
+
+ Trigger.OnDamaged(unit, function()
+ SetupHuntTrigger(units)
+ end)
+
+ Trigger.OnCapture(unit, function()
+ Trigger.ClearAll(unit)
+ end)
+ end
+ end)
+end
+
+SetupHuntTrigger = function(units)
+ Utils.Do(units, function(unit)
+ if not unit.IsDead then
+ Trigger.ClearAll(unit)
+ Trigger.AfterDelay(0, function()
+ if not unit.IsDead then
+ Trigger.OnIdle(unit, unit.Hunt)
+ Trigger.OnCapture(unit, function()
+ Trigger.ClearAll(unit)
+ end)
+ end
+ end)
+ end
+ end)
+end
+
+ticked = TimerTicks
+Tick = function()
+ if KillObj and soviets.HasNoRequiredUnits() then
+ allies.MarkCompletedObjective(KillObj)
+ end
+
+ if allies.HasNoRequiredUnits() then
+ soviets.MarkCompletedObjective(SovietObj)
+ end
+
+ if soviets.Resources > soviets.ResourceCapacity / 2 then
+ soviets.Resources = soviets.ResourceCapacity / 2
+ end
+
+ if ticked > 0 then
+ if DateTime.Minutes(20) == ticked then
+ Media.PlaySpeechNotification(allies, "TwentyMinutesRemaining")
+
+ elseif DateTime.Minutes(10) == ticked then
+ Media.PlaySpeechNotification(allies, "TenMinutesRemaining")
+
+ elseif DateTime.Minutes(5) == ticked then
+ Media.PlaySpeechNotification(allies, "WarningFiveMinutesRemaining")
+
+ elseif DateTime.Minutes(4) == ticked then
+ Media.PlaySpeechNotification(allies, "WarningFourMinutesRemaining")
+
+ Trigger.AfterDelay(ParadropTicks, function()
+ SendSovietParadrops(ParadropWaypoints[3])
+ SendSovietParadrops(ParadropWaypoints[2])
+ end)
+ Trigger.AfterDelay(ParadropTicks * 2, function()
+ SendSovietParadrops(ParadropWaypoints[4])
+ SendSovietParadrops(ParadropWaypoints[1])
+ end)
+
+ elseif DateTime.Minutes(3) == ticked then
+ Media.PlaySpeechNotification(allies, "WarningThreeMinutesRemaining")
+
+ elseif DateTime.Minutes(2) == ticked then
+ Media.PlaySpeechNotification(allies, "WarningTwoMinutesRemaining")
+
+ AttackAtFrameIncrement = DateTime.Seconds(4)
+ AttackAtFrameIncrementInf = DateTime.Seconds(4)
+
+ elseif DateTime.Minutes(1) == ticked then
+ Media.PlaySpeechNotification(allies, "WarningOneMinuteRemaining")
+
+ elseif DateTime.Seconds(45) == ticked then
+ Media.PlaySpeechNotification(allies, "AlliedForcesApproaching")
+ end
+
+ UserInterface.SetMissionText("French reinforcements arrive in " .. Utils.FormatTime(ticked), TimerColor)
+ ticked = ticked - 1
+ elseif ticked == 0 then
+ FinishTimer()
+ TimerExpired()
+ ticked = ticked - 1
+ end
+end
+
+FinishTimer = function()
+ for i = 0, 9, 1 do
+ local c = TimerColor
+ if i % 2 == 0 then
+ c = HSLColor.White
+ end
+
+ Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText("Our french allies have arrived!", c) end)
+ end
+ Trigger.AfterDelay(DateTime.Seconds(10), function() UserInterface.SetMissionText("") end)
+end
+
+SendSovietParadrops = function(table)
+ local units = powerproxy.SendParatroopers(table[2].CenterPosition, false, table[1])
+
+ Utils.Do(units, function(unit)
+ Trigger.OnIdle(unit, function(a)
+ if a.IsInWorld then
+ a.Hunt()
+ end
+ end)
+ end)
+end
+
+SendSovietNavalReinforcements = function()
+ if SpawnNavalUnits then
+ local entry = NavalEntryPoint.Location
+ local units = Reinforcements.ReinforceWithTransport(soviets, "lst", NavalTransportPassengers, { entry, Utils.Random(NavalReinforcementsWaypoints).Location }, { entry })[2]
+ Utils.Do(units, function(unit)
+ Trigger.OnIdle(unit, unit.Hunt)
+ end)
+
+ local delay = Utils.RandomInteger(AttackAtFrameNaval, AttackAtFrameNaval + DateTime.Minutes(2))
+
+ Trigger.AfterDelay(delay, SendSovietNavalReinforcements)
+ end
+end
+
+SpawnSovietInfantry = function()
+ local units = { }
+ for i = 0, SovietInfantryGroupSize - 1, 1 do
+ local type = Utils.Random(SovietInfantry)
+ units[i] = type
+ end
+
+ soviets.Build(units, function(soldiers)
+ Trigger.AfterDelay(25, function() IdleTrigger(soldiers) end)
+ end)
+end
+
+SpawnSovietUnits = function()
+ local units = { }
+ for i = 0, SovietAttackGroupSize - 1, 1 do
+ local type = Utils.Random(SovietVehicles)
+ units[i] = type
+ end
+
+ local route = Utils.RandomInteger(1, #SovietEntryPoints + 1)
+ local attackers = Reinforcements.Reinforce(soviets, units, { SovietEntryPoints[route].Location, SovietRallyPoints[route].Location })
+ Trigger.AfterDelay(25, function()
+ IdleTrigger(attackers, SovietGateRallyPoints[route].Location)
+ end)
+end
+
+SendInfantryWave = function()
+ if SpawningInfantry then
+ SpawnSovietInfantry()
+
+ if DateTime.GameTime < IncrementTurningPoint then
+ AttackAtFrameIncrementInf = AttackAtFrameIncrementInf + Utils.RandomInteger(DateTime.Seconds(2), DateTime.Seconds(3))
+ elseif not (AttackAtFrameIncrementInf <= DateTime.Seconds(4)) then
+ AttackAtFrameIncrementInf = AttackAtFrameIncrementInf - Utils.RandomInteger(DateTime.Seconds(2), DateTime.Seconds(3))
+ end
+
+ Trigger.AfterDelay(AttackAtFrameInf + AttackAtFrameIncrementInf, SendInfantryWave)
+ end
+end
+
+SendVehicleWave = function()
+ if SpawningSovietUnits then
+ SpawnSovietUnits()
+
+ if DateTime.GameTime < IncrementTurningPoint then
+ AttackAtFrameIncrement = AttackAtFrameIncrement + Utils.RandomInteger(DateTime.Seconds(4), DateTime.Seconds(6))
+ elseif not (AttackAtFrameIncrement <= DateTime.Seconds(4)) then
+ AttackAtFrameIncrement = AttackAtFrameIncrement - Utils.RandomInteger(DateTime.Seconds(4), DateTime.Seconds(6))
+ end
+
+ Trigger.AfterDelay(AttackAtFrame + AttackAtFrameIncrement, SendVehicleWave)
+ end
+end
+
+TimerExpired = function()
+ SpawningSovietUnits = false
+ SpawningInfantry = false
+ SpawnNavalUnits = false
+
+ Beacon.New(allies, SovietEntryPoint7.CenterPosition - WVec.New(3 * 1024, 0, 0))
+ Media.PlaySpeechNotification(allies, "AlliedReinforcementsArrived")
+ Reinforcements.Reinforce(allies, FrenchReinforcements, { SovietEntryPoint7.Location, Alliesbase.Location })
+
+ if DestroyObj then
+ KillObj = allies.AddPrimaryObjective("Take control of French reinforcements and\nkill all remaining Soviet forces.")
+ else
+ DestroyObj = allies.AddPrimaryObjective("Take control of French reinforcements and\ndismantle the nearby Soviet base.")
+ end
+
+ allies.MarkCompletedObjective(SurviveObj)
+ if not allies.IsObjectiveCompleted(KillSams) then
+ allies.MarkFailedObjective(KillSams)
+ end
+end
+
+DropAlliedArtillery = function(facing, dropzone)
+ local proxy = Actor.Create("powerproxy.allied", true, { Owner = allies })
+ proxy.SendParatroopers(dropzone, false, facing)
+ proxy.Destroy()
+end
+
+SendLongBowReinforcements = function()
+ Media.PlaySpeechNotification(allies, "AlliedReinforcementsArrived")
+ Reinforcements.Reinforce(allies, LongBowReinforcements, AlliedAirReinforcementsWaypoints[1])
+ Reinforcements.Reinforce(allies, LongBowReinforcements, AlliedAirReinforcementsWaypoints[2])
+
+ if ParadropArtillery then
+ local facing = Utils.RandomInteger(Facing.NorthWest, Facing.SouthWest)
+ DropAlliedArtillery(facing, Alliesbase.CenterPosition)
+ end
+end
+
+InitObjectives = function()
+ Trigger.OnObjectiveAdded(allies, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+
+ SurviveObj = allies.AddPrimaryObjective("Enforce your position and hold-out the onslaught\nuntil reinforcements arrive.")
+ KillSams = allies.AddSecondaryObjective("Destroy the two SAM sites before reinforcements\narrive.")
+ Media.DisplayMessage("The Soviets are blocking our GPS. We need to investigate their new technology.")
+ CaptureAirfields = allies.AddSecondaryObjective("Capture and hold the Soviet airbase\nin the northeast.")
+ SovietObj = soviets.AddPrimaryObjective("Eliminate all Allied forces.")
+
+ Trigger.OnObjectiveCompleted(allies, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(allies, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ Trigger.OnPlayerLost(allies, function()
+ Media.PlaySpeechNotification(allies, "MissionFailed")
+ end)
+ Trigger.OnPlayerWon(allies, function()
+ Media.PlaySpeechNotification(allies, "MissionAccomplished")
+ Media.DisplayMessage("The French forces have survived and dismantled the Soviet presence in the area!")
+ end)
+end
+
+InitMission = function()
+ Camera.Position = Alliesbase.CenterPosition
+ camera1 = Actor.Create("camera.sam", true, { Owner = allies, Location = Sam1.Location })
+ camera2 = Actor.Create("camera.sam", true, { Owner = allies, Location = Sam2.Location })
+ Trigger.OnKilled(Sam1, function()
+ if camera1.IsInWorld then camera1.Destroy() end
+ end)
+ Trigger.OnKilled(Sam2, function()
+ if camera2.IsInWorld then camera2.Destroy() end
+ end)
+ Trigger.OnAllKilledOrCaptured({ Sam1, Sam2 }, function()
+ if not allies.IsObjectiveFailed(KillSams) then
+ allies.MarkCompletedObjective(KillSams)
+ SendLongBowReinforcements()
+ end
+ end)
+
+ local count = 0
+ Utils.Do(Airfields, function(field)
+ Trigger.OnCapture(field, function()
+ count = count + 1
+ if count == #Airfields then
+ allies.MarkCompletedObjective(CaptureAirfields)
+ local atek = Actor.Create("atek.mission", true, { Owner = allies, Location = HiddenATEK.Location })
+ Trigger.AfterDelay(DateTime.Seconds(5), atek.Destroy)
+ end
+ end)
+ Trigger.OnKilled(field, function()
+ allies.MarkFailedObjective(CaptureAirfields)
+ end)
+ end)
+
+ Trigger.OnAllKilledOrCaptured(SovietBuildings, function()
+ if DestroyObj then
+ if not soviets.HasNoRequiredUnits() then
+ KillObj = allies.AddPrimaryObjective("Kill all remaining Soviet forces.")
+ end
+ allies.MarkCompletedObjective(DestroyObj)
+ else
+ DestroyObj = allies.AddPrimaryObjective("Dismantle the nearby Soviet base.")
+ allies.MarkCompletedObjective(DestroyObj)
+ end
+ end)
+
+ Trigger.AfterDelay(DateTime.Seconds(1), function() Media.PlaySpeechNotification(allies, "MissionTimerInitialised") end)
+ TimerColor = allies.Color
+end
+
+SetupSoviets = function()
+ Barrack1.IsPrimaryBuilding = true
+ Barrack1.RallyPoint = SovietInfantryRally1.Location
+ Trigger.OnKilledOrCaptured(Barrack1, function()
+ SpawningInfantry = false
+ end)
+
+ Trigger.AfterDelay(0, function()
+ local buildings = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == soviets and self.HasProperty("StartBuildingRepairs") end)
+ Utils.Do(buildings, function(actor)
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == soviets and building.Health < building.MaxHealth * DamageModifier then
+ building.StartBuildingRepairs()
+ end
+ end)
+ end)
+ end)
+
+ Reinforcements.Reinforce(soviets, Squad1, { AlliesBaseGate1.Location, Alliesbase1.Location })
+ Reinforcements.Reinforce(soviets, Squad2, { AlliesBaseGate2.Location, Alliesbase2.Location })
+
+ powerproxy = Actor.Create("powerproxy.paratroopers", false, { Owner = soviets })
+ Trigger.AfterDelay(ParadropTicks, function()
+ SendSovietParadrops(ParadropWaypoints[1])
+ SendSovietParadrops(ParadropWaypoints[2])
+ end)
+ Trigger.AfterDelay(ParadropTicks * 2, function()
+ SendSovietParadrops(ParadropWaypoints[3])
+ SendSovietParadrops(ParadropWaypoints[4])
+ end)
+
+ Trigger.AfterDelay(AttackAtFrame, SendVehicleWave)
+ Trigger.AfterDelay(AttackAtFrameInf, SendInfantryWave)
+
+ if MoreParas then
+ local delay = Utils.RandomInteger(TimerTicks/3, TimerTicks*2/3)
+ Trigger.AfterDelay(delay, function()
+ SendSovietParadrops(ParadropWaypoints[Utils.RandomInteger(1,3)])
+ SendSovietParadrops(ParadropWaypoints[Utils.RandomInteger(3,5)])
+ end)
+ end
+ if SpawnNavalUnits then
+ Trigger.AfterDelay(AttackAtFrameNaval, SendSovietNavalReinforcements)
+ end
+end
+
+WorldLoaded = function()
+
+ allies = Player.GetPlayer("Allies")
+ soviets = Player.GetPlayer("Soviets")
+
+ InitObjectives()
+ InitMission()
+ SetupSoviets()
+end
diff --git a/mods/ura/maps/survival02/map.bin b/mods/ura/maps/survival02/map.bin
new file mode 100644
index 0000000..5396f2c
Binary files /dev/null and b/mods/ura/maps/survival02/map.bin differ
diff --git a/mods/ura/maps/survival02/map.png b/mods/ura/maps/survival02/map.png
new file mode 100644
index 0000000..29bfd56
Binary files /dev/null and b/mods/ura/maps/survival02/map.png differ
diff --git a/mods/ura/maps/survival02/map.yaml b/mods/ura/maps/survival02/map.yaml
new file mode 100644
index 0000000..1939e32
--- /dev/null
+++ b/mods/ura/maps/survival02/map.yaml
@@ -0,0 +1,1011 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Survival 02
+
+Author: Nuke'm Bro.
+
+Tileset: SNOW
+
+MapSize: 80,80
+
+Bounds: 2,2,76,76
+
+Visibility: MissionSelector
+
+Categories: Mission
+
+LockPreview: True
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Allies:
+ Name: Allies
+ Playable: True
+ AllowBots: False
+ Required: True
+ LockFaction: True
+ Faction: allies
+ LockColor: True
+ Color: 0CF7B2
+ LockSpawn: True
+ LockTeam: True
+ Enemies: Soviets
+ PlayerReference@Soviets:
+ Name: Soviets
+ Faction: soviet
+ Color: FF0101
+ Enemies: Allies
+
+Actors:
+ Actor0: tc05
+ Location: 37,56
+ Owner: Neutral
+ Actor1: tc02
+ Location: 33,56
+ Owner: Neutral
+ Actor2: t16
+ Location: 37,59
+ Owner: Neutral
+ Actor3: t10
+ Location: 26,56
+ Owner: Neutral
+ Actor4: tc04
+ Location: 33,72
+ Owner: Neutral
+ Actor5: tc01
+ Location: 32,76
+ Owner: Neutral
+ Actor98: fenc
+ Location: 56,68
+ Owner: Soviets
+ Actor7: t05
+ Location: 40,74
+ Owner: Neutral
+ Actor8: tc04
+ Location: 67,70
+ Owner: Neutral
+ Actor9: tc02
+ Location: 68,75
+ Owner: Neutral
+ Actor6: fenc
+ Location: 55,68
+ Owner: Soviets
+ Actor11: tc05
+ Location: 73,63
+ Owner: Neutral
+ Actor12: tc02
+ Location: 70,67
+ Owner: Neutral
+ Actor13: t07
+ Location: 29,71
+ Owner: Neutral
+ Actor14: tc01
+ Location: 24,72
+ Owner: Neutral
+ Actor15: t01
+ Location: 29,66
+ Owner: Neutral
+ Actor16: t05
+ Location: 34,62
+ Owner: Neutral
+ Actor17: tc01
+ Location: 52,52
+ Owner: Neutral
+ Actor18: tc02
+ Location: 47,54
+ Owner: Neutral
+ Actor19: tc02
+ Location: 26,51
+ Owner: Neutral
+ Actor20: t11
+ Location: 42,54
+ Owner: Neutral
+ Actor21: tc05
+ Location: 75,16
+ Owner: Neutral
+ Actor22: tc02
+ Location: 70,16
+ Owner: Neutral
+ Actor23: tc04
+ Location: 69,13
+ Owner: Neutral
+ Actor24: t02
+ Location: 73,16
+ Owner: Neutral
+ Actor25: t11
+ Location: 76,12
+ Owner: Neutral
+ Actor26: tc02
+ Location: 55,2
+ Owner: Neutral
+ Actor27: powr
+ Location: 73,3
+ Owner: Soviets
+ Actor31: tc01
+ Location: 47,25
+ Owner: Neutral
+ Actor30: tc05
+ Location: 28,25
+ Owner: Neutral
+ Actor28: tc05
+ Location: 58,2
+ Owner: Neutral
+ Actor29: t16
+ Location: 56,4
+ Owner: Neutral
+ Actor32: tc04
+ Location: 57,30
+ Owner: Neutral
+ Actor33: t02
+ Location: 56,28
+ Owner: Neutral
+ Actor34: t06
+ Location: 19,45
+ Owner: Neutral
+ Actor35: t01
+ Location: 20,49
+ Owner: Neutral
+ Actor37: tc05
+ Location: 22,47
+ Owner: Neutral
+ Actor36: tc01
+ Location: 22,45
+ Owner: Neutral
+ Actor38: tc04
+ Location: 53,14
+ Owner: Neutral
+ Actor39: tc05
+ Location: 54,16
+ Owner: Neutral
+ Actor40: tc01
+ Location: 56,14
+ Owner: Neutral
+ Actor41: tc02
+ Location: 52,17
+ Owner: Neutral
+ Actor45: brik
+ Location: 5,17
+ Owner: Soviets
+ Actor42: brik
+ Location: 4,17
+ Owner: Soviets
+ Actor43: brik
+ Location: 4,18
+ Owner: Soviets
+ Actor46: brik
+ Location: 6,18
+ Owner: Soviets
+ Actor47: brik
+ Location: 7,18
+ Owner: Soviets
+ Actor48: brik
+ Location: 8,18
+ Owner: Soviets
+ Actor49: brik
+ Location: 9,18
+ Owner: Soviets
+ Actor50: brik
+ Location: 10,18
+ Owner: Soviets
+ Actor44: brik
+ Location: 5,18
+ Owner: Soviets
+ Actor51: brik
+ Location: 11,18
+ Owner: Soviets
+ Actor52: brik
+ Location: 12,18
+ Owner: Soviets
+ Actor53: brik
+ Location: 13,17
+ Owner: Soviets
+ Actor56: brik
+ Location: 13,18
+ Owner: Soviets
+ Actor57: brik
+ Location: 14,18
+ Owner: Soviets
+ Actor54: brik
+ Location: 14,17
+ Owner: Soviets
+ Actor69: apwr
+ Location: 75,7
+ Owner: Soviets
+ Actor73: tsla
+ Location: 16,13
+ Owner: Soviets
+ Actor67: barb
+ Location: 19,11
+ Owner: Soviets
+ Actor86: fenc
+ Location: 65,68
+ Owner: Soviets
+ Actor60: brik
+ Location: 22,10
+ Owner: Soviets
+ Actor55: brik
+ Location: 21,10
+ Owner: Soviets
+ Actor58: brik
+ Location: 21,11
+ Owner: Soviets
+ Actor71: powr
+ Location: 5,13
+ Owner: Soviets
+ Actor91: fenc
+ Location: 68,66
+ Owner: Soviets
+ Actor81: tc03
+ Location: 6,20
+ Owner: Neutral
+ Actor80: tc05
+ Location: 10,19
+ Owner: Neutral
+ Actor78: brl3
+ Location: 64,69
+ Owner: Soviets
+ Actor82: tc04
+ Location: 2,19
+ Owner: Neutral
+ Actor85: fenc
+ Location: 64,68
+ Owner: Soviets
+ Actor61: ftur
+ Location: 15,16
+ Owner: Soviets
+ Actor65: ftur
+ Location: 20,12
+ Owner: Soviets
+ Actor84: fenc
+ Location: 63,68
+ Owner: Soviets
+ Actor62: barb
+ Location: 14,16
+ Owner: Soviets
+ Actor124: fenc
+ Location: 46,45
+ Owner: Allies
+ Actor63: barb
+ Location: 14,15
+ Owner: Soviets
+ Actor59: brik
+ Location: 22,11
+ Owner: Soviets
+ Actor104: barb
+ Location: 19,12
+ Owner: Soviets
+ Actor66: barb
+ Location: 20,11
+ Owner: Soviets
+ Actor90: fenc
+ Location: 67,66
+ Owner: Soviets
+ Actor99: fenc
+ Location: 55,70
+ Owner: Soviets
+ Actor101: fenc
+ Location: 68,65
+ Owner: Soviets
+ Actor89: fenc
+ Location: 67,67
+ Owner: Soviets
+ Actor88: fenc
+ Location: 67,68
+ Owner: Soviets
+ Actor87: fenc
+ Location: 66,68
+ Owner: Soviets
+ Actor96: e1
+ Location: 13,13
+ Owner: Soviets
+ Facing: 160
+ Actor92: fenc
+ Location: 55,69
+ Owner: Soviets
+ Actor103: e4
+ Location: 8,12
+ Owner: Soviets
+ Facing: 160
+ Actor102: 3tnk
+ Location: 14,11
+ Owner: Soviets
+ Facing: 160
+ Actor105: tc04
+ Location: 23,29
+ Owner: Neutral
+ Actor94: fenc
+ Location: 55,72
+ Owner: Soviets
+ Actor108: t06
+ Location: 24,32
+ Owner: Neutral
+ Actor107: tc01
+ Location: 27,30
+ Owner: Neutral
+ Actor76: fenc
+ Location: 62,69
+ Owner: Soviets
+ Actor75: fenc
+ Location: 62,68
+ Owner: Soviets
+ Actor95: fenc
+ Location: 56,69
+ Owner: Soviets
+ Actor109: t01
+ Location: 26,31
+ Owner: Neutral
+ Actor110: tc05
+ Location: 51,29
+ Owner: Neutral
+ Actor111: tc04
+ Location: 45,29
+ Owner: Neutral
+ Actor112: tc05
+ Location: 62,45
+ Owner: Neutral
+ Actor113: t13
+ Location: 71,27
+ Owner: Neutral
+ Actor114: tc03
+ Location: 74,21
+ Owner: Neutral
+ Actor115: tc02
+ Location: 38,2
+ Owner: Neutral
+ Actor116: tc05
+ Location: 40,8
+ Owner: Neutral
+ Actor117: tc05
+ Location: 4,41
+ Owner: Neutral
+ Actor118: tc04
+ Location: 2,43
+ Owner: Neutral
+ Actor119: tc02
+ Location: 5,44
+ Owner: Neutral
+ Actor120: t07
+ Location: 4,46
+ Owner: Neutral
+ Actor125: fenc
+ Location: 46,44
+ Owner: Allies
+ Actor123: fenc
+ Location: 46,46
+ Owner: Allies
+ Actor97: powr
+ Location: 32,43
+ Owner: Allies
+ Health: 20
+ Actor72: dome
+ Location: 44,44
+ Owner: Allies
+ Health: 30
+ Actor127: fact
+ Location: 38,38
+ Owner: Allies
+ Health: 40
+ Actor128: powr
+ Location: 35,45
+ Owner: Allies
+ Health: 40
+ Actor129: powr
+ Location: 30,34
+ Owner: Allies
+ Health: 30
+ Actor130: weap
+ Location: 33,35
+ Owner: Allies
+ Health: 30
+ Actor131: tc01
+ Location: 30,45
+ Owner: Neutral
+ Actor132: tc04
+ Location: 32,45
+ Owner: Neutral
+ Actor133: tc02
+ Location: 34,47
+ Owner: Neutral
+ Actor134: agun
+ Location: 35,43
+ Owner: Allies
+ Health: 40
+ Actor135: gun
+ Location: 27,35
+ Owner: Allies
+ Health: 40
+ Actor136: gun
+ Location: 28,41
+ Owner: Allies
+ Actor149: cycl
+ Location: 48,39
+ Owner: Allies
+ Actor139: cycl
+ Location: 48,38
+ Owner: Allies
+ Actor138: cycl
+ Location: 48,37
+ Owner: Allies
+ Actor140: pbox
+ Location: 28,38
+ Owner: Allies
+ Health: 50
+ Actor141: agun
+ Location: 32,32
+ Owner: Allies
+ Health: 40
+ Actor143: fenc
+ Location: 31,30
+ Owner: Allies
+ Actor142: fenc
+ Location: 32,30
+ Owner: Allies
+ Actor106: fenc
+ Location: 33,30
+ Owner: Allies
+ Actor144: fenc
+ Location: 34,31
+ Owner: Allies
+ Actor68: fenc
+ Location: 34,30
+ Owner: Allies
+ Actor147: tent
+ Location: 43,34
+ Owner: Allies
+ Health: 30
+ Actor148: fix
+ Location: 44,39
+ Owner: Allies
+ Health: 20
+ Actor137: cycl
+ Location: 29,39
+ Owner: Allies
+ Actor122: cycl
+ Location: 29,38
+ Owner: Allies
+ Actor121: cycl
+ Location: 29,37
+ Owner: Allies
+ Actor152: gun
+ Location: 49,38
+ Owner: Allies
+ Health: 30
+ Actor157: fenc
+ Location: 46,32
+ Owner: Allies
+ Actor160: fenc
+ Location: 47,32
+ Owner: Allies
+ Actor161: fenc
+ Location: 48,32
+ Owner: Allies
+ Actor162: fenc
+ Location: 48,33
+ Owner: Allies
+ Actor163: fenc
+ Location: 48,34
+ Owner: Allies
+ Actor158: gun
+ Location: 39,32
+ Owner: Allies
+ Health: 30
+ Actor159: powr
+ Location: 46,33
+ Owner: Allies
+ Health: 30
+ Actor145: fenc
+ Location: 40,32
+ Owner: Allies
+ Actor146: fenc
+ Location: 40,33
+ Owner: Allies
+ Actor153: fenc
+ Location: 39,33
+ Owner: Allies
+ Actor154: fenc
+ Location: 38,33
+ Owner: Allies
+ Actor155: fenc
+ Location: 38,32
+ Owner: Allies
+ Actor156: fenc
+ Location: 45,32
+ Owner: Allies
+ Actor166: agun
+ Location: 46,38
+ Owner: Allies
+ Health: 50
+ Actor167: e1
+ Location: 35,33
+ Owner: Allies
+ Facing: 64
+ Actor168: e1
+ Location: 43,32
+ Owner: Allies
+ Actor169: e3
+ Location: 42,42
+ Owner: Allies
+ Actor170: e1
+ Location: 33,40
+ Owner: Allies
+ Actor171: jeep
+ Location: 38,35
+ Owner: Allies
+ Actor172: 1tnk
+ Location: 30,41
+ Owner: Allies
+ Actor173: 1tnk
+ Location: 47,41
+ Owner: Allies
+ Actor174: 2tnk
+ Location: 37,46
+ Owner: Allies
+ Facing: 160
+ Actor64: barb
+ Location: 15,15
+ Owner: Soviets
+ Actor177: fenc
+ Location: 55,71
+ Owner: Soviets
+ Actor100: e2
+ Location: 16,10
+ Owner: Soviets
+ Facing: 160
+ Actor180: fenc
+ Location: 53,72
+ Owner: Soviets
+ Actor179: fenc
+ Location: 54,72
+ Owner: Soviets
+ Actor181: fenc
+ Location: 53,73
+ Owner: Soviets
+ Actor183: fenc
+ Location: 54,73
+ Owner: Soviets
+ Actor176: t02
+ Location: 43,16
+ Owner: Neutral
+ Actor126: tc04
+ Location: 29,15
+ Owner: Neutral
+ Actor182: apwr
+ Location: 22,3
+ Owner: Soviets
+ Actor77: v2rl
+ Location: 40,23
+ Owner: Soviets
+ Actor223: e2
+ Location: 37,43
+ Owner: Soviets
+ Facing: 192
+ Actor220: e1
+ Location: 32,38
+ Owner: Soviets
+ Facing: 192
+ Actor222: e2
+ Location: 40,35
+ Owner: Soviets
+ Facing: 192
+ Actor221: e1
+ Location: 42,40
+ Owner: Soviets
+ Facing: 192
+ Actor70: mine
+ Location: 38,50
+ Owner: Neutral
+ Actor175: e1
+ Location: 63,72
+ Owner: Soviets
+ Facing: 32
+ Actor184: e2
+ Location: 61,74
+ Owner: Soviets
+ Actor224: brl3
+ Location: 59,75
+ Owner: Soviets
+ Actor225: barl
+ Location: 58,75
+ Owner: Soviets
+ Actor226: barl
+ Location: 61,75
+ Owner: Soviets
+ Actor227: barl
+ Location: 62,70
+ Owner: Soviets
+ Actor229: barl
+ Location: 63,71
+ Owner: Soviets
+ Actor230: fenc
+ Location: 67,65
+ Owner: Soviets
+ Actor231: brl3
+ Location: 62,74
+ Owner: Soviets
+ Actor232: barl
+ Location: 62,75
+ Owner: Soviets
+ Actor196: tsla
+ Location: 60,9
+ Owner: Soviets
+ Actor235: barl
+ Location: 64,70
+ Owner: Soviets
+ Actor236: fenc
+ Location: 61,2
+ Owner: Soviets
+ Actor237: fenc
+ Location: 62,2
+ Owner: Soviets
+ Actor238: fenc
+ Location: 63,2
+ Owner: Soviets
+ Actor241: silo
+ Location: 64,5
+ Owner: Soviets
+ Actor240: fenc
+ Location: 64,2
+ Owner: Soviets
+ Actor239: silo
+ Location: 64,4
+ Owner: Soviets
+ Actor242: powr
+ Location: 8,14
+ Owner: Soviets
+ Actor243: fenc
+ Location: 64,3
+ Owner: Soviets
+ Actor10: tc04
+ Location: 75,73
+ Owner: Neutral
+ Actor178: t16
+ Location: 77,69
+ Owner: Neutral
+ Actor192: tc02
+ Location: 22,4
+ Owner: Neutral
+ Actor193: tc01
+ Location: 27,6
+ Owner: Neutral
+ Actor194: powr
+ Location: 74,10
+ Owner: Soviets
+ Actor195: barr
+ Location: 72,6
+ Owner: Soviets
+ Actor93: tc03
+ Location: 75,68
+ Owner: Neutral
+ Actor248: mine
+ Location: 59,60
+ Owner: Neutral
+ Actor249: tc02
+ Location: 26,47
+ Owner: Neutral
+ Actor250: t16
+ Location: 24,45
+ Owner: Neutral
+ Actor251: t06
+ Location: 22,43
+ Owner: Neutral
+ Actor252: t01
+ Location: 24,43
+ Owner: Neutral
+ Actor253: kenn
+ Location: 12,6
+ Owner: Soviets
+ Actor254: fenc
+ Location: 10,5
+ Owner: Soviets
+ Actor255: fenc
+ Location: 11,5
+ Owner: Soviets
+ Actor256: fenc
+ Location: 12,5
+ Owner: Soviets
+ Actor257: dog
+ Location: 11,14
+ Owner: Soviets
+ Actor258: dog
+ Location: 18,10
+ Owner: Soviets
+ Actor259: fenc
+ Location: 10,6
+ Owner: Soviets
+ Actor260: dog
+ Location: 11,7
+ Owner: Soviets
+ Actor191: tc04
+ Location: 25,1
+ Owner: Neutral
+ Actor79: tc05
+ Location: 23,6
+ Owner: Neutral
+ Actor190: apwr
+ Location: 25,5
+ Owner: Soviets
+ Actor83: barl
+ Location: 63,69
+ Owner: Soviets
+ Actor185: brl3
+ Location: 56,71
+ Owner: Soviets
+ Actor186: barl
+ Location: 58,70
+ Owner: Soviets
+ Actor187: barl
+ Location: 58,72
+ Owner: Soviets
+ Actor188: barl
+ Location: 57,71
+ Owner: Soviets
+ Actor189: barl
+ Location: 59,71
+ Owner: Soviets
+ Actor197: barb
+ Location: 59,9
+ Owner: Soviets
+ Actor198: barb
+ Location: 59,10
+ Owner: Soviets
+ Actor199: barb
+ Location: 60,10
+ Owner: Soviets
+ Actor200: barb
+ Location: 61,10
+ Owner: Soviets
+ Actor201: barb
+ Location: 61,9
+ Owner: Soviets
+ Actor202: ftur
+ Location: 56,8
+ Owner: Soviets
+ Actor203: ftur
+ Location: 63,12
+ Owner: Soviets
+ Actor209: fenc
+ Location: 74,7
+ Owner: Soviets
+ Actor208: fenc
+ Location: 74,6
+ Owner: Soviets
+ Actor207: fenc
+ Location: 74,5
+ Owner: Soviets
+ Actor206: fenc
+ Location: 73,5
+ Owner: Soviets
+ Actor205: fenc
+ Location: 72,5
+ Owner: Soviets
+ Actor204: fenc
+ Location: 71,5
+ Owner: Soviets
+ Actor210: fenc
+ Location: 74,8
+ Owner: Soviets
+ Actor211: 3tnk
+ Location: 58,6
+ Owner: Soviets
+ Facing: 160
+ Actor212: 3tnk
+ Location: 65,10
+ Owner: Soviets
+ Facing: 96
+ Actor214: e1
+ Location: 73,9
+ Owner: Soviets
+ Facing: 96
+ Actor215: e3
+ Location: 76,4
+ Owner: Soviets
+ Facing: 32
+ Actor216: e4
+ Location: 66,3
+ Owner: Soviets
+ Facing: 96
+ Actor234: minv
+ Location: 16,17
+ Owner: Soviets
+ Actor268: minv
+ Location: 16,19
+ Owner: Soviets
+ Actor218: minv
+ Location: 62,13
+ Owner: Soviets
+ Actor219: minv
+ Location: 57,9
+ Owner: Soviets
+ Actor228: mine
+ Location: 37,14
+ Owner: Neutral
+ Actor246: minv
+ Location: 56,11
+ Owner: Soviets
+ Actor247: minv
+ Location: 58,11
+ Owner: Soviets
+ Actor261: minv
+ Location: 58,13
+ Owner: Soviets
+ Actor262: minv
+ Location: 60,12
+ Owner: Soviets
+ Actor263: minv
+ Location: 60,14
+ Owner: Soviets
+ Actor245: minv
+ Location: 20,13
+ Owner: Soviets
+ Actor266: minv
+ Location: 19,16
+ Owner: Soviets
+ Actor264: minv
+ Location: 20,15
+ Owner: Soviets
+ Actor265: minv
+ Location: 18,17
+ Owner: Soviets
+ Actor267: minv
+ Location: 22,13
+ Owner: Soviets
+ Actor269: minv
+ Location: 19,14
+ Owner: Soviets
+ Actor270: minv
+ Location: 17,16
+ Owner: Soviets
+ Actor164: fenc
+ Location: 46,47
+ Owner: Allies
+ Actor165: fenc
+ Location: 45,47
+ Owner: Allies
+ Actor213: fenc
+ Location: 44,47
+ Owner: Allies
+ Actor233: proc
+ Location: 61,3
+ Owner: Soviets
+ FreeActor: False
+ Actor74: proc
+ Location: 13,5
+ Owner: Soviets
+ FreeActor: False
+ Harvester1: harv
+ Location: 61,6
+ Owner: Soviets
+ Facing: 128
+ Harvester2: harv
+ Location: 15,5
+ Owner: Soviets
+ Facing: 150
+ HarvGuard1: apc
+ Location: 68,7
+ Owner: Soviets
+ Facing: 100
+ HarvGuard2: 3tnk
+ Location: 69,8
+ Owner: Soviets
+ Facing: 127
+ HarvGuard3: 3tnk
+ Location: 67,8
+ Owner: Soviets
+ Facing: 96
+ drum1: brl3
+ Location: 63,70
+ Owner: Soviets
+ drum2: brl3
+ Location: 60,75
+ Owner: Soviets
+ drum3: brl3
+ Location: 58,71
+ Owner: Soviets
+ boom1: apwr
+ Location: 56,73
+ Owner: Soviets
+ boom2: barr
+ Location: 65,69
+ Owner: Soviets
+ boom3: ftur
+ Location: 59,70
+ Owner: Soviets
+ boom4: 3tnk
+ Location: 61,70
+ Owner: Soviets
+ Facing: 32
+ boom5: 3tnk
+ Location: 59,74
+ Owner: Soviets
+ Facing: 224
+ Factory: weap
+ Location: 7,6
+ Owner: Soviets
+ Barrack1: barr
+ Location: 18,7
+ Owner: Soviets
+ SovietEntry1: waypoint
+ Location: 77,45
+ Owner: Neutral
+ SovietEntry2: waypoint
+ Location: 2,54
+ Owner: Neutral
+ SovietEntry3: waypoint
+ Location: 71,2
+ Owner: Neutral
+ SovietRally: waypoint
+ Location: 11,10
+ Owner: Neutral
+ SovietRally1: waypoint
+ Location: 61,72
+ Owner: Neutral
+ SovietRally2: waypoint
+ Location: 55,61
+ Owner: Neutral
+ SovietRally3: waypoint
+ Location: 22,18
+ Owner: Neutral
+ SovietRally4: waypoint
+ Location: 40,18
+ Owner: Neutral
+ SovietRally5: waypoint
+ Location: 14,36
+ Owner: Neutral
+ SovietRally6: waypoint
+ Location: 65,39
+ Owner: Neutral
+ SovietRally7: waypoint
+ Location: 15,41
+ Owner: Neutral
+ SovietRally8: waypoint
+ Location: 59,19
+ Owner: Neutral
+ SovietParaDrop1: waypoint
+ Location: 48,41
+ Owner: Neutral
+ SovietParaDrop2: waypoint
+ Location: 26,38
+ Owner: Neutral
+ SovietParaDrop3: waypoint
+ Location: 39,34
+ Owner: Neutral
+ SovietParaDropEntry: waypoint
+ Location: 2,2
+ Owner: Neutral
+ FranceEntry: waypoint
+ Location: 66,77
+ Owner: Neutral
+ FranceRally: waypoint
+ Location: 59,67
+ Owner: Neutral
+ BrokenBridge1: waypoint
+ Location: 7,67
+ Owner: Neutral
+ ReinforcementsEntry1: waypoint
+ Location: 2,71
+ Owner: Neutral
+ ReinforcementsRally1: waypoint
+ Location: 10,62
+ Owner: Neutral
+ BrokenBridge2: waypoint
+ Location: 49,74
+ Owner: Neutral
+ ReinforcementsEntry2: waypoint
+ Location: 44,77
+ Owner: Neutral
+ ReinforcementsRally2: waypoint
+ Location: 49,70
+ Owner: Neutral
+ AlliesBase: waypoint
+ Location: 39,37
+ Owner: Neutral
+
+Rules: ra|rules/campaign-rules.yaml, ra|rules/campaign-tooltips.yaml, ra|rules/campaign-palettes.yaml, rules.yaml
+
+Weapons: weapons.yaml
diff --git a/mods/ura/maps/survival02/rules.yaml b/mods/ura/maps/survival02/rules.yaml
new file mode 100644
index 0000000..848d339
--- /dev/null
+++ b/mods/ura/maps/survival02/rules.yaml
@@ -0,0 +1,123 @@
+Player:
+ PlayerResources:
+ DefaultCash: 5000
+
+World:
+ LuaScript:
+ Scripts: survival02.lua
+ MissionData:
+ Briefing: INCOMING REPORT:\n\nCommander! The Soviets have rendered us useless...\nReports indicate Soviet reinforcements are coming to finish us off... The situation looks bleak...\n
+
+^Palettes:
+ IndexedPlayerPalette:
+ PlayerIndex:
+ Soviets: 229, 230, 231, 232, 233, 234, 235, 8, 236, 237, 238, 239, 221, 222, 223, 223
+ Allies: 224, 224, 225, 225, 226, 184, 185, 186, 187, 188, 188, 189, 190, 190, 191, 191
+
+SovietSquad:
+ Inherits: powerproxy.paratroopers
+ ParatroopersPower:
+ DropItems: E1,E1,E2,E4,E4
+ DisplayBeacon: false
+
+SovietPlatoonUnits:
+ Inherits: powerproxy.paratroopers
+ ParatroopersPower:
+ DropItems: E1,E1,E2,E4,E4,E1,E1,E2,E4,E4
+ DisplayBeacon: false
+
+MINV:
+ Mine:
+ AvoidFriendly: yes
+
+CAMERA:
+ RevealsShroud:
+ Range: 7c0
+
+ARTY:
+ Valued:
+ Cost: 1000
+
+GUN:
+ Valued:
+ Cost: 1000
+
+E7:
+ Buildable:
+ Prerequisites: ~disabled
+
+SHOK:
+ Buildable:
+ Prerequisites: ~disabled
+
+HELI:
+ Buildable:
+ Prerequisites: ~disabled
+
+MSLO:
+ Buildable:
+ Prerequisites: ~disabled
+
+GAP:
+ Buildable:
+ Prerequisites: ~disabled
+
+SYRD:
+ Buildable:
+ Prerequisites: ~disabled
+
+PDOX:
+ Buildable:
+ Prerequisites: ~disabled
+
+AGUN:
+ Buildable:
+ Prerequisites: ~disabled
+
+ATEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+4TNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+MNLY:
+ Buildable:
+ Prerequisites: ~disabled
+
+TTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+CTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+BRIK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MRJ:
+ Buildable:
+ Prerequisites: ~disabled
+
+MGG:
+ Buildable:
+ Prerequisites: ~disabled
+
+STNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+QTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+DTRK:
+ Buildable:
+ Prerequisites: ~disabled
diff --git a/mods/ura/maps/survival02/survival02.lua b/mods/ura/maps/survival02/survival02.lua
new file mode 100644
index 0000000..dca1c9e
--- /dev/null
+++ b/mods/ura/maps/survival02/survival02.lua
@@ -0,0 +1,408 @@
+--[[
+ Copyright 2007-2017 The OpenRA Developers (see AUTHORS)
+ This file is part of OpenRA, which is free software. It is made
+ available to you under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of
+ the License, or (at your option) any later version. For more
+ information, see COPYING.
+]]
+FrenchSquad = { "2tnk", "2tnk", "mcv" }
+
+TimerTicks = DateTime.Minutes(10)
+AttackTicks = DateTime.Seconds(52)
+AttackAtFrame = DateTime.Seconds(18)
+AttackAtFrameIncrement = DateTime.Seconds(18)
+Producing = true
+SpawningInfantry = true
+ProduceAtFrame = DateTime.Seconds(12)
+ProduceAtFrameIncrement = DateTime.Seconds(12)
+SovietGroupSize = 4
+SovietAttackGroupSize = 7
+
+InfantryGuards = { }
+HarvGuards = { HarvGuard1, HarvGuard2, HarvGuard3 }
+SovietPlatoonUnits = { "e1", "e1", "e2", "e4", "e4", "e1", "e1", "e2", "e4", "e4" }
+SovietTanks = { "3tnk", "3tnk", "3tnk" }
+SovietVehicles = { "3tnk", "3tnk", "v2rl" }
+SovietInfantry = { "e1", "e4", "e2" }
+SovietEntryPoints = { SovietEntry1, SovietEntry2, SovietEntry3 }
+SovietRallyPoints = { SovietRally2, SovietRally4, SovietRally5, SovietRally6 }
+NewSovietEntryPoints = { SovietParaDropEntry, SovietEntry3 }
+NewSovietRallyPoints = { SovietRally3, SovietRally4, SovietRally8 }
+
+ParaWaves =
+{
+ { delay = AttackTicks, type = "SovietSquad", target = SovietRally5 },
+ { delay = 0, type = "SovietSquad", target = SovietRally6 },
+ { delay = AttackTicks * 2, type = "SovietSquad", target = SovietParaDrop3 },
+ { delay = 0, type = "SovietPlatoonUnits", target = SovietRally5 },
+ { delay = 0, type = "SovietPlatoonUnits", target = SovietRally6 },
+ { delay = 0, type = "SovietSquad", target = SovietRally2 },
+ { delay = AttackTicks * 2, type = "SovietSquad", target = SovietParaDrop2 },
+ { delay = AttackTicks * 2, type = "SovietSquad", target = SovietParaDrop1 },
+ { delay = AttackTicks * 3, type = "SovietSquad", target = SovietParaDrop1 }
+}
+
+IdleHunt = function(unit)
+ Trigger.OnIdle(unit, function(a)
+ if a.IsInWorld then
+ a.Hunt()
+ end
+ end)
+end
+
+GuardHarvester = function(unit, harvester)
+ if not unit.IsDead then
+ unit.Stop()
+
+ local start = unit.Location
+ if not harvester.IsDead then
+ unit.AttackMove(harvester.Location)
+ else
+ unit.Hunt()
+ end
+
+ Trigger.OnIdle(unit, function()
+ if unit.Location == start then
+ Trigger.ClearAll(unit)
+ else
+ unit.AttackMove(start)
+ end
+ end)
+
+ Trigger.OnCapture(unit, function()
+ Trigger.ClearAll(unit)
+ end)
+ end
+end
+
+ticked = TimerTicks
+Tick = function()
+ if soviets.HasNoRequiredUnits() then
+ if DestroyObj then
+ allies.MarkCompletedObjective(DestroyObj)
+ else
+ DestroyObj = allies.AddPrimaryObjective("Destroy all Soviet forces in the area.")
+ allies.MarkCompletedObjective(DestroyObj)
+ end
+ end
+
+ if allies.HasNoRequiredUnits() then
+ soviets.MarkCompletedObjective(SovietObj)
+ end
+
+ if soviets.Resources > soviets.ResourceCapacity / 2 then
+ soviets.Resources = soviets.ResourceCapacity / 2
+ end
+
+ if DateTime.GameTime == ProduceAtFrame then
+ if SpawningInfantry then
+ ProduceAtFrame = ProduceAtFrame + ProduceAtFrameIncrement
+ ProduceAtFrameIncrement = ProduceAtFrameIncrement * 2 - 5
+ SpawnSovietInfantry()
+ end
+ end
+
+ if DateTime.GameTime == AttackAtFrame then
+ AttackAtFrame = AttackAtFrame + AttackAtFrameIncrement
+ AttackAtFrameIncrement = AttackAtFrameIncrement * 2 - 5
+ if Producing then
+ SpawnSovietVehicle(SovietEntryPoints, SovietRallyPoints)
+ else
+ SpawnSovietVehicle(NewSovietEntryPoints, NewSovietRallyPoints)
+ end
+ end
+
+ if DateTime.Minutes(5) == ticked then
+ Media.PlaySpeechNotification(allies, "WarningFiveMinutesRemaining")
+ InitCountDown()
+ end
+
+ if ticked > 0 then
+ UserInterface.SetMissionText("Soviet reinforcements arrive in " .. Utils.FormatTime(ticked), TimerColor)
+ ticked = ticked - 1
+ elseif ticked == 0 then
+ FinishTimer()
+ ticked = ticked - 1
+ end
+end
+
+SendSovietParadrops = function(table)
+ local paraproxy = Actor.Create(table.type, false, { Owner = soviets })
+ units = paraproxy.SendParatroopers(table.target.CenterPosition)
+ Utils.Do(units, function(unit) IdleHunt(unit) end)
+ paraproxy.Destroy()
+end
+
+SpawnSovietInfantry = function()
+ soviets.Build({ Utils.Random(SovietInfantry) }, function(units)
+ IdleHunt(units[1])
+ end)
+end
+
+SpawnSovietVehicle = function(spawnpoints, rallypoints)
+ local route = Utils.RandomInteger(1, #spawnpoints + 1)
+ local rally = Utils.RandomInteger(1, #rallypoints + 1)
+ local unit = Reinforcements.Reinforce(soviets, { Utils.Random(SovietVehicles) }, { spawnpoints[route].Location })[1]
+ unit.AttackMove(rallypoints[rally].Location)
+ IdleHunt(unit)
+
+ Trigger.OnCapture(unit, function()
+ Trigger.ClearAll(unit)
+ end)
+end
+
+SpawnAndAttack = function(types, entry)
+ local units = Reinforcements.Reinforce(soviets, types, { entry })
+ Utils.Do(units, function(unit)
+ IdleHunt(unit)
+
+ Trigger.OnCapture(unit, function()
+ Trigger.ClearAll(unit)
+ end)
+ end)
+ return units
+end
+
+SendFrenchReinforcements = function()
+ local camera = Actor.Create("camera", true, { Owner = allies, Location = SovietRally1.Location })
+ Beacon.New(allies, FranceEntry.CenterPosition - WVec.New(0, 3 * 1024, 0))
+ Media.PlaySpeechNotification(allies, "AlliedReinforcementsArrived")
+ Reinforcements.Reinforce(allies, FrenchSquad, { FranceEntry.Location, FranceRally.Location })
+ Trigger.AfterDelay(DateTime.Seconds(3), function() camera.Destroy() end)
+end
+
+FrenchReinforcements = function()
+ Camera.Position = SovietRally1.CenterPosition
+
+ if drum1.IsDead or drum2.IsDead or drum3.IsDead then
+ SendFrenchReinforcements()
+ return
+ end
+
+ powerproxy = Actor.Create("powerproxy.parabombs", false, { Owner = allies })
+ powerproxy.SendAirstrike(drum1.CenterPosition, false, Facing.NorthEast + 4)
+ powerproxy.SendAirstrike(drum2.CenterPosition, false, Facing.NorthEast)
+ powerproxy.SendAirstrike(drum3.CenterPosition, false, Facing.NorthEast - 4)
+ powerproxy.Destroy()
+
+ Trigger.AfterDelay(DateTime.Seconds(3), function()
+ SendFrenchReinforcements()
+ end)
+end
+
+FinalAttack = function()
+ local units1 = SpawnAndAttack(SovietTanks, SovietEntry1.Location)
+ local units2 = SpawnAndAttack(SovietTanks, SovietEntry1.Location)
+ local units3 = SpawnAndAttack(SovietTanks, SovietEntry2.Location)
+ local units4 = SpawnAndAttack(SovietPlatoonUnits, SovietEntry1.Location)
+ local units5 = SpawnAndAttack(SovietPlatoonUnits, SovietEntry2.Location)
+
+ local units = { }
+ local insert = function(table)
+ local count = #units
+ Utils.Do(table, function(unit)
+ units[count] = unit
+ count = count + 1
+ end)
+ end
+
+ insert(units1)
+ insert(units2)
+ insert(units3)
+ insert(units4)
+ insert(units5)
+
+ Trigger.OnAllKilledOrCaptured(units, function()
+ if not DestroyObj then
+ Media.DisplayMessage("Excellent work Commander! We have reinforced our position enough to initiate a counter-attack.", "Incoming Report")
+ DestroyObj = allies.AddPrimaryObjective("Destroy the remaining Soviet forces in the area.")
+ end
+ allies.MarkCompletedObjective(SurviveObj)
+ end)
+end
+
+FinishTimer = function()
+ for i = 0, 9, 1 do
+ local c = TimerColor
+ if i % 2 == 0 then
+ c = HSLColor.White
+ end
+
+ Trigger.AfterDelay(DateTime.Seconds(i), function() UserInterface.SetMissionText("Soviet reinforcements have arrived!", c) end)
+ end
+ Trigger.AfterDelay(DateTime.Seconds(10), function() UserInterface.SetMissionText("") end)
+end
+
+wave = 1
+SendParadrops = function()
+ SendSovietParadrops(ParaWaves[wave])
+
+ wave = wave + 1
+ if wave > #ParaWaves then
+ Trigger.AfterDelay(AttackTicks, FrenchReinforcements)
+ else
+ Trigger.AfterDelay(ParaWaves[wave].delay, SendParadrops)
+ end
+end
+
+SetupBridges = function()
+ local count = 0
+ local counter = function()
+ count = count + 1
+ if count == 2 then
+ allies.MarkCompletedObjective(RepairBridges)
+ end
+ end
+
+ Media.DisplayMessage("Commander! The Soviets destroyed the bridges to disable our reinforcements. Repair them for additional reinforcements.", "Incoming Report")
+ RepairBridges = allies.AddSecondaryObjective("Repair the two southern bridges.")
+
+ local bridgeA = Map.ActorsInCircle(BrokenBridge1.CenterPosition, WDist.FromCells(1), function(self) return self.Type == "bridge1" end)
+ local bridgeB = Map.ActorsInCircle(BrokenBridge2.CenterPosition, WDist.FromCells(1), function(self) return self.Type == "bridge1" end)
+
+ Utils.Do(bridgeA, function(bridge)
+ Trigger.OnDamaged(bridge, function()
+ Utils.Do(bridgeA, function(self) Trigger.ClearAll(self) end)
+ Media.PlaySpeechNotification(allies, "AlliedReinforcementsArrived")
+ Reinforcements.Reinforce(allies, { "1tnk", "2tnk", "2tnk" }, { ReinforcementsEntry1.Location, ReinforcementsRally1.Location })
+ counter()
+ end)
+ end)
+ Utils.Do(bridgeB, function(bridge)
+ Trigger.OnDamaged(bridge, function()
+ Utils.Do(bridgeB, function(self) Trigger.ClearAll(self) end)
+ Media.PlaySpeechNotification(allies, "AlliedReinforcementsArrived")
+ Reinforcements.Reinforce(allies, { "jeep", "1tnk", "1tnk" }, { ReinforcementsEntry2.Location, ReinforcementsRally2.Location })
+ counter()
+ end)
+ end)
+end
+
+InitCountDown = function()
+ Trigger.AfterDelay(DateTime.Minutes(1), function() Media.PlaySpeechNotification(allies, "WarningFourMinutesRemaining") end)
+ Trigger.AfterDelay(DateTime.Minutes(2), function() Media.PlaySpeechNotification(allies, "WarningThreeMinutesRemaining") end)
+ Trigger.AfterDelay(DateTime.Minutes(3), function() Media.PlaySpeechNotification(allies, "WarningTwoMinutesRemaining") end)
+ Trigger.AfterDelay(DateTime.Minutes(4), function() Media.PlaySpeechNotification(allies, "WarningOneMinuteRemaining") end)
+end
+
+InitObjectives = function()
+ Trigger.OnObjectiveAdded(allies, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "New " .. string.lower(p.GetObjectiveType(id)) .. " objective")
+ end)
+
+ SurviveObj = allies.AddPrimaryObjective("Enforce your position and hold-out the onslaught.")
+ SovietObj = soviets.AddPrimaryObjective("Eliminate all Allied forces.")
+
+ Trigger.AfterDelay(DateTime.Seconds(15), function()
+ SetupBridges()
+ end)
+
+ Trigger.OnObjectiveCompleted(allies, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective completed")
+ end)
+ Trigger.OnObjectiveFailed(allies, function(p, id)
+ Media.DisplayMessage(p.GetObjectiveDescription(id), "Objective failed")
+ end)
+
+ Trigger.OnPlayerLost(allies, function()
+ Media.PlaySpeechNotification(allies, "Lose")
+ end)
+ Trigger.OnPlayerWon(allies, function()
+ Media.PlaySpeechNotification(allies, "Win")
+ Media.DisplayMessage("We have destroyed the remaining Soviet presence!", "Incoming Report")
+ end)
+end
+
+InitMission = function()
+ Camera.Position = AlliesBase.CenterPosition
+ TimerColor = HSLColor.Red
+
+ Trigger.AfterDelay(DateTime.Seconds(1), function() Media.PlaySpeechNotification(allies, "MissionTimerInitialised") end)
+
+ Trigger.AfterDelay(TimerTicks, function()
+ Media.DisplayMessage("The Soviet reinforcements are approaching!", "Incoming Report")
+ Media.PlaySpeechNotification(allies, "SovietReinforcementsArrived")
+ SpawnSovietVehicle(NewSovietEntryPoints, NewSovietRallyPoints)
+ FinalAttack()
+ Producing = false
+ end)
+
+ Trigger.AfterDelay(AttackTicks, SendParadrops)
+
+ Trigger.OnKilled(drum1, function() --Kill the remaining stuff from FrenchReinforcements
+ if not boom2.IsDead then boom2.Kill() end
+ if not boom4.IsDead then boom4.Kill() end
+ if not drum2.IsDead then drum2.Kill() end
+ if not drum3.IsDead then drum3.Kill() end
+ end)
+ Trigger.OnKilled(drum2, function()
+ if not boom1.IsDead then boom1.Kill() end
+ if not boom5.IsDead then boom5.Kill() end
+ Trigger.AfterDelay(DateTime.Seconds(1), function() if not drum1.IsDead then drum1.Kill() end end)
+ end)
+ Trigger.OnKilled(drum3, function()
+ if not boom1.IsDead then boom1.Kill() end
+ if not boom3.IsDead then boom3.Kill() end
+ Trigger.AfterDelay(DateTime.Seconds(1), function() if not drum1.IsDead then drum1.Kill() end end)
+ end)
+end
+
+SetupSoviets = function()
+ Barrack1.IsPrimaryBuilding = true
+ Barrack1.RallyPoint = SovietRally.Location
+ Trigger.OnKilledOrCaptured(Barrack1, function()
+ SpawningInfantry = false
+ end)
+
+ Harvester1.FindResources()
+ Trigger.OnDamaged(Harvester1, function()
+ Utils.Do(HarvGuards, function(unit)
+ GuardHarvester(unit, Harvester1)
+ end)
+ end)
+ Trigger.OnCapture(Harvester1, function()
+ Trigger.ClearAll(Harvester1)
+ end)
+
+ Harvester2.FindResources()
+ Trigger.OnDamaged(Harvester2, function()
+ Utils.Do(InfantryGuards, function(unit) GuardHarvester(unit, Harvester2) end)
+
+ local toBuild = { }
+ for i = 1, 6, 1 do
+ toBuild[i] = Utils.Random(SovietInfantry)
+ end
+
+ soviets.Build(toBuild, function(units)
+ Utils.Do(units, function(unit)
+ InfantryGuards[#InfantryGuards + 1] = unit
+ GuardHarvester(unit, Harvester2)
+ end)
+ end)
+ end)
+ Trigger.OnCapture(Harvester2, function()
+ Trigger.ClearAll(Harvester2)
+ end)
+
+ Trigger.AfterDelay(0, function()
+ local buildings = Utils.Where(Map.ActorsInWorld, function(self) return self.Owner == soviets and self.HasProperty("StartBuildingRepairs") end)
+ Utils.Do(buildings, function(actor)
+ Trigger.OnDamaged(actor, function(building)
+ if building.Owner == soviets and building.Health < building.MaxHealth * 3/4 then
+ building.StartBuildingRepairs()
+ end
+ end)
+ end)
+ end)
+end
+
+WorldLoaded = function()
+
+ allies = Player.GetPlayer("Allies")
+ soviets = Player.GetPlayer("Soviets")
+
+ InitObjectives()
+ InitMission()
+ SetupSoviets()
+end
diff --git a/mods/ura/maps/survival02/weapons.yaml b/mods/ura/maps/survival02/weapons.yaml
new file mode 100644
index 0000000..316699a
--- /dev/null
+++ b/mods/ura/maps/survival02/weapons.yaml
@@ -0,0 +1,23 @@
+ParaBomb:
+ ReloadDelay: 5
+ Range: 7c0
+ Report: chute1.aud
+ Projectile: GravityBomb
+ Image: BOMBLET
+ -OpenSequence:
+ Warhead@1Dam: SpreadDamage
+ Spread: 150
+ Damage: 3500
+ Versus:
+ None: 125
+ Wood: 100
+ Light: 60
+ Heavy: 50
+ Concrete: 25
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath
+ Warhead@3Eff: CreateEffect
+ Explosions: napalm
+ ImpactSounds: firebl3.aud
+ Warhead@4EffWater: CreateEffect
+ Explosions: napalm
+ ImpactSounds: firebl3.aud
diff --git a/mods/ura/maps/synergy.oramap b/mods/ura/maps/synergy.oramap
new file mode 100644
index 0000000..995ee0d
Binary files /dev/null and b/mods/ura/maps/synergy.oramap differ
diff --git a/mods/ura/maps/tabula-rasa.oramap b/mods/ura/maps/tabula-rasa.oramap
new file mode 100644
index 0000000..c8c064d
Binary files /dev/null and b/mods/ura/maps/tabula-rasa.oramap differ
diff --git a/mods/ura/maps/tainted-peak.oramap b/mods/ura/maps/tainted-peak.oramap
new file mode 100644
index 0000000..1da58b2
Binary files /dev/null and b/mods/ura/maps/tainted-peak.oramap differ
diff --git a/mods/ura/maps/tandem.oramap b/mods/ura/maps/tandem.oramap
new file mode 100644
index 0000000..9ecb8df
Binary files /dev/null and b/mods/ura/maps/tandem.oramap differ
diff --git a/mods/ura/maps/temperal.oramap b/mods/ura/maps/temperal.oramap
new file mode 100644
index 0000000..ed9ed00
Binary files /dev/null and b/mods/ura/maps/temperal.oramap differ
diff --git a/mods/ura/maps/tournament-island.oramap b/mods/ura/maps/tournament-island.oramap
new file mode 100644
index 0000000..fa685fc
Binary files /dev/null and b/mods/ura/maps/tournament-island.oramap differ
diff --git a/mods/ura/maps/training-camp/map.bin b/mods/ura/maps/training-camp/map.bin
new file mode 100644
index 0000000..3a8b32b
Binary files /dev/null and b/mods/ura/maps/training-camp/map.bin differ
diff --git a/mods/ura/maps/training-camp/map.png b/mods/ura/maps/training-camp/map.png
new file mode 100644
index 0000000..11ab315
Binary files /dev/null and b/mods/ura/maps/training-camp/map.png differ
diff --git a/mods/ura/maps/training-camp/map.yaml b/mods/ura/maps/training-camp/map.yaml
new file mode 100644
index 0000000..56056c2
--- /dev/null
+++ b/mods/ura/maps/training-camp/map.yaml
@@ -0,0 +1,781 @@
+MapFormat: 11
+
+RequiresMod: ra
+
+Title: Training camp
+
+Author: Holloweye
+
+Tileset: TEMPERAT
+
+MapSize: 64,64
+
+Bounds: 16,16,32,32
+
+Visibility: Lobby
+
+Categories: Minigame
+
+Players:
+ PlayerReference@Neutral:
+ Name: Neutral
+ OwnsWorld: True
+ NonCombatant: True
+ Faction: allies
+ PlayerReference@Multi0:
+ Name: Multi0
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi1:
+ Name: Multi1
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi2:
+ Name: Multi2
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi3:
+ Name: Multi3
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi4:
+ Name: Multi4
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi5:
+ Name: Multi5
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi6:
+ Name: Multi6
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+ PlayerReference@Multi7:
+ Name: Multi7
+ Playable: True
+ AllowBots: False
+ LockFaction: True
+ Faction: soviet
+
+Actors:
+ Actor93: barr
+ Location: 17,21
+ Owner: Multi0
+ Actor94: barr
+ Location: 17,33
+ Owner: Multi1
+ Actor95: barr
+ Location: 21,44
+ Owner: Multi2
+ Actor96: barr
+ Location: 35,45
+ Owner: Multi3
+ Actor97: barr
+ Location: 45,41
+ Owner: Multi4
+ Actor98: barr
+ Location: 46,27
+ Owner: Multi5
+ Actor99: barr
+ Location: 42,16
+ Owner: Multi6
+ Actor100: barr
+ Location: 29,16
+ Owner: Multi7
+ Actor0: oilb
+ Location: 18,18
+ Owner: Multi0
+ Actor1: oilb
+ Location: 18,44
+ Owner: Multi2
+ Actor2: oilb
+ Location: 45,45
+ Owner: Multi4
+ Actor3: oilb
+ Location: 45,17
+ Owner: Multi6
+ Actor4: oilb
+ Location: 32,18
+ Owner: Multi7
+ Actor5: oilb
+ Location: 18,30
+ Owner: Multi1
+ Actor6: oilb
+ Location: 32,45
+ Owner: Multi3
+ Actor7: oilb
+ Location: 45,30
+ Owner: Multi5
+ Actor8: t10
+ Location: 25,15
+ Owner: Neutral
+ Actor9: t10
+ Location: 15,25
+ Owner: Neutral
+ Actor10: t10
+ Location: 16,38
+ Owner: Neutral
+ Actor11: t10
+ Location: 26,46
+ Owner: Neutral
+ Actor12: t10
+ Location: 39,46
+ Owner: Neutral
+ Actor13: t10
+ Location: 46,36
+ Owner: Neutral
+ Actor14: t10
+ Location: 47,22
+ Owner: Neutral
+ Actor15: t10
+ Location: 39,15
+ Owner: Neutral
+ Actor16: tc04
+ Location: 16,25
+ Owner: Neutral
+ Actor17: tc04
+ Location: 25,16
+ Owner: Neutral
+ Actor18: tc04
+ Location: 38,16
+ Owner: Neutral
+ Actor19: tc04
+ Location: 45,22
+ Owner: Neutral
+ Actor20: tc05
+ Location: 43,36
+ Owner: Neutral
+ Actor21: tc05
+ Location: 38,44
+ Owner: Neutral
+ Actor22: tc05
+ Location: 25,44
+ Owner: Neutral
+ Actor23: tc05
+ Location: 17,37
+ Owner: Neutral
+ Actor24: tc03
+ Location: 20,36
+ Owner: Neutral
+ Actor25: tc03
+ Location: 27,42
+ Owner: Neutral
+ Actor26: tc03
+ Location: 18,26
+ Owner: Neutral
+ Actor27: tc03
+ Location: 25,19
+ Owner: Neutral
+ Actor28: tc03
+ Location: 37,19
+ Owner: Neutral
+ Actor29: tc03
+ Location: 43,23
+ Owner: Neutral
+ Actor30: t17
+ Location: 22,35
+ Owner: Neutral
+ Actor31: t02
+ Location: 23,34
+ Owner: Neutral
+ Actor32: t02
+ Location: 26,20
+ Owner: Neutral
+ Actor33: t02
+ Location: 36,20
+ Owner: Neutral
+ Actor34: t02
+ Location: 42,24
+ Owner: Neutral
+ Actor35: t02
+ Location: 42,35
+ Owner: Neutral
+ Actor36: t02
+ Location: 38,42
+ Owner: Neutral
+ Actor37: t02
+ Location: 29,40
+ Owner: Neutral
+ Actor38: tc05
+ Location: 25,21
+ Owner: Neutral
+ Actor39: tc05
+ Location: 20,25
+ Owner: Neutral
+ Actor40: tc05
+ Location: 24,33
+ Owner: Neutral
+ Actor41: tc05
+ Location: 28,38
+ Owner: Neutral
+ Actor42: tc05
+ Location: 37,40
+ Owner: Neutral
+ Actor43: tc05
+ Location: 41,33
+ Owner: Neutral
+ Actor44: tc05
+ Location: 40,25
+ Owner: Neutral
+ Actor45: tc05
+ Location: 34,21
+ Owner: Neutral
+ Actor46: t01
+ Location: 27,15
+ Owner: Neutral
+ Actor47: t01
+ Location: 37,17
+ Owner: Neutral
+ Actor48: t01
+ Location: 38,15
+ Owner: Neutral
+ Actor49: t01
+ Location: 24,15
+ Owner: Neutral
+ Actor50: t01
+ Location: 16,27
+ Owner: Neutral
+ Actor51: t01
+ Location: 20,26
+ Owner: Neutral
+ Actor52: t01
+ Location: 16,37
+ Owner: Neutral
+ Actor53: t08
+ Location: 16,39
+ Owner: Neutral
+ Actor54: t08
+ Location: 16,40
+ Owner: Neutral
+ Actor55: t08
+ Location: 24,35
+ Owner: Neutral
+ Actor56: t12
+ Location: 23,35
+ Owner: Neutral
+ Actor57: t12
+ Location: 21,37
+ Owner: Neutral
+ Actor58: t12
+ Location: 28,40
+ Owner: Neutral
+ Actor59: t15
+ Location: 25,46
+ Owner: Neutral
+ Actor60: t15
+ Location: 28,42
+ Owner: Neutral
+ Actor61: t05
+ Location: 26,43
+ Owner: Neutral
+ Actor62: t05
+ Location: 38,45
+ Owner: Neutral
+ Actor63: t08
+ Location: 39,43
+ Owner: Neutral
+ Actor64: tc01
+ Location: 37,43
+ Owner: Neutral
+ Actor65: t11
+ Location: 38,38
+ Owner: Neutral
+ Actor66: t02
+ Location: 37,38
+ Owner: Neutral
+ Actor67: t02
+ Location: 41,32
+ Owner: Neutral
+ Actor68: t02
+ Location: 43,24
+ Owner: Neutral
+ Actor69: t02
+ Location: 44,35
+ Owner: Neutral
+ Actor70: t02
+ Location: 44,24
+ Owner: Neutral
+ Actor71: t02
+ Location: 47,21
+ Owner: Neutral
+ Actor72: t02
+ Location: 36,18
+ Owner: Neutral
+ Actor73: t02
+ Location: 36,19
+ Owner: Neutral
+ Actor74: t12
+ Location: 37,20
+ Owner: Neutral
+ Actor75: t12
+ Location: 39,17
+ Owner: Neutral
+ Actor76: t12
+ Location: 26,17
+ Owner: Neutral
+ Actor77: t01
+ Location: 25,18
+ Owner: Neutral
+ Actor78: t07
+ Location: 25,20
+ Owner: Neutral
+ Actor79: t01
+ Location: 27,18
+ Owner: Neutral
+ Actor80: brik
+ Location: 31,28
+ Owner: Neutral
+ Actor81: brik
+ Location: 30,28
+ Owner: Neutral
+ Actor82: brik
+ Location: 30,29
+ Owner: Neutral
+ Actor83: brik
+ Location: 30,32
+ Owner: Neutral
+ Actor84: brik
+ Location: 30,33
+ Owner: Neutral
+ Actor85: brik
+ Location: 31,33
+ Owner: Neutral
+ Actor86: brik
+ Location: 35,28
+ Owner: Neutral
+ Actor87: brik
+ Location: 36,28
+ Owner: Neutral
+ Actor88: brik
+ Location: 36,29
+ Owner: Neutral
+ Actor89: brik
+ Location: 36,32
+ Owner: Neutral
+ Actor90: brik
+ Location: 36,33
+ Owner: Neutral
+ Actor91: brik
+ Location: 35,33
+ Owner: Neutral
+ Actor92: weap
+ Location: 32,30
+ Owner: Neutral
+ Actor101: fenc
+ Location: 16,24
+ Owner: Neutral
+ Actor102: fenc
+ Location: 16,23
+ Owner: Neutral
+ Actor103: fenc
+ Location: 16,22
+ Owner: Neutral
+ Actor104: fenc
+ Location: 16,21
+ Owner: Neutral
+ Actor105: fenc
+ Location: 16,20
+ Owner: Neutral
+ Actor106: fenc
+ Location: 16,19
+ Owner: Neutral
+ Actor107: fenc
+ Location: 16,18
+ Owner: Neutral
+ Actor108: fenc
+ Location: 16,17
+ Owner: Neutral
+ Actor109: fenc
+ Location: 16,16
+ Owner: Neutral
+ Actor110: fenc
+ Location: 17,16
+ Owner: Neutral
+ Actor111: fenc
+ Location: 18,16
+ Owner: Neutral
+ Actor112: fenc
+ Location: 19,16
+ Owner: Neutral
+ Actor113: fenc
+ Location: 20,16
+ Owner: Neutral
+ Actor114: fenc
+ Location: 21,16
+ Owner: Neutral
+ Actor115: fenc
+ Location: 22,16
+ Owner: Neutral
+ Actor116: fenc
+ Location: 23,16
+ Owner: Neutral
+ Actor117: fenc
+ Location: 28,16
+ Owner: Neutral
+ Actor118: fenc
+ Location: 31,16
+ Owner: Neutral
+ Actor119: fenc
+ Location: 32,16
+ Owner: Neutral
+ Actor120: fenc
+ Location: 33,16
+ Owner: Neutral
+ Actor122: fenc
+ Location: 35,16
+ Owner: Neutral
+ Actor121: fenc
+ Location: 34,16
+ Owner: Neutral
+ Actor123: fenc
+ Location: 36,16
+ Owner: Neutral
+ Actor124: fenc
+ Location: 37,16
+ Owner: Neutral
+ Actor125: fenc
+ Location: 41,16
+ Owner: Neutral
+ Actor126: fenc
+ Location: 44,16
+ Owner: Neutral
+ Actor127: fenc
+ Location: 45,16
+ Owner: Neutral
+ Actor128: fenc
+ Location: 46,16
+ Owner: Neutral
+ Actor129: fenc
+ Location: 47,16
+ Owner: Neutral
+ Actor130: fenc
+ Location: 47,17
+ Owner: Neutral
+ Actor131: fenc
+ Location: 47,18
+ Owner: Neutral
+ Actor132: fenc
+ Location: 47,19
+ Owner: Neutral
+ Actor133: fenc
+ Location: 47,20
+ Owner: Neutral
+ Actor134: fenc
+ Location: 47,24
+ Owner: Neutral
+ Actor135: fenc
+ Location: 47,25
+ Owner: Neutral
+ Actor136: fenc
+ Location: 47,26
+ Owner: Neutral
+ Actor137: fenc
+ Location: 47,29
+ Owner: Neutral
+ Actor138: fenc
+ Location: 47,30
+ Owner: Neutral
+ Actor139: fenc
+ Location: 47,31
+ Owner: Neutral
+ Actor140: fenc
+ Location: 47,32
+ Owner: Neutral
+ Actor141: fenc
+ Location: 47,33
+ Owner: Neutral
+ Actor142: fenc
+ Location: 47,34
+ Owner: Neutral
+ Actor143: fenc
+ Location: 47,35
+ Owner: Neutral
+ Actor144: fenc
+ Location: 47,36
+ Owner: Neutral
+ Actor145: fenc
+ Location: 47,38
+ Owner: Neutral
+ Actor146: fenc
+ Location: 47,39
+ Owner: Neutral
+ Actor147: fenc
+ Location: 47,40
+ Owner: Neutral
+ Actor148: fenc
+ Location: 47,41
+ Owner: Neutral
+ Actor149: fenc
+ Location: 47,42
+ Owner: Neutral
+ Actor150: fenc
+ Location: 47,43
+ Owner: Neutral
+ Actor151: fenc
+ Location: 47,44
+ Owner: Neutral
+ Actor152: fenc
+ Location: 47,45
+ Owner: Neutral
+ Actor153: fenc
+ Location: 47,46
+ Owner: Neutral
+ Actor154: fenc
+ Location: 47,47
+ Owner: Neutral
+ Actor155: fenc
+ Location: 46,47
+ Owner: Neutral
+ Actor156: fenc
+ Location: 45,47
+ Owner: Neutral
+ Actor157: fenc
+ Location: 44,47
+ Owner: Neutral
+ Actor158: fenc
+ Location: 43,47
+ Owner: Neutral
+ Actor159: fenc
+ Location: 42,47
+ Owner: Neutral
+ Actor160: fenc
+ Location: 41,47
+ Owner: Neutral
+ Actor161: fenc
+ Location: 38,47
+ Owner: Neutral
+ Actor162: fenc
+ Location: 37,47
+ Owner: Neutral
+ Actor163: fenc
+ Location: 36,47
+ Owner: Neutral
+ Actor164: fenc
+ Location: 33,47
+ Owner: Neutral
+ Actor165: fenc
+ Location: 32,47
+ Owner: Neutral
+ Actor166: fenc
+ Location: 31,47
+ Owner: Neutral
+ Actor167: fenc
+ Location: 30,47
+ Owner: Neutral
+ Actor168: fenc
+ Location: 29,47
+ Owner: Neutral
+ Actor169: fenc
+ Location: 28,47
+ Owner: Neutral
+ Actor170: fenc
+ Location: 24,47
+ Owner: Neutral
+ Actor171: fenc
+ Location: 23,47
+ Owner: Neutral
+ Actor172: fenc
+ Location: 22,47
+ Owner: Neutral
+ Actor173: fenc
+ Location: 21,47
+ Owner: Neutral
+ Actor174: fenc
+ Location: 20,47
+ Owner: Neutral
+ Actor175: fenc
+ Location: 19,47
+ Owner: Neutral
+ Actor176: fenc
+ Location: 18,47
+ Owner: Neutral
+ Actor177: fenc
+ Location: 17,47
+ Owner: Neutral
+ Actor178: fenc
+ Location: 16,47
+ Owner: Neutral
+ Actor179: fenc
+ Location: 16,46
+ Owner: Neutral
+ Actor180: fenc
+ Location: 16,45
+ Owner: Neutral
+ Actor181: fenc
+ Location: 16,44
+ Owner: Neutral
+ Actor182: fenc
+ Location: 16,43
+ Owner: Neutral
+ Actor183: fenc
+ Location: 16,42
+ Owner: Neutral
+ Actor184: fenc
+ Location: 16,41
+ Owner: Neutral
+ Actor185: fenc
+ Location: 16,29
+ Owner: Neutral
+ Actor186: fenc
+ Location: 16,30
+ Owner: Neutral
+ Actor187: fenc
+ Location: 16,31
+ Owner: Neutral
+ Actor188: fenc
+ Location: 16,32
+ Owner: Neutral
+ Actor189: fenc
+ Location: 16,33
+ Owner: Neutral
+ Actor190: fenc
+ Location: 16,34
+ Owner: Neutral
+ Actor191: fenc
+ Location: 16,35
+ Owner: Neutral
+ Actor192: fenc
+ Location: 16,36
+ Owner: Neutral
+ Actor193: mpspawn
+ Location: 31,29
+ Owner: Neutral
+ Actor194: mpspawn
+ Location: 31,30
+ Owner: Neutral
+ Actor195: mpspawn
+ Location: 31,31
+ Owner: Neutral
+ Actor196: mpspawn
+ Location: 31,32
+ Owner: Neutral
+ Actor197: mpspawn
+ Location: 36,30
+ Owner: Neutral
+ Actor198: mpspawn
+ Location: 36,31
+ Owner: Neutral
+ Actor199: mpspawn
+ Location: 34,33
+ Owner: Neutral
+ Actor200: mpspawn
+ Location: 33,33
+ Owner: Neutral
+ Actor201: ftur
+ Location: 19,21
+ Owner: Multi0
+ Actor202: ftur
+ Location: 21,19
+ Owner: Multi0
+ Actor203: ftur
+ Location: 20,30
+ Owner: Multi1
+ Actor204: ftur
+ Location: 20,32
+ Owner: Multi1
+ Actor205: ftur
+ Location: 21,41
+ Owner: Multi2
+ Actor206: ftur
+ Location: 22,42
+ Owner: Multi2
+ Actor207: ftur
+ Location: 33,43
+ Owner: Multi3
+ Actor208: ftur
+ Location: 34,43
+ Owner: Multi3
+ Actor209: ftur
+ Location: 43,41
+ Owner: Multi4
+ Actor210: ftur
+ Location: 44,41
+ Owner: Multi4
+ Actor211: ftur
+ Location: 44,29
+ Owner: Multi5
+ Actor212: ftur
+ Location: 44,31
+ Owner: Multi5
+ Actor213: ftur
+ Location: 41,19
+ Owner: Multi6
+ Actor214: ftur
+ Location: 43,20
+ Owner: Multi6
+ Actor215: ftur
+ Location: 31,20
+ Owner: Multi7
+ Actor216: ftur
+ Location: 30,20
+ Owner: Multi7
+ Actor217: t08
+ Location: 19,25
+ Owner: Neutral
+ Actor218: t01
+ Location: 18,24
+ Owner: Neutral
+ Actor219: t17
+ Location: 17,24
+ Owner: Neutral
+ Actor220: t08
+ Location: 20,38
+ Owner: Neutral
+ Actor221: t08
+ Location: 22,37
+ Owner: Neutral
+ Actor222: t08
+ Location: 28,45
+ Owner: Neutral
+ Actor223: t08
+ Location: 28,46
+ Owner: Neutral
+ Actor224: t01
+ Location: 40,42
+ Owner: Neutral
+ Actor225: t08
+ Location: 41,35
+ Owner: Neutral
+ Actor226: t08
+ Location: 46,35
+ Owner: Neutral
+ Actor227: t08
+ Location: 24,17
+ Owner: Neutral
+ Actor228: t08
+ Location: 24,18
+ Owner: Neutral
+ Actor229: t08
+ Location: 37,22
+ Owner: Neutral
+ Actor230: t08
+ Location: 42,23
+ Owner: Neutral
+ Actor231: t08
+ Location: 46,21
+ Owner: Neutral
+ Actor232: t08
+ Location: 44,22
+ Owner: Neutral
+ Actor233: brl3
+ Location: 31,34
+ Owner: Neutral
+ Actor234: barl
+ Location: 37,33
+ Owner: Neutral
+
+Rules: rules.yaml
diff --git a/mods/ura/maps/training-camp/rules.yaml b/mods/ura/maps/training-camp/rules.yaml
new file mode 100644
index 0000000..2b1c22a
--- /dev/null
+++ b/mods/ura/maps/training-camp/rules.yaml
@@ -0,0 +1,310 @@
+World:
+ -CrateSpawner:
+ -SpawnMPUnits:
+ -MPStartLocations:
+ MapBuildRadius:
+ AllyBuildRadiusCheckboxLocked: True
+ AllyBuildRadiusCheckboxEnabled: False
+ BuildRadiusCheckboxLocked: True
+ BuildRadiusCheckboxEnabled: True
+ MapOptions:
+ TechLevelDropdownLocked: True
+ TechLevel: unrestricted
+
+Player:
+ ClassicProductionQueue@Infantry:
+ BuildDurationModifier: 250
+ ClassicProductionQueue@Vehicle:
+ BuildDurationModifier: 250
+ Shroud:
+ FogCheckboxLocked: True
+ FogCheckboxEnabled: True
+ ExploredMapCheckboxLocked: True
+ ExploredMapCheckboxEnabled: False
+ PlayerResources:
+ DefaultCashLocked: True
+ DefaultCash: 100
+
+OILB:
+ Health:
+ HP: 6000
+
+BARR:
+ Buildable:
+ Prerequisites: ~disabled
+ Health:
+ HP: 5000
+ Production:
+ Produces: Building, Infantry, Soldier, Dog
+ BaseProvider:
+ Range: 16c0
+ Power:
+ Amount: 0
+
+WEAP:
+ Buildable:
+ Prerequisites: ~disabled
+ Health:
+ HP: 10000
+ Valued:
+ Cost: 2000
+ Power:
+ Amount: 0
+
+FTUR:
+ Power:
+ Amount: 0
+
+SPEN:
+ Buildable:
+ Prerequisites: ~disabled
+
+DOME:
+ Buildable:
+ Prerequisites: ~disabled
+
+PROC:
+ Buildable:
+ Prerequisites: ~disabled
+
+SILO:
+ Buildable:
+ Prerequisites: ~disabled
+
+APWR:
+ Buildable:
+ Prerequisites: ~disabled
+
+STEK:
+ Buildable:
+ Prerequisites: ~disabled
+
+FIX:
+ Buildable:
+ Prerequisites: ~disabled
+
+POWR:
+ Buildable:
+ Prerequisites: ~disabled
+
+MIG:
+ Buildable:
+ Prerequisites: afld
+ Valued:
+ Cost: 2000
+
+YAK:
+ Buildable:
+ Prerequisites: afld
+ Valued:
+ Cost: 150
+
+TRAN:
+ Buildable:
+ Prerequisites: hpad
+ Valued:
+ Cost: 150
+
+HIND:
+ Buildable:
+ Prerequisites: hpad
+ Valued:
+ Cost: 200
+
+HELI:
+ Buildable:
+ Prerequisites: hpad
+ Valued:
+ Cost: 200
+
+HPAD:
+ Buildable:
+ Prerequisites: barr
+ Valued:
+ Cost: 200
+ Power:
+ Amount: 0
+
+FENC:
+ Buildable:
+ Queue: Building
+ Prerequisites: barr
+ Valued:
+ Cost: 10
+
+AFLD:
+ Buildable:
+ Prerequisites: barr
+ Valued:
+ Cost: 200
+ Power:
+ Amount: 0
+
+DOG:
+ Buildable:
+ Prerequisites: barr
+ Valued:
+ Cost: 20
+
+E1:
+ Buildable:
+ Prerequisites: barr
+ Valued:
+ Cost: 20
+
+E2:
+ Buildable:
+ Prerequisites: barr
+ Valued:
+ Cost: 32
+
+E3:
+ Buildable:
+ Prerequisites: barr
+ Valued:
+ Cost: 60
+
+E4:
+ Buildable:
+ Prerequisites: barr
+ Valued:
+ Cost: 60
+
+E6:
+ Buildable:
+ Prerequisites: barr
+ Valued:
+ Cost: 100
+
+SPY:
+ Buildable:
+ Prerequisites: barr
+ Valued:
+ Cost: 100
+
+E7:
+ Buildable:
+ Prerequisites: barr
+ Valued:
+ Cost: 400
+
+MEDI:
+ Buildable:
+ Prerequisites: barr
+ Valued:
+ Cost: 60
+
+SHOK:
+ Buildable:
+ Prerequisites: barr
+ Valued:
+ Cost: 200
+
+SNIPER:
+ Buildable:
+ Prerequisites: barr
+ Valued:
+ Cost: 200
+
+HIJACKER:
+ Buildable:
+ Prerequisites: ~disabled
+
+V2RL:
+ Buildable:
+ Prerequisites: weap
+ Valued:
+ Cost: 1250
+
+1TNK:
+ Buildable:
+ Prerequisites: weap
+ Valued:
+ Cost: 125
+
+2TNK:
+ Buildable:
+ Prerequisites: weap
+ Valued:
+ Cost: 175
+
+3TNK:
+ Buildable:
+ Prerequisites: weap
+ Valued:
+ Cost: 250
+
+4TNK:
+ Buildable:
+ Prerequisites: weap
+ Valued:
+ Cost: 500
+
+ARTY:
+ Buildable:
+ Prerequisites: weap
+ Valued:
+ Cost: 1000
+
+HARV:
+ Buildable:
+ Prerequisites: ~disabled
+
+MCV:
+ Buildable:
+ Prerequisites: ~disabled
+
+MNLY:
+ Buildable:
+ Prerequisites: ~disabled
+
+TRUK:
+ Buildable:
+ Prerequisites: ~disabled
+
+STNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+MRJ:
+ Buildable:
+ Prerequisites: ~disabled
+
+MGG:
+ Buildable:
+ Prerequisites: ~disabled
+
+CTNK:
+ Buildable:
+ Prerequisites: ~disabled
+
+JEEP:
+ Buildable:
+ Prerequisites: weap
+ Valued:
+ Cost: 50
+
+APC:
+ Buildable:
+ Prerequisites: weap
+ Valued:
+ Cost: 250
+
+TTNK:
+ Buildable:
+ Prerequisites: weap
+ Valued:
+ Cost: 200
+
+FTRK:
+ Buildable:
+ Prerequisites: weap
+ Valued:
+ Cost: 150
+
+DTRK:
+ Buildable:
+ BuildPaletteOrder: 10
+ Prerequisites: weap
+ Valued:
+ Cost: 150
diff --git a/mods/ura/maps/unconventional-warfare.oramap b/mods/ura/maps/unconventional-warfare.oramap
new file mode 100644
index 0000000..09e703b
Binary files /dev/null and b/mods/ura/maps/unconventional-warfare.oramap differ
diff --git a/mods/ura/maps/union-sacree.oramap b/mods/ura/maps/union-sacree.oramap
new file mode 100644
index 0000000..6bfb512
Binary files /dev/null and b/mods/ura/maps/union-sacree.oramap differ
diff --git a/mods/ura/maps/vegetation.oramap b/mods/ura/maps/vegetation.oramap
new file mode 100644
index 0000000..1f374b2
Binary files /dev/null and b/mods/ura/maps/vegetation.oramap differ
diff --git a/mods/ura/maps/vihaan-lunta.oramap b/mods/ura/maps/vihaan-lunta.oramap
new file mode 100644
index 0000000..09109e5
Binary files /dev/null and b/mods/ura/maps/vihaan-lunta.oramap differ
diff --git a/mods/ura/maps/volcano.oramap b/mods/ura/maps/volcano.oramap
new file mode 100644
index 0000000..1bd8a8f
Binary files /dev/null and b/mods/ura/maps/volcano.oramap differ
diff --git a/mods/ura/maps/warwind.oramap b/mods/ura/maps/warwind.oramap
new file mode 100644
index 0000000..0d8944c
Binary files /dev/null and b/mods/ura/maps/warwind.oramap differ
diff --git a/mods/ura/maps/winter-storm.oramap b/mods/ura/maps/winter-storm.oramap
new file mode 100644
index 0000000..fb66416
Binary files /dev/null and b/mods/ura/maps/winter-storm.oramap differ
diff --git a/mods/ura/maps/x-lake.oramap b/mods/ura/maps/x-lake.oramap
new file mode 100644
index 0000000..da9c7a1
Binary files /dev/null and b/mods/ura/maps/x-lake.oramap differ
diff --git a/mods/ura/maps/ysmir.oramap b/mods/ura/maps/ysmir.oramap
new file mode 100644
index 0000000..238ca5e
Binary files /dev/null and b/mods/ura/maps/ysmir.oramap differ
diff --git a/mods/ura/metrics.yaml b/mods/ura/metrics.yaml
new file mode 100644
index 0000000..b9a7f49
--- /dev/null
+++ b/mods/ura/metrics.yaml
@@ -0,0 +1,14 @@
+# General dumping-ground for UI element sizes, etc.
+
+Metrics:
+ ColorPickerActorType: ^fact.colorpicker
+ ColorPickerRemapIndices: 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95
+ FactionSuffix-allies: allies
+ FactionSuffix-england: allies
+ FactionSuffix-france: allies
+ FactionSuffix-germany: allies
+ FactionSuffix-russia: soviet
+ FactionSuffix-soviet: soviet
+ FactionSuffix-ukraine: soviet
+ IncompatibleProtectedGameColor: B22222
+ IncompatibleVersionColor: D3D3D3
diff --git a/mods/ura/missions.yaml b/mods/ura/missions.yaml
new file mode 100644
index 0000000..4d4ae2d
--- /dev/null
+++ b/mods/ura/missions.yaml
@@ -0,0 +1,20 @@
+Allied Campaign:
+ ./mods/ra/maps/allies-01
+ ./mods/ra/maps/allies-02
+ ./mods/ra/maps/allies-03a
+ ./mods/ra/maps/allies-03b
+ ./mods/ra/maps/allies-04
+ ./mods/ra/maps/allies-05a
+ ./mods/ra/maps/allies-06a
+ ./mods/ra/maps/allies-06b
+Soviet Campaign:
+ ./mods/ra/maps/soviet-01
+ ./mods/ra/maps/soviet-02a
+ ./mods/ra/maps/soviet-02b
+ ./mods/ra/maps/soviet-03
+ ./mods/ra/maps/soviet-04a
+ ./mods/ra/maps/soviet-04b
+ ./mods/ra/maps/soviet-05
+ ./mods/ra/maps/soviet-06a
+ ./mods/ra/maps/soviet-06b
+ ./mods/ra/maps/soviet-07
diff --git a/mods/ura/mod.yaml b/mods/ura/mod.yaml
new file mode 100644
index 0000000..5501f93
--- /dev/null
+++ b/mods/ura/mod.yaml
@@ -0,0 +1,282 @@
+Metadata:
+ Title: Red Alert: Unplugged
+ Version: Master version
+
+PackageFormats: Mix
+
+Packages:
+ ~^Content/ra/v2/
+ ~^Content/ra/v2/expand
+ ~^Content/ra/v2/cnc
+ ~^Content/ra/v2/movies
+ .
+ $ura: ura
+ ./mods/common: common
+ ~main.mix
+ ~conquer.mix
+ ~lores.mix: lores
+ ~hires.mix
+ ~local.mix
+ ~sounds.mix
+ ~speech.mix
+ ~allies.mix
+ ~russian.mix
+ ~temperat.mix
+ ~snow.mix
+ ~interior.mix
+ ~scores.mix
+ ~expand2.mix
+ ~hires1.mix
+ ~desert.mix
+ ura|bits
+ ura|bits/desert
+ ura|uibits
+
+MapFolders:
+ ura|maps: System
+ ~^maps/ra/release-20180307: User
+
+Rules:
+ ura|rules/misc.yaml
+ ura|rules/ai.yaml
+ ura|rules/player.yaml
+ ura|rules/palettes.yaml
+ ura|rules/world.yaml
+ ura|rules/defaults.yaml
+ ura|rules/vehicles.yaml
+ ura|rules/husks.yaml
+ ura|rules/structures.yaml
+ ura|rules/infantry.yaml
+ ura|rules/civilian.yaml
+ ura|rules/decoration.yaml
+ ura|rules/aircraft.yaml
+ ura|rules/ships.yaml
+ ura|rules/fakes.yaml
+
+Sequences:
+ ura|sequences/ships.yaml
+ ura|sequences/vehicles.yaml
+ ura|sequences/structures.yaml
+ ura|sequences/infantry.yaml
+ ura|sequences/aircraft.yaml
+ ura|sequences/misc.yaml
+ ura|sequences/decorations.yaml
+
+TileSets:
+ ura|tilesets/snow.yaml
+ ura|tilesets/interior.yaml
+ ura|tilesets/temperat.yaml
+ ura|tilesets/desert.yaml
+
+Cursors:
+ ura|cursors.yaml
+
+Chrome:
+ ura|chrome.yaml
+
+Assemblies:
+ common|OpenRA.Mods.Common.dll
+ common|OpenRA.Mods.Cnc.dll
+
+ChromeLayout:
+ common|chrome/ingame.yaml
+ common|chrome/ingame-chat.yaml
+ common|chrome/ingame-fmvplayer.yaml
+ common|chrome/ingame-info.yaml
+ common|chrome/ingame-infoscripterror.yaml
+ common|chrome/ingame-infobriefing.yaml
+ common|chrome/ingame-infoobjectives.yaml
+ common|chrome/ingame-infostats.yaml
+ common|chrome/ingame-menu.yaml
+ ura|chrome/ingame-observer.yaml
+ common|chrome/ingame-observerstats.yaml
+ ura|chrome/ingame-player.yaml
+ common|chrome/ingame-perf.yaml
+ common|chrome/ingame-debug.yaml
+ common|chrome/ingame-infochat.yaml
+ common|chrome/mainmenu.yaml
+ common|chrome/settings.yaml
+ common|chrome/credits.yaml
+ common|chrome/lobby.yaml
+ common|chrome/lobby-mappreview.yaml
+ common|chrome/lobby-players.yaml
+ common|chrome/lobby-options.yaml
+ common|chrome/lobby-music.yaml
+ common|chrome/lobby-servers.yaml
+ common|chrome/lobby-kickdialogs.yaml
+ common|chrome/color-picker.yaml
+ common|chrome/map-chooser.yaml
+ common|chrome/multiplayer-browser.yaml
+ common|chrome/multiplayer-browserpanels.yaml
+ common|chrome/multiplayer-createserver.yaml
+ common|chrome/multiplayer-directconnect.yaml
+ common|chrome/connection.yaml
+ common|chrome/replaybrowser.yaml
+ common|chrome/dropdowns.yaml
+ common|chrome/musicplayer.yaml
+ common|chrome/tooltips.yaml
+ common|chrome/assetbrowser.yaml
+ common|chrome/missionbrowser.yaml
+ common|chrome/confirmation-dialogs.yaml
+ common|chrome/editor.yaml
+
+Weapons:
+ ura|weapons/explosions.yaml
+ ura|weapons/ballistics.yaml
+ ura|weapons/missiles.yaml
+ ura|weapons/other.yaml
+ ura|weapons/smallcaliber.yaml
+ ura|weapons/superweapons.yaml
+
+Voices:
+ ura|audio/voices.yaml
+
+Notifications:
+ ura|audio/notifications.yaml
+
+Music:
+ ura|audio/music.yaml
+
+Translations:
+ ura|languages/english.yaml
+
+Hotkeys:
+ common|hotkeys/game.yaml
+ common|hotkeys/observer.yaml
+ common|hotkeys/production-common.yaml
+ common|hotkeys/supportpowers.yaml
+ common|hotkeys/viewport.yaml
+ ura|hotkeys.yaml
+
+LoadScreen: LogoStripeLoadScreen
+ Image: ura|uibits/loadscreen.png
+ Text: Filling Crates..., Charging Capacitors..., Reticulating Splines..., Planting Trees..., Building Bridges..., Aging Empires..., Compiling EVA..., Constructing Pylons..., Activating Skynet..., Splitting Atoms...
+
+ServerTraits:
+ LobbyCommands
+ PlayerPinger
+ MasterServerPinger
+ LobbySettingsNotification
+
+ChromeMetrics:
+ common|metrics.yaml
+ ura|metrics.yaml
+
+Fonts:
+ Regular:
+ Font: common|FreeSans.ttf
+ Size:14
+ Bold:
+ Font: common|FreeSansBold.ttf
+ Size:14
+ Title:
+ Font: ura|ZoodRangmah.ttf
+ Size:48
+ MediumBold:
+ Font: common|FreeSansBold.ttf
+ Size:18
+ BigBold:
+ Font: common|FreeSansBold.ttf
+ Size:24
+ Small:
+ Font: common|FreeSans.ttf
+ Size:12
+ Tiny:
+ Font: common|FreeSans.ttf
+ Size:10
+ TinyBold:
+ Font: common|FreeSansBold.ttf
+ Size:10
+
+Missions:
+ ura|missions.yaml
+
+MapGrid:
+ TileSize: 24,24
+ Type: Rectangular
+
+SupportsMapsFrom: ra
+
+SoundFormats: Aud, Wav
+
+SpriteFormats: ShpD2, ShpTD, TmpRA, TmpTD, ShpTS
+
+SpriteSequenceFormat: TilesetSpecificSpriteSequence
+ TilesetExtensions:
+ TEMPERAT: .tem
+ SNOW: .sno
+ INTERIOR: .int
+ DESERT: .des
+
+ModelSequenceFormat: PlaceholderModelSequence
+
+GameSpeeds:
+ slower:
+ Name: Slower
+ Timestep: 50
+ OrderLatency: 3
+ default:
+ Name: Normal
+ Timestep: 40
+ OrderLatency: 3
+ fast:
+ Name: Fast
+ Timestep: 35
+ OrderLatency: 4
+ faster:
+ Name: Faster
+ Timestep: 30
+ OrderLatency: 4
+ fastest:
+ Name: Fastest
+ Timestep: 20
+ OrderLatency: 6
+
+ColorValidator:
+
+ModContent:
+ InstallPromptMessage: Red Alert requires artwork and audio from the original game.\n\nQuick Install will automatically download this content (without music\nor videos) from a mirror of the 2008 Red Alert freeware release.\n\nAdvanced Install includes options for downloading the music and for\ncopying the videos and other content from an original game disc.
+ QuickDownload: quickinstall
+ HeaderMessage: Game content may be extracted from the original game discs or an\nexisting digital install. OpenRA can also download the base game\nfiles from an online mirror of the 2008 freeware release of RA.
+ Packages:
+ base: Base Game Files
+ TestFiles: ^Content/ra/v2/allies.mix, ^Content/ra/v2/conquer.mix, ^Content/ra/v2/interior.mix, ^Content/ra/v2/hires.mix, ^Content/ra/v2/lores.mix, ^Content/ra/v2/local.mix, ^Content/ra/v2/speech.mix, ^Content/ra/v2/russian.mix, ^Content/ra/v2/snow.mix, ^Content/ra/v2/sounds.mix, ^Content/ra/v2/temperat.mix
+ Sources: allied, allied-linux, soviet, soviet-linux, tfd, ra-origin
+ Required: true
+ Download: basefiles
+ aftermathbase: Aftermath Expansion Files
+ TestFiles: ^Content/ra/v2/expand/expand2.mix, ^Content/ra/v2/expand/hires1.mix, ^Content/ra/v2/expand/lores1.mix, ^Content/ra/v2/expand/chrotnk1.aud, ^Content/ra/v2/expand/fixit1.aud, ^Content/ra/v2/expand/jburn1.aud, ^Content/ra/v2/expand/jchrge1.aud, ^Content/ra/v2/expand/jcrisp1.aud, ^Content/ra/v2/expand/jdance1.aud, ^Content/ra/v2/expand/jjuice1.aud, ^Content/ra/v2/expand/jjump1.aud, ^Content/ra/v2/expand/jlight1.aud, ^Content/ra/v2/expand/jpower1.aud, ^Content/ra/v2/expand/jshock1.aud, ^Content/ra/v2/expand/jyes1.aud, ^Content/ra/v2/expand/madchrg2.aud, ^Content/ra/v2/expand/madexplo.aud, ^Content/ra/v2/expand/mboss1.aud, ^Content/ra/v2/expand/mhear1.aud, ^Content/ra/v2/expand/mhotdig1.aud, ^Content/ra/v2/expand/mhowdy1.aud, ^Content/ra/v2/expand/mhuh1.aud, ^Content/ra/v2/expand/mlaff1.aud, ^Content/ra/v2/expand/mrise1.aud, ^Content/ra/v2/expand/mwrench1.aud, ^Content/ra/v2/expand/myeehaw1.aud, ^Content/ra/v2/expand/myes1.aud
+ Sources: aftermath, aftermath-linux, tfd, ra-origin
+ Required: true
+ Download: aftermath
+ cncdesert: C&C Desert Tileset
+ TestFiles: ^Content/ra/v2/cnc/desert.mix
+ Sources: tfd, cnc-origin, cnc95, cnc95-linux
+ Required: true
+ Download: cncdesert
+ music: Base Game Music
+ TestFiles: ^Content/ra/v2/scores.mix
+ Sources: allied, allied-linux, soviet, soviet-linux, tfd, ra-origin
+ Download: music
+ movies-allied: Allied Campaign Briefings
+ TestFiles: ^Content/ra/v2/movies/aagun.vqa, ^Content/ra/v2/movies/aftrmath.vqa, ^Content/ra/v2/movies/ally1.vqa, ^Content/ra/v2/movies/ally10.vqa, ^Content/ra/v2/movies/ally10b.vqa, ^Content/ra/v2/movies/ally11.vqa, ^Content/ra/v2/movies/ally12.vqa, ^Content/ra/v2/movies/ally14.vqa, ^Content/ra/v2/movies/ally2.vqa, ^Content/ra/v2/movies/ally4.vqa, ^Content/ra/v2/movies/ally5.vqa, ^Content/ra/v2/movies/ally6.vqa, ^Content/ra/v2/movies/ally8.vqa, ^Content/ra/v2/movies/ally9.vqa, ^Content/ra/v2/movies/allyend.vqa, ^Content/ra/v2/movies/allymorf.vqa, ^Content/ra/v2/movies/apcescpe.vqa, ^Content/ra/v2/movies/assess.vqa, ^Content/ra/v2/movies/battle.vqa, ^Content/ra/v2/movies/binoc.vqa, ^Content/ra/v2/movies/bmap.vqa, ^Content/ra/v2/movies/brdgtilt.vqa, ^Content/ra/v2/movies/crontest.vqa, ^Content/ra/v2/movies/cronfail.vqa, ^Content/ra/v2/movies/destroyr.vqa, ^Content/ra/v2/movies/dud.vqa, ^Content/ra/v2/movies/elevator.vqa, ^Content/ra/v2/movies/flare.vqa, ^Content/ra/v2/movies/frozen.vqa, ^Content/ra/v2/movies/grvestne.vqa, ^Content/ra/v2/movies/landing.vqa, ^Content/ra/v2/movies/masasslt.vqa, ^Content/ra/v2/movies/mcv.vqa, ^Content/ra/v2/movies/mcv_land.vqa, ^Content/ra/v2/movies/montpass.vqa, ^Content/ra/v2/movies/oildrum.vqa, ^Content/ra/v2/movies/overrun.vqa, ^Content/ra/v2/movies/prolog.vqa, ^Content/ra/v2/movies/redintro.vqa, ^Content/ra/v2/movies/shipsink.vqa, ^Content/ra/v2/movies/shorbom1.vqa, ^Content/ra/v2/movies/shorbom2.vqa, ^Content/ra/v2/movies/shorbomb.vqa, ^Content/ra/v2/movies/snowbomb.vqa, ^Content/ra/v2/movies/soviet1.vqa, ^Content/ra/v2/movies/sovtstar.vqa, ^Content/ra/v2/movies/spy.vqa, ^Content/ra/v2/movies/tanya1.vqa, ^Content/ra/v2/movies/tanya2.vqa, ^Content/ra/v2/movies/toofar.vqa, ^Content/ra/v2/movies/trinity.vqa
+ Sources: allied, allied-linux, tfd, ra-origin
+ movies-soviet: Soviet Campaign Briefings
+ TestFiles: ^Content/ra/v2/movies/aagun.vqa, ^Content/ra/v2/movies/cronfail.vqa, ^Content/ra/v2/movies/airfield.vqa, ^Content/ra/v2/movies/ally1.vqa, ^Content/ra/v2/movies/allymorf.vqa, ^Content/ra/v2/movies/averted.vqa, ^Content/ra/v2/movies/beachead.vqa, ^Content/ra/v2/movies/bmap.vqa, ^Content/ra/v2/movies/bombrun.vqa, ^Content/ra/v2/movies/countdwn.vqa, ^Content/ra/v2/movies/double.vqa, ^Content/ra/v2/movies/dpthchrg.vqa, ^Content/ra/v2/movies/execute.vqa, ^Content/ra/v2/movies/flare.vqa, ^Content/ra/v2/movies/landing.vqa, ^Content/ra/v2/movies/mcvbrdge.vqa, ^Content/ra/v2/movies/mig.vqa, ^Content/ra/v2/movies/movingin.vqa, ^Content/ra/v2/movies/mtnkfact.vqa, ^Content/ra/v2/movies/nukestok.vqa, ^Content/ra/v2/movies/onthprwl.vqa, ^Content/ra/v2/movies/periscop.vqa, ^Content/ra/v2/movies/prolog.vqa, ^Content/ra/v2/movies/radrraid.vqa, ^Content/ra/v2/movies/redintro.vqa, ^Content/ra/v2/movies/search.vqa, ^Content/ra/v2/movies/sfrozen.vqa, ^Content/ra/v2/movies/sitduck.vqa, ^Content/ra/v2/movies/slntsrvc.vqa, ^Content/ra/v2/movies/snowbomb.vqa, ^Content/ra/v2/movies/snstrafe.vqa, ^Content/ra/v2/movies/sovbatl.vqa, ^Content/ra/v2/movies/sovcemet.vqa, ^Content/ra/v2/movies/sovfinal.vqa, ^Content/ra/v2/movies/soviet1.vqa, ^Content/ra/v2/movies/soviet10.vqa, ^Content/ra/v2/movies/soviet11.vqa, ^Content/ra/v2/movies/soviet12.vqa, ^Content/ra/v2/movies/soviet13.vqa, ^Content/ra/v2/movies/soviet14.vqa, ^Content/ra/v2/movies/soviet2.vqa, ^Content/ra/v2/movies/soviet3.vqa, ^Content/ra/v2/movies/soviet4.vqa, ^Content/ra/v2/movies/soviet5.vqa, ^Content/ra/v2/movies/soviet6.vqa, ^Content/ra/v2/movies/soviet7.vqa, ^Content/ra/v2/movies/soviet8.vqa, ^Content/ra/v2/movies/soviet9.vqa, ^Content/ra/v2/movies/sovmcv.vqa, ^Content/ra/v2/movies/sovtstar.vqa, ^Content/ra/v2/movies/spotter.vqa, ^Content/ra/v2/movies/strafe.vqa, ^Content/ra/v2/movies/take_off.vqa, ^Content/ra/v2/movies/tesla.vqa, ^Content/ra/v2/movies/v2rocket.vqa
+ Sources: soviet, soviet-linux, tfd, ra-origin
+ music-counterstrike: Counterstrike Music
+ TestFiles: ^Content/ra/v2/expand/araziod.aud, ^Content/ra/v2/expand/backstab.aud, ^Content/ra/v2/expand/chaos2.aud, ^Content/ra/v2/expand/shut_it.aud, ^Content/ra/v2/expand/2nd_hand.aud, ^Content/ra/v2/expand/twinmix1.aud, ^Content/ra/v2/expand/under3.aud, ^Content/ra/v2/expand/vr2.aud,
+ Sources: counterstrike, counterstrike-linux, ra-origin
+ music-aftermath: Aftermath Music
+ TestFiles: ^Content/ra/v2/expand/await.aud, ^Content/ra/v2/expand/bog.aud, ^Content/ra/v2/expand/float_v2.aud, ^Content/ra/v2/expand/gloom.aud, ^Content/ra/v2/expand/grndwire.aud, ^Content/ra/v2/expand/rpt.aud, ^Content/ra/v2/expand/search.aud, ^Content/ra/v2/expand/traction.aud, ^Content/ra/v2/expand/wastelnd.aud
+ Sources: aftermath, aftermath-linux, ra-origin
+ Downloads:
+ ura|installer/downloads.yaml
+ Sources:
+ ura|installer/aftermath.yaml
+ ura|installer/allies95.yaml
+ ura|installer/cnc95.yaml
+ ura|installer/counterstrike.yaml
+ ura|installer/firstdecade.yaml
+ ura|installer/origin.yaml
+ ura|installer/soviet95.yaml
diff --git a/mods/ura/rules/ai.yaml b/mods/ura/rules/ai.yaml
new file mode 100644
index 0000000..d936aa3
--- /dev/null
+++ b/mods/ura/rules/ai.yaml
@@ -0,0 +1,492 @@
+Player:
+ HackyAI@RushAI:
+ Name: Rush AI
+ Type: rush
+ MinimumExcessPower: 40
+ BuildingCommonNames:
+ ConstructionYard: fact
+ Refinery: proc
+ Power: powr,apwr
+ Barracks: barr,tent
+ VehiclesFactory: weap
+ Production: barr,tent,weap
+ Silo: silo
+ UnitsCommonNames:
+ Mcv: mcv
+ NavalUnits: ss,msub,dd,ca,lst,pt
+ BuildingLimits:
+ proc: 4
+ barr: 1
+ tent: 1
+ kenn: 1
+ dome: 1
+ weap: 1
+ atek: 1
+ stek: 1
+ fix: 1
+ BuildingFractions:
+ proc: 30%
+ powr: 15%
+ apwr: 20%
+ barr: 1%
+ kenn: 0.5%
+ tent: 1%
+ weap: 1%
+ pbox: 7%
+ gun: 7%
+ tsla: 5%
+ gap: 2%
+ ftur: 10%
+ agun: 5%
+ sam: 5%
+ atek: 1%
+ stek: 1%
+ fix: 0.1%
+ dome: 10%
+ UnitsToBuild:
+ e1: 65%
+ e2: 25%
+ e3: 40%
+ e4: 15%
+ dog: 15%
+ shok: 15%
+ harv: 10%
+ apc: 30%
+ jeep: 40%
+ arty: 15%
+ v2rl: 40%
+ ftrk: 50%
+ 1tnk: 70%
+ 2tnk: 25%
+ 3tnk: 50%
+ 4tnk: 10%
+ ttnk: 10%
+ stnk: 5%
+ UnitLimits:
+ dog: 4
+ harv: 8
+ SquadSize: 20
+ SupportPowerDecision@spyplane:
+ OrderName: SovietSpyPlane
+ MinimumAttractiveness: 1
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: None
+ CheckRadius: 5c0
+ SupportPowerDecision@paratroopers:
+ OrderName: SovietParatroopers
+ MinimumAttractiveness: 5
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: None
+ CheckRadius: 8c0
+ Consideration@2:
+ Against: Enemy
+ Types: Water
+ Attractiveness: -5
+ TargetMetric: None
+ CheckRadius: 8c0
+ SupportPowerDecision@parabombs:
+ OrderName: UkraineParabombs
+ MinimumAttractiveness: 1
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: None
+ CheckRadius: 5c0
+ SupportPowerDecision@nukepower:
+ OrderName: NukePowerInfoOrder
+ MinimumAttractiveness: 3000
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: Value
+ CheckRadius: 5c0
+ Consideration@2:
+ Against: Ally
+ Types: Air, Ground, Water
+ Attractiveness: -10
+ TargetMetric: Value
+ CheckRadius: 7c0
+ HackyAI@NormalAI:
+ Name: Normal AI
+ Type: normal
+ MinimumExcessPower: 60
+ BuildingCommonNames:
+ ConstructionYard: fact
+ Refinery: proc
+ Power: powr,apwr
+ Barracks: barr,tent
+ VehiclesFactory: weap
+ Production: barr,tent,weap,afld,hpad
+ NavalProduction: spen,syrd
+ Silo: silo
+ UnitsCommonNames:
+ Mcv: mcv
+ NavalUnits: ss,msub,dd,ca,lst,pt
+ BuildingLimits:
+ proc: 4
+ barr: 1
+ tent: 1
+ dome: 1
+ weap: 1
+ spen: 1
+ syrd: 1
+ hpad: 4
+ afld: 4
+ atek: 1
+ stek: 1
+ fix: 1
+ BuildingFractions:
+ proc: 10%
+ powr: 1%
+ apwr: 30%
+ tent: 1%
+ barr: 1%
+ kenn: 0.5%
+ dome: 1%
+ weap: 6%
+ hpad: 4%
+ spen: 1%
+ syrd: 1%
+ afld: 4%
+ pbox: 7%
+ gun: 7%
+ ftur: 10%
+ tsla: 5%
+ gap: 2%
+ fix: 1%
+ agun: 5%
+ sam: 1%
+ atek: 1%
+ stek: 1%
+ mslo: 1%
+ UnitsToBuild:
+ e1: 65%
+ e2: 25%
+ e3: 40%
+ e4: 15%
+ dog: 15%
+ shok: 15%
+ harv: 10%
+ apc: 30%
+ jeep: 40%
+ arty: 15%
+ v2rl: 40%
+ ftrk: 50%
+ 1tnk: 70%
+ 2tnk: 25%
+ 3tnk: 50%
+ 4tnk: 15%
+ ttnk: 15%
+ stnk: 10%
+ heli: 30%
+ hind: 30%
+ mig: 30%
+ yak: 30%
+ ss: 10%
+ msub: 10%
+ dd: 10%
+ ca: 10%
+ pt: 10%
+ UnitLimits:
+ dog: 4
+ harv: 8
+ SquadSize: 40
+ SupportPowerDecision@spyplane:
+ OrderName: SovietSpyPlane
+ MinimumAttractiveness: 1
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: None
+ CheckRadius: 5c0
+ SupportPowerDecision@paratroopers:
+ OrderName: SovietParatroopers
+ MinimumAttractiveness: 5
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: None
+ CheckRadius: 8c0
+ Consideration@2:
+ Against: Enemy
+ Types: Water
+ Attractiveness: -5
+ TargetMetric: None
+ CheckRadius: 8c0
+ SupportPowerDecision@parabombs:
+ OrderName: UkraineParabombs
+ MinimumAttractiveness: 1
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: None
+ CheckRadius: 5c0
+ SupportPowerDecision@nukepower:
+ OrderName: NukePowerInfoOrder
+ MinimumAttractiveness: 3000
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: Value
+ CheckRadius: 5c0
+ Consideration@2:
+ Against: Ally
+ Types: Air, Ground, Water
+ Attractiveness: -10
+ TargetMetric: Value
+ CheckRadius: 7c0
+ HackyAI@TurtleAI:
+ Name: Turtle AI
+ Type: turtle
+ MinimumExcessPower: 100
+ BuildingCommonNames:
+ ConstructionYard: fact
+ Refinery: proc
+ Power: powr,apwr
+ Barracks: barr,tent
+ VehiclesFactory: weap
+ Production: barr,tent,weap,afld,hpad
+ NavalProduction: spen,syrd
+ Silo: silo
+ UnitsCommonNames:
+ Mcv: mcv
+ NavalUnits: ss,msub,dd,ca,lst,pt
+ BuildingLimits:
+ proc: 4
+ barr: 1
+ tent: 1
+ kenn: 1
+ dome: 1
+ weap: 1
+ spen: 1
+ syrd: 1
+ hpad: 4
+ afld: 4
+ atek: 1
+ stek: 1
+ fix: 1
+ BuildingFractions:
+ proc: 30%
+ powr: 1%
+ apwr: 20%
+ tent: 1%
+ barr: 1%
+ kenn: 0.5%
+ weap: 3%
+ hpad: 2%
+ spen: 1%
+ syrd: 1%
+ pbox: 10%
+ gun: 10%
+ ftur: 10%
+ tsla: 7%
+ gap: 3%
+ fix: 0.1%
+ dome: 10%
+ agun: 5%
+ sam: 5%
+ atek: 1%
+ stek: 1%
+ mslo: 1%
+ UnitsToBuild:
+ e1: 65%
+ e2: 25%
+ e3: 40%
+ e4: 15%
+ dog: 15%
+ shok: 15%
+ harv: 10%
+ apc: 30%
+ jeep: 40%
+ arty: 15%
+ v2rl: 40%
+ ftrk: 50%
+ 1tnk: 70%
+ 2tnk: 25%
+ 3tnk: 50%
+ 4tnk: 20%
+ ttnk: 20%
+ stnk: 15%
+ heli: 30%
+ hind: 30%
+ mig: 30%
+ yak: 30%
+ ss: 10%
+ msub: 10%
+ dd: 10%
+ ca: 10%
+ pt: 10%
+ UnitLimits:
+ dog: 4
+ harv: 8
+ SquadSize: 10
+ SupportPowerDecision@spyplane:
+ OrderName: SovietSpyPlane
+ MinimumAttractiveness: 1
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: None
+ CheckRadius: 5c0
+ SupportPowerDecision@paratroopers:
+ OrderName: SovietParatroopers
+ MinimumAttractiveness: 5
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: None
+ CheckRadius: 8c0
+ Consideration@2:
+ Against: Enemy
+ Types: Water
+ Attractiveness: -5
+ TargetMetric: None
+ CheckRadius: 8c0
+ SupportPowerDecision@parabombs:
+ OrderName: UkraineParabombs
+ MinimumAttractiveness: 1
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: None
+ CheckRadius: 5c0
+ SupportPowerDecision@nukepower:
+ OrderName: NukePowerInfoOrder
+ MinimumAttractiveness: 3000
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: Value
+ CheckRadius: 5c0
+ Consideration@2:
+ Against: Ally
+ Types: Air, Ground, Water
+ Attractiveness: -10
+ TargetMetric: Value
+ CheckRadius: 7c0
+ HackyAI@NavalAI:
+ Name: Naval AI
+ Type: naval
+ BuildingCommonNames:
+ ConstructionYard: fact
+ Refinery: proc
+ Power: powr,apwr
+ Barracks: barr,tent
+ VehiclesFactory: weap
+ Production: barr,tent,weap,afld,hpad
+ NavalProduction: spen,syrd
+ Silo: silo
+ UnitsCommonNames:
+ Mcv: mcv
+ NavalUnits: ss,msub,dd,ca,lst,pt
+ BuildingLimits:
+ proc: 4
+ dome: 1
+ barr: 1
+ tent: 1
+ spen: 1
+ syrd: 1
+ hpad: 8
+ afld: 8
+ weap: 1
+ atek: 1
+ stek: 1
+ fix: 1
+ BuildingFractions:
+ proc: 29%
+ powr: 1%
+ apwr: 24%
+ dome: 1%
+ weap: 1%
+ hpad: 20%
+ afld: 20%
+ atek: 1%
+ stek: 1%
+ spen: 1%
+ syrd: 1%
+ fix: 0.1%
+ pbox: 12%
+ gun: 12%
+ ftur: 12%
+ tsla: 12%
+ agun: 5%
+ sam: 5%
+ mslo: 1%
+ UnitsToBuild:
+ harv: 1%
+ heli: 30%
+ hind: 30%
+ mig: 30%
+ yak: 30%
+ ss: 10%
+ msub: 30%
+ dd: 30%
+ ca: 20%
+ pt: 10%
+ UnitLimits:
+ harv: 8
+ SquadSize: 1
+ SupportPowerDecision@spyplane:
+ OrderName: SovietSpyPlane
+ MinimumAttractiveness: 1
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: None
+ CheckRadius: 5c0
+ SupportPowerDecision@paratroopers:
+ OrderName: SovietParatroopers
+ MinimumAttractiveness: 5
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: None
+ CheckRadius: 8c0
+ Consideration@2:
+ Against: Enemy
+ Types: Water
+ Attractiveness: -5
+ TargetMetric: None
+ CheckRadius: 8c0
+ SupportPowerDecision@parabombs:
+ OrderName: UkraineParabombs
+ MinimumAttractiveness: 1
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: None
+ CheckRadius: 5c0
+ SupportPowerDecision@nukepower:
+ OrderName: NukePowerInfoOrder
+ MinimumAttractiveness: 3000
+ Consideration@1:
+ Against: Enemy
+ Types: Structure
+ Attractiveness: 1
+ TargetMetric: Value
+ CheckRadius: 5c0
+ Consideration@2:
+ Against: Ally
+ Types: Air, Ground, Water
+ Attractiveness: -10
+ TargetMetric: Value
+ CheckRadius: 7c0
diff --git a/mods/ura/rules/aircraft.yaml b/mods/ura/rules/aircraft.yaml
new file mode 100644
index 0000000..d40e55c
--- /dev/null
+++ b/mods/ura/rules/aircraft.yaml
@@ -0,0 +1,444 @@
+BADR:
+ Inherits: ^NeutralPlane
+ ParaDrop:
+ DropRange: 5c0
+ Health:
+ HP: 300
+ Armor:
+ Type: Light
+ Aircraft:
+ CruiseAltitude: 2560
+ TurnSpeed: 5
+ Speed: 164
+ Repulsable: False
+ MaximumPitch: 56
+ Cargo:
+ MaxWeight: 10
+ -Selectable:
+ SelectionDecorations:
+ RenderSelectionBars: False
+ -Voiced:
+ Tooltip:
+ Name: Badger
+ Contrail@1:
+ Offset: -432,560,0
+ Contrail@2:
+ Offset: -432,-560,0
+ SpawnActorOnDeath:
+ Actor: BADR.Husk
+ SmokeTrailWhenDamaged@0:
+ Offset: -432,560,0
+ Interval: 2
+ SmokeTrailWhenDamaged@1:
+ Offset: -432,-560,0
+ Interval: 2
+ -EjectOnDeath:
+ RejectsOrders:
+ GivesExperience:
+ Experience: 1000
+ Interactable:
+
+BADR.Bomber:
+ Inherits: ^NeutralPlane
+ AttackBomber:
+ Armament:
+ Weapon: ParaBomb
+ Health:
+ HP: 300
+ Armor:
+ Type: Light
+ Aircraft:
+ CruiseAltitude: 2560
+ TurnSpeed: 5
+ Speed: 149
+ Repulsable: False
+ MaximumPitch: 56
+ AmmoPool:
+ Ammo: 7
+ -Selectable:
+ SelectionDecorations:
+ RenderSelectionBars: False
+ -Voiced:
+ Tooltip:
+ Name: Badger
+ Contrail@1:
+ Offset: -432,560,0
+ Contrail@2:
+ Offset: -432,-560,0
+ SpawnActorOnDeath:
+ Actor: BADR.Husk
+ SmokeTrailWhenDamaged@0:
+ Offset: -432,560,0
+ Interval: 2
+ SmokeTrailWhenDamaged@1:
+ Offset: -432,-560,0
+ Interval: 2
+ -EjectOnDeath:
+ RejectsOrders:
+ RenderSprites:
+ Image: badr
+ GivesExperience:
+ Experience: 1000
+ Interactable:
+
+MIG:
+ Inherits: ^Plane
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Aircraft
+ BuildAtProductionType: Plane
+ BuildPaletteOrder: 50
+ Prerequisites: ~afld, stek, ~techlevel.high
+ BuildDuration: 1750
+ Description: Fast Ground-Attack Plane.\n Strong vs Buildings, Vehicles\n Weak vs Infantry, Aircraft
+ Valued:
+ Cost: 2000
+ Tooltip:
+ Name: MiG
+ Health:
+ HP: 80
+ Armor:
+ Type: Light
+ RevealsShroud:
+ Range: 15c0
+ Type: GroundPosition
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 13c0
+ Type: GroundPosition
+ Armament:
+ Weapon: Maverick
+ LocalOffset: 0,-640,0, 0,640,0
+ LocalYaw: -40, 24
+ PauseOnCondition: !ammo
+ AttackPlane:
+ FacingTolerance: 20
+ Aircraft:
+ RearmBuildings: afld, afld.ukraine
+ CruiseAltitude: 2560
+ InitialFacing: 192
+ TurnSpeed: 4
+ Speed: 223
+ RepulsionSpeed: 40
+ MaximumPitch: 56
+ AutoTarget:
+ InitialStance: HoldFire
+ InitialStanceAI: HoldFire
+ AmmoPool:
+ Ammo: 4
+ ReloadDelay: 128
+ AmmoCondition: ammo
+ ReturnOnIdle:
+ Selectable:
+ Bounds: 36,28,0,2
+ DecorationBounds: 40,29,0,1
+ SelectionDecorations:
+ Contrail@1:
+ Offset: -598,-683,0
+ Contrail@2:
+ Offset: -598,683,0
+ SpawnActorOnDeath:
+ Actor: MIG.Husk
+ SmokeTrailWhenDamaged:
+ Offset: -853,0,171
+ Interval: 2
+ ProducibleWithLevel:
+ Prerequisites: aircraft.upgraded
+
+YAK:
+ Inherits: ^Plane
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Aircraft
+ BuildAtProductionType: Plane
+ BuildPaletteOrder: 30
+ Prerequisites: ~afld, ~techlevel.medium
+ Description: Attack Plane armed with\ndual machine guns.\n Strong vs Infantry, Light armor\n Weak vs Tanks, Aircraft
+ Valued:
+ Cost: 1350
+ Tooltip:
+ Name: Yak
+ Health:
+ HP: 60
+ Armor:
+ Type: Light
+ RevealsShroud:
+ Range: 13c0
+ Type: GroundPosition
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 11c0
+ Type: GroundPosition
+ Armament@PRIMARY:
+ Weapon: ChainGun.Yak
+ LocalOffset: 256,-213,0
+ MuzzleSequence: muzzle
+ PauseOnCondition: !ammo
+ Armament@SECONDARY:
+ Name: secondary
+ Weapon: ChainGun.Yak
+ LocalOffset: 256,213,0
+ MuzzleSequence: muzzle
+ PauseOnCondition: !ammo
+ AttackPlane:
+ FacingTolerance: 20
+ Aircraft:
+ RearmBuildings: afld, afld.ukraine
+ CruiseAltitude: 2560
+ InitialFacing: 192
+ TurnSpeed: 4
+ Speed: 178
+ RepulsionSpeed: 40
+ MaximumPitch: 56
+ AutoTarget:
+ InitialStance: HoldFire
+ InitialStanceAI: HoldFire
+ AmmoPool:
+ Ammo: 18
+ PipCount: 6
+ ReloadDelay: 11
+ AmmoCondition: ammo
+ ReturnOnIdle:
+ SelectionDecorations:
+ WithMuzzleOverlay:
+ Contrail:
+ Offset: -853,0,0
+ SpawnActorOnDeath:
+ Actor: YAK.Husk
+ SmokeTrailWhenDamaged:
+ Offset: -853,0,0
+ Interval: 2
+ ProducibleWithLevel:
+ Prerequisites: aircraft.upgraded
+ Selectable:
+ DecorationBounds: 30,28,0,2
+
+TRAN:
+ Inherits: ^Helicopter
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Aircraft
+ BuildAtProductionType: Helicopter
+ BuildPaletteOrder: 50
+ Prerequisites: ~hpad, ~techlevel.medium
+ Description: Fast Infantry Transport Helicopter.\n Unarmed
+ Valued:
+ Cost: 900
+ Tooltip:
+ Name: Chinook
+ Health:
+ HP: 160
+ Armor:
+ Type: Light
+ Armament@PRIMARY:
+ Weapon: Hover
+ AttackHeli:
+ FacingTolerance: 20
+ AutoTarget:
+ InitialStance: HoldFire
+ InitialStanceAI: HoldFire
+ AmmoPool:
+ Ammo: 0
+ RevealsShroud:
+ Range: 10c0
+ Type: GroundPosition
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 8c0
+ Type: GroundPosition
+ Aircraft:
+ InitialFacing: 224
+ TurnSpeed: 5
+ Speed: 128
+ LandableTerrainTypes: Clear,Rough,Road,Ore,Beach,Gems
+ AltitudeVelocity: 0c58
+ WithIdleOverlay@ROTOR1AIR:
+ Offset: 597,0,213
+ Sequence: rotor
+ RequiresCondition: airborne
+ WithIdleOverlay@ROTOR1GROUND:
+ Offset: 597,0,213
+ Sequence: slow-rotor
+ RequiresCondition: !airborne
+ WithIdleOverlay@ROTOR2AIR:
+ Offset: -597,0,341
+ Sequence: rotor2
+ RequiresCondition: airborne
+ WithIdleOverlay@ROTOR2GROUND:
+ Offset: -597,0,341
+ Sequence: slow-rotor2
+ RequiresCondition: !airborne
+ Cargo:
+ Types: Infantry
+ MaxWeight: 8
+ PipCount: 8
+ SpawnActorOnDeath:
+ Actor: TRAN.Husk
+ SelectionDecorations:
+ Selectable:
+ DecorationBounds: 40,36
+
+HELI:
+ Inherits: ^Helicopter
+ Inherits@AUTOTARGET: ^AutoTargetAll
+ Buildable:
+ Queue: Aircraft
+ BuildAtProductionType: Helicopter
+ BuildPaletteOrder: 40
+ Prerequisites: ~hpad, atek, ~techlevel.high
+ BuildDuration: 1750
+ Description: Helicopter gunship armed\nwith multi-purpose missiles.\n Strong vs Buildings, Vehicles, Aircraft\n Weak vs Infantry
+ Valued:
+ Cost: 2000
+ Tooltip:
+ Name: Longbow
+ Health:
+ HP: 120
+ Armor:
+ Type: Light
+ RevealsShroud:
+ Range: 14c0
+ Type: GroundPosition
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 12c0
+ Type: GroundPosition
+ Armament@PRIMARY:
+ Weapon: HellfireAA
+ LocalOffset: 0,-213,-85, 0,213,-85
+ PauseOnCondition: !ammo
+ Armament@SECONDARY:
+ Weapon: HellfireAG
+ LocalOffset: 0,213,-85, 0,-213,-85
+ PauseOnCondition: !ammo
+ AttackHeli:
+ FacingTolerance: 20
+ Aircraft:
+ RearmBuildings: hpad
+ LandWhenIdle: false
+ InitialFacing: 224
+ TurnSpeed: 4
+ Speed: 149
+ AutoTarget:
+ InitialStance: HoldFire
+ InitialStanceAI: HoldFire
+ WithIdleOverlay@ROTORAIR:
+ Offset: 0,0,85
+ Sequence: rotor
+ RequiresCondition: airborne
+ WithIdleOverlay@ROTORGROUND:
+ Offset: 0,0,85
+ Sequence: slow-rotor
+ RequiresCondition: !airborne
+ AmmoPool:
+ Ammo: 8
+ AmmoCondition: ammo
+ SelectionDecorations:
+ SpawnActorOnDeath:
+ Actor: HELI.Husk
+ SmokeTrailWhenDamaged:
+ Offset: -427,0,0
+ ProducibleWithLevel:
+ Prerequisites: aircraft.upgraded
+ Selectable:
+ DecorationBounds: 36,28
+
+HIND:
+ Inherits: ^Helicopter
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Aircraft
+ BuildAtProductionType: Helicopter
+ BuildPaletteOrder: 20
+ Prerequisites: ~hpad, ~techlevel.medium
+ Description: Helicopter gunship armed\nwith dual chainguns.\n Strong vs Infantry, Light armor\n Weak vs Tanks, Aircraft
+ Valued:
+ Cost: 1350
+ Tooltip:
+ Name: Hind
+ Health:
+ HP: 100
+ Armor:
+ Type: Light
+ RevealsShroud:
+ Range: 12c0
+ Type: GroundPosition
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 10c0
+ Type: GroundPosition
+ Armament@PRIMARY:
+ Weapon: ChainGun
+ LocalOffset: 85,-213,-85, 85,213,-85
+ MuzzleSequence: muzzle
+ PauseOnCondition: !ammo
+ Armament@SECONDARY:
+ Name: secondary
+ Weapon: ChainGun
+ LocalOffset: 85,213,-85, 85,-213,-85
+ MuzzleSequence: muzzle
+ PauseOnCondition: !ammo
+ AttackHeli:
+ FacingTolerance: 20
+ Aircraft:
+ RearmBuildings: hpad
+ LandWhenIdle: false
+ InitialFacing: 224
+ TurnSpeed: 4
+ Speed: 112
+ AutoTarget:
+ InitialStance: HoldFire
+ InitialStanceAI: HoldFire
+ WithIdleOverlay@ROTORAIR:
+ Sequence: rotor
+ RequiresCondition: airborne
+ WithIdleOverlay@ROTORGROUND:
+ Sequence: slow-rotor
+ RequiresCondition: !airborne
+ AmmoPool:
+ Ammo: 24
+ PipCount: 6
+ ReloadDelay: 8
+ AmmoCondition: ammo
+ SelectionDecorations:
+ WithMuzzleOverlay:
+ SpawnActorOnDeath:
+ Actor: HIND.Husk
+ SmokeTrailWhenDamaged:
+ Offset: -427,0,0
+ ProducibleWithLevel:
+ Prerequisites: aircraft.upgraded
+ Selectable:
+ DecorationBounds: 38,32
+
+U2:
+ Inherits: ^NeutralPlane
+ Health:
+ HP: 2000
+ Tooltip:
+ Name: Spy Plane
+ Armor:
+ Type: Heavy
+ Aircraft:
+ CruiseAltitude: 2560
+ TurnSpeed: 7
+ Speed: 373
+ Repulsable: False
+ MaximumPitch: 56
+ AttackBomber:
+ -Selectable:
+ SelectionDecorations:
+ RenderSelectionBars: False
+ -Voiced:
+ -Targetable@AIRBORNE:
+ Contrail@1:
+ Offset: -725,683,0
+ Contrail@2:
+ Offset: -725,-683,0
+ SpawnActorOnDeath:
+ Actor: U2.Husk
+ SmokeTrailWhenDamaged:
+ Offset: -1c43,0,0
+ Interval: 2
+ RejectsOrders:
+ Interactable:
diff --git a/mods/ura/rules/campaign-palettes.yaml b/mods/ura/rules/campaign-palettes.yaml
new file mode 100644
index 0000000..c215288
--- /dev/null
+++ b/mods/ura/rules/campaign-palettes.yaml
@@ -0,0 +1,24 @@
+^Palettes:
+ -PlayerColorPalette:
+ -PaletteFromPlayerPaletteWithAlpha@cloak:
+ IndexedPlayerPalette:
+ BasePalette: player
+ BaseName: player
+ RemapIndex: 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95
+ PlayerIndex:
+ USSR: 229, 230, 231, 232, 233, 234, 235, 8, 236, 237, 238, 239, 221, 222, 223, 223
+ Ukraine: 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223
+ Greece: 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175
+ England: 208, 208, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 154, 155, 143
+ Germany: 128, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 121, 122, 122, 123, 123
+ France: 224, 224, 225, 225, 226, 184, 185, 186, 187, 188, 188, 189, 190, 190, 191, 191
+ Spain: 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95
+ Turkey: 200, 200, 201, 202, 203, 203, 204, 205, 206, 206, 207, 221, 222, 222, 223, 223
+ Neutral: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143
+ Creeps: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143
+ GoodGuy: 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175
+ BadGuy: 229, 230, 231, 232, 233, 234, 235, 8, 236, 237, 238, 239, 221, 222, 223, 223
+ PaletteFromPlayerPaletteWithAlpha@Cloak:
+ BaseName: cloak
+ BasePalette: player
+ Alpha: 0.55
diff --git a/mods/ura/rules/campaign-rules.yaml b/mods/ura/rules/campaign-rules.yaml
new file mode 100644
index 0000000..fb00990
--- /dev/null
+++ b/mods/ura/rules/campaign-rules.yaml
@@ -0,0 +1,46 @@
+Player:
+ -ConquestVictoryConditions:
+ MissionObjectives:
+ EarlyGameOver: true
+ Shroud:
+ FogCheckboxLocked: True
+ FogCheckboxEnabled: True
+ ExploredMapCheckboxLocked: True
+ ExploredMapCheckboxEnabled: False
+ PlayerResources:
+ DefaultCashLocked: True
+ DefaultCash: 0
+
+World:
+ CrateSpawner:
+ CheckboxEnabled: False
+ CheckboxLocked: True
+ -SpawnMPUnits:
+ -MPStartLocations:
+ ObjectivesPanel:
+ PanelName: MISSION_OBJECTIVES
+ MapBuildRadius:
+ AllyBuildRadiusCheckboxLocked: True
+ AllyBuildRadiusCheckboxEnabled: False
+ BuildRadiusCheckboxLocked: True
+ BuildRadiusCheckboxEnabled: True
+ MapOptions:
+ TechLevelDropdownLocked: True
+ ShortGameCheckboxLocked: True
+ ShortGameCheckboxEnabled: False
+
+E7:
+ -Crushable:
+
+E7.noautotarget:
+ Inherits: E7
+ -AutoTarget:
+ -AutoTargetPriority@DEFAULT:
+ -AutoTargetPriority@ATTACKANYTHING:
+ AttackMove:
+ -AssaultMoveScanCondition:
+ RenderSprites:
+ Image: E7
+
+^Vehicle:
+ Demolishable:
diff --git a/mods/ura/rules/campaign-tooltips.yaml b/mods/ura/rules/campaign-tooltips.yaml
new file mode 100644
index 0000000..614f785
--- /dev/null
+++ b/mods/ura/rules/campaign-tooltips.yaml
@@ -0,0 +1,75 @@
+^Vehicle:
+ Tooltip:
+ GenericVisibility: Enemy
+ ShowOwnerRow: false
+
+^Infantry:
+ Tooltip:
+ GenericVisibility: Enemy
+ ShowOwnerRow: false
+
+^Ship:
+ Tooltip:
+ GenericVisibility: Enemy
+ ShowOwnerRow: false
+
+^NeutralPlane:
+ Tooltip:
+ GenericVisibility: Enemy
+ ShowOwnerRow: false
+
+^Helicopter:
+ Tooltip:
+ GenericVisibility: Enemy
+ ShowOwnerRow: false
+
+^Building:
+ Tooltip:
+ GenericVisibility: Enemy
+ ShowOwnerRow: false
+
+^CivBuilding:
+ Tooltip:
+ ShowOwnerRow: false
+
+^CivField:
+ Tooltip:
+ ShowOwnerRow: false
+
+^TechBuilding:
+ Tooltip:
+ ShowOwnerRow: false
+
+^Wall:
+ Tooltip:
+ ShowOwnerRow: false
+
+^Husk:
+ Tooltip:
+ GenericVisibility: Enemy, Ally, Neutral
+ GenericStancePrefix: false
+ ShowOwnerRow: false
+
+^PlaneHusk:
+ Tooltip:
+ GenericVisibility: Enemy, Ally, Neutral
+ GenericStancePrefix: false
+ ShowOwnerRow: false
+
+^HelicopterHusk:
+ Tooltip:
+ GenericVisibility: Enemy, Ally, Neutral
+ GenericStancePrefix: false
+ ShowOwnerRow: false
+
+^Crate:
+ Tooltip:
+ ShowOwnerRow: false
+
+FLARE:
+ Tooltip:
+ ShowOwnerRow: false
+
+SPY:
+ DisguiseTooltip:
+ ShowOwnerRow: false
diff --git a/mods/ura/rules/civilian.yaml b/mods/ura/rules/civilian.yaml
new file mode 100644
index 0000000..49998fd
--- /dev/null
+++ b/mods/ura/rules/civilian.yaml
@@ -0,0 +1,799 @@
+C1:
+ Inherits@1: ^CivInfantry
+ Inherits@2: ^ArmedCivilian
+
+C2:
+ Inherits: ^CivInfantry
+ Voiced:
+ VoiceSet: CivilianFemaleVoice
+
+C3:
+ Inherits: ^CivInfantry
+
+C4:
+ Inherits: ^CivInfantry
+ RenderSprites:
+ Image: C2
+ Voiced:
+ VoiceSet: CivilianFemaleVoice
+
+C5:
+ Inherits: ^CivInfantry
+ RenderSprites:
+ Image: C1
+
+C6:
+ Inherits: ^CivInfantry
+ RenderSprites:
+ Image: C2
+ Voiced:
+ VoiceSet: CivilianFemaleVoice
+
+C7:
+ Inherits@1: ^CivInfantry
+ Inherits@2: ^ArmedCivilian
+ RenderSprites:
+ Image: C1
+
+C8:
+ Inherits: ^CivInfantry
+ RenderSprites:
+ Image: C2
+ Voiced:
+ VoiceSet: CivilianFemaleVoice
+
+C9:
+ Inherits: ^CivInfantry
+ RenderSprites:
+ Image: C1
+
+C10:
+ Inherits: ^CivInfantry
+ RenderSprites:
+ Image: C2
+ Voiced:
+ VoiceSet: CivilianFemaleVoice
+
+TECN:
+ Inherits@1: ^CivInfantry
+ Inherits@2: ^ArmedCivilian
+ Tooltip:
+ Name: Technician
+ RenderSprites:
+ Image: C1
+
+FCOM:
+ Inherits: ^TechBuilding
+ Inherits@shape: ^2x2Shape
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, NoAutoTarget
+ Building:
+ Footprint: xx xx ==
+ Dimensions: 2,3
+ LocalCenterOffset: 0,-512,0
+ Health:
+ HP: 800
+ Armor:
+ Type: Wood
+ Tooltip:
+ Name: Forward Command
+ RevealsShroud:
+ Range: 5c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ WithBuildingBib:
+ ExternalCapturable:
+ CaptureCompleteTime: 30
+ ExternalCapturableBar:
+ GivesBuildableArea:
+ AreaTypes: building
+ BaseProvider:
+ Range: 8c0
+ EngineerRepairable:
+ Power:
+ Amount: 0
+ ProvidesPrerequisite@buildingname:
+ GpsDot:
+ String: Forward
+
+HOSP:
+ Inherits: ^TechBuilding
+ Inherits@shape: ^2x2Shape
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, NoAutoTarget
+ Selectable:
+ Priority: 0
+ Building:
+ Footprint: xx xx
+ Dimensions: 2,2
+ Health:
+ HP: 800
+ ExternalCapturable:
+ ExternalCapturableBar:
+ EngineerRepairable:
+ Tooltip:
+ Name: Hospital
+ RevealsShroud:
+ Range: 4c0
+ WithBuildingBib:
+ HasMinibib: Yes
+ WithDeathAnimation:
+ DeathSequence: dead
+ UseDeathTypeSuffix: false
+ ProvidesPrerequisite@buildingname:
+ GpsDot:
+ String: Hospital
+
+V01:
+ Inherits: ^CivBuilding
+ Building:
+ Footprint: xx xx
+ Dimensions: 2,2
+ Tooltip:
+ Name: Church
+ RevealsShroud:
+ Range: 10c0
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: -490,-384,0, 0,0,0, 0,470,0
+ Type: Rectangle
+ TopLeft: -768, -597
+ BottomRight: 896, 683
+
+V02:
+ Inherits: ^CivBuilding
+ Building:
+ Footprint: xx xx
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: -490,-512,0, 0,0,0, 0,512,0
+ Type: Rectangle
+ TopLeft: -1024, -512
+ BottomRight: 1024, 597
+
+V03:
+ Inherits: ^CivBuilding
+ Building:
+ Footprint: xx xx
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: -490,-512,0, 0,0,0, 421,512,0, -210,512,0
+ Type: Rectangle
+ TopLeft: -1024, -597
+ BottomRight: 1024, 597
+
+V04:
+ Inherits: ^CivBuilding
+ Building:
+ Footprint: xx xx
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: 0,0,0, -421,-256,0, -421,256,0
+ Type: Rectangle
+ TopLeft: -683, -432
+ BottomRight: 683, 683
+
+V05:
+ Inherits: ^CivBuilding
+ Inherits@shape: ^2x1Shape
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+V06:
+ Inherits: ^CivBuilding
+ Inherits@shape: ^2x1Shape
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+V07:
+ Inherits: ^CivBuilding
+ Inherits@shape: ^2x1Shape
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+V08:
+ Inherits: ^CivBuilding
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+V09:
+ Inherits: ^CivBuilding
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+V10:
+ Inherits: ^CivBuilding
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+V11:
+ Inherits: ^CivBuilding
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+V12:
+ Inherits: ^CivBuilding
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+V13:
+ Inherits: ^CivBuilding
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+V14:
+ Inherits: ^CivField
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+V15:
+ Inherits: ^CivField
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+V16:
+ Inherits: ^CivField
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+V17:
+ Inherits: ^CivField
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+V18:
+ Inherits: ^CivField
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+V19:
+ Inherits: ^CivBuilding
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT
+ Tooltip:
+ Name: Oil Pump
+ -SpawnActorOnDeath@1:
+ -SpawnActorOnDeath@2:
+ -SpawnActorOnDeath@3:
+ SpawnActorOnDeath:
+ Actor: V19.Husk
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, NoAutoTarget
+
+V19.Husk:
+ Inherits: ^CivBuilding
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT
+ Tooltip:
+ Name: Husk (Oil Pump)
+ RenderSprites:
+ WithSpriteBody:
+ WithIdleOverlay:
+ StartSequence: fire-start
+ Sequence: fire-loop
+ -Selectable:
+ SelectionDecorations:
+ RenderSelectionBars: False
+ -Targetable:
+ -Demolishable:
+ -HitShape:
+ -Health:
+ -Explodes:
+ -Explodes@CIVPANIC:
+ Interactable:
+
+BARL:
+ Inherits: ^TechBuilding
+ -Selectable:
+ SelectionDecorations:
+ RenderSelectionBars: False
+ Health:
+ HP: 10
+ Explodes:
+ Weapon: BarrelExplode
+ Tooltip:
+ Name: Explosive Barrel
+ ShowOwnerRow: False
+ Armor:
+ Type: None
+ Targetable:
+ TargetTypes: Ground, DemoTruck, Barrel, NoAutoTarget
+ -ShakeOnDeath:
+ -SoundOnDamageTransition:
+ -Demolishable:
+ EditorTilesetFilter:
+ Categories: Decoration
+ Interactable:
+ Bounds: 24,24
+
+BRL3:
+ Inherits: ^TechBuilding
+ -Selectable:
+ SelectionDecorations:
+ RenderSelectionBars: False
+ Health:
+ HP: 10
+ Explodes:
+ Weapon: BarrelExplode
+ Tooltip:
+ Name: Explosive Barrel
+ ShowOwnerRow: False
+ Armor:
+ Type: None
+ Targetable:
+ TargetTypes: Ground, DemoTruck, Barrel, NoAutoTarget
+ -ShakeOnDeath:
+ -SoundOnDamageTransition:
+ -Demolishable:
+ EditorTilesetFilter:
+ Categories: Decoration
+ Interactable:
+ Bounds: 24,24
+
+AMMOBOX1:
+ Inherits: ^AmmoBox
+
+AMMOBOX2:
+ Inherits: ^AmmoBox
+
+AMMOBOX3:
+ Inherits: ^AmmoBox
+
+MISS:
+ Inherits: ^TechBuilding
+ Inherits@shape: ^3x2Shape
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, NoAutoTarget
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: 0,0,0, 840,0,0, 840,-1024,0, 420,768,0, -840,0,0, -840,-1024,0, -840,1024,0
+ Selectable:
+ Priority: 0
+ Building:
+ Footprint: xxx xxx ===
+ Dimensions: 3,3
+ LocalCenterOffset: 0,-512,0
+ Health:
+ HP: 600
+ RevealsShroud:
+ Range: 10c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 6c0
+ Armor:
+ Type: Wood
+ Tooltip:
+ Name: Communications Center
+ WithBuildingBib:
+ ExternalCapturable:
+ ExternalCapturableBar:
+ EngineerRepairable:
+ WithDeathAnimation:
+ DeathSequence: dead
+ UseDeathTypeSuffix: false
+ ProvidesPrerequisite@buildingname:
+ GpsDot:
+ String: Communications
+
+BIO:
+ Inherits: ^TechBuilding
+ Inherits@shape: ^2x2Shape
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, NoAutoTarget
+ Building:
+ Footprint: xx xx
+ Dimensions: 2,2
+ RevealsShroud:
+ Range: 3c0
+ ExternalCapturable:
+ ExternalCapturableBar:
+ EngineerRepairable:
+ Tooltip:
+ Name: Biological Lab
+ WithDeathAnimation:
+ DeathSequence: dead
+ UseDeathTypeSuffix: false
+ ProvidesPrerequisite@buildingname:
+ GpsDot:
+ String: Biohazard
+
+OILB:
+ Inherits: ^TechBuilding
+ Inherits@shape: ^2x2Shape
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, NoAutoTarget
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: 0,0,0, 630,-300,0, 420,512,0, -420,-512,0, -630,300,0
+ Selectable:
+ Priority: 0
+ Building:
+ Footprint: xx xx
+ Dimensions: 2,2
+ Health:
+ HP: 800
+ RevealsShroud:
+ Range: 4c0
+ ExternalCapturable:
+ ExternalCapturableBar:
+ EngineerRepairable:
+ CashTrickler:
+ Interval: 375
+ Amount: 100
+ Tooltip:
+ Name: Oil Derrick
+ Explodes:
+ Weapon: BarrelExplode
+ GpsDot:
+ String: Oil
+ GivesCashOnCapture:
+ Amount: 100
+
+BR1:
+ Inherits: ^Bridge
+ Bridge:
+ Template: 235
+ DamagedTemplate: 236
+ DestroyedTemplate: 237
+ SouthOffset: 0,2
+ FreeActor:
+ Actor: bridgehut
+ SpawnOffset: 2,0
+
+BR2:
+ Inherits: ^Bridge
+ Bridge:
+ Template: 238
+ DamagedTemplate: 239
+ DestroyedTemplate: 240
+ NorthOffset: 3,0
+ FreeActor:
+ Actor: bridgehut
+ SpawnOffset: 1,1
+
+BR3:
+ Inherits: ^Bridge
+ Bridge:
+ Long: yes
+ ShorePieces: br1,br2
+ Template: 241
+ DamagedTemplate: 242
+ DestroyedTemplate: 243
+ DestroyedPlusNorthTemplate: 245
+ DestroyedPlusSouthTemplate: 244
+ DestroyedPlusBothTemplate: 246
+ NorthOffset: 2,0
+ SouthOffset: 0,1
+
+BRIDGE1:
+ Inherits: ^Bridge
+ Bridge:
+ Template: 131
+ DamagedTemplate: 378
+ DestroyedTemplate: 132
+ Building:
+ Footprint: _____ _____ _____
+ Dimensions: 5,3
+ FreeActor@north:
+ Actor: bridgehut
+ SpawnOffset: 2,-1
+ FreeActor@south:
+ Actor: bridgehut
+ SpawnOffset: 0,1
+ Interactable:
+ Bounds: 120,72
+
+BRIDGE2:
+ Inherits: ^Bridge
+ Bridge:
+ Template: 133
+ DamagedTemplate: 379
+ DestroyedTemplate: 134
+ Building:
+ Footprint: _____ _____
+ Dimensions: 5,2
+ FreeActor@north:
+ Actor: bridgehut
+ SpawnOffset: 0,-1
+ FreeActor@south:
+ Actor: bridgehut
+ SpawnOffset: 2,1
+ Interactable:
+ Bounds: 120,48
+
+SBRIDGE1:
+ Inherits: ^Bridge
+ Bridge:
+ Template: 520
+ DamagedTemplate: 521
+ DestroyedTemplate: 522
+ Building:
+ Footprint: ___ ___
+ Dimensions: 3,2
+ FreeActor@north:
+ Actor: bridgehut.small
+ SpawnOffset: 1,0
+ FreeActor@south:
+ Actor: bridgehut.small
+ SpawnOffset: 1,1
+ Interactable:
+ Bounds: 72,48
+
+SBRIDGE2:
+ Inherits: ^Bridge
+ Bridge:
+ Template: 531
+ DamagedTemplate: 532
+ DestroyedTemplate: 533
+ Building:
+ Footprint: __ __ __
+ Dimensions: 2,3
+ FreeActor@west:
+ Actor: bridgehut.small
+ SpawnOffset: 0,1
+ FreeActor@east:
+ Actor: bridgehut.small
+ SpawnOffset: 1,1
+ Interactable:
+ Bounds: 48,72
+
+SBRIDGE3:
+ Inherits: ^Bridge
+ Bridge:
+ Template: 523
+ DamagedTemplate: 524
+ DestroyedTemplate: 525
+ FreeActor@north:
+ Actor: bridgehut
+ SpawnOffset: 2,-1
+ FreeActor@south:
+ Actor: bridgehut
+ SpawnOffset: 0,1
+
+SBRIDGE4:
+ Inherits: ^Bridge
+ Bridge:
+ Template: 527
+ DamagedTemplate: 528
+ DestroyedTemplate: 529
+ FreeActor@north:
+ Actor: bridgehut
+ SpawnOffset: 0,-1
+ FreeActor@south:
+ Actor: bridgehut
+ SpawnOffset: 2,1
+
+BRIDGEHUT:
+ AlwaysVisible:
+ Building:
+ Footprint: __ __
+ Dimensions: 2,2
+ Selectable:
+ Bounds: 48,48
+ Priority: 2
+ LegacyBridgeHut:
+ Targetable:
+ TargetTypes: BridgeHut, C4
+
+BRIDGEHUT.small:
+ AlwaysVisible:
+ Building:
+ Footprint: _
+ Dimensions: 1,1
+ Selectable:
+ Bounds: 24,24
+ Priority: 2
+ LegacyBridgeHut:
+ Targetable:
+ TargetTypes: BridgeHut, C4
+
+V20:
+ Inherits: ^DesertCivBuilding
+ Building:
+ Footprint: xx xx
+ Dimensions: 2,2
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: -840,-512,0, 0,0,0, -840,512,0
+ Type: Rectangle
+ TopLeft: -1024, -512
+ BottomRight: 1024, 896
+
+V21:
+ Inherits: ^DesertCivBuilding
+ Building:
+ Footprint: xx xx
+ Dimensions: 2,2
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: 840,-512,0, 420,0,0, 840,512,0
+ Type: Rectangle
+ TopLeft: -1024, -1024
+ BottomRight: 1024, 0
+ HitShape@WELL:
+ TargetableOffsets: -770,512,0
+ Type: Rectangle
+ TopLeft: 0, 0
+ BottomRight: 1024, 598
+
+V22:
+ Inherits: ^DesertCivBuilding
+ Inherits@shape: ^2x1Shape
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+
+V23:
+ Inherits: ^DesertCivBuilding
+
+V24:
+ Inherits: ^DesertCivBuilding
+ Building:
+ Footprint: xx xx
+ Dimensions: 2,2
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: -630,-512,0, 0,0,0, -630,256,0, 420,-512,0
+ Type: Rectangle
+ TopLeft: -1024, -683
+ BottomRight: 640, 853
+
+V25:
+ Inherits: ^DesertCivBuilding
+ Building:
+ Footprint: xx xx
+ Dimensions: 2,2
+ Tooltip:
+ Name: Church
+ RevealsShroud:
+ Range: 10c0
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: 0,-128,0, 420,512,0
+ Type: Rectangle
+ TopLeft: -683, -683
+ BottomRight: 1024, 512
+
+V26:
+ Inherits: ^DesertCivBuilding
+ Inherits@shape: ^2x1Shape
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+
+V27:
+ Inherits: ^DesertCivBuilding
+
+V28:
+ Inherits: ^DesertCivBuilding
+
+V29:
+ Inherits: ^DesertCivBuilding
+
+V30:
+ Inherits: ^DesertCivBuilding
+ Inherits@shape: ^2x1Shape
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+
+V31:
+ Inherits: ^DesertCivBuilding
+ Inherits@shape: ^2x1Shape
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+
+V32:
+ Inherits: ^DesertCivBuilding
+ Inherits@shape: ^2x1Shape
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+
+V33:
+ Inherits: ^DesertCivBuilding
+ Inherits@shape: ^2x1Shape
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+
+V34:
+ Inherits: ^DesertCivBuilding
+
+V35:
+ Inherits: ^DesertCivBuilding
+
+V36:
+ Inherits: ^DesertCivBuilding
+
+V37:
+ Inherits: ^DesertCivBuilding
+ Building:
+ Footprint: __xx_ ___xx
+ Dimensions: 5,2
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: 0,0,0, 0,1024,0
+ Type: Rectangle
+ TopLeft: -512, -597
+ BottomRight: 1536, 597
+
+RICE:
+ Inherits: ^CivField
+ EditorTilesetFilter:
+ RequireTilesets: TEMPERAT
+
+RUSHOUSE:
+ Inherits: ^CivBuilding
+ EditorTilesetFilter:
+ RequireTilesets: TEMPERAT
+ Building:
+ Footprint: x x
+ Dimensions: 1,2
+ HitShape:
+ UseTargetableCellsOffsets: false
+
+ASIANHUT:
+ Inherits: ^CivBuilding
+ EditorTilesetFilter:
+ RequireTilesets: TEMPERAT
+
+SNOWHUT:
+ Inherits: ^CivBuilding
+ EditorTilesetFilter:
+ RequireTilesets: SNOW
+ Building:
+ Footprint: x x
+ Dimensions: 1,2
+ RenderSprites:
+ Scale: 0.7
+ HitShape:
+ UseTargetableCellsOffsets: false
+
+LHUS:
+ Inherits: ^CivBuilding
+ EditorTilesetFilter:
+ RequireTilesets: TEMPERAT
+ Selectable:
+ Bounds: 24,48,0,-16
+ Tooltip:
+ Name: Lighthouse
+ Building:
+ Footprint: x
+ Dimensions: 1,1
+
+WINDMILL:
+ Inherits: ^CivBuilding
+ EditorTilesetFilter:
+ RequireTilesets: TEMPERAT
+ Selectable:
+ Bounds: 24,24,0,-14
+ DecorationBounds: 36,36,0,-14
+ SelectionDecorations:
+ Tooltip:
+ Name: Windmill
+ Building:
+ Footprint: x
+ Dimensions: 1,1
diff --git a/mods/ura/rules/decoration.yaml b/mods/ura/rules/decoration.yaml
new file mode 100644
index 0000000..86fa7fd
--- /dev/null
+++ b/mods/ura/rules/decoration.yaml
@@ -0,0 +1,415 @@
+T01:
+ Inherits: ^Tree
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T01.Husk
+
+T02:
+ Inherits: ^Tree
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T02.Husk
+
+T03:
+ Inherits: ^Tree
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T03.Husk
+
+T04:
+ Inherits: ^Tree
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: TEMPERAT, SNOW, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T04.Husk
+
+T05:
+ Inherits: ^Tree
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T05.Husk
+
+T06:
+ Inherits: ^Tree
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T06.Husk
+
+T07:
+ Inherits: ^Tree
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T07.Husk
+
+T08:
+ Inherits: ^Tree
+ Building:
+ Footprint: x_
+ Dimensions: 2,1
+ SpawnActorOnDeath:
+ Actor: T08.Husk
+
+T09:
+ Inherits: ^Tree
+ EditorTilesetFilter:
+ ExcludeTilesets: TEMPERAT, SNOW, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T09.Husk
+
+T10:
+ Inherits: ^Tree
+ Building:
+ Footprint: __ xx
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T10.Husk
+
+T11:
+ Inherits: ^Tree
+ Building:
+ Footprint: __ xx
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T11.Husk
+
+T12:
+ Inherits: ^Tree
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T12.Husk
+
+T13:
+ Inherits: ^Tree
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T13.Husk
+
+T14:
+ Inherits: ^Tree
+ Building:
+ Footprint: ___ xx_
+ Dimensions: 3,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T14.Husk
+
+T15:
+ Inherits: ^Tree
+ Building:
+ Footprint: ___ xx_
+ Dimensions: 3,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T15.Husk
+
+T16:
+ Inherits: ^Tree
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T16.Husk
+
+T17:
+ Inherits: ^Tree
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: T17.Husk
+
+TC01:
+ Inherits: ^Tree
+ Building:
+ Footprint: ___ xx_
+ Dimensions: 3,2
+ EditorTilesetFilter:
+ ExcludeTilesets: INTERIOR
+ SpawnActorOnDeath:
+ Actor: TC01.Husk
+
+TC02:
+ Inherits: ^Tree
+ Building:
+ Footprint: _x_ xx_
+ Dimensions: 3,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: TC02.Husk
+
+TC03:
+ Inherits: ^Tree
+ Building:
+ Footprint: xx_ xx_
+ Dimensions: 3,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: TC03.Husk
+
+TC04:
+ Inherits: ^Tree
+ Building:
+ Footprint: ____ xxx_ x___
+ Dimensions: 4,3
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: TC04.Husk
+
+TC05:
+ Inherits: ^Tree
+ Building:
+ Footprint: __x_ xxx_ _xx_
+ Dimensions: 4,3
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ SpawnActorOnDeath:
+ Actor: TC05.Husk
+
+BOXES01:
+ Inherits: ^Tree
+ Tooltip:
+ Name: Boxes
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT
+ Categories: Decoration
+
+BOXES02:
+ Inherits: ^Tree
+ Tooltip:
+ Name: Boxes
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT
+ Categories: Decoration
+
+BOXES03:
+ Inherits: ^Tree
+ Tooltip:
+ Name: Boxes
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT
+ Categories: Decoration
+
+BOXES04:
+ Inherits: ^Tree
+ Tooltip:
+ Name: Boxes
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT
+ Categories: Decoration
+
+BOXES05:
+ Inherits: ^Tree
+ Tooltip:
+ Name: Boxes
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT
+ Categories: Decoration
+
+BOXES06:
+ Inherits: ^Tree
+ Tooltip:
+ Name: Boxes
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT
+ Categories: Decoration
+
+BOXES07:
+ Inherits: ^Tree
+ Tooltip:
+ Name: Boxes
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT
+ Categories: Decoration
+
+BOXES08:
+ Inherits: ^Tree
+ Tooltip:
+ Name: Boxes
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT
+ Categories: Decoration
+
+BOXES09:
+ Inherits: ^Tree
+ Tooltip:
+ Name: Boxes
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT
+ Categories: Decoration
+
+ICE01:
+ Inherits: ^Tree
+ Building:
+ Footprint: xx xx
+ Dimensions: 2,2
+ Tooltip:
+ Name: Ice Floe
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ Categories: Decoration
+
+ICE02:
+ Inherits: ^Tree
+ Building:
+ Footprint: x x
+ Dimensions: 1,2
+ Tooltip:
+ Name: Ice Floe
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ Categories: Decoration
+
+ICE03:
+ Inherits: ^Tree
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+ Tooltip:
+ Name: Ice Floe
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ Categories: Decoration
+
+ICE04:
+ Inherits: ^Tree
+ Tooltip:
+ Name: Ice Floe
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ Categories: Decoration
+
+ICE05:
+ Inherits: ^Tree
+ Tooltip:
+ Name: Ice Floe
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+ Categories: Decoration
+
+ROCK1:
+ Inherits: ^Rock
+ Building:
+ Footprint: ___ xx_
+ Dimensions: 3,2
+
+ROCK2:
+ Inherits: ^Rock
+ Building:
+ Footprint: xx_
+ Dimensions: 3,1
+
+ROCK3:
+ Inherits: ^Rock
+ Building:
+ Footprint: ___ xx_
+ Dimensions: 3,2
+
+ROCK4:
+ Inherits: ^Rock
+ Building:
+ Footprint: x_
+ Dimensions: 2,1
+
+ROCK5:
+ Inherits: ^Rock
+ Building:
+ Footprint: x_
+ Dimensions: 2,1
+
+ROCK6:
+ Inherits: ^Rock
+ Building:
+ Footprint: ___ xxx
+ Dimensions: 3,2
+
+ROCK7:
+ Inherits: ^Rock
+ Building:
+ Footprint: xxxx_
+ Dimensions: 5,1
+
+UTILPOL1:
+ Inherits: ^Tree
+ Tooltip:
+ Name: Utility Pole
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT
+ Categories: Decoration
+
+UTILPOL2:
+ Inherits: ^Tree
+ Tooltip:
+ Name: Utility Pole
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT
+ Categories: Decoration
+
+TANKTRAP1:
+ Inherits: ^Rock
+ Building:
+ Footprint: x
+ Dimensions: 1,1
+ Tooltip:
+ Name: Tank Trap
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT
+ RequireTilesets: TEMPERAT, SNOW, INTERIOR
+
+TANKTRAP2:
+ Inherits: ^Rock
+ Building:
+ Footprint: x
+ Dimensions: 1,1
+ Tooltip:
+ Name: Tank Trap
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT
+ RequireTilesets: TEMPERAT, SNOW, INTERIOR
diff --git a/mods/ura/rules/defaults.yaml b/mods/ura/rules/defaults.yaml
new file mode 100644
index 0000000..6e7b20a
--- /dev/null
+++ b/mods/ura/rules/defaults.yaml
@@ -0,0 +1,1127 @@
+^ExistsInWorld:
+ AppearsOnRadar:
+ CombatDebugOverlay:
+ GivesExperience:
+ PlayerExperienceModifier: 1
+ ScriptTriggers:
+ ConditionManager:
+ RenderDebugState:
+
+^SpriteActor:
+ BodyOrientation:
+ QuantizeFacingsFromSequence:
+ RenderSprites:
+
+^1x1Shape:
+ HitShape:
+ UseTargetableCellsOffsets: true
+ Type: Rectangle
+ TopLeft: -512, -512
+ BottomRight: 512, 512
+
+^2x1Shape:
+ HitShape:
+ UseTargetableCellsOffsets: true
+ Type: Rectangle
+ TopLeft: -1024, -512
+ BottomRight: 1024, 512
+
+^2x2Shape:
+ HitShape:
+ UseTargetableCellsOffsets: true
+ Type: Rectangle
+ TopLeft: -1024, -1024
+ BottomRight: 1024, 1024
+
+^3x2Shape:
+ HitShape:
+ UseTargetableCellsOffsets: true
+ Type: Rectangle
+ TopLeft: -1536, -1024
+ BottomRight: 1536, 1024
+
+^GainsExperience:
+ GainsExperience:
+ Conditions:
+ 200: rank-veteran
+ 400: rank-veteran
+ 800: rank-veteran
+ 1600: rank-veteran
+ GrantCondition@RANK-ELITE:
+ RequiresCondition: rank-veteran >= 4
+ Condition: rank-elite
+ DamageMultiplier@RANK-1:
+ RequiresCondition: rank-veteran == 1
+ Modifier: 95
+ DamageMultiplier@RANK-2:
+ RequiresCondition: rank-veteran == 2
+ Modifier: 90
+ DamageMultiplier@RANK-3:
+ RequiresCondition: rank-veteran == 3
+ Modifier: 85
+ DamageMultiplier@RANK-ELITE:
+ RequiresCondition: rank-elite
+ Modifier: 75
+ FirepowerMultiplier@RANK-1:
+ RequiresCondition: rank-veteran == 1
+ Modifier: 105
+ FirepowerMultiplier@RANK-2:
+ RequiresCondition: rank-veteran == 2
+ Modifier: 110
+ FirepowerMultiplier@RANK-3:
+ RequiresCondition: rank-veteran == 3
+ Modifier: 120
+ FirepowerMultiplier@RANK-ELITE:
+ RequiresCondition: rank-elite
+ Modifier: 130
+ SpeedMultiplier@RANK-1:
+ RequiresCondition: rank-veteran == 1
+ Modifier: 105
+ SpeedMultiplier@RANK-2:
+ RequiresCondition: rank-veteran == 2
+ Modifier: 110
+ SpeedMultiplier@RANK-3:
+ RequiresCondition: rank-veteran == 3
+ Modifier: 120
+ SpeedMultiplier@RANK-ELITE:
+ RequiresCondition: rank-elite
+ Modifier: 140
+ ReloadDelayMultiplier@RANK-1:
+ RequiresCondition: rank-veteran == 1
+ Modifier: 95
+ ReloadDelayMultiplier@RANK-2:
+ RequiresCondition: rank-veteran == 2
+ Modifier: 90
+ ReloadDelayMultiplier@RANK-3:
+ RequiresCondition: rank-veteran == 3
+ Modifier: 85
+ ReloadDelayMultiplier@RANK-ELITE:
+ RequiresCondition: rank-elite
+ Modifier: 75
+ InaccuracyMultiplier@RANK-1:
+ RequiresCondition: rank-veteran == 1
+ Modifier: 90
+ InaccuracyMultiplier@RANK-2:
+ RequiresCondition: rank-veteran == 2
+ Modifier: 80
+ InaccuracyMultiplier@RANK-3:
+ RequiresCondition: rank-veteran == 3
+ Modifier: 70
+ InaccuracyMultiplier@RANK-ELITE:
+ RequiresCondition: rank-elite
+ Modifier: 50
+ SelfHealing@ELITE:
+ Step: 2
+ Delay: 100
+ HealIfBelow: 100
+ DamageCooldown: 125
+ RequiresCondition: rank-elite
+ WithDecoration@RANK-1:
+ Image: rank
+ Sequence: rank-veteran-1
+ Palette: effect
+ ReferencePoint: Bottom, Right
+ RequiresCondition: rank-veteran == 1
+ ZOffset: 256
+ WithDecoration@RANK-2:
+ Image: rank
+ Sequence: rank-veteran-2
+ Palette: effect
+ ReferencePoint: Bottom, Right
+ RequiresCondition: rank-veteran == 2
+ ZOffset: 256
+ WithDecoration@RANK-3:
+ Image: rank
+ Sequence: rank-veteran-3
+ Palette: effect
+ ReferencePoint: Bottom, Right
+ RequiresCondition: rank-veteran == 3
+ ZOffset: 256
+ WithDecoration@RANK-ELITE:
+ Image: rank
+ Sequence: rank-elite
+ Palette: effect
+ ReferencePoint: Bottom, Right
+ RequiresCondition: rank-elite
+ ZOffset: 256
+
+^IronCurtainable:
+ WithColoredOverlay@IRONCURTAIN:
+ RequiresCondition: invulnerability
+ DamageMultiplier@IRONCURTAIN:
+ RequiresCondition: invulnerability
+ Modifier: 0
+ TimedConditionBar:
+ Condition: invulnerability
+ ExternalCondition@INVULNERABILITY:
+ Condition: invulnerability
+
+^AutoTargetGround:
+ AutoTarget:
+ AutoTargetPriority@DEFAULT:
+ ValidTargets: Infantry, Vehicle, Water, Underwater, Structure, Defense
+ InvalidTargets: NoAutoTarget
+
+^AutoTargetGroundAssaultMove:
+ AutoTarget:
+ AttackAnythingCondition: stance-attackanything
+ AutoTargetPriority@DEFAULT:
+ RequiresCondition: !stance-attackanything && !assault-move
+ ValidTargets: Infantry, Vehicle, Water, Underwater, Defense
+ InvalidTargets: NoAutoTarget, WaterStructure
+ AutoTargetPriority@ATTACKANYTHING:
+ RequiresCondition: stance-attackanything || assault-move
+ ValidTargets: Infantry, Vehicle, Water, Underwater, Structure, Defense
+ AttackMove:
+ AssaultMoveScanCondition: assault-move
+
+^AutoTargetAir:
+ AutoTarget:
+ AutoTargetPriority@DEFAULT:
+ ValidTargets: Air
+ InvalidTargets: NoAutoTarget
+
+^AutoTargetAll:
+ AutoTarget:
+ AutoTargetPriority@DEFAULT:
+ ValidTargets: Infantry, Vehicle, Water, Underwater, Air, Structure, Defense
+ InvalidTargets: NoAutoTarget
+
+^AutoTargetAllAssaultMove:
+ AutoTarget:
+ AttackAnythingCondition: stance-attackanything
+ AutoTargetPriority@DEFAULT:
+ RequiresCondition: !stance-attackanything && !assault-move
+ ValidTargets: Infantry, Vehicle, Water, Underwater, Air, Defense
+ InvalidTargets: NoAutoTarget, WaterStructure
+ AutoTargetPriority@ATTACKANYTHING:
+ RequiresCondition: stance-attackanything || assault-move
+ ValidTargets: Infantry, Vehicle, Water, Underwater, Air, Structure, Defense
+ InvalidTargets: NoAutoTarget
+ AttackMove:
+ AssaultMoveScanCondition: assault-move
+
+^GlobalBounty:
+ GrantConditionOnPrerequisite@GLOBALBOUNTY:
+ Condition: global-bounty
+ Prerequisites: global-bounty
+ GivesBounty:
+ RequiresCondition: global-bounty
+
+^Vehicle:
+ Inherits@1: ^ExistsInWorld
+ Inherits@2: ^IronCurtainable
+ Inherits@3: ^SpriteActor
+ Inherits@bounty: ^GlobalBounty
+ Huntable:
+ DrawLineToTarget:
+ UpdatesPlayerStatistics:
+ Mobile:
+ Crushes: mine, crate
+ TerrainSpeeds:
+ Clear: 80
+ Rough: 40
+ Road: 100
+ Bridge: 100
+ Ore: 70
+ Gems: 70
+ Beach: 40
+ TurnSpeed: 5
+ SelectionDecorations:
+ WithSpriteControlGroupDecoration:
+ Selectable:
+ Bounds: 24, 24
+ Targetable:
+ TargetTypes: Ground, Repair, Vehicle
+ RequiresCondition: !parachute
+ Repairable:
+ Chronoshiftable:
+ Passenger:
+ CargoType: Vehicle
+ Weight: 3
+ AttackMove:
+ HiddenUnderFog:
+ ActorLostNotification:
+ ProximityCaptor:
+ Types: Vehicle
+ GpsDot:
+ String: Vehicle
+ WithDamageOverlay:
+ Guard:
+ Guardable:
+ Tooltip:
+ GenericName: Vehicle
+ Capturable:
+ Types: vehicle
+ CaptureThreshold: 100
+ CancelActivity: True
+ CaptureNotification:
+ Notification: UnitStolen
+ MustBeDestroyed:
+ Voiced:
+ VoiceSet: VehicleVoice
+ Parachutable:
+ FallRate: 26
+ KilledOnImpassableTerrain: true
+ GroundCorpseSequence:
+ GroundCorpsePalette:
+ WaterCorpseSequence:
+ WaterCorpsePalette:
+ ParachutingCondition: parachute
+ Explodes:
+ Weapon: UnitExplodeSmall
+ EmptyWeapon: UnitExplodeSmall
+ WithFacingSpriteBody:
+ WithParachute:
+ ShadowImage: parach-shadow
+ ShadowSequence: idle
+ Image: parach
+ Sequence: idle
+ OpeningSequence: open
+ Offset: 0,0,200
+ RequiresCondition: parachute
+ BodyOrientation:
+ UseClassicFacingFudge: True
+ HitShape:
+ EditorTilesetFilter:
+ Categories: Vehicle
+
+^TrackedVehicle:
+ Inherits: ^Vehicle
+ Mobile:
+ Crushes: wall, mine, crate
+ TerrainSpeeds:
+ Clear: 80
+ Rough: 70
+ Road: 100
+ Bridge: 100
+ Ore: 70
+ Gems: 70
+ Beach: 70
+
+^Infantry:
+ Inherits@1: ^ExistsInWorld
+ Inherits@2: ^GainsExperience
+ Inherits@3: ^SpriteActor
+ Inherits@bounty: ^GlobalBounty
+ Huntable:
+ DrawLineToTarget:
+ Health:
+ HP: 25
+ Armor:
+ Type: None
+ RevealsShroud:
+ Range: 5c0
+ Mobile:
+ Speed: 56
+ Crushes: mine, crate
+ SharesCell: true
+ TerrainSpeeds:
+ Clear: 90
+ Rough: 80
+ Road: 100
+ Bridge: 100
+ Ore: 80
+ Gems: 80
+ Beach: 80
+ SelectionDecorations:
+ WithSpriteControlGroupDecoration:
+ Selectable:
+ Bounds: 18,20,0,-6
+ DecorationBounds: 12,18,0,-8
+ Targetable:
+ TargetTypes: Ground, Infantry, Disguise
+ RequiresCondition: !parachute
+ QuantizeFacingsFromSequence:
+ Sequence: stand
+ WithInfantryBody:
+ WithDeathAnimation:
+ DeathTypes:
+ DefaultDeath: 1
+ BulletDeath: 2
+ SmallExplosionDeath: 3
+ ExplosionDeath: 4
+ FireDeath: 5
+ ElectricityDeath: 6
+ CrushedSequence: die-crushed
+ AttackMove:
+ Passenger:
+ CargoType: Infantry
+ HiddenUnderFog:
+ ActorLostNotification:
+ GpsDot:
+ String: Infantry
+ Crushable:
+ CrushSound: squishy2.aud
+ Guard:
+ Guardable:
+ Tooltip:
+ GenericName: Soldier
+ SelfHealing@HOSPITAL:
+ Step: 5
+ Delay: 100
+ HealIfBelow: 100
+ DamageCooldown: 125
+ RequiresCondition: hospitalheal
+ GrantConditionOnPrerequisite:
+ Condition: hospitalheal
+ Prerequisites: hosp
+ DeathSounds@NORMAL:
+ DeathTypes: DefaultDeath, BulletDeath, SmallExplosionDeath, ExplosionDeath
+ DeathSounds@BURNED:
+ Voice: Burned
+ DeathTypes: FireDeath
+ DeathSounds@ZAPPED:
+ Voice: Zapped
+ DeathTypes: ElectricityDeath
+ Parachutable:
+ FallRate: 26
+ KilledOnImpassableTerrain: true
+ GroundImpactSound: squishy2.aud
+ WaterImpactSound: splash9.aud
+ WaterCorpseSequence: small_splash
+ ParachutingCondition: parachute
+ Cloneable:
+ Types: Infantry
+ Voiced:
+ VoiceSet: GenericVoice
+ WithParachute:
+ ShadowImage: parach-shadow
+ ShadowSequence: idle
+ Image: parach
+ Sequence: idle
+ OpeningSequence: open
+ Offset: 0,0,427
+ RequiresCondition: parachute
+ HitShape:
+ Type: Circle
+ Radius: 128
+ EditorTilesetFilter:
+ Categories: Infantry
+
+^Soldier:
+ Inherits: ^Infantry
+ UpdatesPlayerStatistics:
+ MustBeDestroyed:
+ ProximityCaptor:
+ Types: Infantry
+ TakeCover:
+ DamageModifiers:
+ Prone50Percent: 50
+ DamageTriggers: TriggerProne
+ WithInfantryBody:
+ IdleSequences: idle1,idle2
+ StandSequences: stand,stand2
+ DetectCloaked:
+ CloakTypes: Hijacker
+
+^CivInfantry:
+ Inherits: ^Infantry
+ Selectable:
+ Class: CivInfantry
+ Valued:
+ Cost: 10
+ Tooltip:
+ Name: Civilian
+ GenericVisibility: None
+ RevealsShroud:
+ Range: 3c0
+ ProximityCaptor:
+ Types: CivilianInfantry
+ ScaredyCat:
+ Voiced:
+ VoiceSet: CivilianMaleVoice
+ Wanders:
+ MinMoveDelay: 150
+ MaxMoveDelay: 750
+ EditorTilesetFilter:
+ Categories: Civilian infantry
+
+^ArmedCivilian:
+ Inherits@AUTOTARGET: ^AutoTargetGroundAssaultMove
+ Armament:
+ Weapon: Pistol
+ AttackFrontal:
+ WithInfantryBody:
+ DefaultAttackSequence: shoot
+
+^Ship:
+ Inherits@1: ^ExistsInWorld
+ Inherits@2: ^GainsExperience
+ Inherits@3: ^IronCurtainable
+ Inherits@4: ^SpriteActor
+ Inherits@bounty: ^GlobalBounty
+ Huntable:
+ DrawLineToTarget:
+ UpdatesPlayerStatistics:
+ Mobile:
+ Crushes: crate
+ TerrainSpeeds:
+ Water: 100
+ SelectionDecorations:
+ WithSpriteControlGroupDecoration:
+ Selectable:
+ Bounds: 24,24
+ Targetable:
+ TargetTypes: Ground, Water, Ship, Repair
+ HiddenUnderFog:
+ AttackMove:
+ ActorLostNotification:
+ Notification: NavalUnitLost
+ ProximityCaptor:
+ Types: Ship
+ Chronoshiftable:
+ RepairableNear:
+ GpsDot:
+ String: Ship
+ WithDamageOverlay:
+ Explodes:
+ Weapon: UnitExplodeShip
+ EmptyWeapon: UnitExplodeShip
+ Guard:
+ Guardable:
+ Tooltip:
+ GenericName: Ship
+ MustBeDestroyed:
+ EditorTilesetFilter:
+ ExcludeTilesets: INTERIOR
+ Categories: Naval
+ Voiced:
+ VoiceSet: VehicleVoice
+ WithFacingSpriteBody:
+ HitShape:
+
+^NeutralPlane:
+ Inherits@1: ^ExistsInWorld
+ Inherits@3: ^IronCurtainable
+ Inherits@4: ^SpriteActor
+ Inherits@bounty: ^GlobalBounty
+ Huntable:
+ DrawLineToTarget:
+ UpdatesPlayerStatistics:
+ AppearsOnRadar:
+ UseLocation: true
+ SelectionDecorations:
+ WithSpriteControlGroupDecoration:
+ Selectable:
+ Bounds: 24,24
+ Aircraft:
+ RepairBuildings: fix
+ AirborneCondition: airborne
+ Targetable@GROUND:
+ TargetTypes: Ground, Repair, Vehicle
+ RequiresCondition: !airborne
+ Targetable@AIRBORNE:
+ TargetTypes: Air
+ RequiresCondition: airborne
+ HiddenUnderFog:
+ Type: GroundPosition
+ AttackMove:
+ Guard:
+ Guardable:
+ ActorLostNotification:
+ Notification: AirUnitLost
+ ProximityCaptor:
+ Types: Plane
+ EjectOnDeath:
+ PilotActor: E1
+ SuccessRate: 50
+ EjectOnGround: false
+ EjectInAir: true
+ AllowUnsuitableCell: true
+ GpsDot:
+ String: Plane
+ Tooltip:
+ GenericName: Plane
+ WithShadow:
+ Offset: 43, 128, 0
+ ZOffset: -129
+ WithFacingSpriteBody:
+ MustBeDestroyed:
+ Voiced:
+ VoiceSet: GenericVoice
+ HitShape:
+ EditorTilesetFilter:
+ Categories: Aircraft
+ SpawnActorOnDeath:
+ RequiresCondition: airborne
+ OwnerType: InternalName
+ EffectiveOwnerFromOwner: true
+ Explodes:
+ Weapon: UnitExplode
+ RequiresCondition: !airborne
+
+^Plane:
+ Inherits: ^NeutralPlane
+ Inherits@2: ^GainsExperience
+
+^Helicopter:
+ Inherits: ^Plane
+ Tooltip:
+ GenericName: Helicopter
+ Aircraft:
+ CanHover: True
+ CruisingCondition: cruising
+ WaitDistanceFromResupplyBase: 4c0
+ TakeOffOnResupply: true
+ VTOL: true
+ GpsDot:
+ String: Helicopter
+ Hovers@CRUISING:
+ RequiresCondition: cruising
+ BodyOrientation:
+ UseClassicFacingFudge: True
+
+^BasicBuilding:
+ Inherits@1: ^ExistsInWorld
+ Inherits@2: ^IronCurtainable
+ Inherits@3: ^SpriteActor
+ Inherits@shape: ^1x1Shape
+ Inherits@bounty: ^GlobalBounty
+ SelectionDecorations:
+ WithSpriteControlGroupDecoration:
+ Selectable:
+ Priority: 3
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure
+ Building:
+ Dimensions: 1,1
+ Footprint: x
+ TerrainTypes: Clear,Road
+ RequiresBaseProvider: True
+ RequiresBuildableArea:
+ AreaTypes: building
+ SoundOnDamageTransition:
+ DamagedSounds: kaboom1.aud
+ DestroyedSounds: kaboom22.aud
+ WithSpriteBody:
+ Explodes:
+ Type: Footprint
+ Weapon: BuildingExplode
+ EmptyWeapon: BuildingExplode
+ CaptureNotification:
+ ShakeOnDeath:
+ ProximityCaptor:
+ Types: Building
+ Guardable:
+ Range: 3c0
+ FrozenUnderFog:
+ FrozenUnderFogUpdatedByGps:
+ Tooltip:
+ GenericName: Structure
+ Demolishable:
+ EditorTilesetFilter:
+ Categories: Building
+ CommandBarBlacklist:
+
+^Building:
+ Inherits: ^BasicBuilding
+ Huntable:
+ UpdatesPlayerStatistics:
+ GivesBuildableArea:
+ AreaTypes: building
+ RepairableBuilding:
+ RepairStep: 700
+ PlayerExperience: 25
+ EngineerRepairable:
+ AcceptsDeliveredCash:
+ WithMakeAnimation:
+ ExternalCapturable:
+ ExternalCapturableBar:
+ EmitInfantryOnSell:
+ ActorTypes: e1,e1,e1,tecn,tecn
+ MustBeDestroyed:
+ RequiredForShortGame: true
+ GpsDot:
+ String: Structure
+ Sellable:
+ SellSounds: cashturn.aud
+
+^ScienceBuilding:
+ Inherits: ^Building
+ EmitInfantryOnSell:
+ ActorTypes: e1,e1,e1,e1,tecn,tecn,tecn,tecn,tecn,tecn,tecn,tecn,tecn,tecn,e6,e6,e6,e6,e6,chan,chan,chan,chan
+
+^Defense:
+ Inherits: ^Building
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, Defense
+ MustBeDestroyed:
+ RequiredForShortGame: false
+ -GivesBuildableArea:
+ -AcceptsDeliveredCash:
+ DrawLineToTarget:
+ RenderRangeCircle:
+ Explodes:
+ Weapon: SmallBuildingExplode
+ EmptyWeapon: SmallBuildingExplode
+ EditorTilesetFilter:
+ Categories: Defense
+ -CommandBarBlacklist:
+
+^Wall:
+ Inherits@1: ^ExistsInWorld
+ Inherits@2: ^SpriteActor
+ Inherits@shape: ^1x1Shape
+ Interactable:
+ Building:
+ Dimensions: 1,1
+ Footprint: x
+ BuildSounds: placbldg.aud
+ TerrainTypes: Clear,Road
+ RequiresBuildableArea:
+ AreaTypes: building
+ Adjacent: 7
+ SoundOnDamageTransition:
+ DamagedSounds: sandbag2.aud
+ DestroyedSounds: sandbag2.aud
+ Crushable:
+ CrushClasses: wall
+ LineBuild:
+ Range: 8
+ NodeTypes: wall
+ LineBuildNode:
+ Types: wall
+ Targetable:
+ TargetTypes: Ground, DetonateAttack, Wall, NoAutoTarget
+ -GivesExperience:
+ RenderSprites:
+ Palette: effect
+ WithWallSpriteBody:
+ Sellable:
+ SellSounds: cashturn.aud
+ Guardable:
+ FrozenUnderFog:
+ FrozenUnderFogUpdatedByGps:
+ Health:
+ HP: 100
+ EditorTilesetFilter:
+ Categories: Wall
+
+^Gate:
+ Inherits: ^BasicBuilding
+ Valued:
+ Cost: 250
+ Health:
+ HP: 350
+ Armor:
+ Type: Heavy
+ LineBuildNode:
+ Types: concrete, gate
+ -WithSpriteBody:
+ WithGateSpriteBody:
+ Tooltip:
+ Name: Gate
+ Building:
+ BuildSounds: place2.aud
+ TerrainTypes: Clear, Road
+ RequiresBuildableArea:
+ AreaTypes: building
+ Adjacent: 4
+ EditorTilesetFilter:
+ Categories: Wall
+ Gate:
+ OpeningSound: cashturn.aud
+ ClosingSound: cashturn.aud
+ BlocksProjectilesHeight: 0
+
+^TechBuilding:
+ Inherits: ^BasicBuilding
+ Huntable:
+ Health:
+ HP: 400
+ Armor:
+ Type: Wood
+ Tooltip:
+ Name: Civilian Building
+ GenericVisibility: None
+ FrozenUnderFog:
+ EditorTilesetFilter:
+ Categories: Tech building
+
+^FakeBuilding:
+ Inherits: ^Building
+ -GivesBuildableArea:
+ Health:
+ HP: 100
+ Explodes:
+ Weapon: Demolish
+ DamageThreshold: 75
+ RevealsShroud:
+ Range: 4c0
+ WithDecoration@fake:
+ RequiresSelection: true
+ Image: pips
+ Sequence: tag-fake
+ ReferencePoint: Top
+ ZOffset: 256
+ -EmitInfantryOnSell:
+ -MustBeDestroyed:
+ EditorTilesetFilter:
+ Categories: Fake
+
+^InfiltratableFake:
+ Targetable:
+ TargetTypes: Ground, Structure, C4, DetonateAttack, SpyInfiltrate
+ InfiltrateForDecoration:
+ Types: SpyInfiltrate
+ RequiresSelection: true
+ Image: pips
+ Sequence: tag-fake
+ ReferencePoint: Top
+ ZOffset: 256
+
+^AmmoBox:
+ Inherits: ^TechBuilding
+ -Selectable:
+ SelectionDecorations:
+ RenderSelectionBars: False
+ Health:
+ HP: 10
+ Explodes:
+ Weapon: UnitExplode
+ Tooltip:
+ Name: Ammo Box
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, NoAutoTarget
+ Armor:
+ Type: Light
+ EditorTilesetFilter:
+ Categories: Decoration
+ Interactable:
+ Bounds: 24,24
+
+^CivBuilding:
+ Inherits: ^TechBuilding
+ RenderSprites:
+ Palette: terrain
+ EditorTilesetFilter:
+ ExcludeTilesets: INTERIOR
+ Categories: Civilian building
+ SpawnActorOnDeath@1:
+ Actor: c1
+ Probability: 40
+ SpawnActorOnDeath@2:
+ Actor: c4
+ Probability: 20
+ SpawnActorOnDeath@3:
+ Actor: c3
+ Probability: 15
+ Explodes:
+ Weapon: SmallBuildingExplode
+ Explodes@CIVPANIC:
+ Weapon: CivPanicExplosion
+
+^CivField:
+ Inherits: ^CivBuilding
+ -HitShape:
+ -Health:
+ -Explodes:
+ -Explodes@CIVPANIC:
+ -Selectable:
+ -SelectionDecorations:
+ Tooltip:
+ Name: Field
+ -Targetable:
+ -Demolishable:
+ EditorTilesetFilter:
+ ExcludeTilesets: INTERIOR
+ Interactable:
+
+^Tree:
+ Inherits@1: ^SpriteActor
+ Inherits@shape: ^1x1Shape
+ Interactable:
+ Tooltip:
+ Name: Tree
+ ShowOwnerRow: false
+ RenderSprites:
+ Palette: terrain
+ WithSpriteBody:
+ Building:
+ Footprint: x
+ Dimensions: 1,1
+ AppearsOnRadar:
+ RadarColorFromTerrain:
+ Terrain: Tree
+ Health:
+ HP: 500
+ Armor:
+ Type: Wood
+ Targetable:
+ TargetTypes: Trees
+ WithDamageOverlay@SmallBurn:
+ DamageType: Incendiary
+ Image: burn-s
+ MinimumDamageState: Light
+ MaximumDamageState: Medium
+ WithDamageOverlay@MediumBurn:
+ DamageType: Incendiary
+ Image: burn-m
+ MinimumDamageState: Medium
+ MaximumDamageState: Heavy
+ WithDamageOverlay@LargeBurn:
+ DamageType: Incendiary
+ Image: burn-l
+ MinimumDamageState: Heavy
+ MaximumDamageState: Dead
+ HiddenUnderShroud:
+ ScriptTriggers:
+ EditorTilesetFilter:
+ ExcludeTilesets: INTERIOR
+ Categories: Tree
+
+^TreeHusk:
+ Inherits@1: ^SpriteActor
+ Interactable:
+ RenderSprites:
+ Palette: terrain
+ AppearsOnRadar:
+ RadarColorFromTerrain:
+ Terrain: Tree
+ Building:
+ Footprint: x
+ Dimensions: 1,1
+ WithSpriteBody:
+ Tooltip:
+ Name: Tree (Burnt)
+ ShowOwnerRow: false
+ FrozenUnderFog:
+ ScriptTriggers:
+ EditorTilesetFilter:
+ Categories: Tree
+
+^BasicHusk:
+ Inherits@1: ^SpriteActor
+ Interactable:
+ Health:
+ HP: 280
+ Armor:
+ Type: Heavy
+ HiddenUnderFog:
+ Type: CenterPosition
+ ScriptTriggers:
+ WithFacingSpriteBody:
+ HitShape:
+ EditorTilesetFilter:
+ Categories: Husk
+
+^Husk:
+ Inherits: ^BasicHusk
+ Husk:
+ AllowedTerrain: Clear, Rough, Road, Ore, Gems, Beach
+ Burns:
+ Damage: 2
+ Capturable:
+ Types: husk
+ CaptureThreshold: 100
+ ValidStances: Enemy, Neutral, Ally
+ TransformOnCapture:
+ ForceHealthPercentage: 25
+ WithColoredOverlay@IDISABLE:
+ Palette: disabled
+ Targetable:
+ TargetTypes: Ground, Husk, NoAutoTarget
+ RequiresForceFire: true
+ Chronoshiftable:
+ Tooltip:
+ GenericName: Destroyed Vehicle
+ BodyOrientation:
+ UseClassicFacingFudge: True
+
+^PlaneHusk:
+ Inherits: ^BasicHusk
+ WithShadow:
+ Offset: 43, 128, 0
+ ZOffset: -129
+ Tooltip:
+ GenericName: Destroyed Plane
+ Aircraft:
+ FallsToEarth:
+ Spins: False
+ Moves: True
+ Velocity: 86
+ Explosion: UnitExplodePlane
+ EditorTilesetFilter:
+ Categories: Husk
+ RevealOnDeath:
+ Duration: 80
+ Radius: 4c0
+
+^HelicopterHusk:
+ Inherits: ^BasicHusk
+ WithShadow:
+ Offset: 43, 128, 0
+ ZOffset: -129
+ Tooltip:
+ GenericName: Destroyed Helicopter
+ Aircraft:
+ CanHover: True
+ VTOL: true
+ FallsToEarth:
+ Explosion: UnitExplodeHeli
+ BodyOrientation:
+ UseClassicFacingFudge: True
+ RevealOnDeath:
+ Duration: 80
+ Radius: 4c0
+
+^Bridge:
+ Inherits@shape: ^1x1Shape
+ AlwaysVisible:
+ Tooltip:
+ Name: Bridge
+ ShowOwnerRow: false
+ Targetable:
+ TargetTypes: Ground, Water, Bridge
+ RequiresForceFire: true
+ Building:
+ Footprint: ____ ____
+ Dimensions: 4,2
+ Health:
+ HP: 1000
+ Armor:
+ Type: Concrete
+ ScriptTriggers:
+ BodyOrientation:
+ QuantizedFacings: 1
+ Interactable:
+ Bounds: 96,48
+
+^Rock:
+ Inherits@1: ^SpriteActor
+ Interactable:
+ Tooltip:
+ Name: Rock
+ ShowOwnerRow: false
+ RenderSprites:
+ Palette: terrain
+ WithSpriteBody:
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ AppearsOnRadar:
+ RadarColorFromTerrain:
+ Terrain: Tree
+ HiddenUnderShroud:
+ ScriptTriggers:
+ EditorTilesetFilter:
+ RequireTilesets: DESERT
+ Categories: Decoration
+
+^DesertCivBuilding:
+ Inherits: ^CivBuilding
+ RenderSprites:
+ Palette: terrain
+ EditorTilesetFilter:
+ RequireTilesets: DESERT
+
+^Crate:
+ Inherits@1: ^SpriteActor
+ Interactable:
+ HiddenUnderFog:
+ Tooltip:
+ Name: Crate
+ GenericName: Crate
+ ShowOwnerRow: false
+ Crate:
+ Lifetime: 180
+ TerrainTypes: Clear, Rough, Road, Ore, Beach
+ RenderSprites:
+ Palette: effect
+ Image: scrate
+ WithCrateBody:
+ XmasImages: xcratea, xcrateb, xcratec, xcrated
+ LandSequence: land
+ WaterSequence: water
+ Parachutable:
+ FallRate: 26
+ KilledOnImpassableTerrain: false
+ ParachutingCondition: parachute
+ Passenger:
+ WithParachute:
+ Image: parach
+ Sequence: idle
+ OpeningSequence: open
+ ShadowImage: parach-shadow
+ ShadowSequence: idle
+ RequiresCondition: parachute
+ ConditionManager:
+ EditorTilesetFilter:
+ Categories: System
+
+^Mine:
+ Inherits: ^SpriteActor
+ Interactable:
+ WithSpriteBody:
+ HiddenUnderFog:
+ Mine:
+ CrushClasses: mine
+ DetonateClasses: mine
+ AvoidFriendly: false
+ BlockFriendly: false
+ Health:
+ HP: 100
+ NotifyAppliedDamage: false
+ Armor:
+ Type: Light
+ Cloak:
+ CloakSound:
+ UncloakSound:
+ Palette:
+ CloakTypes: Mine
+ InitialDelay: 0
+ Tooltip:
+ Name: Mine
+ Targetable:
+ TargetTypes: Ground, Defense
+ Immobile:
+ OccupiesSpace: true
+ HitShape:
+ EditorTilesetFilter:
+ Categories: System
+
+^DisableOnLowPower:
+ WithColoredOverlay@IDISABLE:
+ RequiresCondition: disabled
+ Palette: disabled
+ GrantConditionOnPowerState@LOWPOWER:
+ Condition: lowpower
+ ValidPowerStates: Low, Critical
+ GrantCondition@IDISABLE:
+ RequiresCondition: lowpower
+ Condition: disabled
+
+^DisableOnLowPowerOrPowerDown:
+ Inherits: ^DisableOnLowPower
+ GrantCondition@IDISABLE:
+ RequiresCondition: lowpower || powerdown
+ Condition: disabled
+ ToggleConditionOnOrder:
+ DisabledSound: EnablePower
+ EnabledSound: DisablePower
+ Condition: powerdown
+ OrderName: PowerDown
+ WithDecoration@POWERDOWN:
+ Image: poweroff
+ Sequence: offline
+ Palette: chrome
+ RequiresCondition: powerdown
+ ReferencePoint: Center
+ PowerMultiplier@POWERDOWN:
+ RequiresCondition: powerdown
+ Modifier: 0
+
+^DisabledByPowerOutage:
+ WithColoredOverlay@IDISABLE:
+ RequiresCondition: disabled
+ Palette: disabled
+ GrantCondition@IDISABLE:
+ RequiresCondition: power-outage
+ Condition: disabled
+ AffectedByPowerOutage:
+ Condition: power-outage
+ InfiltrateForPowerOutage:
+ Types: SpyInfiltrate
+ Power:
+ RequiresCondition: !disabled
diff --git a/mods/ura/rules/disable-player-experience.yaml b/mods/ura/rules/disable-player-experience.yaml
new file mode 100644
index 0000000..c4b16ce
--- /dev/null
+++ b/mods/ura/rules/disable-player-experience.yaml
@@ -0,0 +1,43 @@
+^ExistsInWorld:
+ GivesExperience:
+ PlayerExperienceModifier: 0
+
+^Building:
+ RepairableBuilding:
+ PlayerExperience: 0
+
+E6:
+ Captures:
+ PlayerExperience: 0
+
+SPY:
+ Infiltrates:
+ PlayerExperience: 0
+
+MECH:
+ Captures:
+ PlayerExperience: 0
+
+THF:
+ Infiltrates:
+ PlayerExperience: 0
+
+HIJACKER:
+ Captures:
+ PlayerExperience: 0
+
+SPEN:
+ RepairsUnits:
+ PlayerExperience: 0
+
+SYRD:
+ RepairsUnits:
+ PlayerExperience: 0
+
+FIX:
+ RepairsUnits:
+ PlayerExperience: 0
+
+TRUK:
+ DeliversCash:
+ PlayerExperience: 0
diff --git a/mods/ura/rules/fakes.yaml b/mods/ura/rules/fakes.yaml
new file mode 100644
index 0000000..79ef389
--- /dev/null
+++ b/mods/ura/rules/fakes.yaml
@@ -0,0 +1,406 @@
+FPWR:
+ Inherits: ^FakeBuilding
+ Inherits@infiltrate: ^InfiltratableFake
+ Inherits@shape: ^2x2Shape
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: 0,0,0, 640,-384,0, 640,512,0, -710,-512,0, -710,512,0
+ Buildable:
+ BuildPaletteOrder: 870
+ Queue: Defense
+ Prerequisites: ~structures.france, ~techlevel.infonly
+ Description: Looks like a Power Plant.
+ Icon: fake-icon
+ Tooltip:
+ Name: Fake Power Plant
+ GenericName: Power Plant
+ GenericVisibility: Enemy
+ GenericStancePrefix: False
+ Building:
+ Footprint: xx xx ==
+ Dimensions: 2,3
+ LocalCenterOffset: 0,-512,0
+ Health:
+ HP: 400
+ Armor:
+ Type: Wood
+ WithBuildingBib:
+ RenderSprites:
+ Image: POWR
+ Valued:
+ Cost: 30
+
+TENF:
+ Inherits: ^FakeBuilding
+ Inherits@infiltrate: ^InfiltratableFake
+ Inherits@shape: ^2x2Shape
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: 0,0,0, 630,-512,0, 355,512,0, -281,-512,0, -630,512,0
+ Buildable:
+ BuildPaletteOrder: 871
+ Queue: Defense
+ Prerequisites: ~structures.france, ~techlevel.infonly
+ Description: Looks like a Tent.
+ Icon: fake-icon
+ Tooltip:
+ Name: Fake Allied Barracks
+ GenericName: Allied Barracks
+ GenericVisibility: Enemy
+ GenericStancePrefix: False
+ Building:
+ Footprint: xx xx ==
+ Dimensions: 2,3
+ LocalCenterOffset: 0,-512,0
+ Health:
+ HP: 600
+ Armor:
+ Type: Wood
+ WithBuildingBib:
+ RenderSprites:
+ Image: TENT
+ Valued:
+ Cost: 40
+
+SYRF:
+ Inherits: ^FakeBuilding
+ Inherits@infiltrate: ^InfiltratableFake
+ Buildable:
+ BuildPaletteOrder: 890
+ Queue: Defense
+ Prerequisites: ~structures.france, ~techlevel.medium
+ Description: Looks like a Naval Yard.
+ Icon: fake-icon
+ Tooltip:
+ Name: Fake Naval Yard
+ GenericName: Naval Yard
+ GenericVisibility: Enemy
+ GenericStancePrefix: False
+ Targetable:
+ TargetTypes: Ground, Water, Structure, SpyInfiltrate
+ Building:
+ Footprint: XXX xxx XXX
+ Dimensions: 3,3
+ TerrainTypes: Water
+ RequiresBuildableArea:
+ Adjacent: 8
+ RenderSprites:
+ Image: SYRD
+ Valued:
+ Cost: 100
+ Health:
+ HP: 1000
+ Armor:
+ Type: Light
+ EditorTilesetFilter:
+ ExcludeTilesets: INTERIOR
+ HitShape:
+ TargetableOffsets: 768,0,0, 768,-1024,0, 768,1024,0
+ Type: Rectangle
+ TopLeft: -1536, -1152
+ BottomRight: 1536, 598
+ HitShape@BOTTOM:
+ TargetableOffsets: -768,0,0
+ Type: Rectangle
+ TopLeft: -512, 598
+ BottomRight: 512, 1110
+
+SPEF:
+ Inherits: ^FakeBuilding
+ Inherits@infiltrate: ^InfiltratableFake
+ Targetable:
+ TargetTypes: Ground, Water, Structure, SpyInfiltrate
+ Buildable:
+ BuildPaletteOrder: 890
+ Queue: Defense
+ Prerequisites: ~disabled
+ Description: Looks like a Sub Pen.
+ Icon: fake-icon
+ Tooltip:
+ Name: Fake Sub Pen
+ GenericName: Sub Pen
+ GenericVisibility: Enemy
+ GenericStancePrefix: False
+ Building:
+ Footprint: XXX xxx XXX
+ Dimensions: 3,3
+ TerrainTypes: Water
+ RequiresBuildableArea:
+ Adjacent: 8
+ RenderSprites:
+ Image: SPEN
+ Valued:
+ Cost: 100
+ Health:
+ HP: 1000
+ Armor:
+ Type: Light
+ EditorTilesetFilter:
+ ExcludeTilesets: INTERIOR
+ HitShape:
+ Type: Rectangle
+ TopLeft: -1536, -598
+ BottomRight: 1536, 598
+ HitShape@TOPANDBOTTOM:
+ TargetableOffsets: 811,0,0, -811,0,0
+ Type: Rectangle
+ TopLeft: -555, -1110
+ BottomRight: 555, 1110
+
+WEAF:
+ Inherits: ^FakeBuilding
+ Inherits@infiltrate: ^InfiltratableFake
+ Inherits@shape: ^3x2Shape
+ Buildable:
+ BuildPaletteOrder: 920
+ Prerequisites: ~structures.france, ~techlevel.medium
+ Queue: Defense
+ Description: Looks like a War Factory.
+ Icon: fake-icon
+ Tooltip:
+ Name: Fake War Factory
+ GenericName: War Factory
+ GenericVisibility: Enemy
+ GenericStancePrefix: False
+ Building:
+ Footprint: xxx xxx ===
+ Dimensions: 3,3
+ LocalCenterOffset: 0,-512,0
+ WithBuildingBib:
+ RenderSprites:
+ Image: WEAP
+ WithProductionDoorOverlay:
+ Sequence: build-top
+ Valued:
+ Cost: 200
+ Health:
+ HP: 1500
+ Armor:
+ Type: Wood
+
+DOMF:
+ Inherits: ^FakeBuilding
+ Inherits@IDISABLE: ^DisableOnLowPower
+ Inherits@infiltrate: ^InfiltratableFake
+ Inherits@shape: ^2x2Shape
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: 0,0,0, 630,-384,0, 630,384,0, -700,-512,0, -700,512,0
+ Tooltip:
+ Name: Fake Radar Dome
+ GenericName: Radar Dome
+ GenericVisibility: Enemy
+ GenericStancePrefix: False
+ Buildable:
+ BuildPaletteOrder: 930
+ Queue: Defense
+ Prerequisites: ~structures.france, ~techlevel.medium
+ Description: Looks like a Radar Dome.
+ Icon: fake-icon
+ Building:
+ Footprint: xx xx ==
+ Dimensions: 2,3
+ LocalCenterOffset: 0,-512,0
+ WithBuildingBib:
+ RenderSprites:
+ Image: DOME
+ Valued:
+ Cost: 180
+ Health:
+ HP: 1000
+ Armor:
+ Type: Wood
+
+FIXF:
+ Inherits: ^FakeBuilding
+ Buildable:
+ BuildPaletteOrder: 940
+ Queue: Defense
+ Prerequisites: ~structures.france, ~techlevel.medium
+ Description: Looks like a Service Depot.
+ Icon: fake-icon
+ Tooltip:
+ Name: Fake Service Depot
+ GenericName: Service Depot
+ GenericVisibility: Enemy
+ GenericStancePrefix: False
+ Building:
+ Footprint: _X_ xxx _X_
+ Dimensions: 3,3
+ Health:
+ HP: 800
+ Armor:
+ Type: Wood
+ WithBuildingBib:
+ HasMinibib: Yes
+ RenderSprites:
+ Image: FIX
+ Valued:
+ Cost: 120
+ HitShape:
+ Type: Rectangle
+ TopLeft: -1536, -683
+ BottomRight: 1536, 853
+ HitShape@TOPANDBOTTOM:
+ TargetableOffsets: 840,0,0, -1060,0,0
+ Type: Rectangle
+ TopLeft: -640, -768
+ BottomRight: 640, 1024
+
+FAPW:
+ Inherits: ^FakeBuilding
+ Inherits@infiltrate: ^InfiltratableFake
+ Inherits@shape: ^3x2Shape
+ HitShape:
+ TargetableOffsets: -355,-1024,0
+ Buildable:
+ BuildPaletteOrder: 950
+ Queue: Defense
+ Prerequisites: ~structures.france, ~techlevel.medium
+ Description: Looks like an Advanced Power Plant.
+ Icon: fake-icon
+ Tooltip:
+ Name: Fake Advanced Power Plant
+ GenericName: Advanced Power Plant
+ GenericVisibility: Enemy
+ GenericStancePrefix: False
+ Building:
+ Footprint: xxx Xxx ===
+ Dimensions: 3,3
+ LocalCenterOffset: 0,-512,0
+ Health:
+ HP: 700
+ Armor:
+ Type: Wood
+ WithBuildingBib:
+ RenderSprites:
+ Image: APWR
+ Selectable:
+ Bounds: 72,48
+ DecorationBounds: 72,68,0,-10
+ SelectionDecorations:
+ Valued:
+ Cost: 60
+
+ATEF:
+ Inherits: ^FakeBuilding
+ Inherits@IDISABLE: ^DisableOnLowPower
+ Inherits@shape: ^2x2Shape
+ Tooltip:
+ Name: Fake Allied Tech Center
+ GenericName: Allied Tech Center
+ GenericVisibility: Enemy
+ GenericStancePrefix: False
+ Buildable:
+ BuildPaletteOrder: 970
+ Queue: Defense
+ Prerequisites: ~structures.france, ~techlevel.high
+ Description: Looks like an Allied Tech Center.
+ Icon: fake-icon
+ Building:
+ Footprint: xx xx ==
+ Dimensions: 2,3
+ LocalCenterOffset: 0,-512,0
+ WithBuildingBib:
+ RenderSprites:
+ Image: ATEK
+ Valued:
+ Cost: 150
+ Health:
+ HP: 400
+ Armor:
+ Type: Wood
+
+PDOF:
+ Inherits: ^FakeBuilding
+ Inherits@IDISABLE: ^DisableOnLowPower
+ Inherits@shape: ^2x2Shape
+ Tooltip:
+ Name: Fake Chronosphere
+ GenericName: Chronosphere
+ GenericVisibility: Enemy
+ GenericStancePrefix: False
+ Buildable:
+ BuildPaletteOrder: 980
+ Queue: Defense
+ Prerequisites: ~structures.france, ~techlevel.unrestricted
+ BuildLimit: 1
+ Description: Looks like a Chronosphere.\nMaximum 1 can be built.
+ Icon: fake-icon
+ Building:
+ Footprint: xx xx
+ Dimensions: 2,2
+ RenderSprites:
+ Image: PDOX
+ WithBuildingBib:
+ HasMinibib: Yes
+ Valued:
+ Cost: 150
+ Health:
+ HP: 1000
+ Armor:
+ Type: Wood
+ Explodes:
+ DamageThreshold: 50
+
+MSLF:
+ Inherits: ^FakeBuilding
+ Inherits@IDISABLE: ^DisableOnLowPower
+ Inherits@shape: ^2x1Shape
+ Tooltip:
+ Name: Fake Missile Silo
+ GenericName: Missile Silo
+ GenericVisibility: Enemy
+ GenericStancePrefix: False
+ Buildable:
+ BuildPaletteOrder: 990
+ Queue: Defense
+ Prerequisites: ~structures.france, ~techlevel.unrestricted
+ BuildLimit: 1
+ Description: Looks like a Missile Silo.\nMaximum 1 can be built.
+ Icon: fake-icon
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+ RenderSprites:
+ Image: MSLO
+ Valued:
+ Cost: 250
+ Health:
+ HP: 1000
+ Armor:
+ Type: Wood
+ Explodes:
+ DamageThreshold: 50
+
+FACF:
+ Inherits: ^FakeBuilding
+ Buildable:
+ BuildPaletteOrder: 1000
+ Queue: Defense
+ Prerequisites: ~structures.france, ~techlevel.medium
+ Description: Looks like a Construction Yard.
+ Icon: fake-icon
+ Tooltip:
+ Name: Fake Construction Yard
+ GenericName: Construction Yard
+ GenericVisibility: Enemy
+ GenericStancePrefix: False
+ Building:
+ Footprint: xxX xxx XxX ===
+ Dimensions: 3,4
+ LocalCenterOffset: 0,-512,0
+ WithBuildingBib:
+ RenderSprites:
+ Image: FACT
+ Valued:
+ Cost: 250
+ Health:
+ HP: 1500
+ Armor:
+ Type: Wood
+ HitShape:
+ TargetableOffsets: 1273,939,0, -980,-640,0, -980,640,0
+ Type: Rectangle
+ TopLeft: -1536, -1536
+ BottomRight: 1536, 1536
diff --git a/mods/ura/rules/husks.yaml b/mods/ura/rules/husks.yaml
new file mode 100644
index 0000000..a51aef7
--- /dev/null
+++ b/mods/ura/rules/husks.yaml
@@ -0,0 +1,442 @@
+1TNK.Husk:
+ Inherits: ^Husk
+ Tooltip:
+ Name: Husk (Light Tank)
+ ThrowsParticle@turret:
+ Anim: turret
+ TransformOnCapture:
+ IntoActor: 1tnk
+ RenderSprites:
+ Image: 1tnk.destroyed
+
+2TNK.Husk:
+ Inherits: ^Husk
+ Tooltip:
+ Name: Husk (Medium Tank)
+ ThrowsParticle@turret:
+ Anim: turret
+ TransformOnCapture:
+ IntoActor: 2tnk
+ RenderSprites:
+ Image: 2tnk.destroyed
+
+2TNK.GER.Husk:
+ Inherits: ^Husk
+ Tooltip:
+ Name: Husk (German Medium Tank)
+ ThrowsParticle@turret:
+ Anim: turret
+ TransformOnCapture:
+ IntoActor: 2tnk.ger
+ RenderSprites:
+ Image: 2tnk.destroyed
+
+3TNK.Husk:
+ Inherits: ^Husk
+ Tooltip:
+ Name: Husk (Heavy Tank)
+ ThrowsParticle@turret:
+ Anim: turret
+ TransformOnCapture:
+ IntoActor: 3tnk
+ RenderSprites:
+ Image: 3tnk.destroyed
+
+4TNK.Husk:
+ Inherits: ^Husk
+ Tooltip:
+ Name: Husk (Mammoth Tank)
+ ThrowsParticle@turret:
+ Anim: turret
+ TransformOnCapture:
+ IntoActor: 4tnk
+ RenderSprites:
+ Image: 4tnk.destroyed
+
+4TNK.KV-8.Husk:
+ Inherits: ^Husk
+ Tooltip:
+ Name: Husk (Mammoth KV-8)
+ ThrowsParticle@turret:
+ Anim: turret
+ TransformOnCapture:
+ IntoActor: 4tnk.kv-8
+ RenderSprites:
+ Image: 4tnk.destroyed
+
+HARV.FullHusk:
+ Inherits: ^Husk
+ Tooltip:
+ Name: Husk (Ore Truck)
+ TransformOnCapture:
+ IntoActor: harv
+ RenderSprites:
+ Image: hhusk
+
+HARV.EmptyHusk:
+ Inherits: ^Husk
+ Tooltip:
+ Name: Husk (Ore Truck)
+ TransformOnCapture:
+ IntoActor: harv
+ RenderSprites:
+ Image: hhusk2
+
+MCV.Husk:
+ Inherits: ^Husk
+ Tooltip:
+ Name: Husk (Mobile Construction Vehicle)
+ TransformOnCapture:
+ IntoActor: mcv
+ RenderSprites:
+ Image: mcvhusk
+
+MGG.Husk:
+ Inherits: ^Husk
+ Tooltip:
+ Name: Husk (Mobile Gap Generator)
+ ThrowsParticle@spinner:
+ Anim: spinner-idle
+ Offset: -299,0,171
+ TransformOnCapture:
+ IntoActor: mgg
+ RenderSprites:
+ Image: mgg.destroyed
+
+TRAN.Husk:
+ Inherits: ^HelicopterHusk
+ Tooltip:
+ Name: Chinook
+ Aircraft:
+ TurnSpeed: 4
+ Speed: 149
+ WithIdleOverlay@PRIMARY:
+ Offset: -597,0,341
+ Sequence: rotor
+ WithIdleOverlay@SECONDARY:
+ Offset: 597,0,213
+ Sequence: rotor2
+ RevealsShroud:
+ Range: 8c0
+ Type: GroundPosition
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 6c0
+ Type: GroundPosition
+ RenderSprites:
+ Image: tran
+
+TRAN.Husk1:
+ Inherits: ^Husk
+ Tooltip:
+ Name: Husk (Chinook)
+ RenderSprites:
+ Image: tran1husk
+
+TRAN.Husk2:
+ Inherits: ^Husk
+ Tooltip:
+ Name: Husk (Chinook)
+ RenderSprites:
+ Image: tran2husk
+
+BADR.Husk:
+ Inherits: ^PlaneHusk
+ Tooltip:
+ Name: Badger
+ Aircraft:
+ TurnSpeed: 5
+ Speed: 149
+ SmokeTrailWhenDamaged@0:
+ Offset: -432,560,0
+ Interval: 2
+ MinDamage: Undamaged
+ SmokeTrailWhenDamaged@1:
+ Offset: -432,-560,0
+ Interval: 2
+ MinDamage: Undamaged
+ RenderSprites:
+ Image: badr
+ -RevealOnDeath:
+
+MIG.Husk:
+ Inherits: ^PlaneHusk
+ Tooltip:
+ Name: MiG Attack Plane
+ Contrail@1:
+ Offset: -598,-683,0
+ Contrail@2:
+ Offset: -598,683,0
+ Aircraft:
+ TurnSpeed: 5
+ Speed: 186
+ SmokeTrailWhenDamaged:
+ Offset: -853,0,171
+ Interval: 2
+ MinDamage: Undamaged
+ RevealsShroud:
+ Range: 13c0
+ Type: GroundPosition
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 11c0
+ Type: GroundPosition
+ RenderSprites:
+ Image: mig
+
+YAK.Husk:
+ Inherits: ^PlaneHusk
+ Tooltip:
+ Name: Yak Attack Plane
+ Contrail:
+ Offset: -853,0,0
+ Aircraft:
+ TurnSpeed: 5
+ Speed: 149
+ SmokeTrailWhenDamaged:
+ Offset: -853,0,0
+ Interval: 2
+ MinDamage: Undamaged
+ RevealsShroud:
+ Range: 11c0
+ Type: GroundPosition
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 9c0
+ Type: GroundPosition
+ RenderSprites:
+ Image: yak
+
+HELI.Husk:
+ Inherits: ^HelicopterHusk
+ Tooltip:
+ Name: Longbow
+ Aircraft:
+ TurnSpeed: 4
+ Speed: 149
+ WithIdleOverlay:
+ Offset: 0,0,85
+ Sequence: rotor
+ SmokeTrailWhenDamaged:
+ Offset: -427,0,0
+ MinDamage: Undamaged
+ RevealsShroud:
+ Range: 12c0
+ Type: GroundPosition
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 10c0
+ Type: GroundPosition
+ RenderSprites:
+ Image: heli
+
+HIND.Husk:
+ Inherits: ^HelicopterHusk
+ Tooltip:
+ Name: Hind
+ Aircraft:
+ TurnSpeed: 4
+ Speed: 112
+ WithIdleOverlay:
+ Sequence: rotor
+ SmokeTrailWhenDamaged:
+ Offset: -427,0,0
+ MinDamage: Undamaged
+ RevealsShroud:
+ Range: 10c0
+ Type: GroundPosition
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 8c0
+ Type: GroundPosition
+ RenderSprites:
+ Image: hind
+
+U2.Husk:
+ Inherits: ^PlaneHusk
+ Tooltip:
+ Name: Husk (Spy Plane)
+ Aircraft:
+ TurnSpeed: 7
+ Speed: 373
+ Contrail@1:
+ Offset: -725,683,0
+ Contrail@2:
+ Offset: -725,-683,0
+ SmokeTrailWhenDamaged:
+ Offset: -1c43,0,0
+ Interval: 2
+ MinDamage: Undamaged
+ RenderSprites:
+ Image: u2
+
+T01.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+T02.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+T03.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+T04.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: TEMPERAT, SNOW, INTERIOR
+
+T05.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+T06.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+T07.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+T08.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: x_
+ Dimensions: 2,1
+
+T09.Husk:
+ Inherits: ^TreeHusk
+ EditorTilesetFilter:
+ ExcludeTilesets: TEMPERAT, SNOW, INTERIOR
+
+T10.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: __ xx
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+T11.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: __ xx
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+T12.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+T13.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+T14.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: ___ xx_
+ Dimensions: 3,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+T15.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: ___ xx_
+ Dimensions: 3,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+T16.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+T17.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: __ x_
+ Dimensions: 2,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+TC01.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: ___ xx_
+ Dimensions: 3,2
+ EditorTilesetFilter:
+ ExcludeTilesets: INTERIOR
+
+TC02.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: _x_ xx_
+ Dimensions: 3,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+TC03.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: xx_ xx_
+ Dimensions: 3,2
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+TC04.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: ____ xxx_ x___
+ Dimensions: 4,3
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
+
+TC05.Husk:
+ Inherits: ^TreeHusk
+ Building:
+ Footprint: __x_ xxx_ _xx_
+ Dimensions: 4,3
+ EditorTilesetFilter:
+ ExcludeTilesets: DESERT, INTERIOR
diff --git a/mods/ura/rules/infantry.yaml b/mods/ura/rules/infantry.yaml
new file mode 100644
index 0000000..c5b83ec
--- /dev/null
+++ b/mods/ura/rules/infantry.yaml
@@ -0,0 +1,727 @@
+DOG:
+ Inherits: ^Soldier
+ Buildable:
+ Queue: Infantry
+ BuildAtProductionType: Dog
+ BuildPaletteOrder: 50
+ Prerequisites: ~kenn, ~techlevel.infonly
+ Description: Anti-infantry unit.\nCan detect cloaked units and spies.\n Strong vs Infantry\n Weak vs Vehicles, Aircraft
+ Valued:
+ Cost: 200
+ Tooltip:
+ Name: Attack Dog
+ GenericName: Dog
+ Selectable:
+ Bounds: 12,17,-1,-4
+ DecorationBounds: 12,17,-1,-4
+ SelectionDecorations:
+ Health:
+ HP: 30
+ Mobile:
+ Speed: 99
+ Voice: Move
+ Guard:
+ Voice: Move
+ Passenger:
+ Voice: Move
+ RevealsShroud:
+ Range: 7c256
+ Armament:
+ Weapon: DogJaw
+ AttackLeap:
+ Voice: Attack
+ AttackMove:
+ Voice: Move
+ AutoTarget:
+ InitialStance: AttackAnything
+ AutoTargetPriority@DEFAULT:
+ ValidTargets: Infantry
+ Targetable:
+ TargetTypes: Ground, Infantry
+ WithInfantryBody:
+ DefaultAttackSequence: shoot
+ StandSequences: stand
+ IgnoresDisguise:
+ DetectCloaked:
+ CloakTypes: Cloak, Hijacker
+ Voiced:
+ VoiceSet: DogVoice
+ -TakeCover:
+
+E1:
+ Inherits: ^Soldier
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Infantry
+ BuildAtProductionType: Soldier
+ BuildPaletteOrder: 10
+ Prerequisites: ~barracks, ~techlevel.infonly
+ Description: General-purpose infantry.\n Strong vs Infantry\n Weak vs Vehicles, Aircraft
+ Selectable:
+ Class: E1
+ Valued:
+ Cost: 100
+ Tooltip:
+ Name: Rifle Infantry
+ Health:
+ HP: 50
+ Armament@PRIMARY:
+ Weapon: M1Carbine
+ Armament@GARRISONED:
+ Name: garrisoned
+ Weapon: Vulcan
+ MuzzleSequence: garrison-muzzle
+ AttackFrontal:
+ WithInfantryBody:
+ DefaultAttackSequence: shoot
+ ProducibleWithLevel:
+ Prerequisites: barracks.upgraded
+
+E1R1:
+ Inherits: E1
+ RenderSprites:
+ Image: E1
+ ProducibleWithLevel:
+ Prerequisites: techlevel.infonly
+ InitialLevels: 1
+ -Buildable:
+
+E2:
+ Inherits: ^Soldier
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Infantry
+ BuildAtProductionType: Soldier
+ BuildPaletteOrder: 40
+ Prerequisites: ~barr, ~techlevel.infonly
+ Description: Infantry armed with grenades.\n Strong vs Buildings, Infantry\n Weak vs Vehicles, Aircraft
+ Valued:
+ Cost: 160
+ Tooltip:
+ Name: Grenadier
+ Health:
+ HP: 50
+ Mobile:
+ Speed: 71
+ Armament@PRIMARY:
+ Weapon: Grenade
+ LocalOffset: 0,0,555
+ FireDelay: 15
+ Armament@GARRISONED:
+ Name: garrisoned
+ Weapon: Grenade
+ FireDelay: 15
+ TakeCover:
+ ProneOffset: 256,64,-331
+ AttackFrontal:
+ WithInfantryBody:
+ DefaultAttackSequence: throw
+ Explodes:
+ Weapon: UnitExplodeSmall
+ Chance: 50
+ ProducibleWithLevel:
+ Prerequisites: barracks.upgraded
+
+E3:
+ Inherits: ^Soldier
+ Inherits@AUTOTARGET: ^AutoTargetAll
+ Buildable:
+ Queue: Infantry
+ BuildAtProductionType: Soldier
+ BuildPaletteOrder: 30
+ Prerequisites: ~barracks, ~techlevel.infonly
+ Description: Anti-tank/Anti-aircraft infantry.\n Strong vs Vehicles, Aircraft\n Weak vs Infantry
+ Selectable:
+ Class: E3
+ Valued:
+ Cost: 300
+ Tooltip:
+ Name: Rocket Soldier
+ Health:
+ HP: 45
+ Armament@PRIMARY:
+ Weapon: RedEye
+ LocalOffset: 0,0,555
+ Armament@SECONDARY:
+ Name: secondary
+ Weapon: Dragon
+ LocalOffset: 0,0,555
+ Armament@GARRISONED:
+ Name: garrisoned
+ Weapon: Dragon
+ TakeCover:
+ ProneOffset: 384,0,-395
+ AttackFrontal:
+ WithInfantryBody:
+ DefaultAttackSequence: shoot
+ ProducibleWithLevel:
+ Prerequisites: barracks.upgraded
+ AutoTarget:
+ ScanRadius: 5
+
+E3R1:
+ Inherits: E3
+ RenderSprites:
+ Image: E3
+ ProducibleWithLevel:
+ Prerequisites: techlevel.infonly
+ InitialLevels: 1
+ -Buildable:
+
+E4:
+ Inherits: ^Soldier
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Infantry
+ BuildAtProductionType: Soldier
+ BuildPaletteOrder: 70
+ Prerequisites: ~barr, ftur, ~techlevel.low
+ Description: Advanced anti-structure unit.\n Strong vs Infantry, Buildings\n Weak vs Vehicles, Aircraft
+ Valued:
+ Cost: 300
+ Tooltip:
+ Name: Flamethrower
+ Health:
+ HP: 40
+ Armament@PRIMARY:
+ Weapon: Flamer
+ LocalOffset: 700,0,500
+ FireDelay: 8
+ Armament@GARRISONED:
+ Name: garrisoned
+ Weapon: Flamer
+ TakeCover:
+ ProneOffset: 160,0,-288
+ AttackFrontal:
+ Explodes:
+ Weapon: VisualExplode
+ EmptyWeapon: VisualExplode
+ Chance: 50
+ WithInfantryBody:
+ DefaultAttackSequence: shoot
+ ProducibleWithLevel:
+ Prerequisites: barracks.upgraded
+
+E6:
+ Inherits: ^Soldier
+ Buildable:
+ Queue: Infantry
+ BuildAtProductionType: Soldier
+ BuildPaletteOrder: 60
+ Prerequisites: ~barracks, ~techlevel.infonly
+ Description: Infiltrates and captures\nenemy structures.\n Unarmed
+ Valued:
+ Cost: 500
+ Tooltip:
+ Name: Engineer
+ Passenger:
+ PipType: Yellow
+ EngineerRepair:
+ RepairsBridges:
+ ExternalCaptures:
+ CaptureTypes: building
+ PlayerExperience: 25
+ Voiced:
+ VoiceSet: EngineerVoice
+ Selectable:
+ Priority: 5
+
+SPY:
+ Inherits: ^Soldier
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Infantry
+ BuildAtProductionType: Soldier
+ BuildPaletteOrder: 90
+ Prerequisites: ~!infantry.england, dome, ~tent, ~techlevel.medium
+ Description: Infiltrates enemy structures for intel or\nsabotage. Exact effect depends on the\nbuilding infiltrated.\nLoses disguise when attacking.\nCan detect cloaked units and spies.\n Strong vs Infantry\n Weak vs Vehicles, Aircraft\n Special Ability: Disguised
+ Valued:
+ Cost: 400
+ -Tooltip:
+ DisguiseTooltip:
+ Name: Spy
+ GenericName: Soldier
+ -Guard:
+ Mobile:
+ Voice: Move
+ RevealsShroud:
+ Range: 6c0
+ Passenger:
+ PipType: Yellow
+ Voice: Move
+ Disguise:
+ DisguisedCondition: disguise
+ Infiltrates:
+ Types: SpyInfiltrate
+ PlayerExperience: 50
+ AutoTarget:
+ InitialStance: HoldFire
+ InitialStanceAI: HoldFire
+ ScanRadius: 5
+ -WithInfantryBody:
+ WithDisguisingInfantryBody:
+ DefaultAttackSequence: shoot
+ IdleSequences: idle1,idle2
+ StandSequences: stand,stand2
+ WithDecoration@disguise:
+ Image: pips
+ Sequence: pip-disguise
+ Palette: effect
+ ReferencePoint: Top, Right
+ ZOffset: 256
+ RequiresCondition: disguise
+ IgnoresDisguise:
+ DetectCloaked:
+ CloakTypes: Cloak, Hijacker
+ Armament:
+ Weapon: SilencedPPK
+ AttackFrontal:
+ AttackMove:
+ Voice: Move
+ Voiced:
+ VoiceSet: SpyVoice
+
+SPY.England:
+ Inherits: SPY
+ Buildable:
+ Prerequisites: ~infantry.england, dome, ~tent, ~techlevel.medium
+ Valued:
+ Cost: 400
+ Health:
+ HP: 50
+ ProducibleWithLevel:
+ Prerequisites: techlevel.infonly
+ InitialLevels: 1
+ DisguiseTooltip:
+ Name: British Spy
+ RenderSprites:
+ Image: spy
+
+#Tanya Swim properties and sequences by SirCake
+E7:
+ Inherits: ^Soldier
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Infantry
+ BuildAtProductionType: Soldier
+ BuildPaletteOrder: 120
+ Prerequisites: ~tent, atek, ~techlevel.high
+ BuildLimit: 1
+ Description: Elite commando infantry. Armed with\ndual pistols and C4.\nCan detect cloaked units.\nMaximum 1 can be trained.\n Strong vs Infantry, Buildings\n Weak vs Vehicles, Aircraft\n Special Ability: Destroy Building with C4
+ Valued:
+ Cost: 1200
+ Tooltip:
+ Name: Tanya
+ Health:
+ HP: 100
+ Mobile:
+ Speed: 71
+ Voice: Move
+ TerrainSpeeds:
+ Water: 63
+ GrantConditionOnTerrain:
+ TerrainTypes: Water
+ Condition: swimming
+ Targetable:
+ RequiresCondition: !parachute && !swimming
+ Targetable@SEA:
+ TargetTypes: Ground, Water, Infantry
+ RequiresCondition: !parachute && swimming
+ Guard:
+ Voice: Move
+ RevealsShroud:
+ Range: 7c256
+ Demolition:
+ DetonationDelay: 45
+ Voice: Demolish
+ Passenger:
+ PipType: Red
+ Voice: Move
+ Armament@PRIMARY:
+ Weapon: Colt45
+ Armament@SECONDARY:
+ Weapon: Colt45
+ Armament@GARRISONED:
+ Name: garrisoned
+ Weapon: Colt45
+ MuzzleSequence: garrison-muzzle
+ AttackFrontal:
+ WithInfantryBody:
+ RequiresCondition: !swimming
+ DefaultAttackSequence: shoot
+ StandSequences: stand
+ WithInfantryBody@SEA:
+ RequiresCondition: swimming
+ MoveSequence: swim
+ DefaultAttackSequence: swim_shoot
+ IdleSequences: swim_idle
+ StandSequences: swim_stand
+ WithDeathAnimation:
+ RequiresCondition: !swimming
+ AnnounceOnBuild:
+ AnnounceOnKill:
+ DetectCloaked:
+ CloakTypes: Cloak, Hijacker
+ Voiced:
+ VoiceSet: TanyaVoice
+ ProducibleWithLevel:
+ Prerequisites: barracks.upgraded
+
+MEDI:
+ Inherits: ^Soldier
+ Buildable:
+ Queue: Infantry
+ BuildAtProductionType: Soldier
+ BuildPaletteOrder: 40
+ Prerequisites: ~tent, ~techlevel.infonly
+ Description: Heals nearby infantry.\n Unarmed
+ Valued:
+ Cost: 200
+ Tooltip:
+ Name: Medic
+ Health:
+ HP: 60
+ RevealsShroud:
+ Range: 4c0
+ Passenger:
+ PipType: Yellow
+ Armament:
+ Weapon: Heal
+ Cursor: heal
+ OutsideRangeCursor: heal
+ TargetStances: Ally
+ ForceTargetStances: None
+ AttackFrontal:
+ WithInfantryBody:
+ StandSequences: stand
+ DefaultAttackSequence: heal
+ Voiced:
+ VoiceSet: MedicVoice
+ AutoTarget:
+ AutoTargetPriority@DEFAULT:
+ ValidTargets: Infantry
+
+MECH:
+ Inherits: ^Soldier
+ Buildable:
+ Queue: Infantry
+ BuildAtProductionType: Soldier
+ BuildPaletteOrder: 100
+ Prerequisites: ~tent, fix, ~techlevel.medium
+ Description: Repairs nearby vehicles and restores\nhusks to working condition by capturing them.\n Unarmed
+ Valued:
+ Cost: 500
+ Tooltip:
+ Name: Mechanic
+ Health:
+ HP: 80
+ Mobile:
+ Voice: Move
+ RevealsShroud:
+ Range: 4c0
+ Passenger:
+ PipType: Yellow
+ Voice: Move
+ Armament:
+ Weapon: Repair
+ Cursor: repair
+ OutsideRangeCursor: repair
+ TargetStances: Ally
+ ForceTargetStances: None
+ AttackFrontal:
+ Voice: Move
+ Captures:
+ CaptureTypes: husk
+ PlayerExperience: 25
+ WithInfantryBody:
+ DefaultAttackSequence: repair
+ StandSequences: stand
+ Voiced:
+ VoiceSet: MechanicVoice
+ AutoTarget:
+ AutoTargetPriority@DEFAULT:
+ ValidTargets: Vehicle
+
+EINSTEIN:
+ Inherits: ^CivInfantry
+ -Wanders:
+ Tooltip:
+ Name: Prof. Einstein
+ Mobile:
+ Speed: 71
+ Voiced:
+ VoiceSet: EinsteinVoice
+
+DELPHI:
+ Inherits: ^CivInfantry
+ -Wanders:
+ Tooltip:
+ Name: Agent Delphi
+ Mobile:
+ Speed: 71
+
+CHAN:
+ Inherits: ^CivInfantry
+ Valued:
+ Cost: 500
+ Selectable:
+ Class: CHAN
+ Tooltip:
+ Name: Scientist
+
+GNRL:
+ Inherits@1: ^CivInfantry
+ Inherits@2: ^ArmedCivilian
+ -Wanders:
+ Tooltip:
+ Name: General
+ Selectable:
+ Class: GNRL
+ Mobile:
+ Voice: Move
+ AttackFrontal:
+ Voice: Attack
+ AttackMove:
+ Voice: Move
+ Passenger:
+ Voice: Move
+ Guard:
+ Voice: Move
+ Voiced:
+ VoiceSet: StavrosVoice
+ -ScaredyCat:
+ TakeCover:
+ DamageModifiers:
+ Prone50Percent: 50
+ DamageTriggers: TriggerProne
+ WithInfantryBody:
+ IdleSequences: idle1
+
+THF:
+ Inherits: ^Soldier
+ Valued:
+ Cost: 400
+ Tooltip:
+ Name: Thief
+ RevealsShroud:
+ Range: 5c0
+ Passenger:
+ PipType: Yellow
+ Infiltrates:
+ InfiltrateTypes: Cash
+ PlayerExperience: 50
+ Voiced:
+ VoiceSet: ThiefVoice
+ WithInfantryBody:
+ -IdleSequences:
+ StandSequences: stand
+ Buildable:
+ Description: Steals enemy credits.\n Unarmed
+
+HIJACKER:
+ Inherits: ^Soldier
+ Buildable:
+ Queue: Infantry
+ BuildAtProductionType: Soldier
+ BuildPaletteOrder: 110
+ Prerequisites: ~barr, fix, ~techlevel.medium
+ Description: Hijacks enemy vehicles.\n Unarmed
+ Valued:
+ Cost: 500
+ Tooltip:
+ Name: Hijacker
+ Health:
+ HP: 50
+ RevealsShroud:
+ Range: 6c0
+ Passenger:
+ PipType: Yellow
+ Captures:
+ CaptureTypes: vehicle
+ PlayerExperience: 50
+ Voiced:
+ VoiceSet: ThiefVoice
+ -TakeCover:
+ WithInfantryBody:
+ -IdleSequences:
+ StandSequences: stand
+ Crushable:
+ WarnProbability: 95
+ Cloak:
+ InitialDelay: 250
+ CloakDelay: 120
+ UncloakOn: Attack, Unload, Infiltrate, Demolish, Move
+ CloakTypes: Cloak, Hijacker
+ IsPlayerPalette: true
+ RequiresCondition: !cloak-force-disabled
+ GrantConditionOnDamageState@UNCLOAK:
+ Condition: cloak-force-disabled
+ ValidDamageStates: Critical
+ Mobile:
+ Speed: 85
+
+SHOK:
+ Inherits: ^Soldier
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Infantry
+ BuildAtProductionType: Soldier
+ BuildPaletteOrder: 130
+ Prerequisites: ~barr, stek, tsla, ~infantry.russia, ~techlevel.high
+ Description: Elite infantry with portable Tesla coils.\n Strong vs Infantry, Vehicles\n Weak vs Aircraft
+ Valued:
+ Cost: 300
+ Tooltip:
+ Name: Shock Trooper
+ Health:
+ HP: 50
+ Mobile:
+ Voice: Move
+ RevealsShroud:
+ Range: 6c0
+ Armament@PRIMARY:
+ Weapon: PortaTesla
+ LocalOffset: 427,0,341
+ Armament@GARRISONED:
+ Name: garrisoned
+ Weapon: PortaTesla
+ TakeCover:
+ ProneOffset: 227,0,-245
+ AttackFrontal:
+ Voice: Attack
+ AttackMove:
+ Voice: Move
+ Passenger:
+ Voice: Move
+ Guard:
+ Voice: Move
+ WithInfantryBody:
+ DefaultAttackSequence: shoot
+ Voiced:
+ VoiceSet: ShokVoice
+ ProducibleWithLevel:
+ Prerequisites: barracks.upgraded
+
+SNIPER:
+ Inherits: ^Soldier
+ Valued:
+ Cost: 700
+ Tooltip:
+ Name: Sniper
+ Buildable:
+ Queue: Infantry
+ BuildAtProductionType: Soldier
+ BuildPaletteOrder: 80
+ Prerequisites: ~disabled
+ Description: Elite sniper infantry unit.\nCan detect cloaked units.\n Strong vs Infantry\n Weak vs Vehicles, Aircraft
+ Health:
+ HP: 80
+ Mobile:
+ Speed: 63
+ Passenger:
+ PipType: Red
+ RevealsShroud:
+ Range: 8c0
+ AutoTarget:
+ InitialStance: HoldFire
+ InitialStanceAI: ReturnFire
+ AutoTargetPriority@DEFAULT:
+ ValidTargets: Infantry
+ Armament@PRIMARY:
+ Weapon: Sniper
+ Armament@GARRISONED:
+ Name: garrisoned
+ Weapon: Sniper
+ MuzzleSequence: garrison-muzzle
+ AttackFrontal:
+ WithInfantryBody:
+ DefaultAttackSequence: shoot
+ Cloak:
+ InitialDelay: 250
+ CloakDelay: 150
+ CloakSound:
+ UncloakSound:
+ UncloakOn: Attack, Unload, Infiltrate, Demolish, Move
+ IsPlayerPalette: true
+ RequiresCondition: !cloak-force-disabled
+ GrantConditionOnDamageState@UNCLOAK:
+ Condition: cloak-force-disabled
+ ValidDamageStates: Critical
+ DetectCloaked:
+ CloakTypes: Cloak, Hijacker
+ Range: 6c0
+ -MustBeDestroyed:
+ ProducibleWithLevel:
+ Prerequisites: techlevel.infonly
+ InitialLevels: 1
+
+Zombie:
+ Inherits: ^Soldier
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Valued:
+ Cost: 100
+ Tooltip:
+ Name: Zombie
+ Buildable:
+ Queue: Infantry
+ BuildAtProductionType: Soldier
+ BuildPaletteOrder: 200
+ Prerequisites: ~barracks, ~bio
+ Description: Slow undead. Attacks in close combat.
+ Health:
+ HP: 250
+ Mobile:
+ Speed: 42
+ AutoTarget:
+ ScanRadius: 5
+ AttackFrontal:
+ WithInfantryBody:
+ DefaultAttackSequence: bite
+ IdleSequences: idle1
+ Armament:
+ Weapon: claw
+ Voiced:
+ VoiceSet: AntVoice
+ -TakeCover:
+
+Ant:
+ Inherits: ^Infantry
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Valued:
+ Cost: 300
+ Tooltip:
+ Name: Giant Ant
+ GenericName: Ant
+ Buildable:
+ Queue: Infantry
+ BuildAtProductionType: Soldier
+ BuildPaletteOrder: 1954
+ Prerequisites: ~barracks, ~bio
+ Description: Irradiated insect that grew oversize.
+ Selectable:
+ Bounds: 24,24,0,-5
+ DecorationBounds: 30,30,0,-2
+ SelectionDecorations:
+ Health:
+ HP: 750
+ Mobile:
+ Speed: 99
+ TurnSpeed: 12
+ SharesCell: no
+ -Crushable:
+ AutoTarget:
+ ScanRadius: 5
+ AttackFrontal:
+ WithInfantryBody:
+ DefaultAttackSequence: bite
+ Armament:
+ Weapon: mandible
+ Targetable:
+ TargetTypes: Ground, Infantry, Ant
+ WithDeathAnimation:
+ UseDeathTypeSuffix: false
+ Voiced:
+ VoiceSet: AntVoice
+ HitShape:
+ Type: Circle
+ Radius: 469
diff --git a/mods/ura/rules/misc.yaml b/mods/ura/rules/misc.yaml
new file mode 100644
index 0000000..e4b2804
--- /dev/null
+++ b/mods/ura/rules/misc.yaml
@@ -0,0 +1,414 @@
+MINV:
+ Inherits: ^Mine
+ RenderSprites:
+ Image: minv
+ FactionImages:
+ soviet: minp
+ russia: minp
+ ukraine: minp
+ Explodes:
+ Weapon: ATMine
+
+# Only kept for backwards-compatibility with existing and imported maps, use MINV instead
+MINP:
+ Inherits: MINV
+ Explodes:
+ Weapon: APMine
+
+CRATE:
+ Inherits: ^Crate
+ GiveCashCrateAction:
+ Amount: 1000
+ SelectionShares: 50
+ UseCashTick: true
+ LevelUpCrateAction:
+ SelectionShares: 40
+ ExplodeCrateAction@fire:
+ Weapon: CrateNapalm
+ SelectionShares: 5
+ ExplodeCrateAction@boom:
+ Weapon: CrateExplosion
+ SelectionShares: 5
+ HideMapCrateAction:
+ SelectionShares: 5
+ Effect: hide-map
+ HealUnitsCrateAction:
+ Notification: heal2.aud
+ SelectionShares: 2
+ Effect: heal
+ RevealMapCrateAction:
+ SelectionShares: 1
+ Effect: reveal-map
+ DuplicateUnitCrateAction:
+ SelectionShares: 10
+ MaxAmount: 5
+ MinAmount: 1
+ MaxDuplicateValue: 1500
+ GiveMcvCrateAction:
+ SelectionShares: 0
+ NoBaseSelectionShares: 100
+ Units: mcv
+ GiveUnitCrateAction@jeep:
+ SelectionShares: 6
+ Units: jeep
+ ValidFactions: allies, england, france, germany
+ Prerequisites: techlevel.low
+ GiveUnitCrateAction@1tnk:
+ SelectionShares: 6
+ Units: 1tnk
+ ValidFactions: allies, england, france, germany
+ Prerequisites: techlevel.low
+ GiveUnitCrateAction@apc:
+ SelectionShares: 6
+ Units: apc
+ ValidFactions: soviet, russia, ukraine
+ Prerequisites: techlevel.low
+ GiveUnitCrateAction@ftrk:
+ SelectionShares: 6
+ Units: ftrk
+ ValidFactions: soviet, russia, ukraine
+ Prerequisites: techlevel.low
+ GiveUnitCrateAction@arty:
+ SelectionShares: 5
+ Units: arty
+ ValidFactions: allies, england, france, germany
+ Prerequisites: techlevel.medium, dome
+ GiveUnitCrateAction@v2rl:
+ SelectionShares: 5
+ Units: v2rl
+ ValidFactions: soviet, russia, ukraine
+ Prerequisites: techlevel.medium, dome
+ GiveUnitCrateAction@2tnk:
+ SelectionShares: 4
+ Units: 2tnk
+ ValidFactions: allies, england, france, germany
+ Prerequisites: techlevel.medium, fix
+ GiveUnitCrateAction@3tnk:
+ SelectionShares: 4
+ Units: 3tnk
+ ValidFactions: soviet, russia, ukraine
+ Prerequisites: techlevel.medium, fix
+ GiveUnitCrateAction@squadlight:
+ SelectionShares: 10
+ Units: e1,e1,e1,e3,e3
+ ValidFactions: allies, england, france, germany, soviet, russia, ukraine
+ GiveUnitCrateAction@squadheavyallies:
+ SelectionShares: 7
+ Units: e1,e1,e1,e1,e3,e3,e3,e6,medi
+ ValidFactions: allies, england, france, germany
+ TimeDelay: 4500
+ GiveUnitCrateAction@squadheavysoviet:
+ SelectionShares: 7
+ Units: e1,e1,e4,e4,e3,e3,e3,e6
+ ValidFactions: soviet, russia, ukraine
+ TimeDelay: 4500
+ GrantExternalConditionCrateAction@invuln:
+ SelectionShares: 5
+ Effect: invuln
+ Notification: ironcur9.aud
+ Condition: invulnerability
+ Duration: 600
+
+MONEYCRATE:
+ Inherits: ^Crate
+ Tooltip:
+ Name: Money Crate
+ GiveCashCrateAction:
+ Amount: 500
+ SelectionShares: 1
+ UseCashTick: true
+ RenderSprites:
+ Image: wcrate
+
+HEALCRATE:
+ Inherits: ^Crate
+ Tooltip:
+ Name: Heal Crate
+ HealUnitsCrateAction:
+ Notification: heal2.aud
+ SelectionShares: 1
+ Effect: heal
+
+WCRATE:
+ Inherits: ^Crate
+ Tooltip:
+ Name: Wooden Crate
+ RenderSprites:
+ Image: wcrate
+
+SCRATE:
+ Inherits: ^Crate
+ Tooltip:
+ Name: Steel Crate
+
+CAMERA:
+ Interactable:
+ EditorOnlyTooltip:
+ Name: (reveals area to owner)
+ AlwaysVisible:
+ Immobile:
+ OccupiesSpace: false
+ RevealsShroud:
+ Range: 10c0
+ Type: CenterPosition
+ BodyOrientation:
+ QuantizedFacings: 1
+ WithSpriteBody:
+ RenderSpritesEditorOnly:
+ Image: camera
+ EditorTilesetFilter:
+ Categories: System
+
+camera.paradrop:
+ Inherits: CAMERA
+ EditorOnlyTooltip:
+ Name: (support power proxy camera)
+ RevealsShroud:
+ Range: 6c0
+
+camera.spyplane:
+ Inherits: CAMERA
+ EditorOnlyTooltip:
+ Name: (support power proxy camera)
+ DetectCloaked:
+ Range: 12c0
+ CloakTypes: Cloak, Hijacker
+
+SONAR:
+ Inherits: camera.spyplane
+ EditorOnlyTooltip:
+ Name: (support power proxy camera)
+ -RevealsShroud:
+ DetectCloaked:
+ CloakTypes: Underwater
+
+FLARE:
+ Immobile:
+ OccupiesSpace: false
+ RevealsShroud:
+ Range: 3c0
+ Type: CenterPosition
+ RenderSprites:
+ Image: smokland
+ WithSpriteBody:
+ StartSequence: open
+ BodyOrientation:
+ QuantizedFacings: 1
+ HiddenUnderFog:
+ Type: CenterPosition
+ Interactable:
+ Tooltip:
+ Name: Flare
+ ShowOwnerRow: false
+ EditorTilesetFilter:
+ Categories: Decoration
+
+MINE:
+ Inherits@1: ^SpriteActor
+ Interactable:
+ HiddenUnderShroud:
+ Tooltip:
+ Name: Ore Mine
+ RenderSprites:
+ Palette: terrain
+ WithSpriteBody:
+ Building:
+ Footprint: x
+ Dimensions: 1,1
+ AppearsOnRadar:
+ RadarColorFromTerrain:
+ Terrain: Ore
+ SeedsResource:
+ EditorTilesetFilter:
+ Categories: Resource spawn
+
+GMINE:
+ Inherits@1: ^SpriteActor
+ Interactable:
+ HiddenUnderShroud:
+ Tooltip:
+ Name: Gem Mine
+ RenderSprites:
+ Palette: player
+ WithSpriteBody:
+ Building:
+ Footprint: x
+ Dimensions: 1,1
+ AppearsOnRadar:
+ RadarColorFromTerrain:
+ Terrain: Gems
+ SeedsResource:
+ ResourceType: Gems
+ EditorTilesetFilter:
+ Categories: Resource spawn
+
+RAILMINE:
+ Inherits@1: ^SpriteActor
+ Interactable:
+ HiddenUnderShroud:
+ Tooltip:
+ Name: Abandoned Mine
+ RenderSprites:
+ Palette: player
+ WithSpriteBody:
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+ EditorTilesetFilter:
+ ExcludeTilesets: INTERIOR
+ Categories: Civilian building
+
+QUEE:
+ Inherits@1: ^SpriteActor
+ Inherits@shape: ^2x1Shape
+ Interactable:
+ HiddenUnderShroud:
+ Tooltip:
+ Name: Queen Ant
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+ WithSpriteBody:
+ AppearsOnRadar:
+ EditorTilesetFilter:
+ RequireTilesets: INTERIOR
+ Categories: Critter
+
+LAR1:
+ Inherits@1: ^SpriteActor
+ Inherits@shape: ^1x1Shape
+ Interactable:
+ HiddenUnderShroud:
+ Tooltip:
+ Name: Ant Larva
+ Building:
+ Footprint: x
+ Dimensions: 1,1
+ RenderSprites:
+ Palette: terrain
+ WithSpriteBody:
+ AppearsOnRadar:
+ EditorTilesetFilter:
+ RequireTilesets: INTERIOR
+ Categories: Critter
+
+LAR2:
+ Inherits@1: LAR1
+ Tooltip:
+ Name: Ant Larvae
+
+powerproxy.parabombs:
+ AlwaysVisible:
+ AirstrikePower:
+ Icon: parabombs
+ Description: Parabombs (Single Use)
+ LongDesc: A Badger drops a load of parachuted bombs on your target.
+ OneShot: true
+ AllowMultiple: true
+ UnitType: badr.bomber
+ SelectTargetSpeechNotification: SelectTarget
+ QuantizedFacings: 8
+ DisplayBeacon: True
+ BeaconPoster: pbmbicon
+ CameraActor: camera
+ CameraRemoveDelay: 150
+ ArrowSequence: arrow
+ ClockSequence: clock
+ CircleSequence: circles
+
+powerproxy.sonarpulse:
+ AlwaysVisible:
+ SpawnActorPower:
+ Icon: sonar
+ Description: Sonar Pulse
+ LongDesc: Reveals all submarines in the vicinity for a \nshort time.
+ ChargeInterval: 750
+ EndChargeSpeechNotification: SonarPulseReady
+ SelectTargetSpeechNotification: SelectTarget
+ Actor: sonar
+ LifeTime: 250
+ DeploySound: sonpulse.aud
+ EffectImage: moveflsh
+ EffectPalette: moveflash
+
+powerproxy.paratroopers:
+ AlwaysVisible:
+ ParatroopersPower:
+ Icon: paratroopers
+ Description: Paratroopers
+ LongDesc: A Badger drops a squad of infantry\nanywhere on the map.
+ DropItems: E1,E1,E1,E3,E3
+ SelectTargetSpeechNotification: SelectTarget
+ AllowImpassableCells: false
+ QuantizedFacings: 8
+ CameraActor: camera.paradrop
+ DisplayBeacon: true
+ BeaconPoster: pinficon
+ ArrowSequence: arrow
+ ClockSequence: clock
+ CircleSequence: circles
+
+barracks.upgraded:
+ AlwaysVisible:
+ ProvidesPrerequisite:
+
+vehicles.upgraded:
+ AlwaysVisible:
+ ProvidesPrerequisite:
+
+aircraft.upgraded:
+ AlwaysVisible:
+ ProvidesPrerequisite:
+
+mpspawn:
+ Interactable:
+ EditorOnlyTooltip:
+ Name: (multiplayer player starting point)
+ AlwaysVisible:
+ Immobile:
+ OccupiesSpace: false
+ WithSpriteBody:
+ RenderSpritesEditorOnly:
+ BodyOrientation:
+ QuantizedFacings: 1
+ EditorTilesetFilter:
+ Categories: System
+
+waypoint:
+ Interactable:
+ EditorOnlyTooltip:
+ Name: (waypoint for scripted behavior)
+ AlwaysVisible:
+ Immobile:
+ OccupiesSpace: false
+ WithSpriteBody:
+ RenderSpritesEditorOnly:
+ BodyOrientation:
+ QuantizedFacings: 1
+ EditorTilesetFilter:
+ Categories: System
+
+^fact.colorpicker:
+ Inherits: FACT
+ RenderSprites:
+ Image: fact
+ Palette: colorpicker
+
+CTFLAG:
+ Inherits: ^TechBuilding
+ Building:
+ Footprint: x
+ Dimensions: 1,1
+ Tooltip:
+ Name: Flag
+ WithBuildingBib:
+ HasMinibib: Yes
+ -HitShape:
+ -Health:
+ -Explodes:
+ -Selectable:
+ -SelectionDecorations:
+ -Targetable:
+ EditorTilesetFilter:
+ Categories: Decoration
+ Interactable:
diff --git a/mods/ura/rules/palettes.yaml b/mods/ura/rules/palettes.yaml
new file mode 100644
index 0000000..336aa3b
--- /dev/null
+++ b/mods/ura/rules/palettes.yaml
@@ -0,0 +1,93 @@
+^Palettes:
+ PaletteFromFile@player:
+ Name: player
+ Filename: temperat.pal
+ ShadowIndex: 4
+ PaletteFromCurrentTileset:
+ Name: terrain
+ ShadowIndex: 3,4
+ PaletteFromFile@chrome:
+ Name: chrome
+ Filename: temperat.pal
+ ShadowIndex: 3
+ AllowModifiers: false
+ PaletteFromFile@effect:
+ Name: effect
+ Filename: temperat.pal
+ ShadowIndex: 4
+ PaletteFromFile@colorpicker:
+ Name: colorpicker
+ Filename: temperat.pal
+ ShadowIndex: 4
+ AllowModifiers: false
+ PaletteFromRGBA@shadow:
+ Name: shadow
+ R: 0
+ G: 0
+ B: 0
+ A: 140
+ PaletteFromRGBA@submerged:
+ Name: submerged
+ R: 0
+ G: 0
+ B: 0
+ A: 140
+ PaletteFromRGBA@highlight:
+ Name: highlight
+ R: 255
+ G: 255
+ B: 255
+ A: 128
+ PaletteFromRGBA@moveflash:
+ Name: moveflash
+ R: 255
+ G: 255
+ B: 255
+ A: 64
+ PaletteFromRGBA@invuln:
+ Name: invuln
+ R: 128
+ G: 0
+ B: 0
+ A: 128
+ PaletteFromRGBA@invuln2:
+ Name: invuln2
+ R: 0
+ G: 0
+ B: 128
+ A: 128
+ PaletteFromRGBA@disabled:
+ Name: disabled
+ R: 0
+ G: 0
+ B: 0
+ A: 180
+ ShroudPalette@shroud:
+ Name: shroud
+ Type: Shroud
+ ShroudPalette@fog:
+ Name: fog
+ Fog: true
+ PlayerColorPalette:
+ BasePalette: player
+ RemapIndex: 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95
+ PaletteFromPlayerPaletteWithAlpha@cloak:
+ BaseName: cloak
+ BasePalette: player
+ Alpha: 0.55
+ PlayerHighlightPalette:
+ MenuPaletteEffect:
+ RotationPaletteEffect@defaultwater:
+ Palettes: terrain
+ ExcludeTilesets: DESERT
+ RotationPaletteEffect@actorswater:
+ Palettes: player, effect
+ RotationPaletteEffect@desertwater:
+ Palettes: terrain
+ Tilesets: DESERT
+ RotationBase: 32
+ LightPaletteRotator:
+ ExcludePalettes: terrain, effect
+ ChronoshiftPaletteEffect:
+ FlashPaletteEffect@NUKE:
+ Type: Nuke
diff --git a/mods/ura/rules/player.yaml b/mods/ura/rules/player.yaml
new file mode 100644
index 0000000..799e1ce
--- /dev/null
+++ b/mods/ura/rules/player.yaml
@@ -0,0 +1,94 @@
+Player:
+ AlwaysVisible:
+ TechTree:
+ ClassicProductionQueue@Building:
+ Type: Building
+ LowPowerSlowdown: 3
+ QueuedAudio: Building
+ ReadyAudio: ConstructionComplete
+ SpeedUp: True
+ ClassicProductionQueue@Defense:
+ Type: Defense
+ LowPowerSlowdown: 3
+ QueuedAudio: Building
+ ReadyAudio: ConstructionComplete
+ SpeedUp: True
+ ClassicProductionQueue@Vehicle:
+ Type: Vehicle
+ LowPowerSlowdown: 3
+ QueuedAudio: Building
+ SpeedUp: True
+ BuildTimeSpeedReduction: 100, 75, 60, 50
+ ClassicProductionQueue@Infantry:
+ Type: Infantry
+ LowPowerSlowdown: 3
+ SpeedUp: True
+ ClassicProductionQueue@Ship:
+ Type: Ship
+ LowPowerSlowdown: 3
+ QueuedAudio: Building
+ SpeedUp: True
+ ClassicProductionQueue@Aircraft:
+ Type: Aircraft
+ LowPowerSlowdown: 3
+ QueuedAudio: Building
+ SpeedUp: True
+ PlaceBuilding:
+ SupportPowerManager:
+ ScriptTriggers:
+ MissionObjectives:
+ ConquestVictoryConditions:
+ PowerManager:
+ AllyRepair:
+ PlayerResources:
+ InsufficientFundsNotification: InsufficientFunds
+ DeveloperMode:
+ CheckboxDisplayOrder: 8
+ GpsWatcher:
+ Shroud:
+ FogCheckboxDisplayOrder: 3
+ LobbyPrerequisiteCheckbox@GLOBALBOUNTY:
+ ID: bounty
+ Label: Kill Bounties
+ Description: Players receive cash bonuses when killing enemy units
+ Enabled: True
+ DisplayOrder: 6
+ Prerequisites: global-bounty
+ LobbyPrerequisiteCheckbox@GLOBALFACTUNDEPLOY:
+ ID: factundeploy
+ Label: Redeployable MCVs
+ Description: Allow undeploying Construction Yard.
+ Enabled: True
+ DisplayOrder: 7
+ Prerequisites: global-factundeploy
+ FrozenActorLayer:
+ BaseAttackNotifier:
+ PlayerStatistics:
+ PlaceBeacon:
+ ProvidesTechPrerequisite@infonly:
+ Name: Infantry Only
+ Prerequisites: techlevel.infonly
+ Id: infantryonly
+ ProvidesTechPrerequisite@low:
+ Name: Low
+ Prerequisites: techlevel.infonly, techlevel.low
+ Id: low
+ ProvidesTechPrerequisite@medium:
+ Name: Medium
+ Prerequisites: techlevel.infonly, techlevel.low, techlevel.medium
+ Id: medium
+ ProvidesTechPrerequisite@high:
+ Name: No Superweapons
+ Prerequisites: techlevel.infonly, techlevel.low, techlevel.medium, techlevel.high
+ Id: nosuperweapons
+ ProvidesTechPrerequisite@unrestricted:
+ Name: Unrestricted
+ Prerequisites: techlevel.infonly, techlevel.low, techlevel.medium, techlevel.high, techlevel.unrestricted
+ Id: unrestricted
+ GrantConditionOnPrerequisiteManager:
+ EnemyWatcher:
+ VeteranProductionIconOverlay:
+ Image: iconchevrons
+ Sequence: veteran
+ ResourceStorageWarning:
+ PlayerExperience:
diff --git a/mods/ura/rules/ships.yaml b/mods/ura/rules/ships.yaml
new file mode 100644
index 0000000..e057199
--- /dev/null
+++ b/mods/ura/rules/ships.yaml
@@ -0,0 +1,330 @@
+SS:
+ Inherits: ^Ship
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Ship
+ BuildAtProductionType: Submarine
+ BuildPaletteOrder: 30
+ Prerequisites: ~spen, ~techlevel.low
+ Description: Submerged anti-ship unit\narmed with torpedoes.\nCan detect other submarines.\n Strong vs Naval units\n Weak vs Ground units, Aircraft\n Special Ability: Submerge
+ Valued:
+ Cost: 950
+ Tooltip:
+ Name: Submarine
+ Health:
+ HP: 250
+ Armor:
+ Type: Light
+ Mobile:
+ TurnSpeed: 4
+ Speed: 71
+ RevealsShroud:
+ Range: 10c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ Targetable:
+ TargetTypes: Ground, Water, Ship, Submarine, Repair
+ RequiresCondition: !underwater
+ Targetable@UNDERWATER:
+ TargetTypes: Underwater, Submarine, Repair
+ RequiresCondition: underwater
+ Cloak:
+ CloakTypes: Underwater
+ InitialDelay: 0
+ CloakDelay: 50
+ CloakSound: subshow1.aud
+ UncloakSound: subshow1.aud
+ CloakedCondition: underwater
+ Palette: submerged
+ RequiresCondition: !cloak-force-disabled
+ GrantConditionOnDamageState@UNCLOAK:
+ Condition: cloak-force-disabled
+ ValidDamageStates: Critical
+ Armament:
+ Weapon: TorpTube
+ LocalOffset: 0,-171,0, 0,171,0
+ FireDelay: 2
+ AttackFrontal:
+ SelectionDecorations:
+ AutoTarget:
+ InitialStance: HoldFire
+ InitialStanceAI: ReturnFire
+ AutoTargetPriority@DEFAULT:
+ ValidTargets: Water, Underwater
+ AutoTargetPriority@ATTACKANYTHING:
+ ValidTargets: Water, Underwater
+ DetectCloaked:
+ CloakTypes: Underwater
+ Range: 4c0
+ RenderDetectionCircle:
+ Explodes:
+ Weapon: UnitExplodeSubmarine
+ EmptyWeapon: UnitExplodeSubmarine
+ -MustBeDestroyed:
+ Selectable:
+ DecorationBounds: 38,38
+
+MSUB:
+ Inherits: ^Ship
+ Inherits@AUTOTARGET: ^AutoTargetAll
+ Buildable:
+ Queue: Ship
+ BuildAtProductionType: Submarine
+ BuildPaletteOrder: 60
+ Prerequisites: ~spen, stek, ~techlevel.high
+ BuildDuration: 1750
+ Description: Submerged anti-ground siege unit\nwith anti-air capabilities.\nCan detect other submarines.\n Strong vs Buildings, Ground units, Aircraft\n Weak vs Naval units\n Special Ability: Submerge
+ Valued:
+ Cost: 2000
+ Tooltip:
+ Name: Missile Submarine
+ Health:
+ HP: 400
+ Armor:
+ Type: Light
+ Mobile:
+ TurnSpeed: 3
+ Speed: 42
+ RevealsShroud:
+ Range: 10c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ Targetable:
+ TargetTypes: Ground, Water, Ship, Submarine, Repair
+ RequiresCondition: !underwater
+ Targetable@UNDERWATER:
+ TargetTypes: Underwater, Submarine, Repair
+ RequiresCondition: underwater
+ Cloak:
+ CloakTypes: Underwater
+ InitialDelay: 0
+ CloakDelay: 100
+ CloakSound: subshow1.aud
+ UncloakSound: subshow1.aud
+ CloakedCondition: underwater
+ Palette: submerged
+ RequiresCondition: !cloak-force-disabled
+ GrantConditionOnDamageState@UNCLOAK:
+ Condition: cloak-force-disabled
+ ValidDamageStates: Critical
+ Armament@PRIMARY:
+ Weapon: SubMissile
+ LocalOffset: 0,-171,0, 0,171,0
+ FireDelay: 2
+ Armament@SECONDARY:
+ Weapon: SubMissileAA
+ LocalOffset: 0,-171,0, 0,171,0
+ FireDelay: 2
+ AttackFrontal:
+ SelectionDecorations:
+ AutoTarget:
+ InitialStance: HoldFire
+ InitialStanceAI: ReturnFire
+ DetectCloaked:
+ CloakTypes: Underwater
+ Range: 4c0
+ RenderDetectionCircle:
+ Explodes:
+ Weapon: UnitExplodeSubmarine
+ EmptyWeapon: UnitExplodeSubmarine
+ -MustBeDestroyed:
+ Selectable:
+ DecorationBounds: 44,44
+
+DD:
+ Inherits: ^Ship
+ Inherits@AUTOTARGET: ^AutoTargetAll
+ Buildable:
+ Queue: Ship
+ BuildAtProductionType: Boat
+ BuildPaletteOrder: 40
+ Prerequisites: ~syrd, dome, ~techlevel.medium
+ Description: Fast multi-role ship.\nCan detect submarines.\n Strong vs Naval units, Vehicles, Aircraft\n Weak vs Infantry
+ Valued:
+ Cost: 1000
+ Tooltip:
+ Name: Destroyer
+ Health:
+ HP: 400
+ Armor:
+ Type: Heavy
+ Mobile:
+ TurnSpeed: 7
+ Speed: 85
+ RevealsShroud:
+ Range: 10c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ Turreted:
+ TurnSpeed: 7
+ Offset: 341,0,128
+ Armament@PRIMARY:
+ Weapon: Stinger
+ LocalOffset: 0,-100,0, 0,100,0
+ LocalYaw: 64, -64
+ Armament@SECONDARY:
+ Weapon: DepthCharge
+ LocalOffset: 0,-100,0, 0,100,0
+ LocalYaw: 80, -80
+ Armament@TERTIARY:
+ Weapon: StingerAA
+ LocalOffset: 0,-100,0, 0,100,0
+ LocalYaw: 64, -64
+ AttackTurreted:
+ SelectionDecorations:
+ WithSpriteTurret:
+ DetectCloaked:
+ CloakTypes: Underwater
+ Range: 4c0
+ RenderDetectionCircle:
+ Selectable:
+ DecorationBounds: 38,38
+
+CA:
+ Inherits: ^Ship
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Ship
+ BuildAtProductionType: Boat
+ BuildPaletteOrder: 50
+ Prerequisites: ~syrd, atek, ~techlevel.high
+ BuildDuration: 2000
+ Description: Very slow long-range ship.\n Strong vs Buildings, Ground units\n Weak vs Naval units, Aircraft
+ Valued:
+ Cost: 2400
+ Tooltip:
+ Name: Cruiser
+ Health:
+ HP: 800
+ Armor:
+ Type: Heavy
+ Mobile:
+ TurnSpeed: 3
+ Speed: 42
+ RevealsShroud:
+ Range: 9c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ Turreted@PRIMARY:
+ Turret: primary
+ Offset: -864,0,128
+ TurnSpeed: 3
+ Turreted@SECONDARY:
+ Turret: secondary
+ Offset: 768,0,128
+ TurnSpeed: 3
+ Armament@PRIMARY:
+ Turret: primary
+ Weapon: 8Inch
+ LocalOffset: 480,-100,40, 480,100,40
+ Recoil: 171
+ RecoilRecovery: 34
+ MuzzleSequence: muzzle
+ Armament@SECONDARY:
+ Name: secondary
+ Turret: secondary
+ Weapon: 8Inch
+ LocalOffset: 480,-100,40, 480,100,40
+ Recoil: 171
+ RecoilRecovery: 34
+ MuzzleSequence: muzzle
+ AttackTurreted:
+ Turrets: primary, secondary
+ WithMuzzleOverlay:
+ SelectionDecorations:
+ WithSpriteTurret@PRIMARY:
+ Turret: primary
+ WithSpriteTurret@SECONDARY:
+ Turret: secondary
+ Selectable:
+ DecorationBounds: 44,44
+
+LST:
+ Inherits: ^Ship
+ Buildable:
+ Queue: Ship
+ BuildPaletteOrder: 10
+ Prerequisites: ~techlevel.low
+ Description: General-purpose naval transport.\nCan carry infantry and tanks.\n Unarmed
+ Valued:
+ Cost: 700
+ Tooltip:
+ Name: Transport
+ Health:
+ HP: 350
+ Armor:
+ Type: Heavy
+ Mobile:
+ TurnSpeed: 10
+ Speed: 113
+ TerrainSpeeds:
+ Beach: 70
+ RequiresCondition: !notmobile
+ RevealsShroud:
+ Range: 7c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ SelectionDecorations:
+ WithLandingCraftAnimation:
+ OpenTerrainTypes: Clear, Rough, Road, Ore, Gems, Beach
+ Cargo:
+ Types: Infantry, Vehicle
+ MaxWeight: 15
+ PipCount: 5
+ PassengerFacing: 0
+ LoadingCondition: notmobile
+ -Chronoshiftable:
+ Selectable:
+ DecorationBounds: 36,36
+
+PT:
+ Inherits: ^Ship
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Ship
+ BuildAtProductionType: Boat
+ BuildPaletteOrder: 20
+ Prerequisites: ~syrd, ~techlevel.low
+ Description: Light scout & support ship.\nCan detect submarines.\n Strong vs Naval units\n Weak vs Ground units, Aircraft
+ Valued:
+ Cost: 500
+ Tooltip:
+ Name: Gunboat
+ Health:
+ HP: 200
+ Armor:
+ Type: Heavy
+ Mobile:
+ TurnSpeed: 7
+ Speed: 128
+ RevealsShroud:
+ Range: 8c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ Turreted:
+ TurnSpeed: 7
+ Offset: 512,0,0
+ Armament@PRIMARY:
+ Weapon: 2Inch
+ LocalOffset: 208,0,48
+ MuzzleSequence: muzzle
+ Armament@SECONDARY:
+ Name: secondary
+ Weapon: DepthCharge
+ MuzzleSequence: muzzle
+ AttackTurreted:
+ WithMuzzleOverlay:
+ SelectionDecorations:
+ WithSpriteTurret:
+ DetectCloaked:
+ CloakTypes: Underwater
+ Range: 4c0
+ RenderDetectionCircle:
+ Selectable:
+ DecorationBounds: 36,36
diff --git a/mods/ura/rules/structures.yaml b/mods/ura/rules/structures.yaml
new file mode 100644
index 0000000..b5a9120
--- /dev/null
+++ b/mods/ura/rules/structures.yaml
@@ -0,0 +1,2036 @@
+MSLO:
+ Inherits: ^ScienceBuilding
+ Inherits@IDISABLE: ^DisableOnLowPowerOrPowerDown
+ Inherits@shape: ^2x1Shape
+ Valued:
+ Cost: 2500
+ Tooltip:
+ Name: Missile Silo
+ Buildable:
+ Queue: Defense
+ BuildPaletteOrder: 140
+ Prerequisites: techcenter, ~techlevel.unrestricted
+ BuildLimit: 1
+ Description: Provides an atomic bomb.\nRequires power to operate.\nMaximum 1 can be built.\n Special Ability: Atom Bomb
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+ Health:
+ HP: 1000
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 7c256
+ RequiresCondition: !disabled
+ RevealGeneratedShroud: False
+ RevealsShroud@Offline:
+ Range: 5c0
+ RequiresCondition: disabled
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ RequiresCondition: !disabled
+ NukePower:
+ PauseOnCondition: disabled
+ Cursor: nuke
+ Icon: abomb
+ ChargeInterval: 13500
+ Description: Atom Bomb
+ LongDesc: Launches a devastating atomic bomb\nat a target location.
+ BeginChargeSpeechNotification: AbombPrepping
+ EndChargeSpeechNotification: AbombReady
+ SelectTargetSpeechNotification: SelectTarget
+ InsufficientPowerSpeechNotification: InsufficientPower
+ IncomingSpeechNotification: AbombLaunchDetected
+ MissileWeapon: atomic
+ MissileDelay: 5
+ SpawnOffset: 1c0,427,0
+ DisplayTimerStances: Ally, Neutral, Enemy
+ DisplayBeacon: True
+ DisplayRadarPing: True
+ BeaconPoster: atomicon
+ FlashType: Nuke
+ CameraRange: 10c0
+ ArrowSequence: arrow
+ ClockSequence: clock
+ CircleSequence: circles
+ SupportPowerChargeBar:
+ Power:
+ Amount: -150
+ MustBeDestroyed:
+ RequiredForShortGame: false
+ WithNukeLaunchAnimation:
+
+GAP:
+ Inherits: ^ScienceBuilding
+ Inherits@IDISABLE: ^DisableOnLowPowerOrPowerDown
+ Valued:
+ Cost: 900
+ Tooltip:
+ Name: Gap Generator
+ Buildable:
+ Queue: Defense
+ BuildPaletteOrder: 110
+ Prerequisites: dome, ~structures.allies, ~techlevel.medium
+ Description: Obscures the enemy's view with shroud.\nRequires power to operate.
+ Selectable:
+ Bounds: 24,24
+ DecorationBounds: 24,48,0,-12
+ SelectionDecorations:
+ WithSpriteBody:
+ PauseOnCondition: disabled
+ Health:
+ HP: 500
+ Armor:
+ Type: Heavy
+ RevealsShroud:
+ Range: 7c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ WithBuildingBib:
+ HasMinibib: Yes
+ CreatesShroud:
+ Range: 7c256
+ RequiresCondition: !disabled
+ RenderShroudCircle:
+ Power:
+ Amount: -60
+ MustBeDestroyed:
+ RequiredForShortGame: false
+ -AcceptsDeliveredCash:
+ Explodes:
+ Weapon: SmallBuildingExplode
+ EmptyWeapon: SmallBuildingExplode
+ HitShape:
+ Type: Rectangle
+ TopLeft: -512, -512
+ BottomRight: 512, 512
+
+SPEN:
+ Inherits: ^Building
+ InfiltrateForSupportPower:
+ Proxy: powerproxy.sonarpulse
+ Types: SpyInfiltrate
+ Valued:
+ Cost: 800
+ Tooltip:
+ Name: Sub Pen
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 50
+ Prerequisites: anypower, ~structures.soviet, ~techlevel.low
+ Description: Produces and repairs\nsubmarines and transports.
+ Targetable:
+ TargetTypes: Ground, Water, Structure, WaterStructure, C4, DetonateAttack, SpyInfiltrate
+ Building:
+ Footprint: XXX xxx XXX
+ Dimensions: 3,3
+ TerrainTypes: Water
+ RequiresBuildableArea:
+ AreaTypes: building
+ Adjacent: 8
+ -GivesBuildableArea:
+ Health:
+ HP: 1000
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 6c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ DetectCloaked:
+ CloakTypes: Underwater
+ Range: 8c0
+ Exit@1:
+ SpawnOffset: 0,-213,0
+ Facing: 96
+ ExitCell: -1,2
+ ProductionTypes: Submarine
+ Exit@2:
+ SpawnOffset: 0,-213,0
+ Facing: 160
+ ExitCell: 3,2
+ ProductionTypes: Submarine
+ Exit@3:
+ SpawnOffset: 0,0,0
+ Facing: 32
+ ExitCell: 0,0
+ ProductionTypes: Submarine
+ Exit@4:
+ SpawnOffset: 0,0,0
+ Facing: 224
+ ExitCell: 2,0
+ ProductionTypes: Submarine
+ Exit@b1:
+ SpawnOffset: -1024,1024,0
+ Facing: 160
+ ExitCell: 0,2
+ ProductionTypes: Ship
+ Exit@b2:
+ SpawnOffset: 1024,1024,0
+ Facing: 224
+ ExitCell: 2,2
+ ProductionTypes: Ship
+ Exit@b3:
+ SpawnOffset: -1024,-1024,0
+ Facing: 96
+ ExitCell: 0,0
+ ProductionTypes: Ship
+ Exit@b4:
+ SpawnOffset: 1024,-1024,0
+ Facing: 32
+ ExitCell: 2,0
+ ProductionTypes: Ship
+ Production:
+ Produces: Ship, Submarine
+ PrimaryBuilding:
+ PrimaryCondition: primary
+ -EmitInfantryOnSell:
+ RepairsUnits:
+ HpPerStep: 1000
+ FinishRepairingNotification: UnitRepaired
+ PlayerExperience: 15
+ RallyPoint:
+ ProductionBar:
+ Power:
+ Amount: -30
+ ProvidesPrerequisite@soviet:
+ Factions: soviet, russia, ukraine
+ Prerequisite: ships.soviet
+ ProvidesPrerequisite@sovietvanilla:
+ Factions: soviet
+ Prerequisite: ships.sovietvanilla
+ ProvidesPrerequisite@russia:
+ Factions: russia
+ Prerequisite: ships.russia
+ ProvidesPrerequisite@ukraine:
+ Factions: ukraine
+ Prerequisite: ships.ukraine
+ ProvidesPrerequisite@sovietstructure:
+ RequiresPrerequisites: structures.soviet
+ Prerequisite: ships.soviet
+ ProvidesPrerequisite@sovietvanillastructure:
+ RequiresPrerequisites: structures.sovietvanilla
+ Prerequisite: ships.sovietvanilla
+ ProvidesPrerequisite@russianstructure:
+ RequiresPrerequisites: structures.russia
+ Prerequisite: ships.russia
+ ProvidesPrerequisite@ukrainianstructure:
+ RequiresPrerequisites: structures.ukraine
+ Prerequisite: ships.ukraine
+ ProvidesPrerequisite@buildingname:
+ EditorTilesetFilter:
+ ExcludeTilesets: INTERIOR
+ WithDecoration@primary:
+ RequiresSelection: true
+ Image: pips
+ Sequence: tag-primary
+ ReferencePoint: Top
+ ZOffset: 256
+ RequiresCondition: primary
+ HitShape:
+ Type: Rectangle
+ TopLeft: -1536, -598
+ BottomRight: 1536, 598
+ HitShape@TOPANDBOTTOM:
+ TargetableOffsets: 811,0,0, -811,0,0
+ Type: Rectangle
+ TopLeft: -555, -1110
+ BottomRight: 555, 1110
+
+SYRD:
+ Inherits: ^Building
+ InfiltrateForSupportPower:
+ Proxy: powerproxy.sonarpulse
+ Types: SpyInfiltrate
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 40
+ Prerequisites: anypower, ~structures.allies, ~techlevel.low
+ Description: Produces and repairs\nships and transports.
+ Valued:
+ Cost: 1000
+ Tooltip:
+ Name: Naval Yard
+ Targetable:
+ TargetTypes: Ground, Water, Structure, WaterStructure, C4, DetonateAttack, SpyInfiltrate
+ Building:
+ Footprint: XXX xxx XXX
+ Dimensions: 3,3
+ TerrainTypes: Water
+ RequiresBuildableArea:
+ Adjacent: 8
+ -GivesBuildableArea:
+ Health:
+ HP: 1000
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 6c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ DetectCloaked:
+ CloakTypes: Underwater
+ Range: 8c0
+ Exit@1:
+ SpawnOffset: -1024,1024,0
+ Facing: 160
+ ExitCell: 0,2
+ ProductionTypes: Ship, Boat
+ Exit@2:
+ SpawnOffset: 1024,1024,0
+ Facing: 224
+ ExitCell: 2,2
+ ProductionTypes: Ship, Boat
+ Exit@3:
+ SpawnOffset: -1024,-1024,0
+ Facing: 96
+ ExitCell: 0,0
+ ProductionTypes: Ship, Boat
+ Exit@4:
+ SpawnOffset: 1024,-1024,0
+ Facing: 32
+ ExitCell: 2,0
+ ProductionTypes: Ship, Boat
+ Production:
+ Produces: Ship, Boat
+ PrimaryBuilding:
+ PrimaryCondition: primary
+ -EmitInfantryOnSell:
+ RepairsUnits:
+ HpPerStep: 1000
+ FinishRepairingNotification: UnitRepaired
+ PlayerExperience: 15
+ RallyPoint:
+ ProductionBar:
+ Power:
+ Amount: -30
+ ProvidesPrerequisite@allies:
+ Factions: allies, england, france, germany
+ Prerequisite: ships.allies
+ ProvidesPrerequisite@alliesvanilla:
+ Factions: allies
+ Prerequisite: ships.alliesvanilla
+ ProvidesPrerequisite@england:
+ Factions: england
+ Prerequisite: ships.england
+ ProvidesPrerequisite@france:
+ Factions: france
+ Prerequisite: ships.france
+ ProvidesPrerequisite@germany:
+ Factions: germany
+ Prerequisite: ships.germany
+ ProvidesPrerequisite@alliedstructure:
+ RequiresPrerequisites: structures.allies
+ Prerequisite: ships.allies
+ ProvidesPrerequisite@alliedvanillastructure:
+ RequiresPrerequisites: structures.alliesvanilla
+ Prerequisite: ships.alliesvanilla
+ ProvidesPrerequisite@englishstructure:
+ RequiresPrerequisites: structures.england
+ Prerequisite: ships.england
+ ProvidesPrerequisite@frenchstructure:
+ RequiresPrerequisites: structures.france
+ Prerequisite: ships.france
+ ProvidesPrerequisite@germanstructure:
+ RequiresPrerequisites: structures.germany
+ Prerequisite: ships.germany
+ ProvidesPrerequisite@buildingname:
+ EditorTilesetFilter:
+ ExcludeTilesets: INTERIOR
+ WithDecoration@primary:
+ RequiresSelection: true
+ Image: pips
+ Sequence: tag-primary
+ ReferencePoint: Top
+ ZOffset: 256
+ RequiresCondition: primary
+ HitShape:
+ TargetableOffsets: 768,0,0, 768,-1024,0, 768,1024,0
+ Type: Rectangle
+ TopLeft: -1536, -1152
+ BottomRight: 1536, 598
+ HitShape@BOTTOM:
+ TargetableOffsets: -768,0,0
+ Type: Rectangle
+ TopLeft: -512, 598
+ BottomRight: 512, 1110
+
+IRON:
+ Inherits: ^ScienceBuilding
+ Inherits@IDISABLE: ^DisableOnLowPowerOrPowerDown
+ Inherits@shape: ^2x1Shape
+ Buildable:
+ Queue: Defense
+ BuildPaletteOrder: 130
+ Prerequisites: stek, ~structures.soviet, ~techlevel.unrestricted
+ BuildLimit: 1
+ Description: Makes a group of units invulnerable\nfor a short time.\nRequires power to operate.\nMaximum 1 can be built.\n Special Ability: Invulnerability
+ Valued:
+ Cost: 1500
+ Tooltip:
+ Name: Iron Curtain
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+ Selectable:
+ Bounds: 48,28,0,2
+ DecorationBounds: 50,50,0,-12
+ SelectionDecorations:
+ Health:
+ HP: 1000
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 7c256
+ RequiresCondition: !disabled
+ RevealGeneratedShroud: False
+ RevealsShroud@Offline:
+ Range: 5c0
+ RequiresCondition: disabled
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ RequiresCondition: !disabled
+ WithBuildingBib:
+ HasMinibib: Yes
+ GrantExternalConditionPower@IRONCURTAIN:
+ PauseOnCondition: disabled
+ Icon: invuln
+ ChargeInterval: 3000
+ Description: Invulnerability
+ LongDesc: Makes a group of units invulnerable\nfor 20 seconds.
+ Duration: 500
+ SelectTargetSpeechNotification: SelectTarget
+ InsufficientPowerSpeechNotification: InsufficientPower
+ BeginChargeSpeechNotification: IronCurtainCharging
+ EndChargeSpeechNotification: IronCurtainReady
+ DisplayRadarPing: True
+ Condition: invulnerability
+ OnFireSound: ironcur9.aud
+ SupportPowerChargeBar:
+ Power:
+ Amount: -200
+ MustBeDestroyed:
+ RequiredForShortGame: false
+
+PDOX:
+ Inherits: ^ScienceBuilding
+ Inherits@IDISABLE: ^DisableOnLowPowerOrPowerDown
+ Inherits@shape: ^2x2Shape
+ Buildable:
+ Queue: Defense
+ BuildPaletteOrder: 120
+ Prerequisites: atek, ~structures.allies, ~techlevel.unrestricted
+ BuildLimit: 1
+ Description: Teleports a group of units across the\nmap for a short time.\nRequires power to operate.\nMaximum 1 can be built.\n Special Ability: Chronoshift
+ Valued:
+ Cost: 1500
+ Tooltip:
+ Name: Chronosphere
+ Building:
+ Footprint: xx xx
+ Dimensions: 2,2
+ Health:
+ HP: 1000
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 7c256
+ RequiresCondition: !disabled
+ RevealGeneratedShroud: False
+ RevealsShroud@Offline:
+ Range: 5c0
+ RequiresCondition: disabled
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ RequiresCondition: !disabled
+ WithBuildingBib:
+ HasMinibib: Yes
+ EmitInfantryOnSell:
+ ActorTypes: e1,e1,e1,e1,e1,e1,e1,e1,e1,tecn,tecn,tecn,tecn,tecn,einstein
+ ProvidesPrerequisite@germany:
+ Factions: germany
+ Prerequisite: pdox.germany
+ ProvidesPrerequisite@germanstructure:
+ RequiresPrerequisites: structures.germany
+ Prerequisite: pdox.germany
+ ChronoshiftPower@chronoshift:
+ OrderName: Chronoshift
+ PauseOnCondition: disabled
+ Prerequisites: !pdox.germany
+ Icon: chrono
+ ChargeInterval: 3000
+ Description: Chronoshift
+ LongDesc: Teleports a group of units across\nthe map for 20 seconds.
+ SelectTargetSpeechNotification: SelectTarget
+ InsufficientPowerSpeechNotification: InsufficientPower
+ BeginChargeSpeechNotification: ChronosphereCharging
+ EndChargeSpeechNotification: ChronosphereReady
+ Duration: 500
+ KillCargo: yes
+ DisplayRadarPing: True
+ ChronoshiftPower@advancedchronoshift:
+ OrderName: AdvancedChronoshift
+ PauseOnCondition: disabled
+ Prerequisites: pdox.germany
+ Icon: chrono
+ ChargeInterval: 3000
+ Description: Advanced Chronoshift
+ LongDesc: Teleports a large group of units across\nthe map for 20 seconds.
+ SelectTargetSpeechNotification: SelectTarget
+ InsufficientPowerSpeechNotification: InsufficientPower
+ BeginChargeSpeechNotification: ChronosphereCharging
+ EndChargeSpeechNotification: ChronosphereReady
+ Duration: 500
+ KillCargo: yes
+ DisplayRadarPing: True
+ Range: 2
+ SupportPowerChargeBar:
+ Power:
+ Amount: -200
+ MustBeDestroyed:
+ RequiredForShortGame: false
+ ProvidesPrerequisite@buildingname:
+
+TSLA:
+ Inherits: ^Defense
+ Inherits@IDISABLE: ^DisableOnLowPowerOrPowerDown
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Defense
+ BuildPaletteOrder: 80
+ Prerequisites: weap, ~structures.soviet, ~techlevel.medium
+ Description: Advanced base defense.\nRequires power to operate.\nCan detect cloaked units.\n Strong vs Vehicles, Infantry\n Weak vs Aircraft
+ Valued:
+ Cost: 1200
+ Tooltip:
+ Name: Tesla Coil
+ Selectable:
+ Bounds: 24,24
+ DecorationBounds: 24,40,0,-8
+ SelectionDecorations:
+ Health:
+ HP: 400
+ Armor:
+ Type: Heavy
+ RevealsShroud:
+ Range: 9c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ WithBuildingBib:
+ HasMinibib: Yes
+ WithTeslaChargeAnimation:
+ Armament:
+ Weapon: TeslaZap
+ LocalOffset: 0,0,896
+ AttackTesla:
+ PauseOnCondition: disabled
+ ChargeAudio: tslachg2.aud
+ MaxCharges: 3
+ ReloadDelay: 120
+ Power:
+ Amount: -100
+ DetectCloaked:
+ Range: 6c0
+ RequiresCondition: !disabled
+ ProvidesPrerequisite@buildingname:
+
+AGUN:
+ Inherits: ^Defense
+ Inherits@IDISABLE: ^DisableOnLowPowerOrPowerDown
+ Inherits@AUTOTARGET: ^AutoTargetAir
+ Buildable:
+ Queue: Defense
+ BuildPaletteOrder: 90
+ Prerequisites: dome, ~structures.allies, ~techlevel.medium
+ Description: Anti-Air base defense.\nRequires power to operate.\n Strong vs Aircraft\n Weak vs Ground units
+ Valued:
+ Cost: 800
+ Tooltip:
+ Name: AA Gun
+ Selectable:
+ Bounds: 24,24
+ DecorationBounds: 24,32,0,-4
+ SelectionDecorations:
+ Health:
+ HP: 400
+ Armor:
+ Type: Heavy
+ RevealsShroud:
+ Range: 7c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ WithBuildingBib:
+ HasMinibib: Yes
+ Turreted:
+ TurnSpeed: 15
+ InitialFacing: 224
+ -WithSpriteBody:
+ WithEmbeddedTurretSpriteBody:
+ Armament:
+ Weapon: ZSU-23
+ LocalOffset: 520,100,450, 520,-150,450
+ MuzzleSequence: muzzle
+ AttackTurreted:
+ PauseOnCondition: disabled
+ WithMuzzleOverlay:
+ RenderRangeCircle:
+ RangeCircleType: aa
+ Power:
+ Amount: -50
+ BodyOrientation:
+ UseClassicFacingFudge: True
+
+DOME:
+ Inherits: ^Building
+ Inherits@IDISABLE: ^DisableOnLowPowerOrPowerDown
+ Inherits@shape: ^2x2Shape
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: 0,0,0, 630,-384,0, 630,384,0, -700,-512,0, -700,512,0
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 90
+ Prerequisites: proc, ~techlevel.medium
+ Description: Provides an overview\nof the battlefield.\nCan detect cloaked units.\nRequires power to operate.
+ Valued:
+ Cost: 1600
+ Tooltip:
+ Name: Radar Dome
+ Building:
+ Footprint: xx xx ==
+ Dimensions: 2,3
+ LocalCenterOffset: 0,-512,0
+ Targetable:
+ TargetTypes: Ground, Structure, C4, DetonateAttack, SpyInfiltrate
+ Health:
+ HP: 1000
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 10c0
+ RequiresCondition: !disabled
+ RevealGeneratedShroud: False
+ RevealsShroud@Offline:
+ Range: 5c0
+ RequiresCondition: disabled
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ RequiresCondition: !disabled
+ WithBuildingBib:
+ ProvidesRadar:
+ RequiresCondition: !jammed && !disabled
+ InfiltrateForExploration:
+ Types: SpyInfiltrate
+ DetectCloaked:
+ Range: 6c0
+ RequiresCondition: !disabled
+ RenderDetectionCircle:
+ Power:
+ Amount: -40
+ ProvidesPrerequisite@buildingname:
+ ExternalCondition@JAMMED:
+ Condition: jammed
+ #ParatroopersPower@paratroopers:
+ # OrderName: AlliedParatroopers
+ # Prerequisites: dome, ~structures.allies
+ # Icon: sniperdrop
+ # ChargeTime: 240
+ # Description: Sniper Drop
+ # LongDesc: A Badger drops a 2-man sniper team\nanywhere on the map.
+ # DropItems: SNIPER, SNIPER
+ # ReinforcementsArrivedSpeechNotification: ReinforcementsArrived
+ # SelectTargetSpeechNotification: SelectTarget
+ # AllowImpassableCells: false
+ # QuantizedFacings: 8
+ # CameraActor: camera.paradrop
+ # DisplayBeacon: true
+ # BeaconPoster: pinficon
+ # ArrowSequence: arrow
+ # ClockSequence: clock
+ # CircleSequence: circles
+
+PBOX:
+ Inherits: ^Defense
+ Inherits@AUTOTARGET: ^AutoTargetAll
+ Tooltip:
+ Name: Pillbox
+ Building:
+ Buildable:
+ Queue: Defense
+ BuildPaletteOrder: 40
+ Prerequisites: tent, ~structures.allies, ~techlevel.low
+ Description: Static defense with a fireport for\na garrisoned soldier.\nCan detect cloaked units.\n Strong vs Infantry, Light armor\n Weak vs Tanks, Aircraft
+ Valued:
+ Cost: 600
+ CustomSellValue:
+ Value: 400
+ Health:
+ HP: 350
+ Armor:
+ Type: Heavy
+ RevealsShroud:
+ Range: 7c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ WithBuildingBib:
+ HasMinibib: Yes
+ Turreted:
+ TurnSpeed: 255
+ -QuantizeFacingsFromSequence:
+ BodyOrientation:
+ QuantizedFacings: 8
+ Cargo:
+ Types: Infantry
+ MaxWeight: 1
+ PipCount: 1
+ InitialUnits: e1
+ -EmitInfantryOnSell:
+ AttackGarrisoned:
+ Armaments: garrisoned
+ PortOffsets: 384,0,128, 224,-341,128, -224,-341,128, -384,0,128, -224,341,128, 224,341,128
+ PortYaws: 0, 176, 341, 512, 682, 853
+ PortCones: 88, 88, 88, 88, 88, 88
+ RenderRangeCircle:
+ FallbackRange: 6c0
+ Power:
+ Amount: -15
+ DetectCloaked:
+ Range: 4c0
+
+HBOX:
+ Inherits: ^Defense
+ Inherits@AUTOTARGET: ^AutoTargetAll
+ Tooltip:
+ Name: Camo Pillbox
+ Building:
+ Buildable:
+ Queue: Defense
+ BuildPaletteOrder: 50
+ Prerequisites: tent, ~structures.allies, ~techlevel.medium
+ Description: Camouflaged static defense with a fireport\nfor a garrisoned soldier.\nCan detect cloaked units.\n Strong vs Infantry, Light armor\n Weak vs Tanks, Aircraft
+ Valued:
+ Cost: 800
+ CustomSellValue:
+ Value: 600
+ Health:
+ HP: 400
+ Armor:
+ Type: Heavy
+ RevealsShroud:
+ Range: 7c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ Cloak:
+ InitialDelay: 125
+ CloakDelay: 60
+ IsPlayerPalette: true
+ RequiresCondition: !cloak-force-disabled
+ GrantConditionOnDamageState@UNCLOAK:
+ Condition: cloak-force-disabled
+ ValidDamageStates: Critical
+ Turreted:
+ TurnSpeed: 255
+ -QuantizeFacingsFromSequence:
+ BodyOrientation:
+ QuantizedFacings: 8
+ Cargo:
+ Types: Infantry
+ MaxWeight: 1
+ PipCount: 1
+ InitialUnits: e1
+ -EmitInfantryOnSell:
+ DetectCloaked:
+ Range: 6c0
+ RenderRangeCircle:
+ FallbackRange: 6c0
+ AttackGarrisoned:
+ Armaments: garrisoned
+ PortOffsets: 384,0,128, 224,-341,128, -224,-341,128, -384,0,128, -224,341,128, 224,341,128
+ PortYaws: 0, 176, 341, 512, 682, 853
+ PortCones: 88, 88, 88, 88, 88, 88
+ Power:
+ Amount: -15
+ -MustBeDestroyed:
+
+GUN:
+ Inherits: ^Defense
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Defense
+ BuildPaletteOrder: 70
+ Prerequisites: tent, ~structures.allies, ~techlevel.medium
+ Description: Anti-Armor base defense.\nCan detect cloaked units.\n Strong vs Vehicles\n Weak vs Infantry, Aircraft
+ Valued:
+ Cost: 800
+ Tooltip:
+ Name: Turret
+ Building:
+ Health:
+ HP: 400
+ Armor:
+ Type: Heavy
+ RevealsShroud:
+ Range: 7c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ WithBuildingBib:
+ HasMinibib: Yes
+ Turreted:
+ TurnSpeed: 12
+ InitialFacing: 56
+ -WithSpriteBody:
+ WithEmbeddedTurretSpriteBody:
+ Armament:
+ Weapon: TurretGun
+ LocalOffset: 512,0,112
+ MuzzleSequence: muzzle
+ AttackTurreted:
+ WithMuzzleOverlay:
+ Power:
+ Amount: -40
+ DetectCloaked:
+ Range: 6c0
+ BodyOrientation:
+ UseClassicFacingFudge: True
+
+FTUR:
+ Inherits: ^Defense
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Defense
+ BuildPaletteOrder: 60
+ Prerequisites: barr, ~structures.soviet, ~techlevel.low
+ Description: Anti-Infantry base defense.\nCan detect cloaked units.\n Strong vs Infantry, Light armor\n Weak vs Tanks, Aircraft
+ Valued:
+ Cost: 600
+ Tooltip:
+ Name: Flame Tower
+ Building:
+ Health:
+ HP: 350
+ Armor:
+ Type: Heavy
+ RevealsShroud:
+ Range: 7c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ WithBuildingBib:
+ HasMinibib: Yes
+ Turreted:
+ TurnSpeed: 255
+ Offset: 0,0,112
+ Armament:
+ Weapon: FireballLauncher
+ LocalOffset: 512,0,0
+ AttackTurreted:
+ -QuantizeFacingsFromSequence:
+ BodyOrientation:
+ QuantizedFacings: 8
+ Power:
+ Amount: -20
+ DetectCloaked:
+ Range: 4c0
+ ProvidesPrerequisite@buildingname:
+ Explodes:
+ Weapon: BuildingExplode
+ EmptyWeapon: BuildingExplode
+
+SAM:
+ Inherits: ^Defense
+ Inherits@IDISABLE: ^DisableOnLowPowerOrPowerDown
+ Inherits@AUTOTARGET: ^AutoTargetAir
+ Inherits@shape: ^2x1Shape
+ HitShape:
+ Type: Rectangle
+ TopLeft: -768,-512
+ BottomRight: 768,512
+ Buildable:
+ Queue: Defense
+ BuildPaletteOrder: 100
+ Prerequisites: dome, ~structures.soviet, ~techlevel.medium
+ Description: Anti-Air base defense.\nRequires power to operate.\n Strong vs Aircraft\n Weak vs Ground units
+ Valued:
+ Cost: 700
+ Tooltip:
+ Name: SAM Site
+ Building:
+ Footprint: xx
+ Dimensions: 2,1
+ Health:
+ HP: 400
+ Armor:
+ Type: Heavy
+ RevealsShroud:
+ Range: 7c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ WithBuildingBib:
+ HasMinibib: Yes
+ Turreted:
+ TurnSpeed: 30
+ InitialFacing: 0
+ -WithSpriteBody:
+ WithEmbeddedTurretSpriteBody:
+ Armament:
+ Weapon: Nike
+ LocalOffset: 0,0,320
+ MuzzleSequence: muzzle
+ AttackTurreted:
+ PauseOnCondition: disabled
+ WithMuzzleOverlay:
+ RenderRangeCircle:
+ RangeCircleType: aa
+ Power:
+ Amount: -40
+ BodyOrientation:
+ UseClassicFacingFudge: True
+
+ATEK:
+ Inherits: ^ScienceBuilding
+ Inherits@IDISABLE: ^DisableOnLowPower
+ Inherits@shape: ^2x2Shape
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 140
+ Prerequisites: weap, dome, ~structures.allies, ~techlevel.high
+ Description: Provides Allied advanced technologies.\n Special Ability: GPS Satellite
+ Valued:
+ Cost: 1500
+ Tooltip:
+ Name: Allied Tech Center
+ ProvidesPrerequisite:
+ Prerequisite: techcenter
+ Building:
+ Footprint: xx xx ==
+ Dimensions: 2,3
+ LocalCenterOffset: 0,-512,0
+ Health:
+ HP: 600
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 10c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ WithBuildingBib:
+ GpsPower:
+ PauseOnCondition: disabled
+ Icon: gps
+ OneShot: yes
+ ChargeInterval: 12000
+ Description: GPS Satellite
+ LongDesc: Reveals map terrain and provides tactical\ninformation. Requires power and active radar.
+ RevealDelay: 375
+ LaunchSpeechNotification: SatelliteLaunched
+ DisplayTimerStances: Ally, Neutral, Enemy
+ SupportPowerChargeBar:
+ Power:
+ Amount: -200
+ ProvidesPrerequisite@buildingname:
+
+WEAP:
+ Inherits: ^Building
+ Inherits@shape: ^3x2Shape
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 80
+ Prerequisites: proc, ~techlevel.low
+ Description: Produces vehicles.
+ Valued:
+ Cost: 2000
+ Tooltip:
+ Name: War Factory
+ Building:
+ Footprint: xxx xxx ===
+ Dimensions: 3,3
+ LocalCenterOffset: 0,-512,0
+ Health:
+ HP: 1500
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 6c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ WithBuildingBib:
+ WithProductionDoorOverlay:
+ Sequence: build-top
+ RallyPoint:
+ Exit@1:
+ SpawnOffset: 213,-128,0
+ ExitCell: 1,2
+ Production:
+ Produces: Vehicle
+ ProvidesPrerequisite@allies:
+ Factions: allies, england, france, germany
+ Prerequisite: vehicles.allies
+ ProvidesPrerequisite@alliesvanilla:
+ Factions: allies
+ Prerequisite: vehicles.alliesvanilla
+ ProvidesPrerequisite@england:
+ Factions: england
+ Prerequisite: vehicles.england
+ ProvidesPrerequisite@france:
+ Factions: france
+ Prerequisite: vehicles.france
+ ProvidesPrerequisite@germany:
+ Factions: germany
+ Prerequisite: vehicles.germany
+ ProvidesPrerequisite@soviet:
+ Factions: soviet, russia, ukraine
+ Prerequisite: vehicles.soviet
+ ProvidesPrerequisite@sovietvanilla:
+ Factions: soviet
+ Prerequisite: vehicles.sovietvanilla
+ ProvidesPrerequisite@russia:
+ Factions: russia
+ Prerequisite: vehicles.russia
+ ProvidesPrerequisite@ukraine:
+ Factions: ukraine
+ Prerequisite: vehicles.ukraine
+ ProvidesPrerequisite@alliedstructure:
+ RequiresPrerequisites: structures.allies
+ Prerequisite: vehicles.allies
+ ProvidesPrerequisite@alliedvanillastructure:
+ RequiresPrerequisites: structures.alliesvanilla
+ Prerequisite: vehicles.alliesvanilla
+ ProvidesPrerequisite@englishstructure:
+ RequiresPrerequisites: structures.england
+ Prerequisite: vehicles.england
+ ProvidesPrerequisite@frenchstructure:
+ RequiresPrerequisites: structures.france
+ Prerequisite: vehicles.france
+ ProvidesPrerequisite@germanstructure:
+ RequiresPrerequisites: structures.germany
+ Prerequisite: vehicles.germany
+ ProvidesPrerequisite@sovietstructure:
+ RequiresPrerequisites: structures.soviet
+ Prerequisite: vehicles.soviet
+ ProvidesPrerequisite@sovietvanillastructure:
+ RequiresPrerequisites: structures.sovietvanilla
+ Prerequisite: vehicles.sovietvanilla
+ ProvidesPrerequisite@russianstructure:
+ RequiresPrerequisites: structures.russia
+ Prerequisite: vehicles.russia
+ ProvidesPrerequisite@ukrainianstructure:
+ RequiresPrerequisites: structures.ukraine
+ Prerequisite: vehicles.ukraine
+ PrimaryBuilding:
+ PrimaryCondition: primary
+ ProductionBar:
+ Power:
+ Amount: -30
+ ProvidesPrerequisite@buildingname:
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, SpyInfiltrate
+ InfiltrateForSupportPower:
+ Proxy: vehicles.upgraded
+ Types: SpyInfiltrate
+ WithDecoration@primary:
+ RequiresSelection: true
+ Image: pips
+ Sequence: tag-primary
+ ReferencePoint: Top
+ ZOffset: 256
+ RequiresCondition: primary
+
+FACT:
+ Inherits: ^Building
+ Building:
+ Footprint: xxX xxx XxX ===
+ Dimensions: 3,4
+ LocalCenterOffset: 0,-512,0
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 1000
+ Prerequisites: ~disabled
+ Description: Produces structures.
+ ProvidesPrerequisite@allies:
+ Factions: allies, england, france, germany
+ Prerequisite: structures.allies
+ ProvidesPrerequisite@alliesvanilla:
+ Factions: allies
+ Prerequisite: structures.alliesvanilla
+ ProvidesPrerequisite@england:
+ Factions: england
+ Prerequisite: structures.england
+ ProvidesPrerequisite@france:
+ Factions: france
+ Prerequisite: structures.france
+ ProvidesPrerequisite@germany:
+ Factions: germany
+ Prerequisite: structures.germany
+ ProvidesPrerequisite@soviet:
+ Factions: soviet, russia, ukraine
+ Prerequisite: structures.soviet
+ ProvidesPrerequisite@sovietvanilla:
+ Factions: soviet
+ Prerequisite: structures.sovietvanilla
+ ProvidesPrerequisite@russia:
+ Factions: russia
+ Prerequisite: structures.russia
+ ProvidesPrerequisite@ukraine:
+ Factions: ukraine
+ Prerequisite: structures.ukraine
+ Health:
+ HP: 1500
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 6c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ WithBuildingBib:
+ Production:
+ Produces: Building,Defense
+ Valued:
+ Cost: 2500
+ Tooltip:
+ Name: Construction Yard
+ CustomSellValue:
+ Value: 2500
+ EmitInfantryOnSell:
+ ActorTypes: e1,e1,e1,tecn,tecn,e6
+ BaseBuilding:
+ Transforms:
+ IntoActor: mcv
+ Offset: 1,1
+ Facing: 96
+ RequiresCondition: factundeploy
+ GrantConditionOnPrerequisite@GLOBALFACTUNDEPLOY:
+ Condition: factundeploy
+ Prerequisites: global-factundeploy
+ ProductionBar@Building:
+ ProductionType: Building
+ ProductionBar@Defense:
+ ProductionType: Defense
+ Color: 8A8A8A
+ BaseProvider:
+ Range: 16c0
+ WithBuildingPlacedAnimation:
+ Power:
+ Amount: 0
+ WithDeathAnimation:
+ DeathSequence: dead
+ UseDeathTypeSuffix: false
+ ProvidesPrerequisite@buildingname:
+ HitShape:
+ TargetableOffsets: 1273,939,0, -980,-640,0, -980,640,0
+ Type: Rectangle
+ TopLeft: -1536, -1536
+ BottomRight: 1536, 1536
+
+PROC:
+ Inherits: ^Building
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 60
+ Prerequisites: anypower, ~techlevel.infonly
+ Description: Refines Ore and Gems\ninto credits.
+ Valued:
+ Cost: 1400
+ Tooltip:
+ Name: Ore Refinery
+ Building:
+ Footprint: _X_ xxx X== ===
+ Dimensions: 3,4
+ LocalCenterOffset: 0,-512,0
+ Selectable:
+ Bounds: 72,50,0,12
+ DecorationBounds: 72,70,0,-2
+ SelectionDecorations:
+ Targetable:
+ TargetTypes: Ground, Structure, C4, DetonateAttack, SpyInfiltrate
+ Health:
+ HP: 900
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 6c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ WithBuildingBib:
+ Refinery:
+ DockAngle: 64
+ DockOffset: 1,2
+ StoresResources:
+ PipCount: 17
+ Capacity: 2000
+ DrawLineToTarget:
+ CustomSellValue:
+ Value: 600
+ FreeActor:
+ Actor: HARV
+ SpawnOffset: 1,2
+ Facing: 64
+ InfiltrateForCash:
+ Percentage: 50
+ Types: SpyInfiltrate
+ Notification: CreditsStolen
+ WithIdleOverlay@TOP:
+ Sequence: idle-top
+ Power:
+ Amount: -30
+ WithDeathAnimation:
+ DeathSequence: dead
+ UseDeathTypeSuffix: false
+ ProvidesPrerequisite@buildingname:
+ HitShape:
+ Type: Rectangle
+ TopLeft: -1536, -512
+ BottomRight: 1536, 598
+ HitShape@TOP:
+ TargetableOffsets: 1680,0,0
+ Type: Rectangle
+ TopLeft: -512, -1536
+ BottomRight: 512, -512
+ HitShape@BOTTOMLEFT:
+ TargetableOffsets: -1260,-1024,0
+ Type: Rectangle
+ TopLeft: -1536, 598
+ BottomRight: -512, 1280
+
+SILO:
+ Inherits: ^Building
+ Buildable:
+ Queue: Defense
+ BuildPaletteOrder: 35
+ Prerequisites: proc, ~techlevel.infonly
+ Description: Stores excess refined\nOre and Gems.
+ Valued:
+ Cost: 150
+ Tooltip:
+ Name: Silo
+ -GivesBuildableArea:
+ Health:
+ HP: 300
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 5c0
+ WithBuildingBib:
+ HasMinibib: Yes
+ WithSiloAnimation:
+ StoresResources:
+ PipCount: 5
+ Capacity: 3000
+ -EmitInfantryOnSell:
+ Power:
+ Amount: -10
+ Explodes:
+ Weapon: SmallBuildingExplode
+ EmptyWeapon: SmallBuildingExplode
+
+HPAD:
+ Inherits: ^Building
+ Inherits@shape: ^2x2Shape
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: 0,0,0, 768,-512,0, 768,512,0, -281,-512,0, -630,512,0
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 120
+ Prerequisites: dome, ~structures.allies, ~techlevel.medium
+ Description: Produces and reloads\nhelicopters.
+ Valued:
+ Cost: 500
+ Tooltip:
+ Name: Helipad
+ Building:
+ Footprint: xx xx
+ Dimensions: 2,2
+ LocalCenterOffset: 0,0,0
+ Health:
+ HP: 800
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 5c0
+ WithBuildingBib:
+ Exit@1:
+ SpawnOffset: 0,-256,0
+ ExitCell: 0,0
+ MoveIntoWorld: false
+ Facing: 224
+ RallyPoint:
+ Production:
+ Produces: Aircraft, Helicopter
+ Reservable:
+ ProductionBar:
+ PrimaryBuilding:
+ PrimaryCondition: primary
+ Power:
+ Amount: -10
+ ProvidesPrerequisite@allies:
+ Factions: allies, england, france, germany
+ Prerequisite: aircraft.allies
+ ProvidesPrerequisite@alliesvanilla:
+ Factions: allies
+ Prerequisite: aircraft.alliesvanilla
+ ProvidesPrerequisite@england:
+ Factions: england
+ Prerequisite: aircraft.england
+ ProvidesPrerequisite@france:
+ Factions: france
+ Prerequisite: aircraft.france
+ ProvidesPrerequisite@germany:
+ Factions: germany
+ Prerequisite: aircraft.germany
+ ProvidesPrerequisite@alliedstructure:
+ RequiresPrerequisites: structures.allies
+ Prerequisite: aircraft.allies
+ ProvidesPrerequisite@alliedvanillastructure:
+ RequiresPrerequisites: structures.alliesvanilla
+ Prerequisite: aircraft.alliesvanilla
+ ProvidesPrerequisite@englishstructure:
+ RequiresPrerequisites: structures.england
+ Prerequisite: aircraft.england
+ ProvidesPrerequisite@frenchstructure:
+ RequiresPrerequisites: structures.france
+ Prerequisite: aircraft.france
+ ProvidesPrerequisite@germanstructure:
+ RequiresPrerequisites: structures.germany
+ Prerequisite: aircraft.germany
+ ProvidesPrerequisite@buildingname:
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, SpyInfiltrate
+ InfiltrateForSupportPower:
+ Proxy: aircraft.upgraded
+ Types: SpyInfiltrate
+ WithDecoration@primary:
+ RequiresSelection: true
+ Image: pips
+ Sequence: tag-primary
+ ReferencePoint: Top
+ ZOffset: 256
+ RequiresCondition: primary
+ WithRearmAnimation:
+
+AFLD:
+ Inherits: ^Building
+ Inherits@shape: ^3x2Shape
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: 0,0,0, 420,0,0, 420,-1024,0, 420,1024,0, -777,0,0, -777,-1024,0, -777,1024,0
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 130
+ Prerequisites: dome, ~structures.soviet, ~techlevel.medium, ~!structures.ukraine
+ Description: Produces and reloads aircraft.\n Special Ability: Spy Plane\n Special Ability: Paratroopers
+ Valued:
+ Cost: 500
+ Tooltip:
+ Name: Airfield
+ Selectable:
+ Class: afld
+ Building:
+ Footprint: xxx xxx
+ Dimensions: 3,2
+ Health:
+ HP: 1000
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 7c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ Exit@1:
+ ExitCell: 1,1
+ Facing: 192
+ MoveIntoWorld: false
+ RallyPoint:
+ Production:
+ Produces: Aircraft, Plane
+ Reservable:
+ ProvidesPrerequisite@soviet:
+ Factions: soviet, russia, ukraine
+ Prerequisite: aircraft.soviet
+ ProvidesPrerequisite@sovietvanilla:
+ Factions: soviet
+ Prerequisite: aircraft.sovietvanilla
+ ProvidesPrerequisite@russia:
+ Factions: russia
+ Prerequisite: aircraft.russia
+ ProvidesPrerequisite@ukraine:
+ Factions: ukraine
+ Prerequisite: aircraft.ukraine
+ ProvidesPrerequisite@sovietstructure:
+ RequiresPrerequisites: structures.soviet
+ Prerequisite: aircraft.soviet
+ ProvidesPrerequisite@sovietvanillastructure:
+ RequiresPrerequisites: structures.sovietvanilla
+ Prerequisite: aircraft.sovietvanilla
+ ProvidesPrerequisite@russianstructure:
+ RequiresPrerequisites: structures.russia
+ Prerequisite: aircraft.russia
+ ProvidesPrerequisite@ukrainianstructure:
+ RequiresPrerequisites: structures.ukraine
+ Prerequisite: aircraft.ukraine
+ AirstrikePower@spyplane:
+ OrderName: SovietSpyPlane
+ Prerequisites: aircraft.soviet
+ Icon: spyplane
+ ChargeInterval: 3750
+ Description: Spy Plane
+ LongDesc: Reveals an area of the map\nand cloaked enemy units.
+ SelectTargetSpeechNotification: SelectTarget
+ EndChargeSpeechNotification: SpyPlaneReady
+ CameraActor: camera.spyplane
+ CameraRemoveDelay: 150
+ UnitType: u2
+ QuantizedFacings: 8
+ DisplayBeacon: true
+ BeaconPoster: camicon
+ ArrowSequence: arrow
+ ClockSequence: clock
+ CircleSequence: circles
+ ParatroopersPower@paratroopers:
+ OrderName: SovietParatroopers
+ Prerequisites: aircraft.soviet
+ Icon: paratroopers
+ ChargeInterval: 7500
+ Description: Paratroopers
+ LongDesc: A Badger drops a squad of infantry\nanywhere on the map.
+ DropItems: E1R1,E1R1,E1R1,E3R1,E3R1
+ ReinforcementsArrivedSpeechNotification: ReinforcementsArrived
+ SelectTargetSpeechNotification: SelectTarget
+ AllowImpassableCells: false
+ QuantizedFacings: 8
+ CameraActor: camera.paradrop
+ DisplayBeacon: true
+ BeaconPoster: pinficon
+ ArrowSequence: arrow
+ ClockSequence: clock
+ CircleSequence: circles
+ AirstrikePower@parabombs:
+ OrderName: UkraineParabombs
+ Prerequisites: aircraft.ukraine
+ Icon: parabombs
+ ChargeInterval: 7500
+ Description: Parabombs
+ LongDesc: A squad of Badgers drop parachuted\nbombs on your target.
+ SelectTargetSpeechNotification: SelectTarget
+ CameraActor: camera
+ CameraRemoveDelay: 150
+ UnitType: badr.bomber
+ QuantizedFacings: 8
+ DisplayBeacon: true
+ BeaconPoster: pbmbicon
+ SquadSize: 3
+ SquadOffset: 1792,1792,0
+ ArrowSequence: arrow
+ ClockSequence: clock
+ CircleSequence: circles
+ ProductionBar:
+ SupportPowerChargeBar:
+ PrimaryBuilding:
+ PrimaryCondition: primary
+ Power:
+ Amount: -20
+ ProvidesPrerequisite@buildingname:
+ Prerequisite: afld
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, SpyInfiltrate
+ InfiltrateForSupportPower:
+ Proxy: aircraft.upgraded
+ Types: SpyInfiltrate
+ WithDecoration@primary:
+ RequiresSelection: true
+ Image: pips
+ Sequence: tag-primary
+ ReferencePoint: Top
+ ZOffset: 256
+ RequiresCondition: primary
+ WithRearmAnimation:
+
+AFLD.Ukraine:
+ Inherits: AFLD
+ Buildable:
+ Prerequisites: dome, ~techlevel.medium, ~structures.ukraine
+ Description: Produces and reloads aircraft.\n Special Ability: Spy Plane\n Special Ability: Paratroopers\n Special Ability: Parabombs
+ RenderSprites:
+ Image: afld
+
+POWR:
+ Inherits: ^Building
+ Inherits@POWER_OUTAGE: ^DisabledByPowerOutage
+ Inherits@shape: ^2x2Shape
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: 0,0,0, 640,-384,0, 640,512,0, -710,-512,0, -710,512,0
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 10
+ Prerequisites: ~techlevel.infonly
+ Description: Provides power for other structures.
+ Valued:
+ Cost: 300
+ Tooltip:
+ Name: Power Plant
+ ProvidesPrerequisite:
+ Prerequisite: anypower
+ Building:
+ Footprint: xx xx ==
+ Dimensions: 2,3
+ LocalCenterOffset: 0,-512,0
+ Health:
+ HP: 400
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 5c0
+ WithBuildingBib:
+ Power:
+ Amount: 100
+ Targetable:
+ TargetTypes: Ground, Structure, C4, DetonateAttack, SpyInfiltrate
+ ScalePowerWithHealth:
+ WithDeathAnimation:
+ DeathSequence: dead
+ UseDeathTypeSuffix: false
+
+APWR:
+ Inherits: ^Building
+ Inherits@POWER_OUTAGE: ^DisabledByPowerOutage
+ Inherits@shape: ^3x2Shape
+ HitShape:
+ TargetableOffsets: -355,-1024,0
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 110
+ Prerequisites: dome, ~techlevel.medium
+ Description: Provides double the power of\na standard Power Plant.
+ Valued:
+ Cost: 500
+ Tooltip:
+ Name: Advanced Power Plant
+ ProvidesPrerequisite:
+ Prerequisite: anypower
+ Building:
+ Footprint: xxx Xxx ===
+ Dimensions: 3,3
+ LocalCenterOffset: 0,-512,0
+ Selectable:
+ Bounds: 72,48
+ DecorationBounds: 72,68,0,-10
+ SelectionDecorations:
+ Health:
+ HP: 700
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 5c0
+ WithBuildingBib:
+ Power:
+ Amount: 200
+ Targetable:
+ TargetTypes: Ground, Structure, C4, DetonateAttack, SpyInfiltrate
+ ScalePowerWithHealth:
+ WithDeathAnimation:
+ DeathSequence: dead
+ UseDeathTypeSuffix: false
+
+STEK:
+ Inherits: ^ScienceBuilding
+ Inherits@shape: ^3x2Shape
+ HitShape:
+ TargetableOffsets: 420,-768,0, 420,768,0, -770,-768,0, -770,768,0
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 150
+ Prerequisites: weap, dome, ~structures.soviet, ~techlevel.high
+ Description: Provides Soviet advanced technologies.
+ Valued:
+ Cost: 1500
+ Tooltip:
+ Name: Soviet Tech Center
+ ProvidesPrerequisite:
+ Prerequisite: techcenter
+ Building:
+ Footprint: XxX XxX ===
+ Dimensions: 3,3
+ LocalCenterOffset: 0,-512,0
+ Health:
+ HP: 800
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 7c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ WithBuildingBib:
+ Power:
+ Amount: -100
+ ProvidesPrerequisite@buildingname:
+
+BARR:
+ Inherits: ^Building
+ Inherits@shape: ^2x2Shape
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: 0,0,0, 490,-470,0, 355,512,0, -355,-512,0, -630,512,0
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 30
+ Prerequisites: anypower, ~structures.soviet, ~techlevel.infonly
+ Description: Trains infantry.
+ Valued:
+ Cost: 500
+ Tooltip:
+ Name: Soviet Barracks
+ Building:
+ Footprint: xx xx ==
+ Dimensions: 2,3
+ LocalCenterOffset: 0,-512,0
+ Health:
+ HP: 600
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 5c0
+ WithBuildingBib:
+ RallyPoint:
+ Exit@1:
+ SpawnOffset: -170,810,0
+ ExitCell: 1,2
+ ProductionTypes: Soldier, Infantry
+ Exit@2:
+ SpawnOffset: -725,640,0
+ ExitCell: 0,2
+ ProductionTypes: Soldier, Infantry
+ Production:
+ Produces: Infantry, Soldier
+ PrimaryBuilding:
+ PrimaryCondition: primary
+ ProductionBar:
+ ProvidesPrerequisite:
+ Prerequisite: barracks
+ ProvidesPrerequisite@soviet:
+ Factions: soviet, russia, ukraine
+ Prerequisite: infantry.soviet
+ ProvidesPrerequisite@sovietvanilla:
+ Factions: soviet
+ Prerequisite: infantry.sovietvanilla
+ ProvidesPrerequisite@russia:
+ Factions: russia
+ Prerequisite: infantry.russia
+ ProvidesPrerequisite@ukraine:
+ Factions: ukraine
+ Prerequisite: infantry.ukraine
+ ProvidesPrerequisite@sovietstructure:
+ RequiresPrerequisites: structures.soviet
+ Prerequisite: infantry.soviet
+ ProvidesPrerequisite@sovietvanillastructure:
+ RequiresPrerequisites: structures.sovietvanilla
+ Prerequisite: infantry.sovietvanilla
+ ProvidesPrerequisite@russianstructure:
+ RequiresPrerequisites: structures.russia
+ Prerequisite: infantry.russia
+ ProvidesPrerequisite@ukrainianstructure:
+ RequiresPrerequisites: structures.ukraine
+ Prerequisite: infantry.ukraine
+ Power:
+ Amount: -20
+ ProvidesPrerequisite@buildingname:
+ InfiltrateForSupportPower:
+ Proxy: barracks.upgraded
+ Types: SpyInfiltrate
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, SpyInfiltrate
+ WithDecoration@primary:
+ RequiresSelection: true
+ Image: pips
+ Sequence: tag-primary
+ ReferencePoint: Top
+ ZOffset: 256
+ RequiresCondition: primary
+
+KENN:
+ Inherits: ^Building
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 175
+ Prerequisites: anypower, ~structures.soviet, ~techlevel.infonly
+ Description: Trains Attack Dogs.
+ Valued:
+ Cost: 100
+ Tooltip:
+ Name: Kennel
+ -GivesBuildableArea:
+ Health:
+ HP: 300
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 4c0
+ WithBuildingBib:
+ HasMinibib: True
+ RallyPoint:
+ Offset: 0,2
+ Exit@1:
+ SpawnOffset: -280,400,0
+ ExitCell: 0,1
+ ProductionTypes: Dog, Infantry
+ Exit@2:
+ SpawnOffset: -280,400,0
+ ExitCell: -1,0
+ ProductionTypes: Dog, Infantry
+ Production:
+ Produces: Infantry, Dog
+ PrimaryBuilding:
+ PrimaryCondition: primary
+ ProductionBar:
+ -EmitInfantryOnSell:
+ Power:
+ Amount: 0
+ ProvidesPrerequisite@buildingname:
+ WithDecoration@primary:
+ RequiresSelection: true
+ Image: pips
+ Sequence: tag-primary
+ ReferencePoint: Top
+ ZOffset: 256
+ RequiresCondition: primary
+
+TENT:
+ Inherits: ^Building
+ Inherits@shape: ^2x2Shape
+ HitShape:
+ UseTargetableCellsOffsets: false
+ TargetableOffsets: 0,0,0, 630,-512,0, 355,512,0, -281,-512,0, -630,512,0
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 20
+ Prerequisites: anypower, ~structures.allies, ~techlevel.infonly
+ Description: Trains infantry.
+ Valued:
+ Cost: 500
+ Tooltip:
+ Name: Allied Barracks
+ Building:
+ Footprint: xx xx ==
+ Dimensions: 2,3
+ LocalCenterOffset: 0,-512,0
+ Health:
+ HP: 600
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 5c0
+ WithBuildingBib:
+ RallyPoint:
+ Exit@1:
+ SpawnOffset: -42,810,0
+ ExitCell: 1,2
+ ProductionTypes: Soldier, Infantry
+ Exit@2:
+ SpawnOffset: -725,640,0
+ ExitCell: 0,2
+ ProductionTypes: Soldier, Infantry
+ Production:
+ Produces: Infantry, Soldier
+ PrimaryBuilding:
+ PrimaryCondition: primary
+ ProductionBar:
+ ProvidesPrerequisite@barracks:
+ Prerequisite: barracks
+ ProvidesPrerequisite@allies:
+ Factions: allies, england, france, germany
+ Prerequisite: infantry.allies
+ ProvidesPrerequisite@alliesvanilla:
+ Factions: allies
+ Prerequisite: infantry.alliesvanilla
+ ProvidesPrerequisite@england:
+ Factions: england
+ Prerequisite: infantry.england
+ ProvidesPrerequisite@france:
+ Factions: france
+ Prerequisite: infantry.france
+ ProvidesPrerequisite@germany:
+ Factions: germany
+ Prerequisite: infantry.germany
+ ProvidesPrerequisite@alliedstructure:
+ RequiresPrerequisites: structures.allies
+ Prerequisite: infantry.allies
+ ProvidesPrerequisite@alliedvanillastructure:
+ RequiresPrerequisites: structures.alliesvanilla
+ Prerequisite: infantry.alliesvanilla
+ ProvidesPrerequisite@englishstructure:
+ RequiresPrerequisites: structures.england
+ Prerequisite: infantry.england
+ ProvidesPrerequisite@frenchstructure:
+ RequiresPrerequisites: structures.france
+ Prerequisite: infantry.france
+ ProvidesPrerequisite@germanstructure:
+ RequiresPrerequisites: structures.germany
+ Prerequisite: infantry.germany
+ Power:
+ Amount: -20
+ ProvidesPrerequisite@buildingname:
+ InfiltrateForSupportPower:
+ Proxy: barracks.upgraded
+ Types: SpyInfiltrate
+ Targetable:
+ TargetTypes: Ground, C4, DetonateAttack, Structure, SpyInfiltrate
+ WithDecoration@primary:
+ RequiresSelection: true
+ Image: pips
+ Sequence: tag-primary
+ ReferencePoint: Top
+ ZOffset: 256
+ RequiresCondition: primary
+
+FIX:
+ Inherits: ^Building
+ Buildable:
+ Queue: Building
+ BuildPaletteOrder: 100
+ Prerequisites: weap, ~techlevel.medium
+ Description: Repairs vehicles for credits.
+ Valued:
+ Cost: 1200
+ Tooltip:
+ Name: Service Depot
+ Building:
+ Footprint: _=_ xxx _=_
+ Dimensions: 3,3
+ Selectable:
+ Bounds: 68,34,0,3
+ DecorationBounds: 72,48
+ SelectionDecorations:
+ Health:
+ HP: 800
+ Armor:
+ Type: Wood
+ RevealsShroud:
+ Range: 6c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 5c0
+ WithBuildingBib:
+ HasMinibib: Yes
+ Reservable:
+ RallyPoint:
+ RepairsUnits:
+ HpPerStep: 1000
+ Interval: 7
+ FinishRepairingNotification: UnitRepaired
+ PlayerExperience: 15
+ WithRepairAnimation:
+ WithRearmAnimation:
+ Power:
+ Amount: -30
+ ProvidesPrerequisite@buildingname:
+ HitShape:
+ Type: Rectangle
+ TopLeft: -1536, -683
+ BottomRight: 1536, 853
+ HitShape@TOPANDBOTTOM:
+ TargetableOffsets: 840,0,0, -1060,0,0
+ Type: Rectangle
+ TopLeft: -640, -768
+ BottomRight: 640, 1024
+
+SBAG:
+ Inherits: ^Wall
+ Buildable:
+ Queue: Defense
+ BuildPaletteOrder: 10
+ Prerequisites: fact, ~structures.allies, ~techlevel.low
+ Description: Stops infantry and light vehicles.\nCan be crushed by tanks.
+ Valued:
+ Cost: 50
+ CustomSellValue:
+ Value: 0
+ Tooltip:
+ Name: Sandbag Wall
+ Health:
+ HP: 150
+ Armor:
+ Type: Wood
+ LineBuild:
+ Range: 8
+ NodeTypes: sandbag
+ LineBuildNode:
+ Types: sandbag
+ WithWallSpriteBody:
+ Type: sandbag
+
+FENC:
+ Inherits: ^Wall
+ Buildable:
+ Queue: Defense
+ BuildPaletteOrder: 20
+ Prerequisites: fact, ~structures.soviet, ~techlevel.low
+ Description: Stops infantry and light vehicles.\nCan be crushed by tanks.
+ Valued:
+ Cost: 50
+ CustomSellValue:
+ Value: 0
+ Tooltip:
+ Name: Wire Fence
+ Health:
+ HP: 150
+ Armor:
+ Type: Wood
+ LineBuild:
+ Range: 8
+ NodeTypes: fence
+ LineBuildNode:
+ Types: fence
+ WithWallSpriteBody:
+ Type: fence
+
+BRIK:
+ Inherits: ^Wall
+ Buildable:
+ Queue: Defense
+ BuildPaletteOrder: 30
+ Prerequisites: fact, ~techlevel.medium
+ Description: Stop units and blocks enemy fire.
+ Valued:
+ Cost: 200
+ CustomSellValue:
+ Value: 0
+ Tooltip:
+ Name: Concrete Wall
+ SoundOnDamageTransition:
+ DamagedSounds: crmble2.aud
+ DestroyedSounds: kaboom30.aud
+ Health:
+ HP: 400
+ Armor:
+ Type: Concrete
+ Crushable:
+ CrushClasses: heavywall
+ BlocksProjectiles:
+ LineBuild:
+ Range: 8
+ NodeTypes: concrete
+ LineBuildNode:
+ Types: concrete
+ WithWallSpriteBody:
+ Type: concrete
+
+VGATE:
+ Inherits: ^Gate
+ HitShape:
+ UseTargetableCellsOffsets: true
+ Type: Rectangle
+ TopLeft: -512, -1536
+ BottomRight: 512, 1536
+ Building:
+ Footprint: x x x
+ Dimensions: 1,3
+ WithGateSpriteBody:
+ WallConnections: 0,-1, 0,3
+ LineBuildNode:
+ Connections: 0,-1, 0,1
+ Tooltip:
+ Name: Vertical Gate
+
+HGATE:
+ Inherits: ^Gate
+ HitShape:
+ UseTargetableCellsOffsets: true
+ Type: Rectangle
+ TopLeft: -1536, -512
+ BottomRight: 1536, 512
+ Building:
+ Footprint: xxx
+ Dimensions: 3,1
+ WithGateSpriteBody:
+ WallConnections: -1,0, 3,0
+ LineBuildNode:
+ Connections: -1,0, 1,0
+ Tooltip:
+ Name: Horizontal Gate
+ RenderSprites:
+ Image: agate
+ FactionImages:
+ allies: agate
+ england: agate
+ france: agate
+ germany: agate
+ soviet: sgate
+ russia: sgate
+ ukraine: sgate
+
+CYCL:
+ Inherits: ^Wall
+ Tooltip:
+ Name: Chain-Link Barrier
+ Armor:
+ Type: Wood
+ LineBuild:
+ NodeTypes: chain
+ LineBuildNode:
+ Types: chain
+ WithWallSpriteBody:
+ Type: chain
+
+BARB:
+ Inherits: ^Wall
+ Tooltip:
+ Name: Barbed-Wire Fence
+ Armor:
+ Type: Wood
+ LineBuild:
+ NodeTypes: barbwire
+ LineBuildNode:
+ Types: barbwire
+ WithWallSpriteBody:
+ Type: barbwire
+
+WOOD:
+ Inherits: ^Wall
+ Tooltip:
+ Name: Wooden Fence
+ Armor:
+ Type: Wood
+ LineBuild:
+ NodeTypes: woodfence
+ LineBuildNode:
+ Types: woodfence
+ WithWallSpriteBody:
+ Type: woodfence
+
+BARRACKS:
+ AlwaysVisible:
+ Interactable:
+ Tooltip:
+ Name: Infantry Production
+ Buildable:
+ Description: Infantry Production
+
+TECHCENTER:
+ AlwaysVisible:
+ Interactable:
+ Tooltip:
+ Name: Tech Center
+ Buildable:
+ Description: Tech Center
+
+ANYPOWER:
+ AlwaysVisible:
+ Interactable:
+ Tooltip:
+ Name: Power Plant
+ Buildable:
+ Description: Power Plant
diff --git a/mods/ura/rules/vehicles.yaml b/mods/ura/rules/vehicles.yaml
new file mode 100644
index 0000000..fd351b5
--- /dev/null
+++ b/mods/ura/rules/vehicles.yaml
@@ -0,0 +1,1101 @@
+V2RL:
+ Inherits: ^Vehicle
+ Inherits@GAINSEXPERIENCE: ^GainsExperience
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 90
+ Prerequisites: dome, ~vehicles.soviet, ~techlevel.medium
+ Description: Long-range rocket artillery.\n Strong vs Infantry, Buildings\n Weak vs Vehicles, Aircraft
+ Valued:
+ Cost: 900
+ Tooltip:
+ Name: V2 Rocket Launcher
+ Health:
+ HP: 200
+ Armor:
+ Type: Light
+ Mobile:
+ Speed: 85
+ RevealsShroud:
+ Range: 5c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ Armament:
+ Weapon: SCUD
+ PauseOnCondition: !ammo
+ AmmoPool:
+ Ammo: 1
+ PipCount: 0
+ AmmoCondition: ammo
+ ReloadAmmoPool:
+ Delay: 240
+ Count: 1
+ AttackFrontal:
+ WithFacingSpriteBody:
+ RequiresCondition: ammo
+ WithFacingSpriteBody@EMPTY:
+ RequiresCondition: !ammo
+ Sequence: empty-idle
+ SelectionDecorations:
+ Explodes:
+ Weapon: V2Explode
+ ProducibleWithLevel:
+ Prerequisites: vehicles.upgraded
+ Selectable:
+ DecorationBounds: 28,28
+
+1TNK:
+ Inherits: ^TrackedVehicle
+ Inherits@GAINSEXPERIENCE: ^GainsExperience
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 20
+ Prerequisites: ~vehicles.allies, ~techlevel.low
+ Description: Fast tank, good for scouting.\n Strong vs Light armor\n Weak vs Infantry, Tanks, Aircraft
+ Valued:
+ Cost: 700
+ Tooltip:
+ Name: Light Tank
+ GenericName: Tank
+ Health:
+ HP: 240
+ Armor:
+ Type: Heavy
+ Mobile:
+ Speed: 128
+ Crushes: wall, mine, crate, infantry
+ RevealsShroud:
+ Range: 6c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ RevealOnDeath:
+ Duration: 80
+ Radius: 2c512
+ Turreted:
+ TurnSpeed: 7
+ Armament:
+ Weapon: 25mm
+ Recoil: 85
+ RecoilRecovery: 25
+ LocalOffset: 768,0,90
+ MuzzleSequence: muzzle
+ DetectCloaked:
+ Range: 1c512
+ AttackTurreted:
+ WithMuzzleOverlay:
+ WithSpriteTurret:
+ SpawnActorOnDeath:
+ Actor: 1TNK.Husk
+ OwnerType: InternalName
+ EffectiveOwnerFromOwner: true
+ ProducibleWithLevel:
+ Prerequisites: vehicles.upgraded
+
+2TNK:
+ Inherits: ^TrackedVehicle
+ Inherits@GAINSEXPERIENCE: ^GainsExperience
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 70
+ Prerequisites: fix, ~vehicles.allies, ~techlevel.medium
+ Description: Allied Main Battle Tank.\n Strong vs Vehicles\n Weak vs Infantry, Aircraft
+ Valued:
+ Cost: 850
+ Tooltip:
+ Name: Medium Tank
+ GenericName: Tank
+ Health:
+ HP: 450
+ Armor:
+ Type: Heavy
+ Mobile:
+ Speed: 85
+ Crushes: wall, mine, crate, infantry
+ RevealsShroud:
+ Range: 7c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ RevealOnDeath:
+ Duration: 80
+ Radius: 2c512
+ Turreted:
+ TurnSpeed: 5
+ Armament:
+ Weapon: 90mm
+ Recoil: 128
+ RecoilRecovery: 38
+ LocalOffset: 720,0,80
+ MuzzleSequence: muzzle
+ DetectCloaked:
+ Range: 1c512
+ AttackTurreted:
+ WithMuzzleOverlay:
+ WithSpriteTurret:
+ SpawnActorOnDeath:
+ Actor: 2TNK.Husk
+ OwnerType: InternalName
+ EffectiveOwnerFromOwner: true
+ SelectionDecorations:
+ ProducibleWithLevel:
+ Prerequisites: vehicles.upgraded
+ Selectable:
+ DecorationBounds: 28,28
+
+#2TNK.GER:
+# Inherits: 2TNK
+# Buildable:
+# Prerequisites: fix, ~vehicles.germany, ~techlevel.medium
+# Valued:
+# Cost: 1050
+# Health:
+# HP: 500
+# Tooltip:
+# Name: German Medium Tank
+# Description: German Main Battle Tank.\n Strong vs Vehicles\n Weak vs Infantry, Aircraft
+# Turreted:
+# TurnSpeed: 4
+# Armament:
+# Weapon: 90mm.Germany
+# RenderSprites:
+# Image: 2tnkger
+# SpawnActorOnDeath:
+# Actor: 2TNK.GER.Husk
+
+3TNK:
+ Inherits: ^TrackedVehicle
+ Inherits@GAINSEXPERIENCE: ^GainsExperience
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 70
+ Prerequisites: fix, ~vehicles.soviet, ~techlevel.medium
+ Description: Soviet Main Battle Tank, with dual cannons\n Strong vs Vehicles\n Weak vs Infantry, Aircraft
+ Valued:
+ Cost: 1150
+ Tooltip:
+ Name: Heavy Tank
+ GenericName: Tank
+ Health:
+ HP: 600
+ Armor:
+ Type: Heavy
+ Mobile:
+ Speed: 71
+ Crushes: wall, mine, crate, infantry
+ RevealsShroud:
+ Range: 7c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ RevealOnDeath:
+ Duration: 80
+ Radius: 2c512
+ Turreted:
+ TurnSpeed: 5
+ Armament:
+ Weapon: 105mm
+ Recoil: 128
+ RecoilRecovery: 38
+ LocalOffset: 768,85,90, 768,-85,90
+ MuzzleSequence: muzzle
+ DetectCloaked:
+ Range: 1c512
+ AttackTurreted:
+ WithMuzzleOverlay:
+ WithSpriteTurret:
+ SpawnActorOnDeath:
+ Actor: 3TNK.Husk
+ OwnerType: InternalName
+ EffectiveOwnerFromOwner: true
+ SelectionDecorations:
+ ProducibleWithLevel:
+ Prerequisites: vehicles.upgraded
+ Selectable:
+ DecorationBounds: 28,28
+
+4TNK:
+ Inherits: ^TrackedVehicle
+ Inherits@GAINSEXPERIENCE: ^GainsExperience
+ Inherits@AUTOTARGET: ^AutoTargetAll
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 160
+ Prerequisites: fix, stek, ~vehicles.soviet, ~techlevel.high
+ BuildDuration: 2500
+ BuildDurationModifier: 40
+ Description: Big and slow tank, with anti-air capability.\nCan crush concrete walls.\nCan detect cloaked units.\n Strong vs Vehicles, Infantry, Aircraft\n Weak vs Nothing
+ Valued:
+ Cost: 2000
+ Tooltip:
+ Name: Mammoth Tank
+ GenericName: Tank
+ Health:
+ HP: 900
+ Armor:
+ Type: Heavy
+ Mobile:
+ Speed: 50
+ Crushes: wall, mine, crate, infantry, heavywall
+ RevealsShroud:
+ Range: 7c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ RevealOnDeath:
+ Duration: 80
+ Radius: 2c512
+ Turreted:
+ TurnSpeed: 2
+ Armament@PRIMARY:
+ Weapon: 120mm
+ LocalOffset: 900,180,340, 900,-180,340
+ Recoil: 171
+ RecoilRecovery: 30
+ MuzzleSequence: muzzle
+ Armament@SECONDARY:
+ Name: secondary
+ Weapon: MammothTusk
+ LocalOffset: -85,384,340, -85,-384,340
+ LocalYaw: -100,100
+ Recoil: 43
+ MuzzleSequence: muzzle
+ DetectCloaked:
+ Range: 1c512
+ AttackTurreted:
+ WithMuzzleOverlay:
+ WithSpriteTurret:
+ SpawnActorOnDeath:
+ Actor: 4TNK.Husk
+ OwnerType: InternalName
+ EffectiveOwnerFromOwner: true
+ SelfHealing:
+ Step: 100
+ Delay: 3
+ HealIfBelow: 50
+ DamageCooldown: 150
+ SelectionDecorations:
+ ProducibleWithLevel:
+ Prerequisites: vehicles.upgraded
+ DetectCloaked:
+ Range: 6c0
+ Selectable:
+ DecorationBounds: 44,38,0,-4
+
+#Modified version of the Mammoth KV-8 by FiveAces
+4TNK.KV-8:
+ Inherits: 4TNK
+ Buildable:
+ BuildPaletteOrder: 200
+ Prerequisites: fix, stek, ~vehicles.ukraine, ~techlevel.high
+ Tooltip:
+ Name: Mammoth KV-8
+ Description: Heavy flamethrower tank, with anti-air capability.\n Strong vs Buildings, Infantry, Aircraft\n Weak vs Tanks
+ Health:
+ HP: 800
+ Mobile:
+ Speed: 63
+ Armament@PRIMARY:
+ Weapon: KVFlame
+ LocalOffset: 900,180,340, 900,-180,340
+ Recoil: 171
+ RecoilRecovery: 30
+ MuzzleSequence: muzzle
+ Armament@SECONDARY:
+ Name: secondary
+ Weapon: MammothTuskAT
+ LocalOffset: -85,384,340, -85,-384,340
+ LocalYaw: -100,100
+ Recoil: 43
+ MuzzleSequence: muzzle
+ SpawnActorOnDeath:
+ Actor: 4TNK.KV-8.Husk
+ RenderSprites:
+ Image: 4tnk.kv-8
+
+ARTY:
+ Inherits: ^TrackedVehicle
+ Inherits@GAINSEXPERIENCE: ^GainsExperience
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 80
+ Prerequisites: dome, ~vehicles.allies, ~techlevel.medium
+ Description: Long-range artillery.\n Strong vs Infantry, Buildings\n Weak vs Vehicles, Aircraft
+ Valued:
+ Cost: 800
+ Tooltip:
+ Name: Artillery
+ Health:
+ HP: 100
+ Armor:
+ Type: Light
+ Mobile:
+ TurnSpeed: 2
+ Speed: 85
+ RevealsShroud:
+ Range: 5c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ Armament:
+ Weapon: 155mm
+ LocalOffset: 624,0,208
+ MuzzleSequence: muzzle
+ AttackFrontal:
+ WithMuzzleOverlay:
+ Explodes:
+ Weapon: ArtilleryExplode
+ EmptyWeapon: UnitExplodeSmall
+ LoadedChance: 75
+ ProducibleWithLevel:
+ Prerequisites: vehicles.upgraded
+
+HARV:
+ Inherits: ^Vehicle
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 10
+ Prerequisites: proc, ~techlevel.infonly
+ Description: Collects Ore and Gems for processing.\n Unarmed
+ Valued:
+ Cost: 1100
+ Tooltip:
+ Name: Ore Truck
+ GenericName: Harvester
+ Selectable:
+ Priority: 7
+ DecorationBounds: 42,42
+ SelectionDecorations:
+ Harvester:
+ Capacity: 20
+ Resources: Ore,Gems
+ BaleUnloadDelay: 1
+ SearchFromProcRadius: 30
+ SearchFromOrderRadius: 11
+ Health:
+ HP: 600
+ Armor:
+ Type: Heavy
+ Mobile:
+ Speed: 85
+ Crushes: wall, mine, crate, infantry
+ RevealsShroud:
+ Range: 6c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ RevealOnDeath:
+ Duration: 80
+ Radius: 2c512
+ WithHarvestAnimation:
+ PrefixByFullness: empty-, half-, full-
+ WithDockingAnimation:
+ GpsDot:
+ String: Harvester
+ SpawnActorOnDeath:
+ Actor: HARV.EmptyHusk
+ OwnerType: InternalName
+ EffectiveOwnerFromOwner: true
+ HarvesterHuskModifier:
+ FullActor: HARV.FullHusk
+ FullnessThreshold: 50
+ SelfHealing:
+ Step: 100
+ Delay: 25
+ HealIfBelow: 50
+ DamageCooldown: 500
+ Explodes:
+ Weapon: OreExplosion
+
+MCV:
+ Inherits: ^Vehicle
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 90
+ Prerequisites: fix, ~techlevel.medium
+ BuildDuration: 2500
+ BuildDurationModifier: 40
+ Description: Deploys into another Construction Yard.\n Unarmed
+ Valued:
+ Cost: 2000
+ Tooltip:
+ Name: Mobile Construction Vehicle
+ Selectable:
+ Priority: 4
+ DecorationBounds: 42,42
+ SelectionDecorations:
+ Health:
+ HP: 600
+ Armor:
+ Type: Light
+ Mobile:
+ Speed: 71
+ Crushes: wall, mine, crate, infantry
+ RevealsShroud:
+ Range: 6c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ RevealOnDeath:
+ Duration: 80
+ Radius: 2c512
+ Transforms:
+ IntoActor: fact
+ Offset: -1,-1
+ Facing: 96
+ TransformSounds: placbldg.aud, build5.aud
+ NoTransformNotification: BuildingCannotPlaceAudio
+ MustBeDestroyed:
+ RequiredForShortGame: true
+ BaseBuilding:
+ SpawnActorOnDeath:
+ Actor: MCV.Husk
+ OwnerType: InternalName
+ EffectiveOwnerFromOwner: true
+
+#Jeep IFV traits using custom yaml code by Grayon Dilach
+JEEP:
+ Inherits: ^Vehicle
+ Inherits@GAINSEXPERIENCE: ^GainsExperience
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 30
+ Prerequisites: ~vehicles.allies, ~techlevel.low
+ Description: Fast scout & anti-infantry vehicle.\nCan carry one infantry.\n Strong vs Infantry\n Weak vs Vehicles, Aircraft
+ Valued:
+ Cost: 500
+ Tooltip:
+ Name: Ranger
+ Health:
+ HP: 160
+ Armor:
+ Type: Light
+ Mobile:
+ TurnSpeed: 10
+ Speed: 170
+ RequiresCondition: !notmobile
+ RevealsShroud:
+ Range: 9c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ Turreted:
+ TurnSpeed: 10
+ Offset: 0,0,128
+ Armament:
+ Weapon: M60mg
+ MuzzleSequence: muzzle
+ LocalOffset: 128,0,43
+ AttackTurreted:
+ WithMuzzleOverlay:
+ WithSpriteTurret:
+ Cargo:
+ Types: Infantry
+ MaxWeight: 1
+ PipCount: 1
+ LoadingCondition: notmobile
+ ProducibleWithLevel:
+ Prerequisites: vehicles.upgraded
+ Cargo:
+ LoadedCondition: loaded
+ PassengerConditions:
+ e1: ifv-rifle
+ e1r1: ifv-rifle
+ e2: ifv-grenadier
+ e3: ifv-rocket
+ e3r1: ifv-rocket
+ e4: ifv-flame
+ e6: ifv-engineer
+ spy: ifv-spy
+ spy.england: ifv-spy
+ e7: ifv-tanya
+ medi: ifv-medic
+ mech: ifv-mechanic
+ hijacker: ifv-hijacker
+ thf: ifv-hijacker
+ shok: ifv-tesla
+ sniper: ifv-sniper
+ dog: ifv-dog
+ tecn: ifv-technician
+ GrantCondition@civfallback:
+ RequiresCondition: loaded && !ifv-rifle && !ifv-grenadier && !ifv-rocket && !ifv-flame && !ifv-engineer && !ifv-spy && !ifv-tanya && !ifv-medic && !ifv-mechanic && !ifv-hijacker && !ifv-tesla && !ifv-sniper && !ifv-dog && !ifv-technician
+ Condition: ifv-civilian
+ Tooltip:
+ Name: Ranger
+ RequiresCondition: !loaded
+ RenderDetectionCircle:
+ Armament:
+ RequiresCondition: !loaded || ifv-rifle || ifv-civilian || ifv-spy || ifv-hijacker || ifv-dog || ifv-engineer
+ FirepowerMultiplier@generic-ifv-bonus:
+ Modifier: 125
+ RequiresCondition: ifv-rifle
+ FirepowerMultiplier@generic-ifv-bonus2:
+ Modifier: 150
+ RequiresCondition: ifv-medic || ifv-mechanic || ifv-technician
+ FirepowerMultiplier@generic-ifv-bonus3:
+ Modifier: 60
+ RequiresCondition: ifv-rocket
+ FirepowerMultiplier@generic-ifv-bonus4:
+ Modifier: 75
+ RequiresCondition: ifv-flame
+ Tooltip@default:
+ Name: Ranger
+ RequiresCondition: ifv-engineer || ifv-hijacker
+ Tooltip@rifleman:
+ Name: Assault Ranger
+ RequiresCondition: ifv-rifle
+ Armament@rocketAG:
+ Weapon: Dragon
+ LocalOffset: 128,0,43
+ RequiresCondition: ifv-rocket
+ Tooltip@rocket:
+ Name: Rocket Ranger
+ RequiresCondition: ifv-rocket
+ Armament@medic:
+ Weapon: Heal
+ Cursor: heal
+ OutsideRangeCursor: heal
+ TargetStances: Ally
+ ForceTargetStances: None
+ RequiresCondition: ifv-medic
+ Tooltip@medic:
+ Name: Medic Ranger
+ RequiresCondition: ifv-medic
+ Armament@mechanic:
+ Weapon: Repair
+ Cursor: repair
+ OutsideRangeCursor: repair
+ TargetStances: Ally
+ ForceTargetStances: None
+ RequiresCondition: ifv-mechanic
+ SelfHealing@mechanic:
+ Step: 10
+ Delay: 50
+ HealIfBelow: 100
+ DamageCooldown: 150
+ RequiresCondition: ifv-mechanic
+ Tooltip@mechanic:
+ Name: Mechanic Ranger
+ RequiresCondition: ifv-mechanic
+ DetectCloaked@spyorhijackerordog:
+ CloakTypes: Cloak, Hijacker
+ RequiresCondition: ifv-spy || ifv-dog
+ Tooltip@dogorspy:
+ Name: Detection Ranger
+ RequiresCondition: ifv-spy || ifv-dog
+ Armament@technician:
+ Weapon: Pistol
+ LocalOffset: 128,0,43
+ MuzzleSequence: muzzle
+ RequiresCondition: ifv-technician
+ Tooltip@technician:
+ Name: Light Ranger
+ RequiresCondition: ifv-technician
+ Armament@sniper:
+ Weapon: SniperIFV
+ LocalOffset: 128,0,43
+ RequiresCondition: ifv-sniper || ifv-tanya
+ MuzzleSequence: muzzle
+ Tooltip@sniper:
+ Name: Sniper Ranger
+ RequiresCondition: ifv-sniper
+ Tooltip@tanya:
+ Name: Sniper Ranger
+ RequiresCondition: ifv-tanya
+
+ Armament@grenadier:
+ Weapon: Grenade
+ LocalOffset: 128,0,43
+ RequiresCondition: ifv-grenadier
+ Tooltip@grenadier:
+ Name: Grenade Ranger
+ RequiresCondition: ifv-grenadier
+ Armament@flamer:
+ Weapon: Flamer
+ LocalOffset: 128,0,43
+ RequiresCondition: ifv-flame
+ Tooltip@flamer:
+ Name: Flamer Ranger
+ RequiresCondition: ifv-flame
+ Armament@shock:
+ Weapon: TTankZap
+ LocalOffset: 128,0,43
+ RequiresCondition: ifv-tesla
+ Tooltip@shock:
+ Name: Shock Ranger
+ RequiresCondition: ifv-tesla
+ GrantCondition@customautotarget:
+ RequiresCondition: ifv-medic || ifv-mechanic || ifv-sniper || ifv-tanya
+ Condition: customautotarget
+ AutoTargetPriority@DEFAULT:
+ RequiresCondition: !stance-attackanything && !assault-move && !customautotarget
+ AutoTargetPriority@ATTACKANYTHING:
+ RequiresCondition: stance-attackanything || assault-move && !customautotarget
+ AutoTargetPriority@INCLUDEAIR:
+ ValidTargets: Air
+ InvalidTargets: NoAutoTarget
+ RequiresCondition: ifv-rocket || ifv-tanya
+ AutoTargetPriority@MEDICORSNIPERORTANYA:
+ ValidTargets: Infantry
+ InvalidTargets: NoAutoTarget
+ RequiresCondition: ifv-medic || ifv-sniper || ifv-tanya
+ AutoTargetPriority@MECHANIC:
+ ValidTargets: Vehicle, Tank
+ InvalidTargets: NoAutoTarget
+ RequiresCondition: ifv-mechanic
+
+APC:
+ Inherits: ^TrackedVehicle
+ Inherits@GAINSEXPERIENCE: ^GainsExperience
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 40
+ Prerequisites: ~vehicles.soviet, ~techlevel.low
+ Description: Tough infantry transport.\n Strong vs Infantry, Light armor\n Weak vs Tanks, Aircraft
+ Valued:
+ Cost: 850
+ Tooltip:
+ Name: Armored Personnel Carrier
+ Health:
+ HP: 300
+ Armor:
+ Type: Heavy
+ Mobile:
+ Speed: 142
+ Crushes: wall, mine, crate, infantry
+ RequiresCondition: !notmobile
+ RevealsShroud:
+ Range: 6c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ Armament:
+ Weapon: M60mg
+ LocalOffset: 85,0,171
+ MuzzleSequence: muzzle
+ DetectCloaked:
+ Range: 1c512
+ AttackFrontal:
+ WithMuzzleOverlay:
+ Cargo:
+ Types: Infantry
+ MaxWeight: 5
+ PipCount: 5
+ LoadingCondition: notmobile
+ ProducibleWithLevel:
+ Prerequisites: vehicles.upgraded
+
+MNLY:
+ Inherits: ^TrackedVehicle
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 100
+ Prerequisites: fix, ~techlevel.medium
+ Description: Lays mines to destroy\nunwary enemy units.\nCan detect mines.\n Unarmed
+ Valued:
+ Cost: 800
+ Tooltip:
+ Name: Minelayer
+ Health:
+ HP: 150
+ Armor:
+ Type: Heavy
+ Mobile:
+ Speed: 128
+ Crushes: wall, mine, crate, infantry
+ RevealsShroud:
+ Range: 6c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ Minelayer:
+ Mine: MINV
+ MineImmune:
+ AmmoPool:
+ Ammo: 5
+ RearmSound: minelay1.aud
+ DetectCloaked:
+ Range: 5c0
+ CloakTypes: Mine
+ RenderDetectionCircle:
+ Explodes:
+ Weapon: ATMine
+ RenderSprites:
+ Image: MNLY
+
+TRUK:
+ Inherits: ^Vehicle
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 50
+ Prerequisites: ~techlevel.low
+ Description: Transports cash to other players.\n Unarmed
+ Valued:
+ Cost: 500
+ Tooltip:
+ Name: Supply Truck
+ Selectable:
+ Priority: 6
+ Health:
+ HP: 110
+ Armor:
+ Type: Light
+ Mobile:
+ Speed: 128
+ RevealsShroud:
+ Range: 5c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ DeliversCash:
+ Payload: 500
+ PlayerExperience: 50
+ SpawnActorOnDeath:
+ Actor: moneycrate
+
+MGG:
+ Inherits: ^Vehicle
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 150
+ Prerequisites: dome, ~vehicles.france, ~techlevel.medium
+ BuildDuration: 1370
+ BuildDurationModifier: 40
+ Description: Regenerates the shroud nearby, \nobscuring the area.\n Unarmed
+ Valued:
+ Cost: 1100
+ Tooltip:
+ Name: Mobile Gap Generator
+ Health:
+ HP: 220
+ Armor:
+ Type: Heavy
+ Mobile:
+ Speed: 99
+ WithIdleOverlay@SPINNER:
+ Offset: -299,0,171
+ Sequence: spinner
+ RevealsShroud:
+ Range: 7c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ CreatesShroud:
+ Range: 7c256
+ RenderShroudCircle:
+ SpawnActorOnDeath:
+ Actor: MGG.Husk
+ OwnerType: InternalName
+ EffectiveOwnerFromOwner: true
+
+MRJ:
+ Inherits: ^Vehicle
+ Valued:
+ Cost: 1100
+ Tooltip:
+ Name: Mobile Radar Jammer
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 140
+ Prerequisites: atek, ~vehicles.allies, ~techlevel.high
+ BuildDuration: 1370
+ BuildDurationModifier: 40
+ Description: Jams nearby enemy radar domes\nand deflects incoming missiles.\nCan detect cloaked units.\n Unarmed
+ Health:
+ HP: 220
+ Armor:
+ Type: Heavy
+ Mobile:
+ Speed: 99
+ RevealsShroud:
+ Range: 9c256
+ WithIdleOverlay@SPINNER:
+ Sequence: spinner
+ Offset: -256,0,256
+ ProximityExternalCondition@JAMMER:
+ Range: 18c0
+ ValidStances: Enemy, Neutral
+ Condition: jammed
+ WithRangeCircle@JAMMER:
+ Type: jammer
+ Range: 18c0
+ Color: 0000FF80
+ JamsMissiles:
+ Range: 6c0
+ DeflectionStances: Neutral, Enemy
+ RenderJammerCircle:
+ DetectCloaked:
+ Range: 6c0
+
+TTNK:
+ Inherits: ^TrackedVehicle
+ Inherits@GAINSEXPERIENCE: ^GainsExperience
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 200
+ Prerequisites: tsla, stek, ~vehicles.russia, ~techlevel.high
+ BuildDuration: 1166
+ Description: Tank with mounted Tesla coil.\n Strong vs Infantry, Vehicles, Buildings\n Weak vs Aircraft
+ Valued:
+ Cost: 1350
+ Tooltip:
+ Name: Tesla Tank
+ GenericName: Tank
+ Health:
+ HP: 450
+ Armor:
+ Type: Light
+ Mobile:
+ Speed: 113
+ Crushes: wall, mine, crate, infantry
+ RevealsShroud:
+ Range: 8c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ Armament:
+ Weapon: TTankZap
+ LocalOffset: 0,0,213
+ DetectCloaked:
+ Range: 1c512
+ AttackTurreted:
+ Turreted:
+ WithIdleOverlay@SPINNER:
+ Sequence: spinner
+ SelectionDecorations:
+ ProducibleWithLevel:
+ Prerequisites: vehicles.upgraded
+ Selectable:
+ DecorationBounds: 30,30
+
+FTRK:
+ Inherits: ^Vehicle
+ Inherits@GAINSEXPERIENCE: ^GainsExperience
+ Inherits@AUTOTARGET: ^AutoTargetAll
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 20
+ Prerequisites: ~vehicles.soviet, ~techlevel.low
+ Description: Mobile unit with mounted Flak cannon.\n Strong vs Infantry, Light armor, Aircraft\n Weak vs Tanks
+ Valued:
+ Cost: 600
+ Tooltip:
+ Name: Mobile Flak
+ Health:
+ HP: 150
+ Armor:
+ Type: Light
+ Mobile:
+ TurnSpeed: 10
+ Speed: 128
+ RevealsShroud:
+ Range: 7c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ Turreted:
+ TurnSpeed: 10
+ Offset: -298,0,298
+ Armament@AA:
+ Weapon: FLAK-23-AA
+ Recoil: 85
+ LocalOffset: 512,0,192
+ MuzzleSequence: muzzle
+ Armament@AG:
+ Weapon: FLAK-23-AG
+ Recoil: 85
+ LocalOffset: 512,0,192
+ MuzzleSequence: muzzle
+ DetectCloaked:
+ Range: 1c512
+ AttackTurreted:
+ WithMuzzleOverlay:
+ WithSpriteTurret:
+ SelectionDecorations:
+ ProducibleWithLevel:
+ Prerequisites: vehicles.upgraded
+ Selectable:
+ DecorationBounds: 28,28
+
+DTRK:
+ Inherits: ^Vehicle
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 200
+ Prerequisites: stek, ~vehicles.ukraine, ~techlevel.high
+ Description: Truck with actively armed nuclear\nexplosives. Has very weak armor.
+ Valued:
+ Cost: 2500
+ Tooltip:
+ Name: Demolition Truck
+ Health:
+ HP: 50
+ Armor:
+ Type: Light
+ Mobile:
+ Speed: 85
+ RevealsShroud:
+ Range: 5c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ Explodes:
+ Weapon: MiniNuke
+ EmptyWeapon: MiniNuke
+ AttackSuicides:
+ -DamageMultiplier@IRONCURTAIN:
+ KillsSelf:
+ RequiresCondition: invulnerability
+ Chronoshiftable:
+ ExplodeInstead: yes
+
+CTNK:
+ Inherits: ^Vehicle
+ Inherits@GAINSEXPERIENCE: ^GainsExperience
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 200
+ Prerequisites: atek, ~vehicles.germany, ~techlevel.high
+ BuildDuration: 1166
+ Description: Armed with anti-ground missiles.\nTeleports to areas within range.\n Strong vs Vehicles, Buildings\n Weak vs Infantry, Aircraft\n Special ability: Can teleport
+ Valued:
+ Cost: 1350
+ Tooltip:
+ Name: Chrono Tank
+ GenericName: Tank
+ SelectionDecorations:
+ Health:
+ HP: 450
+ Armor:
+ Type: Light
+ Mobile:
+ Speed: 113
+ Crushes: wall, mine, crate, infantry
+ RevealsShroud:
+ Range: 8c0
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ Armament@PRIMARY:
+ Weapon: APTusk
+ LocalOffset: -160,-276,232
+ LocalYaw: 60
+ Armament@SECONDARY:
+ Weapon: APTusk
+ LocalOffset: -160,276,232
+ LocalYaw: -60
+ DetectCloaked:
+ Range: 1c512
+ AttackFrontal:
+ PortableChrono:
+ ChargeDelay: 300
+ MaxDistance: 14
+ ProducibleWithLevel:
+ Prerequisites: vehicles.upgraded
+ Selectable:
+ DecorationBounds: 30,30
+
+QTNK:
+ Inherits: ^TrackedVehicle
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 170
+ BuildDuration: 1917
+ Prerequisites: fix, stek, ~vehicles.soviet, ~techlevel.high
+ Description: Deals seismic damage to nearby vehicles\nand structures.\n Strong vs Vehicles, Buildings\n Weak vs Infantry, Aircraft
+ Valued:
+ Cost: 2200
+ Tooltip:
+ Name: MAD Tank
+ GenericName: Tank
+ Health:
+ HP: 800
+ Armor:
+ Type: Heavy
+ Mobile:
+ Speed: 56
+ Crushes: wall, mine, crate, infantry
+ RevealsShroud:
+ Range: 7c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ SelectionDecorations:
+ MadTank:
+ ChargeDelay: 192
+ KillsSelf:
+ RequiresCondition: invulnerability
+ Targetable:
+ TargetTypes: Ground, MADTank, Repair, Vehicle
+ Selectable:
+ DecorationBounds: 44,38,0,-4
+
+STNK:
+ Inherits: ^Vehicle
+ Inherits@GAINSEXPERIENCE: ^GainsExperience
+ Inherits@AUTOTARGET: ^AutoTargetGround
+ Buildable:
+ Queue: Vehicle
+ BuildPaletteOrder: 200
+ Prerequisites: atek, ~vehicles.england, ~techlevel.high
+ BuildDuration: 1166
+ Description: Lightly armored infantry transport which\ncan cloak. Armed with anti-ground missiles.\nCan detect cloaked units.\n Strong vs Light armor\n Weak vs Infantry, Tanks, Aircraft
+ Valued:
+ Cost: 1350
+ Tooltip:
+ Name: Phase Transport
+ Health:
+ HP: 300
+ Armor:
+ Type: Light
+ Mobile:
+ Speed: 142
+ Crushes: wall, mine, crate, infantry
+ RequiresCondition: !notmobile
+ RevealsShroud:
+ Range: 7c256
+ RevealGeneratedShroud: False
+ RevealsShroud@GAPGEN:
+ Range: 4c0
+ AutoTarget:
+ InitialStance: HoldFire
+ InitialStanceAI: ReturnFire
+ Armament:
+ Weapon: APTusk
+ LocalOffset: 192,0,176
+ DetectCloaked:
+ Range: 6c0
+ Turreted:
+ TurnSpeed: 5
+ AttackTurreted:
+ WithSpriteTurret:
+ Cargo:
+ Types: Infantry
+ MaxWeight: 4
+ PipCount: 4
+ LoadingCondition: notmobile
+ Cloak:
+ InitialDelay: 125
+ CloakDelay: 175
+ CloakSound: appear1.aud
+ UncloakSound: appear1.aud
+ IsPlayerPalette: true
+ RequiresCondition: !cloak-force-disabled
+ GrantConditionOnDamageState@UNCLOAK:
+ Condition: cloak-force-disabled
+ ValidDamageStates: Critical
+ DetectCloaked:
+ Range: 7c0
+ -MustBeDestroyed:
+ ProducibleWithLevel:
+ Prerequisites: vehicles.upgraded
diff --git a/mods/ura/rules/world.yaml b/mods/ura/rules/world.yaml
new file mode 100644
index 0000000..a4606f4
--- /dev/null
+++ b/mods/ura/rules/world.yaml
@@ -0,0 +1,192 @@
+^BaseWorld:
+ Inherits: ^Palettes
+ AlwaysVisible:
+ ActorMap:
+ ScreenMap:
+ MusicPlaylist:
+ VictoryMusic: score
+ DefeatMusic: map
+ TerrainGeometryOverlay:
+ DebugVisualizations:
+ ShroudRenderer:
+ FogVariants: shroud
+ Index: 255, 16, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 20, 40, 56, 65, 97, 130, 148, 194, 24, 33, 66, 132, 28, 41, 67, 134, 1, 2, 4, 8, 3, 6, 12, 9, 7, 14, 13, 11, 5, 10, 15, 255
+ UseExtendedIndex: true
+ Faction@0:
+ Name: Allies
+ InternalName: allies
+ Side: Allies
+ Selectable: False
+ Faction@1:
+ Name: England
+ InternalName: england
+ Side: Allies
+ Description: England: Espionage\nSpecial Unit: British Spy\nSpecial Unit: Phase Transport
+ Faction@2:
+ Name: France
+ InternalName: france
+ Side: Allies
+ Description: France: Deception\nSpecial Ability: Can build fake structures\nSpecial Unit: Mobile Gap Generator
+ Faction@3:
+ Name: Germany
+ InternalName: germany
+ Side: Allies
+ Description: Germany: Technology\nSpecial Ability: Advanced Chronoshift\nSpecial Unit: Chrono Tank
+ Faction@4:
+ Name: Soviet
+ InternalName: soviet
+ Side: Soviet
+ Selectable: False
+ Faction@5:
+ Name: Russia
+ InternalName: russia
+ Side: Soviet
+ Description: Russia: Tesla Weapons\nSpecial Unit: Tesla Tank\nSpecial Unit: Shock Trooper
+ Faction@6:
+ Name: Ukraine
+ InternalName: ukraine
+ Side: Soviet
+ Description: Ukraine: Demolitions\nSpecial Ability: Parabombs\nSpecial Unit: Demolition Truck
+ Faction@random:
+ Name: Any
+ InternalName: Random
+ RandomFactionMembers: RandomAllies, RandomSoviet
+ Side: Random
+ Description: Random Country\nA random country will be chosen when the game starts.
+ Faction@randomallies:
+ Name: Allies
+ InternalName: RandomAllies
+ RandomFactionMembers: england, france, germany
+ Side: Random
+ Description: Random Allied Country\nA random Allied country will be chosen when the game starts.
+ Faction@randomsoviet:
+ Name: Soviet
+ InternalName: RandomSoviet
+ RandomFactionMembers: russia, ukraine
+ Side: Random
+ Description: Random Soviet Country\nA random Soviet country will be chosen when the game starts.
+ ResourceType@ore:
+ Type: Ore
+ Name: Valuable Minerals
+ PipColor: Yellow
+ ResourceType: 1
+ TerrainType: Ore
+ Palette: player
+ Sequences: gold01,gold02,gold03,gold04
+ MaxDensity: 12
+ ValuePerUnit: 25
+ AllowedTerrainTypes: Clear,Road
+ AllowUnderActors: true
+ ResourceType@gem:
+ Type: Gems
+ Name: Valuable Minerals
+ PipColor: Red
+ ResourceType: 2
+ TerrainType: Gems
+ Palette: player
+ Sequences: gem01,gem02,gem03,gem04
+ MaxDensity: 3
+ ValuePerUnit: 50
+ AllowedTerrainTypes: Clear,Road
+ AllowUnderActors: true
+
+World:
+ Inherits: ^BaseWorld
+ ChatCommands:
+ DevCommands:
+ DebugVisualizationCommands:
+ PlayerCommands:
+ HelpCommand:
+ ScreenShaker:
+ BuildingInfluence:
+ ProductionQueueFromSelection:
+ ProductionPaletteWidget: PRODUCTION_PALETTE
+ LegacyBridgeLayer:
+ Bridges: bridge1, bridge2, br1, br2, br3, sbridge1, sbridge2, sbridge3, sbridge4
+ GlobalLightingPaletteEffect:
+ Ambient: 0.95
+ CustomTerrainDebugOverlay:
+ CrateSpawner:
+ DeliveryAircraft: badr
+ QuantizedFacings: 16
+ Minimum: 1
+ Maximum: 3
+ SpawnInterval: 3000
+ WaterChance: 20
+ InitialSpawnDelay: 1500
+ CheckboxDisplayOrder: 1
+ DomainIndex:
+ SmudgeLayer@SCORCH:
+ Type: Scorch
+ Sequence: scorches
+ SmokePercentage: 50
+ SmudgeLayer@CRATER:
+ Type: Crater
+ Sequence: craters
+ ResourceLayer:
+ ResourceClaimLayer:
+ WarheadDebugOverlay:
+ SpawnMapActors:
+ MapBuildRadius:
+ AllyBuildRadiusCheckboxDisplayOrder: 4
+ BuildRadiusCheckboxDisplayOrder: 5
+ MapOptions:
+ ShortGameCheckboxDisplayOrder: 2
+ TechLevelDropdownDisplayOrder: 2
+ GameSpeedDropdownDisplayOrder: 3
+ CreateMPPlayers:
+ MPStartUnits@mcvonly:
+ Class: none
+ ClassName: MCV Only
+ Factions: allies, england, france, germany, soviet, russia, ukraine
+ BaseActor: mcv
+ MPStartUnits@lightallies:
+ Class: light
+ ClassName: Light Support
+ Factions: allies, england, france, germany
+ BaseActor: mcv
+ SupportActors: e1,e1,e1,e3,e3,jeep,1tnk
+ InnerSupportRadius: 3
+ OuterSupportRadius: 5
+ MPStartUnits@lightsoviet:
+ Class: light
+ ClassName: Light Support
+ Factions: soviet, russia, ukraine
+ BaseActor: mcv
+ SupportActors: e1,e1,e1,e3,e3,apc,ftrk
+ InnerSupportRadius: 3
+ OuterSupportRadius: 5
+ MPStartUnits@heavyallies:
+ Class: heavy
+ ClassName: Heavy Support
+ Factions: allies, england, france, germany
+ BaseActor: mcv
+ SupportActors: e1,e1,e1,e3,e3,jeep,1tnk,2tnk,2tnk,2tnk
+ InnerSupportRadius: 3
+ OuterSupportRadius: 5
+ MPStartUnits@heavysoviet:
+ Class: heavy
+ ClassName: Heavy Support
+ Factions: soviet, russia, ukraine
+ BaseActor: mcv
+ SupportActors: e1,e1,e1,e3,e3,apc,ftrk,3tnk,3tnk
+ InnerSupportRadius: 3
+ OuterSupportRadius: 5
+ MPStartLocations:
+ SpawnMPUnits:
+ DropdownDisplayOrder: 1
+ PathFinder:
+ ValidateOrder:
+ DebugPauseState:
+ RadarPings:
+ StartGameNotification:
+ ObjectivesPanel:
+ PanelName: SKIRMISH_STATS
+ LoadWidgetAtGameStart:
+
+EditorWorld:
+ Inherits: ^BaseWorld
+ EditorActorLayer:
+ EditorResourceLayer:
+ EditorSelectionLayer:
+ LoadWidgetAtGameStart:
diff --git a/mods/ura/sequences/aircraft.yaml b/mods/ura/sequences/aircraft.yaml
new file mode 100644
index 0000000..50df86a
--- /dev/null
+++ b/mods/ura/sequences/aircraft.yaml
@@ -0,0 +1,72 @@
+mig:
+ idle:
+ Facings: 16
+ icon: migicon
+
+yak:
+ idle:
+ Facings: 16
+ muzzle: minigun
+ Length: 6
+ Facings: 8
+ icon: yakicon
+
+heli:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ rotor: lrotor
+ Length: 4
+ slow-rotor: lrotor
+ Start: 4
+ Length: 8
+ icon: heliicon
+
+hind:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ rotor: lrotorlg
+ Length: 4
+ slow-rotor: lrotorlg
+ Start: 4
+ Length: 8
+ muzzle: minigun
+ Length: 6
+ Facings: 8
+ icon: hindicon
+
+tran:
+ idle: tran2
+ Facings: 32
+ UseClassicFacingFudge: True
+ rotor: lrotor
+ Length: 4
+ rotor2: rrotor
+ Length: 4
+ slow-rotor: lrotor
+ Start: 4
+ Length: 8
+ slow-rotor2: rrotor
+ Start: 4
+ Length: 8
+ open: tran2
+ Start: 32
+ Length: 4
+ unload: tran2
+ Start: 35
+ icon: tranicon
+
+tran1husk:
+ idle:
+
+tran2husk:
+ idle:
+
+u2:
+ idle:
+ Facings: 16
+
+badr:
+ idle:
+ Facings: 16
diff --git a/mods/ura/sequences/decorations.yaml b/mods/ura/sequences/decorations.yaml
new file mode 100644
index 0000000..3bfe78b
--- /dev/null
+++ b/mods/ura/sequences/decorations.yaml
@@ -0,0 +1,989 @@
+tc04:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+tc04.husk:
+ Defaults: tc04
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+tc05:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+tc05.husk:
+ Defaults: tc05
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+tc03:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+tc03.husk:
+ Defaults: tc03
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+tc02:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+tc02.husk:
+ Defaults: tc02
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+tc01:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ idle:
+
+tc01.husk:
+ Defaults: tc01
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t17:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+t17.husk:
+ Defaults: t17
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t16:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+t16.husk:
+ Defaults: t16
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t15:
+ Defaults: t15
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+t15.husk:
+ Defaults: t15
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t14:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+t14.husk:
+ Defaults: t14
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t13:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+t13.husk:
+ Defaults: t13
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t12:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+t12.husk:
+ Defaults: t12
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t11:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+t11.husk:
+ Defaults: t11
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t10:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+t10.husk:
+ Defaults: t10
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t08:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ idle:
+
+t08.husk:
+ Defaults: t08
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t07:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+t07.husk:
+ Defaults: t07
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t06:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+t06.husk:
+ Defaults: t06
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t05:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+t05.husk:
+ Defaults: t05
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t03:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+t03.husk:
+ Defaults: t03
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t02:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+t02.husk:
+ Defaults: t02
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t01:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+
+t01.husk:
+ Defaults: t01
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ Start: 1
+ dead:
+ Start: 2
+ Length: 8
+ Tick: 80
+
+ice01:
+ idle: ice01.sno
+ Length: *
+ AddExtension: false
+
+ice02:
+ idle: ice02.sno
+ Length: *
+ AddExtension: false
+
+ice03:
+ idle: ice03.sno
+ Length: *
+ AddExtension: false
+
+ice04:
+ idle: ice04.sno
+ Length: *
+ AddExtension: false
+
+ice05:
+ idle: ice05.sno
+ Length: *
+ AddExtension: false
+
+v01:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ damaged-idle:
+ Start: 1
+
+v02:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ damaged-idle:
+ Start: 1
+
+v03:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ damaged-idle:
+ Start: 1
+
+v04:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ damaged-idle:
+ Start: 2
+ active:
+ Start: 1
+ damaged-active:
+ Start: 3
+
+v05:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ damaged-idle:
+ Start: 2
+
+v06:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ damaged-idle:
+ Start: 1
+
+v07:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ damaged-idle:
+ Start: 2
+
+v08:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ damaged-idle:
+ Start: 1
+
+v09:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ damaged-idle:
+ Start: 1
+
+v10:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ damaged-idle:
+ Start: 1
+
+v11:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ damaged-idle:
+ Start: 1
+
+v12:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ damaged-idle:
+ Start: 1
+
+v13:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ damaged-idle:
+ Start: 1
+
+v14:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ ZOffset: -512
+ damaged-idle:
+ Start: 1
+ ZOffset: -512
+
+v15:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ ZOffset: -512
+ damaged-idle:
+ Start: 1
+ ZOffset: -512
+
+v16:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ ZOffset: -512
+ damaged-idle:
+ Start: 1
+ ZOffset: -512
+
+v17:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ ZOffset: -512
+ damaged-idle:
+ Start: 1
+ ZOffset: -512
+
+v18:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ idle:
+ ZOffset: -512
+ damaged-idle:
+ Start: 1
+ ZOffset: -512
+
+rice:
+ Defaults:
+ AddExtension: false
+ idle: rice.tem
+ ZOffset: -512
+ damaged-idle: rice.tem
+ Start: 1
+ ZOffset: -512
+
+v19:
+ idle:
+ Length: 14
+
+v19.husk:
+ idle: v19
+ Start: 28
+ fire-start: flmspt
+ Length: *
+ Offset: 7,-15
+ ZOffset: 1
+ fire-loop: flmspt
+ Start: 50
+ Length: *
+ Offset: 7,-15
+ ZOffset: 1
+
+utilpol1:
+ idle:
+ damaged-idle:
+ Start: 1
+ dead:
+ Start: 1
+
+utilpol2:
+ idle:
+ damaged-idle:
+ Start: 1
+ dead:
+ Start: 1
+
+ammobox1:
+ idle:
+
+ammobox2:
+ idle:
+
+ammobox3:
+ idle:
+
+tanktrap1:
+ idle:
+
+tanktrap2:
+ idle:
+
+rushouse:
+ idle:
+ damaged-idle:
+ Start: 1
+
+asianhut:
+ idle:
+ damaged-idle:
+ Start: 1
+
+barb:
+ idle:
+ Length: 16
+ damaged-idle:
+ Start: 16
+ Length: 16
+
+wood:
+ idle:
+ Length: 16
+ damaged-idle:
+ Start: 16
+ Length: 16
+
+barl:
+ idle:
+
+brl3:
+ idle:
+
+# Interior Terrain
+boxes01:
+ idle: boxes01.int
+ AddExtension: false
+
+boxes02:
+ idle: boxes02.int
+ AddExtension: false
+
+boxes03:
+ idle: boxes03.int
+ AddExtension: false
+
+boxes04:
+ idle: boxes04.int
+ AddExtension: false
+
+boxes05:
+ idle: boxes05.int
+ AddExtension: false
+
+boxes06:
+ idle: boxes06.int
+ AddExtension: false
+
+boxes07:
+ idle: boxes07.int
+ AddExtension: false
+
+boxes08:
+ idle: boxes08.int
+ AddExtension: false
+
+boxes09:
+ idle: boxes09.int
+ AddExtension: false
+
+# Desert Terrain Expansion
+rock1:
+ idle: rock1.des
+ AddExtension: false
+
+rock2:
+ idle: rock2.des
+ AddExtension: false
+
+rock3:
+ idle: rock3.des
+ AddExtension: false
+
+rock4:
+ idle: rock4.des
+ AddExtension: false
+
+rock5:
+ idle: rock5.des
+ AddExtension: false
+
+rock6:
+ idle: rock6.des
+ AddExtension: false
+
+rock7:
+ idle: rock7.des
+ AddExtension: false
+
+t04:
+ Defaults:
+ AddExtension: false
+ idle: t04.des
+
+t04.husk:
+ Defaults: t04.des
+ AddExtension: false
+ idle:
+ Start: 1
+ dead: t04.des
+ Start: 2
+ Length: 8
+ Tick: 80
+
+t09:
+ Defaults:
+ AddExtension: false
+ idle: t09.des
+
+t09.husk:
+ Defaults: t09
+ AddExtension: false
+ idle: t09.des
+ Start: 1
+ dead: t09.des
+ Start: 2
+ Length: 8
+ Tick: 80
+
+v20:
+ Defaults:
+ AddExtension: false
+ idle: v20.des
+ Length: 3
+ Tick: 120
+ damaged-idle: v20.des
+ Start: 3
+ Length: 3
+ Tick: 120
+
+v21:
+ Defaults:
+ AddExtension: false
+ idle: v21.des
+ Length: 3
+ Tick: 120
+ damaged-idle: v21.des
+ Start: 3
+ Length: 3
+ Tick: 120
+
+v22:
+ Defaults:
+ AddExtension: false
+ idle: v22.des
+ Length: 3
+ Tick: 120
+ damaged-idle: v22.des
+ Start: 3
+ Length: 3
+ Tick: 120
+
+v23:
+ Defaults:
+ AddExtension: false
+ idle: v23.des
+ Length: 3
+ Tick: 120
+ damaged-idle: v23.des
+ Start: 3
+ Length: 3
+ Tick: 120
+
+v24:
+ Defaults:
+ AddExtension: false
+ idle: v24.des
+ damaged-idle: v24.des
+ Start: 1
+
+v25:
+ Defaults:
+ AddExtension: false
+ idle: v25.des
+ damaged-idle: v25.des
+ Start: 1
+
+v26:
+ Defaults:
+ AddExtension: false
+ idle: v26.des
+ damaged-idle: v26.des
+ Start: 1
+
+v27:
+ Defaults:
+ AddExtension: false
+ idle: v27.des
+ damaged-idle: v27.des
+ Start: 1
+
+v28:
+ Defaults:
+ AddExtension: false
+ idle: v28.des
+ damaged-idle: v28.des
+ Start: 1
+
+v29:
+ Defaults:
+ AddExtension: false
+ idle: v29.des
+ damaged-idle: v29.des
+ Start: 1
+
+v30:
+ Defaults:
+ AddExtension: false
+ idle: v30.des
+ damaged-idle: v30.des
+ Start: 2
+
+v31:
+ Defaults:
+ AddExtension: false
+ idle: v31.des
+ damaged-idle: v31.des
+ Start: 1
+
+v32:
+ Defaults:
+ AddExtension: false
+ idle: v32.des
+ damaged-idle: v32.des
+ Start: 1
+
+v33:
+ Defaults:
+ AddExtension: false
+ idle: v33.des
+ damaged-idle: v33.des
+ Start: 1
+
+v34:
+ Defaults:
+ AddExtension: false
+ idle: v34.des
+ damaged-idle: v34.des
+ Start: 1
+
+v35:
+ Defaults:
+ AddExtension: false
+ idle: v35.des
+ damaged-idle: v35.des
+ Start: 1
+
+v36:
+ Defaults:
+ AddExtension: false
+ idle: v36.des
+ damaged-idle: v36.des
+ Start: 1
+
+v37:
+ Defaults:
+ AddExtension: false
+ idle: v37.des
+ damaged-idle: v37.des
+ Start: 1
+
+snowhut:
+ Defaults:
+ Offset: 0,-5
+ idle:
+ Length: 3
+ Tick: 360
+ damaged-idle:
+ Start: 3
+ Tick: 120
+
+lhus:
+ Defaults:
+ Offset: 0,-16
+ idle:
+ Length: 16
+ Tick: 180
+ damaged-idle:
+ Start: 16
+ Tick: 180
+ Length: 8
+
+windmill:
+ Defaults:
+ Offset: 0,-16
+ idle:
+ Length: 8
+ Tick: 80
+ damaged-idle:
+ Start: 8
+ Length: 8
+ Tick: 80
diff --git a/mods/ura/sequences/infantry.yaml b/mods/ura/sequences/infantry.yaml
new file mode 100644
index 0000000..b9015a1
--- /dev/null
+++ b/mods/ura/sequences/infantry.yaml
@@ -0,0 +1,1408 @@
+e1:
+ stand:
+ Facings: 8
+ stand2:
+ Start: 8
+ Facings: 8
+ run:
+ Start: 16
+ Length: 6
+ Facings: 8
+ Tick: 100
+ shoot:
+ Start: 64
+ Length: 8
+ Facings: 8
+ prone-stand:
+ Start: 144
+ Stride: 4
+ Facings: 8
+ prone-stand2:
+ Start: 144
+ Stride: 4
+ Facings: 8
+ prone-run:
+ Start: 144
+ Length: 4
+ Facings: 8
+ Tick: 100
+ liedown:
+ Start: 128
+ Length: 2
+ Facings: 8
+ standup:
+ Start: 176
+ Length: 2
+ Facings: 8
+ prone-shoot:
+ Start: 192
+ Length: 8
+ Facings: 8
+ idle1:
+ Start: 256
+ Length: 16
+ Tick: 120
+ idle2:
+ Start: 272
+ Length: 16
+ Tick: 120
+ die1:
+ Start: 288
+ Length: 8
+ die2:
+ Start: 296
+ Length: 8
+ die3:
+ Start: 304
+ Length: 8
+ die4:
+ Start: 312
+ Length: 12
+ die5:
+ Start: 324
+ Length: 18
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: *
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ garrison-muzzle: minigun
+ Length: 6
+ Facings: 8
+ icon: e1icon
+
+sniper:
+ stand:
+ Facings: 8
+ stand2:
+ Start: 8
+ Facings: 8
+ run:
+ Start: 16
+ Length: 6
+ Facings: 8
+ Tick: 100
+ shoot:
+ Start: 64
+ Length: 16
+ Facings: 8
+ prone-stand:
+ Start: 208
+ Stride: 4
+ Facings: 8
+ prone-stand2:
+ Start: 208
+ Stride: 4
+ Facings: 8
+ prone-run:
+ Start: 208
+ Length: 4
+ Facings: 8
+ Tick: 100
+ liedown:
+ Start: 192
+ Length: 2
+ Facings: 8
+ standup:
+ Start: 240
+ Length: 2
+ Facings: 8
+ prone-shoot:
+ Start: 256
+ Length: 16
+ Facings: 8
+ idle1:
+ Start: 384
+ Length: 14
+ Tick: 120
+ idle2:
+ Start: 399
+ Length: 16
+ Tick: 120
+ die1:
+ Start: 416
+ Length: 8
+ die2:
+ Start: 424
+ Length: 8
+ die3:
+ Start: 432
+ Length: 8
+ die4:
+ Start: 440
+ Length: 12
+ die5:
+ Start: 452
+ Length: 18
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ garrison-muzzle: minigun
+ Length: 3
+ Stride: 6
+ Facings: 8
+ icon: snipericon
+
+e3:
+ stand:
+ Facings: 8
+ stand2:
+ Start: 8
+ Facings: 8
+ run:
+ Start: 16
+ Length: 6
+ Facings: 8
+ Tick: 120
+ shoot:
+ Start: 64
+ Length: 8
+ Facings: 8
+ idle1:
+ Start: 272
+ Length: 14
+ Tick: 120
+ idle2:
+ Start: 287
+ Length: 16
+ Tick: 120
+ die1:
+ Start: 304
+ Length: 8
+ die2:
+ Start: 312
+ Length: 8
+ die3:
+ Start: 320
+ Length: 8
+ die4:
+ Start: 328
+ Length: 12
+ die5:
+ Start: 340
+ Length: 18
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ prone-stand:
+ Start: 144
+ Stride: 4
+ Facings: 8
+ prone-stand2:
+ Start: 144
+ Stride: 4
+ Facings: 8
+ prone-run:
+ Start: 144
+ Length: 4
+ Facings: 8
+ Tick: 120
+ prone-shoot:
+ Start: 192
+ Length: 10
+ Facings: 8
+ icon: e3icon
+
+e6:
+ stand:
+ Facings: 8
+ stand2:
+ Start: 8
+ Facings: 8
+ run:
+ Start: 16
+ Length: 6
+ Facings: 8
+ Tick: 100
+ idle1:
+ Start: 121
+ Length: 8
+ Tick: 120
+ idle2:
+ Start: 130
+ Length: 14
+ Tick: 120
+ die1:
+ Start: 146
+ Length: 8
+ die2:
+ Start: 154
+ Length: 8
+ die3:
+ Start: 162
+ Length: 8
+ die4:
+ Start: 170
+ Length: 12
+ die5:
+ Start: 182
+ Length: 18
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ prone-stand:
+ Start: 82
+ Stride: 4
+ Facings: 8
+ prone-stand2:
+ Start: 82
+ Stride: 4
+ Facings: 8
+ prone-run:
+ Start: 82
+ Length: 4
+ Facings: 8
+ Tick: 100
+ icon: e6icon
+
+medi:
+ stand:
+ Facings: 8
+ run:
+ Start: 8
+ Length: 6
+ Facings: 8
+ Tick: 100
+ heal:
+ Start: 56
+ Length: 58
+ Tick: 120
+ standup:
+ Start: 114
+ Length: 2
+ Facings: 8
+ idle1:
+ Start: 163
+ Length: 14
+ Tick: 120
+ idle2:
+ Start: 178
+ Length: 14
+ Tick: 120
+ die1:
+ Start: 193
+ Length: 7
+ die2:
+ Start: 201
+ Length: 8
+ die3:
+ Start: 209
+ Length: 8
+ die4:
+ Start: 217
+ Length: 12
+ die5:
+ Start: 229
+ Length: 18
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ prone-stand:
+ Start: 130
+ Stride: 4
+ Facings: 8
+ prone-run:
+ Start: 130
+ Length: 4
+ Facings: 8
+ Tick: 100
+ icon: mediicon
+
+mech:
+ stand:
+ Facings: 8
+ run:
+ Start: 8
+ Length: 6
+ Facings: 8
+ Tick: 100
+ repair:
+ Start: 56
+ Length: 58
+ Tick: 120
+ standup:
+ Start: 114
+ Length: 2
+ Facings: 8
+ idle1:
+ Start: 163
+ Length: 14
+ Tick: 120
+ idle2:
+ Start: 178
+ Length: 14
+ Tick: 120
+ die1:
+ Start: 193
+ Length: 7
+ die2:
+ Start: 201
+ Length: 8
+ die3:
+ Start: 209
+ Length: 8
+ die4:
+ Start: 217
+ Length: 12
+ die5:
+ Start: 229
+ Length: 18
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ prone-stand:
+ Start: 130
+ Stride: 4
+ Facings: 8
+ prone-run:
+ Start: 130
+ Length: 4
+ Facings: 8
+ Tick: 100
+ icon: mechicon
+
+e2:
+ stand:
+ Facings: 8
+ stand2:
+ Start: 8
+ Facings: 8
+ run:
+ Start: 16
+ Length: 6
+ Facings: 8
+ Tick: 80
+ throw:
+ Start: 64
+ Length: 20
+ Facings: 8
+ idle1:
+ Start: 384
+ Length: 14
+ Tick: 120
+ idle2:
+ Start: 399
+ Length: 16
+ Tick: 120
+ die1:
+ Start: 416
+ Length: 8
+ die2:
+ Start: 424
+ Length: 8
+ die3:
+ Start: 432
+ Length: 8
+ die4:
+ Start: 440
+ Length: 12
+ die5:
+ Start: 452
+ Length: 18
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ prone-stand:
+ Start: 240
+ Stride: 4
+ Facings: 8
+ prone-stand2:
+ Start: 240
+ Stride: 4
+ Facings: 8
+ prone-run:
+ Start: 240
+ Length: 4
+ Facings: 8
+ Tick: 80
+ prone-throw:
+ Start: 288
+ Length: 12
+ Facings: 8
+ icon: e2icon
+
+dog:
+ stand:
+ Facings: 8
+ run:
+ Start: 8
+ Length: 6
+ Facings: 8
+ Tick: 80
+ idle1:
+ Start: 216
+ Length: 7
+ Tick: 120
+ idle2:
+ Start: 224
+ Length: 11
+ Tick: 120
+ die1:
+ Start: 236
+ Length: 6
+ die2:
+ Start: 242
+ Length: 9
+ die3:
+ Start: 236
+ Length: 6
+ die4:
+ Start: 242
+ Length: 9
+ die5:
+ Start: 251
+ Length: 14
+ die6: electdog
+ Length: *
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ shoot: dogbullt
+ Length: 4
+ Facings: 8
+ icon: dogicon
+
+spy:
+ stand:
+ Facings: 8
+ stand2:
+ Start: 8
+ Facings: 8
+ run:
+ Start: 16
+ Length: 6
+ Facings: 8
+ Tick: 100
+ shoot:
+ Start: 64
+ Length: 8
+ Facings: 8
+ idle1:
+ Start: 256
+ Length: 14
+ Tick: 120
+ idle2:
+ Start: 271
+ Length: 16
+ Tick: 120
+ die1:
+ Start: 288
+ Length: 8
+ die2:
+ Start: 296
+ Length: 8
+ die3:
+ Start: 304
+ Length: 8
+ die4:
+ Start: 312
+ Length: 12
+ die5:
+ Start: 324
+ Length: 18
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ prone-stand:
+ Start: 144
+ Stride: 4
+ Facings: 8
+ prone-stand2:
+ Start: 144
+ Stride: 4
+ Facings: 8
+ prone-run:
+ Start: 144
+ Length: 4
+ Facings: 8
+ Tick: 100
+ prone-shoot:
+ Start: 192
+ Length: 8
+ Facings: 8
+ icon: spyicon
+
+thf:
+ stand:
+ Facings: 8
+ run:
+ Start: 8
+ Length: 6
+ Facings: 8
+ Tick: 100
+ die1:
+ Start: 139
+ Length: 8
+ die2:
+ Start: 147
+ Length: 8
+ die3:
+ Start: 155
+ Length: 8
+ die4:
+ Start: 163
+ Length: 12
+ die5:
+ Start: 175
+ Length: 18
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ prone-stand:
+ Start: 72
+ Stride: 4
+ Facings: 8
+ prone-run:
+ Start: 72
+ Length: 4
+ Facings: 8
+ Tick: 80
+ icon: thficon
+
+hijacker:
+ stand: thf
+ Facings: 8
+ run: thf
+ Start: 8
+ Length: 6
+ Facings: 8
+ Tick: 100
+ die1: thf
+ Start: 139
+ Length: 8
+ die2: thf
+ Start: 147
+ Length: 8
+ die3: thf
+ Start: 155
+ Length: 8
+ die4: thf
+ Start: 163
+ Length: 12
+ die5: thf
+ Start: 175
+ Length: 18
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ prone-stand: thf
+ Start: 72
+ Stride: 4
+ Facings: 8
+ prone-run: thf
+ Start: 72
+ Length: 4
+ Facings: 8
+ Tick: 80
+ icon: hijackericon
+
+#Tanya swim sequence and SHP by SirCake
+e7:
+ stand:
+ Facings: 8
+ run:
+ Start: 8
+ Length: 6
+ Facings: 8
+ Tick: 80
+ shoot:
+ Start: 56
+ Length: 7
+ Facings: 8
+ idle1:
+ Start: 233
+ Length: 14
+ Tick: 120
+ idle2:
+ Start: 248
+ Length: 14
+ Tick: 120
+ die1:
+ Start: 262
+ Length: 8
+ die2:
+ Start: 270
+ Length: 8
+ die3:
+ Start: 278
+ Length: 8
+ die4:
+ Start: 286
+ Length: 12
+ die5:
+ Start: 298
+ Length: 18
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ prone-stand:
+ Start: 128
+ Stride: 4
+ Facings: 8
+ prone-run:
+ Start: 128
+ Length: 4
+ Facings: 8
+ Tick: 80
+ prone-shoot:
+ Start: 176
+ Length: 7
+ Facings: 8
+ garrison-muzzle: minigun
+ Length: 3
+ Stride: 6
+ Facings: 8
+ swim_idle: bikinitany
+ Start: 1
+ Facings: 8
+ Length: 4
+ Tick: 100
+ Transpose: True
+ swim_stand: bikinitany
+ Start: 1
+ Facings: 8
+ Length: 4
+ Tick: 100
+ Transpose: True
+ swim: bikinitany
+ Start: 33
+ Facings: 8
+ Length: 7
+ Tick: 100
+ Transpose: True
+ swim_shoot: bikinitany
+ Start: 89
+ Facings: 8
+ Length: 6
+ Tick: 100
+ Transpose: True
+ prone-swim_shoot: bikinitany
+ Start: 137
+ Facings: 8
+ Length: 6
+ Tick: 100
+ Transpose: True
+ prone-swim: bikinitany
+ Start: 217
+ Facings: 8
+ Length: 9
+ Tick: 100
+ Transpose: True
+ liedown: bikinitany
+ Start: 289
+ Facings: 8
+ Length: 3
+ Tick: 100
+ Transpose: True
+ standup: bikinitany
+ Start: 185
+ Facings: 8
+ Length: 4
+ Tick: 100
+ Transpose: True
+ prone-swim_stand: bikinitany
+ Start: 313
+ Facings: 8
+ Length: 9
+ Tick: 100
+ Transpose: True
+ icon: e7icon
+
+e4:
+ stand:
+ Facings: 8
+ stand2:
+ Start: 8
+ Facings: 8
+ run:
+ Start: 16
+ Length: 6
+ Facings: 8
+ Tick: 120
+ shoot:
+ Start: 64
+ Length: 16
+ Facings: 8
+ idle1:
+ Start: 384
+ Length: 14
+ Tick: 120
+ idle2:
+ Start: 399
+ Length: 16
+ Tick: 120
+ die1:
+ Start: 416
+ Length: 8
+ die2:
+ Start: 424
+ Length: 8
+ die3:
+ Start: 432
+ Length: 8
+ die4:
+ Start: 440
+ Length: 12
+ die5:
+ Start: 452
+ Length: 18
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ prone-stand:
+ Start: 208
+ Stride: 4
+ Facings: 8
+ prone-stand2:
+ Start: 208
+ Stride: 4
+ Facings: 8
+ prone-run:
+ Start: 208
+ Length: 4
+ Facings: 8
+ Tick: 120
+ prone-shoot:
+ Start: 256
+ Length: 16
+ Facings: 8
+ icon: e4icon
+
+gnrl:
+ stand:
+ Facings: 8
+ run:
+ Start: 8
+ Length: 6
+ Facings: 8
+ Tick: 100
+ shoot:
+ Start: 56
+ Length: 4
+ Facings: 8
+ prone-stand:
+ Start: 104
+ Stride: 4
+ Facings: 8
+ prone-run:
+ Start: 104
+ Length: 4
+ Facings: 8
+ Tick: 100
+ standup:
+ Start: 136
+ Length: 2
+ Facings: 8
+ prone-shoot:
+ Start: 152
+ Length: 4
+ Facings: 8
+ idle1:
+ Start: 184
+ Length: 26
+ Tick: 120
+ die1:
+ Start: 210
+ Length: 8
+ die2:
+ Start: 218
+ Length: 8
+ die3:
+ Start: 226
+ Length: 8
+ die4:
+ Start: 234
+ Length: 12
+ die5:
+ Start: 246
+ Length: 18
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+
+shok:
+ stand:
+ Facings: 8
+ stand2:
+ Start: 8
+ Facings: 8
+ run:
+ Start: 16
+ Length: 6
+ Facings: 8
+ Tick: 120
+ shoot:
+ Start: 64
+ Length: 16
+ Facings: 8
+ prone-stand:
+ Start: 208
+ Stride: 4
+ Facings: 8
+ prone-stand2:
+ Start: 208
+ Stride: 4
+ Facings: 8
+ prone-run:
+ Start: 208
+ Length: 4
+ Facings: 8
+ Tick: 120
+ liedown:
+ Start: 192
+ Length: 2
+ Facings: 8
+ standup:
+ Start: 240
+ Length: 2
+ Facings: 8
+ prone-shoot:
+ Start: 256
+ Length: 16
+ Facings: 8
+ idle1:
+ Start: 384
+ Length: 14
+ Tick: 120
+ idle2:
+ Start: 399
+ Length: 16
+ Tick: 120
+ die1:
+ Start: 416
+ Length: 8
+ die2:
+ Start: 424
+ Length: 8
+ die3:
+ Start: 432
+ Length: 8
+ die4:
+ Start: 440
+ Length: 12
+ die5:
+ Start: 452
+ Length: 18
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ icon: shokicon
+
+c1:
+ stand:
+ Facings: 8
+ panic-stand:
+ Start: 8
+ Stride: 6
+ Facings: 8
+ panic-run:
+ Start: 8
+ Length: 6
+ Facings: 8
+ shoot:
+ Start: 120
+ Length: 4
+ Facings: 8
+ die1:
+ Start: 152
+ Length: 8
+ die2:
+ Start: 160
+ Length: 8
+ die3:
+ Start: 168
+ Length: 12
+ die4:
+ Start: 180
+ Length: 18
+ die5:
+ Start: 160
+ Length: 8
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ run:
+ Start: 56
+ Length: 6
+ Facings: 8
+ Tick: 80
+
+c2:
+ stand:
+ Facings: 8
+ panic-stand:
+ Start: 8
+ Stride: 6
+ Facings: 8
+ panic-run:
+ Start: 8
+ Length: 6
+ Facings: 8
+ shoot:
+ Start: 120
+ Length: 4
+ Facings: 8
+ die1:
+ Start: 152
+ Length: 8
+ die2:
+ Start: 160
+ Length: 8
+ die3:
+ Start: 168
+ Length: 12
+ die4:
+ Start: 180
+ Length: 18
+ die5:
+ Start: 160
+ Length: 8
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ run:
+ Start: 56
+ Length: 6
+ Facings: 8
+ Tick: 80
+
+c3:
+ stand:
+ Facings: 8
+ panic-stand:
+ Start: 8
+ Stride: 6
+ Facings: 8
+ panic-run:
+ Start: 8
+ Length: 6
+ Facings: 8
+ shoot:
+ Start: 120
+ Length: 4
+ Facings: 8
+ die1:
+ Start: 152
+ Length: 8
+ die2:
+ Start: 160
+ Length: 8
+ die3:
+ Start: 168
+ Length: 12
+ die4:
+ Start: 180
+ Length: 18
+ die5:
+ Start: 160
+ Length: 8
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ run:
+ Start: 56
+ Length: 6
+ Facings: 8
+ Tick: 80
+
+einstein:
+ stand:
+ Facings: 8
+ panic-run:
+ Start: 8
+ Length: 6
+ Facings: 8
+ panic-stand:
+ Start: 8
+ Stride: 6
+ Facings: 8
+ run:
+ Start: 56
+ Length: 6
+ Facings: 8
+ Tick: 80
+ die1:
+ Start: 115
+ Length: 8
+ die2:
+ Start: 123
+ Length: 8
+ die3:
+ Start: 135
+ Length: 12
+ die4:
+ Start: 147
+ Length: 17
+ die5:
+ Start: 123
+ Length: 8
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+
+delphi:
+ stand:
+ Facings: 8
+ panic-run:
+ Start: 8
+ Length: 6
+ Facings: 8
+ panic-stand:
+ Start: 8
+ Stride: 6
+ Facings: 8
+ run:
+ Start: 56
+ Length: 6
+ Facings: 8
+ Tick: 80
+ die1:
+ Start: 115
+ Length: 8
+ die2:
+ Start: 123
+ Length: 8
+ die3:
+ Start: 135
+ Length: 12
+ die4:
+ Start: 147
+ Length: 17
+ die5:
+ Start: 123
+ Length: 8
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+
+chan:
+ stand:
+ Facings: 8
+ panic-run:
+ Start: 8
+ Length: 6
+ Facings: 8
+ panic-stand:
+ Start: 8
+ Stride: 6
+ Facings: 8
+ run:
+ Start: 56
+ Length: 6
+ Facings: 8
+ Tick: 80
+ die1:
+ Start: 115
+ Length: 8
+ die2:
+ Start: 123
+ Length: 8
+ die3:
+ Start: 135
+ Length: 12
+ die4:
+ Start: 147
+ Length: 17
+ die5:
+ Start: 123
+ Length: 8
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+
+zombie:
+ stand:
+ Facings: 8
+ stand2:
+ Start: 8
+ Length: 8
+ run:
+ Start: 16
+ Length: 6
+ Facings: 8
+ bite:
+ Start: 64
+ Length: 4
+ Facings: 8
+ idle1:
+ Start: 96
+ Length: 10
+ Tick: 120
+ die1:
+ Start: 106
+ Length: 7
+ die2:
+ Start: 106
+ Length: 7
+ die3:
+ Start: 106
+ Length: 7
+ die4:
+ Start: 106
+ Length: 7
+ die5:
+ Start: 114
+ Length: 18
+ die6: electro
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ die-crushed: corpse1
+ Length: 6
+ Tick: 1600
+ ZOffset: -511
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+ icon: zombicon
+
+ant:
+ stand: ant1
+ Facings: 8
+ stand2: ant1
+ Start: 8
+ Length: 8
+ run: ant1
+ Start: 8
+ Length: 8
+ Facings: 8
+ bite: ant1
+ Start: 72
+ Length: 4
+ Facings: 8
+ die: ant1
+ Start: 104
+ Length: 8
+ Tick: 300
+ die-crushed: ant1
+ Start: 104
+ Length: 8
+ Tick: 400
+ ZOffset: -511
+ icon: anticon
diff --git a/mods/ura/sequences/misc.yaml b/mods/ura/sequences/misc.yaml
new file mode 100644
index 0000000..a675b71
--- /dev/null
+++ b/mods/ura/sequences/misc.yaml
@@ -0,0 +1,627 @@
+clock:
+ idle:
+ Length: *
+
+powerdown:
+ disabled: speed
+ Start: 3
+ ZOffset: 2047
+
+120mm:
+ idle:
+ ZOffset: 1023
+
+50cal:
+ idle:
+ ZOffset: 1023
+
+explosion:
+ Defaults:
+ Length: *
+ ZOffset: 2047
+ piff: piff
+ piffs: piffpiff
+ water_piff: wpiff
+ water_piffs: wpifpif
+ small_explosion: veh-hit3
+ med_explosion: veh-hit2
+ flak_explosion_ground: flak
+ small_explosion_air: flak
+ ZOffset: 511 # only used by AA weapons, so a high ZOffset to overlay buildings isn't needed
+ med_explosion_air: veh-hit1
+ ZOffset: 511 # only used by AA weapons, so a high ZOffset to overlay buildings isn't needed
+ large_splash: h2o_exp1
+ napalm: napalm2
+ building_napalm: napalm2
+ FlipX: true
+ nuke: atomsfx
+ med_splash: h2o_exp2
+ self_destruct: art-exp1
+ artillery_explosion: art-exp1
+ building: fball1
+ Offset: 0,-9
+ small_splash: h2o_exp3
+ large_explosion: frag1
+ Offset: -2,0
+ small_napalm: napalm1
+ offseted_napalm: napalm1 # Used for E4 Explosion
+ Offset: 0, -6
+ large_napalm: napalm3
+ corpse: corpse1
+ ZOffset: -512
+ Tick: 1600
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+ INTERIOR: TEMPERAT
+
+burn-l:
+ idle:
+ Length: *
+ ZOffset: 512
+ loop:
+ Start: 16
+ Length: 44
+ ZOffset: 512
+ end:
+ Start: 60
+ Length: 6
+ ZOffset: 512
+
+burn-m:
+ idle:
+ Length: *
+ ZOffset: 512
+ loop:
+ Start: 16
+ Length: 44
+ ZOffset: 512
+ end:
+ Start: 60
+ Length: 6
+ ZOffset: 512
+
+burn-s:
+ idle:
+ Length: *
+ ZOffset: 512
+ loop:
+ Start: 12
+ Length: 46
+ ZOffset: 512
+ end:
+ Start: 59
+ Length: 5
+ ZOffset: 512
+
+pips:
+ groups:
+ Start: 8
+ Length: 10
+ Offset: 9, 5
+ medic:
+ Start: 20
+# ready:
+# Start: 3
+# hold:
+# Start: 4
+ tag-fake:
+ Start: 18
+ Offset: 0, 2
+ tag-primary:
+ Start: 2
+ Offset: 0, 2
+ pip-empty: pips2
+ pip-green: pips2
+ Start: 1
+ pip-yellow: pips2
+ Start: 2
+ pip-gray: pips2
+ Start: 3
+ pip-red: pips2
+ Start: 4
+ pip-blue: pips2
+ Start: 5
+ pip-disguise: pip-disguise
+ Length: *
+ Tick: 300
+ Offset: 0, -6
+
+v2:
+ idle:
+ Facings: 32
+ ZOffset: 1023
+
+rallypoint:
+ flag: flagfly
+ Length: *
+ Offset: 11,-5
+ ZOffset: 2535
+ circles: fpls
+ Length: *
+ ZOffset: 2047
+
+beacon:
+ Defaults:
+ ZOffset: 2535
+ arrow: mouse
+ Start: 5
+ Offset: 1,-12
+ circles: fpls
+ Length: *
+ ZOffset: 2047
+ atomicon: lores|atomicon
+ Length: *
+ Offset: 0,-42
+ pbmbicon: lores|pbmbicon
+ Length: *
+ Offset: 0,-42
+ camicon: lores|camicon
+ Length: *
+ Offset: 0,-42
+ pinficon: lores|pinficon
+ Length: *
+ Offset: 0,-42
+ clock: beaconclock
+ Length: *
+ Offset: 0,-42
+
+smoke_m:
+ idle:
+ Length: *
+ Offset: 2, -5
+ ZOffset: 512
+ loop:
+ Start: 49
+ Length: 42
+ Offset: 2, -5
+ ZOffset: 512
+ end:
+ Start: 26
+ Length: -26
+ Offset: 2, -5
+ ZOffset: 512
+
+dragon:
+ idle:
+ Facings: 32
+ ZOffset: 1023
+
+smokey:
+ idle:
+ Length: *
+ ZOffset: 1023
+
+bomb:
+ idle:
+ Length: *
+ ZOffset: 1023
+
+missile:
+ idle:
+ Facings: 32
+ ZOffset: 1023
+
+torpedo:
+ idle: missile
+ Facings: 32
+ ZOffset: -1023
+
+litning:
+ bright:
+ Length: 4
+ ZOffset: 1023
+ dim:
+ Start: 4
+ Length: 4
+ ZOffset: 1023
+
+fb1:
+ idle:
+ Length: *
+ ZOffset: 1023
+
+moveflsh:
+ idle:
+ Length: *
+ Tick: 80
+ ZOffset: 2047
+ UseTilesetExtension: true
+ TilesetOverrides:
+ DESERT: TEMPERAT
+
+select:
+ repair:
+ Start: 2
+
+poweroff:
+ offline:
+ Length: *
+ Tick: 160
+ ZOffset: 2047
+
+allyrepair:
+ repair:
+ Length: *
+ Tick: 160
+ ZOffset: 2047
+
+tabs:
+ left-normal:
+ left-pressed:
+ Start: 1
+
+sputnik:
+ idle:
+ Length: *
+ Offset: -4,0
+ ZOffset: 1023
+
+dd-crnr:
+ idle:
+ Length: *
+ top-left:
+ top-right:
+ Start: 1
+ bottom-left:
+ Start: 2
+ bottom-right:
+ Start: 3
+
+fb2:
+ idle:
+ Length: *
+ ZOffset: 1023
+
+fb3:
+ idle:
+ Facings: 32
+ ZOffset: 1023
+
+fb4:
+ idle:
+ Length: *
+ ZOffset: 1023
+
+scrate:
+ Defaults:
+ ZOffset: -511
+ idle:
+ land:
+ Start: 1
+ water:
+ Start: 2
+ Length: 4
+ Tick: 500
+
+wcrate:
+ Defaults:
+ ZOffset: -511
+ idle:
+ land:
+ water: wwcrate
+ Length: *
+ Tick: 500
+
+xcratea:
+ idle:
+ ZOffset: -511
+ land:
+ Start: 1
+ ZOffset: -511
+ water:
+ Start: 2
+ Length: 4
+ Tick: 500
+ ZOffset: -511
+
+xcrateb:
+ idle:
+ ZOffset: -511
+ land:
+ Start: 1
+ ZOffset: -511
+ water:
+ Start: 2
+ Length: 4
+ Tick: 500
+ ZOffset: -511
+
+xcratec:
+ idle:
+ ZOffset: -511
+ land:
+ Start: 1
+ ZOffset: -511
+ water:
+ Start: 2
+ Length: 4
+ Tick: 500
+ ZOffset: -511
+
+xcrated:
+ idle:
+ ZOffset: -511
+ land:
+ Start: 1
+ ZOffset: -511
+ water:
+ Start: 2
+ Length: 4
+ Tick: 500
+ ZOffset: -511
+
+crate-effects:
+ Defaults:
+ ZOffset: 2047
+ Length: *
+ speed: speed
+ dollar: dollar
+ reveal-map: earth
+ hide-map: empulse
+ fpower: fpower
+ gps: gpsbox
+ invuln: invulbox
+ heal: invun
+ nuke: missile2
+ parabombs: parabox
+ sonar: sonarbox
+ stealth: stealth2
+ timequake: tquake
+ armor: armor
+ chrono: chronbox
+ airstrike: deviator
+ levelup: levelup
+ Tick: 200
+
+parach:
+ open:
+ Length: 5
+ idle:
+ Start: 5
+ Length: 11
+
+parach-shadow:
+ idle:
+ Length: *
+
+bomblet:
+ idle:
+ Length: *
+ ZOffset: 1023
+
+parabomb:
+ open:
+ Length: 8
+ ZOffset: 1023
+ idle:
+ Start: 8
+ Length: 5
+ ZOffset: 1023
+
+smokland:
+ open: playersmoke
+ Length: 60
+ Tick: 120
+ ZOffset: 1023
+ idle: playersmoke
+ Start: 60
+ Length: 32
+ Tick: 120
+ ZOffset: 1023
+
+fire:
+ 1: fire1
+ Length: *
+ Offset: 0,-3
+ ZOffset: 1023
+ 2: fire2
+ Length: *
+ Offset: 0,-3
+ ZOffset: 1023
+ 3: fire3
+ Length: *
+ Offset: 0,-3
+ ZOffset: 1023
+ 4: fire4
+ Length: *
+ Offset: 0,-3
+ ZOffset: 1023
+
+rank:
+ rank-veteran-1:
+ rank-veteran-2:
+ Start: 1
+ rank-veteran-3:
+ Start: 2
+ rank-elite:
+ Start: 3
+
+iconchevrons:
+ veteran:
+ Offset: 2, 2
+
+atomic:
+ up: atomicup
+ Length: *
+ ZOffset: 1023
+ down: atomicdn
+ Length: *
+ ZOffset: 1023
+
+bubbles:
+ idle:
+ Length: *
+ Tick: 220
+
+mpspawn:
+ idle:
+ Length: *
+
+waypoint:
+ idle:
+ Length: *
+
+camera:
+ idle:
+ Length: *
+
+gpsdot:
+ Infantry:
+ Vehicle:
+ Start: 1
+ Ship:
+ Start: 2
+ Helicopter:
+ Start: 3
+ Plane:
+ Start: 4
+ Harvester:
+ Start: 5
+ Structure:
+ Start: 6
+ Oil:
+ Start: 7
+ Hospital:
+ Start: 8
+ Biohazard:
+ Start: 9
+ Communications:
+ Start: 10
+ Forward:
+ Start: 11
+
+#SniperDrop icon by FiveAces
+icon:
+ abomb: atomicon
+ invuln: infxicon
+ chrono: warpicon
+ spyplane: smigicon
+ paratroopers: pinficon
+ gps: gpssicon
+ parabombs: pbmbicon
+ sonar: sonricon
+ sniperdrop: sniperdropicon
+
+quee:
+ idle:
+ Length: 10
+ damaged-idle:
+ Start: 10
+ Length: 10
+
+lar1:
+ idle:
+
+lar2:
+ idle:
+
+minp:
+ idle:
+ ZOffset: -512
+ icon: jmin
+
+minv:
+ idle:
+ ZOffset: -512
+ icon: jmin
+
+overlay:
+ build-valid-desert:
+ build-valid-interior:
+ build-valid-snow:
+ Start: 2
+ build-valid-temperat:
+ build-invalid:
+ Start: 1
+ target-select:
+ Start: 2
+ target-valid-desert:
+ target-valid-interior:
+ target-valid-snow:
+ Start: 2
+ target-valid-temperat:
+ target-invalid:
+ Start: 1
+
+editor-overlay:
+ copy: overlay
+ Start: 0
+ paste: overlay
+ Start: 1
+
+resources:
+ Defaults:
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ DESERT: TEMPERAT
+ gold01: gold01
+ gold02: gold02
+ gold03: gold03
+ gold04: gold04
+ gem01: gem01
+ gem02: gem02
+ gem03: gem03
+ gem04: gem04
+
+shroud:
+ shroud: shadow
+ Length: *
+
+# Note: The order of smudges and craters determines
+# the index that is mapped to them in maps
+scorches:
+ Defaults:
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ sc1: sc1
+ sc2: sc2
+ sc3: sc3
+ sc4: sc4
+ sc5: sc5
+ sc6: sc6
+
+craters:
+ Defaults:
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ cr1: cr1
+ cr2: cr2
+ cr3: cr3
+ cr4: cr4
+ cr5: cr5
+ cr6: cr6
+
+mine:
+ idle:
+ UseTilesetExtension: true
+ ZOffset: -512
+
+gmine:
+ idle:
+ ZOffset: -512
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+
+railmine:
+ idle:
+ ZOffset: -512
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+
+ctflag:
+ idle:
+ Length: 9
+ Tick: 50
+ Offset: 0,-12
+ bib: mbGAP
+ Length: *
+ UseTilesetExtension: true
diff --git a/mods/ura/sequences/ships.yaml b/mods/ura/sequences/ships.yaml
new file mode 100644
index 0000000..c33d1c9
--- /dev/null
+++ b/mods/ura/sequences/ships.yaml
@@ -0,0 +1,49 @@
+ss:
+ idle:
+ Facings: 16
+ icon: ssicon
+
+ca:
+ idle:
+ Facings: 16
+ turret: turr
+ Facings: 32
+ muzzle: gunfire2
+ Length: 5
+ icon: caicon
+
+dd:
+ idle:
+ Facings: 16
+ turret: ssam
+ Facings: 32
+ icon: ddicon
+
+pt:
+ idle:
+ Facings: 16
+ turret: mgun
+ Facings: 32
+ muzzle: gunfire2
+ Length: 5
+ icon: pticon
+
+lst:
+ idle:
+ open:
+ Start: 1
+ Length: 4
+ Tick: 150
+ close:
+ Frames: 4, 3, 2, 1
+ Length: 4
+ Tick: 150
+ unload:
+ Start: 4
+ ZOffset: -511
+ icon: lsticon
+
+msub:
+ idle:
+ Facings: 16
+ icon: msubicon
diff --git a/mods/ura/sequences/structures.yaml b/mods/ura/sequences/structures.yaml
new file mode 100644
index 0000000..6b473ca
--- /dev/null
+++ b/mods/ura/sequences/structures.yaml
@@ -0,0 +1,667 @@
+fcom:
+ idle:
+ damaged-idle:
+ Start: 1
+ make: fcommake
+ Length: *
+ bib: bib3
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+
+hosp:
+ idle:
+ Length: 4
+ damaged-idle:
+ Start: 4
+ Length: 4
+ dead:
+ Start: 8
+ Tick: 800
+ make: hospmake
+ Length: *
+ bib: mbHOSP
+ Length: *
+ Offset: 0,1
+ UseTilesetExtension: true
+ icon: hospicon
+
+bio:
+ idle:
+ damaged-idle:
+ Start: 1
+ dead:
+ Start: 2
+ Tick: 800
+ make: biomake
+ Length: *
+
+oilb:
+ Defaults:
+ Offset: 0,-6
+ idle:
+ damaged-idle:
+ Start: 1
+ Length: *
+ make:
+ bib: bib3
+ Length: *
+ Offset: 0,0
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+
+fact:
+ idle:
+ make: factmake
+ Length: *
+ build:
+ Start: 1
+ Length: 25
+ damaged-idle:
+ Start: 26
+ damaged-build:
+ Start: 27
+ Length: 25
+ dead: factdead
+ Tick: 800
+ bib: bib2
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ icon: facticon
+ fake-icon: facficon
+
+proc:
+ idle:
+ ZOffset: -1c511
+ damaged-idle:
+ ZOffset: -1c511
+ idle-top: proctop
+ ZOffset: 0
+ damaged-idle-top: proctop
+ Start: 1
+ ZOffset: 0
+ make: procmake
+ Length: *
+ dead: procdead
+ Tick: 800
+ bib: bib2
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ icon: procicon
+
+silo:
+ idle: silo2
+ Offset: 0,-1
+ damaged-idle: silo2
+ Start: 9
+ Offset: 0,-1
+ stages: silo2
+ Length: 9
+ Offset: 0,-1
+ damaged-stages: silo2
+ Start: 9
+ Length: 9
+ Offset: 0,-1
+ make: silomake
+ Length: *
+ Offset: 0,-1
+ bib: mbSILO
+ Length: *
+ UseTilesetExtension: true
+ icon: siloicon
+
+powr:
+ idle:
+ damaged-idle:
+ Start: 1
+ make: powrmake
+ Length: *
+ dead: powrdead
+ Tick: 800
+ bib: bib3
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ icon: powricon
+ fake-icon: fpwricon
+
+apwr:
+ idle:
+ Offset: 0,-10
+ damaged-idle:
+ Start: 1
+ Offset: 0,-10
+ make: apwrmake
+ Length: *
+ Offset: 0,-10
+ dead: apwrdead
+ Tick: 800
+ Offset: 0,-10
+ bib: bib2
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ icon: apwricon
+ fake-icon: fapwicon
+
+barr:
+ idle:
+ Length: 10
+ Offset: 0,-6
+ damaged-idle:
+ Start: 10
+ Length: 10
+ Offset: 0,-6
+ make: barrmake
+ Length: *
+ Offset: 0,-6
+ bib: bib3
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ icon: barricon
+
+#Fake Barracks icon by MustaphaTR
+tent:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ idle:
+ Length: 10
+ damaged-idle:
+ Start: 10
+ Length: 10
+ make: tentmake
+ Length: *
+ bib: bib3
+ Length: *
+ icon: tenticon
+ UseTilesetExtension: false
+ fake-icon: tenficon
+ UseTilesetExtension: false
+
+kenn:
+ idle:
+ damaged-idle:
+ Start: 1
+ make: kennmake
+ Length: *
+ bib: mbSILO
+ Length: *
+ UseTilesetExtension: true
+ icon: kennicon
+
+dome:
+ idle:
+ Offset: 0,-4
+ damaged-idle:
+ Start: 1
+ Offset: 0,-4
+ make: domemake
+ Length: *
+ Offset: 0,-4
+ bib: bib3
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ icon: domeicon
+ fake-icon: domficon
+
+atek:
+ idle:
+ damaged-idle:
+ Start: 1
+ make: atekmake
+ Length: *
+ active: sputdoor
+ Length: *
+ Offset: -4,0
+ bib: bib3
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ icon: atekicon
+ fake-icon: ateficon
+
+stek:
+ idle:
+ damaged-idle:
+ Start: 1
+ make: stekmake
+ Length: *
+ bib: bib2
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ icon: stekicon
+
+weap:
+ idle:
+ damaged-idle:
+ Start: 1
+ make: weapmake
+ Length: *
+ build-top: weap3
+ Length: 10
+ damaged-build-top: weap2
+ Start: 4
+ Length: 4
+ bib: bib2
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ icon: weapicon
+ fake-icon: weaficon
+
+hpad:
+ idle:
+ ZOffset: -1023
+ damaged-idle:
+ Start: 7
+ ZOffset: -1023
+ active:
+ Start: 1
+ Length: 6
+ ZOffset: -1023
+ damaged-active:
+ Start: 8
+ Length: 6
+ ZOffset: -1023
+ make: hpadmake
+ Length: *
+ bib: bib3
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ icon: hpadicon
+
+afld:
+ idle: afldidle
+ Length: 8
+ Tick: 160
+ ZOffset: -1023
+ Offset: 0,-4
+ damaged-idle: afldidle
+ Start: 8
+ Length: 8
+ Tick: 160
+ ZOffset: -1023
+ Offset: 0,-4
+ active:
+ Length: 8
+ Tick: 160
+ ZOffset: -1023
+ Offset: 0,-4
+ damaged-active:
+ Start: 8
+ Length: 8
+ Tick: 160
+ ZOffset: -1023
+ Offset: 0,-4
+ make: afldmake
+ Length: *
+ Offset: 0,-4
+ icon: afldicon
+
+spen:
+ idle:
+ Offset: 0,2
+ damaged-idle:
+ Start: 1
+ Offset: 0,2
+ make: spenmake
+ Length: *
+ Offset: 0,2
+ icon: spenicon
+ fake-icon: speficon
+
+syrd:
+ idle:
+ damaged-idle:
+ Start: 1
+ make: syrdmake
+ Length: *
+ icon: syrdicon
+ fake-icon: syrficon
+
+fix:
+ idle:
+ Offset: 0,1
+ ZOffset: -1c511
+ damaged-idle:
+ Start: 7
+ Offset: 0,1
+ ZOffset: -1c511
+ active:
+ Start: 1
+ Length: 6
+ Offset: 0,1
+ ZOffset: -1c511
+ damaged-active:
+ Start: 8
+ Length: 6
+ Offset: 0,1
+ ZOffset: -1c511
+ make: fixmake
+ Length: *
+ Offset: 0,1
+ bib: mbFIX
+ Length: *
+ ZOffset: -1c511
+ Offset: 0,-4
+ UseTilesetExtension: true
+ icon: fixicon
+ fake-icon: fixficon
+
+gun:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ recoil:
+ Start: 32
+ Facings: 32
+ UseClassicFacingFudge: True
+ make: gunmake
+ Length: *
+ damaged-idle:
+ Start: 64
+ Facings: 32
+ UseClassicFacingFudge: True
+ damaged-recoil:
+ Start: 96
+ Facings: 32
+ UseClassicFacingFudge: True
+ muzzle: gunfire2
+ Length: 5
+ bib: mbGUN
+ Length: *
+ Offset: -1,-1
+ UseTilesetExtension: true
+ icon: gunicon
+
+agun:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ Offset: 0,-13
+ recoil:
+ Start: 32
+ Facings: 32
+ UseClassicFacingFudge: True
+ Offset: 0,-13
+ make: agunmake
+ Length: *
+ Offset: 0,-13
+ damaged-idle:
+ Start: 64
+ Facings: 32
+ UseClassicFacingFudge: True
+ Offset: 0,-13
+ damaged-recoil:
+ Start: 96
+ Facings: 32
+ UseClassicFacingFudge: True
+ Offset: 0,-13
+ muzzle: gunfire2
+ Start: 1
+ Length: 4
+ bib: mbAGUN
+ Length: *
+ UseTilesetExtension: true
+ icon: agunicon
+
+sam:
+ idle: sam2
+ Facings: 32
+ UseClassicFacingFudge: True
+ Offset: -1,-2
+ damaged-idle: sam2
+ Start: 34
+ Facings: 32
+ UseClassicFacingFudge: True
+ Offset: -1,-2
+ make: sammake
+ Length: *
+ Offset: -1,-2
+ muzzle: samfire
+ Length: 18
+ Facings: 8
+ Offset: -1,6
+ bib: mbSAM
+ Length: *
+ Offset: 0,1
+ UseTilesetExtension: true
+ icon: samicon
+
+ftur:
+ idle:
+ Offset: 0,-2
+ damaged-idle:
+ Start: 1
+ Offset: 0,-2
+ make: fturmake
+ Length: *
+ Offset: 0,-2
+ bib: mbFTUR
+ Length: *
+ UseTilesetExtension: true
+ icon: fturicon
+
+tsla:
+ idle:
+ Offset: 0,-13
+ damaged-idle:
+ Start: 10
+ Offset: 0,-13
+ make: tslamake
+ Length: *
+ Offset: 0,-13
+ active:
+ Start: 1
+ Length: 9
+ Tick: 100
+ Offset: 0,-13
+ damaged-active:
+ Start: 11
+ Length: 9
+ Tick: 100
+ Offset: 0,-13
+ bib: mbTSLA
+ Length: *
+ UseTilesetExtension: true
+ icon: tslaicon
+
+pbox:
+ idle:
+ damaged-idle:
+ Start: 1
+ make: pboxmake
+ Length: *
+ muzzle: minigun
+ Length: 6
+ Facings: 8
+ bib: mbPBOX
+ Length: *
+ Offset: 0,-2
+ UseTilesetExtension: true
+ icon: pboxicon
+
+hbox:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ idle:
+ damaged-idle:
+ Start: 2
+ make: hboxmake
+ Length: *
+ muzzle: minigun
+ Length: 6
+ Facings: 8
+ UseTilesetExtension: false
+ icon: hboxicon
+ UseTilesetExtension: false
+
+gap:
+ idle:
+ Length: 32
+ Offset: 0,-14
+ damaged-idle:
+ Start: 32
+ Length: 32
+ Offset: 0,-14
+ make: gapmake
+ Length: *
+ Offset: 0,-14
+ bib: mbGAP
+ Length: *
+ UseTilesetExtension: true
+ icon: gapicon
+
+iron:
+ idle:
+ Offset: 0,-12
+ active:
+ Length: 11
+ Offset: 0,-12
+ damaged-idle:
+ Start: 11
+ Offset: 0,-12
+ damaged-active:
+ Start: 11
+ Length: 11
+ Offset: 0,-12
+ make: ironmake
+ Length: *
+ Offset: 0,-12
+ bib: mbIRON
+ Length: *
+ Offset: 0,2
+ UseTilesetExtension: true
+ icon: ironicon
+
+pdox:
+ idle:
+ damaged-idle:
+ Start: 29
+ active:
+ Length: 29
+ damaged-active:
+ Start: 29
+ Length: 29
+ make: pdoxmake
+ Length: *
+ bib: mbPDOX
+ Length: *
+ Offset: 0,-4
+ UseTilesetExtension: true
+ icon: pdoxicon
+ fake-icon: pdoficon
+
+mslo:
+ Defaults:
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+ idle:
+ damaged-idle:
+ Start: 8
+ make: mslomake
+ Length: *
+ active:
+ Start: 1
+ Length: 7
+ Tick: 80
+ damaged-active:
+ Start: 9
+ Length: 7
+ icon: msloicon2
+ UseTilesetExtension: false
+ fake-icon: mslficon
+ UseTilesetExtension: false
+
+miss:
+ idle:
+ damaged-idle:
+ Start: 1
+ dead:
+ Start: 2
+ Tick: 800
+ make: missmake
+ Length: *
+ bib: bib2
+ Length: *
+ UseTilesetExtension: true
+ TilesetOverrides:
+ INTERIOR: TEMPERAT
+
+brik:
+ idle:
+ Length: 16
+ scratched-idle:
+ Start: 16
+ Length: 16
+ damaged-idle:
+ Start: 32
+ Length: 16
+ icon: brikicon
+
+vgate:
+ make:
+ Length: 7
+ idle:
+ Frames: 6, 5, 4, 3, 2, 1, 0
+ Length: 7
+ ZOffset: -1c511
+ damaged-idle:
+ Frames: 13, 12, 11, 10, 9, 8, 7
+ Length: 7
+ ZOffset: -1c511
+
+agate:
+ make:
+ Length: 7
+ idle:
+ Frames: 6, 5, 4, 3, 2, 1, 0
+ Length: 7
+ ZOffset: -1c511
+ damaged-idle:
+ Frames: 13, 12, 11, 10, 9, 8, 7
+ Length: 7
+ ZOffset: -1c511
+
+sgate:
+ Inherits: agate
+
+sbag:
+ idle:
+ Length: 16
+ icon: sbagicon
+
+fenc:
+ idle:
+ Length: 16
+ icon: fencicon
+
+cycl:
+ idle:
+ Length: 16
+ damaged-idle:
+ Start: 16
+ Length: 16
diff --git a/mods/ura/sequences/vehicles.yaml b/mods/ura/sequences/vehicles.yaml
new file mode 100644
index 0000000..c12efff
--- /dev/null
+++ b/mods/ura/sequences/vehicles.yaml
@@ -0,0 +1,324 @@
+mcv:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ icon: mcvicon
+
+mcvhusk:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ ZOffset: -1023
+
+truk:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ icon: trukicon
+
+harv:
+ idle: harvempty
+ Facings: 32
+ UseClassicFacingFudge: True
+ harvest: harvempty
+ Start: 32
+ Length: 8
+ Facings: 8
+ empty-idle: harvempty
+ Facings: 32
+ UseClassicFacingFudge: True
+ empty-harvest: harvempty
+ Start: 32
+ Length: 8
+ Facings: 8
+ half-idle: harvhalf
+ Facings: 32
+ UseClassicFacingFudge: True
+ half-harvest: harvhalf
+ Start: 32
+ Length: 8
+ Facings: 8
+ full-idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ full-harvest:
+ Start: 32
+ Length: 8
+ Facings: 8
+ dock:
+ Start: 96
+ Length: 8
+ dock-loop:
+ Start: 104
+ Length: 7
+ icon: harvicon
+ Start: 0
+
+hhusk:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ ZOffset: -1023
+
+hhusk2:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ ZOffset: -1023
+
+1tnk:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ turret:
+ Start: 32
+ Facings: 32
+ UseClassicFacingFudge: True
+ muzzle: gunfire2
+ Length: 2
+ icon: 1tnkicon
+
+1tnk.destroyed:
+ idle: 1tnk
+ Facings: 32
+ UseClassicFacingFudge: True
+ ZOffset: -512
+ turret: 1tnk
+ Start: 32
+ Facings: 32
+ UseClassicFacingFudge: True
+ ZOffset: -512
+
+2tnk:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ turret:
+ Start: 32
+ Facings: 32
+ UseClassicFacingFudge: True
+ muzzle: gunfire2
+ Length: 5
+ icon: 2tnkicon
+
+2tnkger:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ turret:
+ Start: 32
+ Facings: 32
+ UseClassicFacingFudge: True
+ muzzle: gunfire2
+ Length: 5
+ icon: 2tnkgericon
+ UseTilesetExtension: false
+
+2tnk.destroyed:
+ idle: 2tnk
+ Facings: 32
+ UseClassicFacingFudge: True
+ ZOffset: -512
+ turret: 2tnk
+ Start: 32
+ Facings: 32
+ UseClassicFacingFudge: True
+ ZOffset: -512
+
+3tnk:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ turret:
+ Start: 32
+ Facings: 32
+ UseClassicFacingFudge: True
+ muzzle: gunfire2
+ Length: 5
+ icon: 3tnkicon
+
+3tnk.destroyed:
+ idle: 3tnk
+ Facings: 32
+ UseClassicFacingFudge: True
+ ZOffset: -512
+ turret: 3tnk
+ Start: 32
+ Facings: 32
+ UseClassicFacingFudge: True
+ ZOffset: -512
+
+4tnk:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ turret:
+ Start: 32
+ Facings: 32
+ UseClassicFacingFudge: True
+ muzzle: gunfire2
+ Length: 5
+ icon: 4tnkicon
+
+#Mammoth KV8 sequence by FiveAces
+4tnk.kv-8:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ turret:
+ Start: 32
+ Facings: 32
+ UseClassicFacingFudge: True
+ muzzle: gunfire2
+ Length: 5
+ icon: 4tnk.kv-8icon
+ UseTilesetExtension: false
+
+4tnk.destroyed:
+ idle: 4tnk
+ Facings: 32
+ UseClassicFacingFudge: True
+ ZOffset: -512
+ turret: 4tnk
+ Start: 32
+ Facings: 32
+ UseClassicFacingFudge: True
+ ZOffset: -512
+
+v2rl:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ empty-idle:
+ Start: 32
+ Facings: 32
+ UseClassicFacingFudge: True
+ icon: v2rlicon
+
+arty:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ muzzle: gunfire2
+ Length: 5
+ icon: artyicon
+
+jeep:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ turret:
+ Start: 32
+ Facings: 32
+ UseClassicFacingFudge: True
+ muzzle: minigun
+ Length: 6
+ Facings: 8
+ icon: jeepicon
+
+apc:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ muzzle: minigun
+ Length: 6
+ Facings: 8
+ open:
+ Start: 32
+ Length: 3
+ unload:
+ Start: 32
+ icon: apcicon
+
+mnly:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ icon: mnlyicon
+
+mrj:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ spinner:
+ Start: 32
+ Length: 32
+ icon: mrjicon
+
+mgg:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ spinner:
+ Start: 32
+ Length: 8
+ spinner-idle:
+ Start: 32
+ Length: 1
+ icon: mggicon
+
+mgg.destroyed:
+ idle: mgg
+ Facings: 32
+ UseClassicFacingFudge: True
+ ZOffset: -512
+ spinner: mgg
+ Start: 32
+ Length: 8
+ ZOffset: -512
+ spinner-idle: mgg
+ Start: 32
+
+ttnk:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ spinner:
+ Start: 32
+ Length: 32
+ icon: ttnkicon
+
+ftrk:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ turret:
+ Start: 32
+ Facings: 32
+ UseClassicFacingFudge: True
+ muzzle: gunfire2
+ Length: 2
+ icon: ftrkicon
+
+dtrk:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ icon: dtrkicon
+
+ctnk:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ muzzle: gunfire2
+ Length: 5
+ icon: ctnkicon
+
+qtnk:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ piston:
+ Start: 32
+ Facings: 8
+ Length: 8
+ icon: qtnkicon
+
+stnk:
+ idle:
+ Facings: 32
+ UseClassicFacingFudge: True
+ turret:
+ Start: 38
+ Facings: 32
+ icon: stnkicon
diff --git a/mods/ura/tilesets/desert.yaml b/mods/ura/tilesets/desert.yaml
new file mode 100644
index 0000000..875e8a4
--- /dev/null
+++ b/mods/ura/tilesets/desert.yaml
@@ -0,0 +1,3187 @@
+General:
+ Name: Desert
+ Id: DESERT
+ Palette: desert.pal
+ EditorTemplateOrder: Terrain, Debris, Road, Cliffs, Water Cliffs, Beach, River, Bridge
+ HeightDebugColors: 880000
+
+Terrain:
+ TerrainType@Beach:
+ Type: Beach
+ TargetTypes: Ground
+ Color: B09C78
+ TerrainType@Bridge:
+ Type: Bridge
+ TargetTypes: Ground, Bridge
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 606060
+ TerrainType@Brush:
+ Type: Brush
+ TargetTypes: Ground
+ Color: 1C2024
+ TerrainType@Clear:
+ Type: Clear
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 865F45
+ RestrictPlayerColor: true
+ TerrainType@Gems:
+ Type: Gems
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 8470FF
+ RestrictPlayerColor: true
+ TerrainType@Ore:
+ Type: Ore
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 948060
+ RestrictPlayerColor: true
+ TerrainType@River:
+ Type: River
+ TargetTypes: Ground
+ Color: 6F848B
+ TerrainType@Road:
+ Type: Road
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: A87B53
+ TerrainType@Rock:
+ Type: Rock
+ TargetTypes: Ground
+ Color: 745A3F
+ TerrainType@Rough:
+ Type: Rough
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 44443C
+ TerrainType@Tree:
+ Type: Tree
+ TargetTypes: Ground
+ Color: 1C2024
+ TerrainType@Wall:
+ Type: Wall
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: D0C0A0
+ TerrainType@Water:
+ Type: Water
+ TargetTypes: Water
+ IsWater: True
+ Color: 5DA5CE
+ RestrictPlayerColor: true
+
+Templates:
+ Template@255:
+ Id: 255
+ Images: clear1.des
+ Size: 1,1
+ PickAny: True
+ Categories: Terrain
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ 12: Clear
+ 13: Clear
+ 14: Clear
+ 15: Clear
+ Template@65535:
+ Id: 65535
+ Images: clear1.des
+ Size: 1,1
+ PickAny: True
+ Categories: Terrain
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ 12: Clear
+ 13: Clear
+ 14: Clear
+ 15: Clear
+ Template@256:
+ Id: 256
+ Images: w1.des
+ Size: 1,1
+ Categories: Terrain
+ Tiles:
+ 0: Water
+ Template@257:
+ Id: 257
+ Images: sh17.des
+ Size: 2,2
+ Categories: Terrain
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Water
+ 3: Water
+ Template@258:
+ Id: 258
+ Images: sh18.des
+ Size: 2,2
+ Categories: Terrain
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Water
+ 3: Water
+ Template@180:
+ Id: 180
+ Images: s01.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@181:
+ Id: 181
+ Images: s02.des
+ Size: 2,3
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@182:
+ Id: 182
+ Images: s03.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@183:
+ Id: 183
+ Images: s04.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@184:
+ Id: 184
+ Images: s05.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@185:
+ Id: 185
+ Images: s06.des
+ Size: 2,3
+ Categories: Cliffs
+ Tiles:
+ 0: Rough
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ Template@186:
+ Id: 186
+ Images: s07.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@187:
+ Id: 187
+ Images: s08.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@188:
+ Id: 188
+ Images: s09.des
+ Size: 3,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@189:
+ Id: 189
+ Images: s10.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@190:
+ Id: 190
+ Images: s11.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@191:
+ Id: 191
+ Images: s12.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@192:
+ Id: 192
+ Images: s13.des
+ Size: 3,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rough
+ 3: Rock
+ 4: Rock
+ 5: Rough
+ Template@193:
+ Id: 193
+ Images: s14.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 2: Rock
+ Template@194:
+ Id: 194
+ Images: s15.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@195:
+ Id: 195
+ Images: s16.des
+ Size: 2,3
+ Categories: Cliffs
+ Tiles:
+ 0: Rough
+ 2: Rock
+ 3: Rock
+ 5: Rock
+ Template@196:
+ Id: 196
+ Images: s17.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@197:
+ Id: 197
+ Images: s18.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@198:
+ Id: 198
+ Images: s19.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@199:
+ Id: 199
+ Images: s20.des
+ Size: 2,3
+ Categories: Cliffs
+ Tiles:
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rough
+ Template@200:
+ Id: 200
+ Images: s21.des
+ Size: 1,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@202:
+ Id: 202
+ Images: s22.des
+ Size: 2,1
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@203:
+ Id: 203
+ Images: s23.des
+ Size: 3,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rough
+ Template@204:
+ Id: 204
+ Images: s24.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@205:
+ Id: 205
+ Images: s25.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@206:
+ Id: 206
+ Images: s26.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@207:
+ Id: 207
+ Images: s27.des
+ Size: 3,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rough
+ 3: Rough
+ 4: Rock
+ 5: Rock
+ Template@208:
+ Id: 208
+ Images: s28.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 3: Rock
+ Template@209:
+ Id: 209
+ Images: s29.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@210:
+ Id: 210
+ Images: s30.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@211:
+ Id: 211
+ Images: s31.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 2: Rock
+ 3: Rock
+ Template@212:
+ Id: 212
+ Images: s32.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rough
+ Template@213:
+ Id: 213
+ Images: s33.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@214:
+ Id: 214
+ Images: s34.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@215:
+ Id: 215
+ Images: s35.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@216:
+ Id: 216
+ Images: s36.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@217:
+ Id: 217
+ Images: s37.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@218:
+ Id: 218
+ Images: s38.des
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@2:
+ Id: 2
+ Images: b01.des
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@3:
+ Id: 3
+ Images: b02.des
+ Size: 2,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@4:
+ Id: 4
+ Images: b03.des
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@5:
+ Id: 5
+ Images: b04.des
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@6:
+ Id: 6
+ Images: b05.des
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@7:
+ Id: 7
+ Images: b06.des
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@14:
+ Id: 14
+ Images: br01.des
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Tree
+ Template@15:
+ Id: 15
+ Images: br02.des
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Tree
+ Template@16:
+ Id: 16
+ Images: br03.des
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Tree
+ Template@17:
+ Id: 17
+ Images: br04.des
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Tree
+ Template@18:
+ Id: 18
+ Images: br05.des
+ Size: 3,2
+ Categories: Debris
+ Tiles:
+ 0: Tree
+ 1: Tree
+ 2: Rock
+ 3: Rock
+ 4: Tree
+ 5: Rock
+ Template@19:
+ Id: 19
+ Images: br06.des
+ Size: 2,2
+ Categories: Debris
+ Tiles:
+ 0: Tree
+ 1: Tree
+ 2: Tree
+ 3: Tree
+ Template@20:
+ Id: 20
+ Images: br07.des
+ Size: 2,2
+ Categories: Debris
+ Tiles:
+ 0: Tree
+ 1: Tree
+ 2: Tree
+ 3: Tree
+ Template@21:
+ Id: 21
+ Images: br08.des
+ Size: 3,2
+ Categories: Debris
+ Tiles:
+ 0: Tree
+ 1: Tree
+ 2: Tree
+ 3: Tree
+ 4: Tree
+ 5: Tree
+ Template@22:
+ Id: 22
+ Images: br09.des
+ Size: 3,2
+ Categories: Debris
+ Tiles:
+ 0: Tree
+ 1: Tree
+ 2: Tree
+ 3: Tree
+ 4: Tree
+ 5: Tree
+ Template@23:
+ Id: 23
+ Images: br10.des
+ Size: 2,2
+ Categories: Debris
+ Tiles:
+ 0: Tree
+ 1: Tree
+ 2: Tree
+ 3: Tree
+ Template@35:
+ Id: 35
+ Images: p01.des
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@36:
+ Id: 36
+ Images: p02.des
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@37:
+ Id: 37
+ Images: p03.des
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ Template@38:
+ Id: 38
+ Images: p04.des
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@39:
+ Id: 39
+ Images: p05.des
+ Size: 2,2
+ Categories: Debris
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ Template@40:
+ Id: 40
+ Images: p06.des
+ Size: 6,4
+ Categories: Debris
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 14: Clear
+ 15: Clear
+ 16: Clear
+ 17: Clear
+ 20: Clear
+ 21: Clear
+ 22: Clear
+ 23: Clear
+ Template@41:
+ Id: 41
+ Images: p07.des
+ Size: 4,2
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ 1: Rough
+ 2: Rough
+ 3: Rough
+ 4: Rough
+ 5: Rough
+ 6: Rough
+ Template@42:
+ Id: 42
+ Images: p08.des
+ Size: 2,1
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ 1: Rough
+ Template@43:
+ Id: 43
+ Images: p09.des
+ Size: 1,2
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@44:
+ Id: 44
+ Images: p10.des
+ Size: 3,2
+ Categories: Debris
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ Template@73:
+ Id: 73
+ Images: rv26.des
+ Size: 1,1
+ Categories: River
+ Tiles:
+ 0: River
+ Template@74:
+ Id: 74
+ Images: rv27.des
+ Size: 1,1
+ Categories: River
+ Tiles:
+ 0: River
+ Template@296:
+ Id: 296
+ Images: rvm01.des
+ Size: 2,3
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: River
+ 3: River
+ 4: Rock
+ 5: Rock
+ Template@297:
+ Id: 297
+ Images: rvm02.des
+ Size: 1,3
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: Rock
+ Template@298:
+ Id: 298
+ Images: rvm03.des
+ Size: 3,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: Rock
+ 3: Rock
+ 4: River
+ 5: Rock
+ Template@299:
+ Id: 299
+ Images: rvm04.des
+ Size: 3,1
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: Rock
+ Template@60:
+ Id: 60
+ Images: rv14.des
+ Size: 4,3
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 7: River
+ 8: Rock
+ 9: Rock
+ 10: Tree
+ 11: Rock
+ Template@61:
+ Id: 61
+ Images: rv15.des
+ Size: 4,3
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Clear
+ 4: River
+ 5: River
+ 6: Rock
+ 7: River
+ 8: Clear
+ 9: Rock
+ 10: Rock
+ 11: Clear
+ Template@62:
+ Id: 62
+ Images: rv16.des
+ Size: 6,4
+ Categories: River
+ Tiles:
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ 7: Rock
+ 8: Rock
+ 9: River
+ 10: River
+ 11: River
+ 12: Rock
+ 13: Rock
+ 14: River
+ 15: Rock
+ 16: Tree
+ 17: Rock
+ 18: River
+ 19: River
+ 20: Rock
+ 21: Tree
+ Template@63:
+ Id: 63
+ Images: rv17.des
+ Size: 6,5
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 6: River
+ 7: Rock
+ 8: Rock
+ 9: Rock
+ 10: Tree
+ 12: Rock
+ 13: Rock
+ 14: River
+ 15: River
+ 16: River
+ 17: Rock
+ 18: Clear
+ 19: Rock
+ 20: Rock
+ 21: Rock
+ 22: River
+ 23: River
+ 28: Rock
+ 29: River
+ Template@64:
+ Id: 64
+ Images: rv18.des
+ Size: 4,4
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: Tree
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 8: Rock
+ 9: River
+ 10: Tree
+ 12: Rock
+ 13: River
+ 14: Rock
+ Template@65:
+ Id: 65
+ Images: rv19.des
+ Size: 4,4
+ Categories: River
+ Tiles:
+ 1: Rock
+ 2: River
+ 3: Clear
+ 5: Rock
+ 6: River
+ 7: Tree
+ 8: Rock
+ 9: Rock
+ 10: River
+ 11: Rock
+ 12: Clear
+ 13: Rock
+ 14: River
+ 15: Tree
+ Template@66:
+ Id: 66
+ Images: rv20.des
+ Size: 6,8
+ Categories: River
+ Tiles:
+ 2: Clear
+ 3: Rock
+ 4: River
+ 5: Clear
+ 7: Clear
+ 8: Rock
+ 9: River
+ 10: Rock
+ 12: Clear
+ 13: Rock
+ 14: Rock
+ 15: River
+ 16: Rock
+ 18: Rock
+ 19: Rock
+ 20: River
+ 21: Rock
+ 22: Clear
+ 24: Rock
+ 25: Rock
+ 26: River
+ 27: Rock
+ 28: Rock
+ 30: Rock
+ 31: Rock
+ 32: River
+ 33: Rock
+ 36: Clear
+ 37: River
+ 38: River
+ 39: Rock
+ 42: Clear
+ 43: River
+ 44: Rock
+ 45: Rock
+ Template@67:
+ Id: 67
+ Images: rv21.des
+ Size: 5,8
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Clear
+ 3: Clear
+ 5: Clear
+ 6: River
+ 7: River
+ 8: Rock
+ 11: Rock
+ 12: River
+ 13: Rock
+ 16: Rock
+ 17: River
+ 18: Rock
+ 19: Rock
+ 21: Rock
+ 22: River
+ 23: River
+ 24: Rock
+ 27: Rock
+ 28: River
+ 29: Rock
+ 32: Rock
+ 33: River
+ 34: River
+ 38: Clear
+ 39: River
+ Template@69:
+ Id: 69
+ Images: rv22.des
+ Size: 3,3
+ Categories: River
+ Tiles:
+ 1: Clear
+ 2: Clear
+ 3: Rock
+ 4: Rock
+ 5: River
+ 6: Rock
+ 7: River
+ 8: Rock
+ Template@70:
+ Id: 70
+ Images: rv23.des
+ Size: 3,3
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: River
+ 4: River
+ 5: Rock
+ 6: Rock
+ 7: River
+ 8: Rock
+ Template@71:
+ Id: 71
+ Images: rv24.des
+ Size: 3,3
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: Rock
+ 3: Rock
+ 4: River
+ 5: River
+ 7: Tree
+ 8: Clear
+ Template@72:
+ Id: 72
+ Images: rv25.des
+ Size: 3,3
+ Categories: River
+ Tiles:
+ 0: Tree
+ 1: River
+ 2: Rock
+ 3: River
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 7: Rock
+ 8: Clear
+ Template@100:
+ Id: 100
+ Images: dt01.des
+ Size: 4,3
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: River
+ 3: Rock
+ 4: Rock
+ 5: River
+ 6: River
+ 7: River
+ 8: River
+ 9: Rock
+ 10: Tree
+ 11: Rock
+ Template@101:
+ Id: 101
+ Images: dt02.des
+ Size: 2,4
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: River
+ 3: Rock
+ 4: Rock
+ 5: River
+ 6: Rough
+ 7: River
+ Template@102:
+ Id: 102
+ Images: dt03.des
+ Size: 3,3
+ Categories: River
+ Tiles:
+ 0: Rough
+ 1: Tree
+ 2: River
+ 3: River
+ 4: River
+ 5: River
+ 6: Tree
+ 7: River
+ 8: Rock
+ Template@103:
+ Id: 103
+ Images: dt04.des
+ Size: 3,4
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rough
+ 3: River
+ 4: River
+ 5: Rough
+ 6: Rock
+ 7: Rock
+ 8: River
+ 9: Rough
+ 10: River
+ Template@75:
+ Id: 75
+ Images: rc01.des
+ Size: 3,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@76:
+ Id: 76
+ Images: rc02.des
+ Size: 2,3
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@77:
+ Id: 77
+ Images: rc03.des
+ Size: 2,3
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@78:
+ Id: 78
+ Images: rc04.des
+ Size: 3,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@79:
+ Id: 79
+ Images: falls2.des
+ Size: 3,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: Rock
+ 3: Rock
+ 4: River
+ 5: Rock
+ Template@80:
+ Id: 80
+ Images: falls1.des
+ Size: 3,3
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: River
+ 4: River
+ 5: River
+ 6: Rock
+ 7: Rock
+ 8: Rock
+ Template@90:
+ Id: 90
+ Images: ford1.des
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: Clear
+ 3: Road
+ 4: Rough
+ 5: Road
+ 6: Rock
+ 7: River
+ 8: Clear
+ Template@91:
+ Id: 91
+ Images: ford2.des
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Clear
+ 3: River
+ 4: Rough
+ 5: River
+ 6: Rock
+ 7: Road
+ 8: Clear
+ Template@164:
+ Id: 164
+ Images: d44.des
+ Size: 1,1
+ Categories: Road
+ Tiles:
+ 0: Road
+ Template@165:
+ Id: 165
+ Images: d45.des
+ Size: 1,1
+ Categories: Road
+ Tiles:
+ 0: Road
+ Template@120:
+ Id: 120
+ Images: d01.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Clear
+ 3: Road
+ Template@121:
+ Id: 121
+ Images: d02.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Clear
+ 3: Clear
+ Template@122:
+ Id: 122
+ Images: d03.des
+ Size: 1,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ Template@123:
+ Id: 123
+ Images: d04.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Road
+ 3: Road
+ Template@124:
+ Id: 124
+ Images: d05.des
+ Size: 3,4
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Clear
+ 3: Road
+ 4: Road
+ 6: Road
+ 7: Road
+ 9: Road
+ 10: Road
+ Template@125:
+ Id: 125
+ Images: d06.des
+ Size: 2,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 2: Road
+ 3: Road
+ 4: Road
+ 5: Road
+ Template@126:
+ Id: 126
+ Images: d07.des
+ Size: 3,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Clear
+ 4: Road
+ 5: Clear
+ Template@127:
+ Id: 127
+ Images: d08.des
+ Size: 3,2
+ Categories: Road
+ Tiles:
+ 1: Road
+ 3: Clear
+ 4: Road
+ 5: Clear
+ Template@128:
+ Id: 128
+ Images: d09.des
+ Size: 4,3
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Road
+ 3: Road
+ 4: Road
+ 5: Road
+ 6: Road
+ 7: Road
+ 10: Clear
+ 11: Clear
+ Template@129:
+ Id: 129
+ Images: d10.des
+ Size: 4,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 4: Road
+ 5: Road
+ 6: Road
+ 7: Road
+ Template@130:
+ Id: 130
+ Images: d11.des
+ Size: 2,3
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Road
+ 3: Road
+ 4: Clear
+ Template@500:
+ Id: 500
+ Images: d12.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 2: Road
+ 3: Road
+ Template@501:
+ Id: 501
+ Images: d13.des
+ Size: 4,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Clear
+ 4: Clear
+ 5: Road
+ 6: Road
+ 7: Clear
+ 10: Road
+ 11: Road
+ Template@502:
+ Id: 502
+ Images: d14.des
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Road
+ 3: Clear
+ 4: Clear
+ 5: Road
+ 6: Road
+ 7: Road
+ 8: Road
+ Template@503:
+ Id: 503
+ Images: d15.des
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Road
+ 3: Road
+ 4: Road
+ 5: Clear
+ 6: Road
+ 7: Clear
+ Template@135:
+ Id: 135
+ Images: d16.des
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Clear
+ 3: Clear
+ 4: Road
+ 5: Road
+ 6: Road
+ 7: Clear
+ 8: Clear
+ Template@136:
+ Id: 136
+ Images: d17.des
+ Size: 3,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Road
+ 3: Clear
+ 4: Road
+ 5: Clear
+ Template@137:
+ Id: 137
+ Images: d18.des
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Clear
+ 3: Road
+ 4: Road
+ 5: Clear
+ 6: Clear
+ 7: Road
+ 8: Clear
+ Template@138:
+ Id: 138
+ Images: d19.des
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Clear
+ 3: Road
+ 4: Road
+ 5: Road
+ 6: Clear
+ 7: Road
+ 8: Clear
+ Template@139:
+ Id: 139
+ Images: d20.des
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Clear
+ 3: Road
+ 4: Road
+ 5: Clear
+ 6: Clear
+ 7: Road
+ 8: Road
+ Template@140:
+ Id: 140
+ Images: d21.des
+ Size: 3,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Road
+ 3: Clear
+ 4: Road
+ 5: Clear
+ Template@141:
+ Id: 141
+ Images: d22.des
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 3: Road
+ 4: Road
+ 5: Clear
+ 6: Clear
+ 7: Road
+ 8: Clear
+ Template@142:
+ Id: 142
+ Images: d23.des
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Clear
+ 3: Clear
+ 4: Road
+ 5: Clear
+ 6: Road
+ 7: Clear
+ Template@143:
+ Id: 143
+ Images: d24.des
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Clear
+ 3: Clear
+ 4: Road
+ 5: Clear
+ 7: Clear
+ 8: Road
+ Template@144:
+ Id: 144
+ Images: d25.des
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Clear
+ 3: Clear
+ 4: Road
+ 5: Clear
+ 7: Clear
+ 8: Road
+ Template@145:
+ Id: 145
+ Images: d26.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Clear
+ Template@146:
+ Id: 146
+ Images: d27.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Clear
+ Template@147:
+ Id: 147
+ Images: d28.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Clear
+ 2: Clear
+ Template@148:
+ Id: 148
+ Images: d29.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Clear
+ 2: Clear
+ Template@149:
+ Id: 149
+ Images: d30.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Clear
+ 2: Road
+ Template@151:
+ Id: 151
+ Images: d31.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Clear
+ 3: Road
+ Template@152:
+ Id: 152
+ Images: d32.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Road
+ 3: Clear
+ Template@153:
+ Id: 153
+ Images: d33.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Road
+ 3: Road
+ Template@154:
+ Id: 154
+ Images: d34.des
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Road
+ 3: Clear
+ 4: Road
+ 5: Clear
+ 6: Road
+ 7: Clear
+ Template@155:
+ Id: 155
+ Images: d35.des
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Road
+ 3: Clear
+ 4: Road
+ 5: Clear
+ 6: Road
+ 7: Clear
+ Template@156:
+ Id: 156
+ Images: d36.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 3: Clear
+ Template@157:
+ Id: 157
+ Images: d37.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 3: Clear
+ Template@158:
+ Id: 158
+ Images: d38.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 3: Clear
+ Template@159:
+ Id: 159
+ Images: d39.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 3: Clear
+ Template@160:
+ Id: 160
+ Images: d40.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 3: Road
+ Template@161:
+ Id: 161
+ Images: d41.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 2: Road
+ 3: Clear
+ Template@162:
+ Id: 162
+ Images: d42.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 2: Road
+ 3: Clear
+ Template@163:
+ Id: 163
+ Images: d43.des
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 2: Road
+ 3: Road
+ Template@300:
+ Id: 300
+ Images: wc01.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@301:
+ Id: 301
+ Images: wc02.des
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@302:
+ Id: 302
+ Images: wc03.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@303:
+ Id: 303
+ Images: wc04.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@304:
+ Id: 304
+ Images: wc05.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@305:
+ Id: 305
+ Images: wc06.des
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rough
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ Template@306:
+ Id: 306
+ Images: wc07.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@307:
+ Id: 307
+ Images: wc08.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@308:
+ Id: 308
+ Images: wc09.des
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: River
+ 4: Rock
+ 5: Rock
+ Template@309:
+ Id: 309
+ Images: wc10.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@310:
+ Id: 310
+ Images: wc11.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@311:
+ Id: 311
+ Images: wc12.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@312:
+ Id: 312
+ Images: wc13.des
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rough
+ 3: Rock
+ 4: Rock
+ 5: Clear
+ Template@313:
+ Id: 313
+ Images: wc14.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Beach
+ 2: Beach
+ Template@314:
+ Id: 314
+ Images: wc15.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@315:
+ Id: 315
+ Images: wc16.des
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Water
+ 2: Rock
+ 3: Rock
+ 5: Rock
+ Template@316:
+ Id: 316
+ Images: wc17.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@317:
+ Id: 317
+ Images: wc18.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@318:
+ Id: 318
+ Images: wc19.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@319:
+ Id: 319
+ Images: wc20.des
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 1: River
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rough
+ Template@320:
+ Id: 320
+ Images: wc21.des
+ Size: 1,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@321:
+ Id: 321
+ Images: wc22.des
+ Size: 2,1
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@322:
+ Id: 322
+ Images: wc23.des
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: River
+ 3: Rock
+ 4: Rock
+ 5: Water
+ Template@323:
+ Id: 323
+ Images: wc24.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@324:
+ Id: 324
+ Images: wc25.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@325:
+ Id: 325
+ Images: wc26.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@326:
+ Id: 326
+ Images: wc27.des
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Water
+ 3: Clear
+ 4: Rock
+ 5: Rock
+ Template@327:
+ Id: 327
+ Images: wc28.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 3: Rock
+ Template@328:
+ Id: 328
+ Images: wc29.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@329:
+ Id: 329
+ Images: wc30.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@330:
+ Id: 330
+ Images: wc31.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: Rock
+ 3: Rock
+ Template@331:
+ Id: 331
+ Images: wc32.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Water
+ Template@332:
+ Id: 332
+ Images: wc33.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@333:
+ Id: 333
+ Images: wc34.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@334:
+ Id: 334
+ Images: wc35.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@335:
+ Id: 335
+ Images: wc36.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@336:
+ Id: 336
+ Images: wc37.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@337:
+ Id: 337
+ Images: wc38.des
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@338:
+ Id: 338
+ Images: wc39.des
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@339:
+ Id: 339
+ Images: wc40.des
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@340:
+ Id: 340
+ Images: wc41.des
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@341:
+ Id: 341
+ Images: wc42.des
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@342:
+ Id: 342
+ Images: wc43.des
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@343:
+ Id: 343
+ Images: wc44.des
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@344:
+ Id: 344
+ Images: wc45.des
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@345:
+ Id: 345
+ Images: wc46.des
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@346:
+ Id: 346
+ Images: falls3.des
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: Rock
+ 3: Rock
+ 4: River
+ 5: Rock
+ Template@347:
+ Id: 347
+ Images: falls4.des
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: River
+ 3: River
+ 4: Rock
+ 5: Rock
+ Template@400:
+ Id: 400
+ Images: sh19.des
+ Size: 3,2
+ Categories: Beach
+ Tiles:
+ 1: Rock
+ 2: Clear
+ 3: Beach
+ 4: Rock
+ 5: Beach
+ Template@401:
+ Id: 401
+ Images: sh20.des
+ Size: 4,1
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Rock
+ 2: Rock
+ 3: Beach
+ Template@402:
+ Id: 402
+ Images: sh21.des
+ Size: 3,1
+ Categories: Beach
+ Tiles:
+ 0: Rock
+ 1: Beach
+ 2: Beach
+ Template@403:
+ Id: 403
+ Images: sh22.des
+ Size: 6,2
+ Categories: Beach
+ Tiles:
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 6: Beach
+ 7: Water
+ 8: Water
+ 9: Rock
+ 10: Beach
+ 11: Beach
+ Template@404:
+ Id: 404
+ Images: sh23.des
+ Size: 2,2
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Beach
+ 3: Beach
+ Template@405:
+ Id: 405
+ Images: sh24.des
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: Rock
+ 3: River
+ 4: River
+ 5: Clear
+ 6: River
+ 7: Water
+ 8: Beach
+ Template@431:
+ Id: 431
+ Images: sh54.des
+ Size: 3,2
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 1: Tree
+ 2: River
+ 3: Beach
+ 4: Water
+ 5: River
+ Template@432:
+ Id: 432
+ Images: sh55.des
+ Size: 3,2
+ Categories: Beach
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Clear
+ 3: Water
+ 4: Rock
+ 5: Rock
+ Template@439:
+ Id: 439
+ Images: sh62.des
+ Size: 6,1
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ Template@440:
+ Id: 440
+ Images: sh63.des
+ Size: 4,1
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ Template@406:
+ Id: 406
+ Images: sh25.des
+ Size: 3,2
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Clear
+ 4: Clear
+ 5: Rock
+ Template@407:
+ Id: 407
+ Images: sh26.des
+ Size: 3,2
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 4: Clear
+ 5: Clear
+ Template@408:
+ Id: 408
+ Images: sh27.des
+ Size: 4,1
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Rock
+ Template@409:
+ Id: 409
+ Images: sh28.des
+ Size: 3,1
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Water
+ Template@410:
+ Id: 410
+ Images: sh29.des
+ Size: 6,2
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Rock
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ Template@411:
+ Id: 411
+ Images: sh30.des
+ Size: 2,2
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Rock
+ Template@412:
+ Id: 412
+ Images: sh31.des
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: River
+ 1: River
+ 2: River
+ 3: Rock
+ 4: River
+ 5: Rock
+ 6: Clear
+ 7: River
+ 8: Rock
+ Template@433:
+ Id: 433
+ Images: sh56.des
+ Size: 3,2
+ Categories: Beach
+ Tiles:
+ 1: Water
+ 2: River
+ 3: Beach
+ 4: Rock
+ 5: Rock
+ Template@434:
+ Id: 434
+ Images: sh57.des
+ Size: 3,2
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 3: Beach
+ 4: Water
+ 5: River
+ Template@413:
+ Id: 413
+ Images: sh36.des
+ Size: 1,1
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ Template@414:
+ Id: 414
+ Images: sh37.des
+ Size: 1,1
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ Template@415:
+ Id: 415
+ Images: sh38.des
+ Size: 1,1
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ Template@416:
+ Id: 416
+ Images: sh39.des
+ Size: 1,1
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ Template@417:
+ Id: 417
+ Images: sh40.des
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 1: Beach
+ 2: Rock
+ 3: Beach
+ 4: Water
+ 5: Water
+ 6: Beach
+ 7: Water
+ 8: Water
+ Template@418:
+ Id: 418
+ Images: sh41.des
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Beach
+ 3: Water
+ 4: Beach
+ 5: Clear
+ 6: Beach
+ 7: Rock
+ 8: Clear
+ Template@423:
+ Id: 423
+ Images: sh46.des
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Beach
+ 3: Clear
+ 4: Beach
+ 5: Water
+ 6: Beach
+ 7: Water
+ 8: Water
+ Template@424:
+ Id: 424
+ Images: sh47.des
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Rock
+ 3: Beach
+ 4: Clear
+ 6: Water
+ 7: Beach
+ 8: Beach
+ Template@425:
+ Id: 425
+ Images: sh48.des
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 3: Beach
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ Template@426:
+ Id: 426
+ Images: sh49.des
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 1: Water
+ 2: Beach
+ 3: Beach
+ 4: Rock
+ 5: Rock
+ 6: Clear
+ 7: Rock
+ 8: Rock
+ Template@427:
+ Id: 427
+ Images: sh50.des
+ Size: 4,3
+ Categories: Beach
+ Tiles:
+ 1: Water
+ 2: Water
+ 3: Beach
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 8: Beach
+ 9: Clear
+ Template@428:
+ Id: 428
+ Images: sh51.des
+ Size: 4,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Water
+ 4: Clear
+ 5: Water
+ 6: Water
+ 8: Rock
+ 9: Rock
+ 10: Beach
+ 11: Water
+ Template@429:
+ Id: 429
+ Images: sh52.des
+ Size: 4,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Beach
+ 2: Beach
+ 3: Rock
+ 6: Water
+ 7: Rock
+ 10: Water
+ 11: River
+ Template@430:
+ Id: 430
+ Images: sh53.des
+ Size: 4,3
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Beach
+ 4: Clear
+ 5: River
+ 6: Water
+ 7: Water
+ 8: River
+ 9: Water
+ 10: River
+ 11: River
+ Template@419:
+ Id: 419
+ Images: sh42.des
+ Size: 1,2
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ Template@420:
+ Id: 420
+ Images: sh43.des
+ Size: 1,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Clear
+ 2: Beach
+ Template@437:
+ Id: 437
+ Images: sh60.des
+ Size: 2,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Beach
+ 2: Beach
+ 3: Clear
+ 4: Beach
+ 5: Clear
+ Template@438:
+ Id: 438
+ Images: sh61.des
+ Size: 2,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Clear
+ 2: Water
+ 3: Beach
+ 5: Beach
+ Template@441:
+ Id: 441
+ Images: sh64.des
+ Size: 2,3
+ Categories: Beach
+ Tiles:
+ 0: River
+ 1: Rough
+ 2: River
+ 3: River
+ 4: River
+ 5: Rock
+ Template@421:
+ Id: 421
+ Images: sh44.des
+ Size: 1,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Clear
+ 2: Beach
+ Template@422:
+ Id: 422
+ Images: sh45.des
+ Size: 1,2
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ Template@435:
+ Id: 435
+ Images: sh58.des
+ Size: 2,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 2: Beach
+ 3: Water
+ 4: Clear
+ 5: Beach
+ Template@436:
+ Id: 436
+ Images: sh59.des
+ Size: 2,3
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 1: Beach
+ 2: Beach
+ 3: River
+ 4: River
+ 5: River
+ Template@442:
+ Id: 442
+ Images: sh65.des
+ Size: 2,3
+ Categories: Beach
+ Tiles:
+ 0: Rough
+ 1: River
+ 2: River
+ 3: River
+ 4: Rock
+ 5: River
+ Template@600:
+ Id: 600
+ Images: f01.des
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Rough
+ 1: Road
+ 2: Road
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ Template@601:
+ Id: 601
+ Images: f02.des
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ Template@602:
+ Id: 602
+ Images: f03.des
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Clear
+ 7: Road
+ 8: Clear
+ Template@603:
+ Id: 603
+ Images: f04.des
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Clear
+ 1: Beach
+ 2: Beach
+ 3: Road
+ 4: Beach
+ 5: Beach
+ 6: Clear
+ 7: Beach
+ 8: Beach
+ Template@604:
+ Id: 604
+ Images: f05.des
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ Template@605:
+ Id: 605
+ Images: f06.des
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Clear
+ 3: Beach
+ 4: Beach
+ 5: Road
+ 6: Beach
+ 7: Beach
+ 8: Clear
+ Template@620:
+ Id: 620
+ Images: bridge1.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 2: Bridge
+ 3: Rock
+ 4: Bridge
+ 5: Bridge
+ 6: Rock
+ 7: Rock
+ Template@621:
+ Id: 621
+ Images: bridge1h.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 2: Bridge
+ 3: Rock
+ 4: Bridge
+ 5: Bridge
+ 6: Rock
+ 7: Rock
+ Template@622:
+ Id: 622
+ Images: bridge1d.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 7: Rock
+ Template@623:
+ Id: 623
+ Images: bridge1x.des
+ Size: 6,4
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Road
+ 4: Road
+ 6: River
+ 11: Rock
+ 12: Rock
+ 17: Rock
+ 18: Road
+ 19: Road
+ 20: Rock
+ 21: Rock
+ 22: River
+ 23: River
+ Template@624:
+ Id: 624
+ Images: bridge2.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 2: Bridge
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ 6: Bridge
+ 7: Bridge
+ Template@625:
+ Id: 625
+ Images: bridge2h.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 2: Bridge
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ 6: Bridge
+ 7: Bridge
+ Template@626:
+ Id: 626
+ Images: bridge2d.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 7: Rock
+ Template@627:
+ Id: 627
+ Images: bridge2x.des
+ Size: 6,4
+ Categories: Bridge
+ Tiles:
+ 1: Road
+ 2: Road
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 11: River
+ 12: Rock
+ 17: Rock
+ 18: River
+ 19: River
+ 20: Rock
+ 21: Rock
+ 22: Road
+ 23: Road
+ Template@235:
+ Id: 235
+ Images: br1a.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 2: Bridge
+ 3: Rock
+ 5: Bridge
+ 6: Rock
+ 7: River
+ Template@236:
+ Id: 236
+ Images: br1b.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 2: Bridge
+ 3: Rock
+ 5: Bridge
+ 6: Rock
+ 7: River
+ Template@237:
+ Id: 237
+ Images: br1c.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 5: River
+ 6: Rock
+ 7: River
+ Template@238:
+ Id: 238
+ Images: br2a.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 4: Bridge
+ 5: Bridge
+ 6: Rock
+ 7: Rock
+ Template@239:
+ Id: 239
+ Images: br2b.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 4: Bridge
+ 5: Bridge
+ 6: Rock
+ 7: Rock
+ Template@240:
+ Id: 240
+ Images: br2c.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: River
+ 1: River
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 7: River
+ Template@241:
+ Id: 241
+ Images: br3a.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 5: Bridge
+ 6: Rock
+ 7: Rock
+ Template@242:
+ Id: 242
+ Images: br3b.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 5: Bridge
+ 6: Rock
+ 7: Rock
+ Template@243:
+ Id: 243
+ Images: br3c.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 5: Rock
+ 6: Rock
+ 7: Rock
+ Template@244:
+ Id: 244
+ Images: br3d.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: River
+ 1: Rock
+ 5: River
+ 6: River
+ 7: River
+ Template@245:
+ Id: 245
+ Images: br3e.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Water
+ 1: Water
+ 5: Rock
+ 6: Water
+ 7: Water
+ Template@246:
+ Id: 246
+ Images: br3f.des
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Water
+ 1: Water
+ 5: Water
+ 6: Water
+ 7: Water
+ Template@380:
+ Id: 380
+ Images: br1x.des
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Road
+ 3: Road
+ 9: Rock
+ 14: Rock
+ Template@381:
+ Id: 381
+ Images: br2x.des
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 0: Beach
+ 5: Rock
+ 10: Road
+ 11: Road
+ 12: Rock
+ 13: Rock
+ 14: Rock
+ Template@382:
+ Id: 382
+ Images: cliffsl1.des
+ Size: 1,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@383:
+ Id: 383
+ Images: cliffsl2.des
+ Size: 1,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@384:
+ Id: 384
+ Images: cliffsl3.des
+ Size: 2,1
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@385:
+ Id: 385
+ Images: cliffsl4.des
+ Size: 2,1
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@386:
+ Id: 386
+ Images: cliffsw1.des
+ Size: 1,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@387:
+ Id: 387
+ Images: cliffsw2.des
+ Size: 1,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@388:
+ Id: 388
+ Images: cliffsw3.des
+ Size: 2,1
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@389:
+ Id: 389
+ Images: cliffsw4.des
+ Size: 2,1
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
diff --git a/mods/ura/tilesets/interior.yaml b/mods/ura/tilesets/interior.yaml
new file mode 100644
index 0000000..49d3df5
--- /dev/null
+++ b/mods/ura/tilesets/interior.yaml
@@ -0,0 +1,1394 @@
+General:
+ Name: Interior
+ Id: INTERIOR
+ Palette: interior.pal
+ EditorTemplateOrder: Floor, Wall
+ HeightDebugColors: 880000
+
+Terrain:
+ TerrainType@Clear:
+ Type: Clear
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 000000
+ TerrainType@ClearNoSmudges:
+ Type: ClearNoSmudges
+ TargetTypes: Ground
+ Color: 000000
+ TerrainType@Gems:
+ Type: Gems
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 8470FF
+ RestrictPlayerColor: true
+ TerrainType@Ore:
+ Type: Ore
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 948060
+ RestrictPlayerColor: true
+ TerrainType@Tree:
+ Type: Tree
+ TargetTypes: Ground
+ Color: 1C2024
+ TerrainType@Wall:
+ Type: Wall
+ TargetTypes: Ground
+ Color: D0C0A0
+ RestrictPlayerColor: true
+
+Templates:
+ Template@255:
+ Id: 255
+ Images: clear1.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: ClearNoSmudges
+ 1: ClearNoSmudges
+ 2: ClearNoSmudges
+ 3: ClearNoSmudges
+ 4: ClearNoSmudges
+ 5: ClearNoSmudges
+ 6: ClearNoSmudges
+ 7: ClearNoSmudges
+ 8: ClearNoSmudges
+ 9: ClearNoSmudges
+ 10: ClearNoSmudges
+ 11: ClearNoSmudges
+ 12: ClearNoSmudges
+ 13: ClearNoSmudges
+ 14: ClearNoSmudges
+ 15: ClearNoSmudges
+ Template@65535:
+ Id: 65535
+ Images: clear1.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: ClearNoSmudges
+ 1: ClearNoSmudges
+ 2: ClearNoSmudges
+ 3: ClearNoSmudges
+ 4: ClearNoSmudges
+ 5: ClearNoSmudges
+ 6: ClearNoSmudges
+ 7: ClearNoSmudges
+ 8: ClearNoSmudges
+ 9: ClearNoSmudges
+ 10: ClearNoSmudges
+ 11: ClearNoSmudges
+ 12: ClearNoSmudges
+ 13: ClearNoSmudges
+ 14: ClearNoSmudges
+ 15: ClearNoSmudges
+ Template@329:
+ Id: 329
+ Images: wall0001.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@330:
+ Id: 330
+ Images: wall0002.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@331:
+ Id: 331
+ Images: wall0003.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@332:
+ Id: 332
+ Images: wall0004.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@333:
+ Id: 333
+ Images: wall0005.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@334:
+ Id: 334
+ Images: wall0006.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@335:
+ Id: 335
+ Images: wall0007.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@336:
+ Id: 336
+ Images: wall0008.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@337:
+ Id: 337
+ Images: wall0009.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@338:
+ Id: 338
+ Images: wall0010.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@339:
+ Id: 339
+ Images: wall0011.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@340:
+ Id: 340
+ Images: wall0012.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@341:
+ Id: 341
+ Images: wall0013.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@342:
+ Id: 342
+ Images: wall0014.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@343:
+ Id: 343
+ Images: wall0015.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@344:
+ Id: 344
+ Images: wall0016.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@345:
+ Id: 345
+ Images: wall0017.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@346:
+ Id: 346
+ Images: wall0018.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@347:
+ Id: 347
+ Images: wall0019.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@348:
+ Id: 348
+ Images: wall0020.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@349:
+ Id: 349
+ Images: wall0021.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@350:
+ Id: 350
+ Images: wall0022.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@351:
+ Id: 351
+ Images: wall0023.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 2: Wall
+ Template@352:
+ Id: 352
+ Images: wall0024.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 2: Wall
+ Template@353:
+ Id: 353
+ Images: wall0025.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 2: Wall
+ Template@354:
+ Id: 354
+ Images: wall0026.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 2: Wall
+ Template@355:
+ Id: 355
+ Images: wall0027.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 3: Wall
+ Template@356:
+ Id: 356
+ Images: wall0028.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 3: Wall
+ Template@357:
+ Id: 357
+ Images: wall0029.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 3: Wall
+ Template@358:
+ Id: 358
+ Images: wall0030.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 3: Wall
+ Template@359:
+ Id: 359
+ Images: wall0031.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 2: Wall
+ 3: Wall
+ Template@360:
+ Id: 360
+ Images: wall0032.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 2: Wall
+ 3: Wall
+ Template@361:
+ Id: 361
+ Images: wall0033.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 2: Wall
+ 3: Wall
+ Template@362:
+ Id: 362
+ Images: wall0034.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 2: Wall
+ 3: Wall
+ Template@363:
+ Id: 363
+ Images: wall0035.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 1: Wall
+ 2: Wall
+ 3: Wall
+ Template@364:
+ Id: 364
+ Images: wall0036.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 1: Wall
+ 2: Wall
+ 3: Wall
+ Template@365:
+ Id: 365
+ Images: wall0037.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 1: Wall
+ 2: Wall
+ 3: Wall
+ Template@366:
+ Id: 366
+ Images: wall0038.int
+ Size: 2,2
+ Categories: Wall
+ Tiles:
+ 1: Wall
+ 2: Wall
+ 3: Wall
+ Template@367:
+ Id: 367
+ Images: wall0039.int
+ Size: 2,3
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 2: Wall
+ 3: Wall
+ 4: Wall
+ Template@368:
+ Id: 368
+ Images: wall0040.int
+ Size: 2,3
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 2: Wall
+ 3: Wall
+ 4: Wall
+ Template@369:
+ Id: 369
+ Images: wall0041.int
+ Size: 2,3
+ Categories: Wall
+ Tiles:
+ 1: Wall
+ 2: Wall
+ 3: Wall
+ 5: Wall
+ Template@370:
+ Id: 370
+ Images: wall0042.int
+ Size: 2,3
+ Categories: Wall
+ Tiles:
+ 1: Wall
+ 2: Wall
+ 3: Wall
+ 5: Wall
+ Template@371:
+ Id: 371
+ Images: wall0043.int
+ Size: 3,2
+ Categories: Wall
+ Tiles:
+ 1: Wall
+ 3: Wall
+ 4: Wall
+ 5: Wall
+ Template@372:
+ Id: 372
+ Images: wall0044.int
+ Size: 3,2
+ Categories: Wall
+ Tiles:
+ 1: Wall
+ 3: Wall
+ 4: Wall
+ 5: Wall
+ Template@373:
+ Id: 373
+ Images: wall0045.int
+ Size: 3,2
+ Categories: Wall
+ Tiles:
+ 1: Wall
+ 3: Wall
+ 4: Wall
+ 5: Wall
+ Template@374:
+ Id: 374
+ Images: wall0046.int
+ Size: 3,2
+ Categories: Wall
+ Tiles:
+ 1: Wall
+ 3: Wall
+ 4: Wall
+ 5: Wall
+ Template@375:
+ Id: 375
+ Images: wall0047.int
+ Size: 3,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 2: Wall
+ 4: Wall
+ Template@376:
+ Id: 376
+ Images: wall0048.int
+ Size: 3,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 2: Wall
+ 4: Wall
+ Template@377:
+ Id: 377
+ Images: wall0049.int
+ Size: 3,3
+ Categories: Wall
+ Tiles:
+ 1: Wall
+ 3: Wall
+ 4: Wall
+ 5: Wall
+ 7: Wall
+ Template@268:
+ Id: 268
+ Images: flor0001.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ Template@269:
+ Id: 269
+ Images: flor0002.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ Template@270:
+ Id: 270
+ Images: flor0003.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ Template@271:
+ Id: 271
+ Images: flor0004.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ Template@272:
+ Id: 272
+ Images: flor0005.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ Template@273:
+ Id: 273
+ Images: flor0006.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ Template@274:
+ Id: 274
+ Images: flor0007.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ Template@384:
+ Id: 384
+ Images: xtra0001.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@385:
+ Id: 385
+ Images: xtra0002.int
+ Size: 2,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Clear
+ Template@386:
+ Id: 386
+ Images: xtra0003.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@387:
+ Id: 387
+ Images: xtra0004.int
+ Size: 1,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Clear
+ Template@388:
+ Id: 388
+ Images: xtra0005.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@389:
+ Id: 389
+ Images: xtra0006.int
+ Size: 2,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Clear
+ Template@390:
+ Id: 390
+ Images: xtra0007.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@391:
+ Id: 391
+ Images: xtra0008.int
+ Size: 1,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Clear
+ Template@392:
+ Id: 392
+ Images: xtra0009.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@393:
+ Id: 393
+ Images: xtra0010.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@394:
+ Id: 394
+ Images: xtra0011.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@395:
+ Id: 395
+ Images: xtra0012.int
+ Size: 1,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Clear
+ Template@396:
+ Id: 396
+ Images: xtra0013.int
+ Size: 1,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Clear
+ Template@397:
+ Id: 397
+ Images: xtra0014.int
+ Size: 3,2
+ Categories: Wall
+ Tiles:
+ 0: Clear
+ 1: Wall
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ Template@398:
+ Id: 398
+ Images: xtra0015.int
+ Size: 3,2
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 2: Wall
+ 3: Wall
+ 4: Wall
+ 5: Wall
+ Template@399:
+ Id: 399
+ Images: xtra0016.int
+ Size: 2,4
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 2: Wall
+ 3: Wall
+ 4: Wall
+ 5: Wall
+ 6: Wall
+ 7: Wall
+ Template@318:
+ Id: 318
+ Images: strp0001.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ Template@319:
+ Id: 319
+ Images: strp0002.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ Template@320:
+ Id: 320
+ Images: strp0003.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@321:
+ Id: 321
+ Images: strp0004.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@322:
+ Id: 322
+ Images: strp0005.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@323:
+ Id: 323
+ Images: strp0006.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@324:
+ Id: 324
+ Images: strp0007.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@325:
+ Id: 325
+ Images: strp0008.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@326:
+ Id: 326
+ Images: strp0009.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@327:
+ Id: 327
+ Images: strp0010.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@328:
+ Id: 328
+ Images: strp0011.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@253:
+ Id: 253
+ Images: arro0001.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ Template@254:
+ Id: 254
+ Images: arro0002.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ Template@256:
+ Id: 256
+ Images: arro0004.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ Template@257:
+ Id: 257
+ Images: arro0005.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ Template@258:
+ Id: 258
+ Images: arro0006.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ Template@259:
+ Id: 259
+ Images: arro0007.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@260:
+ Id: 260
+ Images: arro0008.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@261:
+ Id: 261
+ Images: arro0009.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@262:
+ Id: 262
+ Images: arro0010.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@263:
+ Id: 263
+ Images: arro0011.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@264:
+ Id: 264
+ Images: arro0012.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@265:
+ Id: 265
+ Images: arro0013.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@266:
+ Id: 266
+ Images: arro0014.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@267:
+ Id: 267
+ Images: arro0015.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@275:
+ Id: 275
+ Images: gflr0001.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ 12: Clear
+ Template@276:
+ Id: 276
+ Images: gflr0002.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ 12: Clear
+ Template@277:
+ Id: 277
+ Images: gflr0003.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ 12: Clear
+ Template@278:
+ Id: 278
+ Images: gflr0004.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ 12: Clear
+ Template@279:
+ Id: 279
+ Images: gflr0005.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ 12: Clear
+ Template@280:
+ Id: 280
+ Images: gstr0001.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ Template@281:
+ Id: 281
+ Images: gstr0002.int
+ Size: 1,1
+ PickAny: True
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ Template@282:
+ Id: 282
+ Images: gstr0003.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@283:
+ Id: 283
+ Images: gstr0004.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@284:
+ Id: 284
+ Images: gstr0005.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@285:
+ Id: 285
+ Images: gstr0006.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@286:
+ Id: 286
+ Images: gstr0007.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@287:
+ Id: 287
+ Images: gstr0008.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@288:
+ Id: 288
+ Images: gstr0009.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@289:
+ Id: 289
+ Images: gstr0010.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@290:
+ Id: 290
+ Images: gstr0011.int
+ Size: 1,1
+ Categories: Floor
+ Tiles:
+ 0: Clear
+ Template@291:
+ Id: 291
+ Images: lwal0001.int
+ Size: 1,1
+ PickAny: True
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 2: Wall
+ 3: Wall
+ Template@292:
+ Id: 292
+ Images: lwal0002.int
+ Size: 1,1
+ PickAny: True
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 2: Wall
+ 3: Wall
+ Template@293:
+ Id: 293
+ Images: lwal0003.int
+ Size: 1,1
+ PickAny: True
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 2: Wall
+ 3: Wall
+ Template@294:
+ Id: 294
+ Images: lwal0004.int
+ Size: 1,1
+ PickAny: True
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 2: Wall
+ 3: Wall
+ Template@295:
+ Id: 295
+ Images: lwal0005.int
+ Size: 1,1
+ PickAny: True
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ 1: Wall
+ 2: Wall
+ 3: Wall
+ 4: Wall
+ 5: Wall
+ Template@296:
+ Id: 296
+ Images: lwal0006.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@297:
+ Id: 297
+ Images: lwal0007.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@298:
+ Id: 298
+ Images: lwal0008.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@299:
+ Id: 299
+ Images: lwal0009.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@300:
+ Id: 300
+ Images: lwal0010.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@301:
+ Id: 301
+ Images: lwal0011.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@302:
+ Id: 302
+ Images: lwal0012.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@303:
+ Id: 303
+ Images: lwal0013.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@304:
+ Id: 304
+ Images: lwal0014.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@305:
+ Id: 305
+ Images: lwal0015.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@306:
+ Id: 306
+ Images: lwal0016.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@307:
+ Id: 307
+ Images: lwal0017.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@308:
+ Id: 308
+ Images: lwal0018.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@309:
+ Id: 309
+ Images: lwal0019.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@310:
+ Id: 310
+ Images: lwal0020.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@311:
+ Id: 311
+ Images: lwal0021.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@312:
+ Id: 312
+ Images: lwal0022.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@313:
+ Id: 313
+ Images: lwal0023.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@314:
+ Id: 314
+ Images: lwal0024.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@315:
+ Id: 315
+ Images: lwal0025.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@316:
+ Id: 316
+ Images: lwal0026.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
+ Template@317:
+ Id: 317
+ Images: lwal0027.int
+ Size: 1,1
+ Categories: Wall
+ Tiles:
+ 0: Wall
diff --git a/mods/ura/tilesets/snow.yaml b/mods/ura/tilesets/snow.yaml
new file mode 100644
index 0000000..d5a25cb
--- /dev/null
+++ b/mods/ura/tilesets/snow.yaml
@@ -0,0 +1,3226 @@
+General:
+ Name: Snow
+ Id: SNOW
+ Palette: snow.pal
+ EditorTemplateOrder: Terrain, Debris, Road, Cliffs, Water Cliffs, Beach, River, Bridge
+ HeightDebugColors: 880000
+
+Terrain:
+ TerrainType@Beach:
+ Type: Beach
+ TargetTypes: Ground
+ Color: B09C78
+ TerrainType@Bridge:
+ Type: Bridge
+ TargetTypes: Ground, Bridge
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 606060
+ TerrainType@Clear:
+ Type: Clear
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: C4C4C4
+ RestrictPlayerColor: true
+ TerrainType@Gems:
+ Type: Gems
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 8470FF
+ RestrictPlayerColor: true
+ TerrainType@Ore:
+ Type: Ore
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 948060
+ RestrictPlayerColor: true
+ TerrainType@River:
+ Type: River
+ TargetTypes: Ground
+ Color: 5C8CB4
+ TerrainType@Road:
+ Type: Road
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 587474
+ TerrainType@Rock:
+ Type: Rock
+ TargetTypes: Ground
+ Color: 44443C
+ TerrainType@Rough:
+ Type: Rough
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 44443C
+ TerrainType@Tree:
+ Type: Tree
+ TargetTypes: Ground
+ Color: 1C2024
+ TerrainType@Wall:
+ Type: Wall
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: D0C0A0
+ TerrainType@Water:
+ Type: Water
+ TargetTypes: Water
+ IsWater: True
+ Color: 5C74A4
+ RestrictPlayerColor: true
+
+Templates:
+ Template@255:
+ Id: 255
+ Images: clear1.sno
+ Size: 1,1
+ PickAny: True
+ Categories: Terrain
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ 12: Clear
+ 13: Clear
+ 14: Clear
+ 15: Clear
+ 16: Clear
+ 17: Clear
+ 18: Clear
+ 19: Clear
+ Template@65535:
+ Id: 65535
+ Images: clear1.sno
+ Size: 1,1
+ PickAny: True
+ Categories: Terrain
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ 12: Clear
+ 13: Clear
+ 14: Clear
+ 15: Clear
+ 16: Clear
+ 17: Clear
+ 18: Clear
+ 19: Clear
+ Template@1:
+ Id: 1
+ Images: w1.sno
+ Size: 1,1
+ Categories: Terrain
+ Tiles:
+ 0: Water
+ Template@2:
+ Id: 2
+ Images: w2.sno
+ Size: 2,2
+ Categories: Terrain
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Water
+ 3: Water
+ Template@3:
+ Id: 3
+ Images: sh01.sno
+ Size: 4,5
+ Categories: Beach
+ Tiles:
+ 3: Rock
+ 5: Clear
+ 6: Clear
+ 7: Beach
+ 8: Beach
+ 9: Water
+ 10: Water
+ 11: River
+ 12: Water
+ 13: Water
+ 16: Water
+ Template@4:
+ Id: 4
+ Images: sh02.sno
+ Size: 5,5
+ Categories: Beach
+ Tiles:
+ 4: Clear
+ 8: Beach
+ 9: Beach
+ 10: Beach
+ 11: Clear
+ 12: Beach
+ 13: Beach
+ 14: Beach
+ 15: Beach
+ 16: Rough
+ 17: Rough
+ 18: River
+ 20: Water
+ 21: Water
+ 22: Rock
+ Template@5:
+ Id: 5
+ Images: sh03.sno
+ Size: 3,5
+ Categories: Beach
+ Tiles:
+ 2: Clear
+ 4: Beach
+ 5: Beach
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ 9: Water
+ 10: Water
+ 12: Water
+ Template@6:
+ Id: 6
+ Images: sh04.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Water
+ 7: Water
+ 8: Water
+ Template@7:
+ Id: 7
+ Images: sh05.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Rock
+ 2: Beach
+ 3: Beach
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 7: River
+ 8: River
+ Template@8:
+ Id: 8
+ Images: sh06.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Water
+ 7: Water
+ 8: Water
+ Template@9:
+ Id: 9
+ Images: sh07.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Water
+ 7: Water
+ 8: Water
+ Template@10:
+ Id: 10
+ Images: sh08.sno
+ Size: 1,2
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ Template@11:
+ Id: 11
+ Images: sh09.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 1: River
+ 2: Rock
+ 3: Clear
+ 4: River
+ 5: Beach
+ 6: Water
+ 7: Water
+ 8: Water
+ Template@12:
+ Id: 12
+ Images: sh10.sno
+ Size: 5,6
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 5: Beach
+ 6: Clear
+ 10: Water
+ 11: Beach
+ 12: Beach
+ 13: Water
+ 17: Water
+ 18: Beach
+ 19: Beach
+ 22: Rock
+ 23: Rock
+ 24: Rock
+ 28: Water
+ 29: Water
+ Template@13:
+ Id: 13
+ Images: sh11.sno
+ Size: 4,5
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Clear
+ 4: Beach
+ 5: Water
+ 6: Beach
+ 8: Water
+ 9: Water
+ 10: Beach
+ 11: Beach
+ 14: Beach
+ 15: Beach
+ 18: Water
+ 19: Beach
+ Template@14:
+ Id: 14
+ Images: sh12.sno
+ Size: 3,5
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Clear
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Water
+ 7: Beach
+ 8: Beach
+ 10: Water
+ 11: Beach
+ 14: Water
+ Template@15:
+ Id: 15
+ Images: sh13.sno
+ Size: 6,5
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Rock
+ 2: Beach
+ 7: Beach
+ 8: Beach
+ 9: Beach
+ 13: Water
+ 14: Beach
+ 15: Beach
+ 16: Clear
+ 19: Water
+ 20: Water
+ 21: Rough
+ 22: Beach
+ 23: Clear
+ 27: Beach
+ 28: Beach
+ 29: Beach
+ Template@16:
+ Id: 16
+ Images: sh14.sno
+ Size: 4,4
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Clear
+ 4: River
+ 5: Beach
+ 6: Beach
+ 8: Rough
+ 9: Beach
+ 10: Beach
+ 13: Water
+ 14: Beach
+ 15: Beach
+ Template@17:
+ Id: 17
+ Images: sh15.sno
+ Size: 5,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Beach
+ 3: Clear
+ 6: Water
+ 7: Beach
+ 8: Beach
+ 12: Water
+ 13: Beach
+ 14: Beach
+ Template@18:
+ Id: 18
+ Images: sh16.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Beach
+ 2: Clear
+ 3: Water
+ 4: Beach
+ 5: Clear
+ 6: Water
+ 7: Beach
+ 8: Clear
+ Template@19:
+ Id: 19
+ Images: sh17.sno
+ Size: 2,1
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Clear
+ Template@20:
+ Id: 20
+ Images: sh18.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Rough
+ 3: Water
+ 4: River
+ 5: River
+ 6: Water
+ 7: Beach
+ 8: Rough
+ Template@21:
+ Id: 21
+ Images: sh19.sno
+ Size: 4,5
+ Categories: Beach
+ Tiles:
+ 1: Water
+ 2: Beach
+ 3: Clear
+ 5: Beach
+ 6: Beach
+ 7: Clear
+ 8: Water
+ 9: Beach
+ 10: Beach
+ 12: Water
+ 13: Beach
+ 14: Beach
+ 16: Water
+ 17: Beach
+ 18: Clear
+ Template@22:
+ Id: 22
+ Images: sh20.sno
+ Size: 5,4
+ Categories: Beach
+ Tiles:
+ 2: Water
+ 3: Beach
+ 4: Beach
+ 5: Water
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ 10: Water
+ 11: Beach
+ 12: Beach
+ 15: Water
+ 16: Beach
+ 17: Beach
+ Template@23:
+ Id: 23
+ Images: sh21.sno
+ Size: 5,3
+ Categories: Beach
+ Tiles:
+ 1: Water
+ 2: Beach
+ 3: Beach
+ 4: Clear
+ 5: Water
+ 6: Beach
+ 7: Beach
+ 8: Clear
+ 10: Water
+ 11: Beach
+ 12: Beach
+ Template@24:
+ Id: 24
+ Images: sh22.sno
+ Size: 6,5
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 6: Water
+ 7: Water
+ 12: Beach
+ 13: Beach
+ 14: Water
+ 15: Water
+ 16: Water
+ 17: Water
+ 19: Clear
+ 20: Beach
+ 21: Beach
+ 22: Water
+ 23: Beach
+ 27: Beach
+ 28: Beach
+ 29: Beach
+ Template@25:
+ Id: 25
+ Images: sh23.sno
+ Size: 5,5
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Water
+ 2: Water
+ 5: Beach
+ 6: Beach
+ 7: Water
+ 8: Water
+ 9: Water
+ 11: Clear
+ 12: Beach
+ 13: River
+ 14: Water
+ 17: Clear
+ 18: Beach
+ 19: Beach
+ 22: Beach
+ 23: Beach
+ 24: Beach
+ Template@26:
+ Id: 26
+ Images: sh24.sno
+ Size: 3,4
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Water
+ 3: Beach
+ 4: Water
+ 5: Water
+ 7: Clear
+ 8: Beach
+ 11: Clear
+ Template@27:
+ Id: 27
+ Images: sh25.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Water
+ 3: Rock
+ 4: Rock
+ 5: Beach
+ 6: Rock
+ 7: Rock
+ 8: Beach
+ Template@28:
+ Id: 28
+ Images: sh26.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Water
+ 3: Beach
+ 4: Beach
+ 5: Rough
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ Template@29:
+ Id: 29
+ Images: sh27.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Beach
+ 7: Beach
+ 8: Rough
+ Template@30:
+ Id: 30
+ Images: sh28.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 1: Rock
+ 2: Rock
+ 3: Beach
+ 4: Rock
+ 5: Rock
+ 6: Beach
+ 7: Rough
+ 8: Rough
+ Template@31:
+ Id: 31
+ Images: sh29.sno
+ Size: 1,2
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Clear
+ Template@32:
+ Id: 32
+ Images: sh30.sno
+ Size: 3,2
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: River
+ 2: River
+ 3: Clear
+ 4: River
+ 5: Rough
+ Template@33:
+ Id: 33
+ Images: sh31.sno
+ Size: 6,5
+ Categories: Beach
+ Tiles:
+ 3: Water
+ 4: Water
+ 5: Beach
+ 8: Water
+ 9: Water
+ 10: Beach
+ 11: Beach
+ 12: Water
+ 13: Water
+ 14: Water
+ 15: Beach
+ 16: Clear
+ 18: Beach
+ 19: Beach
+ 20: Water
+ 21: Beach
+ 22: Clear
+ 24: Clear
+ 25: Clear
+ 26: Beach
+ 27: Beach
+ 28: Clear
+ Template@34:
+ Id: 34
+ Images: sh32.sno
+ Size: 4,4
+ Categories: Beach
+ Tiles:
+ 2: Water
+ 3: Water
+ 4: Water
+ 5: Water
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ 9: Beach
+ 10: Beach
+ 12: Clear
+ 13: Clear
+ Template@35:
+ Id: 35
+ Images: sh33.sno
+ Size: 3,4
+ Categories: Beach
+ Tiles:
+ 1: Water
+ 2: Beach
+ 3: Water
+ 4: Beach
+ 5: Clear
+ 6: Beach
+ 7: Rough
+ 9: Beach
+ 10: Beach
+ Template@36:
+ Id: 36
+ Images: sh34.sno
+ Size: 6,5
+ Categories: Beach
+ Tiles:
+ 3: Clear
+ 4: Beach
+ 5: Water
+ 7: Beach
+ 8: Beach
+ 9: Beach
+ 10: Beach
+ 13: Beach
+ 14: Beach
+ 15: Water
+ 19: Beach
+ 20: Beach
+ 21: Water
+ 24: Beach
+ 25: Beach
+ 26: Water
+ Template@37:
+ Id: 37
+ Images: sh35.sno
+ Size: 4,4
+ Categories: Beach
+ Tiles:
+ 2: Beach
+ 3: Water
+ 5: Clear
+ 6: Beach
+ 7: Rough
+ 9: Beach
+ 10: Beach
+ 11: Water
+ 12: Clear
+ 13: Beach
+ 14: Water
+ Template@38:
+ Id: 38
+ Images: sh36.sno
+ Size: 4,3
+ Categories: Beach
+ Tiles:
+ 1: Beach
+ 2: Beach
+ 3: Water
+ 4: Beach
+ 5: Beach
+ 6: Water
+ 8: Beach
+ 9: Water
+ 10: Water
+ Template@39:
+ Id: 39
+ Images: sh37.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 1: Beach
+ 2: Water
+ 3: Clear
+ 4: Beach
+ 5: Water
+ 6: Rough
+ 7: Beach
+ 8: Water
+ Template@40:
+ Id: 40
+ Images: sh38.sno
+ Size: 2,1
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 1: Beach
+ Template@41:
+ Id: 41
+ Images: sh39.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Rock
+ 1: Beach
+ 2: Water
+ 3: River
+ 4: River
+ 5: Water
+ 6: Clear
+ 7: Beach
+ 8: Water
+ Template@42:
+ Id: 42
+ Images: sh40.sno
+ Size: 5,5
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 1: Beach
+ 2: Water
+ 6: Beach
+ 7: Water
+ 11: Beach
+ 12: Water
+ 13: Water
+ 16: Clear
+ 17: Beach
+ 18: Beach
+ 19: Water
+ 22: Beach
+ 23: Beach
+ 24: Water
+ Template@43:
+ Id: 43
+ Images: sh41.sno
+ Size: 4,4
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Water
+ 4: Beach
+ 5: Beach
+ 6: Water
+ 8: Beach
+ 9: Beach
+ 10: Water
+ 11: Water
+ 13: Clear
+ 14: Beach
+ 15: Water
+ Template@44:
+ Id: 44
+ Images: sh42.sno
+ Size: 4,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Water
+ 5: Beach
+ 6: Beach
+ 7: River
+ 9: Clear
+ 10: Beach
+ 11: Water
+ Template@45:
+ Id: 45
+ Images: sh43.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Beach
+ 7: Water
+ 8: Water
+ Template@46:
+ Id: 46
+ Images: sh44.sno
+ Size: 2,2
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Beach
+ 2: River
+ 3: Water
+ Template@47:
+ Id: 47
+ Images: sh45.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Beach
+ 2: Water
+ 3: Water
+ 4: Rough
+ 5: Beach
+ 6: Water
+ 7: River
+ 8: Beach
+ Template@48:
+ Id: 48
+ Images: sh46.sno
+ Size: 2,2
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: River
+ 2: River
+ 3: Beach
+ Template@49:
+ Id: 49
+ Images: sh47.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 3: Beach
+ 4: Water
+ 6: Beach
+ 7: Beach
+ 8: Water
+ Template@50:
+ Id: 50
+ Images: sh48.sno
+ Size: 2,2
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Clear
+ 3: Beach
+ Template@51:
+ Id: 51
+ Images: sh49.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Water
+ 2: Water
+ 3: Rock
+ 4: Rock
+ 5: River
+ 6: River
+ 7: Rock
+ 8: Rock
+ Template@52:
+ Id: 52
+ Images: sh50.sno
+ Size: 2,2
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Water
+ Template@53:
+ Id: 53
+ Images: sh51.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 1: Beach
+ 2: Beach
+ 4: Beach
+ 5: Beach
+ 7: Rough
+ 8: Clear
+ Template@54:
+ Id: 54
+ Images: sh52.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Beach
+ 5: Beach
+ 7: Beach
+ 8: Water
+ Template@55:
+ Id: 55
+ Images: sh53.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Clear
+ 3: Beach
+ 4: Beach
+ 5: Clear
+ 6: Water
+ 7: Beach
+ 8: Clear
+ Template@56:
+ Id: 56
+ Images: sh54.sno
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Beach
+ 2: Clear
+ 3: Beach
+ 4: Beach
+ 6: Clear
+ Template@57:
+ Id: 57
+ Images: sh55.sno
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@58:
+ Id: 58
+ Images: sh56.sno
+ Size: 2,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@135:
+ Id: 135
+ Images: s01.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@136:
+ Id: 136
+ Images: s02.sno
+ Size: 2,3
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@137:
+ Id: 137
+ Images: s03.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@138:
+ Id: 138
+ Images: s04.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@139:
+ Id: 139
+ Images: s05.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@140:
+ Id: 140
+ Images: s06.sno
+ Size: 2,3
+ Categories: Cliffs
+ Tiles:
+ 0: Rough
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ Template@141:
+ Id: 141
+ Images: s07.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@142:
+ Id: 142
+ Images: s08.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@143:
+ Id: 143
+ Images: s09.sno
+ Size: 3,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@144:
+ Id: 144
+ Images: s10.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@145:
+ Id: 145
+ Images: s11.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@146:
+ Id: 146
+ Images: s12.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@147:
+ Id: 147
+ Images: s13.sno
+ Size: 3,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rough
+ 3: Rock
+ 4: Rock
+ 5: Rough
+ Template@148:
+ Id: 148
+ Images: s14.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 2: Rock
+ Template@149:
+ Id: 149
+ Images: s15.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@150:
+ Id: 150
+ Images: s16.sno
+ Size: 2,3
+ Categories: Cliffs
+ Tiles:
+ 0: Rough
+ 2: Rock
+ 3: Rock
+ 5: Rock
+ Template@151:
+ Id: 151
+ Images: s17.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@152:
+ Id: 152
+ Images: s18.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@153:
+ Id: 153
+ Images: s19.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@154:
+ Id: 154
+ Images: s20.sno
+ Size: 2,3
+ Categories: Cliffs
+ Tiles:
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rough
+ Template@155:
+ Id: 155
+ Images: s21.sno
+ Size: 1,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@156:
+ Id: 156
+ Images: s22.sno
+ Size: 2,1
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@157:
+ Id: 157
+ Images: s23.sno
+ Size: 3,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rough
+ Template@158:
+ Id: 158
+ Images: s24.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@159:
+ Id: 159
+ Images: s25.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@160:
+ Id: 160
+ Images: s26.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@161:
+ Id: 161
+ Images: s27.sno
+ Size: 3,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rough
+ 3: Rough
+ 4: Rock
+ 5: Rock
+ Template@162:
+ Id: 162
+ Images: s28.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 3: Rock
+ Template@163:
+ Id: 163
+ Images: s29.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@164:
+ Id: 164
+ Images: s30.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@165:
+ Id: 165
+ Images: s31.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 2: Rock
+ 3: Rock
+ Template@166:
+ Id: 166
+ Images: s32.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rough
+ Template@167:
+ Id: 167
+ Images: s33.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@168:
+ Id: 168
+ Images: s34.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@169:
+ Id: 169
+ Images: s35.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@170:
+ Id: 170
+ Images: s36.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@171:
+ Id: 171
+ Images: s37.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@172:
+ Id: 172
+ Images: s38.sno
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@59:
+ Id: 59
+ Images: wc01.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@60:
+ Id: 60
+ Images: wc02.sno
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@61:
+ Id: 61
+ Images: wc03.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@62:
+ Id: 62
+ Images: wc04.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@63:
+ Id: 63
+ Images: wc05.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@64:
+ Id: 64
+ Images: wc06.sno
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rough
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ Template@65:
+ Id: 65
+ Images: wc07.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@66:
+ Id: 66
+ Images: wc08.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@67:
+ Id: 67
+ Images: wc09.sno
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: River
+ 4: Rock
+ 5: Rock
+ Template@68:
+ Id: 68
+ Images: wc10.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@69:
+ Id: 69
+ Images: wc11.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@70:
+ Id: 70
+ Images: wc12.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@71:
+ Id: 71
+ Images: wc13.sno
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rough
+ 3: Rock
+ 4: Rock
+ 5: Clear
+ Template@72:
+ Id: 72
+ Images: wc14.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ Template@73:
+ Id: 73
+ Images: wc15.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@74:
+ Id: 74
+ Images: wc16.sno
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Water
+ 2: Rock
+ 3: Rock
+ 5: Rock
+ Template@75:
+ Id: 75
+ Images: wc17.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@76:
+ Id: 76
+ Images: wc18.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@77:
+ Id: 77
+ Images: wc19.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@78:
+ Id: 78
+ Images: wc20.sno
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 1: River
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rough
+ Template@79:
+ Id: 79
+ Images: wc21.sno
+ Size: 1,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@80:
+ Id: 80
+ Images: wc22.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@81:
+ Id: 81
+ Images: wc23.sno
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: River
+ 3: Rock
+ 4: Rock
+ 5: Water
+ Template@82:
+ Id: 82
+ Images: wc24.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@83:
+ Id: 83
+ Images: wc25.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@84:
+ Id: 84
+ Images: wc26.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@85:
+ Id: 85
+ Images: wc27.sno
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Water
+ 3: Clear
+ 4: Rock
+ 5: Rock
+ Template@86:
+ Id: 86
+ Images: wc28.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 3: Rock
+ Template@87:
+ Id: 87
+ Images: wc29.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@88:
+ Id: 88
+ Images: wc30.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@89:
+ Id: 89
+ Images: wc31.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: Rock
+ 3: Rock
+ Template@90:
+ Id: 90
+ Images: wc32.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Water
+ Template@91:
+ Id: 91
+ Images: wc33.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@92:
+ Id: 92
+ Images: wc34.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@93:
+ Id: 93
+ Images: wc35.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@94:
+ Id: 94
+ Images: wc36.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@95:
+ Id: 95
+ Images: wc37.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@96:
+ Id: 96
+ Images: wc38.sno
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@173:
+ Id: 173
+ Images: d01.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Clear
+ 3: Clear
+ Template@174:
+ Id: 174
+ Images: d02.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Clear
+ 3: Clear
+ Template@175:
+ Id: 175
+ Images: d03.sno
+ Size: 1,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ Template@176:
+ Id: 176
+ Images: d04.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Road
+ 3: Clear
+ Template@177:
+ Id: 177
+ Images: d05.sno
+ Size: 3,4
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Clear
+ 3: Road
+ 4: Road
+ 6: Road
+ 7: Road
+ 9: Road
+ 10: Road
+ Template@178:
+ Id: 178
+ Images: d06.sno
+ Size: 2,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 2: Road
+ 3: Road
+ 4: Road
+ 5: Clear
+ Template@179:
+ Id: 179
+ Images: d07.sno
+ Size: 3,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Clear
+ 4: Road
+ 5: Clear
+ Template@180:
+ Id: 180
+ Images: d08.sno
+ Size: 3,2
+ Categories: Road
+ Tiles:
+ 1: Road
+ 3: Clear
+ 4: Road
+ 5: Clear
+ Template@181:
+ Id: 181
+ Images: d09.sno
+ Size: 4,3
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Road
+ 5: Road
+ 6: Road
+ 7: Road
+ 10: Clear
+ 11: Clear
+ Template@182:
+ Id: 182
+ Images: d10.sno
+ Size: 4,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Rock
+ 4: Road
+ 5: Road
+ 6: Road
+ 7: Road
+ Template@183:
+ Id: 183
+ Images: d11.sno
+ Size: 2,3
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Road
+ 3: Road
+ 4: Clear
+ Template@184:
+ Id: 184
+ Images: d12.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 2: Road
+ 3: Road
+ Template@185:
+ Id: 185
+ Images: d13.sno
+ Size: 4,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Clear
+ 4: Clear
+ 5: Road
+ 6: Road
+ 7: Rock
+ 10: Rock
+ 11: Road
+ Template@186:
+ Id: 186
+ Images: d14.sno
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Road
+ 3: Clear
+ 4: Rock
+ 5: Road
+ 6: Road
+ 7: Road
+ 8: Road
+ Template@187:
+ Id: 187
+ Images: d15.sno
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Road
+ 3: Road
+ 4: Road
+ 5: Clear
+ 6: Road
+ 7: Clear
+ Template@188:
+ Id: 188
+ Images: d16.sno
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Road
+ 3: Road
+ 4: Road
+ 5: Road
+ 6: Road
+ 7: Road
+ 8: Rock
+ Template@189:
+ Id: 189
+ Images: d17.sno
+ Size: 3,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Road
+ 3: Clear
+ 4: Road
+ 5: Clear
+ Template@190:
+ Id: 190
+ Images: d18.sno
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Clear
+ 3: Road
+ 4: Road
+ 5: Clear
+ 6: Clear
+ 7: Road
+ 8: Rock
+ Template@191:
+ Id: 191
+ Images: d19.sno
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Clear
+ 3: Road
+ 4: Road
+ 5: Road
+ 6: Clear
+ 7: Road
+ 8: Clear
+ Template@192:
+ Id: 192
+ Images: d20.sno
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Clear
+ 3: Road
+ 4: Road
+ 5: Clear
+ 6: Clear
+ 7: Road
+ 8: Road
+ Template@193:
+ Id: 193
+ Images: d21.sno
+ Size: 3,2
+ Categories: Road
+ Tiles:
+ 0: Rock
+ 1: Road
+ 2: Road
+ 3: Clear
+ 4: Road
+ 5: Rough
+ Template@194:
+ Id: 194
+ Images: d22.sno
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 3: Road
+ 4: Road
+ 5: Clear
+ 6: Clear
+ 7: Road
+ 8: Clear
+ Template@195:
+ Id: 195
+ Images: d23.sno
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Clear
+ 3: Clear
+ 4: Road
+ 5: Clear
+ 6: Road
+ 7: Road
+ Template@196:
+ Id: 196
+ Images: d24.sno
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 3: Road
+ 4: Road
+ 5: Road
+ 7: Road
+ 8: Road
+ Template@197:
+ Id: 197
+ Images: d25.sno
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 3: Road
+ 4: Road
+ 5: Road
+ 7: Road
+ 8: Road
+ Template@198:
+ Id: 198
+ Images: d26.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Road
+ Template@199:
+ Id: 199
+ Images: d27.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Road
+ Template@200:
+ Id: 200
+ Images: d28.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Rough
+ Template@201:
+ Id: 201
+ Images: d29.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Road
+ Template@202:
+ Id: 202
+ Images: d30.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Road
+ Template@203:
+ Id: 203
+ Images: d31.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Road
+ 3: Road
+ Template@204:
+ Id: 204
+ Images: d32.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Road
+ 3: Clear
+ Template@205:
+ Id: 205
+ Images: d33.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Road
+ 3: Road
+ Template@206:
+ Id: 206
+ Images: d34.sno
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Road
+ 3: Road
+ 4: Road
+ 5: Road
+ 6: Road
+ 7: Road
+ Template@207:
+ Id: 207
+ Images: d35.sno
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Road
+ 3: Road
+ 4: Road
+ 5: Road
+ 6: Road
+ 7: Road
+ Template@208:
+ Id: 208
+ Images: d36.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 3: Road
+ Template@209:
+ Id: 209
+ Images: d37.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 3: Road
+ Template@210:
+ Id: 210
+ Images: d38.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 3: Road
+ Template@211:
+ Id: 211
+ Images: d39.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 3: Road
+ Template@212:
+ Id: 212
+ Images: d40.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 3: Road
+ Template@213:
+ Id: 213
+ Images: d41.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Rock
+ 2: Road
+ 3: Road
+ Template@214:
+ Id: 214
+ Images: d42.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 2: Road
+ 3: Road
+ Template@215:
+ Id: 215
+ Images: d43.sno
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 2: Road
+ 3: Road
+ Template@227:
+ Id: 227
+ Images: d44.sno
+ Size: 1,1
+ Categories: Road
+ Tiles:
+ 0: Road
+ Template@228:
+ Id: 228
+ Images: d45.sno
+ Size: 1,1
+ Categories: Road
+ Tiles:
+ 0: Road
+ Template@231:
+ Id: 231
+ Images: rc01.sno
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@232:
+ Id: 232
+ Images: rc02.sno
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@233:
+ Id: 233
+ Images: rc03.sno
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@234:
+ Id: 234
+ Images: rc04.sno
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@112:
+ Id: 112
+ Images: rv01.sno
+ Size: 5,4
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 5: Rock
+ 6: River
+ 7: River
+ 8: River
+ 9: River
+ 10: Rock
+ 11: Rock
+ 12: Rock
+ 13: Rock
+ 14: Rock
+ 16: Rock
+ 17: Rough
+ Template@113:
+ Id: 113
+ Images: rv02.sno
+ Size: 5,3
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rough
+ 4: Rough
+ 5: River
+ 6: River
+ 7: River
+ 8: River
+ 9: River
+ 10: Rock
+ 11: Rock
+ 12: Rock
+ Template@114:
+ Id: 114
+ Images: rv03.sno
+ Size: 4,4
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 7: Clear
+ 8: Rock
+ 9: Rock
+ 10: River
+ 11: River
+ 13: Clear
+ 14: Clear
+ 15: Rock
+ Template@115:
+ Id: 115
+ Images: rv04.sno
+ Size: 4,4
+ Categories: River
+ Tiles:
+ 2: Rock
+ 3: Rough
+ 5: Rough
+ 6: Rock
+ 7: River
+ 8: River
+ 9: River
+ 10: River
+ 11: River
+ 12: Rock
+ 13: Rock
+ 14: Rock
+ Template@116:
+ Id: 116
+ Images: rv05.sno
+ Size: 3,3
+ Categories: River
+ Tiles:
+ 0: Clear
+ 1: River
+ 2: Rock
+ 3: Rock
+ 4: River
+ 5: Rock
+ 6: Rock
+ 7: River
+ 8: Rock
+ Template@117:
+ Id: 117
+ Images: rv06.sno
+ Size: 3,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: Rock
+ 3: Rock
+ 4: River
+ 5: Rock
+ Template@118:
+ Id: 118
+ Images: rv07.sno
+ Size: 3,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: River
+ 3: Rock
+ 4: Rock
+ 5: River
+ Template@119:
+ Id: 119
+ Images: rv08.sno
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: River
+ 3: River
+ Template@120:
+ Id: 120
+ Images: rv09.sno
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: River
+ 3: River
+ Template@121:
+ Id: 121
+ Images: rv10.sno
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: River
+ 1: River
+ 2: Rock
+ 3: River
+ Template@122:
+ Id: 122
+ Images: rv11.sno
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: River
+ 1: River
+ 2: River
+ 3: Rock
+ Template@123:
+ Id: 123
+ Images: rv12.sno
+ Size: 3,4
+ Categories: River
+ Tiles:
+ 0: Clear
+ 1: River
+ 2: Rock
+ 3: Rock
+ 4: River
+ 5: Rock
+ 6: River
+ 7: River
+ 8: Rock
+ 9: Rough
+ 10: River
+ 11: Rock
+ Template@124:
+ Id: 124
+ Images: rv13.sno
+ Size: 4,4
+ Categories: River
+ Tiles:
+ 2: Clear
+ 3: Rough
+ 4: River
+ 5: River
+ 6: River
+ 7: River
+ 8: Rough
+ 9: Rock
+ 10: River
+ 11: Rock
+ 12: Clear
+ 13: Rock
+ 14: River
+ 15: Rough
+ Template@229:
+ Id: 229
+ Images: rv14.sno
+ Size: 1,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: River
+ Template@230:
+ Id: 230
+ Images: rv15.sno
+ Size: 2,1
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: River
+ Template@235:
+ Id: 235
+ Images: br1a.sno
+ Size: 4,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Bridge
+ 4: Rock
+ 5: Bridge
+ 6: Bridge
+ 7: Rock
+ 9: Bridge
+ 10: Rock
+ 11: Rock
+ Template@236:
+ Id: 236
+ Images: br1b.sno
+ Size: 4,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Rough
+ 4: Rock
+ 5: Rough
+ 6: Rough
+ 7: Rock
+ 9: Rough
+ 10: Rock
+ 11: Rock
+ Template@237:
+ Id: 237
+ Images: br1c.sno
+ Size: 4,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Rock
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 7: Rock
+ 9: Rock
+ 10: Rock
+ 11: Rock
+ Template@238:
+ Id: 238
+ Images: br2a.sno
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Bridge
+ 5: Rock
+ 6: Bridge
+ 7: Bridge
+ 8: Rock
+ 9: Rock
+ 11: Bridge
+ 12: Rock
+ 13: Rock
+ Template@239:
+ Id: 239
+ Images: br2b.sno
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Rough
+ 5: Rock
+ 6: Rough
+ 7: Rough
+ 8: Rock
+ 9: Rock
+ 11: Rough
+ 12: Rock
+ 13: Rock
+ Template@240:
+ Id: 240
+ Images: br2c.sno
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 1: Water
+ 2: Water
+ 5: Rock
+ 6: Rock
+ 7: Rock
+ 8: Rock
+ 9: Rock
+ 11: Rock
+ 12: Rock
+ 13: Rock
+ Template@241:
+ Id: 241
+ Images: br3a.sno
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 5: Bridge
+ 6: Rock
+ 7: Rock
+ Template@242:
+ Id: 242
+ Images: br3b.sno
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 5: Bridge
+ 6: Rock
+ 7: Rock
+ Template@243:
+ Id: 243
+ Images: br3c.sno
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 5: Rock
+ 6: Rock
+ 7: Rock
+ Template@244:
+ Id: 244
+ Images: br3d.sno
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: River
+ 1: Rock
+ 5: River
+ 6: River
+ 7: River
+ Template@245:
+ Id: 245
+ Images: br3e.sno
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Water
+ 1: Water
+ 5: Rock
+ 6: Water
+ 7: Water
+ Template@246:
+ Id: 246
+ Images: br3f.sno
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Water
+ 1: Water
+ 5: Water
+ 6: Water
+ 7: Water
+ Template@380:
+ Id: 380
+ Images: br1x.sno
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 3: Road
+ 4: Clear
+ 9: Rock
+ 14: Water
+ Template@381:
+ Id: 381
+ Images: br2x.sno
+ Size: 5,1
+ Categories: Bridge
+ Tiles:
+ 0: Road
+ 4: Beach
+ Template@131:
+ Id: 131
+ Images: bridge1.sno
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Bridge
+ 3: Bridge
+ 4: Rock
+ 5: Rock
+ 6: Bridge
+ 7: Bridge
+ 8: Rock
+ 9: Rock
+ 12: Rock
+ Template@132:
+ Id: 132
+ Images: bridge1d.sno
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 7: Rock
+ 8: Rock
+ 9: Rock
+ 12: Rock
+ Template@378:
+ Id: 378
+ Images: bridge1h.sno
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Rough
+ 3: Rough
+ 4: Rock
+ 5: Rock
+ 6: Rough
+ 7: Rough
+ 8: Rock
+ 9: Rock
+ 12: Rough
+ Template@382:
+ Id: 382
+ Images: bridge1x.sno
+ Size: 5,4
+ Categories: Bridge
+ Tiles:
+ 2: Clear
+ 3: Road
+ 4: Road
+ 5: Rock
+ 15: Road
+ 16: Road
+ 18: Rock
+ 19: Rock
+ Template@133:
+ Id: 133
+ Images: bridge2.sno
+ Size: 5,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 2: Bridge
+ 3: Rock
+ 5: Rock
+ 6: Rock
+ 7: Bridge
+ 8: Bridge
+ 9: Rock
+ Template@134:
+ Id: 134
+ Images: bridge2d.sno
+ Size: 5,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 5: Rock
+ 6: Rock
+ 7: Rock
+ 8: Rock
+ 9: Rock
+ Template@379:
+ Id: 379
+ Images: bridge2h.sno
+ Size: 5,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 2: Rough
+ 3: Rock
+ 5: Rock
+ 6: Rock
+ 7: Rough
+ 8: Rough
+ 9: Rock
+ Template@383:
+ Id: 383
+ Images: bridge2x.sno
+ Size: 5,5
+ Categories: Bridge
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Rough
+ 3: Clear
+ 4: Rough
+ 9: River
+ 15: Rock
+ 16: Rock
+ 17: Rough
+ 18: Road
+ 19: Road
+ 23: Road
+ 24: Road
+ Template@247:
+ Id: 247
+ Images: f01.sno
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Rough
+ 1: Road
+ 2: Road
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ Template@248:
+ Id: 248
+ Images: f02.sno
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ Template@249:
+ Id: 249
+ Images: f03.sno
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Clear
+ 7: Road
+ 8: Clear
+ Template@250:
+ Id: 250
+ Images: f04.sno
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Clear
+ 1: Beach
+ 2: Beach
+ 3: Road
+ 4: Beach
+ 5: Beach
+ 6: Clear
+ 7: Beach
+ 8: Beach
+ Template@251:
+ Id: 251
+ Images: f05.sno
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ Template@252:
+ Id: 252
+ Images: f06.sno
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Clear
+ 3: Beach
+ 4: Beach
+ 5: Road
+ 6: Beach
+ 7: Beach
+ 8: Clear
+ Template@129:
+ Id: 129
+ Images: ford1.sno
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Rough
+ 1: River
+ 2: Rough
+ 3: Road
+ 4: Rough
+ 5: Road
+ 6: Clear
+ 7: Rough
+ 8: Rough
+ Template@130:
+ Id: 130
+ Images: ford2.sno
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Rough
+ 1: Rough
+ 2: Rough
+ 3: Rock
+ 4: Rough
+ 5: Rough
+ 6: Clear
+ 7: Road
+ 8: Clear
+ Template@125:
+ Id: 125
+ Images: falls1.sno
+ Size: 3,3
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: River
+ 4: Rock
+ 5: Rock
+ 6: Rough
+ 7: Rock
+ 8: Rock
+ Template@126:
+ Id: 126
+ Images: falls1a.sno
+ Size: 3,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Water
+ 1: River
+ 2: Rock
+ 3: Water
+ 4: Rock
+ 5: Rock
+ 6: Water
+ 7: River
+ 8: Rock
+ Template@127:
+ Id: 127
+ Images: falls2.sno
+ Size: 3,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: River
+ 4: Rock
+ 5: Rock
+ Template@128:
+ Id: 128
+ Images: falls2a.sno
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: River
+ 4: River
+ 5: River
+ Template@97:
+ Id: 97
+ Images: b1.sno
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@98:
+ Id: 98
+ Images: b2.sno
+ Size: 2,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@99:
+ Id: 99
+ Images: b3.sno
+ Size: 3,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ Template@216:
+ Id: 216
+ Images: rf01.sno
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@217:
+ Id: 217
+ Images: rf02.sno
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@218:
+ Id: 218
+ Images: rf03.sno
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@219:
+ Id: 219
+ Images: rf04.sno
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@220:
+ Id: 220
+ Images: rf05.sno
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@221:
+ Id: 221
+ Images: rf06.sno
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@222:
+ Id: 222
+ Images: rf07.sno
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@223:
+ Id: 223
+ Images: rf08.sno
+ Size: 1,2
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@224:
+ Id: 224
+ Images: rf09.sno
+ Size: 1,2
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@225:
+ Id: 225
+ Images: rf10.sno
+ Size: 2,1
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ 1: Rough
+ Template@226:
+ Id: 226
+ Images: rf11.sno
+ Size: 2,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@103:
+ Id: 103
+ Images: p01.sno
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@104:
+ Id: 104
+ Images: p02.sno
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@105:
+ Id: 105
+ Images: p03.sno
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@106:
+ Id: 106
+ Images: p04.sno
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@107:
+ Id: 107
+ Images: p07.sno
+ Size: 4,2
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ Template@108:
+ Id: 108
+ Images: p08.sno
+ Size: 3,2
+ Categories: Debris
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ Template@109:
+ Id: 109
+ Images: p13.sno
+ Size: 3,2
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@110:
+ Id: 110
+ Images: p14.sno
+ Size: 2,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@401:
+ Id: 401
+ Images: cliffsl1.sno
+ Size: 1,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@402:
+ Id: 402
+ Images: cliffsl2.sno
+ Size: 1,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@403:
+ Id: 403
+ Images: cliffsl3.sno
+ Size: 2,1
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@404:
+ Id: 404
+ Images: cliffsl4.sno
+ Size: 2,1
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@405:
+ Id: 405
+ Images: cliffsw1.sno
+ Size: 1,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@406:
+ Id: 406
+ Images: cliffsw2.sno
+ Size: 1,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@407:
+ Id: 407
+ Images: cliffsw3.sno
+ Size: 2,1
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@408:
+ Id: 408
+ Images: cliffsw4.sno
+ Size: 2,1
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
diff --git a/mods/ura/tilesets/temperat.yaml b/mods/ura/tilesets/temperat.yaml
new file mode 100644
index 0000000..4b98c12
--- /dev/null
+++ b/mods/ura/tilesets/temperat.yaml
@@ -0,0 +1,3688 @@
+General:
+ Name: Temperate
+ Id: TEMPERAT
+ Palette: temperat.pal
+ SheetSize: 1024
+ EditorTemplateOrder: Terrain, Debris, Road, Cliffs, Water Cliffs, Beach, River, Bridge
+ HeightDebugColors: AA0000
+
+Terrain:
+ TerrainType@Beach:
+ Type: Beach
+ TargetTypes: Ground
+ Color: B09C78
+ TerrainType@Bridge:
+ Type: Bridge
+ TargetTypes: Ground, Bridge
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 606060
+ TerrainType@Clear:
+ Type: Clear
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 284428
+ RestrictPlayerColor: true
+ TerrainType@Gems:
+ Type: Gems
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 8470FF
+ RestrictPlayerColor: true
+ TerrainType@Ore:
+ Type: Ore
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 948060
+ RestrictPlayerColor: true
+ TerrainType@River:
+ Type: River
+ TargetTypes: Ground
+ Color: 5C8CB4
+ TerrainType@Road:
+ Type: Road
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 5E430D
+ TerrainType@Rock:
+ Type: Rock
+ TargetTypes: Ground
+ Color: 44443C
+ TerrainType@Rough:
+ Type: Rough
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: 44443C
+ TerrainType@Tree:
+ Type: Tree
+ TargetTypes: Ground
+ Color: 1C2024
+ TerrainType@Wall:
+ Type: Wall
+ TargetTypes: Ground
+ AcceptsSmudgeType: Crater, Scorch
+ Color: D0C0A0
+ TerrainType@Water:
+ Type: Water
+ TargetTypes: Water
+ IsWater: True
+ Color: 5C74A4
+ RestrictPlayerColor: true
+
+Templates:
+ Template@255:
+ Id: 255
+ Images: clear1.tem
+ Size: 1,1
+ PickAny: True
+ Categories: Terrain
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ 12: Clear
+ 13: Clear
+ 14: Clear
+ 15: Clear
+ Template@65535:
+ Id: 65535
+ Images: clear1.tem
+ Size: 1,1
+ PickAny: True
+ Categories: Terrain
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ 8: Clear
+ 9: Clear
+ 10: Clear
+ 11: Clear
+ 12: Clear
+ 13: Clear
+ 14: Clear
+ 15: Clear
+ Template@1:
+ Id: 1
+ Images: w1.tem
+ Size: 1,1
+ Categories: Terrain
+ Tiles:
+ 0: Water
+ Template@2:
+ Id: 2
+ Images: w2.tem
+ Size: 2,2
+ Categories: Terrain
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Water
+ 3: Water
+ Template@3:
+ Id: 3
+ Images: sh01.tem
+ Size: 4,5
+ Categories: Beach
+ Tiles:
+ 3: Rock
+ 5: Clear
+ 6: Clear
+ 7: Beach
+ 8: Beach
+ 9: Water
+ 10: Water
+ 11: River
+ 12: Water
+ 13: Water
+ 16: Water
+ Template@4:
+ Id: 4
+ Images: sh02.tem
+ Size: 5,5
+ Categories: Beach
+ Tiles:
+ 4: Clear
+ 8: Beach
+ 9: Beach
+ 10: Beach
+ 11: Clear
+ 12: Beach
+ 13: Beach
+ 14: Beach
+ 15: Beach
+ 16: Rough
+ 17: Rough
+ 18: River
+ 20: Water
+ 21: Water
+ 22: Rock
+ Template@5:
+ Id: 5
+ Images: sh03.tem
+ Size: 3,5
+ Categories: Beach
+ Tiles:
+ 2: Clear
+ 4: Beach
+ 5: Beach
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ 9: Water
+ 10: Water
+ 12: Water
+ Template@6:
+ Id: 6
+ Images: sh04.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Water
+ 7: Water
+ 8: Water
+ Template@7:
+ Id: 7
+ Images: sh05.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Rock
+ 2: Beach
+ 3: Beach
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 7: River
+ 8: River
+ Template@8:
+ Id: 8
+ Images: sh06.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Water
+ 7: Water
+ 8: Water
+ Template@9:
+ Id: 9
+ Images: sh07.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Water
+ 7: Water
+ 8: Water
+ Template@10:
+ Id: 10
+ Images: sh08.tem
+ Size: 1,2
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ Template@11:
+ Id: 11
+ Images: sh09.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 1: River
+ 2: Rock
+ 3: Clear
+ 4: River
+ 5: Beach
+ 6: Water
+ 7: Water
+ 8: Water
+ Template@12:
+ Id: 12
+ Images: sh10.tem
+ Size: 5,6
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 5: Beach
+ 6: Clear
+ 10: Water
+ 11: Beach
+ 12: Beach
+ 13: Water
+ 17: Water
+ 18: Beach
+ 19: Beach
+ 22: Rock
+ 23: Rock
+ 24: Rock
+ 28: Water
+ 29: Water
+ Template@13:
+ Id: 13
+ Images: sh11.tem
+ Size: 4,5
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Clear
+ 4: Beach
+ 5: Water
+ 6: Beach
+ 8: Water
+ 9: Water
+ 10: Beach
+ 11: Beach
+ 14: Beach
+ 15: Beach
+ 18: Water
+ 19: Beach
+ Template@14:
+ Id: 14
+ Images: sh12.tem
+ Size: 3,5
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Clear
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Water
+ 7: Beach
+ 8: Beach
+ 10: Water
+ 11: Beach
+ 14: Water
+ Template@15:
+ Id: 15
+ Images: sh13.tem
+ Size: 6,5
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Rock
+ 2: Beach
+ 7: Beach
+ 8: Beach
+ 9: Beach
+ 13: Water
+ 14: Beach
+ 15: Beach
+ 16: Clear
+ 19: Water
+ 20: Water
+ 21: Rough
+ 22: Beach
+ 23: Clear
+ 27: Beach
+ 28: Beach
+ 29: Beach
+ Template@16:
+ Id: 16
+ Images: sh14.tem
+ Size: 4,4
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Clear
+ 4: River
+ 5: Beach
+ 6: Beach
+ 8: Rough
+ 9: Beach
+ 10: Beach
+ 13: Water
+ 14: Beach
+ 15: Beach
+ Template@17:
+ Id: 17
+ Images: sh15.tem
+ Size: 5,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Beach
+ 3: Clear
+ 6: Water
+ 7: Beach
+ 8: Beach
+ 12: Water
+ 13: Beach
+ 14: Beach
+ Template@18:
+ Id: 18
+ Images: sh16.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Beach
+ 2: Clear
+ 3: Water
+ 4: Beach
+ 5: Clear
+ 6: Water
+ 7: Beach
+ 8: Clear
+ Template@19:
+ Id: 19
+ Images: sh17.tem
+ Size: 2,1
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Clear
+ Template@20:
+ Id: 20
+ Images: sh18.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Rough
+ 3: Water
+ 4: River
+ 5: River
+ 6: Water
+ 7: Beach
+ 8: Rough
+ Template@21:
+ Id: 21
+ Images: sh19.tem
+ Size: 4,5
+ Categories: Beach
+ Tiles:
+ 1: Water
+ 2: Beach
+ 3: Clear
+ 5: Beach
+ 6: Beach
+ 7: Clear
+ 8: Water
+ 9: Beach
+ 10: Beach
+ 12: Water
+ 13: Beach
+ 14: Beach
+ 16: Water
+ 17: Beach
+ 18: Clear
+ Template@22:
+ Id: 22
+ Images: sh20.tem
+ Size: 5,4
+ Categories: Beach
+ Tiles:
+ 2: Water
+ 3: Beach
+ 4: Beach
+ 5: Water
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ 10: Water
+ 11: Beach
+ 12: Beach
+ 15: Water
+ 16: Beach
+ 17: Beach
+ Template@23:
+ Id: 23
+ Images: sh21.tem
+ Size: 5,3
+ Categories: Beach
+ Tiles:
+ 1: Water
+ 2: Beach
+ 3: Beach
+ 4: Clear
+ 5: Water
+ 6: Beach
+ 7: Beach
+ 8: Clear
+ 10: Water
+ 11: Beach
+ 12: Beach
+ Template@24:
+ Id: 24
+ Images: sh22.tem
+ Size: 6,5
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 6: Water
+ 7: Water
+ 12: Beach
+ 13: Beach
+ 14: Water
+ 15: Water
+ 16: Water
+ 17: Water
+ 19: Clear
+ 20: Beach
+ 21: Beach
+ 22: Water
+ 23: Beach
+ 27: Beach
+ 28: Beach
+ 29: Beach
+ Template@25:
+ Id: 25
+ Images: sh23.tem
+ Size: 5,5
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Water
+ 2: Water
+ 5: Beach
+ 6: Beach
+ 7: Water
+ 8: Water
+ 9: Water
+ 11: Clear
+ 12: Beach
+ 13: River
+ 14: Water
+ 17: Clear
+ 18: Beach
+ 19: Beach
+ 22: Beach
+ 23: Beach
+ 24: Beach
+ Template@26:
+ Id: 26
+ Images: sh24.tem
+ Size: 3,4
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Water
+ 3: Beach
+ 4: Water
+ 5: Water
+ 7: Clear
+ 8: Beach
+ 11: Clear
+ Template@27:
+ Id: 27
+ Images: sh25.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Water
+ 3: Rock
+ 4: Rock
+ 5: Beach
+ 6: Rock
+ 7: Rock
+ 8: Beach
+ Template@28:
+ Id: 28
+ Images: sh26.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Water
+ 3: Beach
+ 4: Beach
+ 5: Rough
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ Template@29:
+ Id: 29
+ Images: sh27.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Beach
+ 7: Beach
+ 8: Rough
+ Template@30:
+ Id: 30
+ Images: sh28.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 1: Rock
+ 2: Rock
+ 3: Beach
+ 4: Rock
+ 5: Rock
+ 6: Beach
+ 7: Rough
+ 8: Rough
+ Template@31:
+ Id: 31
+ Images: sh29.tem
+ Size: 1,2
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Clear
+ Template@32:
+ Id: 32
+ Images: sh30.tem
+ Size: 3,2
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: River
+ 2: River
+ 3: Clear
+ 4: River
+ 5: Rough
+ Template@33:
+ Id: 33
+ Images: sh31.tem
+ Size: 6,5
+ Categories: Beach
+ Tiles:
+ 3: Water
+ 4: Water
+ 5: Beach
+ 8: Water
+ 9: Water
+ 10: Beach
+ 11: Beach
+ 12: Water
+ 13: Water
+ 14: Water
+ 15: Beach
+ 16: Clear
+ 18: Beach
+ 19: Beach
+ 20: Water
+ 21: Beach
+ 22: Clear
+ 24: Clear
+ 25: Clear
+ 26: Beach
+ 27: Beach
+ 28: Clear
+ Template@34:
+ Id: 34
+ Images: sh32.tem
+ Size: 4,4
+ Categories: Beach
+ Tiles:
+ 2: Water
+ 3: Water
+ 4: Water
+ 5: Water
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ 9: Beach
+ 10: Beach
+ 12: Clear
+ 13: Clear
+ Template@35:
+ Id: 35
+ Images: sh33.tem
+ Size: 3,4
+ Categories: Beach
+ Tiles:
+ 1: Water
+ 2: Beach
+ 3: Water
+ 4: Beach
+ 5: Clear
+ 6: Beach
+ 7: Rough
+ 9: Beach
+ 10: Beach
+ Template@36:
+ Id: 36
+ Images: sh34.tem
+ Size: 6,5
+ Categories: Beach
+ Tiles:
+ 3: Clear
+ 4: Beach
+ 5: Water
+ 7: Beach
+ 8: Beach
+ 9: Beach
+ 10: Beach
+ 13: Beach
+ 14: Beach
+ 15: Water
+ 19: Beach
+ 20: Beach
+ 21: Water
+ 24: Beach
+ 25: Beach
+ 26: Water
+ Template@37:
+ Id: 37
+ Images: sh35.tem
+ Size: 4,4
+ Categories: Beach
+ Tiles:
+ 2: Beach
+ 3: Water
+ 5: Clear
+ 6: Beach
+ 7: Rough
+ 9: Beach
+ 10: Beach
+ 11: Water
+ 12: Clear
+ 13: Beach
+ 14: Water
+ Template@38:
+ Id: 38
+ Images: sh36.tem
+ Size: 4,3
+ Categories: Beach
+ Tiles:
+ 1: Beach
+ 2: Beach
+ 3: Water
+ 4: Beach
+ 5: Beach
+ 6: Water
+ 8: Beach
+ 9: Water
+ 10: Water
+ Template@39:
+ Id: 39
+ Images: sh37.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 1: Beach
+ 2: Water
+ 3: Clear
+ 4: Beach
+ 5: Water
+ 6: Rough
+ 7: Beach
+ 8: Water
+ Template@40:
+ Id: 40
+ Images: sh38.tem
+ Size: 2,1
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 1: Beach
+ Template@41:
+ Id: 41
+ Images: sh39.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Rock
+ 1: Beach
+ 2: Water
+ 3: River
+ 4: River
+ 5: Water
+ 6: Clear
+ 7: Beach
+ 8: Water
+ Template@42:
+ Id: 42
+ Images: sh40.tem
+ Size: 5,5
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 1: Beach
+ 2: Water
+ 6: Beach
+ 7: Water
+ 11: Beach
+ 12: Water
+ 13: Water
+ 16: Clear
+ 17: Beach
+ 18: Beach
+ 19: Water
+ 22: Beach
+ 23: Beach
+ 24: Water
+ Template@43:
+ Id: 43
+ Images: sh41.tem
+ Size: 4,4
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Water
+ 4: Beach
+ 5: Beach
+ 6: Water
+ 8: Beach
+ 9: Beach
+ 10: Water
+ 11: Water
+ 13: Clear
+ 14: Beach
+ 15: Water
+ Template@44:
+ Id: 44
+ Images: sh42.tem
+ Size: 4,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Water
+ 5: Beach
+ 6: Beach
+ 7: River
+ 9: Clear
+ 10: Beach
+ 11: Water
+ Template@45:
+ Id: 45
+ Images: sh43.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Beach
+ 7: Water
+ 8: Water
+ Template@46:
+ Id: 46
+ Images: sh44.tem
+ Size: 2,2
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Beach
+ 2: River
+ 3: Water
+ Template@47:
+ Id: 47
+ Images: sh45.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Beach
+ 2: Water
+ 3: Water
+ 4: Rough
+ 5: Beach
+ 6: Water
+ 7: River
+ 8: Beach
+ Template@48:
+ Id: 48
+ Images: sh46.tem
+ Size: 2,2
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: River
+ 2: River
+ 3: Beach
+ Template@49:
+ Id: 49
+ Images: sh47.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 3: Beach
+ 4: Water
+ 6: Beach
+ 7: Beach
+ 8: Water
+ Template@50:
+ Id: 50
+ Images: sh48.tem
+ Size: 2,2
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Water
+ 2: Clear
+ 3: Beach
+ Template@51:
+ Id: 51
+ Images: sh49.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Water
+ 2: Water
+ 3: Rock
+ 4: Rock
+ 5: River
+ 6: River
+ 7: Rock
+ 8: Rock
+ Template@52:
+ Id: 52
+ Images: sh50.tem
+ Size: 2,2
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Water
+ Template@53:
+ Id: 53
+ Images: sh51.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Clear
+ 1: Beach
+ 2: Beach
+ 4: Beach
+ 5: Beach
+ 7: Rough
+ 8: Clear
+ Template@54:
+ Id: 54
+ Images: sh52.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Beach
+ 5: Beach
+ 7: Beach
+ 8: Water
+ Template@55:
+ Id: 55
+ Images: sh53.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Beach
+ 1: Clear
+ 3: Beach
+ 4: Beach
+ 5: Clear
+ 6: Water
+ 7: Beach
+ 8: Clear
+ Template@56:
+ Id: 56
+ Images: sh54.tem
+ Size: 3,3
+ Categories: Beach
+ Tiles:
+ 0: Water
+ 1: Beach
+ 2: Clear
+ 3: Beach
+ 4: Beach
+ 6: Clear
+ Template@57:
+ Id: 57
+ Images: sh55.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@58:
+ Id: 58
+ Images: sh56.tem
+ Size: 2,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@135:
+ Id: 135
+ Images: s01.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@136:
+ Id: 136
+ Images: s02.tem
+ Size: 2,3
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@137:
+ Id: 137
+ Images: s03.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@138:
+ Id: 138
+ Images: s04.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@139:
+ Id: 139
+ Images: s05.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@140:
+ Id: 140
+ Images: s06.tem
+ Size: 2,3
+ Categories: Cliffs
+ Tiles:
+ 0: Rough
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ Template@141:
+ Id: 141
+ Images: s07.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@142:
+ Id: 142
+ Images: s08.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@143:
+ Id: 143
+ Images: s09.tem
+ Size: 3,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@144:
+ Id: 144
+ Images: s10.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@145:
+ Id: 145
+ Images: s11.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@146:
+ Id: 146
+ Images: s12.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@147:
+ Id: 147
+ Images: s13.tem
+ Size: 3,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rough
+ 3: Rock
+ 4: Rock
+ 5: Rough
+ Template@148:
+ Id: 148
+ Images: s14.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 2: Rock
+ Template@149:
+ Id: 149
+ Images: s15.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@150:
+ Id: 150
+ Images: s16.tem
+ Size: 2,3
+ Categories: Cliffs
+ Tiles:
+ 0: Rough
+ 2: Rock
+ 3: Rock
+ 5: Rock
+ Template@151:
+ Id: 151
+ Images: s17.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@152:
+ Id: 152
+ Images: s18.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@153:
+ Id: 153
+ Images: s19.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@154:
+ Id: 154
+ Images: s20.tem
+ Size: 2,3
+ Categories: Cliffs
+ Tiles:
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rough
+ Template@155:
+ Id: 155
+ Images: s21.tem
+ Size: 1,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@156:
+ Id: 156
+ Images: s22.tem
+ Size: 2,1
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@157:
+ Id: 157
+ Images: s23.tem
+ Size: 3,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rough
+ Template@158:
+ Id: 158
+ Images: s24.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@159:
+ Id: 159
+ Images: s25.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@160:
+ Id: 160
+ Images: s26.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@161:
+ Id: 161
+ Images: s27.tem
+ Size: 3,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rough
+ 3: Rough
+ 4: Rock
+ 5: Rock
+ Template@162:
+ Id: 162
+ Images: s28.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 3: Rock
+ Template@163:
+ Id: 163
+ Images: s29.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@164:
+ Id: 164
+ Images: s30.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@165:
+ Id: 165
+ Images: s31.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 2: Rock
+ 3: Rock
+ Template@166:
+ Id: 166
+ Images: s32.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rough
+ Template@167:
+ Id: 167
+ Images: s33.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@168:
+ Id: 168
+ Images: s34.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@169:
+ Id: 169
+ Images: s35.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@170:
+ Id: 170
+ Images: s36.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@171:
+ Id: 171
+ Images: s37.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@172:
+ Id: 172
+ Images: s38.tem
+ Size: 2,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@59:
+ Id: 59
+ Images: wc01.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@60:
+ Id: 60
+ Images: wc02.tem
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@61:
+ Id: 61
+ Images: wc03.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@62:
+ Id: 62
+ Images: wc04.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@63:
+ Id: 63
+ Images: wc05.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@64:
+ Id: 64
+ Images: wc06.tem
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rough
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ Template@65:
+ Id: 65
+ Images: wc07.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@66:
+ Id: 66
+ Images: wc08.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@67:
+ Id: 67
+ Images: wc09.tem
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: River
+ 4: Rock
+ 5: Rock
+ Template@68:
+ Id: 68
+ Images: wc10.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@69:
+ Id: 69
+ Images: wc11.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@70:
+ Id: 70
+ Images: wc12.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@71:
+ Id: 71
+ Images: wc13.tem
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rough
+ 3: Rock
+ 4: Rock
+ 5: Clear
+ Template@72:
+ Id: 72
+ Images: wc14.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ Template@73:
+ Id: 73
+ Images: wc15.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@74:
+ Id: 74
+ Images: wc16.tem
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Water
+ 2: Rock
+ 3: Rock
+ 5: Rock
+ Template@75:
+ Id: 75
+ Images: wc17.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@76:
+ Id: 76
+ Images: wc18.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@77:
+ Id: 77
+ Images: wc19.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@78:
+ Id: 78
+ Images: wc20.tem
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 1: River
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rough
+ Template@79:
+ Id: 79
+ Images: wc21.tem
+ Size: 1,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@80:
+ Id: 80
+ Images: wc22.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@81:
+ Id: 81
+ Images: wc23.tem
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: River
+ 3: Rock
+ 4: Rock
+ 5: Water
+ Template@82:
+ Id: 82
+ Images: wc24.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@83:
+ Id: 83
+ Images: wc25.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@84:
+ Id: 84
+ Images: wc26.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@85:
+ Id: 85
+ Images: wc27.tem
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Water
+ 3: Clear
+ 4: Rock
+ 5: Rock
+ Template@86:
+ Id: 86
+ Images: wc28.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 3: Rock
+ Template@87:
+ Id: 87
+ Images: wc29.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@88:
+ Id: 88
+ Images: wc30.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@89:
+ Id: 89
+ Images: wc31.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: Rock
+ 3: Rock
+ Template@90:
+ Id: 90
+ Images: wc32.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Water
+ Template@91:
+ Id: 91
+ Images: wc33.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@92:
+ Id: 92
+ Images: wc34.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@93:
+ Id: 93
+ Images: wc35.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@94:
+ Id: 94
+ Images: wc36.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@95:
+ Id: 95
+ Images: wc37.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@96:
+ Id: 96
+ Images: wc38.tem
+ Size: 2,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@173:
+ Id: 173
+ Images: d01.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Clear
+ 3: Clear
+ Template@174:
+ Id: 174
+ Images: d02.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Clear
+ 3: Clear
+ Template@175:
+ Id: 175
+ Images: d03.tem
+ Size: 1,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ Template@176:
+ Id: 176
+ Images: d04.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Road
+ 3: Clear
+ Template@177:
+ Id: 177
+ Images: d05.tem
+ Size: 3,4
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Clear
+ 3: Road
+ 4: Road
+ 6: Road
+ 7: Road
+ 9: Road
+ 10: Road
+ Template@178:
+ Id: 178
+ Images: d06.tem
+ Size: 2,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 2: Road
+ 3: Road
+ 4: Road
+ 5: Clear
+ Template@179:
+ Id: 179
+ Images: d07.tem
+ Size: 3,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Clear
+ 4: Road
+ 5: Clear
+ Template@180:
+ Id: 180
+ Images: d08.tem
+ Size: 3,2
+ Categories: Road
+ Tiles:
+ 1: Road
+ 3: Clear
+ 4: Road
+ 5: Clear
+ Template@181:
+ Id: 181
+ Images: d09.tem
+ Size: 4,3
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Road
+ 5: Road
+ 6: Road
+ 7: Road
+ 10: Clear
+ 11: Clear
+ Template@182:
+ Id: 182
+ Images: d10.tem
+ Size: 4,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Rock
+ 4: Road
+ 5: Road
+ 6: Road
+ 7: Road
+ Template@183:
+ Id: 183
+ Images: d11.tem
+ Size: 2,3
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Road
+ 3: Road
+ 4: Clear
+ Template@184:
+ Id: 184
+ Images: d12.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 2: Road
+ 3: Road
+ Template@185:
+ Id: 185
+ Images: d13.tem
+ Size: 4,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Clear
+ 4: Clear
+ 5: Road
+ 6: Road
+ 7: Rock
+ 10: Rock
+ 11: Road
+ Template@186:
+ Id: 186
+ Images: d14.tem
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Road
+ 3: Clear
+ 4: Rock
+ 5: Road
+ 6: Road
+ 7: Road
+ 8: Road
+ Template@187:
+ Id: 187
+ Images: d15.tem
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Road
+ 3: Road
+ 4: Road
+ 5: Clear
+ 6: Road
+ 7: Clear
+ Template@188:
+ Id: 188
+ Images: d16.tem
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Road
+ 3: Road
+ 4: Road
+ 5: Road
+ 6: Road
+ 7: Road
+ 8: Rock
+ Template@189:
+ Id: 189
+ Images: d17.tem
+ Size: 3,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Road
+ 3: Clear
+ 4: Road
+ 5: Clear
+ Template@190:
+ Id: 190
+ Images: d18.tem
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Clear
+ 3: Road
+ 4: Road
+ 5: Clear
+ 6: Clear
+ 7: Road
+ 8: Rock
+ Template@191:
+ Id: 191
+ Images: d19.tem
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Clear
+ 3: Road
+ 4: Road
+ 5: Road
+ 6: Clear
+ 7: Road
+ 8: Clear
+ Template@192:
+ Id: 192
+ Images: d20.tem
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Clear
+ 3: Road
+ 4: Road
+ 5: Clear
+ 6: Clear
+ 7: Road
+ 8: Road
+ Template@193:
+ Id: 193
+ Images: d21.tem
+ Size: 3,2
+ Categories: Road
+ Tiles:
+ 0: Rock
+ 1: Road
+ 2: Road
+ 3: Clear
+ 4: Road
+ 5: Rough
+ Template@194:
+ Id: 194
+ Images: d22.tem
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 3: Road
+ 4: Road
+ 5: Clear
+ 6: Clear
+ 7: Road
+ 8: Clear
+ Template@195:
+ Id: 195
+ Images: d23.tem
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Clear
+ 3: Clear
+ 4: Road
+ 5: Clear
+ 6: Road
+ 7: Road
+ Template@196:
+ Id: 196
+ Images: d24.tem
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 3: Road
+ 4: Road
+ 5: Road
+ 7: Road
+ 8: Road
+ Template@197:
+ Id: 197
+ Images: d25.tem
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 3: Road
+ 4: Road
+ 5: Road
+ 7: Road
+ 8: Road
+ Template@198:
+ Id: 198
+ Images: d26.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Road
+ Template@199:
+ Id: 199
+ Images: d27.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Road
+ Template@200:
+ Id: 200
+ Images: d28.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Rough
+ Template@201:
+ Id: 201
+ Images: d29.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Road
+ Template@202:
+ Id: 202
+ Images: d30.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 2: Road
+ Template@203:
+ Id: 203
+ Images: d31.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Road
+ 3: Road
+ Template@204:
+ Id: 204
+ Images: d32.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Clear
+ 2: Road
+ 3: Clear
+ Template@205:
+ Id: 205
+ Images: d33.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Road
+ 3: Road
+ Template@206:
+ Id: 206
+ Images: d34.tem
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Road
+ 3: Road
+ 4: Road
+ 5: Road
+ 6: Road
+ 7: Road
+ Template@207:
+ Id: 207
+ Images: d35.tem
+ Size: 3,3
+ Categories: Road
+ Tiles:
+ 1: Road
+ 2: Road
+ 3: Road
+ 4: Road
+ 5: Road
+ 6: Road
+ 7: Road
+ Template@208:
+ Id: 208
+ Images: d36.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 3: Road
+ Template@209:
+ Id: 209
+ Images: d37.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 3: Road
+ Template@210:
+ Id: 210
+ Images: d38.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 3: Road
+ Template@211:
+ Id: 211
+ Images: d39.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 3: Road
+ Template@212:
+ Id: 212
+ Images: d40.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 1: Road
+ 3: Road
+ Template@213:
+ Id: 213
+ Images: d41.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Rock
+ 2: Road
+ 3: Road
+ Template@214:
+ Id: 214
+ Images: d42.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Road
+ 2: Road
+ 3: Road
+ Template@215:
+ Id: 215
+ Images: d43.tem
+ Size: 2,2
+ Categories: Road
+ Tiles:
+ 0: Clear
+ 2: Road
+ 3: Road
+ Template@227:
+ Id: 227
+ Images: d44.tem
+ Size: 1,1
+ Categories: Road
+ Tiles:
+ 0: Road
+ Template@228:
+ Id: 228
+ Images: d45.tem
+ Size: 1,1
+ Categories: Road
+ Tiles:
+ 0: Road
+ Template@231:
+ Id: 231
+ Images: rc01.tem
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@232:
+ Id: 232
+ Images: rc02.tem
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@233:
+ Id: 233
+ Images: rc03.tem
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@234:
+ Id: 234
+ Images: rc04.tem
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@112:
+ Id: 112
+ Images: rv01.tem
+ Size: 5,4
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 5: Rock
+ 6: River
+ 7: River
+ 8: River
+ 9: River
+ 10: Rock
+ 11: Rock
+ 12: Rock
+ 13: Rock
+ 14: Rock
+ 16: Rock
+ 17: Rough
+ Template@113:
+ Id: 113
+ Images: rv02.tem
+ Size: 5,3
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rough
+ 4: Rough
+ 5: River
+ 6: River
+ 7: River
+ 8: River
+ 9: River
+ 10: Rock
+ 11: Rock
+ 12: Rock
+ Template@114:
+ Id: 114
+ Images: rv03.tem
+ Size: 4,4
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 7: Clear
+ 8: Rock
+ 9: Rock
+ 10: River
+ 11: River
+ 13: Clear
+ 14: Clear
+ 15: Rock
+ Template@115:
+ Id: 115
+ Images: rv04.tem
+ Size: 4,4
+ Categories: River
+ Tiles:
+ 2: Rock
+ 3: Rough
+ 5: Rough
+ 6: Rock
+ 7: River
+ 8: River
+ 9: River
+ 10: River
+ 11: River
+ 12: Rock
+ 13: Rock
+ 14: Rock
+ Template@116:
+ Id: 116
+ Images: rv05.tem
+ Size: 3,3
+ Categories: River
+ Tiles:
+ 0: Clear
+ 1: River
+ 2: Rock
+ 3: Rock
+ 4: River
+ 5: Rock
+ 6: Rock
+ 7: River
+ 8: Rock
+ Template@117:
+ Id: 117
+ Images: rv06.tem
+ Size: 3,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: Rock
+ 3: Rock
+ 4: River
+ 5: Rock
+ Template@118:
+ Id: 118
+ Images: rv07.tem
+ Size: 3,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: River
+ 3: Rock
+ 4: Rock
+ 5: River
+ Template@119:
+ Id: 119
+ Images: rv08.tem
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: River
+ 2: River
+ 3: River
+ Template@120:
+ Id: 120
+ Images: rv09.tem
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: River
+ 3: River
+ Template@121:
+ Id: 121
+ Images: rv10.tem
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: River
+ 1: River
+ 2: Rock
+ 3: River
+ Template@122:
+ Id: 122
+ Images: rv11.tem
+ Size: 2,2
+ Categories: River
+ Tiles:
+ 0: River
+ 1: River
+ 2: River
+ 3: Rock
+ Template@123:
+ Id: 123
+ Images: rv12.tem
+ Size: 3,4
+ Categories: River
+ Tiles:
+ 0: Clear
+ 1: River
+ 2: Rock
+ 3: Rock
+ 4: River
+ 5: Rock
+ 6: River
+ 7: River
+ 8: Rock
+ 9: Rough
+ 10: River
+ 11: Rock
+ Template@124:
+ Id: 124
+ Images: rv13.tem
+ Size: 4,4
+ Categories: River
+ Tiles:
+ 2: Clear
+ 3: Rough
+ 4: River
+ 5: River
+ 6: River
+ 7: River
+ 8: River
+ 9: Rock
+ 10: River
+ 11: Rock
+ 12: Clear
+ 13: Rock
+ 14: River
+ 15: Rough
+ Template@229:
+ Id: 229
+ Images: rv14.tem
+ Size: 1,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: River
+ Template@230:
+ Id: 230
+ Images: rv15.tem
+ Size: 2,1
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: River
+ Template@235:
+ Id: 235
+ Images: br1a.tem
+ Size: 4,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Bridge
+ 4: Rock
+ 5: Bridge
+ 6: Bridge
+ 7: Rock
+ 9: Bridge
+ 10: Rock
+ 11: Rock
+ Template@236:
+ Id: 236
+ Images: br1b.tem
+ Size: 4,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Rough
+ 4: Rock
+ 5: Rough
+ 6: Rough
+ 7: Rock
+ 9: Rough
+ 10: Rock
+ 11: Rock
+ Template@237:
+ Id: 237
+ Images: br1c.tem
+ Size: 4,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Rock
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 7: Rock
+ 9: Rock
+ 10: Rock
+ 11: Rock
+ Template@238:
+ Id: 238
+ Images: br2a.tem
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Bridge
+ 5: Rock
+ 6: Bridge
+ 7: Bridge
+ 8: Rock
+ 9: Rock
+ 11: Bridge
+ 12: Rock
+ 13: Rock
+ Template@239:
+ Id: 239
+ Images: br2b.tem
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Rough
+ 5: Rock
+ 6: Rough
+ 7: Rough
+ 8: Rock
+ 9: Rock
+ 11: Rough
+ 12: Rock
+ 13: Rock
+ Template@240:
+ Id: 240
+ Images: br2c.tem
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 1: Water
+ 2: Water
+ 5: Rock
+ 6: Rock
+ 7: Rock
+ 8: Rock
+ 9: Rock
+ 11: Rock
+ 12: Rock
+ 13: Rock
+ Template@241:
+ Id: 241
+ Images: br3a.tem
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 5: Bridge
+ 6: Rock
+ 7: Rock
+ Template@242:
+ Id: 242
+ Images: br3b.tem
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 5: Bridge
+ 6: Rock
+ 7: Rock
+ Template@243:
+ Id: 243
+ Images: br3c.tem
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 5: Rock
+ 6: Rock
+ 7: Rock
+ Template@244:
+ Id: 244
+ Images: br3d.tem
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: River
+ 1: Rock
+ 5: River
+ 6: River
+ 7: River
+ Template@245:
+ Id: 245
+ Images: br3e.tem
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Water
+ 1: Water
+ 5: Rock
+ 6: Water
+ 7: Water
+ Template@246:
+ Id: 246
+ Images: br3f.tem
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Water
+ 1: Water
+ 5: Water
+ 6: Water
+ 7: Water
+ Template@380:
+ Id: 380
+ Images: br1x.tem
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 3: Road
+ 4: Clear
+ 9: Rock
+ 14: Water
+ Template@381:
+ Id: 381
+ Images: br2x.tem
+ Size: 5,1
+ Categories: Bridge
+ Tiles:
+ 0: Road
+ 4: Beach
+ Template@131:
+ Id: 131
+ Images: bridge1.tem
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Bridge
+ 3: Bridge
+ 4: Rock
+ 5: Rock
+ 6: Bridge
+ 7: Bridge
+ 8: Rock
+ 9: Rock
+ 12: Rock
+ Template@132:
+ Id: 132
+ Images: bridge1d.tem
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ 6: Rock
+ 7: Rock
+ 8: Rock
+ 9: Rock
+ 12: Rock
+ Template@378:
+ Id: 378
+ Images: bridge1h.tem
+ Size: 5,3
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Rough
+ 3: Rough
+ 4: Rock
+ 5: Rock
+ 6: Rough
+ 7: Rough
+ 8: Rock
+ 9: Rock
+ 12: Rough
+ 13: Clear
+ 14: Clear
+ Template@382:
+ Id: 382
+ Images: bridge1x.tem
+ Size: 5,4
+ Categories: Bridge
+ Tiles:
+ 2: Clear
+ 3: Bridge
+ 4: Bridge
+ 5: Rock
+ 15: Bridge
+ 16: Bridge
+ 18: Rock
+ 19: Rock
+ Template@133:
+ Id: 133
+ Images: bridge2.tem
+ Size: 5,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 2: Bridge
+ 3: Rock
+ 5: Rock
+ 6: Rock
+ 7: Bridge
+ 8: Bridge
+ 9: Rock
+ Template@134:
+ Id: 134
+ Images: bridge2d.tem
+ Size: 5,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 5: Rock
+ 6: Rock
+ 7: Rock
+ 8: Rock
+ 9: Rock
+ Template@379:
+ Id: 379
+ Images: bridge2h.tem
+ Size: 5,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Rough
+ 2: Rough
+ 3: Rock
+ 5: Rock
+ 6: Rock
+ 7: Rough
+ 8: Rough
+ 9: Rock
+ Template@383:
+ Id: 383
+ Images: bridge2x.tem
+ Size: 5,5
+ Categories: Bridge
+ Tiles:
+ 0: Bridge
+ 1: Bridge
+ 2: Rough
+ 3: Clear
+ 4: Rough
+ 9: River
+ 15: Rock
+ 16: Rock
+ 17: Rough
+ 18: Bridge
+ 19: Bridge
+ 23: Bridge
+ 24: Bridge
+ Template@247:
+ Id: 247
+ Images: f01.tem
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Rough
+ 1: Road
+ 2: Road
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ Template@248:
+ Id: 248
+ Images: f02.tem
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ Template@249:
+ Id: 249
+ Images: f03.tem
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Clear
+ 7: Road
+ 8: Clear
+ Template@250:
+ Id: 250
+ Images: f04.tem
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Clear
+ 1: Beach
+ 2: Beach
+ 3: Road
+ 4: Beach
+ 5: Beach
+ 6: Clear
+ 7: Beach
+ 8: Beach
+ Template@251:
+ Id: 251
+ Images: f05.tem
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Beach
+ 3: Beach
+ 4: Beach
+ 5: Beach
+ 6: Beach
+ 7: Beach
+ 8: Beach
+ Template@252:
+ Id: 252
+ Images: f06.tem
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Beach
+ 1: Beach
+ 2: Clear
+ 3: Beach
+ 4: Beach
+ 5: Road
+ 6: Beach
+ 7: Beach
+ 8: Clear
+ Template@129:
+ Id: 129
+ Images: ford1.tem
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Rough
+ 1: River
+ 2: Rough
+ 3: Road
+ 4: Rough
+ 5: Road
+ 6: Clear
+ 7: Rough
+ 8: Rough
+ Template@130:
+ Id: 130
+ Images: ford2.tem
+ Size: 3,3
+ Categories: Bridge
+ Tiles:
+ 0: Rough
+ 1: Rough
+ 2: Rough
+ 3: Rock
+ 4: Rough
+ 5: Rough
+ 6: Clear
+ 7: Road
+ 8: Clear
+ Template@125:
+ Id: 125
+ Images: falls1.tem
+ Size: 3,3
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: River
+ 4: Rock
+ 5: Rock
+ 6: Rough
+ 7: Rock
+ 8: Rock
+ Template@126:
+ Id: 126
+ Images: falls1a.tem
+ Size: 3,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Water
+ 1: River
+ 2: Rock
+ 3: Water
+ 4: Rock
+ 5: Rock
+ 6: Water
+ 7: River
+ 8: Rock
+ Template@127:
+ Id: 127
+ Images: falls2.tem
+ Size: 3,2
+ Categories: River
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: River
+ 4: Rock
+ 5: Rock
+ Template@128:
+ Id: 128
+ Images: falls2a.tem
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: River
+ 4: River
+ 5: River
+ Template@97:
+ Id: 97
+ Images: b1.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@98:
+ Id: 98
+ Images: b2.tem
+ Size: 2,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@99:
+ Id: 99
+ Images: b3.tem
+ Size: 3,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ Template@216:
+ Id: 216
+ Images: rf01.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@217:
+ Id: 217
+ Images: rf02.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@218:
+ Id: 218
+ Images: rf03.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@219:
+ Id: 219
+ Images: rf04.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@220:
+ Id: 220
+ Images: rf05.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@221:
+ Id: 221
+ Images: rf06.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@222:
+ Id: 222
+ Images: rf07.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@223:
+ Id: 223
+ Images: rf08.tem
+ Size: 1,2
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@224:
+ Id: 224
+ Images: rf09.tem
+ Size: 1,2
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@225:
+ Id: 225
+ Images: rf10.tem
+ Size: 2,1
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ 1: Rough
+ Template@226:
+ Id: 226
+ Images: rf11.tem
+ Size: 2,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@103:
+ Id: 103
+ Images: p01.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@104:
+ Id: 104
+ Images: p02.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@105:
+ Id: 105
+ Images: p03.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@106:
+ Id: 106
+ Images: p04.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@107:
+ Id: 107
+ Images: p07.tem
+ Size: 4,2
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ 6: Clear
+ 7: Clear
+ Template@108:
+ Id: 108
+ Images: p08.tem
+ Size: 3,2
+ Categories: Debris
+ Tiles:
+ 0: Clear
+ 1: Clear
+ 2: Clear
+ 3: Clear
+ 4: Clear
+ 5: Clear
+ Template@109:
+ Id: 109
+ Images: p13.tem
+ Size: 3,2
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@110:
+ Id: 110
+ Images: p14.tem
+ Size: 2,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@500:
+ Id: 500
+ Images: sh57.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@502:
+ Id: 502
+ Images: sh58.tem
+ Size: 2,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@503:
+ Id: 503
+ Images: sh59.tem
+ Size: 2,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@504:
+ Id: 504
+ Images: sh60.tem
+ Size: 1,2
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@505:
+ Id: 505
+ Images: sh61.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@506:
+ Id: 506
+ Images: sh62.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@507:
+ Id: 507
+ Images: sh63.tem
+ Size: 2,2
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ Template@508:
+ Id: 508
+ Images: sh64.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rock
+ Template@519:
+ Id: 519
+ Images: sbridge1x.tem
+ Size: 3,4
+ Categories: Bridge
+ Tiles:
+ 0: Clear
+ 1: Road
+ 2: Clear
+ 9: Clear
+ 10: Road
+ 11: Rock
+ Template@520:
+ Id: 520
+ Images: sbridge1.tem
+ Size: 3,2
+ Categories: Bridge
+ Tiles:
+ 0: River
+ 1: Bridge
+ 2: River
+ 3: River
+ 4: Bridge
+ 5: River
+ Template@521:
+ Id: 521
+ Images: sbridge1h.tem
+ Size: 3,2
+ Categories: Bridge
+ Tiles:
+ 0: River
+ 1: Bridge
+ 2: River
+ 3: River
+ 4: Bridge
+ 5: River
+ Template@522:
+ Id: 522
+ Images: sbridge1d.tem
+ Size: 3,2
+ Categories: Bridge
+ Tiles:
+ 0: River
+ 1: Rock
+ 2: River
+ 3: River
+ 4: Rock
+ 5: River
+ Template@523:
+ Id: 523
+ Images: sbridge3.tem
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Bridge
+ 3: Rock
+ 4: River
+ 5: Bridge
+ 6: Rock
+ 7: River
+ Template@524:
+ Id: 524
+ Images: sbridge3h.tem
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Bridge
+ 3: Rock
+ 4: River
+ 5: Bridge
+ 6: Rock
+ 7: River
+ Template@525:
+ Id: 525
+ Images: sbridge3d.tem
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: River
+ 5: River
+ 6: Rock
+ 7: River
+ Template@526:
+ Id: 526
+ Images: sbridge3x.tem
+ Size: 4,4
+ Categories: Bridge
+ Tiles:
+ 1: Clear
+ 2: Clear
+ 3: Road
+ 4: River
+ 12: Road
+ 13: Clear
+ 14: River
+ 15: River
+ Template@527:
+ Id: 527
+ Images: sbridge4.tem
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 2: Rock
+ 4: River
+ 5: Rock
+ 6: Bridge
+ 7: Rock
+ Template@528:
+ Id: 528
+ Images: sbridge4h.tem
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Bridge
+ 2: Rock
+ 4: River
+ 5: Rock
+ 6: Bridge
+ 7: Rock
+ Template@529:
+ Id: 529
+ Images: sbridge4d.tem
+ Size: 4,2
+ Categories: Bridge
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 4: River
+ 5: Rock
+ 6: Rock
+ 7: Rock
+ Template@530:
+ Id: 530
+ Images: sbridge4x.tem
+ Size: 5,5
+ Categories: Bridge
+ Tiles:
+ 0: Road
+ 1: Clear
+ 2: Clear
+ 4: River
+ 8: River
+ 9: River
+ 14: River
+ 15: River
+ 16: River
+ 17: Clear
+ 18: Road
+ 19: Clear
+ 23: Clear
+ 24: Road
+ Template@531:
+ Id: 531
+ Images: sbridge2.tem
+ Size: 2,3
+ Categories: Bridge
+ Tiles:
+ 0: River
+ 1: River
+ 2: Bridge
+ 3: Bridge
+ 4: Rock
+ 5: Rock
+ Template@532:
+ Id: 532
+ Images: sbridge2h.tem
+ Size: 2,3
+ Categories: Bridge
+ Tiles:
+ 0: River
+ 1: River
+ 2: Bridge
+ 3: Bridge
+ 4: Rock
+ 5: Rock
+ Template@533:
+ Id: 533
+ Images: sbridge2d.tem
+ Size: 2,3
+ Categories: Bridge
+ Tiles:
+ 0: River
+ 1: River
+ 2: River
+ 3: River
+ 4: River
+ 5: River
+ Template@534:
+ Id: 534
+ Images: sbridge2x.tem
+ Size: 4,4
+ Categories: Bridge
+ Tiles:
+ 0: Clear
+ 3: Rock
+ 4: Road
+ 7: Road
+ 8: Clear
+ 11: Rock
+ 12: Clear
+ 13: River
+ 14: River
+ 15: Clear
+ Template@550:
+ Id: 550
+ Images: sccnr.tem
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@551:
+ Id: 551
+ Images: sccnl.tem
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@552:
+ Id: 552
+ Images: sccsr.tem
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@553:
+ Id: 553
+ Images: sccsl.tem
+ Size: 2,3
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@554:
+ Id: 554
+ Images: sccln.tem
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@555:
+ Id: 555
+ Images: sccls.tem
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@556:
+ Id: 556
+ Images: sccrn.tem
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@557:
+ Id: 557
+ Images: sccrs.tem
+ Size: 3,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ 2: Rock
+ 3: Rock
+ 4: Rock
+ 5: Rock
+ Template@580:
+ Id: 580
+ Images: deca.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ Template@581:
+ Id: 581
+ Images: decb.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ Template@582:
+ Id: 582
+ Images: decc.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ Template@583:
+ Id: 583
+ Images: decc.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ Template@584:
+ Id: 584
+ Images: decd.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ Template@585:
+ Id: 585
+ Images: dece.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ Template@586:
+ Id: 586
+ Images: decf.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ Template@587:
+ Id: 587
+ Images: decg.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ Template@588:
+ Id: 588
+ Images: dech.tem
+ Size: 1,1
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ Template@590:
+ Id: 590
+ Images: fjord1.tem
+ Size: 1,2
+ Categories: Bridge
+ Tiles:
+ 0: Rough
+ 1: Rough
+ Template@591:
+ Id: 591
+ Images: fjord2.tem
+ Size: 2,1
+ Categories: Bridge
+ Tiles:
+ 0: Rough
+ 1: Rough
+ Template@400:
+ Id: 400
+ Images: hill01.tem
+ Size: 4,3
+ Categories: Debris
+ Tiles:
+ 0: Rough
+ 1: Rough
+ 2: Rough
+ 3: Rough
+ 4: Rough
+ 5: Rough
+ 6: Rough
+ 7: Rough
+ 8: Rough
+ 9: Rough
+ 10: Rough
+ 11: Clear
+ Template@401:
+ Id: 401
+ Images: cliffsl1.tem
+ Size: 1,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@402:
+ Id: 402
+ Images: cliffsl2.tem
+ Size: 1,2
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@403:
+ Id: 403
+ Images: cliffsl3.tem
+ Size: 2,1
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@404:
+ Id: 404
+ Images: cliffsl4.tem
+ Size: 2,1
+ Categories: Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@405:
+ Id: 405
+ Images: cliffsw1.tem
+ Size: 1,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@406:
+ Id: 406
+ Images: cliffsw2.tem
+ Size: 1,2
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@407:
+ Id: 407
+ Images: cliffsw3.tem
+ Size: 2,1
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
+ Template@408:
+ Id: 408
+ Images: cliffsw4.tem
+ Size: 2,1
+ Categories: Water Cliffs
+ Tiles:
+ 0: Rock
+ 1: Rock
diff --git a/mods/ura/uibits/buttons.png b/mods/ura/uibits/buttons.png
new file mode 100644
index 0000000..a73f2a2
Binary files /dev/null and b/mods/ura/uibits/buttons.png differ
diff --git a/mods/ura/uibits/chrome.png b/mods/ura/uibits/chrome.png
new file mode 100644
index 0000000..ede6f2c
Binary files /dev/null and b/mods/ura/uibits/chrome.png differ
diff --git a/mods/ura/uibits/dialog.png b/mods/ura/uibits/dialog.png
new file mode 100644
index 0000000..2e8cf1c
Binary files /dev/null and b/mods/ura/uibits/dialog.png differ
diff --git a/mods/ura/uibits/loadscreen.png b/mods/ura/uibits/loadscreen.png
new file mode 100644
index 0000000..b313707
Binary files /dev/null and b/mods/ura/uibits/loadscreen.png differ
diff --git a/mods/ura/weapons/ballistics.yaml b/mods/ura/weapons/ballistics.yaml
new file mode 100644
index 0000000..85fe981
--- /dev/null
+++ b/mods/ura/weapons/ballistics.yaml
@@ -0,0 +1,226 @@
+^Cannon:
+ ReloadDelay: 50
+ Range: 6c0
+ Report: cannon1.aud
+ Projectile: Bullet
+ Speed: 853
+ Image: 120MM
+ Shadow: True
+ Warhead@1Dam: SpreadDamage
+ Spread: 128
+ Damage: 40
+ Versus:
+ None: 30
+ Wood: 75
+ Light: 75
+ Concrete: 50
+ DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath
+ Warhead@2Smu: LeaveSmudge
+ SmudgeType: Crater
+ InvalidTargets: Vehicle, Structure, Wall, Husk, Trees
+ Warhead@3Eff: CreateEffect
+ Explosions: small_explosion
+ ImpactSounds: kaboom12.aud
+ ValidTargets: Ground, Ship, Trees
+ Warhead@4EffWater: CreateEffect
+ Explosions: small_splash
+ ImpactSounds: splash9.aud
+ ValidTargets: Water, Underwater
+ InvalidTargets: Ship, Structure, Bridge
+
+25mm:
+ Inherits: ^Cannon
+ ReloadDelay: 22
+ Range: 5c0
+ Report: cannon2.aud
+ Projectile: Bullet
+ Speed: 853
+ Image: 50CAL
+ Warhead@1Dam: SpreadDamage
+ Damage: 30
+ Versus:
+ Wood: 40
+ Light: 110
+ Heavy: 45
+ Concrete: 30
+ -Warhead@2Smu: LeaveSmudge
+ Warhead@3Eff: CreateEffect
+ -ImpactSounds:
+ Warhead@4EffWater: CreateEffect
+ -ImpactSounds:
+
+90mm:
+ Inherits: ^Cannon
+ Warhead@1Dam: SpreadDamage
+ Versus:
+ Heavy: 140
+ Light: 90
+
+#90mm.Germany:
+# Inherits: 90mm
+# Projectile: Bullet
+# Speed: 1024
+# Warhead@1Dam: SpreadDamage
+# Versus:
+# Heavy: originally +33% above regular medium
+# Light: 90
+
+105mm:
+ Inherits: ^Cannon
+ ReloadDelay: 70
+ Burst: 2
+ BurstDelays: 4
+ Warhead@1Dam: SpreadDamage
+ Versus:
+ Heavy: 125
+ Light: 90
+
+120mm:
+ Inherits: ^Cannon
+ ReloadDelay: 90
+ Burst: 2
+ InvalidTargets: Air, Infantry
+ Warhead@1Dam: SpreadDamage
+ Damage: 60
+ Versus:
+ Heavy: 125
+ Light: 90
+ InvalidTargets: Air
+
+TurretGun:
+ Inherits: ^Cannon
+ ReloadDelay: 30
+ Range: 8c0
+ Report: turret1.aud
+ Warhead@1Dam: SpreadDamage
+ Damage: 60
+ Versus:
+ None: 20
+ Wood: 50
+
+^Artillery:
+ Inherits: ^Cannon
+ ReloadDelay: 85
+ Range: 13c0
+ Projectile: Bullet
+ Speed: 204
+ Blockable: false
+ LaunchAngle: 62
+ Inaccuracy: 1c938
+ Warhead@1Dam: SpreadDamage
+ Spread: 426
+ Damage: 230
+ Versus:
+ None: 80
+ Wood: 40
+ Light: 60
+ Heavy: 25
+ Concrete: 50
+ DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath
+ Warhead@3Eff: CreateEffect
+ Explosions: artillery_explosion
+ ImpactSounds: kaboom15.aud
+ Warhead@4EffWater: CreateEffect
+ Explosions: med_splash
+
+155mm:
+ Inherits: ^Artillery
+ MinRange: 4c0
+ Report: tank5.aud
+ TargetActorCenter: true
+ Projectile: Bullet
+ ContrailLength: 30
+
+8Inch:
+ Inherits: ^Artillery
+ MinRange: 3c0
+ ReloadDelay: 250
+ Range: 18c0
+ Burst: 2
+ Report: turret1.aud
+ TargetActorCenter: true
+ Projectile: Bullet
+ Inaccuracy: 2c512
+ ContrailLength: 30
+ Warhead@1Dam: SpreadDamage
+ Spread: 213
+ Damage: 25
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ Versus:
+ None: 60
+ Wood: 35
+ Light: 60
+ Heavy: 25
+ Concrete: 100
+ Warhead@4EffWater: CreateEffect
+ Explosions: large_splash
+
+2Inch:
+ Inherits: ^Cannon
+ ReloadDelay: 60
+ Range: 7c0
+ Report: cannon2.aud
+ InvalidTargets: Underwater
+ Projectile: Bullet
+ Speed: 426
+ Warhead@1Dam: SpreadDamage
+ Damage: 25
+ Versus:
+ None: 28
+ Wood: 72
+ Light: 72
+ Concrete: 48
+
+Grenade:
+ Inherits: ^Artillery
+ ReloadDelay: 60
+ Range: 5c0
+ Report: grenade1.aud
+ Projectile: Bullet
+ Speed: 136
+ Inaccuracy: 554
+ Image: BOMB
+ Warhead@1Dam: SpreadDamage
+ Spread: 256
+ Damage: 60
+ Versus:
+ None: 60
+ Wood: 100
+ Light: 25
+ Heavy: 25
+ Concrete: 100
+ Warhead@3Eff: CreateEffect
+ Explosions: med_explosion
+ ImpactSounds: kaboom25.aud
+ Warhead@4EffWater: CreateEffect
+ Explosions: small_splash
+
+DepthCharge:
+ Inherits: ^Artillery
+ -Report:
+ ReloadDelay: 60
+ Range: 6c0
+ ValidTargets: Underwater
+ Projectile: Bullet
+ Speed: 100
+ Image: BOMB
+ Inaccuracy: 128
+ Warhead@1Dam: SpreadDamage
+ Spread: 128
+ Damage: 80
+ ValidTargets: Submarine
+ Versus:
+ None: 30
+ Wood: 75
+ Light: 75
+ Heavy: 100
+ Concrete: 50
+ DamageTypes: ExplosionDeath
+ Warhead@4EffWater: CreateEffect
+ Explosions: large_splash
+ ImpactSounds: h2obomb2.aud
+ ValidTargets: Water, Underwater
+ Warhead@3Eff: CreateEffect
+ Explosions: small_explosion
+ ImpactSounds: kaboom15.aud
+ ValidTargets: Submarine
diff --git a/mods/ura/weapons/explosions.yaml b/mods/ura/weapons/explosions.yaml
new file mode 100644
index 0000000..41af25f
--- /dev/null
+++ b/mods/ura/weapons/explosions.yaml
@@ -0,0 +1,322 @@
+^Explosion:
+ ValidTargets: Ground, Water, Air
+ Warhead@1Dam: SpreadDamage
+ Spread: 426
+ Damage: 50
+ Versus:
+ None: 90
+ Wood: 75
+ Light: 60
+ Heavy: 25
+ Concrete: 100
+ DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath
+ Warhead@Smu: LeaveSmudge
+ SmudgeType: Crater
+ InvalidTargets: Structure, Wall, Trees
+ Warhead@2Eff: CreateEffect
+ Explosions: self_destruct
+ ImpactSounds: kaboom22.aud
+ ValidTargets: Ground, Air, Ship, Trees
+ Warhead@3EffWater: CreateEffect
+ Explosions: large_splash
+ ImpactSounds: splash9.aud
+ ValidTargets: Water, Underwater
+ InvalidTargets: Ship, Structure, Bridge
+
+CrateNapalm:
+ Inherits: ^Explosion
+ ValidTargets: Ground, Trees
+ Warhead@1Dam: SpreadDamage
+ Spread: 170
+ Damage: 60
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ ValidTargets: Ground, Trees
+ Versus:
+ Wood: 100
+ Concrete: 50
+ AffectsParent: true
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary
+ Warhead@2Eff: CreateEffect
+ Explosions: napalm
+ ImpactSounds: firebl3.aud
+ ValidTargets: Ground, Water, Air, Trees
+ -Warhead@3EffWater: CreateEffect
+ Warhead@Smu: LeaveSmudge
+ SmudgeType: Scorch
+
+CrateExplosion:
+ Inherits: ^Explosion
+ Warhead@1Dam: SpreadDamage
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ AffectsParent: true
+ Warhead@2Eff: CreateEffect
+ ValidTargets: Ground, Water, Air
+ -Warhead@3EffWater: CreateEffect
+
+UnitExplode:
+ Inherits: ^Explosion
+ Warhead@1Dam: SpreadDamage
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+
+UnitExplodePlane:
+ Inherits: UnitExplode
+ Warhead@2Eff: CreateEffect
+ Explosions: large_napalm
+
+UnitExplodeHeli:
+ Inherits: UnitExplode
+ Warhead@2Eff: CreateEffect
+ Explosions: napalm
+
+VisualExplode:
+ Inherits: ^Explosion
+ -Warhead@1Dam: SpreadDamage
+ Warhead@2Eff: CreateEffect
+ Explosions: offseted_napalm
+ ImpactSounds: firebl3.aud
+
+UnitExplodeShip:
+ Inherits: ^Explosion
+ -Warhead@Smu: LeaveSmudge
+ Warhead@2Eff: CreateEffect
+ Explosions: building
+ ImpactSounds: kaboom25.aud
+ ValidTargets: Ground, Water
+
+UnitExplodeSubmarine:
+ Inherits: ^Explosion
+ -Warhead@Smu: LeaveSmudge
+ Warhead@2Eff: CreateEffect
+ Explosions: large_splash
+ ImpactSounds: splash9.aud
+ ValidTargets: Ground, Water
+
+UnitExplodeSmall:
+ Inherits: ^Explosion
+ Warhead@1Dam: SpreadDamage
+ Damage: 40
+ Warhead@2Eff: CreateEffect
+ Explosions: large_explosion
+ ImpactSounds: kaboom15.aud
+
+ArtilleryExplode:
+ Inherits: ^Explosion
+ Warhead@1Dam: SpreadDamage
+ Damage: 150
+ Warhead@2Eff: CreateEffect
+ Explosions: self_destruct
+ ImpactSounds: kaboom22.aud
+
+V2Explode:
+ Inherits: SCUD
+ -Report:
+
+BuildingExplode:
+ Warhead@2Eff: CreateEffect
+ Explosions: building, building_napalm, large_explosion, self_destruct, large_napalm
+ Warhead@Smu: LeaveSmudge
+ SmudgeType: Crater
+ InvalidTargets: Wall, Trees
+
+SmallBuildingExplode:
+ Inherits: BuildingExplode
+ Warhead@2Eff: CreateEffect
+ Explosions: building, building_napalm, large_explosion, self_destruct
+
+CivPanicExplosion:
+ Warhead@1Dam: SpreadDamage # Used to panic civilians which are emitted from a killed CivBuilding
+ Falloff: 100, 100
+ Range: 0, 128
+ Damage: 1
+ Delay: 1
+
+BarrelExplode:
+ Inherits: ^Explosion
+ Warhead@1Dam: SpreadDamage
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ Delay: 5
+ ValidTargets: Ground, Trees
+ Versus:
+ None: 120
+ Wood: 100
+ Light: 50
+ Concrete: 10
+ DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath, Incendiary
+ Warhead@2Eff: CreateEffect
+ Explosions: napalm
+ ImpactSounds: firebl3.aud
+ Delay: 5
+ -Warhead@3EffWater: CreateEffect
+ Warhead@Smu: LeaveSmudge
+ SmudgeType: Scorch
+ Size: 2
+ Delay: 5
+
+ATMine:
+ Warhead@1Dam: SpreadDamage
+ Spread: 256
+ Damage: 400
+ AffectsParent: true
+ DamageTypes: Prone50Percent, TriggerProne, DefaultDeath
+ Warhead@2Eff: CreateEffect
+ Explosions: large_explosion
+ ImpactSounds: mineblo1.aud
+ Warhead@Smu: LeaveSmudge
+ SmudgeType: Crater
+ InvalidTargets: Structure, Wall, Trees
+
+APMine:
+ Inherits: ATMine
+ Warhead@1Dam: SpreadDamage
+ DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath
+ Warhead@2Eff: CreateEffect
+ Explosions: napalm
+ ImpactSounds: mine1.aud
+ Warhead@Smu: LeaveSmudge
+ SmudgeType: Scorch
+
+OreExplosion:
+ Warhead@1Dam: SpreadDamage
+ Spread: 9
+ Damage: 10
+ Versus:
+ None: 90
+ Wood: 75
+ Light: 60
+ Heavy: 25
+ DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath
+ Warhead@3Res: CreateResource
+ AddsResourceType: Ore
+ Size: 1,1
+ Warhead@2Eff: CreateEffect
+ Explosions: med_explosion
+ ImpactSounds: kaboom25.aud
+
+CrateNuke:
+ ValidTargets: Ground, Trees, Water, Air
+ Warhead@1Dam_impact: SpreadDamage
+ Spread: 1c0
+ Damage: 100
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ ValidTargets: Ground, Trees, Water, Air
+ Versus:
+ Concrete: 25
+ AffectsParent: true
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary
+ Warhead@2Res_impact: DestroyResource
+ Warhead@3Eff_impact: CreateEffect
+ Explosions: nuke
+ ImpactSounds: kaboom1.aud
+ VictimScanRadius: 0
+ Warhead@4Dam_areanuke1: SpreadDamage
+ Spread: 1c0
+ Damage: 60
+ Falloff: 1000, 600, 400, 250, 150, 100, 0
+ Delay: 5
+ ValidTargets: Ground, Water, Air
+ Versus:
+ Concrete: 25
+ AffectsParent: true
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary
+ Warhead@5Res_areanuke1: DestroyResource
+ Size: 4
+ Delay: 5
+ Warhead@6Eff_areanuke1: CreateEffect
+ ImpactSounds: kaboom22.aud
+ Delay: 5
+ VictimScanRadius: 0
+ Warhead@6Smu_areanuke1: LeaveSmudge
+ SmudgeType: Scorch
+ InvalidTargets: Vehicle, Structure, Wall, Trees
+ Size: 4
+ Delay: 5
+ Warhead@TREEKILL: SpreadDamage
+ Spread: 1c0
+ Damage: 120
+ Falloff: 1000, 600, 400, 250, 150, 100, 0
+ Delay: 5
+ ValidTargets: Trees
+ DamageTypes: Incendiary
+
+MiniNuke:
+ ValidTargets: Ground, Trees, Water, Underwater, Air
+ Warhead@1Dam_impact: SpreadDamage
+ Spread: 1c0
+ Damage: 150
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ ValidTargets: Ground, Trees, Water, Air
+ Versus:
+ Wood: 25
+ Concrete: 25
+ AffectsParent: true
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary
+ Warhead@2Res_impact: DestroyResource
+ Size: 1
+ Warhead@3Eff_impact: CreateEffect
+ Explosions: nuke
+ ImpactSounds: kaboom1.aud
+ VictimScanRadius: 0
+ Warhead@4Dam_areanuke1: SpreadDamage
+ Spread: 2c0
+ Damage: 60
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ Delay: 5
+ ValidTargets: Ground, Trees, Water, Underwater, Air
+ Versus:
+ Wood: 50
+ Concrete: 25
+ AffectsParent: true
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary
+ Warhead@5Res_areanuke1: DestroyResource
+ Size: 2
+ Delay: 5
+ Warhead@6Eff_areanuke1: CreateEffect
+ ImpactSounds: kaboom22.aud
+ Delay: 5
+ VictimScanRadius: 0
+ Warhead@7Dam_areanuke2: SpreadDamage
+ Spread: 3c0
+ Damage: 60
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ Delay: 10
+ ValidTargets: Ground, Water, Underwater, Air
+ Versus:
+ Wood: 50
+ Concrete: 25
+ AffectsParent: true
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary
+ Warhead@8Dam_areanuke2: SpreadDamage
+ Spread: 3c0
+ Damage: 120
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ Delay: 10
+ ValidTargets: Trees
+ DamageTypes: Incendiary
+ Warhead@9Res_areanuke2: DestroyResource
+ Size: 3
+ Delay: 10
+ Warhead@10Dam_areanuke3: SpreadDamage
+ Spread: 4c0
+ Damage: 60
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ Delay: 15
+ ValidTargets: Ground, Water, Underwater
+ Versus:
+ Concrete: 25
+ AffectsParent: true
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary
+ Warhead@11Dam_areanuke3: SpreadDamage
+ Spread: 4c0
+ Damage: 180
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ Delay: 15
+ ValidTargets: Trees
+ DamageTypes: Incendiary
+ Warhead@12Res_areanuke3: DestroyResource
+ Size: 4
+ Delay: 15
+ Warhead@13Smu_areanuke3: LeaveSmudge
+ SmudgeType: Scorch
+ InvalidTargets: Vehicle, Structure, Wall, Trees
+ Size: 4
+ Delay: 15
diff --git a/mods/ura/weapons/missiles.yaml b/mods/ura/weapons/missiles.yaml
new file mode 100644
index 0000000..3c1d26b
--- /dev/null
+++ b/mods/ura/weapons/missiles.yaml
@@ -0,0 +1,388 @@
+^AntiGroundMissile:
+ ReloadDelay: 50
+ Range: 6c0
+ MinRange: 0c512
+ Report: missile6.aud
+ Projectile: Missile
+ Speed: 213
+ Arm: 2
+ Blockable: false
+ ContrailLength: 10
+ Inaccuracy: 128
+ Image: DRAGON
+ Shadow: True
+ HorizontalRateOfTurn: 5
+ RangeLimit: 6c0
+ Warhead@1Dam: SpreadDamage
+ Spread: 128
+ Damage: 50
+ ValidTargets: Ground, Water, Air
+ Versus:
+ None: 10
+ Wood: 75
+ Light: 35
+ Heavy: 100
+ Concrete: 50
+ DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath
+ Warhead@2Smu: LeaveSmudge
+ SmudgeType: Crater
+ InvalidTargets: Vehicle, Structure, Wall, Husk, Trees
+ Warhead@3Eff: CreateEffect
+ Explosions: med_explosion
+ ImpactSounds: kaboom25.aud
+ ValidTargets: Ground, Air, Ship, Trees
+ Warhead@4EffWater: CreateEffect
+ Explosions: med_splash
+ ImpactSounds: splash9.aud
+ ValidTargets: Water, Underwater
+ InvalidTargets: Ship, Structure, Bridge
+
+^AntiAirMissile:
+ Inherits: ^AntiGroundMissile
+ ValidTargets: Air
+ Warhead@3Eff: CreateEffect
+ VictimScanRadius: 0
+
+Maverick:
+ Inherits: ^AntiGroundMissile
+ ReloadDelay: 30
+ Range: 11c0
+ MinRange: 4c0
+ Report: missile7.aud
+ Burst: 2
+ BurstDelays: 7
+ Projectile: Missile
+ Speed: 256
+ Inaccuracy: 512
+ CruiseAltitude: 2c0
+ RangeLimit: 14c410
+ Warhead@1Dam: SpreadDamage
+ Damage: 140
+ Versus:
+ None: 30
+ Wood: 90
+ Light: 90
+ Concrete: 100
+
+Dragon:
+ Inherits: ^AntiGroundMissile
+ Projectile: Missile
+ TrailImage: smokey
+
+HellfireAG:
+ Inherits: ^AntiGroundMissile
+ ReloadDelay: 60
+ MinRange: 1c256
+ Burst: 4
+ BurstDelays: 14
+ Projectile: Missile
+ Speed: 256
+ HorizontalRateOfTurn: 10
+ RangeLimit: 8c512
+ Warhead@1Dam: SpreadDamage
+ Damage: 60
+ Versus:
+ None: 30
+ Wood: 90
+ Light: 90
+ Concrete: 100
+
+HellfireAA:
+ Inherits: ^AntiAirMissile
+ ReloadDelay: 60
+ MinRange: 1c256
+ Burst: 2
+ BurstDelays: 10
+ Projectile: Missile
+ Speed: 384
+ Inaccuracy: 128
+ HorizontalRateOfTurn: 10
+ RangeLimit: 7c0
+ Warhead@1Dam: SpreadDamage
+ Damage: 40
+ ValidTargets: Air
+ Versus:
+ Wood: 75
+ Light: 75
+ Warhead@3Eff: CreateEffect
+ Explosions: med_explosion_air
+
+MammothTusk:
+ Inherits: ^AntiGroundMissile
+ ReloadDelay: 60
+ Range: 9c0
+ Burst: 2
+ ValidTargets: Air, Infantry
+ Projectile: Missile
+ Speed: 341
+ HorizontalRateOfTurn: 15
+ RangeLimit: 9c614
+ Warhead@1Dam: SpreadDamage
+ Spread: 256
+ Damage: 50
+ ValidTargets: Air, Infantry
+ Versus:
+ None: 100
+ Light: 60
+ Heavy: 25
+ Concrete: 50
+ DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath
+ Warhead@3Eff: CreateEffect
+ ImpactSounds: kaboom12.aud
+ ValidTargets: Ground, Trees
+ Warhead@5EffAir: CreateEffect
+ Explosions: med_explosion_air
+ ImpactSounds: kaboom25.aud
+ ValidTargets: Air
+
+#Modified version of MammothTuskAT by FiveAces
+MammothTuskAT:
+ ReloadDelay: 60
+ Range: 6c0
+ Report: missile6.aud
+ Burst: 2
+ ValidTargets: Tank, Vehicle, Husk
+ Projectile: Missile
+ Speed: 341
+ Arm: 2
+ Blockable: false
+ ContrailLength: 10
+ Inaccuracy: 128
+ Image: DRAGON
+ HorizontalRateOfTurn: 15
+ RangeLimit: 7c256
+ Warhead@1Dam: SpreadDamage
+ Spread: 256
+ Damage: 25
+ ValidTargets: Tank, Vehicle, Husk
+ Versus:
+ Light: 80
+ DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath
+ Warhead@2Smu: LeaveSmudge
+ SmudgeType: Crater
+ InvalidTargets: Vehicle, Tank, Structure, Wall, Husk, Trees
+ Warhead@3EffGround: CreateEffect
+ Explosions: med_explosion
+ ImpactSounds: kaboom12.aud
+ InvalidTargets: Air
+ Warhead@4EffWater: CreateEffect
+ Explosions: small_splash
+ ImpactSounds: splash9.aud
+ ValidTargets: Water
+ Warhead@5EffAir: CreateEffect
+ Explosions: med_explosion_air
+ ImpactSounds: kaboom25.aud
+ ValidTargets: Air
+
+Nike:
+ Inherits: ^AntiAirMissile
+ ReloadDelay: 15
+ Range: 9c0
+ Report: missile1.aud
+ Projectile: Missile
+ Arm: 3
+ Inaccuracy: 0
+ Image: MISSILE
+ HorizontalRateOfTurn: 25
+ RangeLimit: 9c0
+ Speed: 341
+ Warhead@1Dam: SpreadDamage
+ Damage: 50
+ ValidTargets: Air
+ Versus:
+ None: 90
+ Light: 90
+ Heavy: 50
+ Warhead@3Eff: CreateEffect
+ Explosions: med_explosion_air
+ ImpactSounds: kaboom25.aud
+
+RedEye:
+ Inherits: Nike
+ ReloadDelay: 50
+ Projectile: Missile
+ Inaccuracy: 0
+ HorizontalRateOfTurn: 20
+ Speed: 298
+ Warhead@1Dam: SpreadDamage
+ Damage: 40
+ ValidTargets: Air
+ Versus:
+ Wood: 75
+ Light: 60
+ Heavy: 25
+
+Stinger:
+ Inherits: ^AntiGroundMissile
+ ReloadDelay: 60
+ Range: 9c0
+ Burst: 2
+ BurstDelays: 0
+ InvalidTargets: Underwater
+ Projectile: Missile
+ Arm: 3
+ Inaccuracy: 0
+ HorizontalRateOfTurn: 20
+ RangeLimit: 11c0
+ Speed: 170
+ CloseEnough: 149
+ Warhead@1Dam: SpreadDamage
+ Damage: 30
+ Versus:
+ None: 30
+ Light: 75
+ Concrete: 50
+
+StingerAA:
+ Inherits: Stinger
+ ValidTargets: Air
+ Projectile: Missile
+ Speed: 255
+ CloseEnough: 298
+ Warhead@3Eff: CreateEffect
+ Explosions: med_explosion_air
+ ImpactSounds: kaboom25.aud
+
+APTusk:
+ Inherits: ^AntiGroundMissile
+ ReloadDelay: 60
+ Range: 7c0
+ Projectile: Missile
+ Spread: 256
+ Speed: 298
+ TrailImage: smokey
+ HorizontalRateOfTurn: 10
+ RangeLimit: 9c0
+ Warhead@1Dam: SpreadDamage
+ Damage: 30
+ Versus:
+ None: 50
+ Light: 75
+ Heavy: 110
+ Concrete: 50
+
+TorpTube:
+ ReloadDelay: 100
+ Range: 11c0
+ Report: torpedo1.aud
+ ValidTargets: Water, Underwater, Bridge
+ Burst: 2
+ BurstDelays: 20
+ Projectile: Missile
+ Image: torpedo
+ Arm: 3
+ Speed: 85
+ TrailImage: bubbles
+ HorizontalRateOfTurn: 1
+ RangeLimit: 11c0
+ BoundToTerrainType: Water
+ Palette: shadow
+ MaximumLaunchAngle: 0
+ CruiseAltitude: 0
+ Warhead@1Dam: SpreadDamage
+ Spread: 426
+ Damage: 180
+ ValidTargets: Water, Underwater, Bridge
+ Versus:
+ None: 30
+ Wood: 75
+ Light: 75
+ Heavy: 100
+ Concrete: 500
+ DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath
+ Warhead@3Eff: CreateEffect
+ Explosions: artillery_explosion
+ ImpactSounds: kaboom15.aud
+ ValidTargets: Ship, Structure, Underwater, Ground, Bridge
+ Warhead@4EffWater: CreateEffect
+ Explosions: large_splash
+ ImpactSounds: splash9.aud
+ ValidTargets: Water
+ InvalidTargets: Ship, Structure, Underwater, Bridge
+
+^SubMissileDefault:
+ Inherits: ^AntiGroundMissile
+ ReloadDelay: 300
+ Range: 10c0
+ Burst: 2
+ Projectile: Missile
+ Speed: 234
+ Inaccuracy: 0c614
+ HorizontalRateOfTurn: 15
+ RangeLimit: 9c0
+ LaunchAngle: 120
+ Image: MISSILE
+ TrailImage: smokey
+ ContrailLength: 30
+ Warhead@1Dam: SpreadDamage
+ Spread: 426
+ Damage: 25
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ Versus:
+ None: 40
+ Wood: 40
+ Light: 35
+ Heavy: 30
+ Concrete: 100
+ DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath
+ Warhead@3Eff: CreateEffect
+ Explosions: artillery_explosion
+ ImpactSounds: kaboom15.aud
+ Warhead@4EffWater: CreateEffect
+ Explosions: large_splash
+ ImpactSounds: splash9.aud
+
+SubMissile:
+ Inherits: ^SubMissileDefault
+ Range: 16c0
+ TargetActorCenter: true
+ -Projectile:
+ Projectile: Bullet
+ Speed: 162
+ Blockable: false
+ LaunchAngle: 120
+ Inaccuracy: 1c512
+ Image: MISSILE
+ Shadow: True
+ TrailImage: smokey
+ ContrailLength: 30
+
+SubMissileAA:
+ Inherits: ^SubMissileDefault
+ ValidTargets: Air
+ Warhead@1Dam: SpreadDamage
+ Damage: 15
+
+SCUD:
+ Inherits: ^AntiGroundMissile
+ ReloadDelay: 0
+ Range: 12c0
+ MinRange: 4c0
+ Report: missile1.aud
+ -Projectile:
+ Projectile: Bullet
+ Speed: 220
+ Blockable: false
+ TrailImage: smokey
+ TrailDelay: 5
+ Inaccuracy: 213
+ Image: V2
+ Shadow: True
+ LaunchAngle: 62
+ Warhead@1Dam: SpreadDamage
+ Spread: 341
+ Damage: 45
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ ValidTargets: Ground, Water, Trees
+ Versus:
+ None: 90
+ Wood: 75
+ Light: 70
+ Heavy: 40
+ Concrete: 100
+ DamageTypes: Prone50Percent, TriggerProne, SmallExplosionDeath, Incendiary
+ Warhead@3Eff: CreateEffect
+ Explosions: napalm
+ ImpactSounds: firebl3.aud
+ Warhead@4EffWater: CreateEffect
+ Explosions: large_splash
diff --git a/mods/ura/weapons/other.yaml b/mods/ura/weapons/other.yaml
new file mode 100644
index 0000000..a02245f
--- /dev/null
+++ b/mods/ura/weapons/other.yaml
@@ -0,0 +1,251 @@
+^FireWeapon:
+ ValidTargets: Ground, Water, Trees
+ ReloadDelay: 65
+ Range: 6c0
+ Warhead@1Dam: SpreadDamage
+ Spread: 213
+ Damage: 150
+ ValidTargets: Ground, Water, Trees
+ Versus:
+ None: 90
+ Wood: 50
+ Light: 60
+ Heavy: 25
+ Concrete: 20
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary
+ Warhead@2Smu: LeaveSmudge
+ SmudgeType: Scorch
+ InvalidTargets: Structure, Wall
+ Warhead@3Eff: CreateEffect
+ Explosions: napalm
+ ImpactSounds: firebl3.aud
+ VictimScanRadius: 0
+
+FireballLauncher:
+ Inherits: ^FireWeapon
+ Burst: 2
+ BurstDelays: 20
+ Projectile: Bullet
+ Speed: 250
+ TrailImage: fb2
+ Image: FB1
+ Warhead@1Dam: SpreadDamage
+ Versus:
+ Light: 50
+
+Flamer:
+ Inherits: ^FireWeapon
+ ReloadDelay: 50
+ Burst: 15
+ BurstDelays: 1
+ Projectile: Bullet
+ Speed: 190
+ TrailImage: fb4
+ Image: fb3
+ LaunchAngle: 62
+ Inaccuracy: 853
+ Warhead@1Dam: SpreadDamage
+ Spread: 341
+ Damage: 8
+ Versus:
+ Wood: 100
+ Warhead@3Eff: CreateEffect
+ Explosions: small_napalm
+
+Napalm:
+ Inherits: ^FireWeapon
+ ReloadDelay: 20
+ Range: 4c512
+ Projectile: Bullet
+ Image: BOMBLET
+ Speed: 85
+ Blockable: false
+ Warhead@1Dam: SpreadDamage
+ Spread: 170
+ Damage: 100
+ Versus:
+ Wood: 100
+ Concrete: 50
+
+#Modified version of KVFlame by FiveAces
+KVFlame:
+ ValidTargets: Infantry, Vehicle, Tank, Structure, Wall, Ground
+ InvalidTargets: Water
+ ReloadDelay: 90
+ Range: 6c0
+ Burst: 25
+ BurstDelays: 1
+ Projectile: Bullet
+ Speed: 200
+ TrailImage: fb4
+ Image: fb3
+ LaunchAngle: 31
+ Inaccuracy: 853
+ Warhead@1Dam: SpreadDamage
+ Spread: 841
+ Damage: 8
+ ValidTargets: Ground, Water, Trees
+ Versus:
+ None: 100
+ Wood: 100
+ Light: 30
+ Heavy: 20
+ Concrete: 50
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath
+ Warhead@2Smu: LeaveSmudge
+ SmudgeType: Scorch
+ Warhead@3Eff: CreateEffect
+ Explosions: small_napalm
+ ImpactSounds: firebl3.aud
+
+^TeslaWeapon:
+ ReloadDelay: 3
+ Range: 9c0
+ Report: tesla1.aud
+ Projectile: TeslaZap
+ Warhead@1Dam: SpreadDamage
+ Spread: 42
+ Damage: 100
+ Versus:
+ None: 1000
+ DamageTypes: Prone50Percent, TriggerProne, ElectricityDeath
+
+TeslaZap:
+ Inherits: ^TeslaWeapon
+ Warhead@1Dam: SpreadDamage
+ Versus:
+ Wood: 60
+
+PortaTesla:
+ Inherits: ^TeslaWeapon
+ ReloadDelay: 70
+ Range: 7c0
+ Warhead@1Dam: SpreadDamage
+ Damage: 45
+ Versus:
+ Wood: 75
+ Heavy: 60
+
+TTankZap:
+ Inherits: ^TeslaWeapon
+ ReloadDelay: 120
+ Range: 9c0
+ Warhead@1Dam: SpreadDamage
+ Damage: 85
+
+DogJaw:
+ ValidTargets: Infantry
+ ReloadDelay: 10
+ Range: 3c0
+ Report: dogg5p.aud
+ Warhead@1Dam: SpreadDamage
+ Spread: 213
+ Damage: 100
+ ValidTargets: Infantry
+ InvalidTargets: Ant
+ DamageTypes: DefaultDeath
+
+Heal:
+ ReloadDelay: 80
+ Range: 4c0
+ Report: heal2.aud
+ ValidTargets: Infantry
+ Projectile: Bullet
+ Speed: 1c682
+ Warhead@1Dam: SpreadDamage
+ Spread: 213
+ Damage: -50
+ ValidStances: Ally
+ ValidTargets: Infantry
+ DebugOverlayColor: 00FF00
+
+Repair:
+ Inherits: Heal
+ Report: fixit1.aud
+ ValidTargets: Repair
+ Warhead@1Dam: SpreadDamage
+ Damage: -20
+ ValidTargets: Repair
+
+Hover:
+ ReloadDelay: 100
+ Range: 0c0
+ ValidTargets: Ground, Water
+ Projectile: Bullet
+ Speed: 1c0
+ Warhead@1Dam: SpreadDamage
+ Damage: 0
+ ValidTargets: Ground, Water
+
+Crush:
+ Warhead@1Dam: SpreadDamage
+ Damage: 100
+ DamageTypes: Prone50Percent, TriggerProne, DefaultDeath
+ Warhead@2Eff: CreateEffect
+ ImpactSounds: squishy2.aud
+
+Demolish:
+ Warhead@1Dam: SpreadDamage
+ DamageTypes: DefaultDeath
+ Warhead@2Eff: CreateEffect
+ Explosions: building
+ ImpactSounds: kaboom25.aud
+
+Claw:
+ ReloadDelay: 30
+ Range: 1c512
+ Projectile: Bullet
+ Speed: 1c682
+ Warhead@1Dam: SpreadDamage
+ Spread: 213
+ Damage: 33
+ Versus:
+ None: 90
+ Wood: 10
+ Light: 30
+ Heavy: 10
+ Concrete: 10
+ DamageTypes: Prone50Percent, TriggerProne, DefaultDeath
+
+Mandible:
+ Inherits: Claw
+ ReloadDelay: 10
+ Warhead@1Dam: SpreadDamage
+ Damage: 60
+ Versus:
+ None: 90
+
+MADTankThump:
+ InvalidTargets: MADTank
+ Warhead@1Dam: HealthPercentageDamage
+ Spread: 20c0
+ Damage: 1
+ Versus:
+ None: 200
+ Wood: 80
+ Light: 60
+ Heavy: 40
+ InvalidTargets: MADTank
+ DamageTypes: Prone50Percent, TriggerProne, DefaultDeath
+ Warhead@2Dam: HealthPercentageDamage
+ Spread: 12c0
+ Damage: 1
+ Versus:
+ None: 200
+ Wood: 55
+ Light: 45
+ Heavy: 30
+ InvalidTargets: MADTank
+ DamageTypes: Prone50Percent, TriggerProne, DefaultDeath
+
+MADTankDetonate:
+ InvalidTargets: MADTank, Infantry
+ Warhead@1Dam: HealthPercentageDamage
+ Spread: 7c256
+ Damage: 5
+ Versus:
+ Concrete: 1000
+ InvalidTargets: MADTank, Infantry
+ DamageTypes: Prone50Percent, TriggerProne, DefaultDeath
+ Warhead@2Smu: LeaveSmudge
+ Size: 10,9
diff --git a/mods/ura/weapons/smallcaliber.yaml b/mods/ura/weapons/smallcaliber.yaml
new file mode 100644
index 0000000..8ee39c8
--- /dev/null
+++ b/mods/ura/weapons/smallcaliber.yaml
@@ -0,0 +1,305 @@
+^AACannon:
+ ReloadDelay: 10
+ Range: 9c0
+ Report: aacanon3.aud
+ ValidTargets: Air
+ Projectile: Bullet
+ Speed: 1c682
+ Blockable: false
+ Warhead@1Dam: SpreadDamage
+ Spread: 213
+ Damage: 20
+ ValidTargets: Air
+ Versus:
+ None: 40
+ Wood: 10
+ Light: 60
+ Heavy: 10
+ Concrete: 20
+ DamageTypes: Prone50Percent, TriggerProne, DefaultDeath
+ Warhead@2Eff: CreateEffect
+ Explosions: small_explosion_air
+ ValidTargets: Air, Ground, Water, Trees
+
+ZSU-23:
+ Inherits: ^AACannon
+ Burst: 2
+ BurstDelays: 0
+ ReloadDelay: 5
+ Range: 11c0
+ Projectile: Bullet
+ Speed: 3c340
+ Warhead@1Dam: SpreadDamage
+ Damage: 12
+ Versus:
+ None: 30
+ Wood: 75
+ Light: 75
+ Heavy: 100
+ Concrete: 50
+
+FLAK-23-AA:
+ Inherits: ^AACannon
+ Warhead@1Dam: SpreadDamage
+ ValidTargets: Air, Ground, Water
+
+FLAK-23-AG:
+ Inherits: ^AACannon
+ Range: 7c0
+ ValidTargets: Ground, Water
+ Warhead@1Dam: SpreadDamage
+ ValidTargets: Air, Ground, Water
+ Warhead@2Eff: CreateEffect
+ Explosions: flak_explosion_ground
+ ValidTargets: Ground, Ship, Air, Trees
+ Warhead@3EffWater: CreateEffect
+ Explosions: small_splash
+ ValidTargets: Water, Underwater
+ InvalidTargets: Ship, Structure, Bridge
+
+^HeavyMG:
+ ReloadDelay: 30
+ Range: 7c0
+ Report: gun13.aud
+ Projectile: Bullet
+ Speed: 1c682
+ Warhead@1Dam: SpreadDamage
+ Spread: 128
+ Damage: 30
+ Versus:
+ None: 100
+ Wood: 50
+ Light: 60
+ Heavy: 25
+ Concrete: 25
+ DamageTypes: Prone50Percent, TriggerProne, BulletDeath
+ Warhead@2Eff: CreateEffect
+ Explosions: piffs
+ ValidTargets: Ground, Ship, Air, Trees
+ Warhead@3EffWater: CreateEffect
+ Explosions: water_piffs
+ ValidTargets: Water, Underwater
+ InvalidTargets: Ship, Structure, Bridge
+
+^LightMG:
+ Inherits: ^HeavyMG
+ Warhead@1Dam: SpreadDamage
+ Damage: 15
+ Versus:
+ None: 150
+ Wood: 10
+ Light: 30
+ Heavy: 10
+ Concrete: 10
+
+Vulcan:
+ Inherits: ^HeavyMG
+ Warhead@1Dam: SpreadDamage
+ Damage: 10
+ Versus:
+ None: 200
+ Wood: 50
+ Light: 50
+ Heavy: 20
+ Concrete: 20
+ Warhead@4Dam_2: SpreadDamage
+ Spread: 128
+ Damage: 10
+ Delay: 2
+ Versus:
+ None: 200
+ Wood: 50
+ Light: 50
+ Heavy: 25
+ Concrete: 25
+ DamageTypes: Prone50Percent, TriggerProne, BulletDeath
+ Warhead@4Eff_2: CreateEffect
+ Explosions: piffs
+ ValidTargets: Ground, Ship, Trees
+ Delay: 2
+ Warhead@4Eff_2Water: CreateEffect
+ Explosions: water_piffs
+ ValidTargets: Water, Underwater
+ InvalidTargets: Ship, Structure, Bridge
+ Delay: 2
+ Warhead@5Dam_3: SpreadDamage
+ Spread: 128
+ Damage: 10
+ Delay: 4
+ Versus:
+ None: 200
+ Wood: 50
+ Light: 50
+ Heavy: 25
+ Concrete: 25
+ DamageTypes: Prone50Percent, TriggerProne, BulletDeath
+ Warhead@6Eff_3: CreateEffect
+ Explosions: piffs
+ ValidTargets: Ground, Ship, Trees
+ Delay: 4
+ Warhead@6Eff_3Water: CreateEffect
+ Explosions: water_piffs
+ ValidTargets: Water, Underwater
+ InvalidTargets: Ship, Structure, Bridge
+ Delay: 4
+ Warhead@7Dam_4: SpreadDamage
+ Spread: 128
+ Damage: 10
+ Delay: 6
+ Versus:
+ None: 200
+ Wood: 50
+ Light: 50
+ Heavy: 25
+ Concrete: 25
+ DamageTypes: Prone50Percent, TriggerProne, BulletDeath
+ Warhead@8Eff_4: CreateEffect
+ Explosions: piffs
+ ValidTargets: Ground, Ship, Trees
+ Delay: 6
+ Warhead@8Eff_4Water: CreateEffect
+ Explosions: water_piffs
+ ValidTargets: Water, Underwater
+ InvalidTargets: Ship, Structure, Bridge
+ Delay: 6
+ Warhead@9Dam_5: SpreadDamage
+ Spread: 128
+ Damage: 10
+ Delay: 8
+ Versus:
+ None: 200
+ Wood: 50
+ Light: 50
+ Heavy: 25
+ Concrete: 25
+ DamageTypes: Prone50Percent, TriggerProne, BulletDeath
+ Warhead@10Eff_5: CreateEffect
+ Explosions: piffs
+ ValidTargets: Ground, Ship, Trees
+ Delay: 8
+ Warhead@10Eff_5Water: CreateEffect
+ Explosions: water_piffs
+ ValidTargets: Water, Underwater
+ InvalidTargets: Ship, Structure, Bridge
+ Delay: 8
+ Warhead@11Dam_6: SpreadDamage
+ Spread: 128
+ Damage: 10
+ Delay: 10
+ Versus:
+ None: 200
+ Wood: 50
+ Light: 50
+ Heavy: 25
+ Concrete: 25
+ DamageTypes: Prone50Percent, TriggerProne, BulletDeath
+ Warhead@12Eff_6: CreateEffect
+ Explosions: piffs
+ ValidTargets: Ground, Ship, Trees
+ Delay: 10
+ Warhead@12Eff_6Water: CreateEffect
+ Explosions: water_piffs
+ ValidTargets: Water, Underwater
+ InvalidTargets: Ship, Structure, Bridge
+ Delay: 10
+
+ChainGun:
+ Inherits: ^HeavyMG
+ ReloadDelay: 10
+ Range: 7c0
+ MinRange: 0c768
+ Projectile: Bullet
+ Blockable: false
+ Warhead@1Dam: SpreadDamage
+ Versus:
+ None: 120
+
+ChainGun.Yak:
+ Inherits: ^HeavyMG
+ ReloadDelay: 3
+ Range: 7c0
+ MinRange: 4c0
+ Projectile: Bullet
+ Blockable: false
+ Warhead@1Dam: SpreadDamage
+ Damage: 40
+
+Pistol:
+ Inherits: ^LightMG
+ ReloadDelay: 7
+ Range: 4c0
+ Report: gun27.aud
+ Warhead@1Dam: SpreadDamage
+ Damage: 1
+ Warhead@2Eff: CreateEffect
+ Explosions: piff
+ Warhead@3EffWater: CreateEffect
+ Explosions: water_piff
+
+M1Carbine:
+ Inherits: ^LightMG
+ ReloadDelay: 20
+ Range: 6c0
+ Report: gun11.aud
+ Warhead@1Dam: SpreadDamage
+ Versus:
+ Wood: 25
+
+M60mg:
+ Inherits: ^LightMG
+ ReloadDelay: 30
+ Range: 5c0
+ Report: pillbox1.aud
+ Burst: 5
+
+^SnipeWeapon:
+ ReloadDelay: 80
+ Range: 5c0
+ Report: gun5.aud
+ ValidTargets: Ground, Water, Infantry
+ InvalidTargets: Vehicle, Tank, Ship, Structure, Wall, Husk
+ Projectile: Bullet
+ Speed: 1c682
+ Warhead@1Dam: SpreadDamage
+ Spread: 42
+ Damage: 150
+ ValidTargets: Barrel, Infantry
+ DamageTypes: Prone50Percent, TriggerProne, BulletDeath
+
+SilencedPPK:
+ Inherits: ^SnipeWeapon
+ Report: silppk.aud
+ Warhead@1Dam: SpreadDamage
+ Spread: 128
+ Warhead@2Eff: CreateEffect
+ Explosions: piffs
+ ValidTargets: Ground, Ship, Air, Trees
+ Warhead@3EffWater: CreateEffect
+ Explosions: water_piffs
+ ValidTargets: Water, Underwater
+ InvalidTargets: Ship, Structure, Bridge
+
+Colt45:
+ Inherits: ^SnipeWeapon
+ ReloadDelay: 5
+ Range: 8c0
+ Warhead@1Dam: SpreadDamage
+ Damage: 50
+ Warhead@2Eff: CreateEffect
+ Explosions: piff
+ ValidTargets: Ground, Ship, Air, Trees
+ Warhead@3EffWater: CreateEffect
+ Explosions: water_piff
+ ValidTargets: Water, Underwater
+ InvalidTargets: Ship, Structure, Bridge
+
+Sniper:
+ Inherits: ^SnipeWeapon
+ ReloadDelay: 70
+ Range: 10c0
+ Warhead@1Dam: SpreadDamage
+ Damage: 140
+
+SniperIFV:
+ Inherits: Sniper
+ Range: 8c0
diff --git a/mods/ura/weapons/superweapons.yaml b/mods/ura/weapons/superweapons.yaml
new file mode 100644
index 0000000..f407955
--- /dev/null
+++ b/mods/ura/weapons/superweapons.yaml
@@ -0,0 +1,149 @@
+ParaBomb:
+ ReloadDelay: 10
+ Range: 3c0
+ Report: chute1.aud
+ Projectile: GravityBomb
+ Image: PARABOMB
+ OpenSequence: open
+ Velocity: 0, 0, -86
+ Acceleration: 0, 0, 0
+ Shadow: False
+ Warhead@1Dam: SpreadDamage
+ Spread: 768
+ Damage: 300
+ Versus:
+ None: 30
+ Wood: 30
+ Light: 75
+ Concrete: 25
+ DamageTypes: Prone50Percent, TriggerProne, ExplosionDeath
+ Warhead@2Smu: LeaveSmudge
+ SmudgeType: Crater
+ InvalidTargets: Vehicle, Structure, Wall, Husk, Trees
+ Warhead@3Eff: CreateEffect
+ Explosions: artillery_explosion
+ ImpactSounds: kaboom15.aud
+ ValidTargets: Ground, Ship, Trees
+ Warhead@4EffWater: CreateEffect
+ Explosions: small_splash
+ ImpactSounds: splash9.aud
+ ValidTargets: Water, Underwater
+ InvalidTargets: Ship, Structure
+
+Atomic:
+ ValidTargets: Ground, Trees, Water, Underwater, Air
+ Warhead@1Dam_impact: SpreadDamage
+ Spread: 1c0
+ Damage: 150
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ ValidTargets: Ground, Trees, Water, Underwater, Air
+ Versus:
+ Wood: 25
+ Concrete: 25
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary
+ Warhead@2Res_impact: DestroyResource
+ Size: 1
+ Warhead@3Smu_impact: LeaveSmudge
+ SmudgeType: Scorch
+ InvalidTargets: Vehicle, Structure, Wall
+ Size: 1
+ Warhead@4Eff_impact: CreateEffect
+ Explosions: nuke
+ ImpactSounds: kaboom1.aud
+ VictimScanRadius: 0
+ ValidTargets: Ground, Water, Air
+ Warhead@5Dam_areanuke1: SpreadDamage
+ Spread: 2c0
+ Damage: 60
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ Delay: 5
+ ValidTargets: Ground, Trees, Water, Underwater, Air
+ Versus:
+ Wood: 25
+ Concrete: 25
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary
+ Warhead@6Res_areanuke1: DestroyResource
+ Size: 2
+ Delay: 5
+ Warhead@7Smu_areanuke1: LeaveSmudge
+ SmudgeType: Scorch
+ InvalidTargets: Vehicle, Structure, Wall, Husk, Trees
+ Size: 2
+ Delay: 5
+ Warhead@8Eff_areanuke1: CreateEffect
+ ImpactSounds: kaboom22.aud
+ Delay: 5
+ VictimScanRadius: 0
+ Warhead@9Dam_areanuke2: SpreadDamage
+ Spread: 3c0
+ Damage: 60
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ Delay: 10
+ ValidTargets: Ground, Water, Underwater, Air
+ Versus:
+ Wood: 50
+ Concrete: 25
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary
+ Warhead@10Dam_areanuke2: SpreadDamage
+ Spread: 3c0
+ Damage: 120
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ Delay: 15
+ ValidTargets: Trees
+ DamageTypes: Incendiary
+ Warhead@11Res_areanuke2: DestroyResource
+ Size: 3
+ Delay: 10
+ Warhead@12Smu_areanuke2: LeaveSmudge
+ SmudgeType: Scorch
+ InvalidTargets: Vehicle, Structure, Wall, Husk, Trees
+ Size: 3
+ Delay: 10
+ Warhead@13Dam_areanuke3: SpreadDamage
+ Spread: 4c0
+ Damage: 60
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ Delay: 15
+ ValidTargets: Ground, Water, Underwater, Air
+ Versus:
+ Concrete: 25
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary
+ Warhead@14Dam_areanuke3: SpreadDamage
+ Spread: 4c0
+ Damage: 120
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ Delay: 15
+ ValidTargets: Trees
+ DamageTypes: Incendiary
+ Warhead@15Res_areanuke3: DestroyResource
+ Size: 4
+ Delay: 15
+ Warhead@16Smu_areanuke3: LeaveSmudge
+ SmudgeType: Scorch
+ InvalidTargets: Vehicle, Structure, Wall, Husk, Trees
+ Size: 4
+ Delay: 15
+ Warhead@17Dam_areanuke4: SpreadDamage
+ Spread: 5c0
+ Damage: 60
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ Delay: 20
+ ValidTargets: Ground, Water, Underwater, Air
+ Versus:
+ Concrete: 25
+ DamageTypes: Prone50Percent, TriggerProne, FireDeath, Incendiary
+ Warhead@18Dam_areanuke4: SpreadDamage
+ Spread: 5c0
+ Damage: 120
+ Falloff: 1000, 368, 135, 50, 18, 7, 0
+ Delay: 20
+ ValidTargets: Trees
+ DamageTypes: Incendiary
+ Warhead@19Res_areanuke4: DestroyResource
+ Size: 5
+ Delay: 20
+ Warhead@20Smu_areanuke4: LeaveSmudge
+ SmudgeType: Scorch
+ InvalidTargets: Vehicle, Structure, Wall, Husk, Trees
+ Size: 5
+ Delay: 20
diff --git a/packaging/osx/buildpackage.sh b/packaging/osx/buildpackage.sh
new file mode 100644
index 0000000..08a9a09
--- /dev/null
+++ b/packaging/osx/buildpackage.sh
@@ -0,0 +1,100 @@
+#!/bin/bash
+# OpenRA packaging script for macOS
+set -e
+
+command -v make >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires make."; exit 1; }
+command -v python >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires python."; exit 1; }
+command -v curl >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires curl."; exit 1; }
+
+if [ $# -eq "0" ]; then
+ echo "Usage: `basename $0` version [outputdir]"
+ exit 1
+fi
+
+PACKAGING_DIR=$(python -c "import os; print(os.path.dirname(os.path.realpath('$0')))")
+TEMPLATE_ROOT="${PACKAGING_DIR}/../../"
+
+# shellcheck source=mod.config
+. "${TEMPLATE_ROOT}/mod.config"
+
+if [ -f "${TEMPLATE_ROOT}/user.config" ]; then
+ # shellcheck source=user.config
+ . "${TEMPLATE_ROOT}/user.config"
+fi
+
+if [ "${INCLUDE_DEFAULT_MODS}" = "True" ]; then
+ echo "Cannot generate installers while INCLUDE_DEFAULT_MODS is enabled."
+ echo "Make sure that this setting is disabled in both your mod.config and user.config."
+ exit 1
+fi
+
+TAG="$1"
+if [ $# -eq "1" ]; then
+ OUTPUTDIR=$(python -c "import os; print(os.path.realpath('.'))")
+else
+ OUTPUTDIR=$(python -c "import os; print(os.path.realpath('$2'))")
+fi
+
+BUILTDIR="${PACKAGING_DIR}/build"
+PACKAGING_OSX_APP_NAME="OpenRA - ${PACKAGING_DISPLAY_NAME}.app"
+
+# Set the working dir to the location of this script
+cd "${PACKAGING_DIR}"
+
+modify_plist() {
+ sed "s|$1|$2|g" "$3" > "$3.tmp" && mv "$3.tmp" "$3"
+}
+
+echo "Building launcher"
+curl -s -L -o "${PACKAGING_OSX_LAUNCHER_TEMP_ARCHIVE_NAME}" -O "${PACKAGING_OSX_LAUNCHER_SOURCE}" || exit 3
+
+unzip -qq -d "${BUILTDIR}" "${PACKAGING_OSX_LAUNCHER_TEMP_ARCHIVE_NAME}"
+rm "${PACKAGING_OSX_LAUNCHER_TEMP_ARCHIVE_NAME}"
+
+modify_plist "{DEV_VERSION}" "${TAG}" "${BUILTDIR}/OpenRA.app/Contents/Info.plist"
+modify_plist "{FAQ_URL}" "${PACKAGING_FAQ_URL}" "${BUILTDIR}/OpenRA.app/Contents/Info.plist"
+echo "Building core files"
+
+pushd ${TEMPLATE_ROOT} > /dev/null
+
+if [ ! -f "${ENGINE_DIRECTORY}/Makefile" ]; then
+ echo "Required engine files not found."
+ echo "Run \`make\` in the mod directory to fetch and build the required files, then try again.";
+ exit 1
+fi
+
+if [ ! -d "${OUTPUTDIR}" ]; then
+ echo "Output directory '${OUTPUTDIR}' does not exist.";
+ exit 1
+fi
+
+make version VERSION="${TAG}"
+
+pushd ${ENGINE_DIRECTORY} > /dev/null
+make osx-dependencies
+make core SDK="-sdk:4.5"
+make install-engine gameinstalldir="/Contents/Resources/" DESTDIR="${BUILTDIR}/OpenRA.app"
+make install-common-mod-files gameinstalldir="/Contents/Resources/" DESTDIR="${BUILTDIR}/OpenRA.app"
+popd > /dev/null
+popd > /dev/null
+
+# Add mod files
+cp -r "${TEMPLATE_ROOT}/mods/"* "${BUILTDIR}/OpenRA.app/Contents/Resources/mods"
+cp "mod.icns" "${BUILTDIR}/OpenRA.app/Contents/Resources/${MOD_ID}.icns"
+
+pushd "${BUILTDIR}" > /dev/null
+mv "OpenRA.app" "${PACKAGING_OSX_APP_NAME}"
+
+# Copy macOS specific files
+modify_plist "{MOD_ID}" "${MOD_ID}" "${PACKAGING_OSX_APP_NAME}/Contents/Info.plist"
+modify_plist "{MOD_NAME}" "${PACKAGING_DISPLAY_NAME}" "${PACKAGING_OSX_APP_NAME}/Contents/Info.plist"
+modify_plist "{JOIN_SERVER_URL_SCHEME}" "openra-${MOD_ID}-${TAG}" "${PACKAGING_OSX_APP_NAME}/Contents/Info.plist"
+
+echo "Packaging zip archive"
+
+zip "${PACKAGING_INSTALLER_NAME}-${TAG}-macOS.zip" -r -9 "${PACKAGING_OSX_APP_NAME}" --quiet --symlinks
+mv "${PACKAGING_INSTALLER_NAME}-${TAG}-macOS.zip" "${OUTPUTDIR}"
+popd > /dev/null
+
+# Clean up
+rm -rf "${BUILTDIR}"
diff --git a/packaging/osx/mod.icns b/packaging/osx/mod.icns
new file mode 100644
index 0000000..68e41c8
Binary files /dev/null and b/packaging/osx/mod.icns differ
diff --git a/packaging/package-all.sh b/packaging/package-all.sh
new file mode 100644
index 0000000..d667159
--- /dev/null
+++ b/packaging/package-all.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+set -e
+
+if [ $# -eq "0" ]; then
+ echo "Usage: `basename $0` version [outputdir]"
+ exit 1
+fi
+
+TAG="$1"
+if [ $# -eq "1" ]; then
+ OUTPUTDIR=$(pwd)
+else
+ OUTPUTDIR=$2
+fi
+
+command -v python >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires python."; exit 1; }
+command -v make >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires make."; exit 1; }
+command -v curl >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires curl."; exit 1; }
+command -v makensis >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires makensis."; exit 1; }
+
+PACKAGING_DIR=$(python -c "import os; print(os.path.dirname(os.path.realpath('$0')))")
+
+echo "Building Windows package"
+${PACKAGING_DIR}/windows/buildpackage.sh "${TAG}" "${OUTPUTDIR}"
+if [ $? -ne 0 ]; then
+ echo "Windows package build failed."
+fi
+
+echo "Building macOS package"
+${PACKAGING_DIR}/osx/buildpackage.sh "${TAG}" "${OUTPUTDIR}"
+if [ $? -ne 0 ]; then
+ echo "macOS package build failed."
+fi
+
+echo "Package build done."
diff --git a/packaging/windows/buildpackage.nsi b/packaging/windows/buildpackage.nsi
new file mode 100644
index 0000000..b0a2070
--- /dev/null
+++ b/packaging/windows/buildpackage.nsi
@@ -0,0 +1,244 @@
+; Copyright 2007-2015 OpenRA developers (see AUTHORS)
+; This file is part of OpenRA.
+;
+; OpenRA is free software: you can redistribute it and/or modify
+; it under the terms of the GNU General Public License as published by
+; the Free Software Foundation, either version 3 of the License, or
+; (at your option) any later version.
+;
+; OpenRA is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+; GNU General Public License for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with OpenRA. If not, see .
+
+
+!include "MUI2.nsh"
+!include "FileFunc.nsh"
+!include "WordFunc.nsh"
+
+Name "${PACKAGING_DISPLAY_NAME}"
+OutFile "OpenRA.Setup.exe"
+
+InstallDir "$PROGRAMFILES\${PACKAGING_WINDOWS_INSTALL_DIR_NAME}"
+InstallDirRegKey HKLM "Software\${PACKAGING_WINDOWS_REGISTRY_KEY}" "InstallDir"
+
+SetCompressor lzma
+RequestExecutionLevel admin
+
+!insertmacro MUI_PAGE_WELCOME
+!insertmacro MUI_PAGE_LICENSE "${SRCDIR}\COPYING"
+!insertmacro MUI_PAGE_DIRECTORY
+
+!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKLM"
+!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\${PACKAGING_WINDOWS_REGISTRY_KEY}"
+!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
+!define MUI_STARTMENUPAGE_DEFAULTFOLDER "OpenRA"
+
+Var StartMenuFolder
+!insertmacro MUI_PAGE_STARTMENU Application $StartMenuFolder
+
+!insertmacro MUI_PAGE_COMPONENTS
+!insertmacro MUI_PAGE_INSTFILES
+
+!insertmacro MUI_UNPAGE_CONFIRM
+!insertmacro MUI_UNPAGE_INSTFILES
+!insertmacro MUI_UNPAGE_FINISH
+
+!insertmacro MUI_LANGUAGE "English"
+
+;***************************
+;Section Definitions
+;***************************
+Section "-Reg" Reg
+
+ ; Installation directory
+ WriteRegStr HKLM "Software\${PACKAGING_WINDOWS_REGISTRY_KEY}" "InstallDir" $INSTDIR
+
+ ; Join server URL Scheme
+ WriteRegStr HKLM "Software\Classes\openra-${MOD_ID}-${TAG}" "" "URL:Join OpenRA server"
+ WriteRegStr HKLM "Software\Classes\openra-${MOD_ID}-${TAG}" "URL Protocol" ""
+ WriteRegStr HKLM "Software\Classes\openra-${MOD_ID}-${TAG}\DefaultIcon" "" "$INSTDIR\${MOD_ID}.ico,0"
+ WriteRegStr HKLM "Software\Classes\openra-${MOD_ID}-${TAG}\Shell\Open\Command" "" "$INSTDIR\${PACKAGING_WINDOWS_LAUNCHER_NAME}.exe Launch.URI=%1"
+
+SectionEnd
+
+Section "Game" GAME
+ SectionIn RO
+
+ SetOutPath "$INSTDIR"
+ File /r "${SRCDIR}\mods"
+ File "${SRCDIR}\${PACKAGING_WINDOWS_LAUNCHER_NAME}.exe"
+ File "${SRCDIR}\OpenRA.Game.exe"
+ File "${SRCDIR}\OpenRA.Game.exe.config"
+ File "${SRCDIR}\OpenRA.Utility.exe"
+ File "${SRCDIR}\OpenRA.Server.exe"
+ File "${SRCDIR}\OpenRA.Platforms.Default.dll"
+ File "${SRCDIR}\ICSharpCode.SharpZipLib.dll"
+ File "${SRCDIR}\FuzzyLogicLibrary.dll"
+ File "${SRCDIR}\Open.Nat.dll"
+ File "${SRCDIR}\VERSION"
+ File "${SRCDIR}\AUTHORS"
+ File "${SRCDIR}\COPYING"
+ File "${SRCDIR}\${MOD_ID}.ico"
+ File "${SRCDIR}\SharpFont.dll"
+ File "${SRCDIR}\SDL2-CS.dll"
+ File "${SRCDIR}\OpenAL-CS.dll"
+ File "${SRCDIR}\global mix database.dat"
+ File "${SRCDIR}\MaxMind.Db.dll"
+ File "${SRCDIR}\GeoLite2-Country.mmdb.gz"
+ File "${SRCDIR}\eluant.dll"
+ File "${SRCDIR}\rix0rrr.BeaconLib.dll"
+ File "${DEPSDIR}\soft_oal.dll"
+ File "${DEPSDIR}\SDL2.dll"
+ File "${DEPSDIR}\freetype6.dll"
+ File "${DEPSDIR}\lua51.dll"
+
+ !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
+ CreateDirectory "$SMPROGRAMS\$StartMenuFolder"
+ CreateShortCut "$SMPROGRAMS\$StartMenuFolder\${PACKAGING_DISPLAY_NAME}.lnk" "$OUTDIR\${PACKAGING_WINDOWS_LAUNCHER_NAME}.exe" "" \
+ "$OUTDIR\${PACKAGING_WINDOWS_LAUNCHER_NAME}.exe" "" "" "" ""
+ !insertmacro MUI_STARTMENU_WRITE_END
+
+ SetOutPath "$INSTDIR\lua"
+ File "${SRCDIR}\lua\*.lua"
+
+ SetOutPath "$INSTDIR\glsl"
+ File "${SRCDIR}\glsl\*.frag"
+ File "${SRCDIR}\glsl\*.vert"
+
+ ; Estimated install size for the control panel properties
+ ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
+ IntFmt $0 "0x%08X" $0
+ WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PACKAGING_WINDOWS_REGISTRY_KEY}" "EstimatedSize" "$0"
+
+ SetShellVarContext all
+ CreateDirectory "$APPDATA\OpenRA\ModMetadata"
+ nsExec::ExecToLog '"$INSTDIR\OpenRA.Utility.exe" ${MOD_ID} --register-mod "$INSTDIR\${PACKAGING_WINDOWS_LAUNCHER_NAME}.exe" system'
+ nsExec::ExecToLog '"$INSTDIR\OpenRA.Utility.exe" ${MOD_ID} --clear-invalid-mod-registrations system'
+ SetShellVarContext current
+
+SectionEnd
+
+Section "Desktop Shortcut" DESKTOPSHORTCUT
+ SetOutPath "$INSTDIR"
+ CreateShortCut "$DESKTOP\OpenRA - ${PACKAGING_DISPLAY_NAME}.lnk" "$INSTDIR\${PACKAGING_WINDOWS_LAUNCHER_NAME}.exe" "" \
+ "$INSTDIR\${PACKAGING_WINDOWS_LAUNCHER_NAME}.exe" "" "" "" ""
+SectionEnd
+
+;***************************
+;Dependency Sections
+;***************************
+Section "-DotNet" DotNet
+ ClearErrors
+ ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client" "Install"
+ IfErrors error 0
+ IntCmp $0 1 0 error 0
+ ClearErrors
+ ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Install"
+ IfErrors error 0
+ IntCmp $0 1 done error done
+ error:
+ MessageBox MB_OK ".NET Framework v4.5 or later is required to run OpenRA."
+ Abort
+ done:
+SectionEnd
+
+;***************************
+;Uninstaller Sections
+;***************************
+Section "-Uninstaller"
+ WriteUninstaller $INSTDIR\uninstaller.exe
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PACKAGING_WINDOWS_REGISTRY_KEY}" "DisplayName" "${PACKAGING_DISPLAY_NAME}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PACKAGING_WINDOWS_REGISTRY_KEY}" "UninstallString" "$INSTDIR\uninstaller.exe"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PACKAGING_WINDOWS_REGISTRY_KEY}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PACKAGING_WINDOWS_REGISTRY_KEY}" "InstallLocation" "$INSTDIR"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PACKAGING_WINDOWS_REGISTRY_KEY}" "DisplayIcon" "$INSTDIR\${MOD_ID}.ico"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PACKAGING_WINDOWS_REGISTRY_KEY}" "Publisher" "${PACKAGING_AUTHORS}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PACKAGING_WINDOWS_REGISTRY_KEY}" "URLInfoAbout" "${PACKAGING_WEBSITE_URL}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PACKAGING_WINDOWS_REGISTRY_KEY}" "DisplayVersion" "${TAG}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PACKAGING_WINDOWS_REGISTRY_KEY}" "NoModify" "1"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PACKAGING_WINDOWS_REGISTRY_KEY}" "NoRepair" "1"
+SectionEnd
+
+!macro Clean UN
+Function ${UN}Clean
+ nsExec::ExecToLog '"$INSTDIR\OpenRA.Utility.exe" ${MOD_ID} --unregister-mod system'
+
+ RMDir /r $INSTDIR\mods
+ RMDir /r $INSTDIR\maps
+ RMDir /r $INSTDIR\glsl
+ RMDir /r $INSTDIR\lua
+ Delete "$INSTDIR\${PACKAGING_WINDOWS_LAUNCHER_NAME}.exe"
+ Delete $INSTDIR\OpenRA.Game.exe
+ Delete $INSTDIR\OpenRA.Game.exe.config
+ Delete $INSTDIR\OpenRA.Utility.exe
+ Delete $INSTDIR\OpenRA.Server.exe
+ Delete $INSTDIR\OpenRA.Platforms.Default.dll
+ Delete $INSTDIR\ICSharpCode.SharpZipLib.dll
+ Delete $INSTDIR\FuzzyLogicLibrary.dll
+ Delete $INSTDIR\Open.Nat.dll
+ Delete $INSTDIR\SharpFont.dll
+ Delete $INSTDIR\VERSION
+ Delete $INSTDIR\AUTHORS
+ Delete $INSTDIR\COPYING
+ Delete $INSTDIR\${MOD_ID}.ico
+ Delete "$INSTDIR\global mix database.dat"
+ Delete $INSTDIR\MaxMind.Db.dll
+ Delete $INSTDIR\GeoLite2-Country.mmdb.gz
+ Delete $INSTDIR\KopiLua.dll
+ Delete $INSTDIR\soft_oal.dll
+ Delete $INSTDIR\SDL2.dll
+ Delete $INSTDIR\lua51.dll
+ Delete $INSTDIR\eluant.dll
+ Delete $INSTDIR\freetype6.dll
+ Delete $INSTDIR\SDL2-CS.dll
+ Delete $INSTDIR\OpenAL-CS.dll
+ Delete $INSTDIR\rix0rrr.BeaconLib.dll
+ RMDir /r $INSTDIR\Support
+
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PACKAGING_WINDOWS_REGISTRY_KEY}"
+ DeleteRegKey HKLM "Software\Classes\openra-${MOD_ID}-${TAG}"
+
+ Delete $INSTDIR\uninstaller.exe
+ RMDir $INSTDIR
+
+ !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuFolder
+
+ ; Clean up start menu: Delete all our icons, and the OpenRA folder
+ ; *only* if we were the only installed version
+ Delete "$SMPROGRAMS\$StartMenuFolder\${PACKAGING_DISPLAY_NAME}.lnk"
+ RMDir "$SMPROGRAMS\$StartMenuFolder"
+
+ Delete "$DESKTOP\OpenRA - ${PACKAGING_DISPLAY_NAME}.lnk"
+ DeleteRegKey HKLM "Software\${PACKAGING_WINDOWS_REGISTRY_KEY}"
+FunctionEnd
+!macroend
+
+!insertmacro Clean ""
+!insertmacro Clean "un."
+
+Section "Uninstall"
+ Call un.Clean
+SectionEnd
+
+;***************************
+;Section Descriptions
+;***************************
+LangString DESC_GAME ${LANG_ENGLISH} "${PACKAGING_DISPLAY_NAME} game files."
+LangString DESC_DESKTOPSHORTCUT ${LANG_ENGLISH} "Place shortcut on the Desktop."
+
+!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
+ !insertmacro MUI_DESCRIPTION_TEXT ${GAME} $(DESC_GAME)
+ !insertmacro MUI_DESCRIPTION_TEXT ${DESKTOPSHORTCUT} $(DESC_DESKTOPSHORTCUT)
+!insertmacro MUI_FUNCTION_DESCRIPTION_END
+
+;***************************
+;Callbacks
+;***************************
+
+Function .onInstFailed
+ Call Clean
+FunctionEnd
diff --git a/packaging/windows/buildpackage.sh b/packaging/windows/buildpackage.sh
new file mode 100644
index 0000000..52b8eae
--- /dev/null
+++ b/packaging/windows/buildpackage.sh
@@ -0,0 +1,96 @@
+#!/bin/bash
+set -e
+
+command -v curl >/dev/null 2>&1 || { echo >&2 "Windows packaging requires curl."; exit 1; }
+command -v makensis >/dev/null 2>&1 || { echo >&2 "Windows packaging requires makensis."; exit 1; }
+
+if [ $# -eq "0" ]; then
+ echo "Usage: `basename $0` version [outputdir]"
+ exit 1
+fi
+
+PACKAGING_DIR=$(python -c "import os; print(os.path.dirname(os.path.realpath('$0')))")
+TEMPLATE_ROOT="${PACKAGING_DIR}/../../"
+
+# shellcheck source=mod.config
+. "${TEMPLATE_ROOT}/mod.config"
+
+if [ -f "${TEMPLATE_ROOT}/user.config" ]; then
+ # shellcheck source=user.config
+ . "${TEMPLATE_ROOT}/user.config"
+fi
+
+if [ "${INCLUDE_DEFAULT_MODS}" = "True" ]; then
+ echo "Cannot generate installers while INCLUDE_DEFAULT_MODS is enabled."
+ echo "Make sure that this setting is disabled in both your mod.config and user.config."
+ exit 1
+fi
+
+TAG="$1"
+if [ $# -eq "1" ]; then
+ OUTPUTDIR=$(python -c "import os; print(os.path.realpath('.'))")
+else
+ OUTPUTDIR=$(python -c "import os; print(os.path.realpath('$2'))")
+fi
+
+BUILTDIR="${PACKAGING_DIR}/build"
+
+# Set the working dir to the location of this script
+cd "${PACKAGING_DIR}"
+
+LAUNCHER_LIBS="-r:System.dll -r:System.Drawing.dll -r:System.Windows.Forms.dll -r:${BUILTDIR}/OpenRA.Game.exe"
+
+echo "Building core files"
+
+pushd ${TEMPLATE_ROOT} > /dev/null
+
+if [ ! -f "${ENGINE_DIRECTORY}/Makefile" ]; then
+ echo "Required engine files not found."
+ echo "Run \`make\` in the mod directory to fetch and build the required files, then try again.";
+ exit 1
+fi
+
+if [ ! -d "${OUTPUTDIR}" ]; then
+ echo "Output directory '${OUTPUTDIR}' does not exist.";
+ exit 1
+fi
+
+make version VERSION="${TAG}"
+
+pushd ${ENGINE_DIRECTORY} > /dev/null
+SRC_DIR="$(pwd)"
+make windows-dependencies
+make core SDK="-sdk:4.5"
+make install-engine gameinstalldir="" DESTDIR="${BUILTDIR}"
+make install-common-mod-files gameinstalldir="" DESTDIR="${BUILTDIR}"
+popd > /dev/null
+popd > /dev/null
+
+# Add mod files
+cp -r "${TEMPLATE_ROOT}/mods/"* "${BUILTDIR}/mods"
+cp "mod.ico" "${BUILTDIR}/${MOD_ID}.ico"
+cp "${SRC_DIR}/OpenRA.Game.exe.config" "${BUILTDIR}"
+
+echo "Compiling Windows launcher"
+sed "s|DISPLAY_NAME|${PACKAGING_DISPLAY_NAME}|" "${SRC_DIR}/packaging/windows/WindowsLauncher.cs.in" | sed "s|MOD_ID|${MOD_ID}|" | sed "s|FAQ_URL|${PACKAGING_FAQ_URL}|" > "${BUILTDIR}/WindowsLauncher.cs"
+mcs -sdk:4.5 "${BUILTDIR}/WindowsLauncher.cs" -warn:4 -codepage:utf8 -warnaserror -out:"${BUILTDIR}/${PACKAGING_WINDOWS_LAUNCHER_NAME}.exe" -t:winexe ${LAUNCHER_LIBS} -win32icon:"${BUILTDIR}/${MOD_ID}.ico"
+rm "${BUILTDIR}/WindowsLauncher.cs"
+mono "${SRC_DIR}/fixheader.exe" "${BUILTDIR}/${PACKAGING_WINDOWS_LAUNCHER_NAME}.exe" > /dev/null
+
+echo "Building Windows setup.exe"
+pushd "${PACKAGING_DIR}" > /dev/null
+makensis -V2 -DSRCDIR="${BUILTDIR}" -DDEPSDIR="${SRC_DIR}/thirdparty/download/windows" -DTAG="${TAG}" -DMOD_ID="${MOD_ID}" -DPACKAGING_WINDOWS_INSTALL_DIR_NAME="${PACKAGING_WINDOWS_INSTALL_DIR_NAME}" -DPACKAGING_WINDOWS_LAUNCHER_NAME="${PACKAGING_WINDOWS_LAUNCHER_NAME}" -DPACKAGING_DISPLAY_NAME="${PACKAGING_DISPLAY_NAME}" -DPACKAGING_WEBSITE_URL="${PACKAGING_WEBSITE_URL}" -DPACKAGING_AUTHORS="${PACKAGING_AUTHORS}" -DPACKAGING_WINDOWS_REGISTRY_KEY="${PACKAGING_WINDOWS_REGISTRY_KEY}" buildpackage.nsi
+if [ $? -eq 0 ]; then
+ mv OpenRA.Setup.exe "${OUTPUTDIR}/${PACKAGING_INSTALLER_NAME}-$TAG.exe"
+fi
+popd > /dev/null
+
+echo "Packaging zip archive"
+pushd "${BUILTDIR}" > /dev/null
+find "${SRC_DIR}/thirdparty/download/windows/" -name '*.dll' -exec cp '{}' '.' ';'
+zip "${PACKAGING_INSTALLER_NAME}-${TAG}-winportable" -r -9 * --quiet --symlinks
+mv "${PACKAGING_INSTALLER_NAME}-${TAG}-winportable.zip" "${OUTPUTDIR}"
+popd > /dev/null
+
+# Cleanup
+rm -rf "${BUILTDIR}"
diff --git a/packaging/windows/mod.ico b/packaging/windows/mod.ico
new file mode 100644
index 0000000..8acff66
Binary files /dev/null and b/packaging/windows/mod.ico differ
diff --git a/utility.cmd b/utility.cmd
new file mode 100644
index 0000000..500e2e2
--- /dev/null
+++ b/utility.cmd
@@ -0,0 +1,38 @@
+@echo off
+
+FOR /F "tokens=1,2 delims==" %%A IN (mod.config) DO (set %%A=%%B)
+if exist user.config (FOR /F "tokens=1,2 delims==" %%A IN (user.config) DO (set %%A=%%B))
+
+title OpenRA.Utility.exe %MOD_ID%
+
+set MOD_SEARCH_PATHS=%~dp0mods
+if %INCLUDE_DEFAULT_MODS% neq "True" goto start
+set MOD_SEARCH_PATHS=%MOD_SEARCH_PATHS%,./mods
+
+:start
+set TEMPLATE_DIR=%CD%
+if not exist %ENGINE_DIRECTORY%\OpenRA.Game.exe goto noengine
+cd %ENGINE_DIRECTORY%
+
+:loop
+echo.
+echo ----------------------------------------
+echo.
+echo Enter a utility command or --exit to exit.
+echo Press enter to view a list of valid utility commands.
+echo.
+
+set /P command=Please enter a command: OpenRA.Utility.exe %MOD_ID%
+if /I "%command%" EQU "--exit" (cd %TEMPLATE_DIR% & exit /b)
+echo.
+echo ----------------------------------------
+echo.
+echo OpenRA.Utility.exe %MOD_ID% %command%
+call OpenRA.Utility.exe %MOD_ID% %command%
+goto loop
+
+:noengine
+echo Required engine files not found.
+echo Run `make all` in the mod directory to fetch and build the required files, then try again.
+pause
+exit /b
\ No newline at end of file
diff --git a/utility.sh b/utility.sh
new file mode 100644
index 0000000..ac35531
--- /dev/null
+++ b/utility.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+# Usage:
+# $ ./utility.sh # Launch the OpenRA.Utility with the default mod
+# $ Mod="" ./launch-utility.sh # Launch the OpenRA.Utility with a specific mod
+
+set -e
+command -v make >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires make."; exit 1; }
+command -v python >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires python."; exit 1; }
+command -v mono >/dev/null 2>&1 || { echo >&2 "The OpenRA mod template requires mono."; exit 1; }
+
+TEMPLATE_LAUNCHER=$(python -c "import os; print(os.path.realpath('$0'))")
+TEMPLATE_ROOT=$(dirname "${TEMPLATE_LAUNCHER}")
+
+# shellcheck source=mod.config
+. "${TEMPLATE_ROOT}/mod.config"
+
+if [ -f "${TEMPLATE_ROOT}/user.config" ]; then
+ # shellcheck source=user.config
+ . "${TEMPLATE_ROOT}/user.config"
+fi
+
+MOD_SEARCH_PATHS="${TEMPLATE_ROOT}/mods"
+if [ "${INCLUDE_DEFAULT_MODS}" = "True" ]; then
+ MOD_SEARCH_PATHS="${MOD_SEARCH_PATHS},./mods"
+fi
+
+LAUNCH_MOD="${Mod:-"${MOD_ID}"}"
+
+cd "${TEMPLATE_ROOT}"
+if [ ! -f "${ENGINE_DIRECTORY}/OpenRA.Game.exe" ]; then
+ echo "Required engine files not found."
+ echo "Run \`make\` in the mod directory to fetch and build the required files, then try again.";
+ exit 1
+fi
+
+cd "${ENGINE_DIRECTORY}"
+MOD_SEARCH_PATHS="${MOD_SEARCH_PATHS}" mono --debug OpenRA.Utility.exe "${LAUNCH_MOD}" "$@"