commit e1b8db251444327e10f598decec90160f9b27cf5 Author: Noodlemire Date: Sun Jul 12 17:43:15 2020 -0500 Initial Commit diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..e9ab0b3 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,458 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +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 this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser 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 Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "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 +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY 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 +LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS diff --git a/README.md b/README.md new file mode 100644 index 0000000..acffe37 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +------------------------------------------------------------------------------------------------------------- +Projectiles for Minetest 5.3.0 +[projectile] +------------------------------------------------------------------------------------------------------------- + +------------------------------------------------------------------------------------------------------------- +About +------------------------------------------------------------------------------------------------------------- +This mod adds a couple slingshots and bows, which fire projectiles that use the newly exposed collision information that was added in Minetest 5.3.0. + +------------------------------------------------------------------------------------------------------------- +Dependencies and Support +------------------------------------------------------------------------------------------------------------- +Although there are no hard dependencies, there is a long list of optional dependencies, which enable various features: +*Default is necessary to craft most ammo types, and provides obsidian shards and mese crystal fragments as slingshot ammo. +*Hardtrees enables rocks for slingshots. +*Mesecons enable slingshotted mese crystal fragments to power mesecon effectors. +*Fire enables fire arrows, and TNT enables bomb arrows. +*Basic_materials provides craftability for steel bows and slingshots. + +------------------------------------------------------------------------------------------------------------- +License +------------------------------------------------------------------------------------------------------------- +The LGPL v2.1 License is used with this mod. See https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html or LICENSE.txt for more details. + +------------------------------------------------------------------------------------------------------------- +Installation +------------------------------------------------------------------------------------------------------------- +Download, unzip, and place within the usual minetest/current/mods folder, and it will behave in relation to the Minetest engine like any other mod. diff --git a/crafts.lua b/crafts.lua new file mode 100644 index 0000000..253ece5 --- /dev/null +++ b/crafts.lua @@ -0,0 +1,160 @@ +--[[ +Research N' Duplication +Copyright (C) 2020 Noodlemire + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library 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 +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +--]] + +--A basic arrow +minetest.register_craftitem("projectile:arrow", { + description = "Arrow", + inventory_image = "projectile_arrow.png", +}) + +--An arrow that burns flammable nodes that it touches +if fire then + minetest.register_craftitem("projectile:arrow_fire", { + description = "Fire Arrow", + inventory_image = "projectile_arrow_fire.png", + }) +end + +--An arrow with exceptionally high velocity +minetest.register_craftitem("projectile:arrow_high_velocity", { + description = "High Velocity Arrow", + inventory_image = "projectile_arrow_high_velocity.png", +}) + +--An arrow that explodes on contact, rather than dealing direct damage. +if tnt then + minetest.register_craftitem("projectile:arrow_bomb", { + description = "Bomb Arrow", + inventory_image = "projectile_arrow_bomb.png", + }) +end + + + +--Two cobblestone blocks can shapelessly be used to craft 18 rocks. +--Two are used since it's very possible that other mods use one rock to make other things. +minetest.register_craft({ + type = "shapeless", + output = "hardtrees:rock 18", + recipe = {"default:cobble", "default:cobble"} +}) + +--If the player no longer needs rocks, 9 can be crafted back into a cobblestone block. +minetest.register_craft({ + output = "default:cobble", + recipe = { + {"hardtrees:rock", "hardtrees:rock", "hardtrees:rock"}, + {"hardtrees:rock", "hardtrees:rock", "hardtrees:rock"}, + {"hardtrees:rock", "hardtrees:rock", "hardtrees:rock"} + } +}) + +--Four sticks in a diagonal Y, with a string on top, makes a slingshot. +minetest.register_craft({ + output = "projectile:slingshot", + recipe = { + {"", "default:stick", "farming:string"}, + {"", "default:stick", "default:stick"}, + {"default:stick", "", ""} + } +}) + +--Four steel bars in a diagonal Y, with a steel wire on top, makes a steel slingshot. +--Requires basic_materials +minetest.register_craft({ + output = "projectile:steel_slingshot", + recipe = { + {"", "basic_materials:steel_bar", "basic_materials:steel_wire"}, + {"", "basic_materials:steel_bar", "basic_materials:steel_bar"}, + {"basic_materials:steel_bar", "", ""} + } +}) + +--Three sticks, to create the shape of the bow itself, and three strings in a diagonal line, makes a bow. +minetest.register_craft({ + output = "projectile:bow", + recipe = { + {"default:stick", "default:stick", "farming:string"}, + {"default:stick", "farming:string", ""}, + {"farming:string", "", ""} + } +}) + +--Three steel bars, to create the shape of the bow itself, and three steel wires in a diagonal line, makes a bow. +--Requires basic_materials +minetest.register_craft({ + output = "projectile:steel_bow", + recipe = { + {"basic_materials:steel_bar", "basic_materials:steel_bar", "basic_materials:steel_wire"}, + {"basic_materials:steel_bar", "basic_materials:steel_wire", ""}, + {"basic_materials:steel_wire", "", ""} + } +}) + +--Regular arrows are made from flint, a stick, and a feather. +--The feather can be provided by multiple mob mods. +--Arrows are also materials in the stronger ammo options for bows. +minetest.register_craft({ + output = "projectile:arrow", + recipe = { + {"default:flint", "", ""}, + {"", "default:stick", ""}, + {"", "", "mobs:chicken_feather"} + } +}) +minetest.register_craft({ + output = "projectile:arrow", + recipe = { + {"default:flint", "", ""}, + {"", "default:stick", ""}, + {"", "", "animalmaterials:feather"} + } +}) +minetest.register_craft({ + output = "projectile:arrow", + recipe = { + {"default:flint", "", ""}, + {"", "default:stick", ""}, + {"", "", "creatures:feather"} + } +}) + +--Combining an arrow with a torch lights it on fire. +if fire then + minetest.register_craft({ + type = "shapeless", + output = "projectile:arrow_fire", + recipe = {"projectile:arrow", "default:torch"} + }) +end + +--Gold tools are often fast, so gold arrows focus on being fast. +--A gold ingot can turn four arrows gold. +minetest.register_craft({ + type = "shapeless", + output = "projectile:arrow_high_velocity 4", + recipe = {"projectile:arrow", "projectile:arrow", "projectile:arrow", "projectile:arrow", "default:gold_ingot"} +}) + +--Stabbing an arrow into a TNT stick creates a bomb arrow. +minetest.register_craft({ + type = "shapeless", + output = "projectile:arrow_bomb", + recipe = {"projectile:arrow", "tnt:tnt_stick"} +}) diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..ab1489d --- /dev/null +++ b/init.lua @@ -0,0 +1,535 @@ +--[[ +Research N' Duplication +Copyright (C) 2020 Noodlemire + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library 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 +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +--]] + +--Mod-specific global variable +projectile = {} + +--A list of registered projectile entites, indexed by the category of weapon that uses them. +projectile.registered_projectiles = {} + +--Per-player list of much a projectile weapon has been charged. +projectile.charge_levels = {} + + + +--MP = Mod Path +local mp = minetest.get_modpath(minetest.get_current_modname())..'/' + +--In here is the registration of ammo items that this mod provides, as well as crafting recipes for weapons and ammo. +dofile(mp.."crafts.lua") + + + +--A function that creates and launches a function out of a player's side when they use a projectile weapon. +function projectile.shoot(wep, user, level) + --Some useful shorthands + local pname = user:get_player_name() + local inv = user:get_inventory() + local def = wep:get_definition() + + --A projectile isn't spawned directly inside a player, and it doesn't come from the center of the screen. + --It does start directly in front of the player... + local pos = user:get_look_dir() + --But then it's shifted to the right of the player, where it looks like the weapon is held. + pos = vector.rotate(pos, {x=0 , y = -math.pi / 4, z=0}) + --Then it's shifted up by the player's face. + pos.y = 1 + --The user's actual position is added last, to make rotating easier. + pos = vector.add(pos, user:get_pos()) + + --Charge level depends on how long the player waited before firing. 1 = 100% charge. + level = math.min(level / def.charge_time, 1) + + --Look through each inventory slot... + for i = 1, inv:get_size("main") do + --get the stack itself + local ammo = inv:get_stack("main", i) + + --If there is an item stack, and it's registered as an ammo type that this weapon can use... + if not ammo:is_empty() and projectile.registered_projectiles[def.rw_category][ammo:get_name()] then + --Create the projectile entity at the determined position + local projectile = minetest.add_entity(pos, projectile.registered_projectiles[def.rw_category][ammo:get_name()]) + --A shorthand of the luaentity version of the projectile, where data can easily be stored + local luapro = projectile:get_luaentity() + + --Set velocity according to the direction it was fired. Speed is determined by the weapon, ammo, and how long the weapon was charged. + projectile:set_velocity(vector.multiply(user:get_look_dir(), luapro.speed * level * def.speed)) + --An acceleration of -9.81y is how gravity is applied. + projectile:set_acceleration({x=0, y=-9.81, z=0}) + + --Store level for later, to determine impact damage + luapro.level = level + --Also store the projectile's damage itself. + luapro.damage = def.damage + --The player's name is stored to prevent hitting yourself + --And by "hitting yourself" I mean accidentally being hit by the arrow just by firing it at a somewhat low angle, the moment it spawns. + luapro.owner = pname + + --If the player isn't in creative mode, some weapon durability and ammo is consumed. + if not minetest.is_creative_enabled(pname) then + ammo:take_item(1) + inv:set_stack("main", i, ammo) + + wep:add_wear(65536 / (def.durability or 100)) + end + + --Once the ammo is found, the search is stopped. + break + end + end + + return wep +end + +--Globalsteps are used to either cancel a charge if a player switches weapons, or to update the weapon sprite when charging is complete. +minetest.register_globalstep(function(dtime) + --For each player on the server... + for _, player in pairs(minetest.get_connected_players()) do + --Useful shorthand + local pname = player:get_player_name() + + --If this player is currently charging a projectile weapon... + if projectile.charge_levels[pname] then + --If the player's selected hotbar slot changed... + if player:get_wield_index() ~= projectile.charge_levels[pname].slot then + --Get the projectile weapon. get_wielded_item() can't be used, since the weapon is no longer held. + local wep = player:get_inventory():get_stack("main", projectile.charge_levels[pname].slot) + + --Replace the weapon with the uncharged version + wep:set_name(wep:get_definition().no_charge_name) + player:get_inventory():set_stack("main", projectile.charge_levels[pname].slot, wep) + + --Delete the stored charge data for this player + projectile.charge_levels[pname] = nil + + --Otherwise, as long as the player doesn't change weapon... + else + --Add a little charge, according the how much time that has passed since the last globalstep. + projectile.charge_levels[pname].charge = projectile.charge_levels[pname].charge + dtime + + --Get the charging weapon and its definition + local wep = player:get_wielded_item() + local def = wep:get_definition() + + --if the weapon has a listed full_charge_name, meaning it hasn't already fully charged, + --but now the charge level has reached or exceeded the max... + if def.full_charge_name and projectile.charge_levels[pname].charge >= def.charge_time then + --Once this happens, replace the weapon with a fully charged sprite version. + wep:set_name(def.full_charge_name) + player:set_wielded_item(wep) + end + end + end + end +end) + +--When a weapon is charging, it's a lot harder to check for when the stack has moved elsewhere, at least in terms of checking it. +--So, if a player tries any inventory action related to a charging projectile weapon, prevent it. +minetest.register_allow_player_inventory_action(function(player, action, inv, info) + if (action == "take" and minetest.get_item_group(info.stack:get_name(), "projectile_weapon") >= 2) or + (action == "put" and minetest.get_item_group(inv:get_stack(info.listname, info.index):get_name(), "projectile_weapon") >= 2) or + (action == "move" and + (minetest.get_item_group(inv:get_stack(info.from_list, info.from_index):get_name(), "projectile_weapon") >= 2 or + minetest.get_item_group(inv:get_stack(info.to_list, info.to_index):get_name(), "projectile_weapon") >= 2)) then + return 0 + end +end) + + + +--This function registers a weapon able to shoot projectiles +function projectile.register_weapon(name, def) + --either create a groups table for the definition, or use the provided one + def.groups = def.groups or {} + --Every projectile weapon belongs to the projectile_weapon group. + def.groups.projectile_weapon = 1 + + --Charge time defaults to 1 second + def.charge_time = def.charge_time or 1 + --The weapon's damage multiplier defaults to 1. + def.damage = def.damage or 1 + --The weapon's speed multiplier defaults to 1. + def.speed = def.speed or 1 + + --If this weapons has to be charged... + if def.charge then + --Define a function to reset the weapon's sprite and delete the player's charge data. + local uncharge = function(wep, user) + projectile.charge_levels[user:get_player_name()] = nil + + wep:set_name(name) + + return wep + end + + --A function that begins a new charge, or fires a shot if the player is charging. + local charge = function(wep, user) + local pname = user:get_player_name() + + --If there is no charge data yet... + if not projectile.charge_levels[pname] then + local inv = user:get_inventory() + + --Look for ammo in the player's inventory, starting from the first slot. + for i = 1, inv:get_size("main") do + --Get the itemstack of the current slot. + local ammo = inv:get_stack("main", i) + + --If the stack is there, and it's registered as ammo that this weapon can use... + if not ammo:is_empty() and projectile.registered_projectiles[def.rw_category][ammo:get_name()] then + --Create new charge data. Store the inventory slot of the weapon, and start the charge at 0 + projectile.charge_levels[pname] = {slot = user:get_wield_index(), charge = 0} + + --As feedback for the charge beginning, change the weapon's sprite to show it loaded. + --I originally wanted the item to be shown loaded with specific ammo, but it doesn't seem to be possible. + wep = ItemStack({name = name.."_2", wear = wep:get_wear()}) + + --Once ammo is found, the search can be stopped. + break + end + end + + --If no ammo was found, a charge won't start at all. No dry-firing allowed. + + --Otherwise, if there is charge data... + else + --Shoot out the projectile + projectile.shoot(wep, user, projectile.charge_levels[pname].charge) + --Then, end the charge + wep = uncharge(wep, user) + end + + return wep + end + + --Right-click to start a charge. Right-click again to fire. + def.on_place = charge + def.on_secondary_use = charge + --Left-click to cancel a charge without firing. + def.on_use = uncharge + + --Start the creating of the partially and fully charged versions of this item, first by copying the definition. + local def2 = table.copy(def) + local def3 = table.copy(def) + + --The partially and fully-charged versions have specific inventory images + def2.inventory_image = def.inventory_image_2 + def3.inventory_image = def.inventory_image_3 + --The projectile_weapon group rating increases with charge level + def2.groups.projectile_weapon = 2 + def3.groups.projectile_weapon = 3 + --Partially charged weapons cannot be grabbed from the creative inventory. + def2.groups.not_in_creative_inventory = 1 + def3.groups.not_in_creative_inventory = 1 + + --Some versions store the names of different versions, for convenience. + --The partially-charged version stores the name of the fully charged version, to be used when transitioning to the fully charged version. + def2.full_charge_name = name.."_3" + --Full and partial charge versions can both be cancelled, so they remember the name of the uncharged version + def2.no_charge_name = name + def3.no_charge_name = name + + --Finally, register the partially and fully charged projectile weapons. + minetest.register_tool(name.."_2", def2) + minetest.register_tool(name.."_3", def3) + + --Otherwise, right-click simply shoots the projectile. + else + def.on_place = projectile.shoot + def.on_secondary_use = projectile.shoot + end + + --Finally, register the projectile weapon here. + --This is the only thing that happens regardless of if the weapon has to charge or not. + minetest.register_tool(name, def) +end + +--The basic slingshot. Slingshots are weaker than bows, but the ammunition they use is way easier to find and create. +projectile.register_weapon("projectile:slingshot", { + description = "Slingshot", + inventory_image = "projectile_slingshot.png", + inventory_image_2 = "projectile_slingshot_charged.png", + inventory_image_3 = "projectile_slingshot_charged_full.png", + durability = 75, + rw_category = "slingshot", + charge = true +}) + +--An upgraded slingshot, which fires faster and harder, but is slightly harder to charge up. Metal wire is stiffer than string, after all. +projectile.register_weapon("projectile:steel_slingshot", { + description = "Steel Slingshot", + inventory_image = "projectile_steel_slingshot.png", + inventory_image_2 = "projectile_steel_slingshot_charged.png", + inventory_image_3 = "projectile_steel_slingshot_charged_full.png", + durability = 150, + rw_category = "slingshot", + charge = true, + charge_time = 1.1, + damage = 1.25, + speed = 1.75 +}) + +--The basic bow. It is more powerful than a slingshot, but it takes way longer to charge and ammunition is harder to get. +projectile.register_weapon("projectile:bow", { + description = "Bow", + inventory_image = "projectile_bow.png", + inventory_image_2 = "projectile_bow_charged.png", + inventory_image_3 = "projectile_bow_charged_full.png", + durability = 100, + rw_category = "bow", + charge = true, + charge_time = 2 +}) + +--An upgraded bow, which fires faster and harder, but is slightly harder to charge up. Metal wire is stiffer than string, after all. +projectile.register_weapon("projectile:steel_bow", { + description = "Steel Bow", + inventory_image = "projectile_steel_bow.png", + inventory_image_2 = "projectile_steel_bow_charged.png", + inventory_image_3 = "projectile_steel_bow_charged_full.png", + durability = 200, + rw_category = "bow", + charge = true, + charge_time = 2.1, + damage = 1.5, + speed = 1.9 +}) + + + +--Register a projectile that can be fired by a weapon. +--Note that it also has to define what kind of weapon can fire it, and the item version of itself. +function projectile.register_projectile(name, usable_by, ammo, def) + --First, check that a table exists for that particular weapon category. If not, make it. + projectile.registered_projectiles[usable_by] = projectile.registered_projectiles[usable_by] or {} + --Then, add this projectile to said table. + projectile.registered_projectiles[usable_by][ammo] = name + + --Default initial properties for the projectile + --Including the table itself, if it wasn't already created. + def.initial_properties = def.initial_properties or {} + --The projectile is always physical. It has to hit stuff, after all. + def.initial_properties.physical = true + --The projectile also definitely has to be able to hit other entities. + def.initial_properties.collide_with_objects = true + --By default, the projectile's hitbox is half a block in size. + def.initial_properties.collisionbox = def.initial_properties.collisionbox or {-.25, 0, -.25, .25, .5, .25} + --The projectile can't be hit by players. + def.initial_properties.pointable = false + --By default, the projectile is a flat image, provided by the "image" field. + def.initial_properties.visual = def.initial_properties.visual or "sprite" + def.initial_properties.textures = def.initial_properties.textures or {def.image} + --By default, the projectile's visual size is also half size. + def.initial_properties.visual_size = def.initial_properties.visual_size or {x = 0.5, y = 0.5, z = 0.5} + --The projectile should always have some kind of visual. + def.initial_properties.is_visible = true + --The projectile won't be saved if it becomes unloaded. + def.initial_properties.static_save = false + + --During each of this entity's steps... + def.on_step = function(self, dtime, info) + --Let projectiles define their own on_step if they need to + if self._on_step then + self._on_step(self, dtime, info) + end + + --A little shorthand + local selfo = self.object + --By default, assume nothing was hit this step. + local hit = false + + --For each collision that was found... + for k, c in pairs(info.collisions) do + --If it's a node, don't do anything more than acknowledging that something was hit. + if c.type == "node" and minetest.get_node(c.node_pos).name ~= "default:glass" then + hit = true + + --If it's an object... + else + --As long as that object isn't the player who fired this projectile... + if not (c.object:is_player() and self.owner == c.object:get_player_name()) then + hit = true + c.object:punch(selfo, 1, {full_punch_interval = 1, damage_groups = {fleshy = def.damage * self.level * self.damage}}, vector.normalize(selfo:get_velocity())) + end + end + end + + --If this projectile hit something... + if hit then + --Grant the entity an on_impact function that it can define + if self.on_impact then + self:on_impact(info.collisions) + end + + --Make the projectile destroy itself. + selfo:remove() + end + end + + --Finally, register the entity. + minetest.register_entity(name, def) +end + +--The basic slingshot projectile: rocks from hardtrees +projectile.register_projectile("projectile:rock", "slingshot", "hardtrees:rock", { + image = "rock_lump.png", + damage = 5, + speed = 15 +}) + +--A helper function for mese projectiles, to check if a particular node can be powered. +local is_mesecon = function(pos) + local def = minetest.registered_nodes[minetest.get_node(pos).name] + + return def and def.mesecons +end + +--Mese projectiles for slingshots, which have medium power and can be used to power mesecon effectors. +projectile.register_projectile("projectile:mese", "slingshot", "default:mese_crystal_fragment", { + image = "default_mese_crystal_fragment.png", + damage = 7, + speed = 20, + + --When a mese crystal fragment hits something... + on_impact = function(self, collisions) + --If the mesecon mod is loaded... + if mesecon then + --For each collided thing... + for _, c in pairs(collisions) do + --If the thing is a node and can be powered... + if c.type == "node" and is_mesecon(c.node_pos) then + --Grab data about the node. + local node = minetest.get_node(c.node_pos) + + --As long as it isn't already powered... + if not mesecon.is_powered(c.node_pos) then + --Activate the node. + mesecon.activate(c.node_pos, node, nil, 0) + --Then, after 1/4 of the second, deactivate it. + minetest.after(0.25, function() mesecon.deactivate(c.node_pos, node, nil, 0) end) + end + end + end + end + end +}) + +--Obsidian shards are the strongest slingshot projectile. +projectile.register_projectile("projectile:obsidian", "slingshot", "default:obsidian_shard", { + image = "default_obsidian_shard.png", + damage = 9, + speed = 25 +}) + +--A helper functions for arrows in general, as they rotate themselves according to how they move. +local function arrow_on_step(self) + --Shorthand for velocity + local v = self.object:get_velocity() + --Set calculate rotation according to velocity + local rot = vector.dir_to_rotation(v) + + --Define a timer for itself. Based on how fast its currently moving, and how far the timer has progressed, + --this makes it seem to spin through the air, with the tip still always pointing forward. + self.timer = (self.timer or 0) + (v.x + v.y + v.z) / 30 + rot.z = rot.z + self.timer + + --Apply the calculated rotation. + self.object:set_rotation(rot) +end + +--The basic arrow, which has twice the power of a rock. +projectile.register_projectile("projectile:arrow", "bow", "projectile:arrow", { + damage = 10, + speed = 30, + + initial_properties = { + visual = "mesh", + mesh = "projectile_arrow.obj", + textures = {"projectile_arrow_texture.png"} + }, + + _on_step = arrow_on_step +}) + +--If the fire mod is present... +if fire then + --Register arrows that can combust flammable terrain. + projectile.register_projectile("projectile:arrow_fire", "bow", "projectile:arrow_fire", { + damage = 12, + speed = 35, + + initial_properties = { + visual = "mesh", + mesh = "projectile_arrow.obj", + textures = {"projectile_arrow_fire_texture.png"} + }, + + _on_step = arrow_on_step, + + --On impact... + on_impact = function(self, collisions) + --For each collision... + for _, c in pairs(collisions) do + --For each flammable node it hit... + if c.type == "node" and minetest.get_item_group(minetest.get_node(c.node_pos).name, "flammable") > 0 then + --Replace that node with fire. + minetest.set_node(c.node_pos, {name = "fire:basic_flame"}) + end + end + end + }) +end + +--Arrows made from gold, which have super high velocity and good damage. +projectile.register_projectile("projectile:arrow_high_velocity", "bow", "projectile:arrow_high_velocity", { + damage = 15, + speed = 70, + + initial_properties = { + visual = "mesh", + mesh = "projectile_arrow.obj", + textures = {"projectile_arrow_high_velocity_texture.png"} + }, + + _on_step = arrow_on_step +}) + +--If the tnt mod is present... +if tnt then + --Register arrows that explode upon contact with anything. + projectile.register_projectile("projectile:arrow_bomb", "bow", "projectile:arrow_bomb", { + --Instead of dealing direct damage, bomb arrows rely on the explosion to deal damage. + damage = 0, + --Also, it's not like fat sticks of tnt are particularly aerodynamic. + speed = 25, + + initial_properties = { + visual = "mesh", + mesh = "projectile_arrow_bomb.obj", + textures = {"projectile_arrow_bomb_texture.png"} + }, + + _on_step = arrow_on_step, + + --Upon impact, create a small explosion. + on_impact = function(self, collisions) + tnt.boom(self.object:get_pos(), {radius = 2, damage_radius = 2}) + end + }) +end diff --git a/mod.conf b/mod.conf new file mode 100644 index 0000000..ed3aa09 --- /dev/null +++ b/mod.conf @@ -0,0 +1,3 @@ +name = projectile +description = Adds a small slingshot that can launch certain small objects as projectiles, such as rocks. +optional_depends = default, fire, hardtrees, mesecons, tnt diff --git a/models/projectile_arrow.blend b/models/projectile_arrow.blend new file mode 100644 index 0000000..30314ea Binary files /dev/null and b/models/projectile_arrow.blend differ diff --git a/models/projectile_arrow.obj b/models/projectile_arrow.obj new file mode 100644 index 0000000..1d7d75d --- /dev/null +++ b/models/projectile_arrow.obj @@ -0,0 +1,752 @@ +# Blender v2.79 (sub 0) OBJ File: 'arrow.blend' +# www.blender.org +mtllib arrow.mtl +o Plane +v 1.414214 -0.500000 1.414214 +v 0.707107 -0.500000 3.535534 +v 0.707107 -0.500000 2.121320 +v 0.707107 -0.500000 0.707107 +v 1.414213 -0.500000 2.828427 +v 0.707107 -0.500000 6.363961 +v 1.414214 -0.500000 4.242640 +v 0.707107 -0.500000 4.949747 +v 0.707107 -0.500000 -2.121320 +v 1.414214 -0.500000 -4.242640 +v 1.414214 -0.500000 5.656854 +v 0.707107 -0.500000 -3.535534 +v 0.707107 -0.500000 -4.949747 +v 1.414213 -0.500000 -2.828427 +v 1.414214 -0.500000 -1.414214 +v 0.707107 -0.500000 -0.707107 +v 1.414214 -0.500000 0.000000 +v 1.414213 -0.500000 7.071068 +v 2.121320 -0.500000 6.363961 +v 2.828427 -0.500000 7.071068 +v 2.121320 -0.500000 -6.363961 +v 1.414213 -0.500000 -7.071068 +v 2.121320 -0.500000 -7.778174 +v 1.414214 -0.500000 -8.485281 +v -1.414214 -0.500000 1.414214 +v -0.707107 -0.500000 3.535534 +v -0.707107 -0.500000 2.121320 +v -0.707107 -0.500000 0.707107 +v -1.414213 -0.500000 2.828427 +v -0.707107 -0.500000 6.363961 +v -1.414214 -0.500000 4.242640 +v -0.707107 -0.500000 4.949747 +v -0.707107 -0.500000 -2.121320 +v -1.414214 -0.500000 -4.242640 +v -1.414214 -0.500000 5.656854 +v -0.707107 -0.500000 -3.535534 +v -0.707107 -0.500000 -4.949747 +v -1.414213 -0.500000 -2.828427 +v -1.414214 -0.500000 -1.414214 +v -0.707107 -0.500000 -0.707107 +v -1.414213 -0.500000 -0.000000 +v -1.414214 -0.500000 7.071067 +v -2.121320 -0.500000 6.363961 +v 0.500000 0.500000 -7.571068 +v -2.121320 -0.500000 -6.363961 +v -1.414213 -0.500000 -7.071068 +v -2.121320 -0.500000 -7.778174 +v -1.414214 -0.500000 -8.485281 +v 0.707107 -0.500000 7.778174 +v 0.500000 -1.414214 -8.485280 +v -0.707107 -0.500000 7.778174 +v 1.414214 0.500000 1.414214 +v 0.707107 0.500000 3.535534 +v 0.707107 0.500000 2.121320 +v 0.707107 0.500000 0.707107 +v 1.414213 0.500000 2.828427 +v 0.707107 0.500000 6.363961 +v 1.414214 0.500000 4.242640 +v 0.707107 0.500000 4.949747 +v 0.707107 0.500000 -2.121320 +v 1.414214 0.500000 -4.242640 +v 1.414214 0.500000 5.656854 +v 0.707107 0.500000 -3.535534 +v 0.707107 0.500000 -4.949747 +v 1.414213 0.500000 -2.828427 +v 1.414214 0.500000 -1.414214 +v 0.707107 0.500000 -0.707107 +v 1.414214 0.500000 0.000000 +v 1.414213 0.500000 7.071068 +v 2.121320 0.500000 6.363961 +v 2.828427 0.500000 7.071068 +v 2.121320 0.500000 -6.363961 +v 1.414213 0.500000 -7.071068 +v 2.121320 0.500000 -7.778174 +v 1.414214 0.500000 -8.485281 +v -1.414214 0.500000 1.414214 +v -0.707107 0.500000 3.535534 +v -0.707107 0.500000 2.121320 +v -0.707107 0.500000 0.707107 +v -1.414213 0.500000 2.828427 +v -0.707107 0.500000 6.363961 +v -1.414214 0.500000 4.242640 +v -0.707107 0.500000 4.949747 +v -0.707107 0.500000 -2.121320 +v -1.414214 0.500000 -4.242640 +v -1.414214 0.500000 5.656854 +v -0.707107 0.500000 -3.535534 +v -0.707107 0.500000 -4.949747 +v -1.414213 0.500000 -2.828427 +v -1.414214 0.500000 -1.414214 +v -0.707107 0.500000 -0.707107 +v -1.414213 0.500000 -0.000000 +v -1.414214 0.500000 7.071067 +v -2.121320 0.500000 6.363961 +v -0.500000 0.500000 -7.571068 +v -2.121320 0.500000 -6.363961 +v -1.414213 0.500000 -7.071068 +v -2.121320 0.500000 -7.778174 +v -1.414214 0.500000 -8.485281 +v 0.707107 0.500000 7.778174 +v 0.500000 -0.500000 -7.571067 +v -0.707107 0.500000 7.778174 +v -0.500000 -1.414213 1.414213 +v -0.500000 -0.707107 3.535534 +v -0.500000 -0.707107 2.121320 +v -0.500000 -0.707107 0.707107 +v -0.500000 -1.414213 2.828427 +v -0.500000 -0.707107 6.363960 +v -0.500000 -1.414213 4.242640 +v -0.500000 -0.707107 4.949747 +v -0.500000 -0.707107 -2.121320 +v -0.500000 -1.414214 -4.242640 +v -0.500000 -1.414213 5.656854 +v -0.500000 -0.707107 -3.535533 +v -0.500000 -0.707107 -4.949747 +v -0.500000 -1.414214 -2.828427 +v -0.500000 -1.414214 -1.414213 +v -0.500000 -0.707107 -0.707107 +v -0.500000 -1.414213 -0.000000 +v -0.500000 -1.414213 7.071068 +v -0.500000 -2.121320 6.363960 +v -0.500000 -2.828427 7.071067 +v -0.500000 -2.121320 -6.363960 +v -0.500000 -1.414214 -7.071067 +v -0.500001 -2.121321 -7.778174 +v -0.500000 -1.414214 -8.485281 +v -0.500000 1.414214 1.414214 +v -0.500000 0.707107 3.535533 +v -0.500000 0.707107 2.121320 +v -0.500000 0.707107 0.707107 +v -0.500000 1.414214 2.828427 +v -0.500000 0.707107 6.363960 +v -0.500000 1.414214 4.242640 +v -0.500000 0.707107 4.949747 +v -0.500000 0.707107 -2.121320 +v -0.500000 1.414213 -4.242640 +v -0.500000 1.414214 5.656854 +v -0.500000 0.707107 -3.535534 +v -0.500000 0.707107 -4.949747 +v -0.500000 1.414213 -2.828427 +v -0.500000 1.414213 -1.414213 +v -0.500000 0.707107 -0.707107 +v -0.500000 1.414213 0.000000 +v -0.500000 1.414214 7.071067 +v -0.500000 2.121320 6.363960 +v -0.499999 2.828427 7.071068 +v -0.500000 2.121320 -6.363960 +v -0.500000 1.414213 -7.071068 +v -0.500000 2.121320 -7.778174 +v -0.500000 -0.707107 7.778174 +v 0.500000 1.414213 -8.485280 +v -0.500000 0.707107 7.778173 +v 0.500000 -1.414213 1.414213 +v 0.500000 -0.707107 3.535534 +v 0.500000 -0.707107 2.121320 +v 0.500000 -0.707107 0.707107 +v 0.500000 -1.414213 2.828427 +v 0.500000 -0.707107 6.363960 +v 0.500000 -1.414213 4.242640 +v 0.500000 -0.707107 4.949747 +v 0.500000 -0.707107 -2.121320 +v 0.500000 -1.414214 -4.242640 +v 0.500000 -1.414213 5.656854 +v 0.500000 -0.707107 -3.535533 +v 0.500000 -0.707107 -4.949747 +v 0.500000 -1.414214 -2.828427 +v 0.500000 -1.414214 -1.414214 +v 0.500000 -0.707107 -0.707107 +v 0.500000 -1.414213 -0.000000 +v 0.500000 -1.414213 7.071068 +v 0.500000 -2.121320 6.363960 +v 0.500000 -2.828427 7.071067 +v 0.500000 -2.121320 -6.363960 +v 0.500000 -1.414214 -7.071067 +v 0.499999 -2.121321 -7.778174 +v 0.500000 1.414214 1.414213 +v 0.500000 0.707107 3.535533 +v 0.500000 0.707107 2.121320 +v 0.500000 0.707107 0.707107 +v 0.500000 1.414214 2.828427 +v 0.500000 0.707107 6.363960 +v 0.500000 1.414214 4.242640 +v 0.500000 0.707107 4.949747 +v 0.500000 0.707107 -2.121320 +v 0.500000 1.414213 -4.242640 +v 0.500000 1.414214 5.656854 +v 0.500000 0.707107 -3.535534 +v 0.500000 0.707107 -4.949747 +v 0.500000 1.414213 -2.828427 +v 0.500000 1.414213 -1.414213 +v 0.500000 0.707107 -0.707107 +v 0.500000 1.414213 0.000000 +v 0.500000 1.414214 7.071067 +v 0.500000 2.121320 6.363960 +v 0.500000 2.828427 7.071068 +v 0.500000 2.121320 -6.363960 +v 0.500000 1.414213 -7.071068 +v 0.500000 2.121320 -7.778175 +v 0.500000 -0.707107 7.778174 +v -0.500000 1.414213 -8.485280 +v 0.500000 0.707107 7.778173 +v -2.828427 -0.500000 7.071068 +v -0.500000 -0.500000 9.399494 +v 0.500000 0.500000 9.399494 +v 0.000000 0.000000 9.899495 +v -0.500000 0.500000 9.399495 +v -0.500000 -0.500000 -7.571067 +v -2.828427 0.500000 7.071068 +v 0.000000 -0.000000 -7.071067 +v 0.500000 -0.500000 9.399494 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.263787 0.328685 +vt 0.263791 0.328637 +vt 0.263991 0.328690 +vt 0.263991 0.328694 +vt 0.214212 0.864368 +vt 0.222371 0.856209 +vt 0.261767 0.895605 +vt 0.253608 0.903764 +vt 0.290723 0.334866 +vt 0.291075 0.328985 +vt 0.528191 0.331551 +vt 0.525993 0.386898 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328697 +vt 0.264011 0.328697 +vt 0.264004 0.328875 +vt 0.263965 0.328872 +vt 0.264007 0.328711 +vt 0.264010 0.328712 +vt 0.264013 0.328695 +vt 0.264013 0.328696 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.266443 0.329293 +vt 0.266480 0.328764 +vt 0.264236 0.328705 +vt 0.264232 0.328753 +vt 0.264031 0.328701 +vt 0.264032 0.328696 +vt 0.127260 0.895605 +vt 0.166657 0.856209 +vt 0.174816 0.864368 +vt 0.135420 0.903764 +vt 0.264986 0.539540 +vt 0.221499 0.538766 +vt 0.259097 0.350166 +vt 0.263820 0.350399 +vt 0.264024 0.328415 +vt 0.264084 0.328420 +vt 0.264018 0.328670 +vt 0.264013 0.328670 +vt 0.263534 0.330646 +vt 0.263958 0.330675 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.262586 0.000144 +vt 0.332736 0.001680 +vt 0.271686 0.295561 +vt 0.264389 0.295164 +vt 0.261767 0.777417 +vt 0.222371 0.816813 +vt 0.214212 0.808654 +vt 0.253608 0.769258 +vt 0.237239 0.322551 +vt 0.236980 0.328445 +vt 0.000144 0.333901 +vt 0.000144 0.278418 +vt 0.135420 0.769258 +vt 0.174816 0.808654 +vt 0.166657 0.816813 +vt 0.127260 0.777417 +vt 0.261543 0.328626 +vt 0.261579 0.328098 +vt 0.264012 0.328693 +vt 0.264011 0.328693 +vt 0.264009 0.328695 +vt 0.264009 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.214212 0.769258 +vt 0.264759 0.325665 +vt 0.264101 0.325619 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.243722 0.276484 +vt 0.262222 0.323862 +vt 0.263856 0.328252 +vt 0.263998 0.328655 +vt 0.264010 0.328691 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264012 0.328695 +vt 0.264014 0.328692 +vt 0.264037 0.328661 +vt 0.264284 0.328314 +vt 0.266936 0.324468 +vt 0.294910 0.282215 +vt 0.261767 0.816813 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264008 0.328692 +vt 0.263978 0.328664 +vt 0.263637 0.328354 +vt 0.259844 0.325020 +vt 0.217631 0.289544 +vt 0.174816 0.769258 +vt 0.127260 0.816813 +vt 0.222045 0.345299 +vt 0.260135 0.330137 +vt 0.263656 0.328820 +vt 0.263979 0.328706 +vt 0.264008 0.328696 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264009 0.328698 +vt 0.263986 0.328722 +vt 0.263738 0.328996 +vt 0.261067 0.332041 +vt 0.232582 0.365881 +vt 0.127260 0.856209 +vt 0.174816 0.903764 +vt 0.286998 0.371470 +vt 0.266052 0.332646 +vt 0.264191 0.329058 +vt 0.264027 0.328729 +vt 0.264013 0.328698 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.264012 0.328695 +vt 0.264014 0.328697 +vt 0.264039 0.328715 +vt 0.264317 0.328913 +vt 0.267405 0.331039 +vt 0.301391 0.353694 +vt 0.214212 0.903764 +vt 0.261767 0.856209 +vt 0.317448 0.300270 +vt 0.268941 0.326157 +vt 0.264464 0.328471 +vt 0.264053 0.328675 +vt 0.264015 0.328693 +vt 0.264012 0.328695 +vt 0.264011 0.328695 +vt 0.264011 0.328695 +vt 0.918137 0.349711 +vt 0.907685 0.338998 +vt 0.884505 0.407096 +vt 0.933027 0.412203 +vt 0.923744 0.342430 +vt 0.901205 0.308635 +vt 0.922199 0.238865 +vt 0.926777 0.077413 +vt 0.916077 0.296753 +vt 0.916918 0.254965 +vt 0.884473 0.416247 +vt 0.900855 0.482011 +vt 0.871713 0.543522 +vt 0.897131 0.600376 +vt 0.898388 0.631185 +vt 0.887593 0.640859 +vt 0.893448 0.605316 +vt 0.910441 0.652319 +vt 0.870944 0.686076 +vt 0.904282 0.768485 +vt 0.868130 0.913286 +vt 0.936516 0.664849 +vt 0.862115 0.688417 +vt 0.853767 0.487379 +vt 0.853785 0.510596 +vt 0.833433 0.579141 +vt 0.833433 0.476485 +vt 0.863264 0.468243 +vt 0.861966 0.512091 +vt 0.869761 0.478964 +vt 0.868604 0.496772 +vt 0.877416 0.471879 +vt 0.874085 0.499260 +vt 0.921723 0.539791 +vt 0.925513 0.428484 +vt 0.926488 0.476805 +vt 0.932851 0.483398 +vt 0.931934 0.499076 +vt 0.926163 0.500700 +vt 0.940130 0.474313 +vt 0.936788 0.513130 +vt 0.948239 0.490968 +vt 0.946357 0.511756 +vt 0.971350 0.479091 +vt 0.965799 0.571992 +vt 0.513895 0.684827 +vt 0.515039 0.698000 +vt 0.515038 0.711068 +vt 0.513895 0.724214 +vt 0.516184 0.698105 +vt 0.516179 0.710989 +vt 0.661668 0.731515 +vt 0.637061 0.703903 +vt 0.662420 0.676084 +vt 0.749009 0.698973 +vt 0.750844 0.712300 +vt 0.749713 0.714057 +vt 0.747785 0.703045 +vt 0.748399 0.681574 +vt 0.753810 0.723869 +vt 0.613359 0.484215 +vt 0.658072 0.480750 +vt 0.639202 0.456585 +vt 0.626431 0.464109 +vt 0.633103 0.424898 +vt 0.626732 0.451525 +vt 0.612169 0.676971 +vt 0.611986 0.731041 +vt 0.629091 0.947857 +vt 0.632778 0.960024 +vt 0.643421 0.988537 +vt 0.641499 0.957453 +vt 0.612994 0.926093 +vt 0.651987 0.935965 +vt 0.698938 0.586457 +vt 0.716059 0.630118 +vt 0.566712 0.588531 +vt 0.553116 0.635417 +vt 0.718411 0.775601 +vt 0.705909 0.827146 +vt 0.566787 0.820968 +vt 0.553121 0.773545 +vn -0.7071 0.7071 -0.0000 +vn 0.7071 0.7071 -0.0000 +vn 0.7071 -0.7071 -0.0000 +vn -0.7071 -0.7071 -0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn -0.7071 -0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7042 -0.7042 0.0900 +vn -0.7042 -0.7042 0.0900 +vn 0.7042 0.7042 0.0900 +vn -0.7042 0.7042 0.0900 +vn -0.7060 -0.7060 -0.0558 +vn 0.7060 -0.7060 -0.0558 +vn 0.7060 0.7060 -0.0558 +vn -0.7060 0.7060 -0.0558 +usemtl Material.002 +s off +f 88/1/1 87/2/1 138/3/1 139/4/1 +f 184/5/2 60/6/2 63/7/2 187/8/2 +f 3/9/3 155/10/3 156/11/3 4/12/3 +f 132/13/1 81/14/1 102/15/1 152/16/1 +f 134/17/1 83/18/1 81/19/1 132/20/1 +f 187/8/2 63/7/2 64/21/2 188/22/2 +f 67/23/2 60/6/2 184/5/2 191/24/2 +f 178/25/2 54/26/2 55/27/2 179/28/2 +f 91/29/1 142/30/1 135/31/1 84/32/1 +f 128/33/1 77/34/1 83/18/1 134/17/1 +f 84/32/1 135/31/1 138/3/1 87/2/1 +f 78/35/1 129/36/1 130/37/1 79/38/1 +f 77/34/1 128/33/1 129/36/1 78/35/1 +f 100/39/2 57/40/2 181/41/2 201/42/2 +f 181/43/2 57/44/2 59/45/2 183/46/2 +f 105/47/4 27/48/4 28/49/4 106/50/4 +f 183/46/2 59/45/2 53/51/2 177/52/2 +f 79/38/1 130/37/1 142/30/1 91/29/1 +f 177/52/2 53/51/2 54/26/2 178/25/2 +f 111/53/4 33/54/4 36/55/4 114/56/4 +f 108/57/4 30/58/4 32/59/4 110/60/4 +f 51/61/4 30/62/4 108/63/4 150/64/4 +f 160/65/3 8/66/3 6/67/3 158/68/3 +f 199/69/3 158/70/3 6/71/3 49/72/3 +f 155/10/3 3/9/3 2/73/3 154/74/3 +f 40/75/4 33/54/4 111/53/4 118/76/4 +f 16/77/3 168/78/3 161/79/3 9/80/3 +f 179/28/2 55/27/2 67/23/2 191/24/2 +f 9/80/3 161/79/3 164/81/3 12/82/3 +f 154/74/3 2/73/3 8/66/3 160/65/3 +f 36/55/4 37/83/4 115/84/4 114/56/4 +f 108/63/5 120/85/5 150/64/5 +f 110/60/4 32/59/4 26/86/4 104/87/4 +f 165/88/3 13/89/3 12/82/3 164/81/3 +f 104/87/4 26/86/4 27/48/4 105/47/4 +f 4/12/3 156/11/3 168/78/3 16/77/3 +f 106/50/4 28/49/4 40/75/4 118/76/4 +f 113/90/5 108/57/5 110/60/5 +f 109/91/5 110/60/5 104/87/5 +f 107/92/5 104/87/5 105/47/5 +f 103/93/5 105/47/5 106/50/5 +f 119/94/5 106/50/5 118/76/5 +f 117/95/5 118/76/5 111/53/5 +f 116/96/5 111/53/5 114/56/5 +f 112/97/5 114/56/5 115/84/5 +f 34/98/6 37/83/6 36/55/6 +f 38/99/6 36/55/6 33/54/6 +f 39/100/6 33/54/6 40/75/6 +f 41/101/6 40/75/6 28/49/6 +f 25/102/6 28/49/6 27/48/6 +f 29/103/6 27/48/6 26/86/6 +f 31/104/6 26/86/6 32/59/6 +f 35/105/6 32/59/6 30/58/6 +f 30/62/6 51/61/6 42/106/6 +f 162/107/7 165/88/7 164/81/7 +f 166/108/7 164/81/7 161/79/7 +f 167/109/7 161/79/7 168/78/7 +f 169/110/7 168/78/7 156/11/7 +f 153/111/7 156/11/7 155/10/7 +f 157/112/7 155/10/7 154/74/7 +f 159/113/7 154/74/7 160/65/7 +f 163/114/7 160/65/7 158/68/7 +f 158/70/7 199/69/7 170/115/7 +f 6/71/6 18/116/6 49/72/6 +f 11/117/6 6/67/6 8/66/6 +f 7/118/6 8/66/6 2/73/6 +f 5/119/6 2/73/6 3/9/6 +f 1/120/6 3/9/6 4/12/6 +f 17/121/6 4/12/6 16/77/6 +f 15/122/6 16/77/6 9/80/6 +f 14/123/6 9/80/6 12/82/6 +f 10/124/6 12/82/6 13/89/6 +f 61/125/8 64/21/8 63/7/8 +f 65/126/8 63/7/8 60/6/8 +f 66/127/8 60/6/8 67/23/8 +f 68/128/8 67/23/8 55/27/8 +f 52/129/8 55/27/8 54/26/8 +f 56/130/8 54/26/8 53/51/8 +f 58/131/8 53/51/8 59/45/8 +f 62/132/8 59/45/8 57/44/8 +f 57/40/8 100/39/8 69/133/8 +f 181/41/7 193/134/7 201/42/7 +f 186/135/7 181/43/7 183/46/7 +f 182/136/7 183/46/7 177/52/7 +f 180/137/7 177/52/7 178/25/7 +f 176/138/7 178/25/7 179/28/7 +f 192/139/7 179/28/7 191/24/7 +f 190/140/7 191/24/7 184/5/7 +f 189/141/7 184/5/7 187/8/7 +f 185/142/7 187/8/7 188/22/7 +f 136/143/5 139/4/5 138/3/5 +f 140/144/5 138/3/5 135/31/5 +f 141/145/5 135/31/5 142/30/5 +f 143/146/5 142/30/5 130/37/5 +f 127/147/5 130/37/5 129/36/5 +f 131/148/5 129/36/5 128/33/5 +f 133/149/5 128/33/5 134/17/5 +f 137/150/5 134/17/5 132/20/5 +f 132/13/5 152/16/5 144/151/5 +f 81/14/8 93/152/8 102/15/8 +f 86/153/8 81/19/8 83/18/8 +f 82/154/8 83/18/8 77/34/8 +f 80/155/8 77/34/8 78/35/8 +f 76/156/8 78/35/8 79/38/8 +f 92/157/8 79/38/8 91/29/8 +f 90/158/8 91/29/8 84/32/8 +f 89/159/8 84/32/8 87/2/8 +f 85/160/8 87/2/8 88/1/8 +f 132/13/9 144/151/9 193/134/9 181/41/9 +f 137/150/10 132/20/10 181/43/10 186/135/10 +f 134/17/9 137/150/9 186/135/9 183/46/9 +f 133/149/10 134/17/10 183/46/10 182/136/10 +f 128/33/9 133/149/9 182/136/9 177/52/9 +f 131/148/10 128/33/10 177/52/10 180/137/10 +f 129/36/9 131/148/9 180/137/9 178/25/9 +f 127/147/10 129/36/10 178/25/10 176/138/10 +f 130/37/9 127/147/9 176/138/9 179/28/9 +f 143/146/10 130/37/10 179/28/10 192/139/10 +f 142/30/9 143/146/9 192/139/9 191/24/9 +f 141/145/10 142/30/10 191/24/10 190/140/10 +f 135/31/9 141/145/9 190/140/9 184/5/9 +f 140/144/10 135/31/10 184/5/10 189/141/10 +f 138/3/9 140/144/9 189/141/9 187/8/9 +f 136/143/10 138/3/10 187/8/10 185/142/10 +f 139/4/9 136/143/9 185/142/9 188/22/9 +f 6/71/11 57/40/11 69/133/11 18/116/11 +f 11/117/12 62/132/12 57/44/12 6/67/12 +f 8/66/11 59/45/11 62/132/11 11/117/11 +f 7/118/12 58/131/12 59/45/12 8/66/12 +f 2/73/11 53/51/11 58/131/11 7/118/11 +f 5/119/12 56/130/12 53/51/12 2/73/12 +f 3/9/11 54/26/11 56/130/11 5/119/11 +f 1/120/12 52/129/12 54/26/12 3/9/12 +f 4/12/11 55/27/11 52/129/11 1/120/11 +f 17/121/12 68/128/12 55/27/12 4/12/12 +f 16/77/11 67/23/11 68/128/11 17/121/11 +f 15/122/12 66/127/12 67/23/12 16/77/12 +f 9/80/11 60/6/11 66/127/11 15/122/11 +f 14/123/12 65/126/12 60/6/12 9/80/12 +f 12/82/11 63/7/11 65/126/11 14/123/11 +f 10/124/12 61/125/12 63/7/12 12/82/12 +f 13/89/11 64/21/11 61/125/11 10/124/11 +f 108/63/13 158/70/13 170/115/13 120/85/13 +f 113/90/14 163/114/14 158/68/14 108/57/14 +f 110/60/13 160/65/13 163/114/13 113/90/13 +f 109/91/14 159/113/14 160/65/14 110/60/14 +f 104/87/13 154/74/13 159/113/13 109/91/13 +f 107/92/14 157/112/14 154/74/14 104/87/14 +f 105/47/13 155/10/13 157/112/13 107/92/13 +f 103/93/14 153/111/14 155/10/14 105/47/14 +f 106/50/13 156/11/13 153/111/13 103/93/13 +f 119/94/14 169/110/14 156/11/14 106/50/14 +f 118/76/13 168/78/13 169/110/13 119/94/13 +f 117/95/14 167/109/14 168/78/14 118/76/14 +f 111/53/13 161/79/13 167/109/13 117/95/13 +f 116/96/14 166/108/14 161/79/14 111/53/14 +f 114/56/13 164/81/13 166/108/13 116/96/13 +f 112/97/14 162/107/14 164/81/14 114/56/14 +f 115/84/13 165/88/13 162/107/13 112/97/13 +f 123/161/14 173/162/14 165/163/14 115/164/14 +f 124/165/13 174/166/13 173/162/13 123/161/13 +f 125/167/14 175/168/14 174/166/14 124/165/14 +f 126/169/13 50/170/13 175/168/13 125/167/13 +f 101/171/15 209/172/15 44/173/15 +f 200/174/9 149/175/9 198/176/9 151/177/9 +f 149/175/10 148/178/10 197/179/10 198/176/10 +f 148/178/9 147/180/9 196/181/9 197/179/9 +f 147/180/10 139/182/10 188/183/10 196/181/10 +f 21/184/12 72/185/12 64/186/12 13/187/12 +f 22/188/11 73/189/11 72/185/11 21/184/11 +f 23/190/12 74/191/12 73/189/12 22/188/12 +f 24/192/11 75/193/11 74/191/11 23/190/11 +f 95/194/11 209/172/11 207/195/11 +f 44/173/15 75/193/15 24/192/15 101/171/15 +f 48/196/15 47/197/15 98/198/15 99/199/15 +f 47/197/16 46/200/16 97/201/16 98/198/16 +f 46/200/15 45/202/15 96/203/15 97/201/15 +f 45/202/16 37/204/16 88/205/16 96/203/16 +f 30/62/15 42/106/15 93/152/15 81/14/15 +f 35/105/16 30/58/16 81/19/16 86/153/16 +f 32/59/15 35/105/15 86/153/15 83/18/15 +f 31/104/16 32/59/16 83/18/16 82/154/16 +f 26/86/15 31/104/15 82/154/15 77/34/15 +f 29/103/16 26/86/16 77/34/16 80/155/16 +f 27/48/15 29/103/15 80/155/15 78/35/15 +f 25/102/16 27/48/16 78/35/16 76/156/16 +f 28/49/15 25/102/15 76/156/15 79/38/15 +f 41/101/16 28/49/16 79/38/16 92/157/16 +f 40/75/15 41/101/15 92/157/15 91/29/15 +f 39/100/16 40/75/16 91/29/16 90/158/16 +f 33/54/15 39/100/15 90/158/15 84/32/15 +f 38/99/16 33/54/16 84/32/16 89/159/16 +f 36/55/15 38/99/15 89/159/15 87/2/15 +f 34/98/16 36/55/16 87/2/16 85/160/16 +f 37/83/15 34/98/15 85/160/15 88/1/15 +f 42/206/11 43/207/11 94/208/11 93/209/11 +f 43/207/15 202/210/15 208/211/15 94/208/15 +f 204/212/12 205/213/12 210/214/12 +f 19/215/11 70/216/11 71/217/11 20/218/11 +f 18/219/15 69/220/15 70/216/15 19/215/15 +f 120/221/9 170/222/9 171/223/9 121/224/9 +f 121/224/13 171/223/13 172/225/13 122/226/13 +f 210/214/14 205/213/14 203/227/14 +f 206/228/10 205/213/10 204/212/10 +f 145/229/9 146/230/9 195/231/9 194/232/9 +f 144/233/13 145/229/13 194/232/13 193/234/13 +f 71/217/12 204/212/12 210/214/12 20/218/12 +f 146/230/10 206/228/10 204/212/10 195/231/10 +f 203/227/16 206/228/16 208/211/16 202/210/16 +f 172/225/14 210/214/14 203/227/14 122/226/14 +f 203/227/16 205/213/16 206/228/16 +f 171/223/7 170/222/7 210/214/7 172/225/7 +f 199/235/7 210/214/7 170/222/7 +f 19/215/6 20/218/6 210/214/6 18/219/6 +f 49/236/6 18/219/6 210/214/6 +f 199/235/17 49/236/17 210/214/17 +f 202/210/6 43/207/6 42/206/6 +f 120/221/5 122/226/5 150/237/5 +f 203/227/18 51/238/18 150/237/18 +f 203/227/6 202/210/6 51/238/6 +f 122/226/5 203/227/5 150/237/5 +f 202/210/6 42/206/6 51/238/6 +f 120/221/5 121/224/5 122/226/5 +f 70/216/8 69/220/8 71/217/8 +f 71/217/8 69/220/8 100/239/8 +f 204/212/8 71/217/8 100/239/8 +f 100/239/19 201/240/19 204/212/19 +f 201/240/7 195/231/7 204/212/7 +f 193/234/7 195/231/7 201/240/7 +f 194/232/7 195/231/7 193/234/7 +f 44/173/13 95/194/13 200/174/13 151/177/13 +f 146/230/5 152/241/5 206/228/5 +f 152/241/20 102/242/20 206/228/20 +f 93/209/8 208/211/8 102/242/8 +f 208/211/8 206/228/8 102/242/8 +f 146/230/5 144/233/5 152/241/5 +f 146/230/5 145/229/5 144/233/5 +f 93/209/8 94/208/8 208/211/8 +f 207/195/9 101/171/9 50/170/9 126/169/9 +f 95/194/11 207/195/11 48/196/11 99/199/11 +f 44/173/13 209/172/13 95/194/13 +f 207/195/9 209/172/9 101/171/9 +f 37/204/21 207/195/21 115/164/21 +f 101/171/22 13/187/22 165/163/22 +f 64/186/23 44/173/23 188/183/23 +f 95/194/24 88/205/24 139/182/24 +f 200/174/5 95/194/5 148/178/5 149/175/5 +f 97/201/8 96/203/8 88/205/8 +f 115/164/5 207/195/5 124/165/5 +f 95/194/8 97/201/8 88/205/8 +f 139/182/5 148/178/5 95/194/5 +f 95/194/8 99/199/8 98/198/8 97/201/8 +f 148/178/5 139/182/5 147/180/5 +f 48/196/6 207/195/6 46/200/6 47/197/6 +f 115/164/5 124/165/5 123/161/5 +f 207/195/5 126/169/5 125/167/5 124/165/5 +f 37/204/6 46/200/6 207/195/6 +f 45/202/6 46/200/6 37/204/6 +f 64/186/8 72/185/8 73/189/8 +f 197/179/7 44/173/7 151/177/7 198/176/7 +f 165/163/7 173/162/7 174/166/7 +f 165/163/7 174/166/7 101/171/7 +f 21/184/6 13/187/6 22/188/6 +f 22/188/6 101/171/6 24/192/6 23/190/6 +f 50/170/7 101/171/7 174/166/7 175/168/7 +f 22/188/6 13/187/6 101/171/6 +f 64/186/8 73/189/8 44/173/8 +f 196/181/7 188/183/7 197/179/7 +f 75/193/8 44/173/8 73/189/8 74/191/8 +f 197/179/7 188/183/7 44/173/7 diff --git a/models/projectile_arrow_bomb.blend b/models/projectile_arrow_bomb.blend new file mode 100644 index 0000000..8384a71 Binary files /dev/null and b/models/projectile_arrow_bomb.blend differ diff --git a/models/projectile_arrow_bomb.obj b/models/projectile_arrow_bomb.obj new file mode 100644 index 0000000..a4828a2 --- /dev/null +++ b/models/projectile_arrow_bomb.obj @@ -0,0 +1,864 @@ +# Blender v2.79 (sub 0) OBJ File: 'arrow.blend' +# www.blender.org +mtllib arrow_bomb.mtl +o Plane +v 0.707107 -0.500000 -3.535534 +v 1.414213 -0.500000 -5.656854 +v 0.707106 -0.500000 -4.949747 +v 0.707107 -0.500000 -6.363960 +v 1.414213 -0.500000 -4.242640 +v 1.414213 -0.500000 -2.828427 +v 2.121320 -0.500000 -7.778174 +v 1.414213 -0.500000 -8.485281 +v 2.121320 -0.500000 -9.192388 +v 1.414213 -0.500000 -9.899494 +v -0.707107 -0.500000 -3.535534 +v -1.414214 -0.500000 -5.656854 +v -0.707107 -0.500000 -4.949747 +v -0.707107 -0.500000 -6.363960 +v -1.414214 -0.500000 -4.242640 +v -1.414214 -0.500000 -2.828427 +v 0.500000 0.500000 -8.985281 +v -2.121320 -0.500000 -7.778174 +v -1.414214 -0.500000 -8.485281 +v -2.121321 -0.500000 -9.192388 +v -1.414214 -0.500000 -9.899494 +v 0.500000 -1.414214 -9.899493 +v 0.707107 0.500000 -3.535534 +v 1.414213 0.500000 -5.656854 +v 0.707106 0.500000 -4.949747 +v 0.707107 0.500000 -6.363960 +v 1.414213 0.500000 -4.242640 +v 1.414213 0.500000 -2.828427 +v 2.121320 0.500000 -7.778174 +v 1.414213 0.500000 -8.485281 +v 2.121320 0.500000 -9.192388 +v 1.414213 0.500000 -9.899494 +v -0.707107 0.500000 -3.535534 +v -1.414214 0.500000 -5.656854 +v -0.707107 0.500000 -4.949747 +v -0.707107 0.500000 -6.363960 +v -1.414214 0.500000 -4.242640 +v -1.414214 0.500000 -2.828427 +v -0.500000 0.500000 -8.985281 +v -2.121320 0.500000 -7.778174 +v -1.414214 0.500000 -8.485281 +v -2.121321 0.500000 -9.192388 +v -1.414214 0.500000 -9.899494 +v 0.500000 -0.500000 -8.985280 +v -0.500000 -0.707107 -3.535534 +v -0.500000 -1.414214 -5.656854 +v -0.500000 -0.707107 -4.949747 +v -0.500000 -0.707107 -6.363960 +v -0.500000 -1.414214 -4.242640 +v -0.500000 -1.414214 -2.828427 +v -0.500000 -2.121320 -7.778173 +v -0.500000 -1.414214 -8.485280 +v -0.500001 -2.121321 -9.192388 +v -0.500001 -1.414214 -9.899494 +v -0.500000 0.707107 -3.535534 +v -0.500000 1.414213 -5.656854 +v -0.500000 0.707107 -4.949747 +v -0.500000 0.707107 -6.363960 +v -0.500000 1.414213 -4.242640 +v -0.500000 1.414213 -2.828427 +v -0.500000 2.121320 -7.778173 +v -0.500000 1.414213 -8.485281 +v -0.500000 2.121320 -9.192388 +v 0.500000 1.414213 -9.899493 +v 0.500000 -0.707107 -3.535534 +v 0.500000 -1.414214 -5.656854 +v 0.500000 -0.707107 -4.949747 +v 0.500000 -0.707107 -6.363960 +v 0.500000 -1.414214 -4.242640 +v 0.500000 -1.414214 -2.828427 +v 0.500000 -2.121320 -7.778173 +v 0.500000 -1.414214 -8.485280 +v 0.499999 -2.121321 -9.192388 +v 0.500000 0.707107 -3.535534 +v 0.500000 1.414213 -5.656854 +v 0.500000 0.707107 -4.949747 +v 0.500000 0.707107 -6.363960 +v 0.500000 1.414213 -4.242640 +v 0.500000 1.414213 -2.828427 +v 0.500000 2.121320 -7.778173 +v 0.500000 1.414213 -8.485281 +v 0.500000 2.121320 -9.192389 +v -0.500000 1.414213 -9.899493 +v -0.500001 -0.500000 -8.985281 +v -0.000000 -0.000000 -8.485280 +v -0.707107 -0.500000 -2.828427 +v 0.707107 -0.500000 -2.828427 +v -0.707107 0.500000 -2.828427 +v 0.707107 0.500000 -2.828427 +v -0.500000 0.707107 -2.828427 +v -0.500000 -0.707107 -2.828427 +v 0.500000 0.707107 -2.828427 +v 0.500000 -0.707107 -2.828427 +v 1.414213 -0.500000 -1.414214 +v -1.414214 -0.500000 -1.414213 +v 1.414213 0.500000 -1.414214 +v -1.414214 0.500000 -1.414213 +v -0.500000 -1.414214 -1.414213 +v -0.500000 1.414213 -1.414213 +v 0.500000 -1.414214 -1.414214 +v 0.500000 1.414213 -1.414213 +v 0.750000 -2.121320 -0.707107 +v -0.750000 -2.121320 -0.707107 +v -0.750000 2.121320 -0.707107 +v 0.750000 2.121320 -0.707107 +v -2.121320 -0.750000 -0.707107 +v -2.121320 0.750000 -0.707107 +v 2.121320 0.750000 -0.707107 +v 2.121320 -0.750000 -0.707107 +v 0.500000 1.414213 0.000000 +v 0.500000 -1.414214 0.000000 +v -0.500000 1.414213 0.000000 +v -0.500000 -1.414214 0.000000 +v -1.414213 0.500000 0.000000 +v 1.414213 0.500000 0.000000 +v -1.414213 -0.500000 0.000000 +v 1.414213 -0.500000 0.000000 +v 2.121320 -0.750000 -2.121320 +v 2.121320 0.750000 -2.121320 +v -2.121320 0.750000 -2.121320 +v -2.121320 -0.750000 -2.121320 +v 0.750000 2.121320 -2.121320 +v -0.750000 2.121320 -2.121320 +v -0.750000 -2.121320 -2.121320 +v 0.750000 -2.121320 -2.121320 +v 1.414214 -0.500000 1.414214 +v -1.414213 -0.500000 1.414214 +v 1.414214 0.500000 1.414214 +v -1.414213 0.500000 1.414214 +v -0.500000 -1.414214 1.414214 +v -0.500000 1.414213 1.414214 +v 0.500000 -1.414214 1.414214 +v 0.500000 1.414213 1.414214 +v 0.750000 -2.121320 2.121321 +v -0.750000 -2.121320 2.121321 +v -0.750000 2.121320 2.121321 +v 0.750000 2.121320 2.121321 +v -2.121320 -0.750000 2.121321 +v -2.121320 0.750000 2.121321 +v 2.121320 0.750000 2.121321 +v 2.121320 -0.750000 2.121321 +v 0.500000 1.414213 2.828428 +v 0.500000 -1.414214 2.828427 +v -0.500000 1.414213 2.828428 +v -0.500000 -1.414214 2.828428 +v -1.414213 0.500000 2.828427 +v 1.414214 0.500000 2.828427 +v -1.414213 -0.500000 2.828427 +v 1.414214 -0.500000 2.828427 +v 2.121320 -0.750000 0.707107 +v 2.121320 0.750000 0.707107 +v -2.121320 0.750000 0.707107 +v -2.121320 -0.750000 0.707107 +v 0.750000 2.121320 0.707107 +v -0.750000 2.121320 0.707107 +v -0.750000 -2.121320 0.707107 +v 0.750000 -2.121320 0.707107 +v 0.000000 0.000000 9.899495 +v 1.414214 -0.500000 4.242641 +v -1.414213 -0.500000 4.242641 +v 1.414214 0.500000 4.242641 +v -1.414213 0.500000 4.242641 +v -0.500000 -1.414214 4.242641 +v -0.500000 1.414213 4.242641 +v 0.500000 -1.414214 4.242641 +v 0.500000 1.414213 4.242641 +v 0.750000 -2.121320 4.949748 +v -0.750000 -2.121320 4.949748 +v -0.750000 2.121320 4.949748 +v 0.750000 2.121320 4.949748 +v -2.121320 -0.750000 4.949748 +v -2.121320 0.750000 4.949748 +v 2.121320 0.750000 4.949748 +v 2.121320 -0.750000 4.949748 +v 0.500000 1.414213 5.656856 +v 0.500000 -1.414214 5.656856 +v -0.500000 1.414213 5.656856 +v -0.500000 -1.414214 5.656856 +v -1.414213 0.500000 5.656856 +v 1.414214 0.500000 5.656856 +v -1.414213 -0.500000 5.656856 +v 1.414214 -0.500000 5.656856 +v 2.121320 -0.750000 3.535535 +v 2.121320 0.750000 3.535535 +v -2.121320 0.750000 3.535535 +v -2.121320 -0.750000 3.535535 +v 0.750000 2.121320 3.535535 +v -0.750000 2.121320 3.535535 +v -0.750000 -2.121320 3.535535 +v 0.750000 -2.121320 3.535535 +v 1.414214 -0.500000 7.071069 +v -1.414213 -0.500000 7.071069 +v 1.414214 0.500000 7.071069 +v -1.414213 0.500000 7.071069 +v -0.500000 -1.414214 7.071069 +v -0.500000 1.414213 7.071069 +v 0.500000 -1.414214 7.071069 +v 0.500000 1.414213 7.071069 +v 0.750000 -2.121320 7.778175 +v -0.749999 -2.121320 7.778175 +v -0.750000 2.121320 7.778175 +v 0.750000 2.121320 7.778175 +v -2.121320 -0.750000 7.778175 +v -2.121320 0.750000 7.778175 +v 2.121320 0.750000 7.778175 +v 2.121320 -0.750000 7.778175 +v 0.500000 1.414213 8.485283 +v 0.500000 -1.414214 8.485282 +v -0.500000 1.414213 8.485283 +v -0.500000 -1.414214 8.485283 +v -1.414213 0.500000 8.485282 +v 1.414214 0.500000 8.485282 +v -1.414213 -0.500000 8.485282 +v 1.414214 -0.500000 8.485282 +v 2.121320 -0.750000 6.363962 +v 2.121320 0.750000 6.363962 +v -2.121320 0.750000 6.363962 +v -2.121320 -0.750000 6.363962 +v 0.750000 2.121320 6.363962 +v -0.750000 2.121320 6.363962 +v -0.749999 -2.121320 6.363962 +v 0.750000 -2.121320 6.363962 +v 0.750000 -2.121320 9.192389 +v -0.749999 -2.121320 9.192389 +v -0.750000 2.121320 9.192389 +v 0.750000 2.121320 9.192389 +v -2.121320 -0.750000 9.192389 +v -2.121320 0.750000 9.192389 +v 2.121320 0.750000 9.192389 +v 2.121320 -0.750000 9.192389 +v 0.500000 1.414213 9.899496 +v 0.500000 -1.414214 9.899495 +v -0.500000 1.414213 9.899496 +v -0.499999 -1.414214 9.899496 +v -1.414213 0.500000 9.899495 +v 1.414214 0.500000 9.899495 +v -1.414213 -0.500000 9.899495 +v 1.414214 -0.500000 9.899495 +v -2.121320 -0.500000 -3.535534 +v -2.121320 0.500000 -3.535534 +v -2.828427 -0.500000 -2.828427 +v -2.828427 0.500000 -2.828427 +v -4.242640 -0.500000 -4.242640 +v -4.242640 0.500000 -4.242640 +v -3.535534 -0.500000 -4.949747 +v -3.535534 0.500000 -4.949747 +v -4.242641 0.500000 -5.656854 +v -4.242641 -0.500000 -5.656854 +v -3.535534 -0.500000 -6.363960 +v -3.535534 0.500000 -6.363960 +v -2.828427 -0.500000 -7.071067 +v -2.828427 0.500000 -7.071067 +v -4.242641 -0.500000 -7.071067 +v -4.242641 0.500000 -7.071067 +v -3.535534 -0.500000 -7.778173 +v -3.535534 0.500000 -7.778173 +v -2.828427 0.500000 -5.656854 +v -2.828427 -0.500000 -5.656854 +vt 0.842752 0.750114 +vt 0.826582 0.736555 +vt 0.832377 0.734519 +vt 0.843235 0.749566 +vt 0.891716 0.704490 +vt 0.899886 0.715674 +vt 0.853858 0.743432 +vt 0.851965 0.741370 +vt 0.845884 0.749971 +vt 0.845375 0.749488 +vt 0.925673 0.695564 +vt 0.920557 0.685816 +vt 0.818726 0.634450 +vt 0.829206 0.636303 +vt 0.830850 0.666345 +vt 0.815307 0.667023 +vt 0.839124 0.849831 +vt 0.820566 0.852219 +vt 0.825395 0.770877 +vt 0.832468 0.772926 +vt 0.829845 0.888447 +vt 0.842765 0.887755 +vt 0.942495 0.804012 +vt 0.935826 0.813277 +vt 0.904597 0.799836 +vt 0.911370 0.785767 +vt 0.854954 0.761494 +vt 0.856768 0.758610 +vt 0.842908 0.752411 +vt 0.843456 0.752855 +vt 0.845597 0.752646 +vt 0.846040 0.752098 +vt 0.845388 0.786616 +vt 0.843992 0.754525 +vt 0.841120 0.752307 +vt 0.773207 0.790948 +vt 0.845531 0.754616 +vt 0.859613 0.782361 +vt 0.866921 0.755569 +vt 0.847606 0.751680 +vt 0.847828 0.750219 +vt 0.868304 0.745938 +vt 0.854066 0.723948 +vt 0.845062 0.747569 +vt 0.843548 0.747883 +vt 0.841956 0.721665 +vt 0.778988 0.721417 +vt 0.840546 0.750571 +vt 0.856102 0.617262 +vt 0.916303 0.646639 +vt 0.961783 0.707492 +vt 0.975447 0.780913 +vt 0.942364 0.852624 +vt 0.881146 0.902659 +vt 0.503577 0.032542 +vt 0.485781 0.032084 +vt 0.464116 0.019708 +vt 0.528632 0.019716 +vt 0.513127 0.039048 +vt 0.475045 0.037630 +vt 0.501638 0.044256 +vt 0.485834 0.043669 +vt 0.505954 0.050050 +vt 0.480820 0.049122 +vt 0.434428 0.048419 +vt 0.500124 0.068022 +vt 0.448477 0.083078 +vt 0.519428 0.086920 +vt 0.514414 0.092374 +vt 0.498610 0.091787 +vt 0.494294 0.085994 +vt 0.525203 0.098413 +vt 0.487120 0.096994 +vt 0.514466 0.103959 +vt 0.496671 0.103502 +vt 0.536131 0.116335 +vt 0.471616 0.116328 +vt 0.357233 0.059243 +vt 0.367369 0.069296 +vt 0.416867 0.087749 +vt 0.410477 0.050162 +vt 0.332255 0.049283 +vt 0.363348 0.073202 +vt 0.117416 0.043635 +vt 0.267990 0.058857 +vt 0.282845 0.056591 +vt 0.323207 0.059734 +vt 0.565820 0.087625 +vt 0.551771 0.052966 +vt 0.677041 0.076310 +vt 0.732257 0.077185 +vt 0.882832 0.092408 +vt 0.717402 0.079453 +vt 0.636900 0.062841 +vt 0.667993 0.086759 +vt 0.632878 0.066746 +vt 0.643014 0.076799 +vt 0.583381 0.048295 +vt 0.589770 0.085881 +vt 0.725303 0.595108 +vt 0.620212 0.604639 +vt 0.526686 0.555752 +vt 0.650045 0.453989 +vt 0.526686 0.684270 +vt 0.610268 0.654831 +vt 0.803979 0.915696 +vt 0.790198 0.617262 +vt 0.187489 0.723215 +vt 0.226037 0.717765 +vt 0.213819 0.746844 +vt 0.196351 0.750887 +vt 0.235841 0.821360 +vt 0.197333 0.823643 +vt 0.205306 0.798191 +vt 0.222945 0.794599 +vt 0.265435 0.744871 +vt 0.268063 0.785973 +vt 0.236615 0.776322 +vt 0.232944 0.758230 +vt 0.163596 0.795280 +vt 0.187575 0.785770 +vt 0.160243 0.759035 +vt 0.184240 0.769156 +vt 0.199328 0.760371 +vt 0.192222 0.771412 +vt 0.215796 0.786371 +vt 0.223425 0.775614 +vt 0.194314 0.781568 +vt 0.221262 0.764573 +vt 0.209986 0.758115 +vt 0.204966 0.788760 +vt 0.173133 0.690420 +vt 0.236013 0.680308 +vt 0.250473 0.855190 +vt 0.188146 0.856836 +vt 0.305666 0.726647 +vt 0.308035 0.796625 +vt 0.133243 0.808391 +vt 0.128057 0.750197 +vt 0.039627 0.711528 +vt 0.135953 0.589983 +vt 0.406822 0.854075 +vt 0.271604 0.959564 +vt 0.039627 0.835020 +vt 0.278531 0.574625 +vt 0.434293 0.690172 +vt 0.141508 0.941251 +vt 0.199640 0.771810 +vt 0.202557 0.771058 +vt 0.199244 0.774455 +vt 0.197884 0.774853 +vt 0.205023 0.778595 +vt 0.202040 0.779798 +vt 0.199419 0.778586 +vt 0.200673 0.777781 +vt 0.205884 0.772394 +vt 0.206788 0.775534 +vt 0.201449 0.776339 +vt 0.200826 0.774871 +vt 0.198813 0.777940 +vt 0.197736 0.777746 +vt 0.197893 0.775304 +vt 0.197234 0.776684 +vt 0.196155 0.776277 +vt 0.195734 0.777480 +vt 0.197862 0.778011 +vt 0.198245 0.777277 +vt 0.196093 0.778020 +vt 0.197926 0.776260 +vt 0.196933 0.776153 +vt 0.197037 0.778613 +vt 0.200217 0.768687 +vt 0.205063 0.767236 +vt 0.208962 0.780108 +vt 0.204170 0.781904 +vt 0.210590 0.769801 +vt 0.212196 0.774756 +vt 0.198676 0.778816 +vt 0.197249 0.774349 +vt 0.191415 0.778887 +vt 0.191614 0.779002 +vt 0.188655 0.780285 +vt 0.188489 0.780143 +vt 0.191939 0.779312 +vt 0.191696 0.779674 +vt 0.188692 0.780577 +vt 0.188743 0.780303 +vt 0.191921 0.778825 +vt 0.192014 0.779267 +vt 0.188854 0.780382 +vt 0.188741 0.780099 +vt 0.191433 0.779365 +vt 0.188491 0.780356 +vt 0.191295 0.779409 +vt 0.188493 0.780479 +vt 0.186275 0.781028 +vt 0.186193 0.781329 +vt 0.186416 0.781090 +vt 0.186452 0.781267 +vt 0.186242 0.781125 +vt 0.186447 0.780984 +vt 0.186337 0.781223 +vt 0.186310 0.781364 +vt 0.193514 0.777905 +vt 0.193925 0.777905 +vt 0.194381 0.778630 +vt 0.194082 0.779046 +vt 0.194348 0.777825 +vt 0.194597 0.778356 +vt 0.193547 0.778719 +vt 0.193412 0.778586 +vt 0.181033 0.783063 +vt 0.181108 0.783275 +vt 0.178231 0.784381 +vt 0.178052 0.784257 +vt 0.181011 0.782983 +vt 0.180872 0.783222 +vt 0.177753 0.784275 +vt 0.177935 0.784107 +vt 0.181181 0.783018 +vt 0.181122 0.783231 +vt 0.178213 0.784310 +vt 0.178264 0.784169 +vt 0.180845 0.782983 +vt 0.177629 0.784036 +vt 0.180850 0.783275 +vt 0.177771 0.784390 +vt 0.175949 0.785186 +vt 0.175245 0.785336 +vt 0.175701 0.784921 +vt 0.175980 0.785159 +vt 0.175135 0.784717 +vt 0.176225 0.785000 +vt 0.176011 0.785248 +vt 0.175183 0.785089 +vt 0.183265 0.782196 +vt 0.183400 0.782373 +vt 0.183307 0.782178 +vt 0.183285 0.782399 +vt 0.183398 0.782160 +vt 0.183446 0.782364 +vt 0.183170 0.782196 +vt 0.183232 0.782408 +vt 0.170705 0.786265 +vt 0.169351 0.786274 +vt 0.168831 0.788769 +vt 0.170355 0.788114 +vt 0.171368 0.787265 +vt 0.171278 0.786584 +vt 0.166065 0.788309 +vt 0.167555 0.787380 +vt 0.167995 0.786814 +vt 0.165260 0.787911 +vt 0.168703 0.788742 +vt 0.169725 0.787778 +vt 0.160403 0.790697 +vt 0.169838 0.787230 +vt 0.169185 0.786770 +vt 0.166593 0.789830 +vt 0.167190 0.788105 +vt 0.586678 0.773893 +vt 0.676310 0.713902 +vt 0.571967 0.940914 +vt 0.615246 0.948037 +vt 0.591877 0.952060 +vt 0.462346 0.940914 +vt 0.829078 0.963113 +vt 0.938699 0.963113 +vt 0.785788 0.955991 +vt 0.809158 0.951967 +vt 0.515502 0.201656 +vt 0.369740 0.201656 +vt 0.078215 0.201656 +vt 0.515502 0.201656 +vt 0.504912 0.310171 +vt 0.504912 0.310171 +vt 0.660814 0.310171 +vt 0.972619 0.310171 +vt 0.504912 0.310171 +vt 0.504912 0.310172 +vt 0.349010 0.310171 +vt 0.037205 0.310171 +vt 0.515502 0.201656 +vt 0.515502 0.201656 +vt 0.952789 0.201656 +vt 0.661264 0.201656 +vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 -0.0000 +vn -0.7071 -0.7071 -0.0000 +vn 0.7071 -0.7071 0.0000 +vn -1.0000 0.0000 -0.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn -0.7071 -0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.0000 0.0000 -1.0000 +vn -0.7060 -0.7060 -0.0558 +vn 0.7060 -0.7060 -0.0558 +vn 0.7060 0.7060 -0.0558 +vn -0.7060 0.7060 -0.0558 +vn -0.5108 -0.5108 -0.6914 +vn 0.5108 0.5108 -0.6914 +vn -0.5108 0.5108 -0.6914 +vn 0.5108 -0.5108 -0.6914 +vn 0.5108 -0.5108 0.6914 +vn -0.5108 0.5108 0.6914 +vn 0.5108 0.5108 0.6914 +vn -0.5108 -0.5108 0.6914 +vn 0.0000 0.0000 1.0000 +usemtl Material.002 +s off +f 36/1/1 35/2/1 57/3/1 58/4/1 +f 74/5/2 23/6/2 25/7/2 76/8/2 +f 76/8/2 25/7/2 26/9/2 77/10/2 +f 89/11/2 23/6/2 74/5/2 92/12/2 +f 88/13/1 90/14/1 55/15/1 33/16/1 +f 33/16/1 55/15/1 57/3/1 35/2/1 +f 45/17/3 11/18/3 13/19/3 47/20/3 +f 86/21/3 11/18/3 45/17/3 91/22/3 +f 87/23/4 93/24/4 65/25/4 1/26/4 +f 1/26/4 65/25/4 67/27/4 3/28/4 +f 13/19/3 14/29/3 48/30/3 47/20/3 +f 68/31/4 4/32/4 3/28/4 67/27/4 +f 49/33/5 45/17/5 47/20/5 +f 46/34/5 47/20/5 48/30/5 +f 12/35/6 14/29/6 13/19/6 +f 15/36/6 13/19/6 11/18/6 +f 66/37/7 68/31/7 67/27/7 +f 69/38/7 67/27/7 65/25/7 +f 5/39/6 1/26/6 3/28/6 +f 2/40/6 3/28/6 4/32/6 +f 24/41/8 26/9/8 25/7/8 +f 27/42/8 25/7/8 23/6/8 +f 78/43/7 74/5/7 76/8/7 +f 75/44/7 76/8/7 77/10/7 +f 56/45/5 58/4/5 57/3/5 +f 59/46/5 57/3/5 55/15/5 +f 37/47/8 33/16/8 35/2/8 +f 34/48/8 35/2/8 36/1/8 +f 55/15/9 60/49/9 79/50/9 74/5/9 +f 59/46/10 55/15/10 74/5/10 78/43/10 +f 57/3/9 59/46/9 78/43/9 76/8/9 +f 56/45/10 57/3/10 76/8/10 75/44/10 +f 58/4/9 56/45/9 75/44/9 77/10/9 +f 1/26/11 23/6/11 28/51/11 6/52/11 +f 5/39/12 27/42/12 23/6/12 1/26/12 +f 3/28/11 25/7/11 27/42/11 5/39/11 +f 2/40/12 24/41/12 25/7/12 3/28/12 +f 4/32/11 26/9/11 24/41/11 2/40/11 +f 45/17/13 65/25/13 70/53/13 50/54/13 +f 49/33/14 69/38/14 65/25/14 45/17/14 +f 47/20/13 67/27/13 69/38/13 49/33/13 +f 46/34/14 66/37/14 67/27/14 47/20/14 +f 48/30/13 68/31/13 66/37/13 46/34/13 +f 51/55/14 71/56/14 68/57/14 48/58/14 +f 52/59/13 72/60/13 71/56/13 51/55/13 +f 53/61/14 73/62/14 72/60/14 52/59/14 +f 54/63/13 22/64/13 73/62/13 53/61/13 +f 44/65/15 85/66/15 17/67/15 +f 83/68/9 63/69/9 82/70/9 64/71/9 +f 63/69/10 62/72/10 81/73/10 82/70/10 +f 62/72/9 61/74/9 80/75/9 81/73/9 +f 61/74/10 58/76/10 77/77/10 80/75/10 +f 7/78/12 29/79/12 26/80/12 4/81/12 +f 8/82/11 30/83/11 29/79/11 7/78/11 +f 9/84/12 31/85/12 30/83/12 8/82/12 +f 10/86/11 32/87/11 31/85/11 9/84/11 +f 39/88/11 85/66/11 84/89/11 +f 17/67/15 32/87/15 10/86/15 44/65/15 +f 21/90/15 20/91/15 42/92/15 43/93/15 +f 20/91/16 19/94/16 41/95/16 42/92/16 +f 19/94/15 18/96/15 40/97/15 41/95/15 +f 18/96/16 14/98/16 36/99/16 40/97/16 +f 37/100/8 240/101/8 38/102/8 33/103/8 +f 16/104/16 38/102/16 240/101/16 239/105/16 +f 13/19/15 15/36/15 37/47/15 35/2/15 +f 12/35/16 13/19/16 35/2/16 34/48/16 +f 14/29/15 12/35/15 34/48/15 36/1/15 +f 79/50/17 28/51/17 89/11/17 92/12/17 +f 6/52/17 70/53/17 93/24/17 87/23/17 +f 50/54/17 16/106/17 86/21/17 91/22/17 +f 38/107/17 60/49/17 90/14/17 88/13/17 +f 11/18/6 86/21/6 16/106/6 +f 17/67/13 39/88/13 83/68/13 64/71/13 +f 45/17/5 50/54/5 91/22/5 +f 65/25/7 93/24/7 70/53/7 +f 1/26/6 6/52/6 87/23/6 +f 23/6/8 89/11/8 28/51/8 +f 74/5/7 79/50/7 92/12/7 +f 55/15/5 90/14/5 60/49/5 +f 33/16/8 38/107/8 88/13/8 +f 84/89/9 44/65/9 22/64/9 54/63/9 +f 39/88/11 84/89/11 21/90/11 43/93/11 +f 17/67/13 85/66/13 39/88/13 +f 84/89/9 85/66/9 44/65/9 +f 14/98/18 84/89/18 48/58/18 +f 44/65/19 4/81/19 68/57/19 +f 26/80/20 17/67/20 77/77/20 +f 39/88/21 36/99/21 58/76/21 +f 83/68/5 39/88/5 62/72/5 63/69/5 +f 41/95/8 40/97/8 36/99/8 +f 48/58/5 84/89/5 52/59/5 +f 39/88/8 41/95/8 36/99/8 +f 58/76/5 62/72/5 39/88/5 +f 39/88/8 43/93/8 42/92/8 41/95/8 +f 62/72/5 58/76/5 61/74/5 +f 21/90/6 84/89/6 19/94/6 20/91/6 +f 48/58/5 52/59/5 51/55/5 +f 84/89/5 54/63/5 53/61/5 52/59/5 +f 14/98/6 19/94/6 84/89/6 +f 18/96/6 19/94/6 14/98/6 +f 26/80/8 29/79/8 30/83/8 +f 81/73/7 17/67/7 64/71/7 82/70/7 +f 68/57/7 71/56/7 72/60/7 +f 68/57/7 72/60/7 44/65/7 +f 7/78/6 4/81/6 8/82/6 +f 8/82/6 44/65/6 10/86/6 9/84/6 +f 22/64/7 44/65/7 72/60/7 73/62/7 +f 8/82/6 4/81/6 44/65/6 +f 26/80/8 30/83/8 17/67/8 +f 80/75/7 77/77/7 81/73/7 +f 32/87/8 17/67/8 30/83/8 31/85/8 +f 81/73/7 77/77/7 17/67/7 +f 94/108/11 96/109/11 108/110/11 109/111/11 +f 97/112/15 95/113/15 106/114/15 107/115/15 +f 101/116/9 99/117/9 104/118/9 105/119/9 +f 95/113/22 98/120/22 103/121/22 106/114/22 +f 96/109/23 101/116/23 105/119/23 108/110/23 +f 98/120/13 100/122/13 102/123/13 103/121/13 +f 99/117/24 97/112/24 107/115/24 104/118/24 +f 100/122/25 94/108/25 109/111/25 102/123/25 +f 102/123/26 109/111/26 117/124/26 111/125/26 +f 104/118/27 107/115/27 114/126/27 112/127/27 +f 103/121/14 102/123/14 111/125/14 113/128/14 +f 108/110/28 105/119/28 110/129/28 115/130/28 +f 106/114/29 103/121/29 113/128/29 116/131/29 +f 105/119/10 104/118/10 112/127/10 110/129/10 +f 107/115/16 106/114/16 116/131/16 114/126/16 +f 109/111/12 108/110/12 115/130/12 117/124/12 +f 118/132/12 119/133/12 96/109/12 94/108/12 +f 120/134/16 121/135/16 95/113/16 97/112/16 +f 122/136/10 123/137/10 99/117/10 101/116/10 +f 121/135/29 124/138/29 98/120/29 95/113/29 +f 119/133/28 122/136/28 101/116/28 96/109/28 +f 124/138/14 125/139/14 100/122/14 98/120/14 +f 123/137/27 120/134/27 97/112/27 99/117/27 +f 125/139/26 118/132/26 94/108/26 100/122/26 +f 70/140/25 6/141/25 118/132/25 125/139/25 +f 60/142/24 38/143/24 120/134/24 123/137/24 +f 50/144/13 70/140/13 125/139/13 124/138/13 +f 28/145/23 79/146/23 122/136/23 119/133/23 +f 16/147/22 50/144/22 124/138/22 121/135/22 +f 79/146/9 60/142/9 123/137/9 122/136/9 +f 38/143/15 16/147/15 121/135/15 120/134/15 +f 6/141/11 28/145/11 119/133/11 118/132/11 +f 126/148/11 128/149/11 140/150/11 141/151/11 +f 129/152/15 127/153/15 138/154/15 139/155/15 +f 133/156/9 131/157/9 136/158/9 137/159/9 +f 127/153/22 130/160/22 135/161/22 138/154/22 +f 128/149/23 133/156/23 137/159/23 140/150/23 +f 130/160/13 132/162/13 134/163/13 135/161/13 +f 131/157/24 129/152/24 139/155/24 136/158/24 +f 132/162/25 126/148/25 141/151/25 134/163/25 +f 134/163/26 141/151/26 149/164/26 143/165/26 +f 136/158/27 139/155/27 146/166/27 144/167/27 +f 135/161/14 134/163/14 143/165/14 145/168/14 +f 140/150/28 137/159/28 142/169/28 147/170/28 +f 138/154/29 135/161/29 145/168/29 148/171/29 +f 137/159/10 136/158/10 144/167/10 142/169/10 +f 139/155/16 138/154/16 148/171/16 146/166/16 +f 141/151/12 140/150/12 147/170/12 149/164/12 +f 150/172/12 151/173/12 128/149/12 126/148/12 +f 152/174/16 153/175/16 127/153/16 129/152/16 +f 154/176/10 155/177/10 131/157/10 133/156/10 +f 153/175/29 156/178/29 130/160/29 127/153/29 +f 151/173/28 154/176/28 133/156/28 128/149/28 +f 156/178/14 157/179/14 132/162/14 130/160/14 +f 155/177/27 152/174/27 129/152/27 131/157/27 +f 157/179/26 150/172/26 126/148/26 132/162/26 +f 111/125/25 117/124/25 150/172/25 157/179/25 +f 112/127/24 114/126/24 152/174/24 155/177/24 +f 113/128/13 111/125/13 157/179/13 156/178/13 +f 115/130/23 110/129/23 154/176/23 151/173/23 +f 116/131/22 113/128/22 156/178/22 153/175/22 +f 110/129/9 112/127/9 155/177/9 154/176/9 +f 114/126/15 116/131/15 153/175/15 152/174/15 +f 117/124/11 115/130/11 151/173/11 150/172/11 +f 159/180/11 161/181/11 173/182/11 174/183/11 +f 162/184/15 160/185/15 171/186/15 172/187/15 +f 166/188/9 164/189/9 169/190/9 170/191/9 +f 160/185/22 163/192/22 168/193/22 171/186/22 +f 161/181/23 166/188/23 170/191/23 173/182/23 +f 163/192/13 165/194/13 167/195/13 168/193/13 +f 164/189/24 162/184/24 172/187/24 169/190/24 +f 165/194/25 159/180/25 174/183/25 167/195/25 +f 167/195/26 174/183/26 182/196/26 176/197/26 +f 169/190/27 172/187/27 179/198/27 177/199/27 +f 168/193/14 167/195/14 176/197/14 178/200/14 +f 173/182/28 170/191/28 175/201/28 180/202/28 +f 171/186/29 168/193/29 178/200/29 181/203/29 +f 170/191/10 169/190/10 177/199/10 175/201/10 +f 172/187/16 171/186/16 181/203/16 179/198/16 +f 174/183/12 173/182/12 180/202/12 182/196/12 +f 183/204/12 184/205/12 161/181/12 159/180/12 +f 185/206/16 186/207/16 160/185/16 162/184/16 +f 187/208/10 188/209/10 164/189/10 166/188/10 +f 186/207/29 189/210/29 163/192/29 160/185/29 +f 184/205/28 187/208/28 166/188/28 161/181/28 +f 189/210/14 190/211/14 165/194/14 163/192/14 +f 188/209/27 185/206/27 162/184/27 164/189/27 +f 190/211/26 183/204/26 159/180/26 165/194/26 +f 143/165/25 149/164/25 183/204/25 190/211/25 +f 144/167/24 146/166/24 185/206/24 188/209/24 +f 145/168/13 143/165/13 190/211/13 189/210/13 +f 147/170/23 142/169/23 187/208/23 184/205/23 +f 148/171/22 145/168/22 189/210/22 186/207/22 +f 142/169/9 144/167/9 188/209/9 187/208/9 +f 146/166/15 148/171/15 186/207/15 185/206/15 +f 149/164/11 147/170/11 184/205/11 183/204/11 +f 191/212/11 193/213/11 205/214/11 206/215/11 +f 194/216/15 192/217/15 203/218/15 204/219/15 +f 198/220/9 196/221/9 201/222/9 202/223/9 +f 192/217/22 195/224/22 200/225/22 203/218/22 +f 193/213/23 198/220/23 202/223/23 205/214/23 +f 195/224/13 197/226/13 199/227/13 200/225/13 +f 196/221/24 194/216/24 204/219/24 201/222/24 +f 197/226/25 191/212/25 206/215/25 199/227/25 +f 199/227/26 206/215/26 214/228/26 208/229/26 +f 201/222/27 204/219/27 211/230/27 209/231/27 +f 200/225/14 199/227/14 208/229/14 210/232/14 +f 205/214/28 202/223/28 207/233/28 212/234/28 +f 203/218/29 200/225/29 210/232/29 213/235/29 +f 202/223/10 201/222/10 209/231/10 207/233/10 +f 204/219/16 203/218/16 213/235/16 211/230/16 +f 206/215/12 205/214/12 212/234/12 214/228/12 +f 215/236/12 216/237/12 193/213/12 191/212/12 +f 217/238/16 218/239/16 192/217/16 194/216/16 +f 219/240/10 220/241/10 196/221/10 198/220/10 +f 218/239/29 221/242/29 195/224/29 192/217/29 +f 216/237/28 219/240/28 198/220/28 193/213/28 +f 221/242/14 222/243/14 197/226/14 195/224/14 +f 220/241/27 217/238/27 194/216/27 196/221/27 +f 222/243/26 215/236/26 191/212/26 197/226/26 +f 176/197/25 182/196/25 215/236/25 222/243/25 +f 177/199/24 179/198/24 217/238/24 220/241/24 +f 178/200/13 176/197/13 222/243/13 221/242/13 +f 180/202/23 175/201/23 219/240/23 216/237/23 +f 181/203/22 178/200/22 221/242/22 218/239/22 +f 175/201/9 177/199/9 220/241/9 219/240/9 +f 179/198/15 181/203/15 218/239/15 217/238/15 +f 182/196/11 180/202/11 216/237/11 215/236/11 +f 214/228/11 212/234/11 229/244/11 230/245/11 +f 211/230/15 213/235/15 227/246/15 228/247/15 +f 207/233/9 209/231/9 225/248/9 226/249/9 +f 213/235/22 210/232/22 224/250/22 227/246/22 +f 212/234/23 207/233/23 226/249/23 229/244/23 +f 210/232/13 208/229/13 223/251/13 224/250/13 +f 209/231/24 211/230/24 228/247/24 225/248/24 +f 208/229/25 214/228/25 230/245/25 223/251/25 +f 223/251/26 230/245/26 238/252/26 232/253/26 +f 225/248/27 228/247/27 235/254/27 233/255/27 +f 224/250/14 223/251/14 232/253/14 234/256/14 +f 229/244/28 226/249/28 231/257/28 236/258/28 +f 227/246/29 224/250/29 234/256/29 237/259/29 +f 226/249/10 225/248/10 233/255/10 231/257/10 +f 228/247/16 227/246/16 237/259/16 235/254/16 +f 230/245/12 229/244/12 236/258/12 238/252/12 +f 238/252/30 158/260/30 232/253/30 +f 11/261/6 16/104/6 239/105/6 15/262/6 +f 236/258/30 158/260/30 238/252/30 +f 158/260/30 231/257/30 233/255/30 +f 158/260/30 235/254/30 237/259/30 +f 236/258/30 231/257/30 158/260/30 +f 158/260/30 237/259/30 234/256/30 +f 235/254/30 158/260/30 233/255/30 +f 158/260/30 234/256/30 232/253/30 +f 240/101/15 37/100/15 15/262/15 239/105/15 +f 240/263/12 242/264/12 241/265/12 239/266/12 +f 242/264/16 244/267/16 243/268/16 241/265/16 +f 244/267/15 246/269/15 245/270/15 243/268/15 +f 246/269/11 240/263/11 239/266/11 245/270/11 +f 239/266/6 241/265/6 243/268/6 245/270/6 +f 242/264/8 240/263/8 246/269/8 244/267/8 +f 250/271/11 257/272/11 258/273/11 249/274/11 +f 249/275/16 250/276/16 254/277/16 253/278/16 +f 253/278/15 254/277/15 256/279/15 255/280/15 +f 250/276/8 252/281/8 256/279/8 254/277/8 +f 252/281/11 251/282/11 255/280/11 256/279/11 +f 251/282/6 249/275/6 253/278/6 255/280/6 +f 246/283/12 245/284/12 258/273/12 257/272/12 +f 248/285/16 245/284/16 246/283/16 247/286/16 +f 247/286/8 246/283/8 257/272/8 250/271/8 +f 249/274/6 258/273/6 245/284/6 248/285/6 +f 249/274/15 248/285/15 247/286/15 250/271/15 +f 249/275/12 251/282/12 252/281/12 250/276/12 diff --git a/textures/projectile_arrow.png b/textures/projectile_arrow.png new file mode 100644 index 0000000..63bad4e Binary files /dev/null and b/textures/projectile_arrow.png differ diff --git a/textures/projectile_arrow_bomb.png b/textures/projectile_arrow_bomb.png new file mode 100644 index 0000000..e68db41 Binary files /dev/null and b/textures/projectile_arrow_bomb.png differ diff --git a/textures/projectile_arrow_bomb_texture.png b/textures/projectile_arrow_bomb_texture.png new file mode 100644 index 0000000..2bbd162 Binary files /dev/null and b/textures/projectile_arrow_bomb_texture.png differ diff --git a/textures/projectile_arrow_fire.png b/textures/projectile_arrow_fire.png new file mode 100644 index 0000000..f5922f3 Binary files /dev/null and b/textures/projectile_arrow_fire.png differ diff --git a/textures/projectile_arrow_fire_texture.png b/textures/projectile_arrow_fire_texture.png new file mode 100644 index 0000000..c82aa65 Binary files /dev/null and b/textures/projectile_arrow_fire_texture.png differ diff --git a/textures/projectile_arrow_high_velocity.png b/textures/projectile_arrow_high_velocity.png new file mode 100644 index 0000000..c65d974 Binary files /dev/null and b/textures/projectile_arrow_high_velocity.png differ diff --git a/textures/projectile_arrow_high_velocity_texture.png b/textures/projectile_arrow_high_velocity_texture.png new file mode 100644 index 0000000..a5ef2a9 Binary files /dev/null and b/textures/projectile_arrow_high_velocity_texture.png differ diff --git a/textures/projectile_arrow_texture.png b/textures/projectile_arrow_texture.png new file mode 100644 index 0000000..e303d36 Binary files /dev/null and b/textures/projectile_arrow_texture.png differ diff --git a/textures/projectile_bow.png b/textures/projectile_bow.png new file mode 100644 index 0000000..8ca8c4a Binary files /dev/null and b/textures/projectile_bow.png differ diff --git a/textures/projectile_bow_charged.png b/textures/projectile_bow_charged.png new file mode 100644 index 0000000..654a68e Binary files /dev/null and b/textures/projectile_bow_charged.png differ diff --git a/textures/projectile_bow_charged_full.png b/textures/projectile_bow_charged_full.png new file mode 100644 index 0000000..764107b Binary files /dev/null and b/textures/projectile_bow_charged_full.png differ diff --git a/textures/projectile_slingshot.png b/textures/projectile_slingshot.png new file mode 100644 index 0000000..75ac021 Binary files /dev/null and b/textures/projectile_slingshot.png differ diff --git a/textures/projectile_slingshot_charged.png b/textures/projectile_slingshot_charged.png new file mode 100644 index 0000000..373419c Binary files /dev/null and b/textures/projectile_slingshot_charged.png differ diff --git a/textures/projectile_slingshot_charged_full.png b/textures/projectile_slingshot_charged_full.png new file mode 100644 index 0000000..0694379 Binary files /dev/null and b/textures/projectile_slingshot_charged_full.png differ diff --git a/textures/projectile_steel_bow.png b/textures/projectile_steel_bow.png new file mode 100644 index 0000000..e1d0647 Binary files /dev/null and b/textures/projectile_steel_bow.png differ diff --git a/textures/projectile_steel_bow_charged.png b/textures/projectile_steel_bow_charged.png new file mode 100644 index 0000000..cc1c167 Binary files /dev/null and b/textures/projectile_steel_bow_charged.png differ diff --git a/textures/projectile_steel_bow_charged_full.png b/textures/projectile_steel_bow_charged_full.png new file mode 100644 index 0000000..9b037a8 Binary files /dev/null and b/textures/projectile_steel_bow_charged_full.png differ diff --git a/textures/projectile_steel_slingshot.png b/textures/projectile_steel_slingshot.png new file mode 100644 index 0000000..beb4286 Binary files /dev/null and b/textures/projectile_steel_slingshot.png differ diff --git a/textures/projectile_steel_slingshot_charged.png b/textures/projectile_steel_slingshot_charged.png new file mode 100644 index 0000000..c81b9a3 Binary files /dev/null and b/textures/projectile_steel_slingshot_charged.png differ diff --git a/textures/projectile_steel_slingshot_charged_full.png b/textures/projectile_steel_slingshot_charged_full.png new file mode 100644 index 0000000..2c9b87b Binary files /dev/null and b/textures/projectile_steel_slingshot_charged_full.png differ