diff --git a/.gitignore b/.gitignore index 86148ec..d6037ed 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .import/ -build/ \ No newline at end of file +build/ +ngio.ini +scoreboard_host.txt diff --git a/LICENSE-ASSETS b/LICENSE-ASSETS new file mode 100644 index 0000000..4ea99c2 --- /dev/null +++ b/LICENSE-ASSETS @@ -0,0 +1,395 @@ +Attribution 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution 4.0 International Public License ("Public License"). To the +extent this Public License may be interpreted as a contract, You are +granted the Licensed Rights in consideration of Your acceptance of +these terms and conditions, and the Licensor grants You such rights in +consideration of benefits the Licensor receives from making the +Licensed Material available under these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/LICENSE-CODE b/LICENSE-CODE new file mode 100644 index 0000000..5dba822 --- /dev/null +++ b/LICENSE-CODE @@ -0,0 +1,7 @@ +Copyright © 2024 Haze Weathers and Penny Rigate + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..4ff031d --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +# Revolution 2083 +Published source code of [Revolution 2083](https://pennyrigate.itch.io/revolution-2083). + +Feel free to use this to make mods, fangames, whatever you like! It would make +us extra happy to be credited in and/or told about whatever you use this for. + +Apologies in advance for the messy code :) +— Haze + +## License + +Music is by [Scarlett Sylvistrix](https://ivsnyd.bandcamp.com/) and licensed under +the [CC-BY license](LICENSE-ASSETS) except for end credits +cover of "You're Wondering Now". +"You're Wondering Now" is not licensed for re-use. + +All textures and sound effects are by Haze Weathers and Penny Rigate. +They are also licensed under the [CC-BY license](LICENSE-ASSETS). + +All other code and data is licensed under the [MIT license](LICENSE-CODE). diff --git a/addons/godot_state_charts/compound_state.gd b/addons/godot_state_charts/compound_state.gd index 3ea7d13..9f20f5e 100644 --- a/addons/godot_state_charts/compound_state.gd +++ b/addons/godot_state_charts/compound_state.gd @@ -56,6 +56,9 @@ func _handle_transition(transition: Transition, source: State) -> void: push_error("the target state: %s of transition from state: %s is not a state" % [str(transition.to), source.name]) return + if target.active: + return + # if direct child, just switch active state if target in get_children(): # deactivate current state diff --git a/addons/godot_state_charts/state.gd b/addons/godot_state_charts/state.gd index d204c1a..83b09b3 100644 --- a/addons/godot_state_charts/state.gd +++ b/addons/godot_state_charts/state.gd @@ -119,7 +119,6 @@ func _process_transition(delta: float) -> void: _queued_transition_time -= delta # if ready, handle transition and clear queue if _queued_transition_time <= 0.0: - print(_queued_transition.name) var transition = _queued_transition _queued_transition = null _queued_transition_time = 0.0 diff --git a/audio/glass_break.ogg b/audio/glass_break.ogg new file mode 100644 index 0000000..ecafeb9 Binary files /dev/null and b/audio/glass_break.ogg differ diff --git a/audio/glass_break.ogg.import b/audio/glass_break.ogg.import new file mode 100644 index 0000000..a3f5987 --- /dev/null +++ b/audio/glass_break.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/glass_break.ogg-90d29d1196efeaa1b90b121f831dc311.oggstr" + +[deps] + +source_file="res://audio/glass_break.ogg" +dest_files=[ "res://.import/glass_break.ogg-90d29d1196efeaa1b90b121f831dc311.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/glass_crack.ogg b/audio/glass_crack.ogg new file mode 100644 index 0000000..443b833 Binary files /dev/null and b/audio/glass_crack.ogg differ diff --git a/audio/glass_crack.ogg.import b/audio/glass_crack.ogg.import new file mode 100644 index 0000000..f7188f6 --- /dev/null +++ b/audio/glass_crack.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/glass_crack.ogg-f61a203463634593b8f657b7bd6c8959.oggstr" + +[deps] + +source_file="res://audio/glass_crack.ogg" +dest_files=[ "res://.import/glass_crack.ogg-f61a203463634593b8f657b7bd6c8959.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/glass_crack.wav b/audio/glass_crack.wav new file mode 100644 index 0000000..46115e6 Binary files /dev/null and b/audio/glass_crack.wav differ diff --git a/audio/sounds/a_bree.wav.import b/audio/glass_crack.wav.import similarity index 55% rename from audio/sounds/a_bree.wav.import rename to audio/glass_crack.wav.import index c7fc368..9a2cc79 100644 --- a/audio/sounds/a_bree.wav.import +++ b/audio/glass_crack.wav.import @@ -2,12 +2,12 @@ importer="wav" type="AudioStreamSample" -path="res://.import/a_bree.wav-6a217455eb3593edcc27ac957b5c6218.sample" +path="res://.import/glass_crack.wav-e7bba5d7d195585aae47530d080ae6b3.sample" [deps] -source_file="res://audio/sounds/a_bree.wav" -dest_files=[ "res://.import/a_bree.wav-6a217455eb3593edcc27ac957b5c6218.sample" ] +source_file="res://audio/glass_crack.wav" +dest_files=[ "res://.import/glass_crack.wav-e7bba5d7d195585aae47530d080ae6b3.sample" ] [params] diff --git a/audio/music/74(game_over).ogg b/audio/music/74(game_over).ogg new file mode 100644 index 0000000..50922db Binary files /dev/null and b/audio/music/74(game_over).ogg differ diff --git a/audio/music/74(game_over).ogg.import b/audio/music/74(game_over).ogg.import new file mode 100644 index 0000000..178af66 --- /dev/null +++ b/audio/music/74(game_over).ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/74(game_over).ogg-c8daa270fc6254ebdb545c9163121582.oggstr" + +[deps] + +source_file="res://audio/music/74(game_over).ogg" +dest_files=[ "res://.import/74(game_over).ogg-c8daa270fc6254ebdb545c9163121582.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/BBBBBBBB.ogg b/audio/music/BBBBBBBB.ogg new file mode 100644 index 0000000..5272a3b Binary files /dev/null and b/audio/music/BBBBBBBB.ogg differ diff --git a/audio/music/BBBBBBBB.ogg.import b/audio/music/BBBBBBBB.ogg.import new file mode 100644 index 0000000..73adf81 --- /dev/null +++ b/audio/music/BBBBBBBB.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/BBBBBBBB.ogg-cc9e6a4bb1b385b89207987440a19675.oggstr" + +[deps] + +source_file="res://audio/music/BBBBBBBB.ogg" +dest_files=[ "res://.import/BBBBBBBB.ogg-cc9e6a4bb1b385b89207987440a19675.oggstr" ] + +[params] + +loop=true +loop_offset=12.091 diff --git a/audio/music/bumpy_ride.ogg b/audio/music/bumpy_ride.ogg deleted file mode 100644 index a03670d..0000000 Binary files a/audio/music/bumpy_ride.ogg and /dev/null differ diff --git a/audio/music/bumpy_ride.ogg.import b/audio/music/bumpy_ride.ogg.import deleted file mode 100644 index b8f9636..0000000 --- a/audio/music/bumpy_ride.ogg.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="ogg_vorbis" -type="AudioStreamOGGVorbis" -path="res://.import/bumpy_ride.ogg-62ed9ac773150c367bf21b6787de62b2.oggstr" - -[deps] - -source_file="res://audio/music/bumpy_ride.ogg" -dest_files=[ "res://.import/bumpy_ride.ogg-62ed9ac773150c367bf21b6787de62b2.oggstr" ] - -[params] - -loop=true -loop_offset=0 diff --git a/audio/music/burnt_in.ogg b/audio/music/burnt_in.ogg deleted file mode 100644 index 4feaf4f..0000000 Binary files a/audio/music/burnt_in.ogg and /dev/null differ diff --git a/audio/music/burnt_in.ogg.import b/audio/music/burnt_in.ogg.import deleted file mode 100644 index b8ed081..0000000 --- a/audio/music/burnt_in.ogg.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="ogg_vorbis" -type="AudioStreamOGGVorbis" -path="res://.import/burnt_in.ogg-5771350ae6e2877e32aaf932b22c784c.oggstr" - -[deps] - -source_file="res://audio/music/burnt_in.ogg" -dest_files=[ "res://.import/burnt_in.ogg-5771350ae6e2877e32aaf932b22c784c.oggstr" ] - -[params] - -loop=true -loop_offset=0 diff --git a/audio/music/burnt_out.ogg b/audio/music/burnt_out.ogg new file mode 100644 index 0000000..7d79f71 Binary files /dev/null and b/audio/music/burnt_out.ogg differ diff --git a/audio/music/burnt_out.ogg.import b/audio/music/burnt_out.ogg.import new file mode 100644 index 0000000..d216c73 --- /dev/null +++ b/audio/music/burnt_out.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/burnt_out.ogg-330f5bc87b626c0f8fed84e8c4c6a359.oggstr" + +[deps] + +source_file="res://audio/music/burnt_out.ogg" +dest_files=[ "res://.import/burnt_out.ogg-330f5bc87b626c0f8fed84e8c4c6a359.oggstr" ] + +[params] + +loop=true +loop_offset=42.507 diff --git a/audio/music/cryokiller.ogg b/audio/music/cryokiller.ogg index 00f88bc..15a7e18 100644 Binary files a/audio/music/cryokiller.ogg and b/audio/music/cryokiller.ogg differ diff --git a/audio/music/cryokiller.ogg.import b/audio/music/cryokiller.ogg.import index b477662..b630930 100644 --- a/audio/music/cryokiller.ogg.import +++ b/audio/music/cryokiller.ogg.import @@ -12,4 +12,4 @@ dest_files=[ "res://.import/cryokiller.ogg-d287a2f5c24b6c8114a93e405fe3c292.oggs [params] loop=true -loop_offset=0 +loop_offset=71.924 diff --git a/audio/music/cryokiller0.ogg.import b/audio/music/cryokiller0.ogg.import deleted file mode 100644 index 9ff360b..0000000 --- a/audio/music/cryokiller0.ogg.import +++ /dev/null @@ -1,15 +0,0 @@ -[remap] - -importer="ogg_vorbis" -type="AudioStreamOGGVorbis" -path="res://.import/cryokiller0.ogg-2bd75e8d9f0865d8cc54c203db8d22fd.oggstr" - -[deps] - -source_file="res://audio/music/cryokiller0.ogg" -dest_files=[ "res://.import/cryokiller0.ogg-2bd75e8d9f0865d8cc54c203db8d22fd.oggstr" ] - -[params] - -loop=false -loop_offset=0 diff --git a/audio/music/dusk_park.ogg b/audio/music/dusk_park.ogg index 447e3d4..92a5dea 100644 Binary files a/audio/music/dusk_park.ogg and b/audio/music/dusk_park.ogg differ diff --git a/audio/music/dusk_park.ogg.import b/audio/music/dusk_park.ogg.import index f98c149..d17042e 100644 --- a/audio/music/dusk_park.ogg.import +++ b/audio/music/dusk_park.ogg.import @@ -12,4 +12,4 @@ dest_files=[ "res://.import/dusk_park.ogg-66b2f58b4fbcb15fb39169e2ef3dc572.oggst [params] loop=true -loop_offset=0 +loop_offset=14.25 diff --git a/audio/music/empty_motel.ogg b/audio/music/empty_motel.ogg new file mode 100644 index 0000000..a003762 Binary files /dev/null and b/audio/music/empty_motel.ogg differ diff --git a/audio/music/empty_motel.ogg.import b/audio/music/empty_motel.ogg.import new file mode 100644 index 0000000..9efb447 --- /dev/null +++ b/audio/music/empty_motel.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/empty_motel.ogg-1334b9d142536ba1f2d1ff346aa90c0f.oggstr" + +[deps] + +source_file="res://audio/music/empty_motel.ogg" +dest_files=[ "res://.import/empty_motel.ogg-1334b9d142536ba1f2d1ff346aa90c0f.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/intro.ogg b/audio/music/intro.ogg new file mode 100644 index 0000000..78492ef Binary files /dev/null and b/audio/music/intro.ogg differ diff --git a/audio/music/intro.ogg.import b/audio/music/intro.ogg.import new file mode 100644 index 0000000..65d48c4 --- /dev/null +++ b/audio/music/intro.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/intro.ogg-a141f549457bc6a41bef73e129d9f7b6.oggstr" + +[deps] + +source_file="res://audio/music/intro.ogg" +dest_files=[ "res://.import/intro.ogg-a141f549457bc6a41bef73e129d9f7b6.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/klystron.ogg b/audio/music/klystron.ogg index 8ff022b..190cc6d 100644 Binary files a/audio/music/klystron.ogg and b/audio/music/klystron.ogg differ diff --git a/audio/music/klystron.ogg.import b/audio/music/klystron.ogg.import index fc04e18..90dc0bb 100644 --- a/audio/music/klystron.ogg.import +++ b/audio/music/klystron.ogg.import @@ -12,4 +12,4 @@ dest_files=[ "res://.import/klystron.ogg-2dce5b1690502308cf909f0b9eda8d99.oggstr [params] loop=true -loop_offset=0 +loop_offset=6.775 diff --git a/audio/music/klystron_vip.ogg b/audio/music/klystron_vip.ogg new file mode 100644 index 0000000..ffcd393 Binary files /dev/null and b/audio/music/klystron_vip.ogg differ diff --git a/audio/music/klystron_vip.ogg.import b/audio/music/klystron_vip.ogg.import new file mode 100644 index 0000000..64a3c79 --- /dev/null +++ b/audio/music/klystron_vip.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/klystron_vip.ogg-fb327691a1b5cc895d2d8258fd374fdb.oggstr" + +[deps] + +source_file="res://audio/music/klystron_vip.ogg" +dest_files=[ "res://.import/klystron_vip.ogg-fb327691a1b5cc895d2d8258fd374fdb.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/music/mitten.ogg b/audio/music/mitten.ogg new file mode 100644 index 0000000..12652c0 Binary files /dev/null and b/audio/music/mitten.ogg differ diff --git a/audio/music/mitten.ogg.import b/audio/music/mitten.ogg.import new file mode 100644 index 0000000..68d3125 --- /dev/null +++ b/audio/music/mitten.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mitten.ogg-ca50efac016b8bf1022a91f574ac6ca6.oggstr" + +[deps] + +source_file="res://audio/music/mitten.ogg" +dest_files=[ "res://.import/mitten.ogg-ca50efac016b8bf1022a91f574ac6ca6.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/music/moon_trail.ogg b/audio/music/moon_trail.ogg index fbe7cb5..5e211af 100644 Binary files a/audio/music/moon_trail.ogg and b/audio/music/moon_trail.ogg differ diff --git a/audio/music/pause.ogg b/audio/music/pause.ogg new file mode 100644 index 0000000..0840ddf Binary files /dev/null and b/audio/music/pause.ogg differ diff --git a/audio/music/pause.ogg.import b/audio/music/pause.ogg.import new file mode 100644 index 0000000..de675f7 --- /dev/null +++ b/audio/music/pause.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/pause.ogg-e880bf592ac2065d4f2c443ae1e801bb.oggstr" + +[deps] + +source_file="res://audio/music/pause.ogg" +dest_files=[ "res://.import/pause.ogg-e880bf592ac2065d4f2c443ae1e801bb.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/music/precision_parasite.ogg b/audio/music/precision_parasite.ogg index 32b968e..387ac24 100644 Binary files a/audio/music/precision_parasite.ogg and b/audio/music/precision_parasite.ogg differ diff --git a/audio/music/precision_parasite.ogg.import b/audio/music/precision_parasite.ogg.import index 2c1640a..f6c1480 100644 --- a/audio/music/precision_parasite.ogg.import +++ b/audio/music/precision_parasite.ogg.import @@ -11,5 +11,5 @@ dest_files=[ "res://.import/precision_parasite.ogg-48c1edc2a47c76aa62b0460e1c855 [params] -loop=false -loop_offset=0 +loop=true +loop_offset=16.684 diff --git a/audio/music/rev83-wondering-now-short.ogg b/audio/music/rev83-wondering-now-short.ogg new file mode 100644 index 0000000..72c4f2f Binary files /dev/null and b/audio/music/rev83-wondering-now-short.ogg differ diff --git a/audio/music/rev83-wondering-now-short.ogg.import b/audio/music/rev83-wondering-now-short.ogg.import new file mode 100644 index 0000000..f469318 --- /dev/null +++ b/audio/music/rev83-wondering-now-short.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/rev83-wondering-now-short.ogg-6a06f237d6afb85ca00721c00a48a0ef.oggstr" + +[deps] + +source_file="res://audio/music/rev83-wondering-now-short.ogg" +dest_files=[ "res://.import/rev83-wondering-now-short.ogg-6a06f237d6afb85ca00721c00a48a0ef.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/rumble_loop.ogg b/audio/music/rumble_loop.ogg index bef6c0a..60cd41c 100644 Binary files a/audio/music/rumble_loop.ogg and b/audio/music/rumble_loop.ogg differ diff --git a/audio/music/rumble_revolution.ogg b/audio/music/rumble_revolution.ogg new file mode 100644 index 0000000..a1aa951 Binary files /dev/null and b/audio/music/rumble_revolution.ogg differ diff --git a/audio/music/rumble_revolution.ogg.import b/audio/music/rumble_revolution.ogg.import new file mode 100644 index 0000000..5cea268 --- /dev/null +++ b/audio/music/rumble_revolution.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/rumble_revolution.ogg-f4caaf13c218d7e4e59d5ae9bc9b9d8a.oggstr" + +[deps] + +source_file="res://audio/music/rumble_revolution.ogg" +dest_files=[ "res://.import/rumble_revolution.ogg-f4caaf13c218d7e4e59d5ae9bc9b9d8a.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/rumble_revolution_intro.ogg b/audio/music/rumble_revolution_intro.ogg new file mode 100644 index 0000000..e03b86d Binary files /dev/null and b/audio/music/rumble_revolution_intro.ogg differ diff --git a/audio/music/rumble_revolution_intro.ogg.import b/audio/music/rumble_revolution_intro.ogg.import new file mode 100644 index 0000000..6a48b5b --- /dev/null +++ b/audio/music/rumble_revolution_intro.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/rumble_revolution_intro.ogg-cb37ff1dd71c64fd16566b212babca20.oggstr" + +[deps] + +source_file="res://audio/music/rumble_revolution_intro.ogg" +dest_files=[ "res://.import/rumble_revolution_intro.ogg-cb37ff1dd71c64fd16566b212babca20.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/sleet.ogg b/audio/music/sleet.ogg new file mode 100644 index 0000000..0a40398 Binary files /dev/null and b/audio/music/sleet.ogg differ diff --git a/audio/music/sleet.ogg.import b/audio/music/sleet.ogg.import new file mode 100644 index 0000000..203cd8a --- /dev/null +++ b/audio/music/sleet.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/sleet.ogg-dfb9adcbe69bd6791c93c0f86b073746.oggstr" + +[deps] + +source_file="res://audio/music/sleet.ogg" +dest_files=[ "res://.import/sleet.ogg-dfb9adcbe69bd6791c93c0f86b073746.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/music/sleet0.ogg.import b/audio/music/sleet0.ogg.import new file mode 100644 index 0000000..b987856 --- /dev/null +++ b/audio/music/sleet0.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/sleet0.ogg-89329c21f9cd934500ba65a259d96b96.oggstr" + +[deps] + +source_file="res://audio/music/sleet0.ogg" +dest_files=[ "res://.import/sleet0.ogg-89329c21f9cd934500ba65a259d96b96.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/smokestack.ogg b/audio/music/smokestack.ogg index e64d7cd..c0b7b21 100644 Binary files a/audio/music/smokestack.ogg and b/audio/music/smokestack.ogg differ diff --git a/audio/music/smokestack.ogg.import b/audio/music/smokestack.ogg.import index 3213f4c..959bbe7 100644 --- a/audio/music/smokestack.ogg.import +++ b/audio/music/smokestack.ogg.import @@ -12,4 +12,4 @@ dest_files=[ "res://.import/smokestack.ogg-e5ff6f583a64a996a107e20d41fd576d.oggs [params] loop=true -loop_offset=0 +loop_offset=10.519 diff --git a/audio/music/spine_v2.ogg b/audio/music/spine_v2.ogg index dfa3faa..ef37551 100644 Binary files a/audio/music/spine_v2.ogg and b/audio/music/spine_v2.ogg differ diff --git a/audio/music/spine_v2.ogg.import b/audio/music/spine_v2.ogg.import index 9ad30bc..6d79c5a 100644 --- a/audio/music/spine_v2.ogg.import +++ b/audio/music/spine_v2.ogg.import @@ -11,5 +11,5 @@ dest_files=[ "res://.import/spine_v2.ogg-015bf0c6c191c0ae9ad018801a433c92.oggstr [params] -loop=false +loop=true loop_offset=0 diff --git a/audio/music/the_dirt_under_the_meadow.ogg b/audio/music/the_dirt_under_the_meadow.ogg new file mode 100644 index 0000000..54f5589 Binary files /dev/null and b/audio/music/the_dirt_under_the_meadow.ogg differ diff --git a/audio/music/the_dirt_under_the_meadow.ogg.import b/audio/music/the_dirt_under_the_meadow.ogg.import new file mode 100644 index 0000000..ec30542 --- /dev/null +++ b/audio/music/the_dirt_under_the_meadow.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/the_dirt_under_the_meadow.ogg-ec40b1fe83041819a74174d557b9a8a2.oggstr" + +[deps] + +source_file="res://audio/music/the_dirt_under_the_meadow.ogg" +dest_files=[ "res://.import/the_dirt_under_the_meadow.ogg-ec40b1fe83041819a74174d557b9a8a2.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/music/vitreous_squares.ogg b/audio/music/vitreous_squares.ogg new file mode 100644 index 0000000..bbbe63c Binary files /dev/null and b/audio/music/vitreous_squares.ogg differ diff --git a/audio/music/vitreous_squares.ogg.import b/audio/music/vitreous_squares.ogg.import new file mode 100644 index 0000000..773e0e1 --- /dev/null +++ b/audio/music/vitreous_squares.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/vitreous_squares.ogg-524c15223b7d282c1532fe2fa5032ad4.oggstr" + +[deps] + +source_file="res://audio/music/vitreous_squares.ogg" +dest_files=[ "res://.import/vitreous_squares.ogg-524c15223b7d282c1532fe2fa5032ad4.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/sounds/2600_charge.ogg b/audio/sounds/2600_charge.ogg new file mode 100644 index 0000000..fbbd272 Binary files /dev/null and b/audio/sounds/2600_charge.ogg differ diff --git a/audio/sounds/2600_charge.ogg.import b/audio/sounds/2600_charge.ogg.import new file mode 100644 index 0000000..2d0a434 --- /dev/null +++ b/audio/sounds/2600_charge.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/2600_charge.ogg-552c059b733cc8184b757ad5155adbff.oggstr" + +[deps] + +source_file="res://audio/sounds/2600_charge.ogg" +dest_files=[ "res://.import/2600_charge.ogg-552c059b733cc8184b757ad5155adbff.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/a_bmilc.ogg b/audio/sounds/a_bmilc.ogg index 583673e..3837a1c 100644 Binary files a/audio/sounds/a_bmilc.ogg and b/audio/sounds/a_bmilc.ogg differ diff --git a/audio/sounds/a_bree.wav b/audio/sounds/a_bree.wav deleted file mode 100644 index 9934ee5..0000000 Binary files a/audio/sounds/a_bree.wav and /dev/null differ diff --git a/audio/sounds/a_climb.ogg b/audio/sounds/a_climb.ogg index 6cb953e..57d6533 100644 Binary files a/audio/sounds/a_climb.ogg and b/audio/sounds/a_climb.ogg differ diff --git a/audio/sounds/a_egg_collect.ogg b/audio/sounds/a_egg_collect.ogg index ef77f6e..4dbd68d 100644 Binary files a/audio/sounds/a_egg_collect.ogg and b/audio/sounds/a_egg_collect.ogg differ diff --git a/audio/sounds/absorb_shard.ogg b/audio/sounds/absorb_shard.ogg new file mode 100644 index 0000000..6082d1a Binary files /dev/null and b/audio/sounds/absorb_shard.ogg differ diff --git a/audio/sounds/absorb_shard.ogg.import b/audio/sounds/absorb_shard.ogg.import new file mode 100644 index 0000000..2782995 --- /dev/null +++ b/audio/sounds/absorb_shard.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/absorb_shard.ogg-eb69c32cbec975404891eab572731b58.oggstr" + +[deps] + +source_file="res://audio/sounds/absorb_shard.ogg" +dest_files=[ "res://.import/absorb_shard.ogg-eb69c32cbec975404891eab572731b58.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/arrow_collect.ogg b/audio/sounds/arrow_collect.ogg new file mode 100644 index 0000000..1bb3880 Binary files /dev/null and b/audio/sounds/arrow_collect.ogg differ diff --git a/audio/sounds/arrow_collect.ogg.import b/audio/sounds/arrow_collect.ogg.import new file mode 100644 index 0000000..f54d402 --- /dev/null +++ b/audio/sounds/arrow_collect.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/arrow_collect.ogg-a6db24e54d6e61908a36726a5df41128.oggstr" + +[deps] + +source_file="res://audio/sounds/arrow_collect.ogg" +dest_files=[ "res://.import/arrow_collect.ogg-a6db24e54d6e61908a36726a5df41128.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/arrow_pickup.ogg.import b/audio/sounds/arrow_pickup.ogg.import new file mode 100644 index 0000000..50906a7 --- /dev/null +++ b/audio/sounds/arrow_pickup.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/arrow_pickup.ogg-dd3468a026da10a508aafd753182197f.oggstr" + +[deps] + +source_file="res://audio/sounds/arrow_pickup.ogg" +dest_files=[ "res://.import/arrow_pickup.ogg-dd3468a026da10a508aafd753182197f.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/bone_rattle.ogg.import b/audio/sounds/bone_rattle.ogg.import new file mode 100644 index 0000000..d0e5a5e --- /dev/null +++ b/audio/sounds/bone_rattle.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/bone_rattle.ogg-1b9b692b16f9996980feab0fd8c6899b.oggstr" + +[deps] + +source_file="res://audio/sounds/bone_rattle.ogg" +dest_files=[ "res://.import/bone_rattle.ogg-1b9b692b16f9996980feab0fd8c6899b.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/boss_hurt.ogg.import b/audio/sounds/boss_hurt.ogg.import new file mode 100644 index 0000000..c6a1258 --- /dev/null +++ b/audio/sounds/boss_hurt.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/boss_hurt.ogg-aff6332a4546cc6c13d1adec8be22161.oggstr" + +[deps] + +source_file="res://audio/sounds/boss_hurt.ogg" +dest_files=[ "res://.import/boss_hurt.ogg-aff6332a4546cc6c13d1adec8be22161.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/boss_hurt.wav b/audio/sounds/boss_hurt.wav deleted file mode 100644 index 10fc2a4..0000000 Binary files a/audio/sounds/boss_hurt.wav and /dev/null differ diff --git a/audio/sounds/bubble.ogg b/audio/sounds/bubble.ogg new file mode 100644 index 0000000..bab5803 Binary files /dev/null and b/audio/sounds/bubble.ogg differ diff --git a/audio/sounds/bubble.ogg.import b/audio/sounds/bubble.ogg.import new file mode 100644 index 0000000..fdd6860 --- /dev/null +++ b/audio/sounds/bubble.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/bubble.ogg-3cff0ff1f116f556089f132bc827c01b.oggstr" + +[deps] + +source_file="res://audio/sounds/bubble.ogg" +dest_files=[ "res://.import/bubble.ogg-3cff0ff1f116f556089f132bc827c01b.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/bullet_barrage.ogg b/audio/sounds/bullet_barrage.ogg new file mode 100644 index 0000000..5d0b2a4 Binary files /dev/null and b/audio/sounds/bullet_barrage.ogg differ diff --git a/audio/sounds/bullet_barrage.ogg.import b/audio/sounds/bullet_barrage.ogg.import new file mode 100644 index 0000000..14697d0 --- /dev/null +++ b/audio/sounds/bullet_barrage.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/bullet_barrage.ogg-cecd7e8158fd71975520f9b40ca8b8e8.oggstr" + +[deps] + +source_file="res://audio/sounds/bullet_barrage.ogg" +dest_files=[ "res://.import/bullet_barrage.ogg-cecd7e8158fd71975520f9b40ca8b8e8.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/bullet_barrage0.ogg.import b/audio/sounds/bullet_barrage0.ogg.import new file mode 100644 index 0000000..94ba3ac --- /dev/null +++ b/audio/sounds/bullet_barrage0.ogg.import @@ -0,0 +1,13 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +valid=false + +[deps] + +source_file="res://audio/sounds/bullet_barrage0.ogg" +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/button.ogg b/audio/sounds/button.ogg index c0eb3db..073a0cb 100644 Binary files a/audio/sounds/button.ogg and b/audio/sounds/button.ogg differ diff --git a/audio/sounds/coin.wav b/audio/sounds/coin.wav new file mode 100644 index 0000000..c258b39 Binary files /dev/null and b/audio/sounds/coin.wav differ diff --git a/audio/sounds/star.wav.import b/audio/sounds/coin.wav.import similarity index 58% rename from audio/sounds/star.wav.import rename to audio/sounds/coin.wav.import index 573ca51..24f1394 100644 --- a/audio/sounds/star.wav.import +++ b/audio/sounds/coin.wav.import @@ -2,12 +2,12 @@ importer="wav" type="AudioStreamSample" -path="res://.import/star.wav-ec5381e4c3b71647d3c29a14f3588eff.sample" +path="res://.import/coin.wav-684b22528021c5adcd535ba4ddcbd887.sample" [deps] -source_file="res://audio/sounds/star.wav" -dest_files=[ "res://.import/star.wav-ec5381e4c3b71647d3c29a14f3588eff.sample" ] +source_file="res://audio/sounds/coin.wav" +dest_files=[ "res://.import/coin.wav-684b22528021c5adcd535ba4ddcbd887.sample" ] [params] diff --git a/audio/sounds/collapse_block_fall.ogg b/audio/sounds/collapse_block_fall.ogg new file mode 100644 index 0000000..ce84ee0 Binary files /dev/null and b/audio/sounds/collapse_block_fall.ogg differ diff --git a/audio/sounds/collapse_block_fall.ogg.import b/audio/sounds/collapse_block_fall.ogg.import new file mode 100644 index 0000000..c137810 --- /dev/null +++ b/audio/sounds/collapse_block_fall.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/collapse_block_fall.ogg-19fc12e4158496504199681c63b367f9.oggstr" + +[deps] + +source_file="res://audio/sounds/collapse_block_fall.ogg" +dest_files=[ "res://.import/collapse_block_fall.ogg-19fc12e4158496504199681c63b367f9.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/confirm.ogg b/audio/sounds/confirm.ogg new file mode 100644 index 0000000..7f85b68 Binary files /dev/null and b/audio/sounds/confirm.ogg differ diff --git a/audio/sounds/confirm.ogg.import b/audio/sounds/confirm.ogg.import new file mode 100644 index 0000000..d49e766 --- /dev/null +++ b/audio/sounds/confirm.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/confirm.ogg-74399903930640aa54bc9194bf595362.oggstr" + +[deps] + +source_file="res://audio/sounds/confirm.ogg" +dest_files=[ "res://.import/confirm.ogg-74399903930640aa54bc9194bf595362.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/cop_shoot.ogg b/audio/sounds/cop_shoot.ogg new file mode 100644 index 0000000..ff5a124 Binary files /dev/null and b/audio/sounds/cop_shoot.ogg differ diff --git a/audio/sounds/cop_shoot.ogg.import b/audio/sounds/cop_shoot.ogg.import new file mode 100644 index 0000000..4096abd --- /dev/null +++ b/audio/sounds/cop_shoot.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/cop_shoot.ogg-9b313ebb8fdaa01b18fd3850d015564e.oggstr" + +[deps] + +source_file="res://audio/sounds/cop_shoot.ogg" +dest_files=[ "res://.import/cop_shoot.ogg-9b313ebb8fdaa01b18fd3850d015564e.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/cop_splat.ogg b/audio/sounds/cop_splat.ogg new file mode 100644 index 0000000..20d6aaa Binary files /dev/null and b/audio/sounds/cop_splat.ogg differ diff --git a/audio/sounds/cop_splat.ogg.import b/audio/sounds/cop_splat.ogg.import new file mode 100644 index 0000000..71550bd --- /dev/null +++ b/audio/sounds/cop_splat.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/cop_splat.ogg-5903ad8999d95a4ef126279b8e808331.oggstr" + +[deps] + +source_file="res://audio/sounds/cop_splat.ogg" +dest_files=[ "res://.import/cop_splat.ogg-5903ad8999d95a4ef126279b8e808331.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/copsquash.ogg b/audio/sounds/copsquash.ogg new file mode 100644 index 0000000..b688b4f Binary files /dev/null and b/audio/sounds/copsquash.ogg differ diff --git a/audio/sounds/copsquash.ogg.import b/audio/sounds/copsquash.ogg.import new file mode 100644 index 0000000..c8139b9 --- /dev/null +++ b/audio/sounds/copsquash.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/copsquash.ogg-a2a63a7fc30ae2fd8b3edcf426e02f2a.oggstr" + +[deps] + +source_file="res://audio/sounds/copsquash.ogg" +dest_files=[ "res://.import/copsquash.ogg-a2a63a7fc30ae2fd8b3edcf426e02f2a.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/a_egg_shoot.ogg b/audio/sounds/critical_heat.ogg similarity index 72% rename from audio/sounds/a_egg_shoot.ogg rename to audio/sounds/critical_heat.ogg index 9d36c0b..de97809 100644 Binary files a/audio/sounds/a_egg_shoot.ogg and b/audio/sounds/critical_heat.ogg differ diff --git a/audio/sounds/critical_heat.ogg.import b/audio/sounds/critical_heat.ogg.import new file mode 100644 index 0000000..5f18653 --- /dev/null +++ b/audio/sounds/critical_heat.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/critical_heat.ogg-c4d74947cf30c204bc7abcc93d69d8d3.oggstr" + +[deps] + +source_file="res://audio/sounds/critical_heat.ogg" +dest_files=[ "res://.import/critical_heat.ogg-c4d74947cf30c204bc7abcc93d69d8d3.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/die.ogg b/audio/sounds/die.ogg new file mode 100644 index 0000000..ced82de Binary files /dev/null and b/audio/sounds/die.ogg differ diff --git a/audio/sounds/die.ogg.import b/audio/sounds/die.ogg.import new file mode 100644 index 0000000..bc71efb --- /dev/null +++ b/audio/sounds/die.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/die.ogg-7c9b7bae34312e63da8e060aed19e984.oggstr" + +[deps] + +source_file="res://audio/sounds/die.ogg" +dest_files=[ "res://.import/die.ogg-7c9b7bae34312e63da8e060aed19e984.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/die.wav b/audio/sounds/die.wav deleted file mode 100644 index e0d3233..0000000 Binary files a/audio/sounds/die.wav and /dev/null differ diff --git a/audio/sounds/die_robot.wav b/audio/sounds/die_robot.wav deleted file mode 100644 index 4a4b28f..0000000 Binary files a/audio/sounds/die_robot.wav and /dev/null differ diff --git a/audio/sounds/die_robot.wav.import b/audio/sounds/die_robot.wav.import deleted file mode 100644 index 88d7774..0000000 --- a/audio/sounds/die_robot.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/die_robot.wav-0427c625164396232ce1323d11ec4e7e.sample" - -[deps] - -source_file="res://audio/sounds/die_robot.wav" -dest_files=[ "res://.import/die_robot.wav-0427c625164396232ce1323d11ec4e7e.sample" ] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/audio/sounds/die_skeleton.ogg b/audio/sounds/die_skeleton.ogg new file mode 100644 index 0000000..43054f0 Binary files /dev/null and b/audio/sounds/die_skeleton.ogg differ diff --git a/audio/sounds/die_skeleton.ogg.import b/audio/sounds/die_skeleton.ogg.import new file mode 100644 index 0000000..154ac05 --- /dev/null +++ b/audio/sounds/die_skeleton.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/die_skeleton.ogg-b5f6dc4a23c68bf3a4e3144ce631922a.oggstr" + +[deps] + +source_file="res://audio/sounds/die_skeleton.ogg" +dest_files=[ "res://.import/die_skeleton.ogg-b5f6dc4a23c68bf3a4e3144ce631922a.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/die_skeleton.wav b/audio/sounds/die_skeleton.wav deleted file mode 100644 index f9df5ff..0000000 Binary files a/audio/sounds/die_skeleton.wav and /dev/null differ diff --git a/audio/sounds/die_skeleton.wav.import b/audio/sounds/die_skeleton.wav.import deleted file mode 100644 index 06c0e7a..0000000 --- a/audio/sounds/die_skeleton.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/die_skeleton.wav-5ebafbb57bab56e76a09d94d4eb83665.sample" - -[deps] - -source_file="res://audio/sounds/die_skeleton.wav" -dest_files=[ "res://.import/die_skeleton.wav-5ebafbb57bab56e76a09d94d4eb83665.sample" ] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/audio/sounds/die_skeleton0.wav.import b/audio/sounds/die_skeleton0.wav.import deleted file mode 100644 index ebb2b98..0000000 --- a/audio/sounds/die_skeleton0.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/die_skeleton0.wav-eab6b1776a44d2159a1e34d3f8ac0cdf.sample" - -[deps] - -source_file="res://audio/sounds/die_skeleton0.wav" -dest_files=[ "res://.import/die_skeleton0.wav-eab6b1776a44d2159a1e34d3f8ac0cdf.sample" ] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/audio/sounds/double_jump.ogg b/audio/sounds/double_jump.ogg new file mode 100644 index 0000000..f8a661a Binary files /dev/null and b/audio/sounds/double_jump.ogg differ diff --git a/audio/sounds/double_jump.ogg.import b/audio/sounds/double_jump.ogg.import new file mode 100644 index 0000000..aeef054 --- /dev/null +++ b/audio/sounds/double_jump.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/double_jump.ogg-267703e555e75324b81d37d5d92308da.oggstr" + +[deps] + +source_file="res://audio/sounds/double_jump.ogg" +dest_files=[ "res://.import/double_jump.ogg-267703e555e75324b81d37d5d92308da.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/explosion.ogg b/audio/sounds/explosion.ogg new file mode 100644 index 0000000..d1c2303 Binary files /dev/null and b/audio/sounds/explosion.ogg differ diff --git a/audio/sounds/explosion.ogg.import b/audio/sounds/explosion.ogg.import new file mode 100644 index 0000000..cb20a51 --- /dev/null +++ b/audio/sounds/explosion.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/explosion.ogg-390c0c53733d8d0ae861fc04f953f471.oggstr" + +[deps] + +source_file="res://audio/sounds/explosion.ogg" +dest_files=[ "res://.import/explosion.ogg-390c0c53733d8d0ae861fc04f953f471.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/explosion_small.ogg b/audio/sounds/explosion_small.ogg new file mode 100644 index 0000000..6c72b24 Binary files /dev/null and b/audio/sounds/explosion_small.ogg differ diff --git a/audio/sounds/explosion_small.ogg.import b/audio/sounds/explosion_small.ogg.import new file mode 100644 index 0000000..015f8ed --- /dev/null +++ b/audio/sounds/explosion_small.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/explosion_small.ogg-5216335c53e96b9f065c97dbab493900.oggstr" + +[deps] + +source_file="res://audio/sounds/explosion_small.ogg" +dest_files=[ "res://.import/explosion_small.ogg-5216335c53e96b9f065c97dbab493900.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/fail_shard.ogg b/audio/sounds/fail_shard.ogg new file mode 100644 index 0000000..0feb89d Binary files /dev/null and b/audio/sounds/fail_shard.ogg differ diff --git a/audio/sounds/fail_shard.ogg.import b/audio/sounds/fail_shard.ogg.import new file mode 100644 index 0000000..4920d06 --- /dev/null +++ b/audio/sounds/fail_shard.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/fail_shard.ogg-f4a17a606ec4c8e07282fd39330025e8.oggstr" + +[deps] + +source_file="res://audio/sounds/fail_shard.ogg" +dest_files=[ "res://.import/fail_shard.ogg-f4a17a606ec4c8e07282fd39330025e8.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/fami_fire.ogg b/audio/sounds/fami_fire.ogg new file mode 100644 index 0000000..1feea51 Binary files /dev/null and b/audio/sounds/fami_fire.ogg differ diff --git a/audio/sounds/fami_fire.ogg.import b/audio/sounds/fami_fire.ogg.import new file mode 100644 index 0000000..e9ff0ca --- /dev/null +++ b/audio/sounds/fami_fire.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/fami_fire.ogg-7d48246f6888726a31873eea08f70a0e.oggstr" + +[deps] + +source_file="res://audio/sounds/fami_fire.ogg" +dest_files=[ "res://.import/fami_fire.ogg-7d48246f6888726a31873eea08f70a0e.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/fami_grumble.ogg b/audio/sounds/fami_grumble.ogg new file mode 100644 index 0000000..ff70c8a Binary files /dev/null and b/audio/sounds/fami_grumble.ogg differ diff --git a/audio/sounds/fami_grumble.ogg.import b/audio/sounds/fami_grumble.ogg.import new file mode 100644 index 0000000..6894907 --- /dev/null +++ b/audio/sounds/fami_grumble.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/fami_grumble.ogg-cabbe16ca489c6f315bf9a64fc367c42.oggstr" + +[deps] + +source_file="res://audio/sounds/fami_grumble.ogg" +dest_files=[ "res://.import/fami_grumble.ogg-cabbe16ca489c6f315bf9a64fc367c42.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/fami_hurt.ogg b/audio/sounds/fami_hurt.ogg new file mode 100644 index 0000000..5570b42 Binary files /dev/null and b/audio/sounds/fami_hurt.ogg differ diff --git a/audio/sounds/fami_hurt.ogg.import b/audio/sounds/fami_hurt.ogg.import new file mode 100644 index 0000000..2fb9551 --- /dev/null +++ b/audio/sounds/fami_hurt.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/fami_hurt.ogg-adfce286ee95d8c964b46278ec8ff44c.oggstr" + +[deps] + +source_file="res://audio/sounds/fami_hurt.ogg" +dest_files=[ "res://.import/fami_hurt.ogg-adfce286ee95d8c964b46278ec8ff44c.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/fami_transform.ogg b/audio/sounds/fami_transform.ogg new file mode 100644 index 0000000..0832586 Binary files /dev/null and b/audio/sounds/fami_transform.ogg differ diff --git a/audio/sounds/fami_transform.ogg.import b/audio/sounds/fami_transform.ogg.import new file mode 100644 index 0000000..08a7e4f --- /dev/null +++ b/audio/sounds/fami_transform.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/fami_transform.ogg-36f9a31db915a5c7f08d6eca0c6987e2.oggstr" + +[deps] + +source_file="res://audio/sounds/fami_transform.ogg" +dest_files=[ "res://.import/fami_transform.ogg-36f9a31db915a5c7f08d6eca0c6987e2.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/fami_voice.ogg b/audio/sounds/fami_voice.ogg new file mode 100644 index 0000000..b0e3991 Binary files /dev/null and b/audio/sounds/fami_voice.ogg differ diff --git a/audio/sounds/fami_voice.ogg.import b/audio/sounds/fami_voice.ogg.import new file mode 100644 index 0000000..d955920 --- /dev/null +++ b/audio/sounds/fami_voice.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/fami_voice.ogg-db460be518287a913514bed855116c82.oggstr" + +[deps] + +source_file="res://audio/sounds/fami_voice.ogg" +dest_files=[ "res://.import/fami_voice.ogg-db460be518287a913514bed855116c82.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/famira.ogg b/audio/sounds/famira.ogg new file mode 100644 index 0000000..14cf6fa Binary files /dev/null and b/audio/sounds/famira.ogg differ diff --git a/audio/sounds/famira.ogg.import b/audio/sounds/famira.ogg.import new file mode 100644 index 0000000..094f6ee --- /dev/null +++ b/audio/sounds/famira.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/famira.ogg-a36a49df38f219f1404994bb084b014e.oggstr" + +[deps] + +source_file="res://audio/sounds/famira.ogg" +dest_files=[ "res://.import/famira.ogg-a36a49df38f219f1404994bb084b014e.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/famira_die.ogg b/audio/sounds/famira_die.ogg new file mode 100644 index 0000000..7d20e07 Binary files /dev/null and b/audio/sounds/famira_die.ogg differ diff --git a/audio/sounds/famira_die.ogg.import b/audio/sounds/famira_die.ogg.import new file mode 100644 index 0000000..75afbd9 --- /dev/null +++ b/audio/sounds/famira_die.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/famira_die.ogg-5e8656416f24ec451fe959394c386838.oggstr" + +[deps] + +source_file="res://audio/sounds/famira_die.ogg" +dest_files=[ "res://.import/famira_die.ogg-5e8656416f24ec451fe959394c386838.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/final_score.ogg b/audio/sounds/final_score.ogg new file mode 100644 index 0000000..6465fc7 Binary files /dev/null and b/audio/sounds/final_score.ogg differ diff --git a/audio/sounds/final_score.ogg.import b/audio/sounds/final_score.ogg.import new file mode 100644 index 0000000..7f307f3 --- /dev/null +++ b/audio/sounds/final_score.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/final_score.ogg-698b546c7ff0383c5d1646709110ec0f.oggstr" + +[deps] + +source_file="res://audio/sounds/final_score.ogg" +dest_files=[ "res://.import/final_score.ogg-698b546c7ff0383c5d1646709110ec0f.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/good_job.ogg b/audio/sounds/good_job.ogg new file mode 100644 index 0000000..8eba71b Binary files /dev/null and b/audio/sounds/good_job.ogg differ diff --git a/audio/sounds/good_job.ogg.import b/audio/sounds/good_job.ogg.import new file mode 100644 index 0000000..920a207 --- /dev/null +++ b/audio/sounds/good_job.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/good_job.ogg-9be33b7ca519dfdba26ae8eadb366548.oggstr" + +[deps] + +source_file="res://audio/sounds/good_job.ogg" +dest_files=[ "res://.import/good_job.ogg-9be33b7ca519dfdba26ae8eadb366548.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/good_job_dog.ogg b/audio/sounds/good_job_dog.ogg new file mode 100644 index 0000000..9d427ba Binary files /dev/null and b/audio/sounds/good_job_dog.ogg differ diff --git a/audio/sounds/good_job_dog.ogg.import b/audio/sounds/good_job_dog.ogg.import new file mode 100644 index 0000000..f720b72 --- /dev/null +++ b/audio/sounds/good_job_dog.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/good_job_dog.ogg-fdb26580734a51638687bb48a878a321.oggstr" + +[deps] + +source_file="res://audio/sounds/good_job_dog.ogg" +dest_files=[ "res://.import/good_job_dog.ogg-fdb26580734a51638687bb48a878a321.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/good_job_haze.ogg b/audio/sounds/good_job_haze.ogg new file mode 100644 index 0000000..e17bcf1 Binary files /dev/null and b/audio/sounds/good_job_haze.ogg differ diff --git a/audio/sounds/good_job_haze.ogg.import b/audio/sounds/good_job_haze.ogg.import new file mode 100644 index 0000000..3327955 --- /dev/null +++ b/audio/sounds/good_job_haze.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/good_job_haze.ogg-e620bfd972c99200170ee2de1faaefb9.oggstr" + +[deps] + +source_file="res://audio/sounds/good_job_haze.ogg" +dest_files=[ "res://.import/good_job_haze.ogg-e620bfd972c99200170ee2de1faaefb9.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/good_job_ivy.ogg b/audio/sounds/good_job_ivy.ogg new file mode 100644 index 0000000..2706f0d Binary files /dev/null and b/audio/sounds/good_job_ivy.ogg differ diff --git a/audio/sounds/good_job_ivy.ogg.import b/audio/sounds/good_job_ivy.ogg.import new file mode 100644 index 0000000..1ab002c --- /dev/null +++ b/audio/sounds/good_job_ivy.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/good_job_ivy.ogg-980b3aa2dc9efcf1175aaa1cce605655.oggstr" + +[deps] + +source_file="res://audio/sounds/good_job_ivy.ogg" +dest_files=[ "res://.import/good_job_ivy.ogg-980b3aa2dc9efcf1175aaa1cce605655.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/good_job_penny.ogg b/audio/sounds/good_job_penny.ogg new file mode 100644 index 0000000..d296f03 Binary files /dev/null and b/audio/sounds/good_job_penny.ogg differ diff --git a/audio/sounds/good_job_penny.ogg.import b/audio/sounds/good_job_penny.ogg.import new file mode 100644 index 0000000..6299116 --- /dev/null +++ b/audio/sounds/good_job_penny.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/good_job_penny.ogg-70bcb6e36cc4455c814fcf94355f30c9.oggstr" + +[deps] + +source_file="res://audio/sounds/good_job_penny.ogg" +dest_files=[ "res://.import/good_job_penny.ogg-70bcb6e36cc4455c814fcf94355f30c9.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/gover.ogg b/audio/sounds/gover.ogg new file mode 100644 index 0000000..476c3ba Binary files /dev/null and b/audio/sounds/gover.ogg differ diff --git a/audio/sounds/gover.ogg.import b/audio/sounds/gover.ogg.import new file mode 100644 index 0000000..87a4a9f --- /dev/null +++ b/audio/sounds/gover.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/gover.ogg-71eb4d076c82a3c9c030a4b6d2063858.oggstr" + +[deps] + +source_file="res://audio/sounds/gover.ogg" +dest_files=[ "res://.import/gover.ogg-71eb4d076c82a3c9c030a4b6d2063858.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/gover.wav b/audio/sounds/gover.wav deleted file mode 100644 index f0b5ae3..0000000 Binary files a/audio/sounds/gover.wav and /dev/null differ diff --git a/audio/sounds/great_job_dog.ogg b/audio/sounds/great_job_dog.ogg new file mode 100644 index 0000000..1fbf8ed Binary files /dev/null and b/audio/sounds/great_job_dog.ogg differ diff --git a/audio/sounds/great_job_dog.ogg.import b/audio/sounds/great_job_dog.ogg.import new file mode 100644 index 0000000..7fb2ccc --- /dev/null +++ b/audio/sounds/great_job_dog.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/great_job_dog.ogg-d5861f1eb79f2944ff1fb57a2a380d61.oggstr" + +[deps] + +source_file="res://audio/sounds/great_job_dog.ogg" +dest_files=[ "res://.import/great_job_dog.ogg-d5861f1eb79f2944ff1fb57a2a380d61.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/great_job_haze.ogg b/audio/sounds/great_job_haze.ogg new file mode 100644 index 0000000..ccfa959 Binary files /dev/null and b/audio/sounds/great_job_haze.ogg differ diff --git a/audio/sounds/great_job_haze.ogg.import b/audio/sounds/great_job_haze.ogg.import new file mode 100644 index 0000000..c458b28 --- /dev/null +++ b/audio/sounds/great_job_haze.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/great_job_haze.ogg-eff3cbdd6900d16b1973d95c847b8ff1.oggstr" + +[deps] + +source_file="res://audio/sounds/great_job_haze.ogg" +dest_files=[ "res://.import/great_job_haze.ogg-eff3cbdd6900d16b1973d95c847b8ff1.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/great_job_ivy.ogg b/audio/sounds/great_job_ivy.ogg new file mode 100644 index 0000000..1ec125e Binary files /dev/null and b/audio/sounds/great_job_ivy.ogg differ diff --git a/audio/sounds/great_job_ivy.ogg.import b/audio/sounds/great_job_ivy.ogg.import new file mode 100644 index 0000000..ddfe82d --- /dev/null +++ b/audio/sounds/great_job_ivy.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/great_job_ivy.ogg-c2aefb6f69bb89df5bc185341129b6ca.oggstr" + +[deps] + +source_file="res://audio/sounds/great_job_ivy.ogg" +dest_files=[ "res://.import/great_job_ivy.ogg-c2aefb6f69bb89df5bc185341129b6ca.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/great_job_penny.ogg b/audio/sounds/great_job_penny.ogg new file mode 100644 index 0000000..10a27a4 Binary files /dev/null and b/audio/sounds/great_job_penny.ogg differ diff --git a/audio/sounds/great_job_penny.ogg.import b/audio/sounds/great_job_penny.ogg.import new file mode 100644 index 0000000..98ad084 --- /dev/null +++ b/audio/sounds/great_job_penny.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/great_job_penny.ogg-a9b4c1b6050a8b63442cbfaca9f9b776.oggstr" + +[deps] + +source_file="res://audio/sounds/great_job_penny.ogg" +dest_files=[ "res://.import/great_job_penny.ogg-a9b4c1b6050a8b63442cbfaca9f9b776.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/gun_cock.ogg b/audio/sounds/gun_cock.ogg new file mode 100644 index 0000000..ad55e43 Binary files /dev/null and b/audio/sounds/gun_cock.ogg differ diff --git a/audio/sounds/gun_cock.ogg.import b/audio/sounds/gun_cock.ogg.import new file mode 100644 index 0000000..8e19965 --- /dev/null +++ b/audio/sounds/gun_cock.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/gun_cock.ogg-e3270054d952c50d489fc1e0bd7a71d1.oggstr" + +[deps] + +source_file="res://audio/sounds/gun_cock.ogg" +dest_files=[ "res://.import/gun_cock.ogg-e3270054d952c50d489fc1e0bd7a71d1.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/intro_voiceover.ogg b/audio/sounds/intro_voiceover.ogg new file mode 100644 index 0000000..eb0ab22 Binary files /dev/null and b/audio/sounds/intro_voiceover.ogg differ diff --git a/audio/sounds/intro_voiceover.ogg.import b/audio/sounds/intro_voiceover.ogg.import new file mode 100644 index 0000000..4dc6847 --- /dev/null +++ b/audio/sounds/intro_voiceover.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/intro_voiceover.ogg-394307c1c86e42f9b1d6a08f865fda1d.oggstr" + +[deps] + +source_file="res://audio/sounds/intro_voiceover.ogg" +dest_files=[ "res://.import/intro_voiceover.ogg-394307c1c86e42f9b1d6a08f865fda1d.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/jump.ogg b/audio/sounds/jump.ogg index 8a4c658..7ce2828 100644 Binary files a/audio/sounds/jump.ogg and b/audio/sounds/jump.ogg differ diff --git a/audio/sounds/key.ogg b/audio/sounds/key.ogg index df7b0c5..e0cac37 100644 Binary files a/audio/sounds/key.ogg and b/audio/sounds/key.ogg differ diff --git a/audio/sounds/land.ogg b/audio/sounds/land.ogg new file mode 100644 index 0000000..eb17d83 Binary files /dev/null and b/audio/sounds/land.ogg differ diff --git a/audio/sounds/land.ogg.import b/audio/sounds/land.ogg.import new file mode 100644 index 0000000..a02cb51 --- /dev/null +++ b/audio/sounds/land.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/land.ogg-9d95e8534632340414024141bf32590e.oggstr" + +[deps] + +source_file="res://audio/sounds/land.ogg" +dest_files=[ "res://.import/land.ogg-9d95e8534632340414024141bf32590e.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/laser_charge.ogg.import b/audio/sounds/laser_charge.ogg.import new file mode 100644 index 0000000..9eb79a1 --- /dev/null +++ b/audio/sounds/laser_charge.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/laser_charge.ogg-3dd55e9655eb311b462e45b101329c49.oggstr" + +[deps] + +source_file="res://audio/sounds/laser_charge.ogg" +dest_files=[ "res://.import/laser_charge.ogg-3dd55e9655eb311b462e45b101329c49.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/laser_ready.ogg b/audio/sounds/laser_ready.ogg new file mode 100644 index 0000000..e6af735 Binary files /dev/null and b/audio/sounds/laser_ready.ogg differ diff --git a/audio/sounds/laser_ready.ogg.import b/audio/sounds/laser_ready.ogg.import new file mode 100644 index 0000000..8f179ce --- /dev/null +++ b/audio/sounds/laser_ready.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/laser_ready.ogg-31781bea44cd48185c1814586386ce52.oggstr" + +[deps] + +source_file="res://audio/sounds/laser_ready.ogg" +dest_files=[ "res://.import/laser_ready.ogg-31781bea44cd48185c1814586386ce52.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_creak.ogg b/audio/sounds/mech_creak.ogg new file mode 100644 index 0000000..87e82e8 Binary files /dev/null and b/audio/sounds/mech_creak.ogg differ diff --git a/audio/sounds/mech_creak.ogg.import b/audio/sounds/mech_creak.ogg.import new file mode 100644 index 0000000..acb4acb --- /dev/null +++ b/audio/sounds/mech_creak.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_creak.ogg-79fbe143f3146fc7febbee874f944d6c.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_creak.ogg" +dest_files=[ "res://.import/mech_creak.ogg-79fbe143f3146fc7febbee874f944d6c.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_duck.ogg b/audio/sounds/mech_duck.ogg new file mode 100644 index 0000000..2225181 Binary files /dev/null and b/audio/sounds/mech_duck.ogg differ diff --git a/audio/sounds/mech_duck.ogg.import b/audio/sounds/mech_duck.ogg.import new file mode 100644 index 0000000..66f42dc --- /dev/null +++ b/audio/sounds/mech_duck.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_duck.ogg-f872dbebd84ac9158569244ca28688d9.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_duck.ogg" +dest_files=[ "res://.import/mech_duck.ogg-f872dbebd84ac9158569244ca28688d9.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_hurt_1.ogg b/audio/sounds/mech_hurt_1.ogg new file mode 100644 index 0000000..1aefc37 Binary files /dev/null and b/audio/sounds/mech_hurt_1.ogg differ diff --git a/audio/sounds/mech_hurt_1.ogg.import b/audio/sounds/mech_hurt_1.ogg.import new file mode 100644 index 0000000..5e9c36e --- /dev/null +++ b/audio/sounds/mech_hurt_1.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_hurt_1.ogg-3613187863d4f98f3a9f22e47b611f8f.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_hurt_1.ogg" +dest_files=[ "res://.import/mech_hurt_1.ogg-3613187863d4f98f3a9f22e47b611f8f.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_hurt_2.ogg b/audio/sounds/mech_hurt_2.ogg new file mode 100644 index 0000000..db7565b Binary files /dev/null and b/audio/sounds/mech_hurt_2.ogg differ diff --git a/audio/sounds/mech_hurt_2.ogg.import b/audio/sounds/mech_hurt_2.ogg.import new file mode 100644 index 0000000..23bbed1 --- /dev/null +++ b/audio/sounds/mech_hurt_2.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_hurt_2.ogg-06f2bf8e9e2a35bc165865b277728bc9.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_hurt_2.ogg" +dest_files=[ "res://.import/mech_hurt_2.ogg-06f2bf8e9e2a35bc165865b277728bc9.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_hurt_3.ogg b/audio/sounds/mech_hurt_3.ogg new file mode 100644 index 0000000..0fcb6e5 Binary files /dev/null and b/audio/sounds/mech_hurt_3.ogg differ diff --git a/audio/sounds/mech_hurt_3.ogg.import b/audio/sounds/mech_hurt_3.ogg.import new file mode 100644 index 0000000..e18a670 --- /dev/null +++ b/audio/sounds/mech_hurt_3.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_hurt_3.ogg-a99c2a508a217f16aaa34167044be027.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_hurt_3.ogg" +dest_files=[ "res://.import/mech_hurt_3.ogg-a99c2a508a217f16aaa34167044be027.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_unduck.ogg b/audio/sounds/mech_unduck.ogg new file mode 100644 index 0000000..d4d6eee Binary files /dev/null and b/audio/sounds/mech_unduck.ogg differ diff --git a/audio/sounds/mech_unduck.ogg.import b/audio/sounds/mech_unduck.ogg.import new file mode 100644 index 0000000..a758b94 --- /dev/null +++ b/audio/sounds/mech_unduck.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_unduck.ogg-b986ec111e294ac0b230f17881a5765d.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_unduck.ogg" +dest_files=[ "res://.import/mech_unduck.ogg-b986ec111e294ac0b230f17881a5765d.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_walk.ogg b/audio/sounds/mech_walk.ogg new file mode 100644 index 0000000..2d044ef Binary files /dev/null and b/audio/sounds/mech_walk.ogg differ diff --git a/audio/sounds/mech_walk.ogg.import b/audio/sounds/mech_walk.ogg.import new file mode 100644 index 0000000..c6d3239 --- /dev/null +++ b/audio/sounds/mech_walk.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_walk.ogg-13e00915dfb31c8d2d1b15a28b1f75cd.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_walk.ogg" +dest_files=[ "res://.import/mech_walk.ogg-13e00915dfb31c8d2d1b15a28b1f75cd.oggstr" ] + +[params] + +loop=true +loop_offset=0 diff --git a/audio/sounds/mech_walk_1.ogg b/audio/sounds/mech_walk_1.ogg new file mode 100644 index 0000000..f1d41e9 Binary files /dev/null and b/audio/sounds/mech_walk_1.ogg differ diff --git a/audio/sounds/mech_walk_1.ogg.import b/audio/sounds/mech_walk_1.ogg.import new file mode 100644 index 0000000..3f20404 --- /dev/null +++ b/audio/sounds/mech_walk_1.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_walk_1.ogg-6dd72afbb891524efea9f536bdc85d49.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_walk_1.ogg" +dest_files=[ "res://.import/mech_walk_1.ogg-6dd72afbb891524efea9f536bdc85d49.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mech_walk_2.ogg b/audio/sounds/mech_walk_2.ogg new file mode 100644 index 0000000..0829543 Binary files /dev/null and b/audio/sounds/mech_walk_2.ogg differ diff --git a/audio/sounds/mech_walk_2.ogg.import b/audio/sounds/mech_walk_2.ogg.import new file mode 100644 index 0000000..15d2bb3 --- /dev/null +++ b/audio/sounds/mech_walk_2.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mech_walk_2.ogg-227b24128e178813bb6e6b045d76ba8a.oggstr" + +[deps] + +source_file="res://audio/sounds/mech_walk_2.ogg" +dest_files=[ "res://.import/mech_walk_2.ogg-227b24128e178813bb6e6b045d76ba8a.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/mkey.ogg b/audio/sounds/mkey.ogg new file mode 100644 index 0000000..caf32e3 Binary files /dev/null and b/audio/sounds/mkey.ogg differ diff --git a/audio/sounds/mkey.ogg.import b/audio/sounds/mkey.ogg.import new file mode 100644 index 0000000..d42e7bc --- /dev/null +++ b/audio/sounds/mkey.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/mkey.ogg-7944854b21b3d16eba279472b4dd6c34.oggstr" + +[deps] + +source_file="res://audio/sounds/mkey.ogg" +dest_files=[ "res://.import/mkey.ogg-7944854b21b3d16eba279472b4dd6c34.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_come_here.ogg b/audio/sounds/msx_come_here.ogg new file mode 100644 index 0000000..cc67b80 Binary files /dev/null and b/audio/sounds/msx_come_here.ogg differ diff --git a/audio/sounds/msx_come_here.ogg.import b/audio/sounds/msx_come_here.ogg.import new file mode 100644 index 0000000..629729e --- /dev/null +++ b/audio/sounds/msx_come_here.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_come_here.ogg-10fac8d8cfd4cbcf7be954fa7cb4bb10.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_come_here.ogg" +dest_files=[ "res://.import/msx_come_here.ogg-10fac8d8cfd4cbcf7be954fa7cb4bb10.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_die.ogg b/audio/sounds/msx_die.ogg new file mode 100644 index 0000000..daef6e4 Binary files /dev/null and b/audio/sounds/msx_die.ogg differ diff --git a/audio/sounds/msx_die.ogg.import b/audio/sounds/msx_die.ogg.import new file mode 100644 index 0000000..2997c2e --- /dev/null +++ b/audio/sounds/msx_die.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_die.ogg-a9422a670490dccce30fe923839a3e49.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_die.ogg" +dest_files=[ "res://.import/msx_die.ogg-a9422a670490dccce30fe923839a3e49.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_fuck.ogg b/audio/sounds/msx_fuck.ogg new file mode 100644 index 0000000..181ef9b Binary files /dev/null and b/audio/sounds/msx_fuck.ogg differ diff --git a/audio/sounds/msx_fuck.ogg.import b/audio/sounds/msx_fuck.ogg.import new file mode 100644 index 0000000..0fd793c --- /dev/null +++ b/audio/sounds/msx_fuck.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_fuck.ogg-b937a7a23918372fa013f112150257cc.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_fuck.ogg" +dest_files=[ "res://.import/msx_fuck.ogg-b937a7a23918372fa013f112150257cc.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_fucking_cop.ogg b/audio/sounds/msx_fucking_cop.ogg new file mode 100644 index 0000000..b4b2e75 Binary files /dev/null and b/audio/sounds/msx_fucking_cop.ogg differ diff --git a/audio/sounds/msx_fucking_cop.ogg.import b/audio/sounds/msx_fucking_cop.ogg.import new file mode 100644 index 0000000..3d67423 --- /dev/null +++ b/audio/sounds/msx_fucking_cop.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_fucking_cop.ogg-c49ee106151ffaa154ca9906a47e988e.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_fucking_cop.ogg" +dest_files=[ "res://.import/msx_fucking_cop.ogg-c49ee106151ffaa154ca9906a47e988e.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_goddammit.ogg b/audio/sounds/msx_goddammit.ogg new file mode 100644 index 0000000..455538d Binary files /dev/null and b/audio/sounds/msx_goddammit.ogg differ diff --git a/audio/sounds/msx_goddammit.ogg.import b/audio/sounds/msx_goddammit.ogg.import new file mode 100644 index 0000000..cd09e60 --- /dev/null +++ b/audio/sounds/msx_goddammit.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_goddammit.ogg-c739df3b80e1e6f3d11b4b46346a1e24.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_goddammit.ogg" +dest_files=[ "res://.import/msx_goddammit.ogg-c739df3b80e1e6f3d11b4b46346a1e24.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_help_me_get_outta_here.ogg b/audio/sounds/msx_help_me_get_outta_here.ogg new file mode 100644 index 0000000..0b57cb1 Binary files /dev/null and b/audio/sounds/msx_help_me_get_outta_here.ogg differ diff --git a/audio/sounds/msx_help_me_get_outta_here.ogg.import b/audio/sounds/msx_help_me_get_outta_here.ogg.import new file mode 100644 index 0000000..0a3829a --- /dev/null +++ b/audio/sounds/msx_help_me_get_outta_here.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_help_me_get_outta_here.ogg-270d862b9b5346afeb970c07d6c8a47b.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_help_me_get_outta_here.ogg" +dest_files=[ "res://.import/msx_help_me_get_outta_here.ogg-270d862b9b5346afeb970c07d6c8a47b.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_here_take_this.wav b/audio/sounds/msx_here_take_this.wav new file mode 100644 index 0000000..8129d20 Binary files /dev/null and b/audio/sounds/msx_here_take_this.wav differ diff --git a/audio/sounds/boss_hurt.wav.import b/audio/sounds/msx_here_take_this.wav.import similarity index 52% rename from audio/sounds/boss_hurt.wav.import rename to audio/sounds/msx_here_take_this.wav.import index c9742eb..89ac8a8 100644 --- a/audio/sounds/boss_hurt.wav.import +++ b/audio/sounds/msx_here_take_this.wav.import @@ -2,12 +2,12 @@ importer="wav" type="AudioStreamSample" -path="res://.import/boss_hurt.wav-cf46fafb5d349a0fb70c8579bf3872a7.sample" +path="res://.import/msx_here_take_this.wav-44c3d77c989b2c235758f53cf50ab9d1.sample" [deps] -source_file="res://audio/sounds/boss_hurt.wav" -dest_files=[ "res://.import/boss_hurt.wav-cf46fafb5d349a0fb70c8579bf3872a7.sample" ] +source_file="res://audio/sounds/msx_here_take_this.wav" +dest_files=[ "res://.import/msx_here_take_this.wav-44c3d77c989b2c235758f53cf50ab9d1.sample" ] [params] diff --git a/audio/sounds/msx_motherfucker.ogg b/audio/sounds/msx_motherfucker.ogg new file mode 100644 index 0000000..9282a83 Binary files /dev/null and b/audio/sounds/msx_motherfucker.ogg differ diff --git a/audio/sounds/msx_motherfucker.ogg.import b/audio/sounds/msx_motherfucker.ogg.import new file mode 100644 index 0000000..6b08d5d --- /dev/null +++ b/audio/sounds/msx_motherfucker.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_motherfucker.ogg-5f106872c86ed2489eea974b997c9324.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_motherfucker.ogg" +dest_files=[ "res://.import/msx_motherfucker.ogg-5f106872c86ed2489eea974b997c9324.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/msx_shit.ogg b/audio/sounds/msx_shit.ogg new file mode 100644 index 0000000..858e52f Binary files /dev/null and b/audio/sounds/msx_shit.ogg differ diff --git a/audio/sounds/msx_shit.ogg.import b/audio/sounds/msx_shit.ogg.import new file mode 100644 index 0000000..b8f02c3 --- /dev/null +++ b/audio/sounds/msx_shit.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/msx_shit.ogg-3239485c047eb643ccb45ddde6c48e74.oggstr" + +[deps] + +source_file="res://audio/sounds/msx_shit.ogg" +dest_files=[ "res://.import/msx_shit.ogg-3239485c047eb643ccb45ddde6c48e74.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/new_glass_break.ogg b/audio/sounds/new_glass_break.ogg new file mode 100644 index 0000000..67d43e5 Binary files /dev/null and b/audio/sounds/new_glass_break.ogg differ diff --git a/audio/sounds/new_glass_break.ogg.import b/audio/sounds/new_glass_break.ogg.import new file mode 100644 index 0000000..174c833 --- /dev/null +++ b/audio/sounds/new_glass_break.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/new_glass_break.ogg-fbd6d1bed95228de08fb65aac302483f.oggstr" + +[deps] + +source_file="res://audio/sounds/new_glass_break.ogg" +dest_files=[ "res://.import/new_glass_break.ogg-fbd6d1bed95228de08fb65aac302483f.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/oi_sg.ogg b/audio/sounds/oi_sg.ogg new file mode 100644 index 0000000..76265fb Binary files /dev/null and b/audio/sounds/oi_sg.ogg differ diff --git a/audio/sounds/oi_sg.ogg.import b/audio/sounds/oi_sg.ogg.import new file mode 100644 index 0000000..0d0afe5 --- /dev/null +++ b/audio/sounds/oi_sg.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/oi_sg.ogg-ab72b502c36749cb6d98be5482c583fc.oggstr" + +[deps] + +source_file="res://audio/sounds/oi_sg.ogg" +dest_files=[ "res://.import/oi_sg.ogg-ab72b502c36749cb6d98be5482c583fc.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/ominous.ogg b/audio/sounds/ominous.ogg new file mode 100644 index 0000000..bdad3d2 Binary files /dev/null and b/audio/sounds/ominous.ogg differ diff --git a/audio/sounds/ominous.ogg.import b/audio/sounds/ominous.ogg.import new file mode 100644 index 0000000..98dea53 --- /dev/null +++ b/audio/sounds/ominous.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/ominous.ogg-2cb3fd446cacd9e83817a015cfcd0bdc.oggstr" + +[deps] + +source_file="res://audio/sounds/ominous.ogg" +dest_files=[ "res://.import/ominous.ogg-2cb3fd446cacd9e83817a015cfcd0bdc.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/peaks/good_job_ivy.ogg.reapeaks b/audio/sounds/peaks/good_job_ivy.ogg.reapeaks new file mode 100644 index 0000000..ea58dda Binary files /dev/null and b/audio/sounds/peaks/good_job_ivy.ogg.reapeaks differ diff --git a/audio/sounds/rainbow_laser.ogg b/audio/sounds/rainbow_laser.ogg new file mode 100644 index 0000000..65d037f Binary files /dev/null and b/audio/sounds/rainbow_laser.ogg differ diff --git a/audio/sounds/rainbow_laser.ogg.import b/audio/sounds/rainbow_laser.ogg.import new file mode 100644 index 0000000..6f94e6d --- /dev/null +++ b/audio/sounds/rainbow_laser.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/rainbow_laser.ogg-7d2683f3b74c09ae5cb1bcff7c94d244.oggstr" + +[deps] + +source_file="res://audio/sounds/rainbow_laser.ogg" +dest_files=[ "res://.import/rainbow_laser.ogg-7d2683f3b74c09ae5cb1bcff7c94d244.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/resolve.ogg b/audio/sounds/resolve.ogg new file mode 100644 index 0000000..3901ddc Binary files /dev/null and b/audio/sounds/resolve.ogg differ diff --git a/audio/sounds/resolve.ogg.import b/audio/sounds/resolve.ogg.import new file mode 100644 index 0000000..8948903 --- /dev/null +++ b/audio/sounds/resolve.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/resolve.ogg-36be71144d2911079a46c9c668920ec6.oggstr" + +[deps] + +source_file="res://audio/sounds/resolve.ogg" +dest_files=[ "res://.import/resolve.ogg-36be71144d2911079a46c9c668920ec6.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/revo83haze.ogg.import b/audio/sounds/revo83haze.ogg.import new file mode 100644 index 0000000..9548233 --- /dev/null +++ b/audio/sounds/revo83haze.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/revo83haze.ogg-1cf485529c66b9ff34f0e10dd1ce5d91.oggstr" + +[deps] + +source_file="res://audio/sounds/revo83haze.ogg" +dest_files=[ "res://.import/revo83haze.ogg-1cf485529c66b9ff34f0e10dd1ce5d91.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/revo83penny.ogg.import b/audio/sounds/revo83penny.ogg.import new file mode 100644 index 0000000..85bb9a3 --- /dev/null +++ b/audio/sounds/revo83penny.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/revo83penny.ogg-7bf73d02017da5795744a50fb3733d1e.oggstr" + +[deps] + +source_file="res://audio/sounds/revo83penny.ogg" +dest_files=[ "res://.import/revo83penny.ogg-7bf73d02017da5795744a50fb3733d1e.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/revolution2083.ogg b/audio/sounds/revolution2083.ogg new file mode 100644 index 0000000..2f8dfd9 Binary files /dev/null and b/audio/sounds/revolution2083.ogg differ diff --git a/audio/sounds/revolution2083.ogg.import b/audio/sounds/revolution2083.ogg.import new file mode 100644 index 0000000..5989783 --- /dev/null +++ b/audio/sounds/revolution2083.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/revolution2083.ogg-d47e8251a75748ee057f8c0968c8ab80.oggstr" + +[deps] + +source_file="res://audio/sounds/revolution2083.ogg" +dest_files=[ "res://.import/revolution2083.ogg-d47e8251a75748ee057f8c0968c8ab80.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/revolution2083_dog.ogg b/audio/sounds/revolution2083_dog.ogg new file mode 100644 index 0000000..4c662df Binary files /dev/null and b/audio/sounds/revolution2083_dog.ogg differ diff --git a/audio/sounds/revolution2083_dog.ogg.import b/audio/sounds/revolution2083_dog.ogg.import new file mode 100644 index 0000000..1dcf6b1 --- /dev/null +++ b/audio/sounds/revolution2083_dog.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/revolution2083_dog.ogg-4110fb770d11e4388608404992b040bf.oggstr" + +[deps] + +source_file="res://audio/sounds/revolution2083_dog.ogg" +dest_files=[ "res://.import/revolution2083_dog.ogg-4110fb770d11e4388608404992b040bf.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/revolution2083_haze.ogg b/audio/sounds/revolution2083_haze.ogg new file mode 100644 index 0000000..1f7b881 Binary files /dev/null and b/audio/sounds/revolution2083_haze.ogg differ diff --git a/audio/sounds/revolution2083_haze.ogg.import b/audio/sounds/revolution2083_haze.ogg.import new file mode 100644 index 0000000..5b3f33a --- /dev/null +++ b/audio/sounds/revolution2083_haze.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/revolution2083_haze.ogg-247473aee090b187f949b1e5c093f822.oggstr" + +[deps] + +source_file="res://audio/sounds/revolution2083_haze.ogg" +dest_files=[ "res://.import/revolution2083_haze.ogg-247473aee090b187f949b1e5c093f822.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/revolution2083_ivy.ogg b/audio/sounds/revolution2083_ivy.ogg new file mode 100644 index 0000000..b6c691a Binary files /dev/null and b/audio/sounds/revolution2083_ivy.ogg differ diff --git a/audio/sounds/revolution2083_ivy.ogg.import b/audio/sounds/revolution2083_ivy.ogg.import new file mode 100644 index 0000000..f564dd0 --- /dev/null +++ b/audio/sounds/revolution2083_ivy.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/revolution2083_ivy.ogg-2a69fc8e172b84075408eaaea361e6d0.oggstr" + +[deps] + +source_file="res://audio/sounds/revolution2083_ivy.ogg" +dest_files=[ "res://.import/revolution2083_ivy.ogg-2a69fc8e172b84075408eaaea361e6d0.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/revolution2083_penny.ogg b/audio/sounds/revolution2083_penny.ogg new file mode 100644 index 0000000..5a9f9d4 Binary files /dev/null and b/audio/sounds/revolution2083_penny.ogg differ diff --git a/audio/sounds/revolution2083_penny.ogg.import b/audio/sounds/revolution2083_penny.ogg.import new file mode 100644 index 0000000..5b34435 --- /dev/null +++ b/audio/sounds/revolution2083_penny.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/revolution2083_penny.ogg-8b34787bef0f21de0eca352023586915.oggstr" + +[deps] + +source_file="res://audio/sounds/revolution2083_penny.ogg" +dest_files=[ "res://.import/revolution2083_penny.ogg-8b34787bef0f21de0eca352023586915.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/scrump_die.ogg b/audio/sounds/scrump_die.ogg new file mode 100644 index 0000000..524d5c9 Binary files /dev/null and b/audio/sounds/scrump_die.ogg differ diff --git a/audio/sounds/scrump_die.ogg.import b/audio/sounds/scrump_die.ogg.import new file mode 100644 index 0000000..ab882d0 --- /dev/null +++ b/audio/sounds/scrump_die.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/scrump_die.ogg-425a95c5992a12c9f1281ba34b4cd7ab.oggstr" + +[deps] + +source_file="res://audio/sounds/scrump_die.ogg" +dest_files=[ "res://.import/scrump_die.ogg-425a95c5992a12c9f1281ba34b4cd7ab.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/scrump_die.wav b/audio/sounds/scrump_die.wav deleted file mode 100644 index 873abce..0000000 Binary files a/audio/sounds/scrump_die.wav and /dev/null differ diff --git a/audio/sounds/scrump_die.wav.import b/audio/sounds/scrump_die.wav.import deleted file mode 100644 index 68ba5bb..0000000 --- a/audio/sounds/scrump_die.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/scrump_die.wav-93f5cb13b5531416f8704d98fcf005e0.sample" - -[deps] - -source_file="res://audio/sounds/scrump_die.wav" -dest_files=[ "res://.import/scrump_die.wav-93f5cb13b5531416f8704d98fcf005e0.sample" ] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/audio/sounds/scrump_hurt.ogg b/audio/sounds/scrump_hurt.ogg new file mode 100644 index 0000000..255d171 Binary files /dev/null and b/audio/sounds/scrump_hurt.ogg differ diff --git a/audio/sounds/scrump_hurt.ogg.import b/audio/sounds/scrump_hurt.ogg.import new file mode 100644 index 0000000..8bdc818 --- /dev/null +++ b/audio/sounds/scrump_hurt.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/scrump_hurt.ogg-d92e1294569fcd24edb105aac58b82ae.oggstr" + +[deps] + +source_file="res://audio/sounds/scrump_hurt.ogg" +dest_files=[ "res://.import/scrump_hurt.ogg-d92e1294569fcd24edb105aac58b82ae.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/scrump_shot.ogg b/audio/sounds/scrump_shot.ogg new file mode 100644 index 0000000..824d346 Binary files /dev/null and b/audio/sounds/scrump_shot.ogg differ diff --git a/audio/sounds/scrump_shot.ogg.import b/audio/sounds/scrump_shot.ogg.import new file mode 100644 index 0000000..7135eb3 --- /dev/null +++ b/audio/sounds/scrump_shot.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/scrump_shot.ogg-2121233fd7311b12322d43621754312b.oggstr" + +[deps] + +source_file="res://audio/sounds/scrump_shot.ogg" +dest_files=[ "res://.import/scrump_shot.ogg-2121233fd7311b12322d43621754312b.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/scrump_shot0.ogg.import b/audio/sounds/scrump_shot0.ogg.import new file mode 100644 index 0000000..fe71fde --- /dev/null +++ b/audio/sounds/scrump_shot0.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/scrump_shot0.ogg-32f9f0aede5e72eee38db4d875309816.oggstr" + +[deps] + +source_file="res://audio/sounds/scrump_shot0.ogg" +dest_files=[ "res://.import/scrump_shot0.ogg-32f9f0aede5e72eee38db4d875309816.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/se_g2.ogg b/audio/sounds/se_g2.ogg new file mode 100644 index 0000000..111a1c0 Binary files /dev/null and b/audio/sounds/se_g2.ogg differ diff --git a/audio/sounds/se_g2.ogg.import b/audio/sounds/se_g2.ogg.import new file mode 100644 index 0000000..6c32623 --- /dev/null +++ b/audio/sounds/se_g2.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/se_g2.ogg-647fc6e2344b491f0492d582ece43c0c.oggstr" + +[deps] + +source_file="res://audio/sounds/se_g2.ogg" +dest_files=[ "res://.import/se_g2.ogg-647fc6e2344b491f0492d582ece43c0c.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/se_g2.wav b/audio/sounds/se_g2.wav new file mode 100644 index 0000000..55ad44b Binary files /dev/null and b/audio/sounds/se_g2.wav differ diff --git a/audio/sounds/gover.wav.import b/audio/sounds/se_g2.wav.import similarity index 58% rename from audio/sounds/gover.wav.import rename to audio/sounds/se_g2.wav.import index c6270d2..16491e1 100644 --- a/audio/sounds/gover.wav.import +++ b/audio/sounds/se_g2.wav.import @@ -2,12 +2,12 @@ importer="wav" type="AudioStreamSample" -path="res://.import/gover.wav-fb994db7cb276d7598aad5c659b45fb3.sample" +path="res://.import/se_g2.wav-2200ac432f464093b1975ff4500900fb.sample" [deps] -source_file="res://audio/sounds/gover.wav" -dest_files=[ "res://.import/gover.wav-fb994db7cb276d7598aad5c659b45fb3.sample" ] +source_file="res://audio/sounds/se_g2.wav" +dest_files=[ "res://.import/se_g2.wav-2200ac432f464093b1975ff4500900fb.sample" ] [params] diff --git a/audio/sounds/select.ogg b/audio/sounds/select.ogg new file mode 100644 index 0000000..22b98b7 Binary files /dev/null and b/audio/sounds/select.ogg differ diff --git a/audio/sounds/select.ogg.import b/audio/sounds/select.ogg.import new file mode 100644 index 0000000..4996483 --- /dev/null +++ b/audio/sounds/select.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/select.ogg-55c0c25b1ed1eb06fe4396684087acc9.oggstr" + +[deps] + +source_file="res://audio/sounds/select.ogg" +dest_files=[ "res://.import/select.ogg-55c0c25b1ed1eb06fe4396684087acc9.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/shard.ogg b/audio/sounds/shard.ogg new file mode 100644 index 0000000..6ce41c5 Binary files /dev/null and b/audio/sounds/shard.ogg differ diff --git a/audio/sounds/shard.ogg.import b/audio/sounds/shard.ogg.import new file mode 100644 index 0000000..d5173d4 --- /dev/null +++ b/audio/sounds/shard.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/shard.ogg-4d6798bd7bde9aa4a9982bb512a37701.oggstr" + +[deps] + +source_file="res://audio/sounds/shard.ogg" +dest_files=[ "res://.import/shard.ogg-4d6798bd7bde9aa4a9982bb512a37701.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/shard.wav b/audio/sounds/shard.wav deleted file mode 100644 index 75d2cfa..0000000 Binary files a/audio/sounds/shard.wav and /dev/null differ diff --git a/audio/sounds/shard.wav.import b/audio/sounds/shard.wav.import deleted file mode 100644 index 61b3dd6..0000000 --- a/audio/sounds/shard.wav.import +++ /dev/null @@ -1,23 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamSample" -path="res://.import/shard.wav-cf382615000aa13776497b1971c06315.sample" - -[deps] - -source_file="res://audio/sounds/shard.wav" -dest_files=[ "res://.import/shard.wav-cf382615000aa13776497b1971c06315.sample" ] - -[params] - -force/8_bit=false -force/mono=false -force/max_rate=false -force/max_rate_hz=44100 -edit/trim=false -edit/normalize=false -edit/loop_mode=0 -edit/loop_begin=0 -edit/loop_end=-1 -compress/mode=0 diff --git a/audio/sounds/shard_expel.ogg b/audio/sounds/shard_expel.ogg new file mode 100644 index 0000000..976d37a Binary files /dev/null and b/audio/sounds/shard_expel.ogg differ diff --git a/audio/sounds/shard_expel.ogg.import b/audio/sounds/shard_expel.ogg.import new file mode 100644 index 0000000..37983b5 --- /dev/null +++ b/audio/sounds/shard_expel.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/shard_expel.ogg-ed7f06e69f820e9cc0d8ac8352dd7410.oggstr" + +[deps] + +source_file="res://audio/sounds/shard_expel.ogg" +dest_files=[ "res://.import/shard_expel.ogg-ed7f06e69f820e9cc0d8ac8352dd7410.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/shard_float.ogg b/audio/sounds/shard_float.ogg new file mode 100644 index 0000000..c07daa5 Binary files /dev/null and b/audio/sounds/shard_float.ogg differ diff --git a/audio/sounds/shard_float.ogg.import b/audio/sounds/shard_float.ogg.import new file mode 100644 index 0000000..dbbab8f --- /dev/null +++ b/audio/sounds/shard_float.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/shard_float.ogg-7af3a7d7ee37bae26e0091ca3a291b05.oggstr" + +[deps] + +source_file="res://audio/sounds/shard_float.ogg" +dest_files=[ "res://.import/shard_float.ogg-7af3a7d7ee37bae26e0091ca3a291b05.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/shard_get.ogg b/audio/sounds/shard_get.ogg new file mode 100644 index 0000000..3e6bb47 Binary files /dev/null and b/audio/sounds/shard_get.ogg differ diff --git a/audio/sounds/shard_get.ogg.import b/audio/sounds/shard_get.ogg.import new file mode 100644 index 0000000..d5eaabd --- /dev/null +++ b/audio/sounds/shard_get.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/shard_get.ogg-a18bec7b7dd395a2d36d41bfd5cbbacd.oggstr" + +[deps] + +source_file="res://audio/sounds/shard_get.ogg" +dest_files=[ "res://.import/shard_get.ogg-a18bec7b7dd395a2d36d41bfd5cbbacd.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/shard_results.ogg b/audio/sounds/shard_results.ogg new file mode 100644 index 0000000..5719577 Binary files /dev/null and b/audio/sounds/shard_results.ogg differ diff --git a/audio/sounds/shard_results.ogg.import b/audio/sounds/shard_results.ogg.import new file mode 100644 index 0000000..8d964a6 --- /dev/null +++ b/audio/sounds/shard_results.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/shard_results.ogg-e4052319e009d469e906bde9026be412.oggstr" + +[deps] + +source_file="res://audio/sounds/shard_results.ogg" +dest_files=[ "res://.import/shard_results.ogg-e4052319e009d469e906bde9026be412.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/shell.ogg b/audio/sounds/shell.ogg new file mode 100644 index 0000000..a1aa6ae Binary files /dev/null and b/audio/sounds/shell.ogg differ diff --git a/audio/sounds/shell.ogg.import b/audio/sounds/shell.ogg.import new file mode 100644 index 0000000..90fbd66 --- /dev/null +++ b/audio/sounds/shell.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/shell.ogg-33573c264b05fde91faa4b27d4763823.oggstr" + +[deps] + +source_file="res://audio/sounds/shell.ogg" +dest_files=[ "res://.import/shell.ogg-33573c264b05fde91faa4b27d4763823.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/shoot_arrow.ogg b/audio/sounds/shoot_arrow.ogg new file mode 100644 index 0000000..8de0d72 Binary files /dev/null and b/audio/sounds/shoot_arrow.ogg differ diff --git a/audio/sounds/shoot_arrow.ogg.import b/audio/sounds/shoot_arrow.ogg.import new file mode 100644 index 0000000..04c825f --- /dev/null +++ b/audio/sounds/shoot_arrow.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/shoot_arrow.ogg-ba808bde18beb6a17914b29392aff543.oggstr" + +[deps] + +source_file="res://audio/sounds/shoot_arrow.ogg" +dest_files=[ "res://.import/shoot_arrow.ogg-ba808bde18beb6a17914b29392aff543.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/spaghetti.ogg b/audio/sounds/spaghetti.ogg new file mode 100644 index 0000000..8ff6906 Binary files /dev/null and b/audio/sounds/spaghetti.ogg differ diff --git a/audio/sounds/spaghetti.ogg.import b/audio/sounds/spaghetti.ogg.import new file mode 100644 index 0000000..cc6e0f6 --- /dev/null +++ b/audio/sounds/spaghetti.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/spaghetti.ogg-0dfe2ae68627ff9bd860326d9e7db1b5.oggstr" + +[deps] + +source_file="res://audio/sounds/spaghetti.ogg" +dest_files=[ "res://.import/spaghetti.ogg-0dfe2ae68627ff9bd860326d9e7db1b5.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/spark.ogg b/audio/sounds/spark.ogg new file mode 100644 index 0000000..633da5b Binary files /dev/null and b/audio/sounds/spark.ogg differ diff --git a/audio/sounds/spark.ogg.import b/audio/sounds/spark.ogg.import new file mode 100644 index 0000000..00eb7b5 --- /dev/null +++ b/audio/sounds/spark.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/spark.ogg-b7b98b79b91c05a5d1dee21f4057c115.oggstr" + +[deps] + +source_file="res://audio/sounds/spark.ogg" +dest_files=[ "res://.import/spark.ogg-b7b98b79b91c05a5d1dee21f4057c115.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/splash.ogg b/audio/sounds/splash.ogg new file mode 100644 index 0000000..cb21ee0 Binary files /dev/null and b/audio/sounds/splash.ogg differ diff --git a/audio/sounds/splash.ogg.import b/audio/sounds/splash.ogg.import new file mode 100644 index 0000000..0882f3e --- /dev/null +++ b/audio/sounds/splash.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/splash.ogg-610acd136c9f7a4784c72cb5bafa1983.oggstr" + +[deps] + +source_file="res://audio/sounds/splash.ogg" +dest_files=[ "res://.import/splash.ogg-610acd136c9f7a4784c72cb5bafa1983.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/stab.wav b/audio/sounds/stab.wav new file mode 100644 index 0000000..665e7e2 Binary files /dev/null and b/audio/sounds/stab.wav differ diff --git a/audio/sounds/die.wav.import b/audio/sounds/stab.wav.import similarity index 56% rename from audio/sounds/die.wav.import rename to audio/sounds/stab.wav.import index 83c6a8f..c019167 100644 --- a/audio/sounds/die.wav.import +++ b/audio/sounds/stab.wav.import @@ -2,12 +2,12 @@ importer="wav" type="AudioStreamSample" -path="res://.import/die.wav-bed4faf3cb9c725fe22ee38040ba1e8d.sample" +path="res://.import/stab.wav-c201d15cc0a56178959694372eb53d41.sample" [deps] -source_file="res://audio/sounds/die.wav" -dest_files=[ "res://.import/die.wav-bed4faf3cb9c725fe22ee38040ba1e8d.sample" ] +source_file="res://audio/sounds/stab.wav" +dest_files=[ "res://.import/stab.wav-c201d15cc0a56178959694372eb53d41.sample" ] [params] diff --git a/audio/sounds/star.ogg b/audio/sounds/star.ogg index c9c9918..f1a2582 100644 Binary files a/audio/sounds/star.ogg and b/audio/sounds/star.ogg differ diff --git a/audio/sounds/star.wav b/audio/sounds/star.wav deleted file mode 100644 index 313694c..0000000 Binary files a/audio/sounds/star.wav and /dev/null differ diff --git a/audio/sounds/sword.ogg b/audio/sounds/sword.ogg index ee8eec6..b393549 100644 Binary files a/audio/sounds/sword.ogg and b/audio/sounds/sword.ogg differ diff --git a/audio/sounds/talking.ogg b/audio/sounds/talking.ogg new file mode 100644 index 0000000..247bdc9 Binary files /dev/null and b/audio/sounds/talking.ogg differ diff --git a/audio/sounds/talking.ogg.import b/audio/sounds/talking.ogg.import new file mode 100644 index 0000000..aac63c1 --- /dev/null +++ b/audio/sounds/talking.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/talking.ogg-fc3a33c101799175c752c54065877385.oggstr" + +[deps] + +source_file="res://audio/sounds/talking.ogg" +dest_files=[ "res://.import/talking.ogg-fc3a33c101799175c752c54065877385.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/teleport.ogg b/audio/sounds/teleport.ogg new file mode 100644 index 0000000..6da5159 Binary files /dev/null and b/audio/sounds/teleport.ogg differ diff --git a/audio/sounds/teleport.ogg.import b/audio/sounds/teleport.ogg.import new file mode 100644 index 0000000..a0199d8 --- /dev/null +++ b/audio/sounds/teleport.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/teleport.ogg-50cf00eaef258b8003f9ab9ed6265018.oggstr" + +[deps] + +source_file="res://audio/sounds/teleport.ogg" +dest_files=[ "res://.import/teleport.ogg-50cf00eaef258b8003f9ab9ed6265018.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/victory.ogg b/audio/sounds/victory.ogg new file mode 100644 index 0000000..22fa7af Binary files /dev/null and b/audio/sounds/victory.ogg differ diff --git a/audio/sounds/victory.ogg.import b/audio/sounds/victory.ogg.import new file mode 100644 index 0000000..6cf7f31 --- /dev/null +++ b/audio/sounds/victory.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/victory.ogg-ae7a84262871a5770722a95b21a7cb57.oggstr" + +[deps] + +source_file="res://audio/sounds/victory.ogg" +dest_files=[ "res://.import/victory.ogg-ae7a84262871a5770722a95b21a7cb57.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/victory_dog.ogg b/audio/sounds/victory_dog.ogg new file mode 100644 index 0000000..07b2627 Binary files /dev/null and b/audio/sounds/victory_dog.ogg differ diff --git a/audio/sounds/victory_dog.ogg.import b/audio/sounds/victory_dog.ogg.import new file mode 100644 index 0000000..9ac2372 --- /dev/null +++ b/audio/sounds/victory_dog.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/victory_dog.ogg-8fc11c95546e6908c2b2cec0ace6c1df.oggstr" + +[deps] + +source_file="res://audio/sounds/victory_dog.ogg" +dest_files=[ "res://.import/victory_dog.ogg-8fc11c95546e6908c2b2cec0ace6c1df.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/victory_haze.ogg b/audio/sounds/victory_haze.ogg new file mode 100644 index 0000000..d4f074b Binary files /dev/null and b/audio/sounds/victory_haze.ogg differ diff --git a/audio/sounds/victory_haze.ogg.import b/audio/sounds/victory_haze.ogg.import new file mode 100644 index 0000000..06c0d28 --- /dev/null +++ b/audio/sounds/victory_haze.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/victory_haze.ogg-027025335f41e37625eab4e085744640.oggstr" + +[deps] + +source_file="res://audio/sounds/victory_haze.ogg" +dest_files=[ "res://.import/victory_haze.ogg-027025335f41e37625eab4e085744640.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/victory_ivy.ogg b/audio/sounds/victory_ivy.ogg new file mode 100644 index 0000000..5523fa6 Binary files /dev/null and b/audio/sounds/victory_ivy.ogg differ diff --git a/audio/sounds/victory_ivy.ogg.import b/audio/sounds/victory_ivy.ogg.import new file mode 100644 index 0000000..4ceb344 --- /dev/null +++ b/audio/sounds/victory_ivy.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/victory_ivy.ogg-90d79b449a26224d7ebee3d1a8729882.oggstr" + +[deps] + +source_file="res://audio/sounds/victory_ivy.ogg" +dest_files=[ "res://.import/victory_ivy.ogg-90d79b449a26224d7ebee3d1a8729882.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/victory_nobonus.ogg b/audio/sounds/victory_nobonus.ogg new file mode 100644 index 0000000..7a09090 Binary files /dev/null and b/audio/sounds/victory_nobonus.ogg differ diff --git a/audio/sounds/victory_nobonus.ogg.import b/audio/sounds/victory_nobonus.ogg.import new file mode 100644 index 0000000..a32c7af --- /dev/null +++ b/audio/sounds/victory_nobonus.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/victory_nobonus.ogg-13f05df78c075383aaddddec05e2dada.oggstr" + +[deps] + +source_file="res://audio/sounds/victory_nobonus.ogg" +dest_files=[ "res://.import/victory_nobonus.ogg-13f05df78c075383aaddddec05e2dada.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/victory_penny.ogg b/audio/sounds/victory_penny.ogg new file mode 100644 index 0000000..4932824 Binary files /dev/null and b/audio/sounds/victory_penny.ogg differ diff --git a/audio/sounds/victory_penny.ogg.import b/audio/sounds/victory_penny.ogg.import new file mode 100644 index 0000000..03db62b --- /dev/null +++ b/audio/sounds/victory_penny.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/victory_penny.ogg-1bf363727ea69db0c09326ac2a97f43a.oggstr" + +[deps] + +source_file="res://audio/sounds/victory_penny.ogg" +dest_files=[ "res://.import/victory_penny.ogg-1bf363727ea69db0c09326ac2a97f43a.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/vulcan.ogg b/audio/sounds/vulcan.ogg new file mode 100644 index 0000000..a037ec6 Binary files /dev/null and b/audio/sounds/vulcan.ogg differ diff --git a/audio/sounds/vulcan.ogg.import b/audio/sounds/vulcan.ogg.import new file mode 100644 index 0000000..7771e65 --- /dev/null +++ b/audio/sounds/vulcan.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/vulcan.ogg-3f1fcecf4fe0d3cd99da6f19e4e3f50a.oggstr" + +[deps] + +source_file="res://audio/sounds/vulcan.ogg" +dest_files=[ "res://.import/vulcan.ogg-3f1fcecf4fe0d3cd99da6f19e4e3f50a.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/audio/sounds/zap_wip.ogg b/audio/sounds/zap_wip.ogg new file mode 100644 index 0000000..259e173 Binary files /dev/null and b/audio/sounds/zap_wip.ogg differ diff --git a/audio/sounds/zap_wip.ogg.import b/audio/sounds/zap_wip.ogg.import new file mode 100644 index 0000000..c28ec25 --- /dev/null +++ b/audio/sounds/zap_wip.ogg.import @@ -0,0 +1,15 @@ +[remap] + +importer="ogg_vorbis" +type="AudioStreamOGGVorbis" +path="res://.import/zap_wip.ogg-51e4569934565cf93f128910a5e31bee.oggstr" + +[deps] + +source_file="res://audio/sounds/zap_wip.ogg" +dest_files=[ "res://.import/zap_wip.ogg-51e4569934565cf93f128910a5e31bee.oggstr" ] + +[params] + +loop=false +loop_offset=0 diff --git a/autoloads/audio.gd b/autoloads/audio.gd index 0baca76..f7314a9 100644 --- a/autoloads/audio.gd +++ b/autoloads/audio.gd @@ -9,29 +9,86 @@ onready var ac_music = $Music onready var ac_cheat = $CodeEntrySound onready var ac_boss = $BossSound onready var ac_shard = $ShardSound +onready var ac_pause_music = $PauseMusic +onready var ac_menu = $MenuSound +onready var ac_land = $LandSound +onready var ac_voice = $Voice +onready var ac_small_explosion = $SmallExplosion +onready var ac_mech_hurt = $MechHurt +onready var ac_mech_shoot = $MechShoot #Sounds -const a_gold = preload("res://audio/sounds/key.ogg") -const a_arrow = preload("res://audio/sounds/a_egg_collect.ogg") +const a_key = preload("res://audio/sounds/key.ogg") +const a_arrow = preload("res://audio/sounds/arrow_collect.ogg") const a_jump = preload("res://audio/sounds/jump.ogg") const a_star = preload("res://audio/sounds/star.ogg") -const a_shard = preload("res://audio/sounds/shard.wav") +const a_shard = preload("res://audio/sounds/shard_get.ogg") const a_climb_up = preload("res://audio/sounds/a_climb.ogg") const a_climb_down = preload("res://audio/sounds/a_bmilc.ogg") const a_sword = preload("res://audio/sounds/sword.ogg") -const a_doublejump = preload("res://audio/sounds/a_bree.wav") -const a_shoot = preload("res://audio/sounds/a_egg_shoot.ogg") -const a_die = preload("res://audio/sounds/die.wav") -const a_die_skeleton = preload("res://audio/sounds/die_skeleton.wav") -const a_scrump_die = preload("res://audio/sounds/scrump_die.wav") -const a_die_robot = preload("res://audio/sounds/die_robot.wav") -const a_gover = preload("res://audio/sounds/gover.wav") -const a_boss_hurt = preload("res://audio/sounds/boss_hurt.wav") +const a_doublejump = preload("res://audio/sounds/double_jump.ogg") +const a_shoot = preload("res://audio/sounds/shoot_arrow.ogg") +const a_die = preload("res://audio/sounds/die.ogg") +const a_die_splash = preload("res://audio/sounds/splash.ogg") +const a_die_zap = preload("res://audio/sounds/spark.ogg") +const a_die_skeleton = preload("res://audio/sounds/die_skeleton.ogg") +const a_scrump_die = preload("res://audio/sounds/scrump_die.ogg") +const a_explosion = preload("res://audio/sounds/explosion.ogg") +const a_game_over = preload("res://audio/sounds/gover.ogg") +const a_scrump_hurt = preload("res://audio/sounds/scrump_hurt.ogg") +const a_bubble = preload("res://audio/sounds/bubble.ogg") +const a_select = preload("res://audio/sounds/select.ogg") +const a_confirm = preload("res://audio/sounds/confirm.ogg") +const a_bullet_barrage = preload("res://audio/sounds/bullet_barrage.ogg") +const a_rainbow_laser = preload("res://audio/sounds/rainbow_laser.ogg") +const a_spaghetti = preload("res://audio/sounds/spaghetti.ogg") +const a_good_job_penny = preload("res://audio/sounds/good_job_penny.ogg") +const a_good_job_haze = preload("res://audio/sounds/good_job_haze.ogg") +const a_good_job_ivy = preload("res://audio/sounds/good_job_ivy.ogg") +const a_good_job_dog = preload("res://audio/sounds/good_job_dog.ogg") +const a_great_job_penny = preload("res://audio/sounds/great_job_penny.ogg") +const a_great_job_haze = preload("res://audio/sounds/great_job_haze.ogg") +const a_great_job_ivy = preload("res://audio/sounds/great_job_ivy.ogg") +const a_great_job_dog = preload("res://audio/sounds/great_job_dog.ogg") +const a_2600_charge = preload("res://audio/sounds/2600_charge.ogg") +const a_victory = preload("res://audio/sounds/victory_nobonus.ogg") +const a_time_bonus = preload("res://audio/sounds/victory_haze.ogg") +const a_shard_results = preload("res://audio/sounds/shard_results.ogg") +const a_fail_shard = preload("res://audio/sounds/fail_shard.ogg") +const a_final_score = preload("res://audio/sounds/final_score.ogg") +const a_land = preload("res://audio/sounds/land.ogg") +const a_teleport = preload("res://audio/sounds/teleport.ogg") +const a_mkey = preload("res://audio/sounds/mkey.ogg") +const a_msx_die = preload("res://audio/sounds/msx_die.ogg") +const a_famira = preload("res://audio/sounds/famira.ogg") +const a_vulcan = preload("res://audio/sounds/vulcan.ogg") +const a_grumble = preload("res://audio/sounds/fami_grumble.ogg") +const a_laser_ready = preload("res://audio/sounds/laser_ready.ogg") +const a_copsquash = preload("res://audio/sounds/copsquash.ogg") +const a_copsquash2 = preload("res://audio/sounds/cop_splat.ogg") +const a_fami_transform = preload("res://audio/sounds/fami_transform.ogg") +const a_ominous = preload("res://audio/sounds/ominous.ogg") +const a_bullet_casing = preload("res://audio/sounds/shell.ogg") +const a_gun_cock = preload("res://audio/sounds/gun_cock.ogg") +const a_famira_die = preload("res://audio/sounds/famira_die.ogg") +const a_small_explosion = preload("res://audio/sounds/explosion_small.ogg") +const a_mech_hurt_1 = preload("res://audio/sounds/mech_hurt_1.ogg") +const a_mech_hurt_2 = preload("res://audio/sounds/mech_hurt_2.ogg") +const a_mech_hurt_3 = preload("res://audio/sounds/mech_hurt_3.ogg") +const a_critical_heat = preload("res://audio/sounds/critical_heat.ogg") +const a_glass_crack = preload("res://audio/glass_crack.ogg") +const a_glass_break = preload("res://audio/glass_break.ogg") +const a_shield = preload("res://audio/sounds/stab.wav") +const a_shield_cooldown = preload("res://audio/sounds/coin.wav") +var loop_section = null +var has_looped = false +var r = 0 #Plays a sound -func play_sound(snd,player): - player.set_stream(snd) - player._set_playing(true) +func play_sound(snd: AudioStream, player: AudioStreamPlayer, pitch: float = 1.0): + player.stream = snd + player.pitch_scale = pitch + player.play() #Play music, if same track is already playing do nothing func play_music(song): @@ -43,9 +100,42 @@ func play_shard_sound(): var idx = AudioServer.get_bus_index("sound") AudioServer.set_bus_mute(idx, true) ac_music.set_stream_paused(true) - play_sound(a_shard,ac_shard) + ac_pause_music.set_stream_paused(true) + var r = 0 + if Game.deaths == 0: + if Game.shards == 4: + r = 40 + else: + r = 40 + if r <= 30: play_sound(a_good_job_penny,ac_shard) + if r > 30 && r <= 60: play_sound(a_good_job_haze,ac_shard) + if r > 60 && r <= 90: play_sound(a_good_job_ivy,ac_shard) + if r > 90: play_sound(a_good_job_dog,ac_shard) + + + else: + play_sound(a_shard,ac_shard) func _on_ShardSound_finished(): var idx = AudioServer.get_bus_index("sound") AudioServer.set_bus_mute(idx, false) - ac_music.set_stream_paused(false) + if !get_tree().paused: ac_music.set_stream_paused(false) + ac_pause_music.set_stream_paused(false) + +func great_job(): + var idx = AudioServer.get_bus_index("sound") + AudioServer.set_bus_mute(idx, true) + ac_music.set_stream_paused(true) + ac_pause_music.set_stream_paused(true) + if Game.deaths == 0: + r = 40 + else: + r = 40 + if r <= 30: play_sound(a_great_job_penny,ac_shard) + if r > 30 && r <= 60: play_sound(a_great_job_haze,ac_shard) + if r > 60 && r <= 90: play_sound(a_great_job_ivy,ac_shard) + if r > 90: play_sound(a_great_job_dog,ac_shard) + +func pause_all(paused: bool) -> void: + for player in get_children(): + player.stream_paused = paused diff --git a/autoloads/audio.tscn b/autoloads/audio.tscn index 628628c..eab6342 100644 --- a/autoloads/audio.tscn +++ b/autoloads/audio.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://autoloads/audio.gd" type="Script" id=1] -[ext_resource path="res://audio/sounds/shard.wav" type="AudioStream" id=2] +[ext_resource path="res://audio/sounds/shard.ogg" type="AudioStream" id=2] +[ext_resource path="res://audio/music/pause.ogg" type="AudioStream" id=3] [node name="Audio" type="Node"] pause_mode = 2 @@ -39,4 +40,26 @@ bus = "sound" volume_db = -12.0 bus = "sound" +[node name="PauseMusic" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 3 ) +volume_db = -12.0 +bus = "music" + +[node name="MenuSound" type="AudioStreamPlayer" parent="."] +volume_db = -15.0 + +[node name="LandSound" type="AudioStreamPlayer" parent="."] + +[node name="Voice" type="AudioStreamPlayer" parent="."] +volume_db = -5.0 + +[node name="SmallExplosion" type="AudioStreamPlayer" parent="."] +volume_db = -24.0 + +[node name="MechHurt" type="AudioStreamPlayer" parent="."] +volume_db = -10.0 + +[node name="MechShoot" type="AudioStreamPlayer" parent="."] +volume_db = -20.0 + [connection signal="finished" from="ShardSound" to="." method="_on_ShardSound_finished"] diff --git a/autoloads/border.gd b/autoloads/border.gd index ad3bd3b..c0dcabb 100644 --- a/autoloads/border.gd +++ b/autoloads/border.gd @@ -1,2 +1,22 @@ extends TextureRect + +export (Array, Texture) var borders: Array = [] +export (Array, String) var names: Array = [] + + +var current_border: int = 0 setget _set_current_border + + +func _ready() -> void: + texture = borders[current_border] + get_tree().connect("screen_resized", self, "_on_screen_resized") + _on_screen_resized() + + +func _set_current_border(value: int) -> void: + current_border = posmod(value, borders.size()) + texture = borders[current_border] + +func _on_screen_resized() -> void: + rect_size = OS.window_size diff --git a/autoloads/border.tscn b/autoloads/border.tscn index 1440557..5b8f39e 100644 --- a/autoloads/border.tscn +++ b/autoloads/border.tscn @@ -1,13 +1,25 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=14 format=2] [ext_resource path="res://autoloads/border.gd" type="Script" id=1] -[ext_resource path="res://graphics/borders/prideborder.png" type="Texture" id=2] +[ext_resource path="res://graphics/borders/mosaic.png" type="Texture" id=2] +[ext_resource path="res://graphics/borders/prideborder.png" type="Texture" id=3] +[ext_resource path="res://graphics/borders/bodhi_sg_border.png" type="Texture" id=4] +[ext_resource path="res://graphics/borders/enby_border.png" type="Texture" id=5] +[ext_resource path="res://graphics/borders/the_gays_border.png" type="Texture" id=6] +[ext_resource path="res://graphics/borders/revolution_border.png" type="Texture" id=7] +[ext_resource path="res://graphics/borders/black_bars.png" type="Texture" id=8] +[ext_resource path="res://graphics/borders/skaborder.png" type="Texture" id=9] +[ext_resource path="res://graphics/borders/infiltration.png" type="Texture" id=10] +[ext_resource path="res://graphics/borders/copper.png" type="Texture" id=11] +[ext_resource path="res://graphics/borders/endless_revolution.png" type="Texture" id=12] +[ext_resource path="res://graphics/borders/static.png" type="Texture" id=13] [node name="Border" type="TextureRect"] -show_behind_parent = true anchor_right = 1.0 anchor_bottom = 1.0 -texture = ExtResource( 2 ) +texture = ExtResource( 7 ) expand = true -stretch_mode = 1 +stretch_mode = 7 script = ExtResource( 1 ) +borders = [ ExtResource( 8 ), ExtResource( 7 ), ExtResource( 10 ), ExtResource( 4 ), ExtResource( 3 ), ExtResource( 6 ), ExtResource( 5 ), ExtResource( 9 ), ExtResource( 2 ), ExtResource( 11 ), ExtResource( 12 ), ExtResource( 13 ) ] +names = [ "None", "Change The Future", "Infiltration", "Got Shards?", "Trans Rights", "Here Come The Gays", "Fuck The Binary", "It's Ska Time", "Mosaic", "Copper", "Endless Revolution", "Static" ] diff --git a/autoloads/controls.gd b/autoloads/controls.gd new file mode 100644 index 0000000..c394522 --- /dev/null +++ b/autoloads/controls.gd @@ -0,0 +1,134 @@ +extends Node + + +const CFG_PATH := "user://controls.pr" +const ACTIONS := [ + "move_left", "move_right", + "move_up", "move_down", + "jump", "shoot", + "ui_accept", "ui_cancel", +] +const LINKED_ACTIONS := { + move_left = "ui_left", + move_right = "ui_right", + move_up = "ui_up", + move_down = "ui_down", +# jump = "ui_accept", +# shoot = "ui_cancel", +} + + +var cfg := ConfigFile.new() + + +func _init() -> void: + cfg.load(CFG_PATH) + _apply_saved_bindings() + + +func get_key(action: String) -> int: + var scancode = cfg.get_value(action, "keyboard", -1) + if scancode == -1: + scancode = _get_default_key(action) + return scancode + + +func get_button(action: String) -> int: + var button_index = cfg.get_value(action, "gamepad", -1) + if button_index == -1: + button_index = _get_default_button(action) + return button_index + + +func set_key(action: String, scancode: int) -> void: + cfg.set_value(action, "keyboard", scancode) + _configure_action_key(action) + _save_bindings() + + +func set_button(action: String, button_index: int) -> void: + cfg.set_value(action, "gamepad", button_index) + _configure_action_button(action) + _save_bindings() + + +func default_controls() -> void: + for action in ACTIONS: + set_key(action, _get_default_key(action)) + set_button(action, _get_default_button(action)) + for button in get_tree().get_nodes_in_group("controls_buttons"): + button._update_text() + + +func _save_bindings() -> void: + cfg.save(CFG_PATH) + + +func _apply_saved_bindings() -> void: + for action in ACTIONS: + _configure_action_key(action) + _configure_action_button(action) + + +func _configure_action_key(action: String) -> void: + var scancode = cfg.get_value(action, "keyboard", -1) + if scancode == -1: + scancode = _get_default_key(action) + _apply_action_key(action, scancode) + var linked_action = LINKED_ACTIONS.get(action) + if linked_action: + _apply_action_key(linked_action, scancode) + + +func _configure_action_button(action: String) -> void: + var button_index = cfg.get_value(action, "gamepad", -1) + if button_index == -1: + button_index = _get_default_button(action) + _apply_action_button(action, button_index) + var linked_action = LINKED_ACTIONS.get(action) + if linked_action: + _apply_action_button(linked_action, button_index) + + +## applies saved keyboard binding for action +func _apply_action_key(action: String, scancode: int) -> void: + # erase key and button events + for event in InputMap.get_action_list(action): + if event is InputEventKey and event.physical_scancode != 0: + InputMap.action_erase_event(action, event) + # apply keyboard binding + var key := InputEventKey.new() + key.physical_scancode = scancode + key.pressed = true + InputMap.action_add_event(action, key) + + +## applies saved gamepad binding for action +func _apply_action_button(action: String, button_index: int) -> void: + # erase button events + for event in InputMap.get_action_list(action): + if event is InputEventJoypadButton: + InputMap.action_erase_event(action, event) + # apply gamepad binding + var button := InputEventJoypadButton.new() + button.button_index = button_index + button.pressed = true + InputMap.action_add_event(action, button) + + +## get first key input from projectsettings +func _get_default_key(action: String) -> int: + var events: Array = ProjectSettings.get("input/" + action).events + for event in events: + if event is InputEventKey: + return event.physical_scancode + return -1 + + +## get first button input from projectsettings +func _get_default_button(action: String) -> int: + var events: Array = ProjectSettings.get("input/" + action).events + for event in events: + if event is InputEventJoypadButton: + return event.button_index + return -1 diff --git a/autoloads/debug.gd b/autoloads/debug.gd index fb5515a..2e9f962 100644 --- a/autoloads/debug.gd +++ b/autoloads/debug.gd @@ -12,10 +12,16 @@ var lines: int = 0 var time: float = 0.0 var n: int = 0 var debug = false +var is_cheating = false +var reset_is_cheating = false + var allow_sword = false var moon_jump = false var cfox_mode = false var infinite_arrows = false +var prey_slaughtered = false +var sus_monster = false +var fast_punishment = 0 # cheat code entry var entry_index = 0 var entry = false @@ -31,16 +37,18 @@ func _ready(): func _physics_process(delta): #DEBUG - if debug == true && !entry && !entry_index > 0: + if debug == true && !entry && !entry_index > 0 && !Options.entry: #Move player to mouse + if Input.is_action_just_pressed("debug_move_player"): + Audio.play_sound(Audio.a_mkey,Audio.ac_jump) if Input.is_action_pressed("debug_move_player"): var nodes = get_tree().get_nodes_in_group("player") if not nodes.empty(): var player = nodes[0] var mouse_position = SceneManager.viewport.get_mouse_position() / SceneManager.viewport_container.rect_scale - mouse_position.x = clamp(mouse_position.x, 8.0, Game.resolution.x - 8.0) - mouse_position.y = clamp(mouse_position.y, 8.0, Game.resolution.y - 8.0) - var world_position = mouse_position + Game.current_sector * Game.resolution + mouse_position.x = clamp(mouse_position.x, 8.0, Game.RESOLUTION.x - 8.0) + mouse_position.y = clamp(mouse_position.y, 8.0, Game.RESOLUTION.y - 8.0) + var world_position = mouse_position + Game.current_sector * Game.RESOLUTION player.position = world_position # Game.get_map().get_node("Player").position = get_viewport().get_mouse_position() @@ -50,7 +58,8 @@ func _physics_process(delta): Game.change_map(load("res://maps/test_room.tscn")) #Debug 1 if Input.is_action_just_pressed("debug_1"): - Game.change_map(load("res://maps/level_select.tscn")) + if Game.can_pause: + Game.change_map(load("res://maps/level_select.tscn")) #Debug 2 if Input.is_action_just_pressed("debug_2"): Game.freeze_frame(1.0) @@ -58,6 +67,9 @@ func _physics_process(delta): if infinite_arrows: Game.arrows = 99 func _input(event): + if Options.entry: + return + if event is InputEventKey && event.is_pressed(): var character = OS.get_scancode_string(event.scancode) if character.length() > 1: @@ -93,31 +105,141 @@ func _enter_code(): var goldsprite = gold.get_node("AnimatedSprite") goldsprite.play("30385") goldsprite.position.y -= 1 + goldsprite.light_mask = 0 #goldsprite.material.set_shader_param("palette",load("res://graphics/collectibles/pal_star_green.png")) "1989": for enemy in get_tree().get_nodes_in_group("enemy"): enemy.die() - "DGSTEEZY": + is_cheating = true + reset_is_cheating = true + "PEN": debug = true + is_cheating = true + reset_is_cheating = false "6DOUBLOONS": Console.print(get_tree().get_nodes_in_group("gold").size()) + #Doesnt work "EVILSBANE": allow_sword = true Input.action_press("sword") + is_cheating = true + reset_is_cheating = false "REDFEATHER": - moon_jump = true + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: + player.state_chart.set_guard_property("red_feather", true) + is_cheating = true + reset_is_cheating = false "NIGHTCORE": - Engine.time_scale = 10 + Engine.time_scale = 2 + Audio.ac_music.pitch_scale = 2 "UPUPANDAWAY": get_tree().call_group("mountain_easter_egg","play","liftoff") "MACOSX": - var player = get_tree().get_nodes_in_group("player")[0] - Game.instance_node(load("res://objects/environment/beach_ball/beach_ball.tscn"),player.global_position.x,player.global_position.y - 8,Game.get_map()) + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: Game.instance_node(load("res://objects/environment/beach_ball/beach_ball.tscn"),player.global_position.x,player.global_position.y - 8,Game.get_map()) + "CANYOUDUNK": + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: Game.instance_node(preload("res://objects/environment/zball/zball.tscn"),player.global_position.x,player.global_position.y - 18.0,Game.get_map()) + is_cheating = true + reset_is_cheating = true + "YUMMY": + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: + Game.instance_node( + preload("res://objects/environment/spaghetti/spaghetti.tscn"), + player.global_position.x, player.global_position.y - 12.0, + Game.get_map() + ) + "YUCKY": + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: + var strand = preload("res://objects/environment/spaghetti/spaghetti.tscn").instance() + strand.global_position = player.global_position + Vector2(0.0, -12.0) + strand.get_node("Segment/Joint").disable_collision = false + strand.get_node("Segment/Line").default_color = Color(0xf53342ff) + Game.get_map().add_child(strand) "JUSTE": - Game.get_map().get_node("Player").sprite.material.set_shader_param("border_color",Color.blue) + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: player.sprite.material.set_shader_param("border_color",Color.blue) "BEESKNEES": Game.get_map().rotation_degrees = -2 + is_cheating = true + reset_is_cheating = true + #doesnt work "CFOX": - cfox_mode = true + var player = get_tree().get_nodes_in_group("player").pop_back() + player.sprite.visible = false + player.cfox.visible = true "BANDANA": infinite_arrows = true + is_cheating = true + reset_is_cheating = false + "ESCARGOD": + var player = get_tree().get_nodes_in_group("player").pop_back() + player.state_chart.send_event("become_invulnerable") + is_cheating = true + reset_is_cheating = false + "GILLS": + var player = get_tree().get_nodes_in_group("player").pop_back() + player.underwater = false + is_cheating = true + reset_is_cheating = false + "CHORUS": + var music = AudioServer.get_bus_index("music") + AudioServer.set_bus_effect_enabled(music,0,true) + "HYDROCITY": + var player = get_tree().get_nodes_in_group("player").pop_back() + player.oxygen_timer.start(0.001) + "FLUX": + var player = get_tree().get_nodes_in_group("player").pop_back() + # set up tween + var tween = create_tween().set_loops() + # open palettes directory for listing + var dir = Directory.new() + if dir.open("res://graphics/player/palettes/") == OK: + # loop through files in directory + dir.list_dir_begin(true, true) + var file_name = dir.get_next() + while file_name != "": + # act on any pngs + if file_name.ends_with(".png"): + # load the texture + var texture = load("res://graphics/player/palettes/" + file_name) + # add step to the tween for that texture + tween.tween_property(player.sprite, "material:shader_param/palette", texture, 0.0) + tween.tween_property(player.cfox, "material:shader_param/palette", texture, 0.0) + tween.tween_interval(0.2) + file_name = dir.get_next() + dir.list_dir_end() + "SKELETON": + Game.keys = 50 + is_cheating = true + reset_is_cheating = true + "WHATSTHATSMELL": + prey_slaughtered = true + "SUS": + var scrump = get_tree().get_nodes_in_group("scrump").pop_back() + if scrump != null: scrump.sus_monster() + sus_monster = true + "FASTPUNISHMENT": + fast_punishment = 1 + "FASTERPUNISHMENT": + fast_punishment = 2 + "LBUG": + var player = get_tree().get_nodes_in_group("player").pop_back() + player.sprite.material.set_shader_param("palette", load("res://graphics/player/palettes/costume_wriggle.tex")) + player.sprite.set_texture(load("res://graphics/player/costume_wriggle.png")) + "BLOOPER": + var silhouette = load("res://objects/hud/silhouette.tscn").instance() + Game.get_map().add_child(silhouette) + "IMPATIENT": + Game.change_map(load("res://menus/credits.tscn")) + "SLOWPOKE": + Game.time = 99999 + "LASERTAG": + Game.can_use_shield = true + is_cheating = true + "INCREDIBLE": + var cat = load("res://objects/enemy/uncanny_cat.tscn").instance() + Game.get_map().add_child(cat) diff --git a/autoloads/debug.tscn b/autoloads/debug.tscn index 990e691..8ae9104 100644 --- a/autoloads/debug.tscn +++ b/autoloads/debug.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=4 format=2] [ext_resource path="res://autoloads/debug.gd" type="Script" id=1] -[ext_resource path="res://ui/2ndpuberty_scholar_no_dropshadow.fnt" type="BitmapFont" id=2] +[ext_resource path="res://ui/2ndpuberty_scholar.fnt" type="BitmapFont" id=2] [ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=3] [node name="Debug" type="CanvasLayer" groups=["viewport_autoload"]] diff --git a/autoloads/fade.gd b/autoloads/fade.gd index 4a7dc77..d49f379 100644 --- a/autoloads/fade.gd +++ b/autoloads/fade.gd @@ -2,17 +2,18 @@ extends CanvasLayer signal fade_finished -func fade_in(time, reverse = false, color = Color.black): +func fade_in(time: float = NAN, reverse: bool = false, color: Color = Color.black) -> void: var rect = $TextureRect rect.material.set_shader_param("color", color) rect.material.set_shader_param("reverse", reverse) $AnimationPlayer.play("FadeIn", -1, 1.0 / time) -func fade_out(time, reverse = false, color = Color.black): +func fade_out(time: float = NAN, reverse: bool = false, color: Color = Color.black) -> void: var rect = $TextureRect rect.material.set_shader_param("color", color) rect.material.set_shader_param("reverse", reverse) $AnimationPlayer.play("FadeOut", -1, 1.0 / time) -func _fade_finished(anim_name): + +func _fade_finished(anim_name) -> void: emit_signal("fade_finished") diff --git a/autoloads/game.gd b/autoloads/game.gd index 1f5f8f4..1f3e1c9 100644 --- a/autoloads/game.gd +++ b/autoloads/game.gd @@ -1,151 +1,365 @@ extends Node -var resolution = Vector2(256,192) -var current_sector = Vector2(0,0) -#Onreadys -#Collectibles -var keys = 0 -var stars = [false,false,false,false,false] -var shards = 0 -var arrows = 0 -var score = 0 -var high_score = 0 -var lives = 2 -var deaths = 0 -var time = 0.0 -#Objects -const block_text = preload("res://objects/hud/blocktext.tscn") -const pause_screen = preload("res://objects/hud/pause_screen.tscn") -#Game info -var respawn_point = Vector2(32,166) #Respawn point -var current_level = 0 #Current level being played -var current_file = 1 #Current save file -var shards_collected = [false,false,false,false,false,false,false,false,false,false] -var is_marathon_mode = false -var is_easy_mode = false -var easy_mode_speed_factor = 1.25 -var use_lives = false -var can_pause = true -func _ready(): - Save.load_file(current_file) - Save.load_options() - pause_mode = Node.PAUSE_MODE_PROCESS - +## difficulty levels +enum Difficulty { + SWEET, # slower enemies, infinite lives + SALTY, # normal enemies, infinite lives + SPICY, # normal enemies, 3 lives, DEFAULT + PUNGENT, # faster enemies, 3 lives +} + +# score multiplier for easy mode +const EASY_DIFFICULTY_MODIFIER: float = 0.75 + + +## resolution the game renders at +const RESOLUTION := Vector2(256,192) +const DIFFICULTY_NAMES := ["Sweet","Salty","Spicy","Pungent"] + + +#== collectibles ==# +var keys: int = 0 # collected keys +## which stars are collected +var stars_collected := [false,false,false,false,false] +var stars : int setget , _get_stars # total stars +## which stars are collected +var shards_collected := [false,false,false,false,false,false,false,false] +## how many shards collected +var shards: int setget , _get_shards # total shards +var arrows: int = 0 # current arrows +#== stats ==# +var lives: int = 2 +var deaths: int = 0 +var time: float = 0.0 +#== score ==# +var score: int = 0 +var arrows_bonus: int = 0 +var collection_bonus: int = 0 +var time_bonus: int = 0 +var life_bonus: int = 0 +var perfect_bonus: int = 0 +var final_score: int = 0 +var old_high_score: int = 0 +#== state ==# +var current_sector := Vector2.ZERO +var respawn_point := Vector2(32,166) +var current_level: int = 0 +var difficulty: int = Difficulty.SPICY setget _set_difficulty +var enemy_speed_factor: float = 1.0 # multiplier of enemy speed +var is_easy_mode: bool = false # whether to do easy-specific behaviors +var use_lives: bool = false +var can_pause: bool = true +var can_restart: bool = true +var current_palette: String = "default" +var still_playing: bool = false +var last_mm_button = null +var alternate_death = null +var can_use_shield: bool = false +#== marathon mode ==# +var marathon_mode: bool = false +var marathon_score: int = 0 +var marathon_lives: int = 0 +var marathon_shards: int = 0 +var marathon_deaths: int = 0 + + +func _get_stars() -> int: + return stars_collected.count(true) + + +func _get_shards() -> int: + return shards_collected.count(true) + + +# stuff to change when setting difficulty +func _set_difficulty(value: int) -> void: + difficulty = value + match difficulty: + Difficulty.SWEET: + is_easy_mode = true + enemy_speed_factor = 0.75 + use_lives = false + Difficulty.SALTY: + is_easy_mode = false + enemy_speed_factor = 1.0 + use_lives = false + Difficulty.SPICY: + is_easy_mode = false + enemy_speed_factor = 1.0 + use_lives = true + Difficulty.PUNGENT: + is_easy_mode = false + enemy_speed_factor = 1.25 + use_lives = true + #Instances a node func instance_node(node:PackedScene,x:float,y:float,parent): var Instance = node.instance() Instance.global_position = Vector2(x,y) - parent.add_child(Instance) + parent.call_deferred("add_child", Instance) #Get position in sectors func get_sector(pos): - return (pos / resolution).floor() + return (pos / RESOLUTION).floor() #Return the current Map func get_map(): - return get_tree().get_nodes_in_group("map")[0] + return get_tree().get_nodes_in_group("map").front() + + +## tally up scores +func tally_scores() -> void: + var map = get_map() + # arrows bonus + arrows_bonus = arrows * 100 + # collection bonus + if keys >= 50: + collection_bonus += 500 + if _get_shards() >= 5: + collection_bonus += 500 + # 100% collection + if keys >= 50 and _get_shards() >= 5: + collection_bonus += 250 + shards_collected[5] = true + # 100% time bonus + if time < map.target_time_100: + time_bonus = max(2500 - int(2500.0 * time / map.target_time_100), 0) as int + shards_collected[6] = true + else: + # any% time bonus + if time < map.target_time_any: + time_bonus = max(2500 - int(2500.0 * time / map.target_time_any), 0) as int + shards_collected[6] = true + # life bonus + if deaths == 0: + life_bonus = 1500 + shards_collected[7] = true + elif deaths == 1: + life_bonus = 500 + # perfect bonus + if shards_collected[5] and shards_collected[6] and shards_collected[7]: + perfect_bonus += 1000 + # final score + final_score = score + arrows_bonus + collection_bonus + time_bonus + life_bonus + perfect_bonus + # easy mode modifier + if difficulty == Difficulty.SWEET: + final_score *= EASY_DIFFICULTY_MODIFIER + if marathon_mode: + marathon_shards += shards_collected.count(true) + marathon_score += final_score + else: + Game.save() + #Go to new map -func change_map(map: PackedScene): +func change_map(map: PackedScene) -> void: get_tree().paused = true can_pause = false - Fade.fade_out(0.4) + Fade.fade_out(Options.transition_speed_secs) yield(Fade, "fade_finished") can_pause = true + # save deaths + if not marathon_mode: + var save_id = LevelData.levels[current_level].save_id + var save_data: Save.LevelSaveData = Save.current_file.levels[save_id] + save_data.deaths += deaths + Save.current_file.play_time += time + Save.current_file.save_to_file() + # clear clear_collectibles() + StainLayer.reset() #Loop is so no more than one level is loaded at a time SceneManager.current_scene = map.instance() #Clear data -func clear_collectibles(): - score = 0 +func clear_collectibles() -> void: + # collectibles keys = 0 - stars = [false,false,false,false,false] - shards = 0 - shards_collected = [false,false,false,false,false,false,false,false,false,false] + stars_collected.fill(false) + shards_collected.fill(false) arrows = 0 - lives = 2 + if not marathon_mode: + lives = 2 deaths = 0 + # score + score = 0 + collection_bonus = 0 + time_bonus = 0 + life_bonus = 0 + perfect_bonus = 0 + final_score = 0 #Save func save(): + if marathon_mode: + return + + var new_super := Save.current_file.is_super_player() + + # get level's save data object var save_id = LevelData.levels[current_level].save_id - var save_data = Save.get_level_data(save_id) - var is_100 = shards >= 5 && keys >= 50 - # set score and time depending on completion - if score > save_data["score_100" if is_100 else "score_any"]: - Save.set_score(save_id, score, is_100) - if time < save_data["time_100" if is_100 else "time_any"]: - Save.set_time(save_id, time, is_100) + var save_data: Save.LevelSaveData = Save.current_file.levels[save_id] + + old_high_score = max(save_data.score_100, save_data.score_any) + + # save score and time depending on completion + if _get_shards() >= 5 && keys >= 50: + save_data.score_100 = max(save_data.score_100, final_score) as int + save_data.time_100 = min(save_data.time_100, time) + else: + save_data.score_any = max(save_data.score_any, final_score) as int + save_data.time_any = min(save_data.time_any, time) + # set shards for i in 8: if shards_collected[i]: - Save.set_shard_collected(save_id, i, true) - # set options - Save.set_options() - # save file - Save.save_file(current_file) + save_data.shards_collected[i] = true + + # set keys + save_data.keys_collected = max(save_data.keys_collected, keys) as int + + # mark as completed + save_data.completed = true + + # add to playtime + Save.current_file.play_time += time + + if new_super and Save.current_file.is_super_player(): + Save.current_file.palette = "super_player" + + # save the file + Save.current_file.save_to_file() -#Convert seconds into M:SS:MS + +# smaller save function for bosses +func save_boss() -> void: + if marathon_mode: + return + + var new_super := not Save.current_file.is_super_player() + + var save_id = LevelData.levels[current_level].save_id + var save_data: Save.LevelSaveData = Save.current_file.levels[save_id] + + save_data.time_any = min(save_data.time_any, time) + save_data.completed = true + + Save.current_file.play_time += time + + if new_super and Save.current_file.is_super_player(): + Save.current_file.palette = "super_player" + + Save.current_file.save_to_file() + + +# !!DEPRECATED!! convert milliseconds into M:SS:MS func timeify(input): - if input < 600: - var minutes = str(floor(input / 60)) - var seconds = floor(fmod(input,60)) - var milliseconds := floor(fmod(input, 1) * 100) - return minutes + ":" + ("%02d" % seconds) + "." + ("%02d" % milliseconds) + if input <= 5999099: + var seconds = fmod(Game.time / 1000,60) + var minutes = floor((Game.time / 1000) / 60) + var centiseconds = fmod(floor(seconds * 100),100) + return ("%02d" % minutes) + ":" + ("%02d" % seconds) + "." + ("%02d" % centiseconds) elif input == INF: return "-:--.--" else: - return "9:59.99" + return "99:59.99" + +# convert seconds into M:SS.MS +func format_time(seconds: float) -> String: + if is_inf(seconds) or is_nan(seconds): # infinite + return "--:--.--" + elif seconds >= 6000.0: # 10 minutes or greater + return "99:99.99" + else: + var minutes = floor(seconds / 60.0) + var centiseconds = fmod(floor(seconds * 100.0), 100.0) + return "%02d:%02d.%02d" % [minutes, fmod(seconds, 60.0), centiseconds] #Restart level func restart_level(): - if score > high_score: high_score = score - score = 0 - keys = 0 - stars = [false,false,false,false,false] - shards = 0 - arrows = 0 - lives = 2 - Audio.ac_climb.stop() - Audio.ac_die.stop() - Engine.time_scale = 1.0 - for tween in get_tree().get_processed_tweens(): - tween.kill() - change_map(load(get_map().filename)) - Audio.ac_music.stream_paused = false + if can_restart: + Save.current_file.play_time += time + Save.current_file.levels[LevelData.levels[current_level].save_id].deaths += deaths + Save.current_file.save_to_file() + clear_collectibles() + Audio.ac_climb.stop() + Audio.ac_die.stop() + Engine.time_scale = 1.0 + for tween in get_tree().get_processed_tweens(): + tween.kill() + change_map(load(get_map().filename)) + Audio.ac_music.stream_paused = false #Freeze frame -func freeze_frame(time): +func freeze_frame(freeze_time): get_tree().paused = true - var timer = get_tree().create_timer(time, true) + var timer = get_tree().create_timer(freeze_time, true) timer.connect("timeout", get_tree(), "set_pause", [false]) return timer #Check if 100%ed func has_collection_bonus(): - return shards == 5 && keys == 50 + return _get_shards() == 5 && keys == 50 # called when player dies func _on_player_died() -> void: - if lives <= 0 and use_lives: - Audio.play_sound(Audio.a_gover, Audio.ac_die) + deaths += 1 + if marathon_mode: + marathon_deaths += 1 + if use_lives and lives <= 0: + still_playing = false + can_restart = false + can_pause = false + if not marathon_mode: + Save.current_file.play_time += time + Save.current_file.levels[LevelData.levels[current_level].save_id].deaths += deaths + Save.current_file.save_to_file() + clear_collectibles() + Audio.play_sound(Audio.a_game_over, Audio.ac_die) get_tree().get_nodes_in_group("player")[0].queue_free() var time_tween = create_tween() time_tween.tween_property(Engine, "time_scale", 0.1, 0.3) Audio.ac_music.stream_paused = true yield(time_tween, "finished") yield(get_tree().create_timer(1.0 * 0.1), "timeout") - call_deferred("restart_level") + Engine.time_scale = 1.0 + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + if marathon_mode: + SceneManager.current_scene = load("res://menus/main_menu.tscn").instance() + else: + var map = get_map() + var gover = load("res://menus/game_over.tscn").instance() + map.add_child(gover) + can_restart = true + can_pause = true else: # count death lives -= 1 - deaths += 1 # play death sound - Audio.play_sound(Audio.a_die, Audio.ac_die) + if alternate_death: + Audio.play_sound(alternate_death, Audio.ac_die) + else: + Audio.play_sound(Audio.a_die, Audio.ac_die) + alternate_death = null # death score penalty if use_lives == false && lives < 0: - score = max(0, score - 500) + score = max(0, score - 500) as int # freezeframe Game.freeze_frame(0.3) + +func check_time_bonus(): + var map = get_map() + if keys >= 50 and _get_shards() >= 5: + # 100% time bonus + if time < map.target_time_100: + return true + else: + return false + else: + # any% time bonus + if time < map.target_time_any: + return true + else: + return false diff --git a/autoloads/level_data.gd b/autoloads/level_data.gd index 27b483f..67990f6 100644 --- a/autoloads/level_data.gd +++ b/autoloads/level_data.gd @@ -1,7 +1,9 @@ tool extends Node -export var levels = [] setget set_levels +export var marathon_start: int = 0 +export var marathon_end: int = 11 +export var levels: Array = [] setget set_levels func set_levels(value): levels = value diff --git a/autoloads/level_data.tscn b/autoloads/level_data.tscn index 9e1f0d5..fe92a6f 100644 --- a/autoloads/level_data.tscn +++ b/autoloads/level_data.tscn @@ -1,22 +1,35 @@ -[gd_scene load_steps=19 format=2] +[gd_scene load_steps=31 format=2] [ext_resource path="res://autoloads/level_data.gd" type="Script" id=1] -[ext_resource path="res://maps/hills.tscn" type="PackedScene" id=2] +[ext_resource path="res://maps/hills_scholar.tscn" type="PackedScene" id=2] [ext_resource path="res://maps/canopy.tscn" type="PackedScene" id=3] [ext_resource path="res://maps/cave.tscn" type="PackedScene" id=4] [ext_resource path="res://scripts/level_entry.gd" type="Script" id=5] [ext_resource path="res://maps/mountain.tscn" type="PackedScene" id=6] +[ext_resource path="res://maps/abyss_scholar.tscn" type="PackedScene" id=7] [ext_resource path="res://maps/boss/boss1_arena.tscn" type="PackedScene" id=8] [ext_resource path="res://maps/rust.tscn" type="PackedScene" id=9] [ext_resource path="res://maps/station.tscn" type="PackedScene" id=10] [ext_resource path="res://maps/graveyard.tscn" type="PackedScene" id=11] +[ext_resource path="res://maps/lab.tscn" type="PackedScene" id=12] +[ext_resource path="res://maps/boss/boss2_arena.tscn" type="PackedScene" id=13] +[ext_resource path="res://maps/cave_scholar.tscn" type="PackedScene" id=14] +[ext_resource path="res://maps/hills.tscn" type="PackedScene" id=15] +[ext_resource path="res://maps/boss/boss3_arena.tscn" type="PackedScene" id=16] [sub_resource type="Resource" id=1] resource_name = "Verdant Hills" script = ExtResource( 5 ) title = "Verdant Hills" -shard_titles = [ "Climb the Big Vine", "Next to the Lone Tree", "Slime's Treasure", "The Snake Pit", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +shard_titles = [ "Climb to the top", "The obstacle course", "The smallest platform", "Energetic eviscerator", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] save_id = "hills" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "" +boss = false +has_scoreboard = true scene = ExtResource( 2 ) [sub_resource type="Resource" id=2] @@ -25,6 +38,13 @@ script = ExtResource( 5 ) title = "Shady Canopy" shard_titles = [ "Archer and His Friend", "Thirsty Spiders", "Spider's Den", "Dancing Above the Pond", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] save_id = "canopy" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "" +boss = false +has_scoreboard = true scene = ExtResource( 3 ) [sub_resource type="Resource" id=4] @@ -33,6 +53,13 @@ script = ExtResource( 5 ) title = "Echo Mountain" shard_titles = [ "Push the Rock", "Twin Rolling Fiends", "Beware! Moving Platforms", "Crafty CatBat", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] save_id = "mountain" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "" +boss = false +has_scoreboard = true scene = ExtResource( 6 ) [sub_resource type="Resource" id=6] @@ -41,40 +68,165 @@ script = ExtResource( 5 ) title = "VS The Scrump" shard_titles = [ "-w-", "owo", "uwu", "o3o", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] save_id = "boss1" +shards_required_sweet = 8 +shards_required_salty = 12 +shards_required_spicy = 16 +shards_required_pungent = 24 +boss_required = "" +boss = true +has_scoreboard = false scene = ExtResource( 8 ) [sub_resource type="Resource" id=3] resource_name = "Blue Ray Cavern" script = ExtResource( 5 ) title = "Blue Ray Cavern" -shard_titles = [ "Star-Crossed Lovers", "The Snail Cave", "Members Only!", "OverHead Obstacle Course", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +shard_titles = [ "Dynamic Duo", "Stalactite Scramble", "OverHead Obstacle Course", "Sneaky Snail", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] save_id = "cave" -scene = ExtResource( 4 ) +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "boss1" +boss = false +has_scoreboard = true +scene = ExtResource( 14 ) + +[sub_resource type="Resource" id=10] +resource_name = "Crater of the Abyss" +script = ExtResource( 5 ) +title = "Crater of the Abyss" +shard_titles = [ "Follow the minnow", "Beel enclosure", "Turchin jump", "Drop Down Mine Jump", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "abyss" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "boss1" +boss = false +has_scoreboard = true +scene = ExtResource( 7 ) [sub_resource type="Resource" id=9] -resource_name = "Graveyard" +resource_name = "ArlingWood Graveyard" script = ExtResource( 5 ) -title = "Graveyard" +title = "ArlingWood Graveyard" shard_titles = [ "Bone Climb", "Soul Graze", "Bow Happy Hellarcher", "Look out for spikes!", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] save_id = "graveyard" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "boss1" +boss = false +has_scoreboard = true scene = ExtResource( 11 ) +[sub_resource type="Resource" id=12] +resource_name = "VS. STG-2600" +script = ExtResource( 5 ) +title = "VS. STG-2600" +shard_titles = [ "", "", "", "", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "boss2" +shards_required_sweet = 20 +shards_required_salty = 24 +shards_required_spicy = 32 +shards_required_pungent = 40 +boss_required = "" +boss = true +has_scoreboard = false +scene = ExtResource( 13 ) + +[sub_resource type="Resource" id=8] +resource_name = "Dread PD" +script = ExtResource( 5 ) +title = "Dread PD" +shard_titles = [ "All Cops Are Bastards", "Save Ms.X", "Treacherous Climb", "Dodge the lasers", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "station" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "boss2" +boss = false +has_scoreboard = true +scene = ExtResource( 10 ) + [sub_resource type="Resource" id=7] resource_name = "Rust Inc." script = ExtResource( 5 ) title = "Rust Inc." shard_titles = [ "Precarious Block", "Beside the button", "Saws and bullets", "Beyond the Steam", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] save_id = "rust" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "boss2" +boss = false +has_scoreboard = true scene = ExtResource( 9 ) -[sub_resource type="Resource" id=8] -resource_name = "Police Station" +[sub_resource type="Resource" id=11] +resource_name = "Fami's Lab" script = ExtResource( 5 ) -title = "Police Station" -shard_titles = [ "All Cops Are Bastards", "Save Ms.X", "Treacherous Climb", "Dodge the lasers", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] -save_id = "station" -scene = ExtResource( 10 ) +title = "Fami's Lab" +shard_titles = [ "Spikes Can't Stop You", "Final Obstacle Course", "5-Finger Discount", "Good Job!", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "lab" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "boss2" +boss = false +has_scoreboard = true +scene = ExtResource( 12 ) + +[sub_resource type="Resource" id=15] +resource_name = "VS. Fami" +script = ExtResource( 5 ) +title = "VS. Fami" +shard_titles = [ "", "", "", "", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "boss3" +shards_required_sweet = 30 +shards_required_salty = 40 +shards_required_spicy = 50 +shards_required_pungent = 60 +boss_required = "" +boss = true +has_scoreboard = false +scene = ExtResource( 16 ) + +[sub_resource type="Resource" id=14] +resource_name = "Beta Blue Ray Cavern" +script = ExtResource( 5 ) +title = "Beta Blue Ray Cavern" +shard_titles = [ "Star-Crossed Lovers", "The Snail Cave", "Members Only!", "OverHead Obstacle Course", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "beta_cave" +shards_required_sweet = 72 +shards_required_salty = 72 +shards_required_spicy = 72 +shards_required_pungent = 72 +boss_required = "boss3" +boss = false +has_scoreboard = false +scene = ExtResource( 4 ) + +[sub_resource type="Resource" id=13] +resource_name = "Beta Verdant Hills" +script = ExtResource( 5 ) +title = "Beta Verdant Hills" +shard_titles = [ "Climb the Big Vine", "Next to the Lone Tree", "Slime's Treasure", "The Snake Pit", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus" ] +save_id = "beta_hills" +shards_required_sweet = 0 +shards_required_salty = 0 +shards_required_spicy = 0 +shards_required_pungent = 0 +boss_required = "" +boss = false +has_scoreboard = false +scene = ExtResource( 15 ) [node name="LevelData" type="Node"] script = ExtResource( 1 ) -levels = [ SubResource( 1 ), SubResource( 2 ), SubResource( 4 ), SubResource( 6 ), SubResource( 3 ), SubResource( 9 ), SubResource( 7 ), SubResource( 8 ) ] +levels = [ SubResource( 1 ), SubResource( 2 ), SubResource( 4 ), SubResource( 6 ), SubResource( 3 ), SubResource( 10 ), SubResource( 9 ), SubResource( 12 ), SubResource( 8 ), SubResource( 7 ), SubResource( 11 ), SubResource( 15 ), SubResource( 14 ), SubResource( 13 ) ] diff --git a/autoloads/ngio.gd b/autoloads/ngio.gd new file mode 100644 index 0000000..6303a39 --- /dev/null +++ b/autoloads/ngio.gd @@ -0,0 +1,191 @@ +extends Node + + +const GATEWAY_URI: String = "https://newgrounds.io/gateway_v3.php" +const SESSION_FILE: String = "user://ngio.pr" +const EMPTY_SESSION: Dictionary = { + expired = true, + id = "", + passport_url = "", + remember = false, + user = null, +} + + +var app_id: String = "" # app id on newgrounds +var aes_key := PoolByteArray([]) # AES-128/Base64 encryption key +var session: Dictionary = EMPTY_SESSION +var keys_loaded: bool = false # whether id and key have been loaded from ini file + +var http := HTTPRequest.new() # http request node +var aes := AESContext.new() # aes encryption +var rng := RandomNumberGenerator.new() + + +var _response: Dictionary = {} + + +func _ready() -> void: + # load app id from ngio.ini + var ini = ConfigFile.new() + var err = ini.load("res://ngio.ini") + if err != OK: + push_error("Failed to load ngio data. Will not be able to access scoreboards.") + return + app_id = ini.get_value("ngio", "id", "") + if app_id == "": + push_error("Failed to load ngio data. Will not be able to access scoreboards.") + keys_loaded = false + return + else: + keys_loaded = true + + # attempt to load aes key + var key = Marshalls.base64_to_raw(ini.get_value("ngio", "key", "")) + if key.size() == 16: + aes_key = key + + # initialize HTTPRequest + add_child(http) + http.connect("request_completed", self, "_http_request_completed") + + # initialize rng for encryption + rng.randomize() + + # try to load saved session + if not yield(load_saved_session(), "completed"): + yield(start_new_session(), "completed") + + +## attempts to load a saved newgrounds.io session +## returns true if the loaded session is valid +func load_saved_session() -> bool: + var ini = ConfigFile.new() + var err = ini.load(SESSION_FILE) + # fail if can't load ngio.pr + if err != OK: + session = EMPTY_SESSION + session.id = ini.get_value("ngio", "session_id", "") + #const url = new URL(location.href); + #this.session_id = url.searchParams.get('ngio_session_id'); + if OS.has_feature('JavaScript'): + var sp_session = JavaScript.eval(""" + new URL(window.location.href).searchParams.get('ngio_session_id') + """) + if sp_session != null: + session.id = sp_session + # check session is valid + var response = yield(request_execute("App.checkSession"), "completed") + if has_result(response): + var result = response.result + if result.data.success and not result.data.session.expired: + session = result.data.session + return true + session = EMPTY_SESSION + ini.set_value("ngio", "session_id", "") + ini.save(SESSION_FILE) + return false + + +## start new session +func start_new_session() -> bool: + var response = yield(request_execute("App.startSession"), "completed") + if has_result(response): + var result = response.result + if result.data.success and not result.data.session.expired: + session = result.data.session + return true + session = EMPTY_SESSION + return false + + +## repeatedly checks session until it is logged in or cancelled +func passport_check() -> bool: + # attempt for maximum of 5 minutes + var attempts = 60 + while attempts > 0: + attempts -= 1 + yield(get_tree().create_timer(5.0), "timeout") + var response = yield(request_execute("App.checkSession"), "completed") + if has_result(response): + var result = response.result + if result.data.success: + if result.data.session.user: + session = result.data.session + if session.remember: + var ini = ConfigFile.new() + ini.set_value("ngio", "session_id", session.id) + ini.save(SESSION_FILE) + return true + else: + return false + return false + + +## checks if a response is valid and succeeded +func has_result(response: Dictionary) -> bool: + return "success" in response and response.success + + +## requests the provided component be executed, do not call async :/ +# may call with either single or multiple components +func request_execute(component: String, parameters: Dictionary = {}, echo: String = "", encrypt: bool = false) -> Dictionary: + # build request headers + var headers = [ + "Content-Type: application/x-www-form-urlencoded", + ] + # build execute object + var execute = { + component = component, + parameters = parameters, + echo = echo, + } + # use encryption if a valid key is available + # TODO: implementation messed up in some way. encryption is fine, but + # formatting is wrong in some way that newgrounds can not understand +# if encrypt and aes_key.size() == 16: + if false: + # convert to bytes + var data = to_json(execute).to_utf8() + # pad to 16 bytes alignment + var padding = PoolByteArray([]) + padding.resize((16 - data.size() % 16) % 16) + padding.fill(0) + data.append_array(padding) + # generate random initialization vector + var iv = PoolByteArray([]) + iv.resize(16) + for i in iv.size(): + iv[i] = rng.randi() % 0xFF + # encrypt data + aes.start(AESContext.MODE_CBC_ENCRYPT, aes_key, iv) + var encrypted = aes.update(data) + aes.finish() + # compose secure execute object + execute = { + secure = Marshalls.raw_to_base64(iv + encrypted) + } + # compose request body + var request = { + app_id = app_id, + session_id = session.id, + execute = execute, + } + var body = "input=" + to_json(request).percent_encode() + # make request + var err = http.request(GATEWAY_URI, headers, true, HTTPClient.METHOD_POST, body) + if err != OK: + push_error("Invalid HTTP request") + # yield response + yield(http, "request_completed") + return _response + + +## called when the HTTPRequest gets a responce +func _http_request_completed(result: int, response_code: int, headers: PoolStringArray, body: PoolByteArray) -> void: + if response_code == 200: + var dict = parse_json(body.get_string_from_utf8()) + if typeof(dict) == TYPE_DICTIONARY: + _response = dict + return + _response = {success = false} diff --git a/autoloads/options.gd b/autoloads/options.gd index abf0cf7..fbb7655 100644 --- a/autoloads/options.gd +++ b/autoloads/options.gd @@ -1,96 +1,199 @@ extends Node + #Enums -enum ScalingMode {INTEGER,ASPECT,STRETCH} -enum Filter {NONE,CRT,LCD,BILINEAR} -enum RumbleMode {NONE,NORMAL,BPM} -enum TransSpeed {NONE = 0,SLOW = 1,NORMAL = 2,FAST = 3} -var TRANS_SPEEDS = [0.0000001, 0.8, 0.4, 0.2] +enum ScalingMode {INTEGER, ASPECT, STRETCH} +enum Filter {NONE, CRT, LCD, BILINEAR} +enum RumbleMode {NONE, DEATHS, FULL} +enum TransSpeed {SLOW, NORMAL, FAST, INSTANT} +enum ScanlineType {NONE, LCD, CRT} +enum Gore {NONE, NO_STAINS, FULL} +enum Section {GAME, VIDEO, AUDIO, ALL} + + +#Constants +const TRANS_SPEEDS := [0.8, 0.4, 0.2, 0.0000001] + + #Game -var rumble = RumbleMode.NONE +var rumble: int = RumbleMode.FULL +var gore: int = Gore.FULL +var speedrun_timer: bool = false setget _set_speedrun_timer +var speccy_help: bool = false +var scoreboard_name: String = "" setget _set_scoreboard_name +var scoreboard_id: int = -1 + #Video -var fullscreen = false setget _set_fullscreen -var scaling_mode = ScalingMode.INTEGER setget _set_scaling_mode -var transition_speed = TransSpeed.NORMAL setget _set_transition_speed +var fullscreen: bool = false setget _set_fullscreen +var window_size: float = 2.0 setget _set_window_size +var scaling_mode: int = ScalingMode.INTEGER setget _set_scaling_mode +var transition_speed: int = TransSpeed.NORMAL setget _set_transition_speed var transition_speed_secs setget , _get_transition_speed_sex +var border: int = 0 setget _set_border +var scanlines: int = ScanlineType.NONE setget _set_scanlines + #Audio -var master_volume = 1.0 setget _set_master_volume -var music_volume = 1.0 setget _set_music_volume -var sound_volume = 1.0 setget _set_sound_volume +var master_volume: float = 1.0 setget _set_master_volume +var music_volume: float = 1.0 setget _set_music_volume +var sound_volume: float = 1.0 setget _set_sound_volume +var landing_sound: bool = true setget _set_landing_sound + +# last played file +var last_file: int = 0 # default values var defaults = null -func _ready(): +# text is being entered +var entry: bool = false + +func _ready() -> void: pause_mode = PAUSE_MODE_PROCESS + # clone self into defaults before loading stored values if defaults == null: defaults = duplicate() load_options() -func _unhandled_input(event): - if Debug.entry == false: +func _unhandled_input(event: InputEvent) -> void: + if not Debug.entry and not entry: if event.is_action_pressed("fullscreen"): - _set_fullscreen(!fullscreen) + OS.window_fullscreen = not OS.window_fullscreen -func load_options(): +func load_options() -> void: var file = ConfigFile.new() file.load("user://options.pr") # game - rumble = file.get_value("game", "rumble", RumbleMode.NONE) + rumble = file.get_value("game", "rumble", defaults.rumble) + gore = file.get_value("game", "gore", defaults.gore) + _set_speedrun_timer(file.get_value("game", "speedrun_timer", defaults.speedrun_timer)) + speccy_help = file.get_value("game", "speccy_help", defaults.speccy_help) + _set_scoreboard_name(file.get_value("game", "scoreboard_name", "")) + randomize() + scoreboard_id = file.get_value("game", "scoreboard_id", randi()) # video - _set_fullscreen(file.get_value("video", "fullscreen", false)) - _set_scaling_mode(file.get_value("video", "scaling_mode", ScalingMode.INTEGER)) - _set_transition_speed(file.get_value("video", "transition_speed", TransSpeed.NORMAL)) + _set_fullscreen(file.get_value("video", "fullscreen", defaults.fullscreen)) + _set_window_size(file.get_value("video", "window_size", defaults.window_size)) + _set_scaling_mode(file.get_value("video", "scaling_mode", defaults.scaling_mode)) + _set_transition_speed(file.get_value("video", "transition_speed", defaults.transition_speed)) + _set_border(file.get_value("video", "border", defaults.border)) + _set_scanlines(file.get_value("video", "scanlines", defaults.scanlines)) # audio _set_master_volume(file.get_value("audio", "master_volume", 1.0)) _set_music_volume(file.get_value("audio", "music_volume", 1.0)) _set_sound_volume(file.get_value("audio", "sound_volume", 1.0)) + _set_landing_sound(file.get_value("audio", "landing_sound", defaults.landing_sound)) + # last played file + last_file = file.get_value("save", "last_file", 0) -func save_options(): +func load_defaults(section: int = Section.ALL) -> void: + match section: + Section.GAME, Section.ALL: + rumble = defaults.rumble + gore = defaults.gore + speedrun_timer = defaults.speedrun_timer + speccy_help = defaults.speccy_help + scoreboard_name = defaults.scoreboard_name + scoreboard_id = randi() + Section.VIDEO, Section.ALL: + fullscreen = defaults.fullscreen + window_size = defaults.window_size + scaling_mode = defaults.scaling_mode + transition_speed = defaults.transition_speed + border = defaults.border + scanlines = defaults.scanlines + Section.AUDIO, Section.ALL: + master_volume = defaults.master_volume + music_volume = defaults.music_volume + sound_volume = defaults.sound_volume + landing_sound = defaults.landing_sound + +func save_options() -> void: var file = ConfigFile.new() #Game - file.set_value("game","rumble",rumble) + file.set_value("game", "rumble", rumble) + file.set_value("game", "gore", gore) + file.set_value("game", "speedrun_timer", speedrun_timer) + file.set_value("game", "speccy_help", speccy_help) + file.set_value("game", "scoreboard_name", scoreboard_name) + file.set_value("game", "scoreboard_id", scoreboard_id) #Video - file.set_value("video","fullscreen",fullscreen) - file.set_value("video","scaling_mode",scaling_mode) - file.set_value("video","transition_speed",transition_speed) + file.set_value("video", "fullscreen", fullscreen) + file.set_value("video", "window_size", window_size) + file.set_value("video", "scaling_mode", scaling_mode) + file.set_value("video", "transition_speed", transition_speed) + file.set_value("video", "border", border) + file.set_value("video", "scanlines", scanlines) #Audio - file.set_value("audio","master_volume",master_volume) - file.set_value("audio","music_volume",music_volume) - file.set_value("audio","sound_volume",sound_volume) + file.set_value("audio", "master_volume", master_volume) + file.set_value("audio", "music_volume", music_volume) + file.set_value("audio", "sound_volume", sound_volume) + file.set_value("audio", "landing_sound", landing_sound) + # last played file + file.set_value("save", "last_file", last_file) + # save the options to file file.save("user://options.pr") # Setters -# video setters -func _set_fullscreen(value): - fullscreen = value - OS.set_window_fullscreen(value) +# game setters +func _set_speedrun_timer(value: bool) -> void: + speedrun_timer = value + if not speedrun_timer: + SpeedrunTimer.visible = false + SpeedrunTimer.timer_running = false -func _set_scaling_mode(value): +func _set_scoreboard_name(value: String) -> void: + scoreboard_name = value.substr(0, 10).to_lower() + + +# video setters +func _set_fullscreen(value: bool) -> void: + fullscreen = value + if Engine.get_idle_frames() == 0: + OS.window_fullscreen = fullscreen + +func _set_window_size(value: float) -> void: + window_size = value + OS.window_size = Game.RESOLUTION * window_size + +func _set_scaling_mode(value: int) -> void: scaling_mode = value + SceneManager.scaling_mode = scaling_mode get_tree().emit_signal("screen_resized") # force screen size update -func _set_transition_speed(value): +func _set_transition_speed(value: int) -> void: transition_speed = value -func _get_transition_speed_sex(): +func _get_transition_speed_sex() -> float: return TRANS_SPEEDS[transition_speed] +func _set_border(value: int) -> void: + border = value + Border.current_border = border + +func _set_scanlines(value: int) -> void: + scanlines = value + SceneManager.set_scanlines(scanlines) + + # audio setters -func _set_master_volume(value): +func _set_master_volume(value: float) -> void: master_volume = value AudioServer.set_bus_volume_db(0, linear2db(value)) -func _set_music_volume(value): +func _set_music_volume(value: float) -> void: music_volume = value var idx = AudioServer.get_bus_index("music") AudioServer.set_bus_volume_db(idx, linear2db(value)) -func _set_sound_volume(value): +func _set_sound_volume(value: float) -> void: sound_volume = value var idx = AudioServer.get_bus_index("sound") AudioServer.set_bus_volume_db(idx, linear2db(value)) idx = AudioServer.get_bus_index("shard") AudioServer.set_bus_volume_db(idx, linear2db(value)) + +func _set_landing_sound(value: bool) -> void: + landing_sound = value + Audio.ac_land.volume_db = -15.0 if landing_sound else -INF diff --git a/autoloads/save.gd b/autoloads/save.gd index 9945c69..a865cb4 100644 --- a/autoloads/save.gd +++ b/autoloads/save.gd @@ -1,44 +1,180 @@ extends Node -var file +# currently-used compatible format version +const FORMAT_VERSION: int = 1 -func load_file(file_number): - var new_file = ConfigFile.new() - new_file.load("user://file%d.pr" % file_number) - file = new_file +# contains the save data for a single level +class LevelSaveData: + # save file category to use for this level + var save_id: String + # scores + var score_any: int = 0 + var score_100: int = 0 + # times + var time_any: float = INF + var time_100: float = INF + # times died in that level + var deaths: int + # collectibles + var keys_collected: int = 0 + var shards_collected: Array + # whether level has been beaten at all + var completed: bool = false + + func _init(id: String) -> void: + save_id = id + # initialize shards array + shards_collected = [] + shards_collected.resize(8) + for i in 8: + shards_collected[i] = false + + ## save the level data to the given ConfigFile + func save_to_file(file: ConfigFile) -> void: + # set scores + file.set_value(save_id, "score_any", score_any) + file.set_value(save_id, "score_100", score_100) + # set times + file.set_value(save_id, "time_any", time_any) + file.set_value(save_id, "time_100", time_100) + # set deaths + file.set_value(save_id, "deaths", deaths) + # set collected keys + file.set_value(save_id, "keys", keys_collected) + # set collected shards + for i in 8: + file.set_value(save_id, "shard_%d" % i, shards_collected[i]) + # set completion status + file.set_value(save_id, "completed", completed) + + ## loads level data from the given ConfigFile + func load_from_file(file: ConfigFile) -> void: + # get scores + score_any = file.get_value(save_id, "score_any", 0) + score_100 = file.get_value(save_id, "score_100", 0) + # get times + time_any = file.get_value(save_id, "time_any", INF) + time_100 = file.get_value(save_id, "time_100", INF) + # get deaths + deaths = file.get_value(save_id, "deaths", 0) + # get collected keys + keys_collected = file.get_value(save_id, "keys", keys_collected) + # get collected shards + for i in 8: + shards_collected[i] = file.get_value(save_id, "shard_%d" % i, false) + # get completion status + completed = file.get_value(save_id, "completed", false) -func get_level_data(save_id): - var shards = [] - shards.resize(8) - for i in 8: - shards[i] = file.get_value(save_id, "shard_%d" % i, false) - return { - # any% score and time - score_any = file.get_value(save_id, "score_any", 0), - time_any = file.get_value(save_id, "time_any", INF), - # 100% score and time - score_100 = file.get_value(save_id, "score_100", 0), - time_100 = file.get_value(save_id, "time_100", INF), - shards = shards - } +# contains data of one save file +class SaveFile: + # path of file to load/save from + var file_path: String + # version of save file format + var version: int = FORMAT_VERSION + # name of the save file + var name: String = "" + # difficulty chosen for the file + var difficulty: int = Game.Difficulty.SPICY + # total play time + var play_time: float = 0.0 + # dictionary of levels' save data + var levels: Dictionary + # whether is debug save + var debug: bool = false + # palette the save file is using + var palette: String = "default" + + func _init(path: String, debug_save: bool = false) -> void: + debug = debug_save + file_path = path + # initialize level save data dictionary + levels = {} + for level in LevelData.levels: + var data := LevelSaveData.new(level.save_id) + if debug: + data.completed = true + levels[level.save_id] = data + + # return total number of shards + func get_total_shards() -> int: + if debug: + return 999 + var total = 0 + for level in levels.values(): + total += level.shards_collected.count(true) + return total + + # return total number of keys + func get_total_keys() -> int: + var total = 0 + for level in levels.values(): + total += level.keys_collected + return total + + # return total number of deaths + func get_total_deaths() -> int: + var total = 0 + for level in levels.values(): + total += level.deaths + return total + + func is_super_player() -> bool: + return get_total_shards() >= 72 and levels["boss3"].completed + + # loads data from the file at `path` + func load_from_file() -> void: + var file = ConfigFile.new() + file.load(file_path) + # get save format version + version = file.get_value("options", "version", 0) + # load name + name = file.get_value("options", "name", "SG") + # load difficulty + difficulty = file.get_value("options", "difficulty", Game.Difficulty.SPICY) + # load playtime + play_time = file.get_value("options", "play_time", 0.0) + palette = file.get_value("options", "palette", "default") + # TODO: load bought palettes + # TODO: load selected palette + # load level save data + for level_save in levels.values(): + level_save.load_from_file(file) + + func save_to_file() -> void: + var file = ConfigFile.new() + # use current format version + file.set_value("options", "version", FORMAT_VERSION) + # save name + file.set_value("options", "name", name) + # save difficulty + file.set_value("options", "difficulty", difficulty) + # save playtime + file.set_value("options", "play_time", play_time) + file.set_value("options", "palette", palette) + # TODO: save bought palettes + # TODO: save selected palette + # save level data + for level in levels.values(): + level.save_to_file(file) + file.save(file_path) -func load_options(): - Game.use_lives = file.get_value("options","uselives",Game.use_lives) - Game.is_easy_mode = file.get_value("game","easy",Game.is_easy_mode) -func set_shard_collected(save_id, index, collected = true): - file.set_value(save_id, "shard_%d" % index, collected) +## currently used save file +var current_file: SaveFile = null -func set_score(save_id, score, is_100 = false): - file.set_value(save_id, "score_100" if is_100 else "score_any", int(score)) +func _ready() -> void: + if OS.is_debug_build(): + current_file = SaveFile.new("user://debug_save.pr", true) + else: + current_file = load_file("user://file%d.pr" % Options.last_file) + if current_file: + Game.difficulty = current_file.difficulty -func set_options(): - file.set_value("options","uselives",Game.use_lives) - file.set_value("game","easy",Game.is_easy_mode) - save_file(Game.current_file) - -func set_time(save_id, time, is_100 = false): - file.set_value(save_id, "time_100" if is_100 else "time_any", float(time)) - -func save_file(file_number): - file.save("user://file%d.pr" % file_number) +## shortcut for loading a save file from specific path +func load_file(path: String) -> SaveFile: + if File.new().file_exists(path): + var file = SaveFile.new(path) + file.load_from_file() + return file + else: + return null diff --git a/autoloads/scene_manager.gd b/autoloads/scene_manager.gd index ccb8aa6..f6c8a67 100644 --- a/autoloads/scene_manager.gd +++ b/autoloads/scene_manager.gd @@ -19,6 +19,14 @@ var resolution: Vector2 var current_scene: Node setget change_scene +var last_input_gamepad: bool = true + +func _input(event: InputEvent) -> void: + if event is InputEventJoypadButton: + last_input_gamepad = true + elif event is InputEventKey: + last_input_gamepad = false + ## change the current scene func change_scene(new_scene: Node) -> void: # remove current scene if it exists @@ -32,6 +40,20 @@ func change_scene(new_scene: Node) -> void: viewport.call_deferred("add_child", new_scene) current_scene = new_scene +func set_scanlines(type: int) -> void: + yield(get_tree(), "idle_frame") + match type: + Options.ScanlineType.NONE: + viewport_container.material.set_shader_param("enabled", false) + Options.ScanlineType.CRT: + viewport_container.material.set_shader_param("enabled", true) + viewport_container.material.set_shader_param("scanline_opacity", Vector2(0.2, 0.0)) + viewport_container.material.set_shader_param("brightness", 1.1) + Options.ScanlineType.LCD: + viewport_container.material.set_shader_param("enabled", true) + viewport_container.material.set_shader_param("scanline_opacity", Vector2(0.2, 0.2)) + viewport_container.material.set_shader_param("brightness", 1.2) + func _ready() -> void: var tree := get_tree() # capture initial scene diff --git a/autoloads/scene_manager.tscn b/autoloads/scene_manager.tscn index b98291f..4c6aaa6 100644 --- a/autoloads/scene_manager.tscn +++ b/autoloads/scene_manager.tscn @@ -5,11 +5,11 @@ [sub_resource type="ShaderMaterial" id=1] shader = ExtResource( 2 ) -shader_param/enabled = false +shader_param/enabled = true shader_param/resolution = Vector2( 256, 192 ) shader_param/curvature = Vector2( 0, 0 ) -shader_param/scanline_opacity = Vector2( 0, 0 ) -shader_param/brightness = null +shader_param/scanline_opacity = Vector2( 0.1, 0.1 ) +shader_param/brightness = 1.0 [node name="SceneManager" type="Node"] pause_mode = 2 diff --git a/autoloads/scoreboard.gd b/autoloads/scoreboard.gd new file mode 100644 index 0000000..0b15f8c --- /dev/null +++ b/autoloads/scoreboard.gd @@ -0,0 +1,124 @@ +extends Node + + +signal _response_received + + +const CHECK_INTERVAL: float = 60.0 +const POLL_INTERVAL: float = 0.5 + + +var server_host: String = "" +var http: HTTPRequest = null +## True if there is currently a request processing. +var waiting_for_response: bool = false +## True if the last request failed and the result is not valid. +var errored: bool = false + +var _response_code: int = -1 +var _response_body: String = "" + + +class ScoreEntry: + var score: int + var time: int + var difficulty: int + + func _init(score: int, time: int, difficulty: int) -> void: + self.score = score + self.time = time + self.difficulty = difficulty + + static func from_dict(dict: Dictionary) -> ScoreEntry: + return ScoreEntry.new(dict.score, dict.time, dict.difficulty) + + +func _ready() -> void: + var file = File.new() + var result = file.open("res://scoreboard_host.txt", File.READ) + if result == OK: + server_host = file.get_line() + file.close() + + http = HTTPRequest.new() + http.download_chunk_size = 4096 + http.timeout = 30.0 + http.use_threads = OS.get_name() != "HTML5" + http.connect("request_completed", self, "_on_request_completed") + add_child(http) + +func _on_request_completed(result: int, response_code: int, headers: PoolStringArray, body: PoolByteArray) -> void: + if result != OK: + errored = true + else: + errored = false + _response_code = response_code + _response_body = body.get_string_from_utf8() + waiting_for_response = false + emit_signal("_response_received") + + +func is_name_free(player_name: String, id: int) -> bool: + if waiting_for_response: + yield(self, "_response_received") + var err = http.request(server_host + "/api/players/" + player_name) + if err != OK: + errored = true + return false + waiting_for_response = true + + yield(self, "_response_received") + if _response_code == HTTPClient.RESPONSE_NOT_FOUND or _response_body.to_int() == id: + return true + return false + + +func touch_name(player_name: String, id: int) -> void: + if waiting_for_response: + yield(self, "_response_received") + var err = http.request( + server_host + "/api/players/%s/%d" % [player_name, id], + [], true, HTTPClient.METHOD_POST + ) + if err != OK: + errored = true + return + waiting_for_response = true + + +func submit_score(level: String, entry: ScoreEntry) -> bool: + if waiting_for_response: + yield(self, "_response_received") + var err = http.request( + server_host + "/api/scores/%s/%s/%d/%d/%d" % [ + level, Options.scoreboard_name, + entry.score, entry.time, entry.difficulty + ], + [], true, HTTPClient.METHOD_POST + ) + if err != OK: + errored = true + return false + waiting_for_response = true + yield(self, "_response_received") + if errored or _response_code != HTTPClient.RESPONSE_OK: + return false + return true + + +func get_scores(level: String) -> Dictionary: + if waiting_for_response: + yield(self, "_response_received") + var err = http.request(server_host + "/api/scores/%s" % level) + if err != OK: + errored = true + return {} + waiting_for_response = true + yield(self, "_response_received") + if not errored and _response_code == HTTPClient.RESPONSE_OK: + var dict = parse_json(_response_body) + var scores = {} + for player in dict.keys(): + scores[player] = ScoreEntry.from_dict(dict[player]) + return scores + return {} diff --git a/autoloads/speedrun_timer.gd b/autoloads/speedrun_timer.gd new file mode 100644 index 0000000..5a3c4ff --- /dev/null +++ b/autoloads/speedrun_timer.gd @@ -0,0 +1,29 @@ +extends CanvasLayer + + +export var bonus_color: Color + + +var time: float = 0.0 +var timer_running: bool = false + + +onready var time_counter: Label = $Box/TimeCounter + + +func _physics_process(delta: float) -> void: + if timer_running: + time += delta + + +func _process(delta: float) -> void: + if visible: + time_counter.text = Game.format_time(time) + + if timer_running: + var map = Game.get_map() + if is_instance_valid(map): + if (Game.has_collection_bonus() && Game.time <= map.target_time_100) or (!Game.has_collection_bonus() && Game.time <= map.target_time_any): + time_counter.modulate = bonus_color + return + time_counter.modulate = Color.white diff --git a/autoloads/speedrun_timer.tscn b/autoloads/speedrun_timer.tscn new file mode 100644 index 0000000..45be8be --- /dev/null +++ b/autoloads/speedrun_timer.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://autoloads/speedrun_timer.gd" type="Script" id=1] +[ext_resource path="res://graphics/hud/hud.png" type="Texture" id=2] +[ext_resource path="res://ui/theme.tres" type="Theme" id=3] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 0, 180, 58, 12 ) + +[node name="CanvasLayer" type="CanvasLayer" groups=["viewport_autoload"]] +pause_mode = 2 +layer = 127 +visible = false +script = ExtResource( 1 ) +bonus_color = Color( 0.478431, 1, 0.47451, 1 ) + +[node name="Box" type="TextureRect" parent="."] +anchor_top = 1.0 +anchor_bottom = 1.0 +margin_top = -12.0 +margin_right = 58.0 +texture = SubResource( 1 ) + +[node name="TimeCounter" type="Label" parent="Box"] +modulate = Color( 0.478431, 1, 0.47451, 1 ) +margin_left = 1.0 +margin_top = 1.0 +margin_right = 57.0 +margin_bottom = 11.0 +theme = ExtResource( 3 ) +text = "00:00:00" diff --git a/autoloads/stain_layer.gd b/autoloads/stain_layer.gd new file mode 100644 index 0000000..5c701d9 --- /dev/null +++ b/autoloads/stain_layer.gd @@ -0,0 +1,27 @@ +extends Light2D + + +onready var viewport: Viewport = $Viewport + + +func _ready() -> void: + texture = viewport.get_texture() + + +func _process(delta: float) -> void: + var main_viewport = get_viewport() + if viewport.canvas_transform != main_viewport.canvas_transform: + viewport.canvas_transform = main_viewport.canvas_transform + transform = main_viewport.canvas_transform.inverse() + viewport.render_target_update_mode = Viewport.UPDATE_ONCE + + +func add_stain(stain: Node2D) -> void: + viewport.add_child(stain) + viewport.render_target_update_mode = Viewport.UPDATE_ONCE + + +func reset() -> void: + for child in viewport.get_children(): + child.queue_free() + viewport.render_target_update_mode = Viewport.UPDATE_ONCE diff --git a/autoloads/stain_layer.tscn b/autoloads/stain_layer.tscn new file mode 100644 index 0000000..238cbfa --- /dev/null +++ b/autoloads/stain_layer.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://autoloads/stain_layer.gd" type="Script" id=1] + +[node name="StainLight" type="Light2D" groups=["viewport_autoload"]] +offset = Vector2( 128, 96 ) +mode = 2 +range_item_cull_mask = 2 +script = ExtResource( 1 ) + +[node name="Viewport" type="Viewport" parent="."] +size = Vector2( 256, 192 ) +transparent_bg = true +disable_3d = true +usage = 1 +render_target_v_flip = true +render_target_update_mode = 1 diff --git a/credits.txt b/credits.txt index 4a6674d..66b51f7 100644 --- a/credits.txt +++ b/credits.txt @@ -1,3 +1,3 @@ Game by Penny Rigate -Music by Ivy Snyder (https://ivysnyder.newgrounds.com/) -Shaders and code help by Haze \ No newline at end of file +Music by Scarlett Sylvistrix (https://ivysnyder.newgrounds.com/) +Shaders and code help by Haze diff --git a/cutscenes/ending_future.tscn b/cutscenes/ending_future.tscn new file mode 100644 index 0000000..33e099a --- /dev/null +++ b/cutscenes/ending_future.tscn @@ -0,0 +1,204 @@ +[gd_scene load_steps=18 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://tilesets/t_grass.tres" type="TileSet" id=2] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=3] +[ext_resource path="res://shaders/color_noise.gdshader" type="Shader" id=4] +[ext_resource path="res://graphics/backgrounds/hills.png" type="Texture" id=5] +[ext_resource path="res://graphics/npc/msx_future.png" type="Texture" id=6] +[ext_resource path="res://graphics/npc/speccy_future.png" type="Texture" id=7] +[ext_resource path="res://graphics/npc/sg_future.png" type="Texture" id=8] +[ext_resource path="res://graphics/ending/picnic_table.png" type="Texture" id=9] +[ext_resource path="res://graphics/npc/sms.png" type="Texture" id=10] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=11] +[ext_resource path="res://cutscenes/intro_story.gd" type="Script" id=12] +[ext_resource path="res://graphics/ending/end.png" type="Texture" id=13] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 3 ) +shader_param/color_1 = Color( 0, 0, 0, 1 ) +shader_param/color_2 = Color( 0.486275, 0, 0, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 16, 0 ) +shader_param/cycle_speed = Vector2( 4, 4 ) +shader_param/cycle_alternation = Vector2( 4, 4 ) +shader_param/uv_transform = Transform2D( 0, 1, 1, 0, 0, 0 ) + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 192 ) ] +} + +[sub_resource type="Animation" id=3] +resource_name = "scroll" +length = 67.0 +step = 0.25 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 50, 55 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 8, 200 ), Vector2( 8, -437.742 ), Vector2( 8, -437.742 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Static:modulate") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 50 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("White:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 57.75, 58, 58.25, 58.5, 58.75, 59, 59.25, 59.5, 59.75, 60, 60.25, 60.5, 60.75, 61, 61.25, 61.5, 61.75, 62, 62.25, 62.5, 62.75 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0.95 ), Color( 1, 1, 1, 0.9 ), Color( 1, 1, 1, 0.85 ), Color( 1, 1, 1, 0.8 ), Color( 1, 1, 1, 0.75 ), Color( 1, 1, 1, 0.7 ), Color( 1, 1, 1, 0.65 ), Color( 1, 1, 1, 0.6 ), Color( 1, 1, 1, 0.55 ), Color( 1, 1, 1, 0.5 ), Color( 1, 1, 1, 0.45 ), Color( 1, 1, 1, 0.4 ), Color( 1, 1, 1, 0.35 ), Color( 1, 1, 1, 0.3 ), Color( 1, 1, 1, 0.25 ), Color( 1, 1, 1, 0.2 ), Color( 1, 1, 1, 0.15 ), Color( 1, 1, 1, 0.1 ), Color( 1, 1, 1, 0.05 ), Color( 1, 1, 1, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Label:modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.75, 50, 50.25, 50.5, 50.75, 51, 51.25, 51.5, 51.75, 52, 52.25, 52.5, 52.75, 53, 53.25, 53.5, 53.75, 54, 54.25, 54.5, 54.75, 55 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0.95 ), Color( 1, 1, 1, 0.9 ), Color( 1, 1, 1, 0.85 ), Color( 1, 1, 1, 0.8 ), Color( 1, 1, 1, 0.75 ), Color( 1, 1, 1, 0.7 ), Color( 1, 1, 1, 0.65 ), Color( 1, 1, 1, 0.6 ), Color( 1, 1, 1, 0.55 ), Color( 1, 1, 1, 0.5 ), Color( 1, 1, 1, 0.45 ), Color( 1, 1, 1, 0.4 ), Color( 1, 1, 1, 0.35 ), Color( 1, 1, 1, 0.3 ), Color( 1, 1, 1, 0.25 ), Color( 1, 1, 1, 0.2 ), Color( 1, 1, 1, 0.15 ), Color( 1, 1, 1, 0.1 ), Color( 1, 1, 1, 0.05 ), Color( 1, 1, 1, 0 ) ] +} + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 4 ) +shader_param/animate_noise = true +shader_param/noise_intensity = 6.0 +shader_param/fps = 12.0 + +[node name="IntroStory" type="Node2D"] +script = ExtResource( 12 ) +is_intro = false + +[node name="ColorRect" type="ColorRect" parent="."] +visible = false +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "scroll" +anims/RESET = SubResource( 2 ) +anims/scroll = SubResource( 3 ) + +[node name="VoiceOver" type="AudioStreamPlayer" parent="."] + +[node name="TimeskipScene" type="Node2D" parent="."] +z_index = -1 + +[node name="Sprite" type="Sprite" parent="TimeskipScene"] +position = Vector2( 128, 96 ) +z_index = -2 +texture = ExtResource( 5 ) + +[node name="TileMap" type="TileMap" parent="TimeskipScene"] +tile_set = ExtResource( 2 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 1507327, 3, 1, 1441792, 3, 2, 1441793, 3, 2, 1441794, 3, 2, 1441795, 3, 2, 1441796, 3, 2, 1441797, 3, 2, 1441798, 3, 2, 1441799, 3, 2, 1441800, 3, 2, 1441801, 3, 2, 1441802, 3, 2, 1441803, 3, 2, 1441804, 3, 2, 1441805, 3, 2, 1441806, 3, 2, 1441807, 3, 2, 1441808, 3, 2, 1441809, 3, 2, 1441810, 3, 2, 1441811, 3, 2, 1441812, 3, 2, 1441813, 3, 2, 1441814, 3, 2, 1441815, 3, 2, 1441816, 3, 2, 1441817, 3, 2, 1441818, 3, 2, 1441819, 3, 2, 1441820, 3, 2, 1441821, 3, 2, 1441822, 3, 2, 1441823, 3, 2, 1441824, 3, 3, 1572863, 3, 65537, 1507328, 3, 65538, 1507329, 3, 65538, 1507330, 3, 65538, 1507331, 3, 65538, 1507332, 3, 65538, 1507333, 3, 65538, 1507334, 3, 65538, 1507335, 3, 65538, 1507336, 3, 65538, 1507337, 3, 65538, 1507338, 3, 65538, 1507339, 3, 65538, 1507340, 3, 65538, 1507341, 3, 65538, 1507342, 3, 65538, 1507343, 3, 65538, 1507344, 3, 65538, 1507345, 3, 65538, 1507346, 3, 65538, 1507347, 3, 65538, 1507348, 3, 65538, 1507349, 3, 65538, 1507350, 3, 65538, 1507351, 3, 65538, 1507352, 3, 65538, 1507353, 3, 65538, 1507354, 3, 65538, 1507355, 3, 65538, 1507356, 3, 65538, 1507357, 3, 65538, 1507358, 3, 65538, 1507359, 3, 65538, 1507360, 3, 65539, 1638399, 3, 131073, 1572864, 3, 131074, 1572865, 3, 131074, 1572866, 3, 131074, 1572867, 3, 131074, 1572868, 3, 131074, 1572869, 3, 131074, 1572870, 3, 131074, 1572871, 3, 131074, 1572872, 3, 131074, 1572873, 3, 131074, 1572874, 3, 131074, 1572875, 3, 131074, 1572876, 3, 131074, 1572877, 3, 131074, 1572878, 3, 131074, 1572879, 3, 131074, 1572880, 3, 131074, 1572881, 3, 131074, 1572882, 3, 131074, 1572883, 3, 131074, 1572884, 3, 131074, 1572885, 3, 131074, 1572886, 3, 131074, 1572887, 3, 131074, 1572888, 3, 131074, 1572889, 3, 131074, 1572890, 3, 131074, 1572891, 3, 131074, 1572892, 3, 131074, 1572893, 3, 131074, 1572894, 3, 131074, 1572895, 3, 131074, 1572896, 3, 131075 ) + +[node name="SgFuture" type="Sprite" parent="TimeskipScene"] +position = Vector2( 96, 166 ) +texture = ExtResource( 8 ) + +[node name="MsxFuture" type="Sprite" parent="TimeskipScene"] +position = Vector2( 161, 166 ) +scale = Vector2( -1, 1 ) +texture = ExtResource( 6 ) + +[node name="SpeccyFuture" type="Sprite" parent="TimeskipScene"] +position = Vector2( 176, 164 ) +scale = Vector2( -1, 1 ) +texture = ExtResource( 7 ) + +[node name="Sms" type="Sprite" parent="TimeskipScene"] +position = Vector2( 80, 164 ) +texture = ExtResource( 10 ) + +[node name="PicnicTable" type="Sprite" parent="TimeskipScene"] +position = Vector2( 128, 167 ) +texture = ExtResource( 9 ) + +[node name="Sprite2" type="Sprite" parent="."] +position = Vector2( 128, 96 ) +texture = ExtResource( 13 ) + +[node name="White" type="ColorRect" parent="."] +margin_right = 256.0 +margin_bottom = 192.0 +color = Color( 1, 0.952941, 0.933333, 1 ) + +[node name="Static" type="ColorRect" parent="."] +material = SubResource( 4 ) +margin_right = 256.0 +margin_bottom = 192.0 +color = Color( 0.662745, 0.8, 0.996078, 1 ) + +[node name="Label" type="Label" parent="."] +material = ExtResource( 11 ) +margin_left = 8.0 +margin_top = 192.0 +margin_right = 248.0 +margin_bottom = 1294.0 +theme = ExtResource( 1 ) +text = "With Fami and all of the other corruptive forces of the world taken out, a new future is born. + +The Shards had +turned Fami into Super Famira, one of the most powerful beings in the entire universe, a monster only bested by SG's +heroic courage. + +SG and Speccy realized that kind of power should not be able to rest in the hands of anyone. +The heroes plan to collect the shards again next year to find a way to get rid of them forever. + +The freedom fighters plan to create a new future in the ashes of old virginia. +A world that doesn't revolve around money and power, +where everyone works together to the best of their ability to support each other and share resources. +It will take a lot of work to create this future, and it will take a lot of work to keep it running. + + + + + +Congratulations! +You are a super player!! +The future is bright thanks to you!!! +Rest well until the time comes again!!!! + + +" +align = 1 +autowrap = true + +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] diff --git a/cutscenes/ending_present.tscn b/cutscenes/ending_present.tscn new file mode 100644 index 0000000..f980956 --- /dev/null +++ b/cutscenes/ending_present.tscn @@ -0,0 +1,92 @@ +[gd_scene load_steps=9 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=2] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=3] +[ext_resource path="res://audio/sounds/intro_voiceover.ogg" type="AudioStream" id=4] +[ext_resource path="res://cutscenes/intro_story.gd" type="Script" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 3 ) +shader_param/color_1 = Color( 0, 0, 0, 1 ) +shader_param/color_2 = Color( 0.486275, 0, 0, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 16, 0 ) +shader_param/cycle_speed = Vector2( 4, 4 ) +shader_param/cycle_alternation = Vector2( 4, 4 ) +shader_param/uv_transform = Transform2D( 0, 1, 1, 0, 0, 0 ) + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 192 ) ] +} + +[sub_resource type="Animation" id=3] +resource_name = "scroll" +length = 80.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 80 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 8, 182 ), Vector2( 8, -528 ) ] +} + +[node name="IntroStory" type="Node2D"] +script = ExtResource( 5 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="Label" type="Label" parent="."] +material = ExtResource( 2 ) +margin_left = 8.0 +margin_top = 192.0 +margin_right = 248.0 +margin_bottom = 722.0 +theme = ExtResource( 1 ) +text = "And so with Fami and all the other corruptive forces of the world taken out, a new future is born. + +The Shards had +turned Fami into Famira, one of the most powerful beings in the entire universe, a monster only bested by SG's +heroic courage. + +SG and the other freedom fighters realized that kind of power should not be able to rest in the hands of anyone, +and so a year later, the heroes collected the shards again and sent them to planet x, never to be found again. + +SG and their friends plan to create a utopia where everyone shares resources and works together to support each other, a future without +coercive hierarchies or money. + + It will take a lot of work for this plan to come to fruition but it's easier now but with +the capitalist order dismantled. It'll take the work of many people not only to establish this utopia, but to keep it alive. + +It's thanks to everyone that the world is saved, not only SG, but their friends as well, and you, the player!" +align = 1 +autowrap = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "scroll" +anims/RESET = SubResource( 2 ) +anims/scroll = SubResource( 3 ) + +[node name="VoiceOver" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 4 ) + +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] diff --git a/cutscenes/fami_cutscene.gd b/cutscenes/fami_cutscene.gd new file mode 100644 index 0000000..fb18afb --- /dev/null +++ b/cutscenes/fami_cutscene.gd @@ -0,0 +1,59 @@ +extends Node2D + +signal cutscene_finished + +const DeathParticles = preload("res://objects/enemy/death_particles.tscn") + +export var cutscene_skip: float = 78.5 + +onready var animation_player: AnimationPlayer = $AnimationPlayer + +func _init() -> void: + connect("cutscene_finished", self, "_on_cutscene_finished") + Game.can_restart = false + +func _on_cutscene_finished() -> void: + Audio.play_sound(Audio.a_fami_transform,Audio.ac_voice) + +func _physics_process(delta: float) -> void: + if animation_player.current_animation_position < cutscene_skip: + Game.can_pause = false + +func _input(event: InputEvent) -> void: + if event.is_action_pressed("jump") and animation_player.current_animation_position < (cutscene_skip - Options.transition_speed_secs * 2.0): + skip_cutscene() + if event.is_action_pressed("debug_2"): + animation_player.seek(60) + +func skip_cutscene() -> void: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + animation_player.seek(cutscene_skip) + $Label.rect_position.y = -99999 # stupid 1.1 stuff + Fade.fade_in(Options.transition_speed_secs) + +func kill_cop() -> void: + var splatter := DeathParticles.instance() + splatter.global_position = $Cop.global_position + splatter.emitting = true + Audio.play_sound(Audio.a_copsquash,Audio.ac_land) + Audio.play_sound(Audio.a_copsquash2,Audio.ac_voice) + add_child(splatter) + $Cop.queue_free() + +func stop_music(): + Audio.ac_music.playing = false + +func play_rumble_intro(): + Audio.play_music(load("res://audio/music/rumble_revolution_intro.ogg")) + +func _notification(what: int) -> void: + match what: + NOTIFICATION_WM_FOCUS_OUT: + animation_player.playback_active = false + $FamiVoice.stream_paused = true + Audio.ac_music.stream_paused = true + NOTIFICATION_WM_FOCUS_IN: + animation_player.playback_active = true + $FamiVoice.stream_paused = false + Audio.ac_music.stream_paused = false diff --git a/cutscenes/fami_cutscene.tscn b/cutscenes/fami_cutscene.tscn new file mode 100644 index 0000000..14034bf --- /dev/null +++ b/cutscenes/fami_cutscene.tscn @@ -0,0 +1,812 @@ +[gd_scene load_steps=47 format=2] + +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=2] +[ext_resource path="res://ui/theme.tres" type="Theme" id=3] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=4] +[ext_resource path="res://scripts/sg_palette.gd" type="Script" id=5] +[ext_resource path="res://graphics/player/sg.png" type="Texture" id=6] +[ext_resource path="res://tilesets/t_station.tres" type="TileSet" id=7] +[ext_resource path="res://tilesets/t_laboratory.tres" type="TileSet" id=8] +[ext_resource path="res://graphics/npc/fami_human.png" type="Texture" id=9] +[ext_resource path="res://cutscenes/fami_cutscene.gd" type="Script" id=10] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=12] +[ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=13] +[ext_resource path="res://graphics/enemy/cop/scope_walk.png" type="Texture" id=14] +[ext_resource path="res://graphics/enemy/cop/scope_shoot.png" type="Texture" id=15] +[ext_resource path="res://graphics/npc/fami_human_walk.png" type="Texture" id=16] +[ext_resource path="res://graphics/npc/fami_human_punch.png" type="Texture" id=17] +[ext_resource path="res://graphics/npc/fami_human_transform.png" type="Texture" id=18] +[ext_resource path="res://objects/enemy/boss/fami_transform.material" type="Material" id=19] +[ext_resource path="res://audio/sounds/absorb_shard.ogg" type="AudioStream" id=20] +[ext_resource path="res://audio/sounds/shard_expel.ogg" type="AudioStream" id=21] +[ext_resource path="res://audio/sounds/shard_float.ogg" type="AudioStream" id=22] +[ext_resource path="res://audio/sounds/gun_cock.ogg" type="AudioStream" id=23] + +[sub_resource type="AtlasTexture" id=17] +atlas = ExtResource( 18 ) +region = Rect2( 42, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=18] +atlas = ExtResource( 18 ) +region = Rect2( 56, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=19] +atlas = ExtResource( 18 ) +region = Rect2( 70, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=20] +atlas = ExtResource( 18 ) +region = Rect2( 0, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=21] +atlas = ExtResource( 18 ) +region = Rect2( 14, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=22] +atlas = ExtResource( 18 ) +region = Rect2( 28, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 16 ) +region = Rect2( 0, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 16 ) +region = Rect2( 14, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=5] +atlas = ExtResource( 16 ) +region = Rect2( 28, 0, 14, 24 ) + +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 16 ) +region = Rect2( 42, 0, 14, 24 ) + +[sub_resource type="SpriteFrames" id=7] +animations = [ { +"frames": [ ExtResource( 9 ) ], +"loop": true, +"name": "idle", +"speed": 5.0 +}, { +"frames": [ SubResource( 17 ), SubResource( 18 ), SubResource( 19 ) ], +"loop": true, +"name": "orb", +"speed": 8.0 +}, { +"frames": [ ExtResource( 17 ) ], +"loop": true, +"name": "punch", +"speed": 5.0 +}, { +"frames": [ SubResource( 20 ), SubResource( 21 ), SubResource( 22 ) ], +"loop": false, +"name": "shrink", +"speed": 8.0 +}, { +"frames": [ SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ) ], +"loop": true, +"name": "walk", +"speed": 5.0 +} ] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true +shader_param/palette = ExtResource( 2 ) + +[sub_resource type="Animation" id=16] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ShardRain:emitting") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ShardParticles:emitting") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("FamiVoice:playing") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("FamiHuman:material:shader_param/background_color") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("FamiHuman:material:shader_param/arc_color") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Label:text") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "" ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("FamiHuman:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 160, 167 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("SgIdle:frame_coords") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("SgIdle:flip_h") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("FamiHuman:animation") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "idle" ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Cop:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -8, 169 ) ] +} + +[sub_resource type="Animation" id=2] +resource_name = "cutscene" +length = 100.0 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:text") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = false +tracks/0/keys = { +"times": PoolRealArray( 0, 4.5, 9.5, 13.5, 18.5, 22.5, 26.5, 30.5, 34.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 2, +"values": [ "So you've made it this far... too bad your efforts are all in vain.", "You see, SG, +I plan to use the shards to power my spaceship, its exhaust will be so powerful, you peasants will all be vaporized. ", "Me and all of the wonderful billionaires of the world will head to planet X, the newly discovered planet beyond pluto.", "You plan to hijack my wonderful future, eh? Whaddya kids call it? A revolution?", "Ha! I already started my own revolution in 2068.", "You know what they say, the freer the market, the freer the people! Ever since then, I never felt so free!", "You're such a fool. The perfect tool for the reconstruction of the Zircon Ultima.", "While you've been on your gay little adventure collecting shards I've been waiting for this very moment to take them all from you!", "Have at you!!!" ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("FamiVoice:playing") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0.25, 96 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Cop:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.25, 76.5, 78 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -8, 169 ), Vector2( -8, 169 ), Vector2( 72, 169 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Cop:animation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 76.5, 78 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ "gun", "walk", "gun" ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("FamiHuman:animation") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0.25, 79, 81, 81.5, 87, 89, 93, 93.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ "idle", "walk", "idle", "punch", "walk", "idle", "shrink", "orb" ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("FamiHuman:position") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0.25, 79, 81, 87, 89, 93, 95, 96 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 160, 167 ), Vector2( 160, 167 ), Vector2( 105, 167 ), Vector2( 105, 167 ), Vector2( 160, 167 ), Vector2( 160, 167 ), Vector2( 160, 167 ), Vector2( 160, 83 ) ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("ShardParticles:emitting") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0.5, 82.8, 88 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("ShardRain:emitting") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0.25, 90, 93 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("FamiHuman:material:shader_param/background_color") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0.25, 92, 93 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ), Color( 0.396078, 1, 1, 0 ), Color( 0.396078, 1, 1, 1 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("FamiHuman:material:shader_param/arc_color") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0.25, 92, 93 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ), Color( 0.345098, 0.74902, 0.878431, 0 ), Color( 0.345098, 0.74902, 0.878431, 1 ) ] +} +tracks/10/type = "method" +tracks/10/path = NodePath(".") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 96 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "cutscene_finished" ], +"method": "emit_signal" +} ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("ShardAbsorb:playing") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 90 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("ShardExpel:playing") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 82.8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("ShardFloat:playing") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 93.8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("SgIdle:frame_coords") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 2.6, 2.7, 2.8, 8, 8.1, 8.2, 12.4, 12.5, 13, 17.1092, 17.2092, 18.3092, 22.25, 24.25, 30.25, 30.5, 32.5, 40.25, 40.75, 41.25, 41.5, 48, 48.75, 49.25, 49.75, 50.25, 51, 51.5, 52, 52.5, 53.25, 53.75, 54.25, 54.75, 55.5, 56, 56.5, 57, 57.75, 58.25, 58.75, 60.75, 61.5, 62, 62.5, 63, 63.75, 64.25, 64.75, 65.25, 66, 66.5, 67, 67.5, 68.25, 68.75, 69.25, 69.75, 70.5, 71, 71.5, 72.25, 73, 73.5, 74, 74.5, 78, 78.15, 78.3, 78.45, 89.8, 90, 90.2, 90.3, 90.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03526, 1, 1, 1.03526, 1, 1.03526, 1, 1.03526, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 0 ), Vector2( 0, 19 ), Vector2( 0, 19 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 1, 12 ), Vector2( 0, 19 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 1, 18 ), Vector2( 2, 18 ), Vector2( 3, 18 ), Vector2( 0, 18 ), Vector2( 0, 17 ), Vector2( 0, 0 ), Vector2( 0, 16 ), Vector2( 0, 17 ), Vector2( 1, 12 ), Vector2( 0, 12 ), Vector2( 0, 12 ), Vector2( 0, 16 ), Vector2( 0, 0 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("SgIdle:flip_h") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 50.75, 78.45, 90.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ false, false, true, false ] +} +tracks/16/type = "method" +tracks/16/path = NodePath(".") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 81.5, 82.8 ), +"transitions": PoolRealArray( 1, 1 ), +"values": [ { +"args": [ ], +"method": "stop_music" +}, { +"args": [ ], +"method": "play_rumble_intro" +} ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("GunCock:playing") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( -0.1, 78 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Label:percent_visible") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = false +tracks/18/keys = { +"times": PoolRealArray( 0, 3, 4, 4.5, 8, 9, 9.5, 12, 13, 13.5, 17, 18, 18.5, 21, 22, 22.5, 25, 26, 26.5, 29, 30, 30.5, 33, 34, 34.5, 37 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0 ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Label:visible") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = false +tracks/19/keys = { +"times": PoolRealArray( 0, 4, 4.5, 9, 9.5, 13, 13.5, 18, 18.5, 22, 22.5, 26, 26.5, 30, 30.5, 34, 34.5, 39 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false ] +} + +[sub_resource type="Animation" id=27] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ShardRain:emitting") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ShardParticles:emitting") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("FamiVoice:playing") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("FamiHuman:material:shader_param/background_color") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("FamiHuman:material:shader_param/arc_color") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Label:text") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "" ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("FamiHuman:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 160, 167 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("SgIdle:frame_coords") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("SgIdle:flip_h") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("FamiHuman:animation") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "idle" ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Cop:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -8, 169 ) ] +} + +[sub_resource type="Animation" id=28] +resource_name = "cutscene" +length = 93.0 +step = 0.25 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:text") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 4.5, 9.5, 13.5, 18.5, 22.5, 26.5, 30.5, 34.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 2, +"values": [ "So you've made it this far... too bad your efforts are all in vain.", "You see, SG, +I plan to use the shards to power my spaceship, its exhaust will be so powerful, you peasants will all be vaporized. ", "Me and all of the wonderful billionaires of the world will head to planet X, the newly discovered planet beyond pluto.", "You plan to hijack my wonderful future, eh? Whaddya kids call it? A revolution?", "Ha! I already started my own revolution in 2068.", "You know what they say, the freer the market, the freer the people! Ever since then, I never felt so free!", "You're such a fool. The perfect tool for the reconstruction of the Zircon Ultima.", "While you've been on your gay little adventure collecting shards, I've been waiting for this very moment to take them all from you!", "Have at you!!!" ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Label:percent_visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 3, 4, 4.5, 8, 9, 9.5, 12, 13, 13.5, 17, 18, 18.5, 21, 22, 22.5, 25, 26, 26.5, 29, 30, 30.5, 33, 34, 34.5, 35.25 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Label:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 4, 4.5, 9, 9.5, 13, 13.5, 18, 18.5, 22, 22.5, 26, 26.5, 30, 30.5, 34, 34.5, 37 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false, true, false ] +} + +[sub_resource type="ShaderMaterial" id=8] +shader = ExtResource( 12 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=23] +atlas = ExtResource( 14 ) +region = Rect2( 0, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=24] +atlas = ExtResource( 14 ) +region = Rect2( 20, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=25] +atlas = ExtResource( 14 ) +region = Rect2( 40, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=26] +atlas = ExtResource( 14 ) +region = Rect2( 60, 0, 20, 21 ) + +[sub_resource type="SpriteFrames" id=13] +animations = [ { +"frames": [ ExtResource( 15 ) ], +"loop": true, +"name": "gun", +"speed": 5.0 +}, { +"frames": [ SubResource( 23 ), SubResource( 24 ), SubResource( 25 ), SubResource( 26 ) ], +"loop": true, +"name": "walk", +"speed": 10.0 +} ] + +[sub_resource type="ShaderMaterial" id=14] +shader = ExtResource( 12 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="ShaderMaterial" id=15] +shader = ExtResource( 12 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[node name="FamiCutscene" type="Node2D"] +script = ExtResource( 10 ) +cutscene_skip = 78.75 + +[node name="TileMap" type="TileMap" parent="."] +tile_set = ExtResource( 7 ) +cell_size = Vector2( 8, 8 ) +format = 1 + +[node name="TileMap" type="TileMap" parent="TileMap"] +tile_set = ExtResource( 8 ) +cell_size = Vector2( 8, 8 ) +format = 1 + +[node name="Label" type="Label" parent="."] +material = ExtResource( 4 ) +margin_left = 16.0 +margin_top = 48.0 +margin_right = 240.0 +margin_bottom = 136.0 +theme = ExtResource( 3 ) +align = 1 +valign = 1 +autowrap = true +percent_visible = 0.0 + +[node name="FamiHuman" type="AnimatedSprite" parent="."] +material = ExtResource( 19 ) +position = Vector2( 160, 167 ) +rotation = 3.14159 +scale = Vector2( 1, -1 ) +frames = SubResource( 7 ) +animation = "idle" +playing = true + +[node name="SgIdle" type="Sprite" parent="."] +material = SubResource( 1 ) +position = Vector2( 97, 163 ) +texture = ExtResource( 6 ) +hframes = 8 +vframes = 20 +script = ExtResource( 5 ) + +[node name="FamiVoice" type="AudioStreamPlayer" parent="."] + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "cutscene" +playback_process_mode = 0 +anims/RESET = SubResource( 16 ) +anims/cutscene = SubResource( 2 ) + +[node name="labelanim" type="AnimationPlayer" parent="."] +autoplay = "cutscene" +playback_process_mode = 0 +playback_speed = 0.5 +anims/RESET = SubResource( 27 ) +anims/cutscene = SubResource( 28 ) + +[node name="Cop" type="AnimatedSprite" parent="."] +material = SubResource( 8 ) +position = Vector2( -8, 169 ) +frames = SubResource( 13 ) +animation = "gun" +playing = true + +[node name="ShardParticles" type="CPUParticles2D" parent="."] +material = SubResource( 14 ) +position = Vector2( 97, 160 ) +emitting = false +amount = 72 +lifetime = 2.5 +texture = ExtResource( 13 ) +direction = Vector2( 0, -2 ) +gravity = Vector2( 0, 42 ) +initial_velocity = 250.0 +initial_velocity_random = 0.35 +linear_accel = -30.19 + +[node name="ShardRain" type="CPUParticles2D" parent="."] +material = SubResource( 15 ) +position = Vector2( 163, -4 ) +emitting = false +amount = 72 +lifetime = 2.0 +texture = ExtResource( 13 ) +direction = Vector2( 0, 1 ) +initial_velocity = 18.0 +angular_velocity = 2.5 + +[node name="ShardAbsorb" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 20 ) +volume_db = -10.0 + +[node name="ShardFloat" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 22 ) +volume_db = -10.0 + +[node name="ShardExpel" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 21 ) +volume_db = -10.0 + +[node name="GunCock" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 23 ) +volume_db = -10.0 diff --git a/cutscenes/intro_story.gd b/cutscenes/intro_story.gd new file mode 100644 index 0000000..c9b9c8c --- /dev/null +++ b/cutscenes/intro_story.gd @@ -0,0 +1,41 @@ +extends Node2D + +export var is_intro = true + +func _ready(): + Fade.fade_in(Options.transition_speed_secs) + yield(Fade, "fade_finished") + Audio.ac_music.set_volume_db(-13.5) + if is_intro: + Audio.play_music(load("res://audio/music/intro.ogg")) + else: + Audio.play_music(load("res://audio/music/empty_motel.ogg")) + $VoiceOver.play() + +func _input(event): + if Input.is_action_just_pressed("ui_accept") && is_intro: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + if is_intro: + SceneManager.current_scene = load("res://menus/level_select_scholar.tscn").instance() + else: + SceneManager.current_scene = load("res://menus/credits.tscn").instance() + +func _notification(what: int) -> void: + match what: + NOTIFICATION_WM_FOCUS_OUT: + $AnimationPlayer.playback_active = false + $VoiceOver.stream_paused = true + Audio.ac_music.stream_paused = true + NOTIFICATION_WM_FOCUS_IN: + $AnimationPlayer.playback_active = true + $VoiceOver.stream_paused = false + Audio.ac_music.stream_paused = false + +func _on_AnimationPlayer_animation_finished(anim_name): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + if is_intro: + SceneManager.current_scene = load("res://menus/level_select_scholar.tscn").instance() + else: + SceneManager.current_scene = load("res://menus/credits.tscn").instance() diff --git a/cutscenes/intro_story.tscn b/cutscenes/intro_story.tscn new file mode 100644 index 0000000..d1826f3 --- /dev/null +++ b/cutscenes/intro_story.tscn @@ -0,0 +1,88 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=2] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=3] +[ext_resource path="res://cutscenes/intro_story.gd" type="Script" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 3 ) +shader_param/color_1 = Color( 0, 0, 0, 1 ) +shader_param/color_2 = Color( 0.1188, 0.1188, 0.22, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 16, 0 ) +shader_param/cycle_speed = Vector2( 4, 4 ) +shader_param/cycle_alternation = Vector2( 4, 4 ) +shader_param/uv_transform = Transform2D( 0, 1, 1, 0, 0, 0 ) + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 192 ) ] +} + +[sub_resource type="Animation" id=3] +resource_name = "scroll" +length = 80.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 80 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 8, 198 ), Vector2( 8, -600 ) ] +} + +[node name="IntroStory" type="Node2D"] +script = ExtResource( 5 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="Label" type="Label" parent="."] +material = ExtResource( 2 ) +margin_left = 8.0 +margin_top = 192.0 +margin_right = 248.0 +margin_bottom = 800.0 +theme = ExtResource( 1 ) +text = "The Year is 2083. +All hope seems lost. + +What's left of America has become a horrible autocracy. A man named Fami has complete control over the government, and owns most companies in America, at a time where business is more important than it's ever been. + +Fami achieved his authority through the use of monstrous chimeras - creatures made from a combination of biological materials and AI cores known as \"artificial souls\". + +The technology responsible for such machines was developed by an egotistical man named Dr. Intelli. Intelli had given up on humanity long ago, he now wishes for the world to be run by machines. + + Intelli also developed a space laser that can be powered by the shards of zircon ultima, a gem that can grant unlimited power. Fami used the laser to horribly alter the world, which scattered the shards across Virginia. Fami plans to use the shards again. the future looks bleak. + +SG, an assembly line worker at one of Intelli's factories, is fed up with their endless toil. +After learning of Fami's plan from their best friend Speccy, they realize they need to take matters into their own hands. SG vows to change the future, they have made it their mission to keep the shards from Fami as well as bring an end to his reign. +" +align = 1 +autowrap = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "scroll" +anims/RESET = SubResource( 2 ) +anims/scroll = SubResource( 3 ) + +[node name="VoiceOver" type="AudioStreamPlayer" parent="."] + +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] diff --git a/default_bus_layout.tres b/default_bus_layout.tres index a252150..0588eaf 100644 --- a/default_bus_layout.tres +++ b/default_bus_layout.tres @@ -1,12 +1,29 @@ -[gd_resource type="AudioBusLayout" format=2] +[gd_resource type="AudioBusLayout" load_steps=4 format=2] + +[sub_resource type="AudioEffectLowPassFilter" id=2] +resource_name = "LowPassFilter" +cutoff_hz = 1000.0 + +[sub_resource type="AudioEffectReverb" id=3] +resource_name = "Reverb" +room_size = 0.11 + +[sub_resource type="AudioEffectChorus" id=4] +resource_name = "Chorus" [resource] +bus/0/effect/0/effect = SubResource( 2 ) +bus/0/effect/0/enabled = false +bus/0/effect/1/effect = SubResource( 3 ) +bus/0/effect/1/enabled = false bus/1/name = "music" bus/1/solo = false bus/1/mute = false bus/1/bypass_fx = false bus/1/volume_db = 0.0 bus/1/send = "Master" +bus/1/effect/0/effect = SubResource( 4 ) +bus/1/effect/0/enabled = false bus/2/name = "sound" bus/2/solo = false bus/2/mute = false diff --git a/export_presets.cfg b/export_presets.cfg index 330e92f..168510f 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -5,9 +5,9 @@ platform="Windows Desktop" runnable=true custom_features="" export_filter="all_resources" -include_filter="" +include_filter="scoreboard_host.txt" exclude_filter="" -export_path="build/windows/Hero Mark 2.exe" +export_path="build/windows/Revolution 2083.exe" script_export_mode=1 script_encryption_key="" @@ -16,7 +16,7 @@ script_encryption_key="" custom_template/debug="" custom_template/release="" binary_format/64_bits=true -binary_format/embed_pck=true +binary_format/embed_pck=false texture_format/bptc=false texture_format/s3tc=true texture_format/etc=false @@ -31,14 +31,15 @@ codesign/timestamp_server_url="" codesign/digest_algorithm=1 codesign/description="" codesign/custom_options=PoolStringArray( ) -application/modify_resources=false -application/icon="" -application/file_version="" -application/product_version="" -application/company_name="" -application/product_name="" -application/file_description="" -application/copyright="" +application/modify_resources=true +application/icon="res://icon.ico" +application/icon_interpolation=0 +application/file_version="1.1.0.0" +application/product_version="1.1.0.0" +application/company_name="Team SG" +application/product_name="Revolution 2083" +application/file_description="Change the future!" +application/copyright="Team SG" application/trademarks="" [preset.1] @@ -48,9 +49,9 @@ platform="Linux/X11" runnable=true custom_features="" export_filter="all_resources" -include_filter="" +include_filter="scoreboard_host.txt" exclude_filter="" -export_path="build/linux/Hero Mark 2.x86_64" +export_path="build/linux/Revolution 2083.x86_64" script_export_mode=1 script_encryption_key="" @@ -58,8 +59,8 @@ script_encryption_key="" custom_template/debug="" custom_template/release="" -binary_format/64_bits=true -binary_format/embed_pck=true +binary_format/architecture="x86_64" +binary_format/embed_pck=false texture_format/bptc=false texture_format/s3tc=true texture_format/etc=false @@ -73,7 +74,7 @@ platform="HTML5" runnable=true custom_features="" export_filter="all_resources" -include_filter="" +include_filter="scoreboard_host.txt" exclude_filter="" export_path="build/html5/index.html" script_export_mode=1 @@ -103,206 +104,87 @@ progressive_web_app/background_color=Color( 0, 0, 0, 1 ) [preset.3] -name="android" -platform="Android" +name="Mac OSX" +platform="Mac OSX" runnable=true custom_features="" export_filter="all_resources" include_filter="" exclude_filter="" -export_path="build/android/hero-mark-2.apk" +export_path="build/macos/Revolution 2083.zip" script_export_mode=1 script_encryption_key="" [preset.3.options] +export/distribution_type=1 custom_template/debug="" custom_template/release="" -custom_build/use_custom_build=false -custom_build/export_format=0 -custom_build/min_sdk="" -custom_build/target_sdk="" -architectures/armeabi-v7a=true -architectures/arm64-v8a=true -architectures/x86=false -architectures/x86_64=false -keystore/debug="" -keystore/debug_user="" -keystore/debug_password="" -keystore/release="" -keystore/release_user="" -keystore/release_password="" -one_click_deploy/clear_previous_install=true -version/code=1 -version/name="1.0" -package/unique_name="org.godotengine.$genname" -package/name="" -package/signed=true -package/classify_as_game=true -package/retain_data_on_uninstall=false -package/exclude_from_recents=false -launcher_icons/main_192x192="" -launcher_icons/adaptive_foreground_432x432="" -launcher_icons/adaptive_background_432x432="" -graphics/opengl_debug=false -xr_features/xr_mode=0 -xr_features/hand_tracking=0 -xr_features/hand_tracking_frequency=0 -xr_features/passthrough=0 -screen/immersive_mode=true -screen/support_small=true -screen/support_normal=true -screen/support_large=true -screen/support_xlarge=true -user_data_backup/allow=false -command_line/extra_args="" -apk_expansion/enable=false -apk_expansion/SALT="" -apk_expansion/public_key="" -permissions/custom_permissions=PoolStringArray( ) -permissions/access_checkin_properties=false -permissions/access_coarse_location=false -permissions/access_fine_location=false -permissions/access_location_extra_commands=false -permissions/access_mock_location=false -permissions/access_network_state=false -permissions/access_surface_flinger=false -permissions/access_wifi_state=false -permissions/account_manager=false -permissions/add_voicemail=false -permissions/authenticate_accounts=false -permissions/battery_stats=false -permissions/bind_accessibility_service=false -permissions/bind_appwidget=false -permissions/bind_device_admin=false -permissions/bind_input_method=false -permissions/bind_nfc_service=false -permissions/bind_notification_listener_service=false -permissions/bind_print_service=false -permissions/bind_remoteviews=false -permissions/bind_text_service=false -permissions/bind_vpn_service=false -permissions/bind_wallpaper=false -permissions/bluetooth=false -permissions/bluetooth_admin=false -permissions/bluetooth_privileged=false -permissions/brick=false -permissions/broadcast_package_removed=false -permissions/broadcast_sms=false -permissions/broadcast_sticky=false -permissions/broadcast_wap_push=false -permissions/call_phone=false -permissions/call_privileged=false -permissions/camera=false -permissions/capture_audio_output=false -permissions/capture_secure_video_output=false -permissions/capture_video_output=false -permissions/change_component_enabled_state=false -permissions/change_configuration=false -permissions/change_network_state=false -permissions/change_wifi_multicast_state=false -permissions/change_wifi_state=false -permissions/clear_app_cache=false -permissions/clear_app_user_data=false -permissions/control_location_updates=false -permissions/delete_cache_files=false -permissions/delete_packages=false -permissions/device_power=false -permissions/diagnostic=false -permissions/disable_keyguard=false -permissions/dump=false -permissions/expand_status_bar=false -permissions/factory_test=false -permissions/flashlight=false -permissions/force_back=false -permissions/get_accounts=false -permissions/get_package_size=false -permissions/get_tasks=false -permissions/get_top_activity_info=false -permissions/global_search=false -permissions/hardware_test=false -permissions/inject_events=false -permissions/install_location_provider=false -permissions/install_packages=false -permissions/install_shortcut=false -permissions/internal_system_window=false -permissions/internet=false -permissions/kill_background_processes=false -permissions/location_hardware=false -permissions/manage_accounts=false -permissions/manage_app_tokens=false -permissions/manage_documents=false -permissions/manage_external_storage=false -permissions/master_clear=false -permissions/media_content_control=false -permissions/modify_audio_settings=false -permissions/modify_phone_state=false -permissions/mount_format_filesystems=false -permissions/mount_unmount_filesystems=false -permissions/nfc=false -permissions/persistent_activity=false -permissions/process_outgoing_calls=false -permissions/read_calendar=false -permissions/read_call_log=false -permissions/read_contacts=false -permissions/read_external_storage=false -permissions/read_frame_buffer=false -permissions/read_history_bookmarks=false -permissions/read_input_state=false -permissions/read_logs=false -permissions/read_phone_state=false -permissions/read_profile=false -permissions/read_sms=false -permissions/read_social_stream=false -permissions/read_sync_settings=false -permissions/read_sync_stats=false -permissions/read_user_dictionary=false -permissions/reboot=false -permissions/receive_boot_completed=false -permissions/receive_mms=false -permissions/receive_sms=false -permissions/receive_wap_push=false -permissions/record_audio=false -permissions/reorder_tasks=false -permissions/restart_packages=false -permissions/send_respond_via_message=false -permissions/send_sms=false -permissions/set_activity_watcher=false -permissions/set_alarm=false -permissions/set_always_finish=false -permissions/set_animation_scale=false -permissions/set_debug_app=false -permissions/set_orientation=false -permissions/set_pointer_speed=false -permissions/set_preferred_applications=false -permissions/set_process_limit=false -permissions/set_time=false -permissions/set_time_zone=false -permissions/set_wallpaper=false -permissions/set_wallpaper_hints=false -permissions/signal_persistent_processes=false -permissions/status_bar=false -permissions/subscribed_feeds_read=false -permissions/subscribed_feeds_write=false -permissions/system_alert_window=false -permissions/transmit_ir=false -permissions/uninstall_shortcut=false -permissions/update_device_stats=false -permissions/use_credentials=false -permissions/use_sip=false -permissions/vibrate=false -permissions/wake_lock=false -permissions/write_apn_settings=false -permissions/write_calendar=false -permissions/write_call_log=false -permissions/write_contacts=false -permissions/write_external_storage=false -permissions/write_gservices=false -permissions/write_history_bookmarks=false -permissions/write_profile=false -permissions/write_secure_settings=false -permissions/write_settings=false -permissions/write_sms=false -permissions/write_social_stream=false -permissions/write_sync_settings=false -permissions/write_user_dictionary=false +application/name="Revolution 2083" +application/icon="res://icon.png" +application/icon_interpolation=4 +application/identifier="club.teamsg.hero-mark-2" +application/signature="" +application/app_category="Arcade-games" +application/short_version="1.0" +application/version="1.0" +application/copyright="" +application/min_macos_version="10.12" +display/high_res=false +xcode/platform_build="14C18" +xcode/sdk_version="13.1" +xcode/sdk_build="22C55" +xcode/sdk_name="macosx13.1" +xcode/xcode_version="1420" +xcode/xcode_build="14C18" +codesign/codesign=1 +codesign/installer_identity="" +codesign/apple_team_id="" +codesign/identity="" +codesign/certificate_file="" +codesign/certificate_password="" +codesign/provisioning_profile="" +codesign/entitlements/custom_file="" +codesign/entitlements/allow_jit_code_execution=false +codesign/entitlements/allow_unsigned_executable_memory=false +codesign/entitlements/allow_dyld_environment_variables=false +codesign/entitlements/disable_library_validation=false +codesign/entitlements/audio_input=false +codesign/entitlements/camera=false +codesign/entitlements/location=false +codesign/entitlements/address_book=false +codesign/entitlements/calendars=false +codesign/entitlements/photos_library=false +codesign/entitlements/apple_events=false +codesign/entitlements/debugging=false +codesign/entitlements/app_sandbox/enabled=false +codesign/entitlements/app_sandbox/network_server=false +codesign/entitlements/app_sandbox/network_client=false +codesign/entitlements/app_sandbox/device_usb=false +codesign/entitlements/app_sandbox/device_bluetooth=false +codesign/entitlements/app_sandbox/files_downloads=0 +codesign/entitlements/app_sandbox/files_pictures=0 +codesign/entitlements/app_sandbox/files_music=0 +codesign/entitlements/app_sandbox/files_movies=0 +codesign/entitlements/app_sandbox/files_user_selected=0 +codesign/custom_options=PoolStringArray( ) +notarization/notarization=0 +notarization/apple_id_name="" +notarization/apple_id_password="" +notarization/api_uuid="" +notarization/api_key="" +notarization/api_key_id="" +privacy/microphone_usage_description="" +privacy/camera_usage_description="" +privacy/location_usage_description="" +privacy/address_book_usage_description="" +privacy/calendar_usage_description="" +privacy/photos_library_usage_description="" +privacy/desktop_folder_usage_description="" +privacy/documents_folder_usage_description="" +privacy/downloads_folder_usage_description="" +privacy/network_volumes_usage_description="" +privacy/removable_volumes_usage_description="" +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false diff --git a/graphics/backgrounds/canopy.png b/graphics/backgrounds/canopy.png index 01e90dc..b03152c 100644 Binary files a/graphics/backgrounds/canopy.png and b/graphics/backgrounds/canopy.png differ diff --git a/graphics/backgrounds/cave_scholar.png b/graphics/backgrounds/cave_scholar.png new file mode 100644 index 0000000..3606543 Binary files /dev/null and b/graphics/backgrounds/cave_scholar.png differ diff --git a/graphics/player/pal_purplearmor.png.import b/graphics/backgrounds/cave_scholar.png.import similarity index 69% rename from graphics/player/pal_purplearmor.png.import rename to graphics/backgrounds/cave_scholar.png.import index 52d2959..0bc1e56 100644 --- a/graphics/player/pal_purplearmor.png.import +++ b/graphics/backgrounds/cave_scholar.png.import @@ -2,15 +2,15 @@ importer="texture" type="StreamTexture" -path="res://.import/pal_purplearmor.png-4be1df2c9bcaa98882b0b62f01cb851a.stex" +path="res://.import/cave_scholar.png-5daab0741db98d8c70cedb3ef3dbd7f3.stex" metadata={ "vram_texture": false } [deps] -source_file="res://graphics/player/pal_purplearmor.png" -dest_files=[ "res://.import/pal_purplearmor.png-4be1df2c9bcaa98882b0b62f01cb851a.stex" ] +source_file="res://graphics/backgrounds/cave_scholar.png" +dest_files=[ "res://.import/cave_scholar.png-5daab0741db98d8c70cedb3ef3dbd7f3.stex" ] [params] diff --git a/graphics/backgrounds/fami_rooftop.png b/graphics/backgrounds/fami_rooftop.png new file mode 100644 index 0000000..df5c30d Binary files /dev/null and b/graphics/backgrounds/fami_rooftop.png differ diff --git a/graphics/backgrounds/fami_rooftop.png.import b/graphics/backgrounds/fami_rooftop.png.import new file mode 100644 index 0000000..e84fc9e --- /dev/null +++ b/graphics/backgrounds/fami_rooftop.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fami_rooftop.png-ff77cafa929ebb12585d1acfffe83fe2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/fami_rooftop.png" +dest_files=[ "res://.import/fami_rooftop.png-ff77cafa929ebb12585d1acfffe83fe2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/fire.png b/graphics/backgrounds/fire.png new file mode 100644 index 0000000..e3e70ce Binary files /dev/null and b/graphics/backgrounds/fire.png differ diff --git a/graphics/backgrounds/fire.png.import b/graphics/backgrounds/fire.png.import new file mode 100644 index 0000000..216239a --- /dev/null +++ b/graphics/backgrounds/fire.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fire.png-1a6113db082c73e88b91aa92d46ef1c6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/fire.png" +dest_files=[ "res://.import/fire.png-1a6113db082c73e88b91aa92d46ef1c6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/hills.png b/graphics/backgrounds/hills.png new file mode 100644 index 0000000..8e19ea6 Binary files /dev/null and b/graphics/backgrounds/hills.png differ diff --git a/graphics/backgrounds/hills.png.import b/graphics/backgrounds/hills.png.import new file mode 100644 index 0000000..36f3fea --- /dev/null +++ b/graphics/backgrounds/hills.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hills.png-7dec5898237d30f7e14a64e4fdf326a3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/hills.png" +dest_files=[ "res://.import/hills.png-7dec5898237d30f7e14a64e4fdf326a3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/moon.png b/graphics/backgrounds/moon.png new file mode 100644 index 0000000..19e9e27 Binary files /dev/null and b/graphics/backgrounds/moon.png differ diff --git a/graphics/backgrounds/moon.png.import b/graphics/backgrounds/moon.png.import new file mode 100644 index 0000000..c3f3f99 --- /dev/null +++ b/graphics/backgrounds/moon.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/moon.png-0d02dd6dd46a32e59657bae322ccdfab.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/moon.png" +dest_files=[ "res://.import/moon.png-0d02dd6dd46a32e59657bae322ccdfab.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/mountain_sunset.png b/graphics/backgrounds/mountain_sunset.png index 2e3c745..a77e70f 100644 Binary files a/graphics/backgrounds/mountain_sunset.png and b/graphics/backgrounds/mountain_sunset.png differ diff --git a/graphics/backgrounds/steel.png b/graphics/backgrounds/steel.png new file mode 100644 index 0000000..8a5ccc5 Binary files /dev/null and b/graphics/backgrounds/steel.png differ diff --git a/graphics/backgrounds/steel.png.import b/graphics/backgrounds/steel.png.import new file mode 100644 index 0000000..3b01f07 --- /dev/null +++ b/graphics/backgrounds/steel.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/steel.png-2632ac587d41da64a1aa822cf3846761.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/steel.png" +dest_files=[ "res://.import/steel.png-2632ac587d41da64a1aa822cf3846761.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/backgrounds/sun_and_clouds.png b/graphics/backgrounds/sun_and_clouds.png new file mode 100644 index 0000000..9c87617 Binary files /dev/null and b/graphics/backgrounds/sun_and_clouds.png differ diff --git a/graphics/backgrounds/sun_and_clouds.png.import b/graphics/backgrounds/sun_and_clouds.png.import new file mode 100644 index 0000000..9b85afc --- /dev/null +++ b/graphics/backgrounds/sun_and_clouds.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sun_and_clouds.png-c34ae0c7398c0c962738b6b195e403ec.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/backgrounds/sun_and_clouds.png" +dest_files=[ "res://.import/sun_and_clouds.png-c34ae0c7398c0c962738b6b195e403ec.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/black_bars.png b/graphics/borders/black_bars.png new file mode 100644 index 0000000..81c8075 Binary files /dev/null and b/graphics/borders/black_bars.png differ diff --git a/graphics/borders/black_bars.png.import b/graphics/borders/black_bars.png.import new file mode 100644 index 0000000..d1976be --- /dev/null +++ b/graphics/borders/black_bars.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/black_bars.png-f561832c992d95eedd150193b627c9d7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/black_bars.png" +dest_files=[ "res://.import/black_bars.png-f561832c992d95eedd150193b627c9d7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/bodhi_sg_border.png b/graphics/borders/bodhi_sg_border.png new file mode 100644 index 0000000..81cb40c Binary files /dev/null and b/graphics/borders/bodhi_sg_border.png differ diff --git a/graphics/borders/bodhi_sg_border.png.import b/graphics/borders/bodhi_sg_border.png.import new file mode 100644 index 0000000..d81a1af --- /dev/null +++ b/graphics/borders/bodhi_sg_border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bodhi_sg_border.png-3cf24d7237511d5ab9d451ff57338378.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/bodhi_sg_border.png" +dest_files=[ "res://.import/bodhi_sg_border.png-3cf24d7237511d5ab9d451ff57338378.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/copper.png b/graphics/borders/copper.png new file mode 100644 index 0000000..6225b09 Binary files /dev/null and b/graphics/borders/copper.png differ diff --git a/graphics/borders/copper.png.import b/graphics/borders/copper.png.import new file mode 100644 index 0000000..42c3eac --- /dev/null +++ b/graphics/borders/copper.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/copper.png-0b0131ce9b9cbaf1a35bcfe5384044a4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/copper.png" +dest_files=[ "res://.import/copper.png-0b0131ce9b9cbaf1a35bcfe5384044a4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/enby_border.png b/graphics/borders/enby_border.png new file mode 100644 index 0000000..ed3cc67 Binary files /dev/null and b/graphics/borders/enby_border.png differ diff --git a/graphics/borders/enby_border.png.import b/graphics/borders/enby_border.png.import new file mode 100644 index 0000000..bed31eb --- /dev/null +++ b/graphics/borders/enby_border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/enby_border.png-8fe8ce46d94d5a239271b744697eea68.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/enby_border.png" +dest_files=[ "res://.import/enby_border.png-8fe8ce46d94d5a239271b744697eea68.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/endless_revolution.png b/graphics/borders/endless_revolution.png new file mode 100644 index 0000000..347d4e5 Binary files /dev/null and b/graphics/borders/endless_revolution.png differ diff --git a/graphics/borders/endless_revolution.png.import b/graphics/borders/endless_revolution.png.import new file mode 100644 index 0000000..00283ba --- /dev/null +++ b/graphics/borders/endless_revolution.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/endless_revolution.png-1d89aea8ca43103d7e9475b87f235435.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/endless_revolution.png" +dest_files=[ "res://.import/endless_revolution.png-1d89aea8ca43103d7e9475b87f235435.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/infiltration.png b/graphics/borders/infiltration.png new file mode 100644 index 0000000..8aeb0e0 Binary files /dev/null and b/graphics/borders/infiltration.png differ diff --git a/graphics/borders/infiltration.png.import b/graphics/borders/infiltration.png.import new file mode 100644 index 0000000..35c50ce --- /dev/null +++ b/graphics/borders/infiltration.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/infiltration.png-1da7899a792593280d7179886ee709d9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/infiltration.png" +dest_files=[ "res://.import/infiltration.png-1da7899a792593280d7179886ee709d9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/mosaic.png b/graphics/borders/mosaic.png new file mode 100644 index 0000000..401608f Binary files /dev/null and b/graphics/borders/mosaic.png differ diff --git a/graphics/borders/mosaic.png.import b/graphics/borders/mosaic.png.import new file mode 100644 index 0000000..b526f26 --- /dev/null +++ b/graphics/borders/mosaic.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mosaic.png-86087188dc497a73b24f23cbfd665f80.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/mosaic.png" +dest_files=[ "res://.import/mosaic.png-86087188dc497a73b24f23cbfd665f80.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/prideborder.png b/graphics/borders/prideborder.png index c4f969a..f0d47c9 100644 Binary files a/graphics/borders/prideborder.png and b/graphics/borders/prideborder.png differ diff --git a/graphics/borders/revolution_border.png b/graphics/borders/revolution_border.png new file mode 100644 index 0000000..a16611f Binary files /dev/null and b/graphics/borders/revolution_border.png differ diff --git a/graphics/borders/revolution_border.png.import b/graphics/borders/revolution_border.png.import new file mode 100644 index 0000000..fe9b5b4 --- /dev/null +++ b/graphics/borders/revolution_border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/revolution_border.png-26cfcbd3fd4a8ff51b1e7e479b7e793b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/revolution_border.png" +dest_files=[ "res://.import/revolution_border.png-26cfcbd3fd4a8ff51b1e7e479b7e793b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/skaborder.png b/graphics/borders/skaborder.png new file mode 100644 index 0000000..9869734 Binary files /dev/null and b/graphics/borders/skaborder.png differ diff --git a/graphics/borders/skaborder.png.import b/graphics/borders/skaborder.png.import new file mode 100644 index 0000000..e1ae3a3 --- /dev/null +++ b/graphics/borders/skaborder.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/skaborder.png-b93f5de83ccf5fbcedd55382465c1432.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/skaborder.png" +dest_files=[ "res://.import/skaborder.png-b93f5de83ccf5fbcedd55382465c1432.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/static.png b/graphics/borders/static.png new file mode 100644 index 0000000..a1d080c Binary files /dev/null and b/graphics/borders/static.png differ diff --git a/graphics/borders/static.png.import b/graphics/borders/static.png.import new file mode 100644 index 0000000..1cd472c --- /dev/null +++ b/graphics/borders/static.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/static.png-bfbd6ab638837af161325225ae0ecc38.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/static.png" +dest_files=[ "res://.import/static.png-bfbd6ab638837af161325225ae0ecc38.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/borders/the_gays_border.png b/graphics/borders/the_gays_border.png new file mode 100644 index 0000000..01caafd Binary files /dev/null and b/graphics/borders/the_gays_border.png differ diff --git a/graphics/borders/the_gays_border.png.import b/graphics/borders/the_gays_border.png.import new file mode 100644 index 0000000..358a16e --- /dev/null +++ b/graphics/borders/the_gays_border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/the_gays_border.png-ce1ce710b5bf4d5182ecdd13d7a17fb5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/borders/the_gays_border.png" +dest_files=[ "res://.import/the_gays_border.png-ce1ce710b5bf4d5182ecdd13d7a17fb5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/collectibles/shard.png b/graphics/collectibles/shard.png index fb1b4d3..4c2e263 100644 Binary files a/graphics/collectibles/shard.png and b/graphics/collectibles/shard.png differ diff --git a/graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png b/graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png new file mode 100644 index 0000000..6691630 Binary files /dev/null and b/graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png differ diff --git a/graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png.import b/graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png.import new file mode 100644 index 0000000..09fd899 --- /dev/null +++ b/graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow_sign.png-da6d10e9dfa32f0e569a1e5af2b395d9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png" +dest_files=[ "res://.import/arrow_sign.png-da6d10e9dfa32f0e569a1e5af2b395d9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/ending/end.png b/graphics/ending/end.png new file mode 100644 index 0000000..40680a4 Binary files /dev/null and b/graphics/ending/end.png differ diff --git a/graphics/ending/end.png.import b/graphics/ending/end.png.import new file mode 100644 index 0000000..0c89972 --- /dev/null +++ b/graphics/ending/end.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/end.png-086a46f85042ae90dc3a1e18c99813d0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/ending/end.png" +dest_files=[ "res://.import/end.png-086a46f85042ae90dc3a1e18c99813d0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/ending/end_egg.png b/graphics/ending/end_egg.png new file mode 100644 index 0000000..4526c02 Binary files /dev/null and b/graphics/ending/end_egg.png differ diff --git a/graphics/ending/end_egg.png.import b/graphics/ending/end_egg.png.import new file mode 100644 index 0000000..a6387ff --- /dev/null +++ b/graphics/ending/end_egg.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/end_egg.png-2074c63941c3a4ac7552b725f3fe0e89.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/ending/end_egg.png" +dest_files=[ "res://.import/end_egg.png-2074c63941c3a4ac7552b725f3fe0e89.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/ending/picnic_table.png b/graphics/ending/picnic_table.png new file mode 100644 index 0000000..8acb474 Binary files /dev/null and b/graphics/ending/picnic_table.png differ diff --git a/graphics/ending/picnic_table.png.import b/graphics/ending/picnic_table.png.import new file mode 100644 index 0000000..37e63cf --- /dev/null +++ b/graphics/ending/picnic_table.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/picnic_table.png-36237cf92de6d1327e6c724100872052.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/ending/picnic_table.png" +dest_files=[ "res://.import/picnic_table.png-36237cf92de6d1327e6c724100872052.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/antlion_body.png b/graphics/enemy/antlion_body.png index 19860c8..370dd7e 100644 Binary files a/graphics/enemy/antlion_body.png and b/graphics/enemy/antlion_body.png differ diff --git a/graphics/enemy/antlion_body_border.png b/graphics/enemy/antlion_body_border.png new file mode 100644 index 0000000..5d8d56d Binary files /dev/null and b/graphics/enemy/antlion_body_border.png differ diff --git a/graphics/enemy/antlion_body_border.png.import b/graphics/enemy/antlion_body_border.png.import new file mode 100644 index 0000000..7bc00eb --- /dev/null +++ b/graphics/enemy/antlion_body_border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/antlion_body_border.png-eedaa961c8d23661449fab8f5d3562f5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/antlion_body_border.png" +dest_files=[ "res://.import/antlion_body_border.png-eedaa961c8d23661449fab8f5d3562f5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/arm_segment.png b/graphics/enemy/boss/fami_parts/arm_segment.png new file mode 100644 index 0000000..c8528e8 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/arm_segment.png differ diff --git a/graphics/enemy/boss/fami_parts/arm_segment.png.import b/graphics/enemy/boss/fami_parts/arm_segment.png.import new file mode 100644 index 0000000..bcdcf16 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/arm_segment.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arm_segment.png-da4ef203361c0a30f2279aa0ab4f15ba.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/arm_segment.png" +dest_files=[ "res://.import/arm_segment.png-da4ef203361c0a30f2279aa0ab4f15ba.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/arm_segment_border.png b/graphics/enemy/boss/fami_parts/arm_segment_border.png new file mode 100644 index 0000000..b028667 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/arm_segment_border.png differ diff --git a/graphics/enemy/boss/fami_parts/arm_segment_border.png.import b/graphics/enemy/boss/fami_parts/arm_segment_border.png.import new file mode 100644 index 0000000..4a886f0 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/arm_segment_border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arm_segment_border.png-bf3b689b225eb094d59824f85abbae78.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/arm_segment_border.png" +dest_files=[ "res://.import/arm_segment_border.png-bf3b689b225eb094d59824f85abbae78.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/body.png b/graphics/enemy/boss/fami_parts/body.png new file mode 100644 index 0000000..95ff842 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/body.png differ diff --git a/graphics/enemy/boss/fami_parts/body.png.import b/graphics/enemy/boss/fami_parts/body.png.import new file mode 100644 index 0000000..4df6019 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/body.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/body.png-df6aa24749dc789c01ae739efee96718.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/body.png" +dest_files=[ "res://.import/body.png-df6aa24749dc789c01ae739efee96718.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/body_glow_mask.png b/graphics/enemy/boss/fami_parts/body_glow_mask.png new file mode 100644 index 0000000..6d7a483 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/body_glow_mask.png differ diff --git a/graphics/enemy/boss/fami_parts/body_glow_mask.png.import b/graphics/enemy/boss/fami_parts/body_glow_mask.png.import new file mode 100644 index 0000000..e8918f1 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/body_glow_mask.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/body_glow_mask.png-5d6ebce3da83f855ce22bad6beb88258.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/body_glow_mask.png" +dest_files=[ "res://.import/body_glow_mask.png-5d6ebce3da83f855ce22bad6beb88258.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/eye.png b/graphics/enemy/boss/fami_parts/eye.png new file mode 100644 index 0000000..386dc52 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/eye.png differ diff --git a/graphics/enemy/boss/fami_parts/eye.png.import b/graphics/enemy/boss/fami_parts/eye.png.import new file mode 100644 index 0000000..08679c8 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/eye.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/eye.png-b4c7f42b6e983d4217350a9b2ac20562.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/eye.png" +dest_files=[ "res://.import/eye.png-b4c7f42b6e983d4217350a9b2ac20562.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/foot.png b/graphics/enemy/boss/fami_parts/foot.png new file mode 100644 index 0000000..7b387c6 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/foot.png differ diff --git a/graphics/enemy/boss/fami_parts/foot.png.import b/graphics/enemy/boss/fami_parts/foot.png.import new file mode 100644 index 0000000..cd8c7fb --- /dev/null +++ b/graphics/enemy/boss/fami_parts/foot.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/foot.png-2e76590f0a66ba7ca91cc05a549afe87.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/foot.png" +dest_files=[ "res://.import/foot.png-2e76590f0a66ba7ca91cc05a549afe87.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/hand.png b/graphics/enemy/boss/fami_parts/hand.png new file mode 100644 index 0000000..e23d808 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/hand.png differ diff --git a/graphics/enemy/boss/fami_parts/hand.png.import b/graphics/enemy/boss/fami_parts/hand.png.import new file mode 100644 index 0000000..cc4da80 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/hand.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hand.png-c354281b38925f653c87a54040cc3a24.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/hand.png" +dest_files=[ "res://.import/hand.png-c354281b38925f653c87a54040cc3a24.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/head_back.png b/graphics/enemy/boss/fami_parts/head_back.png new file mode 100644 index 0000000..cd01095 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/head_back.png differ diff --git a/graphics/enemy/boss/fami_parts/head_back.png.import b/graphics/enemy/boss/fami_parts/head_back.png.import new file mode 100644 index 0000000..3a7eaac --- /dev/null +++ b/graphics/enemy/boss/fami_parts/head_back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_back.png-1bccd614de968923411809ed0a9a47ec.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/head_back.png" +dest_files=[ "res://.import/head_back.png-1bccd614de968923411809ed0a9a47ec.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/head_back_glow_mask.png b/graphics/enemy/boss/fami_parts/head_back_glow_mask.png new file mode 100644 index 0000000..666e4c9 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/head_back_glow_mask.png differ diff --git a/graphics/enemy/boss/fami_parts/head_back_glow_mask.png.import b/graphics/enemy/boss/fami_parts/head_back_glow_mask.png.import new file mode 100644 index 0000000..528f40d --- /dev/null +++ b/graphics/enemy/boss/fami_parts/head_back_glow_mask.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_back_glow_mask.png-912947a6fac25c3b88539a342be1eaa2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/head_back_glow_mask.png" +dest_files=[ "res://.import/head_back_glow_mask.png-912947a6fac25c3b88539a342be1eaa2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/head_lower.png b/graphics/enemy/boss/fami_parts/head_lower.png new file mode 100644 index 0000000..76cf031 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/head_lower.png differ diff --git a/graphics/enemy/boss/fami_parts/head_lower.png.import b/graphics/enemy/boss/fami_parts/head_lower.png.import new file mode 100644 index 0000000..a25c2af --- /dev/null +++ b/graphics/enemy/boss/fami_parts/head_lower.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_lower.png-3f00788ef8e1fe96a9f1619728b058df.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/head_lower.png" +dest_files=[ "res://.import/head_lower.png-3f00788ef8e1fe96a9f1619728b058df.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/head_upper.png b/graphics/enemy/boss/fami_parts/head_upper.png new file mode 100644 index 0000000..1031cb2 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/head_upper.png differ diff --git a/graphics/enemy/boss/fami_parts/head_upper.png.import b/graphics/enemy/boss/fami_parts/head_upper.png.import new file mode 100644 index 0000000..663ce4c --- /dev/null +++ b/graphics/enemy/boss/fami_parts/head_upper.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_upper.png-c39f225b2583e29d199ec2fba43a0662.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/head_upper.png" +dest_files=[ "res://.import/head_upper.png-c39f225b2583e29d199ec2fba43a0662.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/head_upper_glow_mask.png b/graphics/enemy/boss/fami_parts/head_upper_glow_mask.png new file mode 100644 index 0000000..653643d Binary files /dev/null and b/graphics/enemy/boss/fami_parts/head_upper_glow_mask.png differ diff --git a/graphics/enemy/boss/fami_parts/head_upper_glow_mask.png.import b/graphics/enemy/boss/fami_parts/head_upper_glow_mask.png.import new file mode 100644 index 0000000..0787294 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/head_upper_glow_mask.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_upper_glow_mask.png-b8eac607758b521c1c339ab5fe792414.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/head_upper_glow_mask.png" +dest_files=[ "res://.import/head_upper_glow_mask.png-b8eac607758b521c1c339ab5fe792414.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/leg.png b/graphics/enemy/boss/fami_parts/leg.png new file mode 100644 index 0000000..2a326b9 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/leg.png differ diff --git a/graphics/enemy/boss/fami_parts/leg.png.import b/graphics/enemy/boss/fami_parts/leg.png.import new file mode 100644 index 0000000..acefac1 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/leg.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/leg.png-b5cf2c1eb1aa8a79ae6def8820c2a75a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/leg.png" +dest_files=[ "res://.import/leg.png-b5cf2c1eb1aa8a79ae6def8820c2a75a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/leg_lower.png b/graphics/enemy/boss/fami_parts/leg_lower.png new file mode 100644 index 0000000..675e723 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/leg_lower.png differ diff --git a/graphics/enemy/boss/fami_parts/leg_lower.png.import b/graphics/enemy/boss/fami_parts/leg_lower.png.import new file mode 100644 index 0000000..7b38e09 --- /dev/null +++ b/graphics/enemy/boss/fami_parts/leg_lower.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/leg_lower.png-9ecb53d4858a913e6ec3beaecc3411d2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/leg_lower.png" +dest_files=[ "res://.import/leg_lower.png-9ecb53d4858a913e6ec3beaecc3411d2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/fami_parts/mouth_tendril.png b/graphics/enemy/boss/fami_parts/mouth_tendril.png new file mode 100644 index 0000000..facee02 Binary files /dev/null and b/graphics/enemy/boss/fami_parts/mouth_tendril.png differ diff --git a/graphics/enemy/boss/fami_parts/mouth_tendril.png.import b/graphics/enemy/boss/fami_parts/mouth_tendril.png.import new file mode 100644 index 0000000..a261f6b --- /dev/null +++ b/graphics/enemy/boss/fami_parts/mouth_tendril.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mouth_tendril.png-f6bdbcc85167f9ddb0b2ff5a81efc376.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/fami_parts/mouth_tendril.png" +dest_files=[ "res://.import/mouth_tendril.png-f6bdbcc85167f9ddb0b2ff5a81efc376.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/famira-wip.png b/graphics/enemy/boss/famira-wip.png new file mode 100644 index 0000000..025c5a3 Binary files /dev/null and b/graphics/enemy/boss/famira-wip.png differ diff --git a/graphics/enemy/boss/famira-wip.png.import b/graphics/enemy/boss/famira-wip.png.import new file mode 100644 index 0000000..7b6343a --- /dev/null +++ b/graphics/enemy/boss/famira-wip.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira-wip.png-724a50fc63b1b570cfdaa11733d1f42e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/famira-wip.png" +dest_files=[ "res://.import/famira-wip.png-724a50fc63b1b570cfdaa11733d1f42e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/famira_dissolve.png b/graphics/enemy/boss/famira_dissolve.png new file mode 100644 index 0000000..4f64df4 Binary files /dev/null and b/graphics/enemy/boss/famira_dissolve.png differ diff --git a/graphics/enemy/boss/famira_dissolve.png.import b/graphics/enemy/boss/famira_dissolve.png.import new file mode 100644 index 0000000..e11954d --- /dev/null +++ b/graphics/enemy/boss/famira_dissolve.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira_dissolve.png-fc21beac8113424467a72a3beb454de9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/famira_dissolve.png" +dest_files=[ "res://.import/famira_dissolve.png-fc21beac8113424467a72a3beb454de9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/famira_fire.png b/graphics/enemy/boss/famira_fire.png new file mode 100644 index 0000000..bf6ff01 Binary files /dev/null and b/graphics/enemy/boss/famira_fire.png differ diff --git a/graphics/enemy/boss/famira_fire.png.import b/graphics/enemy/boss/famira_fire.png.import new file mode 100644 index 0000000..052b4a1 --- /dev/null +++ b/graphics/enemy/boss/famira_fire.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira_fire.png-e17dc562be1c1f2c970eb59a9cfda450.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/famira_fire.png" +dest_files=[ "res://.import/famira_fire.png-e17dc562be1c1f2c970eb59a9cfda450.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/beam.png b/graphics/enemy/boss/stg_2600/beam.png new file mode 100644 index 0000000..ff3ad0d Binary files /dev/null and b/graphics/enemy/boss/stg_2600/beam.png differ diff --git a/graphics/enemy/boss/stg_2600/beam.png.import b/graphics/enemy/boss/stg_2600/beam.png.import new file mode 100644 index 0000000..9ae197a --- /dev/null +++ b/graphics/enemy/boss/stg_2600/beam.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/beam.png-a6465ac769ebb2c528af0b787f682930.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/beam.png" +dest_files=[ "res://.import/beam.png-a6465ac769ebb2c528af0b787f682930.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/beam_gradient.png b/graphics/enemy/boss/stg_2600/beam_gradient.png new file mode 100644 index 0000000..4be40f8 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/beam_gradient.png differ diff --git a/graphics/enemy/boss/stg_2600/beam_gradient.png.import b/graphics/enemy/boss/stg_2600/beam_gradient.png.import new file mode 100644 index 0000000..6137a04 --- /dev/null +++ b/graphics/enemy/boss/stg_2600/beam_gradient.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/beam_gradient.png-1b75c5d23d16832372548a1c5c3edb0d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/beam_gradient.png" +dest_files=[ "res://.import/beam_gradient.png-1b75c5d23d16832372548a1c5c3edb0d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/bold_large.xcf b/graphics/enemy/boss/stg_2600/bold_large.xcf new file mode 100644 index 0000000..8e19af6 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/bold_large.xcf differ diff --git a/graphics/enemy/boss/stg_2600/bolt_large.png b/graphics/enemy/boss/stg_2600/bolt_large.png new file mode 100644 index 0000000..302db84 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/bolt_large.png differ diff --git a/graphics/enemy/boss/stg_2600/bolt_large.png.import b/graphics/enemy/boss/stg_2600/bolt_large.png.import new file mode 100644 index 0000000..a722400 --- /dev/null +++ b/graphics/enemy/boss/stg_2600/bolt_large.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bolt_large.png-87121a52143bd846fbb123b3634228b7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/bolt_large.png" +dest_files=[ "res://.import/bolt_large.png-87121a52143bd846fbb123b3634228b7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/bolt_large.xcf b/graphics/enemy/boss/stg_2600/bolt_large.xcf new file mode 100644 index 0000000..611c39f Binary files /dev/null and b/graphics/enemy/boss/stg_2600/bolt_large.xcf differ diff --git a/graphics/enemy/boss/stg_2600/bolt_medium.png b/graphics/enemy/boss/stg_2600/bolt_medium.png new file mode 100644 index 0000000..2e35b22 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/bolt_medium.png differ diff --git a/graphics/enemy/boss/stg_2600/bolt_medium.png.import b/graphics/enemy/boss/stg_2600/bolt_medium.png.import new file mode 100644 index 0000000..fc3b685 --- /dev/null +++ b/graphics/enemy/boss/stg_2600/bolt_medium.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bolt_medium.png-c18f34f796165752e94c6e28216b7e6e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/bolt_medium.png" +dest_files=[ "res://.import/bolt_medium.png-c18f34f796165752e94c6e28216b7e6e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/bolt_medium.xcf b/graphics/enemy/boss/stg_2600/bolt_medium.xcf new file mode 100644 index 0000000..c1d3f4a Binary files /dev/null and b/graphics/enemy/boss/stg_2600/bolt_medium.xcf differ diff --git a/graphics/enemy/boss/stg_2600/bolt_small.xcf b/graphics/enemy/boss/stg_2600/bolt_small.xcf new file mode 100644 index 0000000..94dbe84 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/bolt_small.xcf differ diff --git a/graphics/enemy/boss/stg_2600/foot.png b/graphics/enemy/boss/stg_2600/foot.png new file mode 100644 index 0000000..d8146da Binary files /dev/null and b/graphics/enemy/boss/stg_2600/foot.png differ diff --git a/graphics/enemy/boss/stg_2600/foot.png.import b/graphics/enemy/boss/stg_2600/foot.png.import new file mode 100644 index 0000000..e56b636 --- /dev/null +++ b/graphics/enemy/boss/stg_2600/foot.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/foot.png-49e7bfc3417af16c0f1c825106e6cf3a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/foot.png" +dest_files=[ "res://.import/foot.png-49e7bfc3417af16c0f1c825106e6cf3a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/foot.xcf b/graphics/enemy/boss/stg_2600/foot.xcf new file mode 100644 index 0000000..f6ab01d Binary files /dev/null and b/graphics/enemy/boss/stg_2600/foot.xcf differ diff --git a/graphics/enemy/boss/stg_2600/head_broken.png b/graphics/enemy/boss/stg_2600/head_broken.png new file mode 100644 index 0000000..a19d4d1 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/head_broken.png differ diff --git a/graphics/enemy/boss/stg_2600/head_broken.png.import b/graphics/enemy/boss/stg_2600/head_broken.png.import new file mode 100644 index 0000000..cfb4bf2 --- /dev/null +++ b/graphics/enemy/boss/stg_2600/head_broken.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_broken.png-cf8f0c7e5f516f4b2efbd5ac2fee134c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/head_broken.png" +dest_files=[ "res://.import/head_broken.png-cf8f0c7e5f516f4b2efbd5ac2fee134c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/head_cracked.png b/graphics/enemy/boss/stg_2600/head_cracked.png new file mode 100644 index 0000000..a81ac62 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/head_cracked.png differ diff --git a/graphics/enemy/boss/stg_2600/head_cracked.png.import b/graphics/enemy/boss/stg_2600/head_cracked.png.import new file mode 100644 index 0000000..f388cec --- /dev/null +++ b/graphics/enemy/boss/stg_2600/head_cracked.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_cracked.png-6dfa8a34ba8a3e28ec67d923de7dda93.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/head_cracked.png" +dest_files=[ "res://.import/head_cracked.png-6dfa8a34ba8a3e28ec67d923de7dda93.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/head_intact.png b/graphics/enemy/boss/stg_2600/head_intact.png new file mode 100644 index 0000000..b8255eb Binary files /dev/null and b/graphics/enemy/boss/stg_2600/head_intact.png differ diff --git a/graphics/enemy/boss/stg_2600/head_intact.png.import b/graphics/enemy/boss/stg_2600/head_intact.png.import new file mode 100644 index 0000000..a39a2d9 --- /dev/null +++ b/graphics/enemy/boss/stg_2600/head_intact.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/head_intact.png-54b42888eb160863193673b5bc2d22d5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/head_intact.png" +dest_files=[ "res://.import/head_intact.png-54b42888eb160863193673b5bc2d22d5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/leg.png b/graphics/enemy/boss/stg_2600/leg.png new file mode 100644 index 0000000..4129b56 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/leg.png differ diff --git a/graphics/enemy/boss/stg_2600/leg.png.import b/graphics/enemy/boss/stg_2600/leg.png.import new file mode 100644 index 0000000..83a842e --- /dev/null +++ b/graphics/enemy/boss/stg_2600/leg.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/leg.png-e82a4080bfae744da299fb320083a254.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/leg.png" +dest_files=[ "res://.import/leg.png-e82a4080bfae744da299fb320083a254.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/sg_2083.png b/graphics/enemy/boss/stg_2600/sg_2083.png new file mode 100644 index 0000000..f5b8ca0 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/sg_2083.png differ diff --git a/graphics/enemy/boss/stg_2600/sg_2083.png.import b/graphics/enemy/boss/stg_2600/sg_2083.png.import new file mode 100644 index 0000000..d00ec58 --- /dev/null +++ b/graphics/enemy/boss/stg_2600/sg_2083.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_2083.png-e75cfae4b8483550759568a2ca940538.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/sg_2083.png" +dest_files=[ "res://.import/sg_2083.png-e75cfae4b8483550759568a2ca940538.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/stg_2600/tailpipes.png b/graphics/enemy/boss/stg_2600/tailpipes.png new file mode 100644 index 0000000..a384fd5 Binary files /dev/null and b/graphics/enemy/boss/stg_2600/tailpipes.png differ diff --git a/graphics/enemy/boss/stg_2600/tailpipes.png.import b/graphics/enemy/boss/stg_2600/tailpipes.png.import new file mode 100644 index 0000000..af2089d --- /dev/null +++ b/graphics/enemy/boss/stg_2600/tailpipes.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tailpipes.png-f2cc21241c48e1d5a125f73c2b7a9f85.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/stg_2600/tailpipes.png" +dest_files=[ "res://.import/tailpipes.png-f2cc21241c48e1d5a125f73c2b7a9f85.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/boss/the_scrump.png b/graphics/enemy/boss/the_scrump.png new file mode 100644 index 0000000..3668331 Binary files /dev/null and b/graphics/enemy/boss/the_scrump.png differ diff --git a/graphics/enemy/boss/the_scrump.png.import b/graphics/enemy/boss/the_scrump.png.import new file mode 100644 index 0000000..ca09b5c --- /dev/null +++ b/graphics/enemy/boss/the_scrump.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/the_scrump.png-5d6d9e8e958472079e561df8449adc91.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/boss/the_scrump.png" +dest_files=[ "res://.import/the_scrump.png-5d6d9e8e958472079e561df8449adc91.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/chain.png b/graphics/enemy/chain.png index d086b0b..eef8472 100644 Binary files a/graphics/enemy/chain.png and b/graphics/enemy/chain.png differ diff --git a/graphics/enemy/cop/scope_idle.png b/graphics/enemy/cop/scope_idle.png new file mode 100644 index 0000000..db98015 Binary files /dev/null and b/graphics/enemy/cop/scope_idle.png differ diff --git a/graphics/enemy/cop/scope_idle.png.import b/graphics/enemy/cop/scope_idle.png.import new file mode 100644 index 0000000..971fc9d --- /dev/null +++ b/graphics/enemy/cop/scope_idle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/scope_idle.png-edfb3b6efbf557231c79afc0b20cdc8d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/cop/scope_idle.png" +dest_files=[ "res://.import/scope_idle.png-edfb3b6efbf557231c79afc0b20cdc8d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/cop/scope_shoot.png b/graphics/enemy/cop/scope_shoot.png new file mode 100644 index 0000000..adca693 Binary files /dev/null and b/graphics/enemy/cop/scope_shoot.png differ diff --git a/graphics/enemy/cop/scope_shoot.png.import b/graphics/enemy/cop/scope_shoot.png.import new file mode 100644 index 0000000..074448c --- /dev/null +++ b/graphics/enemy/cop/scope_shoot.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/scope_shoot.png-cb51b66a6fbf90463877cb05556866a7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/cop/scope_shoot.png" +dest_files=[ "res://.import/scope_shoot.png-cb51b66a6fbf90463877cb05556866a7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/cop/scope_walk.png b/graphics/enemy/cop/scope_walk.png new file mode 100644 index 0000000..5f0a09c Binary files /dev/null and b/graphics/enemy/cop/scope_walk.png differ diff --git a/graphics/enemy/cop/scope_walk.png.import b/graphics/enemy/cop/scope_walk.png.import new file mode 100644 index 0000000..fa02cb4 --- /dev/null +++ b/graphics/enemy/cop/scope_walk.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/scope_walk.png-f2c5dbb93e8a856e4d1169d185c92f99.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/cop/scope_walk.png" +dest_files=[ "res://.import/scope_walk.png-f2c5dbb93e8a856e4d1169d185c92f99.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/cop/the_sheriff_idle.png b/graphics/enemy/cop/the_sheriff_idle.png new file mode 100644 index 0000000..322d122 Binary files /dev/null and b/graphics/enemy/cop/the_sheriff_idle.png differ diff --git a/graphics/enemy/cop/the_sheriff_idle.png.import b/graphics/enemy/cop/the_sheriff_idle.png.import new file mode 100644 index 0000000..6d43e04 --- /dev/null +++ b/graphics/enemy/cop/the_sheriff_idle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/the_sheriff_idle.png-014665844bd2f3239eec29a093e13bfe.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/cop/the_sheriff_idle.png" +dest_files=[ "res://.import/the_sheriff_idle.png-014665844bd2f3239eec29a093e13bfe.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/cop/the_sheriff_shoot.png b/graphics/enemy/cop/the_sheriff_shoot.png new file mode 100644 index 0000000..7667542 Binary files /dev/null and b/graphics/enemy/cop/the_sheriff_shoot.png differ diff --git a/graphics/enemy/cop/the_sheriff_shoot.png.import b/graphics/enemy/cop/the_sheriff_shoot.png.import new file mode 100644 index 0000000..fe1d10d --- /dev/null +++ b/graphics/enemy/cop/the_sheriff_shoot.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/the_sheriff_shoot.png-3125c06d508cb96e0ad5f5a9a0978451.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/cop/the_sheriff_shoot.png" +dest_files=[ "res://.import/the_sheriff_shoot.png-3125c06d508cb96e0ad5f5a9a0978451.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/cop/the_sheriff_walk.png b/graphics/enemy/cop/the_sheriff_walk.png new file mode 100644 index 0000000..fe8752b Binary files /dev/null and b/graphics/enemy/cop/the_sheriff_walk.png differ diff --git a/graphics/enemy/cop/the_sheriff_walk.png.import b/graphics/enemy/cop/the_sheriff_walk.png.import new file mode 100644 index 0000000..ad5940e --- /dev/null +++ b/graphics/enemy/cop/the_sheriff_walk.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/the_sheriff_walk.png-fd72a685f4b3844bdad9a7201ad253bc.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/cop/the_sheriff_walk.png" +dest_files=[ "res://.import/the_sheriff_walk.png-fd72a685f4b3844bdad9a7201ad253bc.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/eel_body.png b/graphics/enemy/eel_body.png new file mode 100644 index 0000000..58588ac Binary files /dev/null and b/graphics/enemy/eel_body.png differ diff --git a/graphics/enemy/eel_body.png.import b/graphics/enemy/eel_body.png.import new file mode 100644 index 0000000..5be4646 --- /dev/null +++ b/graphics/enemy/eel_body.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/eel_body.png-4e2a707966d6656d9260d34aba0d2f9d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/eel_body.png" +dest_files=[ "res://.import/eel_body.png-4e2a707966d6656d9260d34aba0d2f9d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/eel_head.png b/graphics/enemy/eel_head.png new file mode 100644 index 0000000..873037c Binary files /dev/null and b/graphics/enemy/eel_head.png differ diff --git a/graphics/enemy/eel_head.png.import b/graphics/enemy/eel_head.png.import new file mode 100644 index 0000000..f48ab5d --- /dev/null +++ b/graphics/enemy/eel_head.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/eel_head.png-29e1a9b9dd541b3771a77751dd32cb42.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/eel_head.png" +dest_files=[ "res://.import/eel_head.png-29e1a9b9dd541b3771a77751dd32cb42.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/eel_inner_border.png b/graphics/enemy/eel_inner_border.png new file mode 100644 index 0000000..3e33ee3 Binary files /dev/null and b/graphics/enemy/eel_inner_border.png differ diff --git a/graphics/enemy/eel_inner_border.png.import b/graphics/enemy/eel_inner_border.png.import new file mode 100644 index 0000000..c5aab61 --- /dev/null +++ b/graphics/enemy/eel_inner_border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/eel_inner_border.png-ba82f5e4214fedd66b04b75d8ca636b6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/eel_inner_border.png" +dest_files=[ "res://.import/eel_inner_border.png-ba82f5e4214fedd66b04b75d8ca636b6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/eel_tail.png b/graphics/enemy/eel_tail.png new file mode 100644 index 0000000..dd08a76 Binary files /dev/null and b/graphics/enemy/eel_tail.png differ diff --git a/graphics/enemy/eel_tail.png.import b/graphics/enemy/eel_tail.png.import new file mode 100644 index 0000000..401b397 --- /dev/null +++ b/graphics/enemy/eel_tail.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/eel_tail.png-359163ddc00e2ac41549552381ce8558.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/eel_tail.png" +dest_files=[ "res://.import/eel_tail.png-359163ddc00e2ac41549552381ce8558.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/fish.png b/graphics/enemy/fish.png new file mode 100644 index 0000000..283bd4b Binary files /dev/null and b/graphics/enemy/fish.png differ diff --git a/graphics/enemy/fish.png.import b/graphics/enemy/fish.png.import new file mode 100644 index 0000000..35bbc3d --- /dev/null +++ b/graphics/enemy/fish.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fish.png-3b834e5fe038dfff40dea010bacb8ae6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/fish.png" +dest_files=[ "res://.import/fish.png-3b834e5fe038dfff40dea010bacb8ae6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/mine.png b/graphics/enemy/mine.png index 8d49990..ccdd428 100644 Binary files a/graphics/enemy/mine.png and b/graphics/enemy/mine.png differ diff --git a/graphics/enemy/rolling_fiend.png b/graphics/enemy/rolling_fiend.png index e0d0cd5..7b5316e 100644 Binary files a/graphics/enemy/rolling_fiend.png and b/graphics/enemy/rolling_fiend.png differ diff --git a/graphics/enemy/snail.png b/graphics/enemy/snail.png index 010d0d7..6bfe69a 100644 Binary files a/graphics/enemy/snail.png and b/graphics/enemy/snail.png differ diff --git a/graphics/enemy/squig.png b/graphics/enemy/squig.png new file mode 100644 index 0000000..00ada40 Binary files /dev/null and b/graphics/enemy/squig.png differ diff --git a/graphics/enemy/squig.png.import b/graphics/enemy/squig.png.import new file mode 100644 index 0000000..faf61b4 --- /dev/null +++ b/graphics/enemy/squig.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/squig.png-17d636ce34898af05744f4145669e9ed.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/squig.png" +dest_files=[ "res://.import/squig.png-17d636ce34898af05744f4145669e9ed.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/stg_bullet.png b/graphics/enemy/stg_bullet.png new file mode 100644 index 0000000..0d77065 Binary files /dev/null and b/graphics/enemy/stg_bullet.png differ diff --git a/graphics/enemy/stg_bullet.png.import b/graphics/enemy/stg_bullet.png.import new file mode 100644 index 0000000..d230970 --- /dev/null +++ b/graphics/enemy/stg_bullet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/stg_bullet.png-3ab70a711eb012e51f77e11932f8bd02.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/stg_bullet.png" +dest_files=[ "res://.import/stg_bullet.png-3ab70a711eb012e51f77e11932f8bd02.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/enemy/turtle.png b/graphics/enemy/turtle.png new file mode 100644 index 0000000..ad4dc39 Binary files /dev/null and b/graphics/enemy/turtle.png differ diff --git a/graphics/enemy/turtle.png.import b/graphics/enemy/turtle.png.import new file mode 100644 index 0000000..4564080 --- /dev/null +++ b/graphics/enemy/turtle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/turtle.png-7f0700b33935e20aa7dac9deef68652e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/enemy/turtle.png" +dest_files=[ "res://.import/turtle.png-7f0700b33935e20aa7dac9deef68652e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/exit/exit.png b/graphics/exit/exit.png index 5974678..53c0b91 100644 Binary files a/graphics/exit/exit.png and b/graphics/exit/exit.png differ diff --git a/graphics/exit/exit_back.png b/graphics/exit/exit_back.png new file mode 100644 index 0000000..2680d36 Binary files /dev/null and b/graphics/exit/exit_back.png differ diff --git a/graphics/exit/exit_back.png.import b/graphics/exit/exit_back.png.import new file mode 100644 index 0000000..6fc7734 --- /dev/null +++ b/graphics/exit/exit_back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/exit_back.png-cd39ec899573a453a62e1f55eaf2a249.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/exit/exit_back.png" +dest_files=[ "res://.import/exit_back.png-cd39ec899573a453a62e1f55eaf2a249.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/fade_patterns/stg_explosion.png b/graphics/fade_patterns/stg_explosion.png new file mode 100644 index 0000000..2f01069 Binary files /dev/null and b/graphics/fade_patterns/stg_explosion.png differ diff --git a/graphics/fade_patterns/stg_explosion.png.import b/graphics/fade_patterns/stg_explosion.png.import new file mode 100644 index 0000000..c5c9f14 --- /dev/null +++ b/graphics/fade_patterns/stg_explosion.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/stg_explosion.png-598b3ffe756e54c024ac9b9212bc795c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/fade_patterns/stg_explosion.png" +dest_files=[ "res://.import/stg_explosion.png-598b3ffe756e54c024ac9b9212bc795c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/falling_block/falling_block_cave.png b/graphics/falling_block/falling_block_cave.png index 872c1dd..b359269 100644 Binary files a/graphics/falling_block/falling_block_cave.png and b/graphics/falling_block/falling_block_cave.png differ diff --git a/graphics/falling_block/falling_block_lab.png b/graphics/falling_block/falling_block_lab.png new file mode 100644 index 0000000..83da745 Binary files /dev/null and b/graphics/falling_block/falling_block_lab.png differ diff --git a/graphics/falling_block/falling_block_lab.png.import b/graphics/falling_block/falling_block_lab.png.import new file mode 100644 index 0000000..8666b06 --- /dev/null +++ b/graphics/falling_block/falling_block_lab.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/falling_block_lab.png-6ebf33dbe45acfe91ee6786039182d5d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/falling_block/falling_block_lab.png" +dest_files=[ "res://.import/falling_block_lab.png-6ebf33dbe45acfe91ee6786039182d5d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/graffiti/msx.png b/graphics/graffiti/msx.png new file mode 100644 index 0000000..09feec8 Binary files /dev/null and b/graphics/graffiti/msx.png differ diff --git a/graphics/graffiti/msx.png.import b/graphics/graffiti/msx.png.import new file mode 100644 index 0000000..1128f0a --- /dev/null +++ b/graphics/graffiti/msx.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx.png-048931302361c46e2dea865ea468e7ee.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/graffiti/msx.png" +dest_files=[ "res://.import/msx.png-048931302361c46e2dea865ea468e7ee.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/graffiti/msx_was_here.png b/graphics/graffiti/msx_was_here.png new file mode 100644 index 0000000..2554723 Binary files /dev/null and b/graphics/graffiti/msx_was_here.png differ diff --git a/graphics/graffiti/msx_was_here.png.import b/graphics/graffiti/msx_was_here.png.import new file mode 100644 index 0000000..ad73f48 --- /dev/null +++ b/graphics/graffiti/msx_was_here.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx_was_here.png-32f1e7652867d3f31f30cfec2a95d8c1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/graffiti/msx_was_here.png" +dest_files=[ "res://.import/msx_was_here.png-32f1e7652867d3f31f30cfec2a95d8c1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/graffiti/tgirls_rule.png b/graphics/graffiti/tgirls_rule.png new file mode 100644 index 0000000..23cd428 Binary files /dev/null and b/graphics/graffiti/tgirls_rule.png differ diff --git a/graphics/graffiti/tgirls_rule.png.import b/graphics/graffiti/tgirls_rule.png.import new file mode 100644 index 0000000..f7facc3 --- /dev/null +++ b/graphics/graffiti/tgirls_rule.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tgirls_rule.png-950e00f23b61559d8aebd3aad7c0ee33.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/graffiti/tgirls_rule.png" +dest_files=[ "res://.import/tgirls_rule.png-950e00f23b61559d8aebd3aad7c0ee33.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/2083_energy_back.png b/graphics/hud/2083_energy_back.png new file mode 100644 index 0000000..7d44221 Binary files /dev/null and b/graphics/hud/2083_energy_back.png differ diff --git a/graphics/hud/2083_energy_back.png.import b/graphics/hud/2083_energy_back.png.import new file mode 100644 index 0000000..f7ad9c2 --- /dev/null +++ b/graphics/hud/2083_energy_back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2083_energy_back.png-11dd98a9d72b54c8260155992faf6158.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/2083_energy_back.png" +dest_files=[ "res://.import/2083_energy_back.png-11dd98a9d72b54c8260155992faf6158.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/2083_energy_filled.png b/graphics/hud/2083_energy_filled.png new file mode 100644 index 0000000..95f1101 Binary files /dev/null and b/graphics/hud/2083_energy_filled.png differ diff --git a/graphics/hud/2083_energy_filled.png.import b/graphics/hud/2083_energy_filled.png.import new file mode 100644 index 0000000..f40b60e --- /dev/null +++ b/graphics/hud/2083_energy_filled.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2083_energy_filled.png-33bce25982854ea73e3364035f2d3a2b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/2083_energy_filled.png" +dest_files=[ "res://.import/2083_energy_filled.png-33bce25982854ea73e3364035f2d3a2b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/2083_health_back.png b/graphics/hud/2083_health_back.png new file mode 100644 index 0000000..7222ec1 Binary files /dev/null and b/graphics/hud/2083_health_back.png differ diff --git a/graphics/hud/2083_health_back.png.import b/graphics/hud/2083_health_back.png.import new file mode 100644 index 0000000..c308a09 --- /dev/null +++ b/graphics/hud/2083_health_back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2083_health_back.png-5fcc5a99e8ed1532568696eb69fd0d43.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/2083_health_back.png" +dest_files=[ "res://.import/2083_health_back.png-5fcc5a99e8ed1532568696eb69fd0d43.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/2083_health_filled.png b/graphics/hud/2083_health_filled.png new file mode 100644 index 0000000..6e00191 Binary files /dev/null and b/graphics/hud/2083_health_filled.png differ diff --git a/graphics/hud/2083_health_filled.png.import b/graphics/hud/2083_health_filled.png.import new file mode 100644 index 0000000..ca86966 --- /dev/null +++ b/graphics/hud/2083_health_filled.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2083_health_filled.png-44b40a17a023454bbb8170346f74b17f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/2083_health_filled.png" +dest_files=[ "res://.import/2083_health_filled.png-44b40a17a023454bbb8170346f74b17f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/arrow_down.png b/graphics/hud/arrow_down.png new file mode 100644 index 0000000..b077880 Binary files /dev/null and b/graphics/hud/arrow_down.png differ diff --git a/graphics/hud/arrow_down.png.import b/graphics/hud/arrow_down.png.import new file mode 100644 index 0000000..147e2b1 --- /dev/null +++ b/graphics/hud/arrow_down.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow_down.png-476089e36c213673a0f11adb99cc0724.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/arrow_down.png" +dest_files=[ "res://.import/arrow_down.png-476089e36c213673a0f11adb99cc0724.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/arrow_up.png b/graphics/hud/arrow_up.png new file mode 100644 index 0000000..795cca0 Binary files /dev/null and b/graphics/hud/arrow_up.png differ diff --git a/graphics/hud/arrow_up.png.import b/graphics/hud/arrow_up.png.import new file mode 100644 index 0000000..b303c7a --- /dev/null +++ b/graphics/hud/arrow_up.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow_up.png-afb605e867089f8aedd83a8cc3ba6369.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/arrow_up.png" +dest_files=[ "res://.import/arrow_up.png-afb605e867089f8aedd83a8cc3ba6369.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/back.png b/graphics/hud/back.png new file mode 100644 index 0000000..67dc879 Binary files /dev/null and b/graphics/hud/back.png differ diff --git a/graphics/hud/back.png.import b/graphics/hud/back.png.import new file mode 100644 index 0000000..53429b6 --- /dev/null +++ b/graphics/hud/back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/back.png-af9fa24ee27e034b2c861ccb4762fa95.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/back.png" +dest_files=[ "res://.import/back.png-af9fa24ee27e034b2c861ccb4762fa95.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/back_dim.png b/graphics/hud/back_dim.png new file mode 100644 index 0000000..eee8d27 Binary files /dev/null and b/graphics/hud/back_dim.png differ diff --git a/graphics/hud/back_dim.png.import b/graphics/hud/back_dim.png.import new file mode 100644 index 0000000..3e2d3c8 --- /dev/null +++ b/graphics/hud/back_dim.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/back_dim.png-9b702d592d23c89eb848d819a2b0a7cb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/back_dim.png" +dest_files=[ "res://.import/back_dim.png-9b702d592d23c89eb848d819a2b0a7cb.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/boss_health_back.png b/graphics/hud/boss_health_back.png new file mode 100644 index 0000000..46218a7 Binary files /dev/null and b/graphics/hud/boss_health_back.png differ diff --git a/graphics/hud/boss_health_back.png.import b/graphics/hud/boss_health_back.png.import new file mode 100644 index 0000000..4523486 --- /dev/null +++ b/graphics/hud/boss_health_back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/boss_health_back.png-c5ec975a0abf1a1c0a45705fcc5f82b7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/boss_health_back.png" +dest_files=[ "res://.import/boss_health_back.png-c5ec975a0abf1a1c0a45705fcc5f82b7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/collection_bonus.png b/graphics/hud/collection_bonus.png new file mode 100644 index 0000000..343767d Binary files /dev/null and b/graphics/hud/collection_bonus.png differ diff --git a/graphics/hud/collection_bonus.png.import b/graphics/hud/collection_bonus.png.import new file mode 100644 index 0000000..577f988 --- /dev/null +++ b/graphics/hud/collection_bonus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/collection_bonus.png-c0498f7550478bc8b1614afa3fdb3e89.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/collection_bonus.png" +dest_files=[ "res://.import/collection_bonus.png-c0498f7550478bc8b1614afa3fdb3e89.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/delete.png b/graphics/hud/delete.png new file mode 100644 index 0000000..4029e0f Binary files /dev/null and b/graphics/hud/delete.png differ diff --git a/graphics/hud/delete.png.import b/graphics/hud/delete.png.import new file mode 100644 index 0000000..6c1e3df --- /dev/null +++ b/graphics/hud/delete.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/delete.png-9117bf6c631defbca88858287a9f5ad3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/delete.png" +dest_files=[ "res://.import/delete.png-9117bf6c631defbca88858287a9f5ad3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/delete_dim.png b/graphics/hud/delete_dim.png new file mode 100644 index 0000000..3771d8e Binary files /dev/null and b/graphics/hud/delete_dim.png differ diff --git a/graphics/hud/delete_dim.png.import b/graphics/hud/delete_dim.png.import new file mode 100644 index 0000000..2e0219e --- /dev/null +++ b/graphics/hud/delete_dim.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/delete_dim.png-0fe030b64fef9e199335b59b8477cc54.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/delete_dim.png" +dest_files=[ "res://.import/delete_dim.png-0fe030b64fef9e199335b59b8477cc54.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/famira_health_back.png b/graphics/hud/famira_health_back.png new file mode 100644 index 0000000..a3c9a9c Binary files /dev/null and b/graphics/hud/famira_health_back.png differ diff --git a/graphics/hud/famira_health_back.png.import b/graphics/hud/famira_health_back.png.import new file mode 100644 index 0000000..58ff57d --- /dev/null +++ b/graphics/hud/famira_health_back.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira_health_back.png-e56d7b671e52edb71218a9a73df2de68.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/famira_health_back.png" +dest_files=[ "res://.import/famira_health_back.png-e56d7b671e52edb71218a9a73df2de68.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/famira_health_bar.png b/graphics/hud/famira_health_bar.png new file mode 100644 index 0000000..a6e3946 Binary files /dev/null and b/graphics/hud/famira_health_bar.png differ diff --git a/graphics/hud/famira_health_bar.png.import b/graphics/hud/famira_health_bar.png.import new file mode 100644 index 0000000..e9a001b --- /dev/null +++ b/graphics/hud/famira_health_bar.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira_health_bar.png-063ac979690728319544ff2981510039.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/famira_health_bar.png" +dest_files=[ "res://.import/famira_health_bar.png-063ac979690728319544ff2981510039.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/famira_health_bar_filled.png.import b/graphics/hud/famira_health_bar_filled.png.import new file mode 100644 index 0000000..3bf8b7c --- /dev/null +++ b/graphics/hud/famira_health_bar_filled.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira_health_bar_filled.png-b876077097f24cd200f1d2d915a33255.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/famira_health_bar_filled.png" +dest_files=[ "res://.import/famira_health_bar_filled.png-b876077097f24cd200f1d2d915a33255.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/famira_health_filled.png b/graphics/hud/famira_health_filled.png new file mode 100644 index 0000000..db1fc92 Binary files /dev/null and b/graphics/hud/famira_health_filled.png differ diff --git a/graphics/hud/famira_health_filled.png.import b/graphics/hud/famira_health_filled.png.import new file mode 100644 index 0000000..0ffe6c6 --- /dev/null +++ b/graphics/hud/famira_health_filled.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira_health_filled.png-a06f76ad0a946df51e9ccad3452b0465.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/famira_health_filled.png" +dest_files=[ "res://.import/famira_health_filled.png-a06f76ad0a946df51e9ccad3452b0465.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/file_select_arrow.png b/graphics/hud/file_select_arrow.png new file mode 100644 index 0000000..111ffcc Binary files /dev/null and b/graphics/hud/file_select_arrow.png differ diff --git a/graphics/hud/file_select_arrow.png.import b/graphics/hud/file_select_arrow.png.import new file mode 100644 index 0000000..b9569fd --- /dev/null +++ b/graphics/hud/file_select_arrow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/file_select_arrow.png-c4dd38af48f940ca232cee7aab98deca.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/file_select_arrow.png" +dest_files=[ "res://.import/file_select_arrow.png-c4dd38af48f940ca232cee7aab98deca.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/final_score.png b/graphics/hud/final_score.png new file mode 100644 index 0000000..8d90201 Binary files /dev/null and b/graphics/hud/final_score.png differ diff --git a/graphics/hud/final_score.png.import b/graphics/hud/final_score.png.import new file mode 100644 index 0000000..7b4dcbc --- /dev/null +++ b/graphics/hud/final_score.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/final_score.png-fb476d39fc42e0aa87fe7b2a0ad829cc.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/final_score.png" +dest_files=[ "res://.import/final_score.png-fb476d39fc42e0aa87fe7b2a0ad829cc.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/game_staff.png b/graphics/hud/game_staff.png new file mode 100644 index 0000000..0a75c9f Binary files /dev/null and b/graphics/hud/game_staff.png differ diff --git a/graphics/hud/game_staff.png.import b/graphics/hud/game_staff.png.import new file mode 100644 index 0000000..c2d57db --- /dev/null +++ b/graphics/hud/game_staff.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/game_staff.png-9b292cd6ee053785af7dfc5839c49ecc.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/game_staff.png" +dest_files=[ "res://.import/game_staff.png-9b292cd6ee053785af7dfc5839c49ecc.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/gamepad_buttons.png b/graphics/hud/gamepad_buttons.png new file mode 100644 index 0000000..703f78c Binary files /dev/null and b/graphics/hud/gamepad_buttons.png differ diff --git a/graphics/hud/gamepad_buttons.png.import b/graphics/hud/gamepad_buttons.png.import new file mode 100644 index 0000000..3ca0780 --- /dev/null +++ b/graphics/hud/gamepad_buttons.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/gamepad_buttons.png-2be301e9c2e67e54b73d3d64156de301.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/gamepad_buttons.png" +dest_files=[ "res://.import/gamepad_buttons.png-2be301e9c2e67e54b73d3d64156de301.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/godot_splash.png b/graphics/hud/godot_splash.png new file mode 100644 index 0000000..963a9df Binary files /dev/null and b/graphics/hud/godot_splash.png differ diff --git a/graphics/hud/godot_splash.png.import b/graphics/hud/godot_splash.png.import new file mode 100644 index 0000000..4d61550 --- /dev/null +++ b/graphics/hud/godot_splash.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/godot_splash.png-5d8819d8c94270b9158234d3ebb5bf62.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/godot_splash.png" +dest_files=[ "res://.import/godot_splash.png-5d8819d8c94270b9158234d3ebb5bf62.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/high_score.png b/graphics/hud/high_score.png new file mode 100644 index 0000000..908a3d7 Binary files /dev/null and b/graphics/hud/high_score.png differ diff --git a/graphics/hud/high_score.png.import b/graphics/hud/high_score.png.import new file mode 100644 index 0000000..23b4081 --- /dev/null +++ b/graphics/hud/high_score.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/high_score.png-02ca81bb7439e75fa559a1c0a399afc3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/high_score.png" +dest_files=[ "res://.import/high_score.png-02ca81bb7439e75fa559a1c0a399afc3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/hud.png b/graphics/hud/hud.png index 0374dce..5b18871 100644 Binary files a/graphics/hud/hud.png and b/graphics/hud/hud.png differ diff --git a/graphics/hud/hud_arrow.png b/graphics/hud/hud_arrow.png new file mode 100644 index 0000000..2003e91 Binary files /dev/null and b/graphics/hud/hud_arrow.png differ diff --git a/graphics/hud/hud_arrow.png.import b/graphics/hud/hud_arrow.png.import new file mode 100644 index 0000000..b551078 --- /dev/null +++ b/graphics/hud/hud_arrow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hud_arrow.png-41c44a240363dedbd3291d11e50b15f7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/hud_arrow.png" +dest_files=[ "res://.import/hud_arrow.png-41c44a240363dedbd3291d11e50b15f7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/killmode_skull.png b/graphics/hud/killmode_skull.png new file mode 100644 index 0000000..f66be54 Binary files /dev/null and b/graphics/hud/killmode_skull.png differ diff --git a/graphics/hud/killmode_skull.png.import b/graphics/hud/killmode_skull.png.import new file mode 100644 index 0000000..70b0f95 --- /dev/null +++ b/graphics/hud/killmode_skull.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/killmode_skull.png-b04f545789948a183bd39a46c229e29a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/killmode_skull.png" +dest_files=[ "res://.import/killmode_skull.png-b04f545789948a183bd39a46c229e29a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/laser_ok.png b/graphics/hud/laser_ok.png new file mode 100644 index 0000000..59273b9 Binary files /dev/null and b/graphics/hud/laser_ok.png differ diff --git a/graphics/hud/laser_ok.png.import b/graphics/hud/laser_ok.png.import new file mode 100644 index 0000000..7e74a1b --- /dev/null +++ b/graphics/hud/laser_ok.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/laser_ok.png-126e4d7df435412bb6a8cf636d6c3b24.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/laser_ok.png" +dest_files=[ "res://.import/laser_ok.png-126e4d7df435412bb6a8cf636d6c3b24.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/laser_ok_text.png b/graphics/hud/laser_ok_text.png new file mode 100644 index 0000000..f085abe Binary files /dev/null and b/graphics/hud/laser_ok_text.png differ diff --git a/graphics/hud/laser_ok_text.png.import b/graphics/hud/laser_ok_text.png.import new file mode 100644 index 0000000..c4193ea --- /dev/null +++ b/graphics/hud/laser_ok_text.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/laser_ok_text.png-d6af5ac9f51f62aab017a6b2e8ec549a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/laser_ok_text.png" +dest_files=[ "res://.import/laser_ok_text.png-d6af5ac9f51f62aab017a6b2e8ec549a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/letter_blocks.png b/graphics/hud/letter_blocks.png new file mode 100644 index 0000000..6d4ab15 Binary files /dev/null and b/graphics/hud/letter_blocks.png differ diff --git a/graphics/hud/letter_blocks.png.import b/graphics/hud/letter_blocks.png.import new file mode 100644 index 0000000..f8b9d43 --- /dev/null +++ b/graphics/hud/letter_blocks.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/letter_blocks.png-b999452f443d17ac8d79aa4caf470f5a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/letter_blocks.png" +dest_files=[ "res://.import/letter_blocks.png-b999452f443d17ac8d79aa4caf470f5a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/levelselect_arrow.png b/graphics/hud/levelselect_arrow.png index e151ead..661237e 100644 Binary files a/graphics/hud/levelselect_arrow.png and b/graphics/hud/levelselect_arrow.png differ diff --git a/graphics/hud/life_bonus.png b/graphics/hud/life_bonus.png new file mode 100644 index 0000000..b1ca23e Binary files /dev/null and b/graphics/hud/life_bonus.png differ diff --git a/graphics/hud/life_bonus.png.import b/graphics/hud/life_bonus.png.import new file mode 100644 index 0000000..5c3c8c0 --- /dev/null +++ b/graphics/hud/life_bonus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/life_bonus.png-0f9d1521de3f08e08ca6e0b90e3ef8d2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/life_bonus.png" +dest_files=[ "res://.import/life_bonus.png-0f9d1521de3f08e08ca6e0b90e3ef8d2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/listen_to_the_future.png b/graphics/hud/listen_to_the_future.png new file mode 100644 index 0000000..37d93f5 Binary files /dev/null and b/graphics/hud/listen_to_the_future.png differ diff --git a/graphics/hud/listen_to_the_future.png.import b/graphics/hud/listen_to_the_future.png.import new file mode 100644 index 0000000..900063c --- /dev/null +++ b/graphics/hud/listen_to_the_future.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/listen_to_the_future.png-18afd75ae8025c1763d363989bb142bd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/listen_to_the_future.png" +dest_files=[ "res://.import/listen_to_the_future.png-18afd75ae8025c1763d363989bb142bd.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/lives_head.png b/graphics/hud/lives_head.png index 89a9694..ad20671 100644 Binary files a/graphics/hud/lives_head.png and b/graphics/hud/lives_head.png differ diff --git a/graphics/hud/logo.png b/graphics/hud/logo.png new file mode 100644 index 0000000..5b8142b Binary files /dev/null and b/graphics/hud/logo.png differ diff --git a/graphics/hud/logo.png.import b/graphics/hud/logo.png.import new file mode 100644 index 0000000..5c3731e --- /dev/null +++ b/graphics/hud/logo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/logo.png-987a724a82090f90a871d13e95cc61e2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/logo.png" +dest_files=[ "res://.import/logo.png-987a724a82090f90a871d13e95cc61e2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/missed_shard.png b/graphics/hud/missed_shard.png new file mode 100644 index 0000000..4c360e2 Binary files /dev/null and b/graphics/hud/missed_shard.png differ diff --git a/graphics/hud/missed_shard.png.import b/graphics/hud/missed_shard.png.import new file mode 100644 index 0000000..687ffd8 --- /dev/null +++ b/graphics/hud/missed_shard.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/missed_shard.png-26175a30421cb7606ba8b71e96c137b9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/missed_shard.png" +dest_files=[ "res://.import/missed_shard.png-26175a30421cb7606ba8b71e96c137b9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/mori_mark.png b/graphics/hud/mori_mark.png new file mode 100644 index 0000000..d9e14e1 Binary files /dev/null and b/graphics/hud/mori_mark.png differ diff --git a/graphics/hud/mori_mark.png.import b/graphics/hud/mori_mark.png.import new file mode 100644 index 0000000..ad0b28b --- /dev/null +++ b/graphics/hud/mori_mark.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mori_mark.png-3610f38cc63d9747d05aa7c7b9da1293.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/mori_mark.png" +dest_files=[ "res://.import/mori_mark.png-3610f38cc63d9747d05aa7c7b9da1293.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/mori_mark_100_complete.png b/graphics/hud/mori_mark_100_complete.png new file mode 100644 index 0000000..b45f5c9 Binary files /dev/null and b/graphics/hud/mori_mark_100_complete.png differ diff --git a/graphics/hud/mori_mark_100_complete.png.import b/graphics/hud/mori_mark_100_complete.png.import new file mode 100644 index 0000000..dc69285 --- /dev/null +++ b/graphics/hud/mori_mark_100_complete.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mori_mark_100_complete.png-2509ca697b7483804ebf2c252c02e267.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/mori_mark_100_complete.png" +dest_files=[ "res://.import/mori_mark_100_complete.png-2509ca697b7483804ebf2c252c02e267.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/mori_mark_game_complete.png b/graphics/hud/mori_mark_game_complete.png new file mode 100644 index 0000000..5072390 Binary files /dev/null and b/graphics/hud/mori_mark_game_complete.png differ diff --git a/graphics/hud/mori_mark_game_complete.png.import b/graphics/hud/mori_mark_game_complete.png.import new file mode 100644 index 0000000..b024f39 --- /dev/null +++ b/graphics/hud/mori_mark_game_complete.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mori_mark_game_complete.png-190b43b85747ae66c2992e2a8a07fd96.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/mori_mark_game_complete.png" +dest_files=[ "res://.import/mori_mark_game_complete.png-190b43b85747ae66c2992e2a8a07fd96.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/mori_mark_no_death.png b/graphics/hud/mori_mark_no_death.png new file mode 100644 index 0000000..aa9789c Binary files /dev/null and b/graphics/hud/mori_mark_no_death.png differ diff --git a/graphics/hud/mori_mark_no_death.png.import b/graphics/hud/mori_mark_no_death.png.import new file mode 100644 index 0000000..30d33ce --- /dev/null +++ b/graphics/hud/mori_mark_no_death.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mori_mark_no_death.png-453f189aba54dd64e99be0743422d03b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/mori_mark_no_death.png" +dest_files=[ "res://.import/mori_mark_no_death.png-453f189aba54dd64e99be0743422d03b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/msx_head.png b/graphics/hud/msx_head.png new file mode 100644 index 0000000..0ec7e71 Binary files /dev/null and b/graphics/hud/msx_head.png differ diff --git a/graphics/hud/msx_head.png.import b/graphics/hud/msx_head.png.import new file mode 100644 index 0000000..6f9b78f --- /dev/null +++ b/graphics/hud/msx_head.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx_head.png-fdcdc2eae8f1ff9e51eb57e0483b2b2f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/msx_head.png" +dest_files=[ "res://.import/msx_head.png-fdcdc2eae8f1ff9e51eb57e0483b2b2f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/off_level_indicator.png b/graphics/hud/off_level_indicator.png new file mode 100644 index 0000000..a73bb78 Binary files /dev/null and b/graphics/hud/off_level_indicator.png differ diff --git a/graphics/hud/off_level_indicator.png.import b/graphics/hud/off_level_indicator.png.import new file mode 100644 index 0000000..0f45554 --- /dev/null +++ b/graphics/hud/off_level_indicator.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/off_level_indicator.png-57fb71ce33e59c157912e9700e4a98f6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/off_level_indicator.png" +dest_files=[ "res://.import/off_level_indicator.png-57fb71ce33e59c157912e9700e4a98f6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/oxygen.png b/graphics/hud/oxygen.png new file mode 100644 index 0000000..a46084f Binary files /dev/null and b/graphics/hud/oxygen.png differ diff --git a/graphics/hud/oxygen.png.import b/graphics/hud/oxygen.png.import new file mode 100644 index 0000000..d48e207 --- /dev/null +++ b/graphics/hud/oxygen.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/oxygen.png-bc27b1760336003353c838235a4cb02c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/oxygen.png" +dest_files=[ "res://.import/oxygen.png-bc27b1760336003353c838235a4cb02c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/oxygen_blips.png b/graphics/hud/oxygen_blips.png new file mode 100644 index 0000000..ac4b0f8 Binary files /dev/null and b/graphics/hud/oxygen_blips.png differ diff --git a/graphics/hud/oxygen_blips.png.import b/graphics/hud/oxygen_blips.png.import new file mode 100644 index 0000000..23d038b --- /dev/null +++ b/graphics/hud/oxygen_blips.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/oxygen_blips.png-3f20e6a3a7f5eebc14154a2e2292ed5d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/oxygen_blips.png" +dest_files=[ "res://.import/oxygen_blips.png-3f20e6a3a7f5eebc14154a2e2292ed5d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/oxygen_meter.png b/graphics/hud/oxygen_meter.png new file mode 100644 index 0000000..5357304 Binary files /dev/null and b/graphics/hud/oxygen_meter.png differ diff --git a/graphics/hud/oxygen_meter.png.import b/graphics/hud/oxygen_meter.png.import new file mode 100644 index 0000000..e9aebb3 --- /dev/null +++ b/graphics/hud/oxygen_meter.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/oxygen_meter.png-65332a0e74d166901bfa7ecd6045514f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/oxygen_meter.png" +dest_files=[ "res://.import/oxygen_meter.png-65332a0e74d166901bfa7ecd6045514f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/perfect_bonus.png b/graphics/hud/perfect_bonus.png new file mode 100644 index 0000000..1a5dc88 Binary files /dev/null and b/graphics/hud/perfect_bonus.png differ diff --git a/graphics/hud/perfect_bonus.png.import b/graphics/hud/perfect_bonus.png.import new file mode 100644 index 0000000..d71a669 --- /dev/null +++ b/graphics/hud/perfect_bonus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/perfect_bonus.png-df090bb05894ccbdd3eae2afd31298d4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/perfect_bonus.png" +dest_files=[ "res://.import/perfect_bonus.png-df090bb05894ccbdd3eae2afd31298d4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/results.png b/graphics/hud/results.png new file mode 100644 index 0000000..0df4cae Binary files /dev/null and b/graphics/hud/results.png differ diff --git a/graphics/hud/results.png.import b/graphics/hud/results.png.import new file mode 100644 index 0000000..108632e --- /dev/null +++ b/graphics/hud/results.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/results.png-c3c2389f681d388610852a8c684f356d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/results.png" +dest_files=[ "res://.import/results.png-c3c2389f681d388610852a8c684f356d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/roll_call.png b/graphics/hud/roll_call.png new file mode 100644 index 0000000..07a5bb3 Binary files /dev/null and b/graphics/hud/roll_call.png differ diff --git a/graphics/hud/roll_call.png.import b/graphics/hud/roll_call.png.import new file mode 100644 index 0000000..416869b --- /dev/null +++ b/graphics/hud/roll_call.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/roll_call.png-e7f8615e3b19317abd8b52ddd2f6b60d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/roll_call.png" +dest_files=[ "res://.import/roll_call.png-e7f8615e3b19317abd8b52ddd2f6b60d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/scores/pungent.png b/graphics/hud/scores/pungent.png new file mode 100644 index 0000000..7754646 Binary files /dev/null and b/graphics/hud/scores/pungent.png differ diff --git a/graphics/hud/scores/pungent.png.import b/graphics/hud/scores/pungent.png.import new file mode 100644 index 0000000..1265a85 --- /dev/null +++ b/graphics/hud/scores/pungent.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/pungent.png-e07e66e400d4d252772a81c6867bb967.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/scores/pungent.png" +dest_files=[ "res://.import/pungent.png-e07e66e400d4d252772a81c6867bb967.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/scores/salty.png b/graphics/hud/scores/salty.png new file mode 100644 index 0000000..af22ef1 Binary files /dev/null and b/graphics/hud/scores/salty.png differ diff --git a/graphics/hud/scores/salty.png.import b/graphics/hud/scores/salty.png.import new file mode 100644 index 0000000..06ae307 --- /dev/null +++ b/graphics/hud/scores/salty.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/salty.png-44a2905ee6e3795b4fc59059696696a8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/scores/salty.png" +dest_files=[ "res://.import/salty.png-44a2905ee6e3795b4fc59059696696a8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/scores/spicy.png b/graphics/hud/scores/spicy.png new file mode 100644 index 0000000..ddace82 Binary files /dev/null and b/graphics/hud/scores/spicy.png differ diff --git a/graphics/hud/scores/spicy.png.import b/graphics/hud/scores/spicy.png.import new file mode 100644 index 0000000..2e03a1a --- /dev/null +++ b/graphics/hud/scores/spicy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/spicy.png-a2205eedcb443d8faf52477db79df90f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/scores/spicy.png" +dest_files=[ "res://.import/spicy.png-a2205eedcb443d8faf52477db79df90f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/scores/sweet.png b/graphics/hud/scores/sweet.png new file mode 100644 index 0000000..7dc896c Binary files /dev/null and b/graphics/hud/scores/sweet.png differ diff --git a/graphics/hud/scores/sweet.png.import b/graphics/hud/scores/sweet.png.import new file mode 100644 index 0000000..8ed72ac --- /dev/null +++ b/graphics/hud/scores/sweet.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sweet.png-9fd594d4011ef7c51cf9c89d5c0132b0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/scores/sweet.png" +dest_files=[ "res://.import/sweet.png-9fd594d4011ef7c51cf9c89d5c0132b0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/sg_head.png b/graphics/hud/sg_head.png new file mode 100644 index 0000000..d8e16a5 Binary files /dev/null and b/graphics/hud/sg_head.png differ diff --git a/graphics/hud/sg_head.png.import b/graphics/hud/sg_head.png.import new file mode 100644 index 0000000..cfdc5f7 --- /dev/null +++ b/graphics/hud/sg_head.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_head.png-0b64f276be1b8233fbd11dadbfae739a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/sg_head.png" +dest_files=[ "res://.import/sg_head.png-0b64f276be1b8233fbd11dadbfae739a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/sg_menu.png b/graphics/hud/sg_menu.png new file mode 100644 index 0000000..4d68023 Binary files /dev/null and b/graphics/hud/sg_menu.png differ diff --git a/graphics/hud/sg_menu.png.import b/graphics/hud/sg_menu.png.import new file mode 100644 index 0000000..0b0937d --- /dev/null +++ b/graphics/hud/sg_menu.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_menu.png-1059e958ce9fae654e7b5a67b2bbfacf.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/sg_menu.png" +dest_files=[ "res://.import/sg_menu.png-1059e958ce9fae654e7b5a67b2bbfacf.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/sg_menu_blink.png b/graphics/hud/sg_menu_blink.png new file mode 100644 index 0000000..c9f4766 Binary files /dev/null and b/graphics/hud/sg_menu_blink.png differ diff --git a/graphics/hud/sg_menu_blink.png.import b/graphics/hud/sg_menu_blink.png.import new file mode 100644 index 0000000..53e9a64 --- /dev/null +++ b/graphics/hud/sg_menu_blink.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_menu_blink.png-52c2e781126ecac40e3e1a9c6b79cf1c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/sg_menu_blink.png" +dest_files=[ "res://.import/sg_menu_blink.png-52c2e781126ecac40e3e1a9c6b79cf1c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/sg_tasting.png b/graphics/hud/sg_tasting.png new file mode 100644 index 0000000..13908f0 Binary files /dev/null and b/graphics/hud/sg_tasting.png differ diff --git a/graphics/hud/sg_tasting.png.import b/graphics/hud/sg_tasting.png.import new file mode 100644 index 0000000..ceb6459 --- /dev/null +++ b/graphics/hud/sg_tasting.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_tasting.png-33c5875536743f0990f8d054dfbbfa21.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/sg_tasting.png" +dest_files=[ "res://.import/sg_tasting.png-33c5875536743f0990f8d054dfbbfa21.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/shard_counter.png.import b/graphics/hud/shard_counter.png.import new file mode 100644 index 0000000..ea8ef57 --- /dev/null +++ b/graphics/hud/shard_counter.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shard_counter.png-21107511ef3e175bf6cbab17710b5745.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/shard_counter.png" +dest_files=[ "res://.import/shard_counter.png-21107511ef3e175bf6cbab17710b5745.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/sound_test_arrow.png b/graphics/hud/sound_test_arrow.png new file mode 100644 index 0000000..bc1e20c Binary files /dev/null and b/graphics/hud/sound_test_arrow.png differ diff --git a/graphics/hud/sound_test_arrow.png.import b/graphics/hud/sound_test_arrow.png.import new file mode 100644 index 0000000..c50f8d2 --- /dev/null +++ b/graphics/hud/sound_test_arrow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sound_test_arrow.png-03e263e7b69b8c981df8a10023a98da6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/sound_test_arrow.png" +dest_files=[ "res://.import/sound_test_arrow.png-03e263e7b69b8c981df8a10023a98da6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/sound_test_title.png b/graphics/hud/sound_test_title.png new file mode 100644 index 0000000..2352aac Binary files /dev/null and b/graphics/hud/sound_test_title.png differ diff --git a/graphics/hud/sound_test_title.png.import b/graphics/hud/sound_test_title.png.import new file mode 100644 index 0000000..ccc63c0 --- /dev/null +++ b/graphics/hud/sound_test_title.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sound_test_title.png-4be45a72e6dcc1d358ca74117086ca3d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/sound_test_title.png" +dest_files=[ "res://.import/sound_test_title.png-4be45a72e6dcc1d358ca74117086ca3d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speccy/break_the_glass.png b/graphics/hud/speccy/break_the_glass.png new file mode 100644 index 0000000..91b6e49 Binary files /dev/null and b/graphics/hud/speccy/break_the_glass.png differ diff --git a/graphics/hud/speccy/break_the_glass.png.import b/graphics/hud/speccy/break_the_glass.png.import new file mode 100644 index 0000000..e130b48 --- /dev/null +++ b/graphics/hud/speccy/break_the_glass.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/break_the_glass.png-322e406de2ce417c6947e7c51513424a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speccy/break_the_glass.png" +dest_files=[ "res://.import/break_the_glass.png-322e406de2ce417c6947e7c51513424a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speccy/go_get_em.png b/graphics/hud/speccy/go_get_em.png new file mode 100644 index 0000000..a258c9b Binary files /dev/null and b/graphics/hud/speccy/go_get_em.png differ diff --git a/graphics/hud/speccy/go_get_em.png.import b/graphics/hud/speccy/go_get_em.png.import new file mode 100644 index 0000000..f6a343a --- /dev/null +++ b/graphics/hud/speccy/go_get_em.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/go_get_em.png-80076e7e728e92f49b471d7986a620fe.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speccy/go_get_em.png" +dest_files=[ "res://.import/go_get_em.png-80076e7e728e92f49b471d7986a620fe.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speccy/kill_em_all.png b/graphics/hud/speccy/kill_em_all.png new file mode 100644 index 0000000..2b12863 Binary files /dev/null and b/graphics/hud/speccy/kill_em_all.png differ diff --git a/graphics/hud/speccy/kill_em_all.png.import b/graphics/hud/speccy/kill_em_all.png.import new file mode 100644 index 0000000..ecf5766 --- /dev/null +++ b/graphics/hud/speccy/kill_em_all.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/kill_em_all.png-043b29a5fc7f16177492c344511e8a3a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speccy/kill_em_all.png" +dest_files=[ "res://.import/kill_em_all.png-043b29a5fc7f16177492c344511e8a3a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speccy/oi_go_right.png b/graphics/hud/speccy/oi_go_right.png new file mode 100644 index 0000000..dcde1da Binary files /dev/null and b/graphics/hud/speccy/oi_go_right.png differ diff --git a/graphics/hud/speccy/oi_go_right.png.import b/graphics/hud/speccy/oi_go_right.png.import new file mode 100644 index 0000000..bf4083e --- /dev/null +++ b/graphics/hud/speccy/oi_go_right.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/oi_go_right.png-23a20f2a0d8cb4ec57588e4ae39867a8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speccy/oi_go_right.png" +dest_files=[ "res://.import/oi_go_right.png-23a20f2a0d8cb4ec57588e4ae39867a8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speccy/over_here.png b/graphics/hud/speccy/over_here.png new file mode 100644 index 0000000..af337fd Binary files /dev/null and b/graphics/hud/speccy/over_here.png differ diff --git a/graphics/hud/speccy/over_here.png.import b/graphics/hud/speccy/over_here.png.import new file mode 100644 index 0000000..48a4d32 --- /dev/null +++ b/graphics/hud/speccy/over_here.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/over_here.png-aea3855eafdcaa5c5f0a21f9ac1c64a0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speccy/over_here.png" +dest_files=[ "res://.import/over_here.png-aea3855eafdcaa5c5f0a21f9ac1c64a0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speccy/shoot_that_thing.png b/graphics/hud/speccy/shoot_that_thing.png new file mode 100644 index 0000000..284ea08 Binary files /dev/null and b/graphics/hud/speccy/shoot_that_thing.png differ diff --git a/graphics/hud/speccy/shoot_that_thing.png.import b/graphics/hud/speccy/shoot_that_thing.png.import new file mode 100644 index 0000000..5347456 --- /dev/null +++ b/graphics/hud/speccy/shoot_that_thing.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shoot_that_thing.png-967594bf022da78bfe418a0ac5073eda.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speccy/shoot_that_thing.png" +dest_files=[ "res://.import/shoot_that_thing.png-967594bf022da78bfe418a0ac5073eda.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speccy/shoot_the_eye.png b/graphics/hud/speccy/shoot_the_eye.png new file mode 100644 index 0000000..712c2ce Binary files /dev/null and b/graphics/hud/speccy/shoot_the_eye.png differ diff --git a/graphics/hud/speccy/shoot_the_eye.png.import b/graphics/hud/speccy/shoot_the_eye.png.import new file mode 100644 index 0000000..66c1332 --- /dev/null +++ b/graphics/hud/speccy/shoot_the_eye.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shoot_the_eye.png-483a88ff92e95a40ee9cfc88aa6084cb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speccy/shoot_the_eye.png" +dest_files=[ "res://.import/shoot_the_eye.png-483a88ff92e95a40ee9cfc88aa6084cb.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/speech_bubble.png b/graphics/hud/speech_bubble.png new file mode 100644 index 0000000..10b708c Binary files /dev/null and b/graphics/hud/speech_bubble.png differ diff --git a/graphics/hud/speech_bubble.png.import b/graphics/hud/speech_bubble.png.import new file mode 100644 index 0000000..9f4bf8c --- /dev/null +++ b/graphics/hud/speech_bubble.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/speech_bubble.png-432aa9dcde6a27c31b84f7cece92306f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/speech_bubble.png" +dest_files=[ "res://.import/speech_bubble.png-432aa9dcde6a27c31b84f7cece92306f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/team_sg_logo.png b/graphics/hud/team_sg_logo.png new file mode 100644 index 0000000..59f8ca9 Binary files /dev/null and b/graphics/hud/team_sg_logo.png differ diff --git a/graphics/hud/team_sg_logo.png.import b/graphics/hud/team_sg_logo.png.import new file mode 100644 index 0000000..937e35d --- /dev/null +++ b/graphics/hud/team_sg_logo.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/team_sg_logo.png-417aa1cf589d0b9ccf8914bde098b763.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/team_sg_logo.png" +dest_files=[ "res://.import/team_sg_logo.png-417aa1cf589d0b9ccf8914bde098b763.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/team_sg_splash.png b/graphics/hud/team_sg_splash.png new file mode 100644 index 0000000..85b5037 Binary files /dev/null and b/graphics/hud/team_sg_splash.png differ diff --git a/graphics/hud/team_sg_splash.png.import b/graphics/hud/team_sg_splash.png.import new file mode 100644 index 0000000..ed6e833 --- /dev/null +++ b/graphics/hud/team_sg_splash.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/team_sg_splash.png-23db1fe9018a61fe815d83158426f094.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/team_sg_splash.png" +dest_files=[ "res://.import/team_sg_splash.png-23db1fe9018a61fe815d83158426f094.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/thankyou.png b/graphics/hud/thankyou.png new file mode 100644 index 0000000..adb30c9 Binary files /dev/null and b/graphics/hud/thankyou.png differ diff --git a/graphics/hud/thankyou.png.import b/graphics/hud/thankyou.png.import new file mode 100644 index 0000000..e7d359a --- /dev/null +++ b/graphics/hud/thankyou.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/thankyou.png-b548ea25ae4942012c22eb964f92a049.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/thankyou.png" +dest_files=[ "res://.import/thankyou.png-b548ea25ae4942012c22eb964f92a049.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/time_bonus.png b/graphics/hud/time_bonus.png new file mode 100644 index 0000000..f4e3215 Binary files /dev/null and b/graphics/hud/time_bonus.png differ diff --git a/graphics/hud/time_bonus.png.import b/graphics/hud/time_bonus.png.import new file mode 100644 index 0000000..35bc08a --- /dev/null +++ b/graphics/hud/time_bonus.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/time_bonus.png-663cd5c7331098252c03675e887c4123.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/time_bonus.png" +dest_files=[ "res://.import/time_bonus.png-663cd5c7331098252c03675e887c4123.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/title_credits.png b/graphics/hud/title_credits.png new file mode 100644 index 0000000..6ebb035 Binary files /dev/null and b/graphics/hud/title_credits.png differ diff --git a/graphics/hud/title_credits.png.import b/graphics/hud/title_credits.png.import new file mode 100644 index 0000000..fb4e5ee --- /dev/null +++ b/graphics/hud/title_credits.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/title_credits.png-639d7382e4b0b843e258deacb1d11d62.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/title_credits.png" +dest_files=[ "res://.import/title_credits.png-639d7382e4b0b843e258deacb1d11d62.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/level_select/small_sg.png b/graphics/level_select/small_sg.png new file mode 100644 index 0000000..00710d9 Binary files /dev/null and b/graphics/level_select/small_sg.png differ diff --git a/graphics/level_select/small_sg.png.import b/graphics/level_select/small_sg.png.import new file mode 100644 index 0000000..89c353a --- /dev/null +++ b/graphics/level_select/small_sg.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/small_sg.png-1e404b8f0979e895a2dcca9c5f498c3c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/level_select/small_sg.png" +dest_files=[ "res://.import/small_sg.png-1e404b8f0979e895a2dcca9c5f498c3c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/level_select/wave.tres b/graphics/level_select/wave.tres new file mode 100644 index 0000000..4f2b83d --- /dev/null +++ b/graphics/level_select/wave.tres @@ -0,0 +1,14 @@ +[gd_resource type="AnimatedTexture" load_steps=4 format=2] + +[ext_resource path="res://graphics/level_select/wave_1.png" type="Texture" id=1] +[ext_resource path="res://graphics/level_select/wave_2.png" type="Texture" id=2] +[ext_resource path="res://graphics/level_select/wave_3.png" type="Texture" id=3] + +[resource] +frames = 3 +fps = 8.0 +frame_0/texture = ExtResource( 1 ) +frame_1/texture = ExtResource( 2 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 3 ) +frame_2/delay_sec = 0.0 diff --git a/graphics/level_select/wave_particle.png b/graphics/level_select/wave_particle.png new file mode 100644 index 0000000..0959e5b Binary files /dev/null and b/graphics/level_select/wave_particle.png differ diff --git a/graphics/level_select/wave_particle.png.import b/graphics/level_select/wave_particle.png.import new file mode 100644 index 0000000..4297765 --- /dev/null +++ b/graphics/level_select/wave_particle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/wave_particle.png-0766fcb01570705c5441be7b8bb455f9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/level_select/wave_particle.png" +dest_files=[ "res://.import/wave_particle.png-0766fcb01570705c5441be7b8bb455f9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/level_select/waves_mask.png b/graphics/level_select/waves_mask.png new file mode 100644 index 0000000..3cb98cc Binary files /dev/null and b/graphics/level_select/waves_mask.png differ diff --git a/graphics/level_select/waves_mask.png.import b/graphics/level_select/waves_mask.png.import new file mode 100644 index 0000000..3d08ad3 --- /dev/null +++ b/graphics/level_select/waves_mask.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/waves_mask.png-0b5b86f235e2682fba9f9ac40ac7f640.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/level_select/waves_mask.png" +dest_files=[ "res://.import/waves_mask.png-0b5b86f235e2682fba9f9ac40ac7f640.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/level_select/whirlpool.png b/graphics/level_select/whirlpool.png new file mode 100644 index 0000000..8f5db4b Binary files /dev/null and b/graphics/level_select/whirlpool.png differ diff --git a/graphics/level_select/whirlpool.png.import b/graphics/level_select/whirlpool.png.import new file mode 100644 index 0000000..7dfbdaf --- /dev/null +++ b/graphics/level_select/whirlpool.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/whirlpool.png-93394bcc546b149f80fec79f58a2fa75.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/level_select/whirlpool.png" +dest_files=[ "res://.import/whirlpool.png-93394bcc546b149f80fec79f58a2fa75.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/level_select/whirlpool.xcf b/graphics/level_select/whirlpool.xcf new file mode 100644 index 0000000..1c875ba Binary files /dev/null and b/graphics/level_select/whirlpool.xcf differ diff --git a/graphics/level_select/world_map.png b/graphics/level_select/world_map.png new file mode 100644 index 0000000..cfc8e32 Binary files /dev/null and b/graphics/level_select/world_map.png differ diff --git a/graphics/level_select/world_map.png.import b/graphics/level_select/world_map.png.import new file mode 100644 index 0000000..dc5f7a1 --- /dev/null +++ b/graphics/level_select/world_map.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/world_map.png-c7670ec033333050c2cad389b5ebb694.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/level_select/world_map.png" +dest_files=[ "res://.import/world_map.png-c7670ec033333050c2cad389b5ebb694.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/level_select/world_map.xcf b/graphics/level_select/world_map.xcf new file mode 100644 index 0000000..0714bf8 Binary files /dev/null and b/graphics/level_select/world_map.xcf differ diff --git a/graphics/lore/2083_lore.png b/graphics/lore/2083_lore.png new file mode 100644 index 0000000..39bc8ff Binary files /dev/null and b/graphics/lore/2083_lore.png differ diff --git a/graphics/lore/2083_lore.png.import b/graphics/lore/2083_lore.png.import new file mode 100644 index 0000000..b24812c --- /dev/null +++ b/graphics/lore/2083_lore.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2083_lore.png-413754d57591d2753b78fb7adaeaaa9f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/2083_lore.png" +dest_files=[ "res://.import/2083_lore.png-413754d57591d2753b78fb7adaeaaa9f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/2600_lore.png b/graphics/lore/2600_lore.png new file mode 100644 index 0000000..71df6a3 Binary files /dev/null and b/graphics/lore/2600_lore.png differ diff --git a/graphics/lore/2600_lore.png.import b/graphics/lore/2600_lore.png.import new file mode 100644 index 0000000..0f2faa6 --- /dev/null +++ b/graphics/lore/2600_lore.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2600_lore.png-639cdd01246046c019315da6b29b0244.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/2600_lore.png" +dest_files=[ "res://.import/2600_lore.png-639cdd01246046c019315da6b29b0244.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/arlingwood_graveyard.png b/graphics/lore/arlingwood_graveyard.png new file mode 100644 index 0000000..4939a9a Binary files /dev/null and b/graphics/lore/arlingwood_graveyard.png differ diff --git a/graphics/lore/arlingwood_graveyard.png.import b/graphics/lore/arlingwood_graveyard.png.import new file mode 100644 index 0000000..e55a2f2 --- /dev/null +++ b/graphics/lore/arlingwood_graveyard.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arlingwood_graveyard.png-dcf19c4ee26882dff177a70d66d68e6f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/arlingwood_graveyard.png" +dest_files=[ "res://.import/arlingwood_graveyard.png-dcf19c4ee26882dff177a70d66d68e6f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/artificial_soul_lore.png b/graphics/lore/artificial_soul_lore.png new file mode 100644 index 0000000..7ae45f2 Binary files /dev/null and b/graphics/lore/artificial_soul_lore.png differ diff --git a/graphics/lore/artificial_soul_lore.png.import b/graphics/lore/artificial_soul_lore.png.import new file mode 100644 index 0000000..746e826 --- /dev/null +++ b/graphics/lore/artificial_soul_lore.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/artificial_soul_lore.png-ccae07a62b43ff1af6289ea38581667f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/artificial_soul_lore.png" +dest_files=[ "res://.import/artificial_soul_lore.png-ccae07a62b43ff1af6289ea38581667f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/beel_lore.png b/graphics/lore/beel_lore.png new file mode 100644 index 0000000..8c44d5f Binary files /dev/null and b/graphics/lore/beel_lore.png differ diff --git a/graphics/lore/beel_lore.png.import b/graphics/lore/beel_lore.png.import new file mode 100644 index 0000000..d62d465 --- /dev/null +++ b/graphics/lore/beel_lore.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/beel_lore.png-3a17d7be0c6bde0fd16f64d711fbd08d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/beel_lore.png" +dest_files=[ "res://.import/beel_lore.png-3a17d7be0c6bde0fd16f64d711fbd08d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/crater_of_the_abyss.png b/graphics/lore/crater_of_the_abyss.png new file mode 100644 index 0000000..47ee482 Binary files /dev/null and b/graphics/lore/crater_of_the_abyss.png differ diff --git a/graphics/lore/crater_of_the_abyss.png.import b/graphics/lore/crater_of_the_abyss.png.import new file mode 100644 index 0000000..6d36fa4 --- /dev/null +++ b/graphics/lore/crater_of_the_abyss.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/crater_of_the_abyss.png-44342320e1396b51a3b006db6564a8b9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/crater_of_the_abyss.png" +dest_files=[ "res://.import/crater_of_the_abyss.png-44342320e1396b51a3b006db6564a8b9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/echo_mountain.png b/graphics/lore/echo_mountain.png index 81fb846..6ca6d56 100644 Binary files a/graphics/lore/echo_mountain.png and b/graphics/lore/echo_mountain.png differ diff --git a/graphics/lore/famis_lab.png b/graphics/lore/famis_lab.png new file mode 100644 index 0000000..9d0a447 Binary files /dev/null and b/graphics/lore/famis_lab.png differ diff --git a/graphics/lore/famis_lab.png.import b/graphics/lore/famis_lab.png.import new file mode 100644 index 0000000..68c247d --- /dev/null +++ b/graphics/lore/famis_lab.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famis_lab.png-efe18e972d1c3612155057cea6d183e6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/famis_lab.png" +dest_files=[ "res://.import/famis_lab.png-efe18e972d1c3612155057cea6d183e6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/police_station.png b/graphics/lore/police_station.png new file mode 100644 index 0000000..7a93790 Binary files /dev/null and b/graphics/lore/police_station.png differ diff --git a/graphics/lore/police_station.png.import b/graphics/lore/police_station.png.import new file mode 100644 index 0000000..738aa00 --- /dev/null +++ b/graphics/lore/police_station.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/police_station.png-e1ce5a436800b65847372b057e912ee2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/police_station.png" +dest_files=[ "res://.import/police_station.png-e1ce5a436800b65847372b057e912ee2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/roboturret_lore.png b/graphics/lore/roboturret_lore.png new file mode 100644 index 0000000..5a5827b Binary files /dev/null and b/graphics/lore/roboturret_lore.png differ diff --git a/graphics/lore/roboturret_lore.png.import b/graphics/lore/roboturret_lore.png.import new file mode 100644 index 0000000..af6b122 --- /dev/null +++ b/graphics/lore/roboturret_lore.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/roboturret_lore.png-8fad4290cd0d33277422bca7007e004f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/roboturret_lore.png" +dest_files=[ "res://.import/roboturret_lore.png-8fad4290cd0d33277422bca7007e004f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/rust_inc.png b/graphics/lore/rust_inc.png new file mode 100644 index 0000000..65e7a57 Binary files /dev/null and b/graphics/lore/rust_inc.png differ diff --git a/graphics/lore/rust_inc.png.import b/graphics/lore/rust_inc.png.import new file mode 100644 index 0000000..0f5c48a --- /dev/null +++ b/graphics/lore/rust_inc.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/rust_inc.png-b66eb29b8ed3924f77cae1a82c2fc5d6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/rust_inc.png" +dest_files=[ "res://.import/rust_inc.png-b66eb29b8ed3924f77cae1a82c2fc5d6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/scrump_lore.png b/graphics/lore/scrump_lore.png new file mode 100644 index 0000000..66ef174 Binary files /dev/null and b/graphics/lore/scrump_lore.png differ diff --git a/graphics/lore/scrump_lore.png.import b/graphics/lore/scrump_lore.png.import new file mode 100644 index 0000000..62192c1 --- /dev/null +++ b/graphics/lore/scrump_lore.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/scrump_lore.png-91e5f3c77b57e010126e8911c72a1858.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/scrump_lore.png" +dest_files=[ "res://.import/scrump_lore.png-91e5f3c77b57e010126e8911c72a1858.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/steel_factory.png b/graphics/lore/steel_factory.png new file mode 100644 index 0000000..d9a7d1d Binary files /dev/null and b/graphics/lore/steel_factory.png differ diff --git a/graphics/lore/steel_factory.png.import b/graphics/lore/steel_factory.png.import new file mode 100644 index 0000000..1a5bf8f --- /dev/null +++ b/graphics/lore/steel_factory.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/steel_factory.png-23add5a49d9fa73768acb4c5ab2d9ca3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/steel_factory.png" +dest_files=[ "res://.import/steel_factory.png-23add5a49d9fa73768acb4c5ab2d9ca3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/lore/tin_lore.png b/graphics/lore/tin_lore.png new file mode 100644 index 0000000..933c9d4 Binary files /dev/null and b/graphics/lore/tin_lore.png differ diff --git a/graphics/lore/tin_lore.png.import b/graphics/lore/tin_lore.png.import new file mode 100644 index 0000000..6492ddc --- /dev/null +++ b/graphics/lore/tin_lore.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tin_lore.png-875eab5ed3581c466d94f045212ca393.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/lore/tin_lore.png" +dest_files=[ "res://.import/tin_lore.png-875eab5ed3581c466d94f045212ca393.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/elaine.png b/graphics/npc/elaine.png new file mode 100644 index 0000000..4c68d6f Binary files /dev/null and b/graphics/npc/elaine.png differ diff --git a/graphics/npc/elaine.png.import b/graphics/npc/elaine.png.import new file mode 100644 index 0000000..1cd1ced --- /dev/null +++ b/graphics/npc/elaine.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/elaine.png-2d997800668116b1ce6cddc2ee61d768.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/elaine.png" +dest_files=[ "res://.import/elaine.png-2d997800668116b1ce6cddc2ee61d768.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/fami_human.png b/graphics/npc/fami_human.png new file mode 100644 index 0000000..230f41f Binary files /dev/null and b/graphics/npc/fami_human.png differ diff --git a/graphics/npc/fami_human.png.import b/graphics/npc/fami_human.png.import new file mode 100644 index 0000000..f0c79c7 --- /dev/null +++ b/graphics/npc/fami_human.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fami_human.png-c8272874b8b4943e946edb63a2b57912.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/fami_human.png" +dest_files=[ "res://.import/fami_human.png-c8272874b8b4943e946edb63a2b57912.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/fami_human_laugh.png b/graphics/npc/fami_human_laugh.png new file mode 100644 index 0000000..5845521 Binary files /dev/null and b/graphics/npc/fami_human_laugh.png differ diff --git a/graphics/npc/fami_human_laugh.png.import b/graphics/npc/fami_human_laugh.png.import new file mode 100644 index 0000000..dc4c7bb --- /dev/null +++ b/graphics/npc/fami_human_laugh.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fami_human_laugh.png-29e0d3a9f74034394b8f6007e6ef3b51.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/fami_human_laugh.png" +dest_files=[ "res://.import/fami_human_laugh.png-29e0d3a9f74034394b8f6007e6ef3b51.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/fami_human_punch.png b/graphics/npc/fami_human_punch.png new file mode 100644 index 0000000..1b8d9e7 Binary files /dev/null and b/graphics/npc/fami_human_punch.png differ diff --git a/graphics/npc/fami_human_punch.png.import b/graphics/npc/fami_human_punch.png.import new file mode 100644 index 0000000..47a158e --- /dev/null +++ b/graphics/npc/fami_human_punch.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fami_human_punch.png-3abbf294e7d6a39085ec2aeb01159189.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/fami_human_punch.png" +dest_files=[ "res://.import/fami_human_punch.png-3abbf294e7d6a39085ec2aeb01159189.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/fami_human_transform.png b/graphics/npc/fami_human_transform.png new file mode 100644 index 0000000..3cc4c38 Binary files /dev/null and b/graphics/npc/fami_human_transform.png differ diff --git a/graphics/npc/fami_human_transform.png.import b/graphics/npc/fami_human_transform.png.import new file mode 100644 index 0000000..63f1894 --- /dev/null +++ b/graphics/npc/fami_human_transform.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fami_human_transform.png-2f2a884b33decf15ad67d39c6798c5de.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/fami_human_transform.png" +dest_files=[ "res://.import/fami_human_transform.png-2f2a884b33decf15ad67d39c6798c5de.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/fami_human_walk.png b/graphics/npc/fami_human_walk.png new file mode 100644 index 0000000..90d8031 Binary files /dev/null and b/graphics/npc/fami_human_walk.png differ diff --git a/graphics/npc/fami_human_walk.png.import b/graphics/npc/fami_human_walk.png.import new file mode 100644 index 0000000..cc05663 --- /dev/null +++ b/graphics/npc/fami_human_walk.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fami_human_walk.png-0bdff16bec74475af4c98568148c5f60.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/fami_human_walk.png" +dest_files=[ "res://.import/fami_human_walk.png-0bdff16bec74475af4c98568148c5f60.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/haze.png b/graphics/npc/haze.png new file mode 100644 index 0000000..895b19d Binary files /dev/null and b/graphics/npc/haze.png differ diff --git a/graphics/npc/haze.png.import b/graphics/npc/haze.png.import new file mode 100644 index 0000000..1727763 --- /dev/null +++ b/graphics/npc/haze.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/haze.png-b483c72d2cdabfa5fdaaaf0dcb693e88.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/haze.png" +dest_files=[ "res://.import/haze.png-b483c72d2cdabfa5fdaaaf0dcb693e88.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/intelli_head.png b/graphics/npc/intelli_head.png new file mode 100644 index 0000000..649282f Binary files /dev/null and b/graphics/npc/intelli_head.png differ diff --git a/graphics/npc/intelli_head.png.import b/graphics/npc/intelli_head.png.import new file mode 100644 index 0000000..721fab6 --- /dev/null +++ b/graphics/npc/intelli_head.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/intelli_head.png-9f4bf937d24c38cc981e0b0aff9115cf.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/intelli_head.png" +dest_files=[ "res://.import/intelli_head.png-9f4bf937d24c38cc981e0b0aff9115cf.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/intelli_idle.png b/graphics/npc/intelli_idle.png new file mode 100644 index 0000000..ccc4bdf Binary files /dev/null and b/graphics/npc/intelli_idle.png differ diff --git a/graphics/npc/intelli_idle.png.import b/graphics/npc/intelli_idle.png.import new file mode 100644 index 0000000..26c174b --- /dev/null +++ b/graphics/npc/intelli_idle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/intelli_idle.png-7a45754f787286146055a5bdc790c40a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/intelli_idle.png" +dest_files=[ "res://.import/intelli_idle.png-7a45754f787286146055a5bdc790c40a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/intelli_pod.png.import b/graphics/npc/intelli_pod.png.import new file mode 100644 index 0000000..2ee5deb --- /dev/null +++ b/graphics/npc/intelli_pod.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/intelli_pod.png-bebe1d4f21b18e23f590810c176320c5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/intelli_pod.png" +dest_files=[ "res://.import/intelli_pod.png-bebe1d4f21b18e23f590810c176320c5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/ivy.png b/graphics/npc/ivy.png new file mode 100644 index 0000000..1bd6dda Binary files /dev/null and b/graphics/npc/ivy.png differ diff --git a/graphics/npc/ivy.png.import b/graphics/npc/ivy.png.import new file mode 100644 index 0000000..4218087 --- /dev/null +++ b/graphics/npc/ivy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/ivy.png-c6a8f5eae7fe59d41bed18257e0d1b63.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/ivy.png" +dest_files=[ "res://.import/ivy.png-c6a8f5eae7fe59d41bed18257e0d1b63.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/kiki_dog.png b/graphics/npc/kiki_dog.png new file mode 100644 index 0000000..d0a739b Binary files /dev/null and b/graphics/npc/kiki_dog.png differ diff --git a/graphics/npc/kiki_dog.png.import b/graphics/npc/kiki_dog.png.import new file mode 100644 index 0000000..3fd24f6 --- /dev/null +++ b/graphics/npc/kiki_dog.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/kiki_dog.png-562218a12eeaaf2e2134ec7dbe875a1a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/kiki_dog.png" +dest_files=[ "res://.import/kiki_dog.png-562218a12eeaaf2e2134ec7dbe875a1a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/msx_blink.png b/graphics/npc/msx_blink.png new file mode 100644 index 0000000..54236d0 Binary files /dev/null and b/graphics/npc/msx_blink.png differ diff --git a/graphics/npc/msx_blink.png.import b/graphics/npc/msx_blink.png.import new file mode 100644 index 0000000..a71262c --- /dev/null +++ b/graphics/npc/msx_blink.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx_blink.png-3e81cac31b42c7066c74bede693edca4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/msx_blink.png" +dest_files=[ "res://.import/msx_blink.png-3e81cac31b42c7066c74bede693edca4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/msx_future.png b/graphics/npc/msx_future.png new file mode 100644 index 0000000..b101777 Binary files /dev/null and b/graphics/npc/msx_future.png differ diff --git a/graphics/npc/msx_future.png.import b/graphics/npc/msx_future.png.import new file mode 100644 index 0000000..ae1e579 --- /dev/null +++ b/graphics/npc/msx_future.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx_future.png-f80025a99339fb4cc97772ee4a9ac9d4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/msx_future.png" +dest_files=[ "res://.import/msx_future.png-f80025a99339fb4cc97772ee4a9ac9d4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/msx_respawn.png b/graphics/npc/msx_respawn.png new file mode 100644 index 0000000..0747802 Binary files /dev/null and b/graphics/npc/msx_respawn.png differ diff --git a/graphics/npc/msx_respawn.png.import b/graphics/npc/msx_respawn.png.import new file mode 100644 index 0000000..37f3179 --- /dev/null +++ b/graphics/npc/msx_respawn.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/msx_respawn.png-079d35100957fd3b65980cf58702fa84.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/msx_respawn.png" +dest_files=[ "res://.import/msx_respawn.png-079d35100957fd3b65980cf58702fa84.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/msx_walk.png b/graphics/npc/msx_walk.png index 5fe131c..5ec524d 100644 Binary files a/graphics/npc/msx_walk.png and b/graphics/npc/msx_walk.png differ diff --git a/graphics/npc/penny.png b/graphics/npc/penny.png new file mode 100644 index 0000000..862d912 Binary files /dev/null and b/graphics/npc/penny.png differ diff --git a/graphics/npc/penny.png.import b/graphics/npc/penny.png.import new file mode 100644 index 0000000..809fc6d --- /dev/null +++ b/graphics/npc/penny.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/penny.png-be9d1011ecdcce51cd716f48371b95fa.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/penny.png" +dest_files=[ "res://.import/penny.png-be9d1011ecdcce51cd716f48371b95fa.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/sg_future.png b/graphics/npc/sg_future.png new file mode 100644 index 0000000..20c10ec Binary files /dev/null and b/graphics/npc/sg_future.png differ diff --git a/graphics/npc/sg_future.png.import b/graphics/npc/sg_future.png.import new file mode 100644 index 0000000..cf20b60 --- /dev/null +++ b/graphics/npc/sg_future.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_future.png-cdbd7c9b08828f45ce5d3a3faf7f2693.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/sg_future.png" +dest_files=[ "res://.import/sg_future.png-cdbd7c9b08828f45ce5d3a3faf7f2693.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/sms.png b/graphics/npc/sms.png new file mode 100644 index 0000000..55b24d6 Binary files /dev/null and b/graphics/npc/sms.png differ diff --git a/graphics/npc/sms.png.import b/graphics/npc/sms.png.import new file mode 100644 index 0000000..95dc577 --- /dev/null +++ b/graphics/npc/sms.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sms.png-d86229f2d402f74a94586086e38351f0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/sms.png" +dest_files=[ "res://.import/sms.png-d86229f2d402f74a94586086e38351f0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/speccy.png b/graphics/npc/speccy.png new file mode 100644 index 0000000..cd69a11 Binary files /dev/null and b/graphics/npc/speccy.png differ diff --git a/graphics/npc/speccy.png.import b/graphics/npc/speccy.png.import new file mode 100644 index 0000000..fec1991 --- /dev/null +++ b/graphics/npc/speccy.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/speccy.png-6a5559d75a077641c7ee8b3aa2431551.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/speccy.png" +dest_files=[ "res://.import/speccy.png-6a5559d75a077641c7ee8b3aa2431551.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/speccy_cool.png b/graphics/npc/speccy_cool.png new file mode 100644 index 0000000..bca34f7 Binary files /dev/null and b/graphics/npc/speccy_cool.png differ diff --git a/graphics/npc/speccy_cool.png.import b/graphics/npc/speccy_cool.png.import new file mode 100644 index 0000000..3537f3d --- /dev/null +++ b/graphics/npc/speccy_cool.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/speccy_cool.png-a2bef9af08d75596c39afabf4b591669.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/speccy_cool.png" +dest_files=[ "res://.import/speccy_cool.png-a2bef9af08d75596c39afabf4b591669.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/speccy_future.png b/graphics/npc/speccy_future.png new file mode 100644 index 0000000..3e11641 Binary files /dev/null and b/graphics/npc/speccy_future.png differ diff --git a/graphics/npc/speccy_future.png.import b/graphics/npc/speccy_future.png.import new file mode 100644 index 0000000..4048d3b --- /dev/null +++ b/graphics/npc/speccy_future.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/speccy_future.png-1e522d079b6cc689a4fc31f14da4eeae.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/speccy_future.png" +dest_files=[ "res://.import/speccy_future.png-1e522d079b6cc689a4fc31f14da4eeae.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/npc/speccy_talk.png b/graphics/npc/speccy_talk.png new file mode 100644 index 0000000..c269c25 Binary files /dev/null and b/graphics/npc/speccy_talk.png differ diff --git a/graphics/npc/speccy_talk.png.import b/graphics/npc/speccy_talk.png.import new file mode 100644 index 0000000..a62b071 --- /dev/null +++ b/graphics/npc/speccy_talk.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/speccy_talk.png-0e5075eaf8cca73ab16668de5d45d342.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/npc/speccy_talk.png" +dest_files=[ "res://.import/speccy_talk.png-0e5075eaf8cca73ab16668de5d45d342.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/dust.png b/graphics/particles/dust.png index 2b421f1..9531a48 100644 Binary files a/graphics/particles/dust.png and b/graphics/particles/dust.png differ diff --git a/graphics/particles/famira_blood.png b/graphics/particles/famira_blood.png new file mode 100644 index 0000000..54a8a2f Binary files /dev/null and b/graphics/particles/famira_blood.png differ diff --git a/graphics/particles/famira_blood.png.import b/graphics/particles/famira_blood.png.import new file mode 100644 index 0000000..795e7a3 --- /dev/null +++ b/graphics/particles/famira_blood.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/famira_blood.png-66c7d485af49d3549856534ecea8b239.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/famira_blood.png" +dest_files=[ "res://.import/famira_blood.png-66c7d485af49d3549856534ecea8b239.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/glass_shard.png b/graphics/particles/glass_shard.png new file mode 100644 index 0000000..716eda1 Binary files /dev/null and b/graphics/particles/glass_shard.png differ diff --git a/graphics/particles/glass_shard.png.import b/graphics/particles/glass_shard.png.import new file mode 100644 index 0000000..e19b7b6 --- /dev/null +++ b/graphics/particles/glass_shard.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/glass_shard.png-9dc867929059fea83ab155e049de7ab1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/glass_shard.png" +dest_files=[ "res://.import/glass_shard.png-9dc867929059fea83ab155e049de7ab1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/shine.png b/graphics/particles/shine.png new file mode 100644 index 0000000..2ab9021 Binary files /dev/null and b/graphics/particles/shine.png differ diff --git a/graphics/particles/shine.png.import b/graphics/particles/shine.png.import new file mode 100644 index 0000000..9f4a88c --- /dev/null +++ b/graphics/particles/shine.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/shine.png-e490d9bf1bcf9743c95719a78e9f033e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/shine.png" +dest_files=[ "res://.import/shine.png-e490d9bf1bcf9743c95719a78e9f033e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/smoke.png b/graphics/particles/smoke.png new file mode 100644 index 0000000..6c478d9 Binary files /dev/null and b/graphics/particles/smoke.png differ diff --git a/graphics/particles/smoke.png.import b/graphics/particles/smoke.png.import new file mode 100644 index 0000000..f7b0016 --- /dev/null +++ b/graphics/particles/smoke.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/smoke.png-ec8443d9c944559763c6fb0b7caf4529.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/smoke.png" +dest_files=[ "res://.import/smoke.png-ec8443d9c944559763c6fb0b7caf4529.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/splash.png b/graphics/particles/splash.png new file mode 100644 index 0000000..50fe6c4 Binary files /dev/null and b/graphics/particles/splash.png differ diff --git a/graphics/particles/splash.png.import b/graphics/particles/splash.png.import new file mode 100644 index 0000000..7feac9c --- /dev/null +++ b/graphics/particles/splash.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/splash.png-a6ada3bebf5580104e880db2dd2dd744.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/splash.png" +dest_files=[ "res://.import/splash.png-a6ada3bebf5580104e880db2dd2dd744.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/particles/stalactite.png b/graphics/particles/stalactite.png new file mode 100644 index 0000000..1b6b8fb Binary files /dev/null and b/graphics/particles/stalactite.png differ diff --git a/graphics/particles/stalactite.png.import b/graphics/particles/stalactite.png.import new file mode 100644 index 0000000..d0a56b4 --- /dev/null +++ b/graphics/particles/stalactite.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/stalactite.png-7ff7cef7387b0ace5975d18a41208957.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/particles/stalactite.png" +dest_files=[ "res://.import/stalactite.png-7ff7cef7387b0ace5975d18a41208957.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/arrow.png b/graphics/player/arrow.png index 4d7e9d2..14f7695 100644 Binary files a/graphics/player/arrow.png and b/graphics/player/arrow.png differ diff --git a/graphics/player/costume_wriggle.png b/graphics/player/costume_wriggle.png new file mode 100644 index 0000000..f570542 Binary files /dev/null and b/graphics/player/costume_wriggle.png differ diff --git a/graphics/player/costume_wriggle.png.import b/graphics/player/costume_wriggle.png.import new file mode 100644 index 0000000..6d49b1c --- /dev/null +++ b/graphics/player/costume_wriggle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/costume_wriggle.png-9a4503fad456a1616bc9300fa81a7e80.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/costume_wriggle.png" +dest_files=[ "res://.import/costume_wriggle.png-9a4503fad456a1616bc9300fa81a7e80.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/pal_purplearmor.png b/graphics/player/pal_purplearmor.png deleted file mode 100644 index ff68eb2..0000000 Binary files a/graphics/player/pal_purplearmor.png and /dev/null differ diff --git a/graphics/player/palettes/blanc.tex b/graphics/player/palettes/blanc.tex new file mode 100644 index 0000000..0ea8906 Binary files /dev/null and b/graphics/player/palettes/blanc.tex differ diff --git a/graphics/player/palettes/bnw.png.import b/graphics/player/palettes/bnw.png.import new file mode 100644 index 0000000..db6307b --- /dev/null +++ b/graphics/player/palettes/bnw.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bnw.png-135cfdae7a1066f9a02b72b1d037a0c8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/bnw.png" +dest_files=[ "res://.import/bnw.png-135cfdae7a1066f9a02b72b1d037a0c8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/bnw.tex b/graphics/player/palettes/bnw.tex new file mode 100644 index 0000000..0887341 Binary files /dev/null and b/graphics/player/palettes/bnw.tex differ diff --git a/graphics/player/palettes/cave dweller.png.import b/graphics/player/palettes/cave dweller.png.import new file mode 100644 index 0000000..e024ebf --- /dev/null +++ b/graphics/player/palettes/cave dweller.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cave dweller.png-32afeb8b10dd658bba75c813db97ba7b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/cave dweller.png" +dest_files=[ "res://.import/cave dweller.png-32afeb8b10dd658bba75c813db97ba7b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/cave_dweller.tex b/graphics/player/palettes/cave_dweller.tex new file mode 100644 index 0000000..e5e69ef Binary files /dev/null and b/graphics/player/palettes/cave_dweller.tex differ diff --git a/graphics/player/palettes/costume_wriggle.tex b/graphics/player/palettes/costume_wriggle.tex new file mode 100644 index 0000000..9404af7 Binary files /dev/null and b/graphics/player/palettes/costume_wriggle.tex differ diff --git a/graphics/player/palettes/crocodibli.tex b/graphics/player/palettes/crocodibli.tex new file mode 100644 index 0000000..3a7d1d1 Binary files /dev/null and b/graphics/player/palettes/crocodibli.tex differ diff --git a/graphics/player/palettes/cyber_city.png.import b/graphics/player/palettes/cyber_city.png.import new file mode 100644 index 0000000..4fc6c42 --- /dev/null +++ b/graphics/player/palettes/cyber_city.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cyber_city.png-9afb23fdc2788ef5644663f47cffc4d5.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/cyber_city.png" +dest_files=[ "res://.import/cyber_city.png-9afb23fdc2788ef5644663f47cffc4d5.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/cyber_city.tex b/graphics/player/palettes/cyber_city.tex new file mode 100644 index 0000000..5435cb1 Binary files /dev/null and b/graphics/player/palettes/cyber_city.tex differ diff --git a/graphics/player/palettes/default.tex b/graphics/player/palettes/default.tex new file mode 100644 index 0000000..b583807 Binary files /dev/null and b/graphics/player/palettes/default.tex differ diff --git a/graphics/player/palettes/dmg.png.import b/graphics/player/palettes/dmg.png.import new file mode 100644 index 0000000..ea325c4 --- /dev/null +++ b/graphics/player/palettes/dmg.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/dmg.png-58de64a0a647a53f1c17134b2fe29f95.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/dmg.png" +dest_files=[ "res://.import/dmg.png-58de64a0a647a53f1c17134b2fe29f95.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/doggy.tex b/graphics/player/palettes/doggy.tex new file mode 100644 index 0000000..fdf5ea9 Binary files /dev/null and b/graphics/player/palettes/doggy.tex differ diff --git a/graphics/player/palettes/elaine.tex b/graphics/player/palettes/elaine.tex new file mode 100644 index 0000000..3337712 Binary files /dev/null and b/graphics/player/palettes/elaine.tex differ diff --git a/graphics/player/palettes/gayboy.tex b/graphics/player/palettes/gayboy.tex new file mode 100644 index 0000000..3a1544f Binary files /dev/null and b/graphics/player/palettes/gayboy.tex differ diff --git a/graphics/player/palettes/gravitational_redshift.tex b/graphics/player/palettes/gravitational_redshift.tex new file mode 100644 index 0000000..1ea5361 Binary files /dev/null and b/graphics/player/palettes/gravitational_redshift.tex differ diff --git a/graphics/player/palettes/ice mountain.png.import b/graphics/player/palettes/ice mountain.png.import new file mode 100644 index 0000000..4751221 --- /dev/null +++ b/graphics/player/palettes/ice mountain.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/ice mountain.png-ebec2be22bf9751c02cb09871a8c45e1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/ice mountain.png" +dest_files=[ "res://.import/ice mountain.png-ebec2be22bf9751c02cb09871a8c45e1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/ice_mountain.tex b/graphics/player/palettes/ice_mountain.tex new file mode 100644 index 0000000..93a5b42 Binary files /dev/null and b/graphics/player/palettes/ice_mountain.tex differ diff --git a/graphics/player/palettes/lasertag.tex b/graphics/player/palettes/lasertag.tex new file mode 100644 index 0000000..9255579 Binary files /dev/null and b/graphics/player/palettes/lasertag.tex differ diff --git a/graphics/player/palettes/lucas.tex b/graphics/player/palettes/lucas.tex new file mode 100644 index 0000000..c1bfefe Binary files /dev/null and b/graphics/player/palettes/lucas.tex differ diff --git a/graphics/player/palettes/marza.png.import b/graphics/player/palettes/marza.png.import new file mode 100644 index 0000000..ef1fead --- /dev/null +++ b/graphics/player/palettes/marza.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/marza.png-58ff3b3d551293c32579f87949c6a3e4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/marza.png" +dest_files=[ "res://.import/marza.png-58ff3b3d551293c32579f87949c6a3e4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/marza.tex b/graphics/player/palettes/marza.tex new file mode 100644 index 0000000..83d022f Binary files /dev/null and b/graphics/player/palettes/marza.tex differ diff --git a/graphics/player/palettes/mibibli.tex b/graphics/player/palettes/mibibli.tex new file mode 100644 index 0000000..7cecd9b Binary files /dev/null and b/graphics/player/palettes/mibibli.tex differ diff --git a/graphics/player/palettes/msx.tex b/graphics/player/palettes/msx.tex new file mode 100644 index 0000000..3089444 Binary files /dev/null and b/graphics/player/palettes/msx.tex differ diff --git a/graphics/player/palettes/nightrunner.png.import b/graphics/player/palettes/nightrunner.png.import new file mode 100644 index 0000000..ed1d7a9 --- /dev/null +++ b/graphics/player/palettes/nightrunner.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/nightrunner.png-220d6d3608b72a9c74bd49c68c00703a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/nightrunner.png" +dest_files=[ "res://.import/nightrunner.png-220d6d3608b72a9c74bd49c68c00703a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/nightrunner.tex b/graphics/player/palettes/nightrunner.tex new file mode 100644 index 0000000..a9d3c79 Binary files /dev/null and b/graphics/player/palettes/nightrunner.tex differ diff --git a/graphics/player/palettes/noir.tex b/graphics/player/palettes/noir.tex new file mode 100644 index 0000000..135445c Binary files /dev/null and b/graphics/player/palettes/noir.tex differ diff --git a/graphics/player/palettes/pal_lucas.png.import b/graphics/player/palettes/pal_lucas.png.import new file mode 100644 index 0000000..2a21767 --- /dev/null +++ b/graphics/player/palettes/pal_lucas.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/pal_lucas.png-81b0d44d10248b62b099ec9240b0b682.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/pal_lucas.png" +dest_files=[ "res://.import/pal_lucas.png-81b0d44d10248b62b099ec9240b0b682.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/protector.png.import b/graphics/player/palettes/protector.png.import new file mode 100644 index 0000000..64a01ba --- /dev/null +++ b/graphics/player/palettes/protector.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/protector.png-f50c1fff60cd235780d378620459d0d4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/protector.png" +dest_files=[ "res://.import/protector.png-f50c1fff60cd235780d378620459d0d4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/protector.tex b/graphics/player/palettes/protector.tex new file mode 100644 index 0000000..7d7575f Binary files /dev/null and b/graphics/player/palettes/protector.tex differ diff --git a/graphics/player/palettes/seegee.tex b/graphics/player/palettes/seegee.tex new file mode 100644 index 0000000..40c6fb4 Binary files /dev/null and b/graphics/player/palettes/seegee.tex differ diff --git a/graphics/player/palettes/seejee.png.import b/graphics/player/palettes/seejee.png.import new file mode 100644 index 0000000..7786088 --- /dev/null +++ b/graphics/player/palettes/seejee.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seejee.png-7d8a374ab1e2679f0f2c2f92231a5cf9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/seejee.png" +dest_files=[ "res://.import/seejee.png-7d8a374ab1e2679f0f2c2f92231a5cf9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/sms.png.import b/graphics/player/palettes/sms.png.import new file mode 100644 index 0000000..f58832e --- /dev/null +++ b/graphics/player/palettes/sms.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sms.png-2076305d78f45f7154f78edf4e6198ec.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/sms.png" +dest_files=[ "res://.import/sms.png-2076305d78f45f7154f78edf4e6198ec.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/sms.tex b/graphics/player/palettes/sms.tex new file mode 100644 index 0000000..dac72f4 Binary files /dev/null and b/graphics/player/palettes/sms.tex differ diff --git a/graphics/player/palettes/strawberry.tex b/graphics/player/palettes/strawberry.tex new file mode 100644 index 0000000..a968338 Binary files /dev/null and b/graphics/player/palettes/strawberry.tex differ diff --git a/graphics/player/palettes/sunfish.png.import b/graphics/player/palettes/sunfish.png.import new file mode 100644 index 0000000..0032efc --- /dev/null +++ b/graphics/player/palettes/sunfish.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sunfish.png-806c70cbe509ade67d2059a5fef125e0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/sunfish.png" +dest_files=[ "res://.import/sunfish.png-806c70cbe509ade67d2059a5fef125e0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/super_player.tex b/graphics/player/palettes/super_player.tex new file mode 100644 index 0000000..1a1dc28 Binary files /dev/null and b/graphics/player/palettes/super_player.tex differ diff --git a/graphics/player/palettes/superman.tex b/graphics/player/palettes/superman.tex new file mode 100644 index 0000000..4edb1f6 Binary files /dev/null and b/graphics/player/palettes/superman.tex differ diff --git a/graphics/player/palettes/supersonic.tex b/graphics/player/palettes/supersonic.tex new file mode 100644 index 0000000..589af79 Binary files /dev/null and b/graphics/player/palettes/supersonic.tex differ diff --git a/graphics/player/palettes/telstar.png.import b/graphics/player/palettes/telstar.png.import new file mode 100644 index 0000000..aff7edf --- /dev/null +++ b/graphics/player/palettes/telstar.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/telstar.png-c306a9d1a4146b6776b12ff22fcf7be8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/telstar.png" +dest_files=[ "res://.import/telstar.png-c306a9d1a4146b6776b12ff22fcf7be8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/telstar.tex b/graphics/player/palettes/telstar.tex new file mode 100644 index 0000000..f5d723c Binary files /dev/null and b/graphics/player/palettes/telstar.tex differ diff --git a/graphics/player/palettes/thunder.png.import b/graphics/player/palettes/thunder.png.import new file mode 100644 index 0000000..31c04a5 --- /dev/null +++ b/graphics/player/palettes/thunder.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/thunder.png-8d4e24aa54fc1c7c78a6c379b675a905.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/thunder.png" +dest_files=[ "res://.import/thunder.png-8d4e24aa54fc1c7c78a6c379b675a905.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/trans_pride.tex b/graphics/player/palettes/trans_pride.tex new file mode 100644 index 0000000..b3c782f Binary files /dev/null and b/graphics/player/palettes/trans_pride.tex differ diff --git a/graphics/player/palettes/typhoon.png.import b/graphics/player/palettes/typhoon.png.import new file mode 100644 index 0000000..7e55f5b --- /dev/null +++ b/graphics/player/palettes/typhoon.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/typhoon.png-a749b35eca97d2eb4710c73a2a548065.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/typhoon.png" +dest_files=[ "res://.import/typhoon.png-a749b35eca97d2eb4710c73a2a548065.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/typhoon.tex b/graphics/player/palettes/typhoon.tex new file mode 100644 index 0000000..c1da263 Binary files /dev/null and b/graphics/player/palettes/typhoon.tex differ diff --git a/graphics/player/palettes/unknown friend.png.import b/graphics/player/palettes/unknown friend.png.import new file mode 100644 index 0000000..855fc78 --- /dev/null +++ b/graphics/player/palettes/unknown friend.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/unknown friend.png-7db4fb0a2deaa6f8fcc674222592b145.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/unknown friend.png" +dest_files=[ "res://.import/unknown friend.png-7db4fb0a2deaa6f8fcc674222592b145.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/unknown_friend.tex b/graphics/player/palettes/unknown_friend.tex new file mode 100644 index 0000000..3d5b306 Binary files /dev/null and b/graphics/player/palettes/unknown_friend.tex differ diff --git a/graphics/player/palettes/wavebird.png.import b/graphics/player/palettes/wavebird.png.import new file mode 100644 index 0000000..4e864d5 --- /dev/null +++ b/graphics/player/palettes/wavebird.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/wavebird.png-aadfcb79425d8053ec5635f9b7d13ec4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/wavebird.png" +dest_files=[ "res://.import/wavebird.png-aadfcb79425d8053ec5635f9b7d13ec4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/wavebird.tex b/graphics/player/palettes/wavebird.tex new file mode 100644 index 0000000..92711a9 Binary files /dev/null and b/graphics/player/palettes/wavebird.tex differ diff --git a/graphics/player/palettes/yoonie.png.import b/graphics/player/palettes/yoonie.png.import new file mode 100644 index 0000000..fef57ac --- /dev/null +++ b/graphics/player/palettes/yoonie.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/yoonie.png-c534690bdd0d2a005e39a32fd10d60ae.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/yoonie.png" +dest_files=[ "res://.import/yoonie.png-c534690bdd0d2a005e39a32fd10d60ae.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/palettes/yoony.png.import b/graphics/player/palettes/yoony.png.import new file mode 100644 index 0000000..fb429c8 --- /dev/null +++ b/graphics/player/palettes/yoony.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/yoony.png-8b18663f7ac375ec64b9bdafd71bbcce.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/palettes/yoony.png" +dest_files=[ "res://.import/yoony.png-8b18663f7ac375ec64b9bdafd71bbcce.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg.png b/graphics/player/sg.png new file mode 100644 index 0000000..88aaab2 Binary files /dev/null and b/graphics/player/sg.png differ diff --git a/graphics/player/sg.png.import b/graphics/player/sg.png.import new file mode 100644 index 0000000..f3d94f8 --- /dev/null +++ b/graphics/player/sg.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg.png-712e02c203f35b95a8377a73b65c9a2a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg.png" +dest_files=[ "res://.import/sg.png-712e02c203f35b95a8377a73b65c9a2a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_blink.png b/graphics/player/sg_blink.png index 61ef0f8..18a88f5 100644 Binary files a/graphics/player/sg_blink.png and b/graphics/player/sg_blink.png differ diff --git a/graphics/player/sg_bow.png b/graphics/player/sg_bow.png index de319b1..0b269d6 100644 Binary files a/graphics/player/sg_bow.png and b/graphics/player/sg_bow.png differ diff --git a/graphics/player/sg_climb.png b/graphics/player/sg_climb.png index 847c97b..43603cc 100644 Binary files a/graphics/player/sg_climb.png and b/graphics/player/sg_climb.png differ diff --git a/graphics/player/sg_doublejump.png b/graphics/player/sg_doublejump.png index d77733f..37936e9 100644 Binary files a/graphics/player/sg_doublejump.png and b/graphics/player/sg_doublejump.png differ diff --git a/graphics/player/sg_drown.png b/graphics/player/sg_drown.png new file mode 100644 index 0000000..0181be7 Binary files /dev/null and b/graphics/player/sg_drown.png differ diff --git a/graphics/player/sg_drown.png.import b/graphics/player/sg_drown.png.import new file mode 100644 index 0000000..cc3418c --- /dev/null +++ b/graphics/player/sg_drown.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_drown.png-9f3aae90e49cac8847cdd0ba90cfe464.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_drown.png" +dest_files=[ "res://.import/sg_drown.png-9f3aae90e49cac8847cdd0ba90cfe464.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_duck.png b/graphics/player/sg_duck.png new file mode 100644 index 0000000..26d8e44 Binary files /dev/null and b/graphics/player/sg_duck.png differ diff --git a/graphics/player/sg_duck.png.import b/graphics/player/sg_duck.png.import new file mode 100644 index 0000000..c966fe5 --- /dev/null +++ b/graphics/player/sg_duck.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_duck.png-2c4af6f61584cc7699021d5bd8cdd8a4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_duck.png" +dest_files=[ "res://.import/sg_duck.png-2c4af6f61584cc7699021d5bd8cdd8a4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_edge.png b/graphics/player/sg_edge.png new file mode 100644 index 0000000..de8bdd8 Binary files /dev/null and b/graphics/player/sg_edge.png differ diff --git a/graphics/player/sg_edge.png.import b/graphics/player/sg_edge.png.import new file mode 100644 index 0000000..d7e417b --- /dev/null +++ b/graphics/player/sg_edge.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_edge.png-3b7ab88abecd3b7d4299c2110085e970.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_edge.png" +dest_files=[ "res://.import/sg_edge.png-3b7ab88abecd3b7d4299c2110085e970.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_fall.png b/graphics/player/sg_fall.png index 88f79c7..3937170 100644 Binary files a/graphics/player/sg_fall.png and b/graphics/player/sg_fall.png differ diff --git a/graphics/player/sg_fall_scared.png b/graphics/player/sg_fall_scared.png index 894cf4a..446b3f0 100644 Binary files a/graphics/player/sg_fall_scared.png and b/graphics/player/sg_fall_scared.png differ diff --git a/graphics/player/sg_headphones.png b/graphics/player/sg_headphones.png new file mode 100644 index 0000000..fe36878 Binary files /dev/null and b/graphics/player/sg_headphones.png differ diff --git a/graphics/player/sg_headphones.png.import b/graphics/player/sg_headphones.png.import new file mode 100644 index 0000000..e85fc24 --- /dev/null +++ b/graphics/player/sg_headphones.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_headphones.png-786539fc8b251a584407dfd1c925e629.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_headphones.png" +dest_files=[ "res://.import/sg_headphones.png-786539fc8b251a584407dfd1c925e629.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_idle.png b/graphics/player/sg_idle.png index 79453dd..d3660d7 100644 Binary files a/graphics/player/sg_idle.png and b/graphics/player/sg_idle.png differ diff --git a/graphics/player/sg_jump.png b/graphics/player/sg_jump.png index e55f19d..c12f10a 100644 Binary files a/graphics/player/sg_jump.png and b/graphics/player/sg_jump.png differ diff --git a/graphics/player/sg_jump_ladder.png b/graphics/player/sg_jump_ladder.png new file mode 100644 index 0000000..b5509c2 Binary files /dev/null and b/graphics/player/sg_jump_ladder.png differ diff --git a/graphics/player/sg_jump_ladder.png.import b/graphics/player/sg_jump_ladder.png.import new file mode 100644 index 0000000..d5501dc --- /dev/null +++ b/graphics/player/sg_jump_ladder.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_jump_ladder.png-47f6c448f8443f8066f4d7e915150ff9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_jump_ladder.png" +dest_files=[ "res://.import/sg_jump_ladder.png-47f6c448f8443f8066f4d7e915150ff9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_particles_mask.png b/graphics/player/sg_particles_mask.png new file mode 100644 index 0000000..5e79306 Binary files /dev/null and b/graphics/player/sg_particles_mask.png differ diff --git a/graphics/player/sg_particles_mask.png.import b/graphics/player/sg_particles_mask.png.import new file mode 100644 index 0000000..d2e7566 --- /dev/null +++ b/graphics/player/sg_particles_mask.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_particles_mask.png-c9c7f43473087b6f629bc945f72d141f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_particles_mask.png" +dest_files=[ "res://.import/sg_particles_mask.png-c9c7f43473087b6f629bc945f72d141f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_respawn.png b/graphics/player/sg_respawn.png new file mode 100644 index 0000000..35ca9b1 Binary files /dev/null and b/graphics/player/sg_respawn.png differ diff --git a/graphics/player/sg_respawn.png.import b/graphics/player/sg_respawn.png.import new file mode 100644 index 0000000..6083c74 --- /dev/null +++ b/graphics/player/sg_respawn.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_respawn.png-83125dc5d93640f1f36a4388495f77b6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_respawn.png" +dest_files=[ "res://.import/sg_respawn.png-83125dc5d93640f1f36a4388495f77b6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_shoot.png b/graphics/player/sg_shoot.png index 937cc4c..8abddd5 100644 Binary files a/graphics/player/sg_shoot.png and b/graphics/player/sg_shoot.png differ diff --git a/graphics/player/sg_shoot_air.png b/graphics/player/sg_shoot_air.png index 1118f97..a53a717 100644 Binary files a/graphics/player/sg_shoot_air.png and b/graphics/player/sg_shoot_air.png differ diff --git a/graphics/player/sg_shoot_grounded.png b/graphics/player/sg_shoot_grounded.png index 4cbeae8..33faf1b 100644 Binary files a/graphics/player/sg_shoot_grounded.png and b/graphics/player/sg_shoot_grounded.png differ diff --git a/graphics/player/sg_stab.png b/graphics/player/sg_stab.png index 02b1370..7b42f1e 100644 Binary files a/graphics/player/sg_stab.png and b/graphics/player/sg_stab.png differ diff --git a/graphics/player/sg_step.png b/graphics/player/sg_step.png new file mode 100644 index 0000000..62319a2 Binary files /dev/null and b/graphics/player/sg_step.png differ diff --git a/graphics/player/sg_step.png.import b/graphics/player/sg_step.png.import new file mode 100644 index 0000000..f27b874 --- /dev/null +++ b/graphics/player/sg_step.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_step.png-05fa404dd930772c6e0da48aaf383812.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_step.png" +dest_files=[ "res://.import/sg_step.png-05fa404dd930772c6e0da48aaf383812.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/sg_walk.png b/graphics/player/sg_walk.png index 447a657..9c41c6f 100644 Binary files a/graphics/player/sg_walk.png and b/graphics/player/sg_walk.png differ diff --git a/graphics/player/sg_zap.png b/graphics/player/sg_zap.png new file mode 100644 index 0000000..21e41e9 Binary files /dev/null and b/graphics/player/sg_zap.png differ diff --git a/graphics/player/sg_zap.png.import b/graphics/player/sg_zap.png.import new file mode 100644 index 0000000..9063f0d --- /dev/null +++ b/graphics/player/sg_zap.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_zap.png-42b9645cdd95a12a23b467e9a2265eec.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/sg_zap.png" +dest_files=[ "res://.import/sg_zap.png-42b9645cdd95a12a23b467e9a2265eec.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/player/wriggle.png b/graphics/player/wriggle.png new file mode 100644 index 0000000..0b16b5a Binary files /dev/null and b/graphics/player/wriggle.png differ diff --git a/graphics/player/wriggle.png.import b/graphics/player/wriggle.png.import new file mode 100644 index 0000000..b7da9f9 --- /dev/null +++ b/graphics/player/wriggle.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/wriggle.png-56d005c1d18e1b587ff1ec6e46f07087.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/player/wriggle.png" +dest_files=[ "res://.import/wriggle.png-56d005c1d18e1b587ff1ec6e46f07087.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/rock/rock.png b/graphics/rock/rock.png index 572a305..d4a99c7 100644 Binary files a/graphics/rock/rock.png and b/graphics/rock/rock.png differ diff --git a/graphics/secret/uncanny.png b/graphics/secret/uncanny.png new file mode 100644 index 0000000..dfa69b6 Binary files /dev/null and b/graphics/secret/uncanny.png differ diff --git a/graphics/secret/uncanny.png.import b/graphics/secret/uncanny.png.import new file mode 100644 index 0000000..54773b6 --- /dev/null +++ b/graphics/secret/uncanny.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/uncanny.png-a842bbb579fb6147c3e65cfee5536a0b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/secret/uncanny.png" +dest_files=[ "res://.import/uncanny.png-a842bbb579fb6147c3e65cfee5536a0b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/secret/zball.png b/graphics/secret/zball.png new file mode 100644 index 0000000..b7d4bcc Binary files /dev/null and b/graphics/secret/zball.png differ diff --git a/graphics/secret/zball.png.import b/graphics/secret/zball.png.import new file mode 100644 index 0000000..5ef6a12 --- /dev/null +++ b/graphics/secret/zball.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/zball.png-766d895c88e3cffc348d3ca2bc047df8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/secret/zball.png" +dest_files=[ "res://.import/zball.png-766d895c88e3cffc348d3ca2bc047df8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/secret/zball_glow.png b/graphics/secret/zball_glow.png new file mode 100644 index 0000000..c08e576 Binary files /dev/null and b/graphics/secret/zball_glow.png differ diff --git a/graphics/secret/zball_glow.png.import b/graphics/secret/zball_glow.png.import new file mode 100644 index 0000000..b808838 --- /dev/null +++ b/graphics/secret/zball_glow.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/zball_glow.png-a903baaaddcbe84df17501813dffd3fd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/secret/zball_glow.png" +dest_files=[ "res://.import/zball_glow.png-a903baaaddcbe84df17501813dffd3fd.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/sockbug/fullturn_strip10.png b/graphics/sockbug/fullturn_strip10.png new file mode 100644 index 0000000..322a7ac Binary files /dev/null and b/graphics/sockbug/fullturn_strip10.png differ diff --git a/graphics/sockbug/fullturn_strip10.png.import b/graphics/sockbug/fullturn_strip10.png.import new file mode 100644 index 0000000..f501780 --- /dev/null +++ b/graphics/sockbug/fullturn_strip10.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/fullturn_strip10.png-5f5ea8947d5fc4f53c370dfffa30a486.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/sockbug/fullturn_strip10.png" +dest_files=[ "res://.import/fullturn_strip10.png-5f5ea8947d5fc4f53c370dfffa30a486.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/sockbug/walk_strip6.png b/graphics/sockbug/walk_strip6.png new file mode 100644 index 0000000..1220776 Binary files /dev/null and b/graphics/sockbug/walk_strip6.png differ diff --git a/graphics/sockbug/walk_strip6.png.import b/graphics/sockbug/walk_strip6.png.import new file mode 100644 index 0000000..50c41e8 --- /dev/null +++ b/graphics/sockbug/walk_strip6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/walk_strip6.png-b05978871fa10f8eeed77621aea2ecca.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/sockbug/walk_strip6.png" +dest_files=[ "res://.import/walk_strip6.png-b05978871fa10f8eeed77621aea2ecca.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/stalactite/stalactite.png b/graphics/stalactite/stalactite.png new file mode 100644 index 0000000..61c6eb9 Binary files /dev/null and b/graphics/stalactite/stalactite.png differ diff --git a/graphics/stalactite/stalactite.png.import b/graphics/stalactite/stalactite.png.import new file mode 100644 index 0000000..5509a03 --- /dev/null +++ b/graphics/stalactite/stalactite.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/stalactite.png-02a1deb0032f5cd17ce906194b047729.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/stalactite/stalactite.png" +dest_files=[ "res://.import/stalactite.png-02a1deb0032f5cd17ce906194b047729.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/abstract.png b/graphics/tiles/abstract.png new file mode 100644 index 0000000..505969a Binary files /dev/null and b/graphics/tiles/abstract.png differ diff --git a/graphics/tiles/abstract.png.import b/graphics/tiles/abstract.png.import new file mode 100644 index 0000000..5185f11 --- /dev/null +++ b/graphics/tiles/abstract.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/abstract.png-520d62bcdeefefeb95738be4737e0f66.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/abstract.png" +dest_files=[ "res://.import/abstract.png-520d62bcdeefefeb95738be4737e0f66.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/abyss.png b/graphics/tiles/abyss.png index 9df02b8..77a1b69 100644 Binary files a/graphics/tiles/abyss.png and b/graphics/tiles/abyss.png differ diff --git a/graphics/tiles/canopy.png b/graphics/tiles/canopy.png index 0d95131..684f2d9 100644 Binary files a/graphics/tiles/canopy.png and b/graphics/tiles/canopy.png differ diff --git a/graphics/tiles/cave.png b/graphics/tiles/cave.png index 60c6d30..b458cdb 100644 Binary files a/graphics/tiles/cave.png and b/graphics/tiles/cave.png differ diff --git a/graphics/tiles/flower/flower_blue_1.png b/graphics/tiles/flower/flower_blue_1.png new file mode 100644 index 0000000..50ebca8 Binary files /dev/null and b/graphics/tiles/flower/flower_blue_1.png differ diff --git a/graphics/tiles/flower/flower_blue_1.png.import b/graphics/tiles/flower/flower_blue_1.png.import new file mode 100644 index 0000000..700d13d --- /dev/null +++ b/graphics/tiles/flower/flower_blue_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_1.png-031b185dbdbecb0670035eac43014e80.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_1.png" +dest_files=[ "res://.import/flower_blue_1.png-031b185dbdbecb0670035eac43014e80.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_blue_2.png b/graphics/tiles/flower/flower_blue_2.png new file mode 100644 index 0000000..045bd8b Binary files /dev/null and b/graphics/tiles/flower/flower_blue_2.png differ diff --git a/graphics/tiles/flower/flower_blue_2.png.import b/graphics/tiles/flower/flower_blue_2.png.import new file mode 100644 index 0000000..91b7571 --- /dev/null +++ b/graphics/tiles/flower/flower_blue_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_2.png-8f33eab5c1730ff88c15dccca75011c7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_2.png" +dest_files=[ "res://.import/flower_blue_2.png-8f33eab5c1730ff88c15dccca75011c7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_blue_3.png b/graphics/tiles/flower/flower_blue_3.png new file mode 100644 index 0000000..c780ae7 Binary files /dev/null and b/graphics/tiles/flower/flower_blue_3.png differ diff --git a/graphics/tiles/flower/flower_blue_3.png.import b/graphics/tiles/flower/flower_blue_3.png.import new file mode 100644 index 0000000..efb2eed --- /dev/null +++ b/graphics/tiles/flower/flower_blue_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_3.png-a29e2b0894d671e2bd76acb05600bc0b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_3.png" +dest_files=[ "res://.import/flower_blue_3.png-a29e2b0894d671e2bd76acb05600bc0b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_blue_4.png b/graphics/tiles/flower/flower_blue_4.png new file mode 100644 index 0000000..bea91d0 Binary files /dev/null and b/graphics/tiles/flower/flower_blue_4.png differ diff --git a/graphics/tiles/flower/flower_blue_4.png.import b/graphics/tiles/flower/flower_blue_4.png.import new file mode 100644 index 0000000..ffc1436 --- /dev/null +++ b/graphics/tiles/flower/flower_blue_4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_4.png-f6a55d87a764dedb0b3dc8fc57115e5e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_4.png" +dest_files=[ "res://.import/flower_blue_4.png-f6a55d87a764dedb0b3dc8fc57115e5e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_blue_5.png b/graphics/tiles/flower/flower_blue_5.png new file mode 100644 index 0000000..4509569 Binary files /dev/null and b/graphics/tiles/flower/flower_blue_5.png differ diff --git a/graphics/tiles/flower/flower_blue_5.png.import b/graphics/tiles/flower/flower_blue_5.png.import new file mode 100644 index 0000000..70a325b --- /dev/null +++ b/graphics/tiles/flower/flower_blue_5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_5.png-f045e6c2b09bd0ecb8326c94a7333072.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_5.png" +dest_files=[ "res://.import/flower_blue_5.png-f045e6c2b09bd0ecb8326c94a7333072.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_blue_6.png b/graphics/tiles/flower/flower_blue_6.png new file mode 100644 index 0000000..ffb5559 Binary files /dev/null and b/graphics/tiles/flower/flower_blue_6.png differ diff --git a/graphics/tiles/flower/flower_blue_6.png.import b/graphics/tiles/flower/flower_blue_6.png.import new file mode 100644 index 0000000..716c33b --- /dev/null +++ b/graphics/tiles/flower/flower_blue_6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_6.png-925e9ee9e0a2f39e30c14d95529b6b0c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_6.png" +dest_files=[ "res://.import/flower_blue_6.png-925e9ee9e0a2f39e30c14d95529b6b0c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_blue_7.png b/graphics/tiles/flower/flower_blue_7.png new file mode 100644 index 0000000..4509569 Binary files /dev/null and b/graphics/tiles/flower/flower_blue_7.png differ diff --git a/graphics/tiles/flower/flower_blue_7.png.import b/graphics/tiles/flower/flower_blue_7.png.import new file mode 100644 index 0000000..8525bb8 --- /dev/null +++ b/graphics/tiles/flower/flower_blue_7.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_7.png-e14aea798dac1d9a61884f722803760d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_7.png" +dest_files=[ "res://.import/flower_blue_7.png-e14aea798dac1d9a61884f722803760d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_blue_8.png b/graphics/tiles/flower/flower_blue_8.png new file mode 100644 index 0000000..bea91d0 Binary files /dev/null and b/graphics/tiles/flower/flower_blue_8.png differ diff --git a/graphics/tiles/flower/flower_blue_8.png.import b/graphics/tiles/flower/flower_blue_8.png.import new file mode 100644 index 0000000..02af55f --- /dev/null +++ b/graphics/tiles/flower/flower_blue_8.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_blue_8.png-22800ded7f6a218bdaff026fd4c1d97f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_blue_8.png" +dest_files=[ "res://.import/flower_blue_8.png-22800ded7f6a218bdaff026fd4c1d97f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_1.png b/graphics/tiles/flower/flower_pink_1.png new file mode 100644 index 0000000..a16252f Binary files /dev/null and b/graphics/tiles/flower/flower_pink_1.png differ diff --git a/graphics/tiles/flower/flower_pink_1.png.import b/graphics/tiles/flower/flower_pink_1.png.import new file mode 100644 index 0000000..c258cb9 --- /dev/null +++ b/graphics/tiles/flower/flower_pink_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_1.png-e6849e2dbb5a1b419f4092e7e3c2a643.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_1.png" +dest_files=[ "res://.import/flower_pink_1.png-e6849e2dbb5a1b419f4092e7e3c2a643.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_2.png b/graphics/tiles/flower/flower_pink_2.png new file mode 100644 index 0000000..363f0ba Binary files /dev/null and b/graphics/tiles/flower/flower_pink_2.png differ diff --git a/graphics/tiles/flower/flower_pink_2.png.import b/graphics/tiles/flower/flower_pink_2.png.import new file mode 100644 index 0000000..7cbd008 --- /dev/null +++ b/graphics/tiles/flower/flower_pink_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_2.png-0b95a7b3af227f799231e3b4e8479365.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_2.png" +dest_files=[ "res://.import/flower_pink_2.png-0b95a7b3af227f799231e3b4e8479365.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_3.png b/graphics/tiles/flower/flower_pink_3.png new file mode 100644 index 0000000..ff2b232 Binary files /dev/null and b/graphics/tiles/flower/flower_pink_3.png differ diff --git a/graphics/tiles/flower/flower_pink_3.png.import b/graphics/tiles/flower/flower_pink_3.png.import new file mode 100644 index 0000000..eb0c08d --- /dev/null +++ b/graphics/tiles/flower/flower_pink_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_3.png-06ff9e9fa0c1abc4b149c14bab9f9068.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_3.png" +dest_files=[ "res://.import/flower_pink_3.png-06ff9e9fa0c1abc4b149c14bab9f9068.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_4.png b/graphics/tiles/flower/flower_pink_4.png new file mode 100644 index 0000000..6087ed5 Binary files /dev/null and b/graphics/tiles/flower/flower_pink_4.png differ diff --git a/graphics/tiles/flower/flower_pink_4.png.import b/graphics/tiles/flower/flower_pink_4.png.import new file mode 100644 index 0000000..621bab0 --- /dev/null +++ b/graphics/tiles/flower/flower_pink_4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_4.png-5756c02b17c1fffd188c07b8ddce6d09.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_4.png" +dest_files=[ "res://.import/flower_pink_4.png-5756c02b17c1fffd188c07b8ddce6d09.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_5.png b/graphics/tiles/flower/flower_pink_5.png new file mode 100644 index 0000000..ea122fc Binary files /dev/null and b/graphics/tiles/flower/flower_pink_5.png differ diff --git a/graphics/tiles/flower/flower_pink_5.png.import b/graphics/tiles/flower/flower_pink_5.png.import new file mode 100644 index 0000000..0453852 --- /dev/null +++ b/graphics/tiles/flower/flower_pink_5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_5.png-900f01d0b635a0b5f20d9071c27c84ce.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_5.png" +dest_files=[ "res://.import/flower_pink_5.png-900f01d0b635a0b5f20d9071c27c84ce.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_6.png b/graphics/tiles/flower/flower_pink_6.png new file mode 100644 index 0000000..4159018 Binary files /dev/null and b/graphics/tiles/flower/flower_pink_6.png differ diff --git a/graphics/tiles/flower/flower_pink_6.png.import b/graphics/tiles/flower/flower_pink_6.png.import new file mode 100644 index 0000000..aaaa3ec --- /dev/null +++ b/graphics/tiles/flower/flower_pink_6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_6.png-334aec2d68c6653dd0daa9fb3a8919c1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_6.png" +dest_files=[ "res://.import/flower_pink_6.png-334aec2d68c6653dd0daa9fb3a8919c1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_7.png b/graphics/tiles/flower/flower_pink_7.png new file mode 100644 index 0000000..ea122fc Binary files /dev/null and b/graphics/tiles/flower/flower_pink_7.png differ diff --git a/graphics/tiles/flower/flower_pink_7.png.import b/graphics/tiles/flower/flower_pink_7.png.import new file mode 100644 index 0000000..6ee5e25 --- /dev/null +++ b/graphics/tiles/flower/flower_pink_7.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_7.png-4b9becea393b6037fd182519621d86db.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_7.png" +dest_files=[ "res://.import/flower_pink_7.png-4b9becea393b6037fd182519621d86db.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_pink_8.png b/graphics/tiles/flower/flower_pink_8.png new file mode 100644 index 0000000..6087ed5 Binary files /dev/null and b/graphics/tiles/flower/flower_pink_8.png differ diff --git a/graphics/tiles/flower/flower_pink_8.png.import b/graphics/tiles/flower/flower_pink_8.png.import new file mode 100644 index 0000000..ec67f34 --- /dev/null +++ b/graphics/tiles/flower/flower_pink_8.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_pink_8.png-d918ca44a7e9a01e5532d8b380c91136.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_pink_8.png" +dest_files=[ "res://.import/flower_pink_8.png-d918ca44a7e9a01e5532d8b380c91136.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_1.png b/graphics/tiles/flower/flower_red_1.png new file mode 100644 index 0000000..545baed Binary files /dev/null and b/graphics/tiles/flower/flower_red_1.png differ diff --git a/graphics/tiles/flower/flower_red_1.png.import b/graphics/tiles/flower/flower_red_1.png.import new file mode 100644 index 0000000..1c8eb07 --- /dev/null +++ b/graphics/tiles/flower/flower_red_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_1.png-018d1bf8635b73940deff904ec212a21.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_1.png" +dest_files=[ "res://.import/flower_red_1.png-018d1bf8635b73940deff904ec212a21.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_2.png b/graphics/tiles/flower/flower_red_2.png new file mode 100644 index 0000000..690ab60 Binary files /dev/null and b/graphics/tiles/flower/flower_red_2.png differ diff --git a/graphics/tiles/flower/flower_red_2.png.import b/graphics/tiles/flower/flower_red_2.png.import new file mode 100644 index 0000000..2f8a0e5 --- /dev/null +++ b/graphics/tiles/flower/flower_red_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_2.png-4785c71a226172143eb720f08a1b9189.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_2.png" +dest_files=[ "res://.import/flower_red_2.png-4785c71a226172143eb720f08a1b9189.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_3.png b/graphics/tiles/flower/flower_red_3.png new file mode 100644 index 0000000..d90af5b Binary files /dev/null and b/graphics/tiles/flower/flower_red_3.png differ diff --git a/graphics/tiles/flower/flower_red_3.png.import b/graphics/tiles/flower/flower_red_3.png.import new file mode 100644 index 0000000..83d4086 --- /dev/null +++ b/graphics/tiles/flower/flower_red_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_3.png-9a8bd9d374443a4e4cb2974eac7e4a07.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_3.png" +dest_files=[ "res://.import/flower_red_3.png-9a8bd9d374443a4e4cb2974eac7e4a07.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_4.png b/graphics/tiles/flower/flower_red_4.png new file mode 100644 index 0000000..f225c90 Binary files /dev/null and b/graphics/tiles/flower/flower_red_4.png differ diff --git a/graphics/tiles/flower/flower_red_4.png.import b/graphics/tiles/flower/flower_red_4.png.import new file mode 100644 index 0000000..f5eb8d5 --- /dev/null +++ b/graphics/tiles/flower/flower_red_4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_4.png-3f2a74e8080fb073ef578c30dddae6ad.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_4.png" +dest_files=[ "res://.import/flower_red_4.png-3f2a74e8080fb073ef578c30dddae6ad.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_5.png b/graphics/tiles/flower/flower_red_5.png new file mode 100644 index 0000000..222a1d7 Binary files /dev/null and b/graphics/tiles/flower/flower_red_5.png differ diff --git a/graphics/tiles/flower/flower_red_5.png.import b/graphics/tiles/flower/flower_red_5.png.import new file mode 100644 index 0000000..14b5fbf --- /dev/null +++ b/graphics/tiles/flower/flower_red_5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_5.png-eb6ef4b9f7f8b718e298dcfe2344865e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_5.png" +dest_files=[ "res://.import/flower_red_5.png-eb6ef4b9f7f8b718e298dcfe2344865e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_6.png b/graphics/tiles/flower/flower_red_6.png new file mode 100644 index 0000000..0005bf2 Binary files /dev/null and b/graphics/tiles/flower/flower_red_6.png differ diff --git a/graphics/tiles/flower/flower_red_6.png.import b/graphics/tiles/flower/flower_red_6.png.import new file mode 100644 index 0000000..26fd1fd --- /dev/null +++ b/graphics/tiles/flower/flower_red_6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_6.png-40b47435511a6975b04662d51d2017f2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_6.png" +dest_files=[ "res://.import/flower_red_6.png-40b47435511a6975b04662d51d2017f2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_7.png b/graphics/tiles/flower/flower_red_7.png new file mode 100644 index 0000000..222a1d7 Binary files /dev/null and b/graphics/tiles/flower/flower_red_7.png differ diff --git a/graphics/tiles/flower/flower_red_7.png.import b/graphics/tiles/flower/flower_red_7.png.import new file mode 100644 index 0000000..9fdf844 --- /dev/null +++ b/graphics/tiles/flower/flower_red_7.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_7.png-7ad03e7a33570bee6eb55c6e6e68f182.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_7.png" +dest_files=[ "res://.import/flower_red_7.png-7ad03e7a33570bee6eb55c6e6e68f182.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower/flower_red_8.png b/graphics/tiles/flower/flower_red_8.png new file mode 100644 index 0000000..f225c90 Binary files /dev/null and b/graphics/tiles/flower/flower_red_8.png differ diff --git a/graphics/tiles/flower/flower_red_8.png.import b/graphics/tiles/flower/flower_red_8.png.import new file mode 100644 index 0000000..bfd5601 --- /dev/null +++ b/graphics/tiles/flower/flower_red_8.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/flower_red_8.png-99eb388e9beef4ea0b609843ab48b589.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/flower/flower_red_8.png" +dest_files=[ "res://.import/flower_red_8.png-99eb388e9beef4ea0b609843ab48b589.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/flower_blue.tres b/graphics/tiles/flower_blue.tres new file mode 100644 index 0000000..4b07488 --- /dev/null +++ b/graphics/tiles/flower_blue.tres @@ -0,0 +1,29 @@ +[gd_resource type="AnimatedTexture" load_steps=9 format=2] + +[ext_resource path="res://graphics/tiles/flower/flower_blue_4.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/flower/flower_blue_1.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/flower/flower_blue_7.png" type="Texture" id=3] +[ext_resource path="res://graphics/tiles/flower/flower_blue_8.png" type="Texture" id=4] +[ext_resource path="res://graphics/tiles/flower/flower_blue_3.png" type="Texture" id=5] +[ext_resource path="res://graphics/tiles/flower/flower_blue_5.png" type="Texture" id=6] +[ext_resource path="res://graphics/tiles/flower/flower_blue_6.png" type="Texture" id=7] +[ext_resource path="res://graphics/tiles/flower/flower_blue_2.png" type="Texture" id=8] + +[resource] +frames = 8 +fps = 10.0 +frame_0/texture = ExtResource( 2 ) +frame_1/texture = ExtResource( 8 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 5 ) +frame_2/delay_sec = 0.0 +frame_3/texture = ExtResource( 1 ) +frame_3/delay_sec = 0.0 +frame_4/texture = ExtResource( 6 ) +frame_4/delay_sec = 0.0 +frame_5/texture = ExtResource( 7 ) +frame_5/delay_sec = 0.0 +frame_6/texture = ExtResource( 3 ) +frame_6/delay_sec = 0.0 +frame_7/texture = ExtResource( 4 ) +frame_7/delay_sec = 0.0 diff --git a/graphics/tiles/flower_pink.tres b/graphics/tiles/flower_pink.tres new file mode 100644 index 0000000..a54fd0e --- /dev/null +++ b/graphics/tiles/flower_pink.tres @@ -0,0 +1,29 @@ +[gd_resource type="AnimatedTexture" load_steps=9 format=2] + +[ext_resource path="res://graphics/tiles/flower/flower_pink_5.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/flower/flower_pink_7.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/flower/flower_pink_1.png" type="Texture" id=3] +[ext_resource path="res://graphics/tiles/flower/flower_pink_2.png" type="Texture" id=4] +[ext_resource path="res://graphics/tiles/flower/flower_pink_3.png" type="Texture" id=5] +[ext_resource path="res://graphics/tiles/flower/flower_pink_4.png" type="Texture" id=6] +[ext_resource path="res://graphics/tiles/flower/flower_pink_6.png" type="Texture" id=7] +[ext_resource path="res://graphics/tiles/flower/flower_pink_8.png" type="Texture" id=8] + +[resource] +frames = 8 +fps = 10.0 +frame_0/texture = ExtResource( 3 ) +frame_1/texture = ExtResource( 4 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 5 ) +frame_2/delay_sec = 0.0 +frame_3/texture = ExtResource( 6 ) +frame_3/delay_sec = 0.0 +frame_4/texture = ExtResource( 1 ) +frame_4/delay_sec = 0.0 +frame_5/texture = ExtResource( 7 ) +frame_5/delay_sec = 0.0 +frame_6/texture = ExtResource( 2 ) +frame_6/delay_sec = 0.0 +frame_7/texture = ExtResource( 8 ) +frame_7/delay_sec = 0.0 diff --git a/graphics/tiles/flower_red.tres b/graphics/tiles/flower_red.tres new file mode 100644 index 0000000..1d3ff9e --- /dev/null +++ b/graphics/tiles/flower_red.tres @@ -0,0 +1,29 @@ +[gd_resource type="AnimatedTexture" load_steps=9 format=2] + +[ext_resource path="res://graphics/tiles/flower/flower_red_3.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/flower/flower_red_4.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/flower/flower_red_1.png" type="Texture" id=3] +[ext_resource path="res://graphics/tiles/flower/flower_red_2.png" type="Texture" id=4] +[ext_resource path="res://graphics/tiles/flower/flower_red_6.png" type="Texture" id=5] +[ext_resource path="res://graphics/tiles/flower/flower_red_8.png" type="Texture" id=6] +[ext_resource path="res://graphics/tiles/flower/flower_red_5.png" type="Texture" id=7] +[ext_resource path="res://graphics/tiles/flower/flower_red_7.png" type="Texture" id=8] + +[resource] +frames = 8 +fps = 10.0 +frame_0/texture = ExtResource( 3 ) +frame_1/texture = ExtResource( 4 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 1 ) +frame_2/delay_sec = 0.0 +frame_3/texture = ExtResource( 2 ) +frame_3/delay_sec = 0.0 +frame_4/texture = ExtResource( 7 ) +frame_4/delay_sec = 0.0 +frame_5/texture = ExtResource( 5 ) +frame_5/delay_sec = 0.0 +frame_6/texture = ExtResource( 8 ) +frame_6/delay_sec = 0.0 +frame_7/texture = ExtResource( 6 ) +frame_7/delay_sec = 0.0 diff --git a/graphics/tiles/grass.png b/graphics/tiles/grass.png index 4c93083..4f846b9 100644 Binary files a/graphics/tiles/grass.png and b/graphics/tiles/grass.png differ diff --git a/graphics/tiles/laboratory.png b/graphics/tiles/laboratory.png new file mode 100644 index 0000000..f8fec7e Binary files /dev/null and b/graphics/tiles/laboratory.png differ diff --git a/graphics/tiles/laboratory.png.import b/graphics/tiles/laboratory.png.import new file mode 100644 index 0000000..84de99d --- /dev/null +++ b/graphics/tiles/laboratory.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/laboratory.png-0545cbfb34023b00be0869c971e50bc1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/laboratory.png" +dest_files=[ "res://.import/laboratory.png-0545cbfb34023b00be0869c971e50bc1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/ladders.png b/graphics/tiles/ladders.png index fcd9313..4b0a87c 100644 Binary files a/graphics/tiles/ladders.png and b/graphics/tiles/ladders.png differ diff --git a/graphics/tiles/mountain.png b/graphics/tiles/mountain.png index ea0768d..ed70d62 100644 Binary files a/graphics/tiles/mountain.png and b/graphics/tiles/mountain.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_1.png b/graphics/tiles/mushroom/mushroom_brown_1.png new file mode 100644 index 0000000..2a1b22e Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_1.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_1.png.import b/graphics/tiles/mushroom/mushroom_brown_1.png.import new file mode 100644 index 0000000..ec91f97 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_1.png-401bd86f525bf355d78fc3f9b7e776ef.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_1.png" +dest_files=[ "res://.import/mushroom_brown_1.png-401bd86f525bf355d78fc3f9b7e776ef.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_10.png b/graphics/tiles/mushroom/mushroom_brown_10.png new file mode 100644 index 0000000..437488b Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_10.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_10.png.import b/graphics/tiles/mushroom/mushroom_brown_10.png.import new file mode 100644 index 0000000..8795f7e --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_10.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_10.png-31cc2ad787a58abb32729fa87b073f5c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_10.png" +dest_files=[ "res://.import/mushroom_brown_10.png-31cc2ad787a58abb32729fa87b073f5c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_2.png b/graphics/tiles/mushroom/mushroom_brown_2.png new file mode 100644 index 0000000..437488b Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_2.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_2.png.import b/graphics/tiles/mushroom/mushroom_brown_2.png.import new file mode 100644 index 0000000..a99a9d1 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_2.png-fa7ee3e5b01f3a75f9468d6229f78026.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_2.png" +dest_files=[ "res://.import/mushroom_brown_2.png-fa7ee3e5b01f3a75f9468d6229f78026.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_3.png b/graphics/tiles/mushroom/mushroom_brown_3.png new file mode 100644 index 0000000..824d233 Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_3.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_3.png.import b/graphics/tiles/mushroom/mushroom_brown_3.png.import new file mode 100644 index 0000000..3d98f74 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_3.png-9fe48fd32fe280f8215d3979badef3fc.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_3.png" +dest_files=[ "res://.import/mushroom_brown_3.png-9fe48fd32fe280f8215d3979badef3fc.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_4.png b/graphics/tiles/mushroom/mushroom_brown_4.png new file mode 100644 index 0000000..48117eb Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_4.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_4.png.import b/graphics/tiles/mushroom/mushroom_brown_4.png.import new file mode 100644 index 0000000..aec2a34 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_4.png-e61bb5960cb2304358958de0616f4b97.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_4.png" +dest_files=[ "res://.import/mushroom_brown_4.png-e61bb5960cb2304358958de0616f4b97.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_5.png b/graphics/tiles/mushroom/mushroom_brown_5.png new file mode 100644 index 0000000..437488b Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_5.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_5.png.import b/graphics/tiles/mushroom/mushroom_brown_5.png.import new file mode 100644 index 0000000..7365c8b --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_5.png-f233f3c7217a5e90b729955950af2c67.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_5.png" +dest_files=[ "res://.import/mushroom_brown_5.png-f233f3c7217a5e90b729955950af2c67.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_6.png b/graphics/tiles/mushroom/mushroom_brown_6.png new file mode 100644 index 0000000..2a1b22e Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_6.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_6.png.import b/graphics/tiles/mushroom/mushroom_brown_6.png.import new file mode 100644 index 0000000..ba548dd --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_6.png-90bd4ce2116103033838b1b0f2f141fb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_6.png" +dest_files=[ "res://.import/mushroom_brown_6.png-90bd4ce2116103033838b1b0f2f141fb.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_7.png b/graphics/tiles/mushroom/mushroom_brown_7.png new file mode 100644 index 0000000..437488b Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_7.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_7.png.import b/graphics/tiles/mushroom/mushroom_brown_7.png.import new file mode 100644 index 0000000..b785cbf --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_7.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_7.png-0d5ac351baef08eb6d1e17a0c5fc50a3.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_7.png" +dest_files=[ "res://.import/mushroom_brown_7.png-0d5ac351baef08eb6d1e17a0c5fc50a3.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_8.png b/graphics/tiles/mushroom/mushroom_brown_8.png new file mode 100644 index 0000000..287b72b Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_8.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_8.png.import b/graphics/tiles/mushroom/mushroom_brown_8.png.import new file mode 100644 index 0000000..b3d2c16 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_8.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_8.png-8eedc17b1e7d9933375eced95d2d02b7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_8.png" +dest_files=[ "res://.import/mushroom_brown_8.png-8eedc17b1e7d9933375eced95d2d02b7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_brown_9.png b/graphics/tiles/mushroom/mushroom_brown_9.png new file mode 100644 index 0000000..60d14dc Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_brown_9.png differ diff --git a/graphics/tiles/mushroom/mushroom_brown_9.png.import b/graphics/tiles/mushroom/mushroom_brown_9.png.import new file mode 100644 index 0000000..0e6e2b6 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_brown_9.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_brown_9.png-67652fb610409e79b8edd9afbcc7c31f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_brown_9.png" +dest_files=[ "res://.import/mushroom_brown_9.png-67652fb610409e79b8edd9afbcc7c31f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_1.png b/graphics/tiles/mushroom/mushroom_red_1.png new file mode 100644 index 0000000..7d1a09d Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_1.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_1.png.import b/graphics/tiles/mushroom/mushroom_red_1.png.import new file mode 100644 index 0000000..21edbce --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_1.png-9a70789e43e3a1d7c71d4775dce9e83d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_1.png" +dest_files=[ "res://.import/mushroom_red_1.png-9a70789e43e3a1d7c71d4775dce9e83d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_10.png b/graphics/tiles/mushroom/mushroom_red_10.png new file mode 100644 index 0000000..ba73f28 Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_10.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_10.png.import b/graphics/tiles/mushroom/mushroom_red_10.png.import new file mode 100644 index 0000000..9255511 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_10.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_10.png-4adf98ea87edb9233853444e41dcb7d0.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_10.png" +dest_files=[ "res://.import/mushroom_red_10.png-4adf98ea87edb9233853444e41dcb7d0.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_2.png b/graphics/tiles/mushroom/mushroom_red_2.png new file mode 100644 index 0000000..ba73f28 Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_2.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_2.png.import b/graphics/tiles/mushroom/mushroom_red_2.png.import new file mode 100644 index 0000000..d381e35 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_2.png-a407c62f5784dfa146553812b88495ae.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_2.png" +dest_files=[ "res://.import/mushroom_red_2.png-a407c62f5784dfa146553812b88495ae.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_3.png b/graphics/tiles/mushroom/mushroom_red_3.png new file mode 100644 index 0000000..e0e002e Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_3.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_3.png.import b/graphics/tiles/mushroom/mushroom_red_3.png.import new file mode 100644 index 0000000..c3c77c3 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_3.png-d35f042b87fbc5dc3415f5aec39cc383.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_3.png" +dest_files=[ "res://.import/mushroom_red_3.png-d35f042b87fbc5dc3415f5aec39cc383.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_4.png b/graphics/tiles/mushroom/mushroom_red_4.png new file mode 100644 index 0000000..b137e86 Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_4.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_4.png.import b/graphics/tiles/mushroom/mushroom_red_4.png.import new file mode 100644 index 0000000..99d6aca --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_4.png-c5f5704ef785d379aebd95e4ca0eab91.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_4.png" +dest_files=[ "res://.import/mushroom_red_4.png-c5f5704ef785d379aebd95e4ca0eab91.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_5.png b/graphics/tiles/mushroom/mushroom_red_5.png new file mode 100644 index 0000000..ba73f28 Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_5.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_5.png.import b/graphics/tiles/mushroom/mushroom_red_5.png.import new file mode 100644 index 0000000..7c0e08e --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_5.png-6ccb62525c0e98f5c4082031b48fe2d4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_5.png" +dest_files=[ "res://.import/mushroom_red_5.png-6ccb62525c0e98f5c4082031b48fe2d4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_6.png b/graphics/tiles/mushroom/mushroom_red_6.png new file mode 100644 index 0000000..7d1a09d Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_6.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_6.png.import b/graphics/tiles/mushroom/mushroom_red_6.png.import new file mode 100644 index 0000000..432936c --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_6.png-b6e0bd780b47ae66c720d5a2e04bc67a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_6.png" +dest_files=[ "res://.import/mushroom_red_6.png-b6e0bd780b47ae66c720d5a2e04bc67a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_7.png b/graphics/tiles/mushroom/mushroom_red_7.png new file mode 100644 index 0000000..ba73f28 Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_7.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_7.png.import b/graphics/tiles/mushroom/mushroom_red_7.png.import new file mode 100644 index 0000000..34e5386 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_7.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_7.png-edaf25e610cee98192ef6000bbb3ab83.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_7.png" +dest_files=[ "res://.import/mushroom_red_7.png-edaf25e610cee98192ef6000bbb3ab83.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_8.png b/graphics/tiles/mushroom/mushroom_red_8.png new file mode 100644 index 0000000..569eefa Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_8.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_8.png.import b/graphics/tiles/mushroom/mushroom_red_8.png.import new file mode 100644 index 0000000..dd516c3 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_8.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_8.png-a0632ee6bfec178e5f3bb526658e0037.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_8.png" +dest_files=[ "res://.import/mushroom_red_8.png-a0632ee6bfec178e5f3bb526658e0037.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom/mushroom_red_9.png b/graphics/tiles/mushroom/mushroom_red_9.png new file mode 100644 index 0000000..5d4cce6 Binary files /dev/null and b/graphics/tiles/mushroom/mushroom_red_9.png differ diff --git a/graphics/tiles/mushroom/mushroom_red_9.png.import b/graphics/tiles/mushroom/mushroom_red_9.png.import new file mode 100644 index 0000000..55a3875 --- /dev/null +++ b/graphics/tiles/mushroom/mushroom_red_9.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red_9.png-d61749f213201957125a2b3bb6d019f4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom/mushroom_red_9.png" +dest_files=[ "res://.import/mushroom_red_9.png-d61749f213201957125a2b3bb6d019f4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom_brown.tres b/graphics/tiles/mushroom_brown.tres new file mode 100644 index 0000000..ee73b7b --- /dev/null +++ b/graphics/tiles/mushroom_brown.tres @@ -0,0 +1,35 @@ +[gd_resource type="AnimatedTexture" load_steps=11 format=2] + +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_4.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_8.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_7.png" type="Texture" id=3] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_6.png" type="Texture" id=4] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_1.png" type="Texture" id=5] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_2.png" type="Texture" id=6] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_3.png" type="Texture" id=7] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_5.png" type="Texture" id=8] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_10.png" type="Texture" id=9] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_brown_9.png" type="Texture" id=10] + +[resource] +frames = 10 +fps = 9.0 +frame_0/texture = ExtResource( 5 ) +frame_1/texture = ExtResource( 6 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 7 ) +frame_2/delay_sec = 0.0 +frame_3/texture = ExtResource( 1 ) +frame_3/delay_sec = 0.0 +frame_4/texture = ExtResource( 8 ) +frame_4/delay_sec = 0.0 +frame_5/texture = ExtResource( 4 ) +frame_5/delay_sec = 0.0 +frame_6/texture = ExtResource( 3 ) +frame_6/delay_sec = 0.0 +frame_7/texture = ExtResource( 2 ) +frame_7/delay_sec = 0.0 +frame_8/texture = ExtResource( 10 ) +frame_8/delay_sec = 0.0 +frame_9/texture = ExtResource( 9 ) +frame_9/delay_sec = 0.0 diff --git a/graphics/tiles/mushroom_red.png b/graphics/tiles/mushroom_red.png new file mode 100644 index 0000000..88eb518 Binary files /dev/null and b/graphics/tiles/mushroom_red.png differ diff --git a/graphics/tiles/mushroom_red.png.import b/graphics/tiles/mushroom_red.png.import new file mode 100644 index 0000000..575a1dc --- /dev/null +++ b/graphics/tiles/mushroom_red.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/mushroom_red.png-eb8a844ed7c445c341d0b52362b87ffa.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/mushroom_red.png" +dest_files=[ "res://.import/mushroom_red.png-eb8a844ed7c445c341d0b52362b87ffa.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/mushroom_red.tres b/graphics/tiles/mushroom_red.tres new file mode 100644 index 0000000..4ee5d9a --- /dev/null +++ b/graphics/tiles/mushroom_red.tres @@ -0,0 +1,35 @@ +[gd_resource type="AnimatedTexture" load_steps=11 format=2] + +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_7.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_1.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_9.png" type="Texture" id=3] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_6.png" type="Texture" id=4] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_4.png" type="Texture" id=5] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_2.png" type="Texture" id=6] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_8.png" type="Texture" id=7] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_3.png" type="Texture" id=8] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_5.png" type="Texture" id=9] +[ext_resource path="res://graphics/tiles/mushroom/mushroom_red_10.png" type="Texture" id=10] + +[resource] +frames = 10 +fps = 9.0 +frame_0/texture = ExtResource( 2 ) +frame_1/texture = ExtResource( 6 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 8 ) +frame_2/delay_sec = 0.0 +frame_3/texture = ExtResource( 5 ) +frame_3/delay_sec = 0.0 +frame_4/texture = ExtResource( 9 ) +frame_4/delay_sec = 0.0 +frame_5/texture = ExtResource( 4 ) +frame_5/delay_sec = 0.0 +frame_6/texture = ExtResource( 1 ) +frame_6/delay_sec = 0.0 +frame_7/texture = ExtResource( 7 ) +frame_7/delay_sec = 0.0 +frame_8/texture = ExtResource( 3 ) +frame_8/delay_sec = 0.0 +frame_9/texture = ExtResource( 10 ) +frame_9/delay_sec = 0.0 diff --git a/graphics/tiles/seaweed.png b/graphics/tiles/seaweed.png new file mode 100644 index 0000000..5516cdf Binary files /dev/null and b/graphics/tiles/seaweed.png differ diff --git a/graphics/tiles/seaweed.png.import b/graphics/tiles/seaweed.png.import new file mode 100644 index 0000000..3ae9d0d --- /dev/null +++ b/graphics/tiles/seaweed.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed.png-4464300af079a1c1f3aea40f8ab5a4b1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed.png" +dest_files=[ "res://.import/seaweed.png-4464300af079a1c1f3aea40f8ab5a4b1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/seaweed.tres b/graphics/tiles/seaweed.tres new file mode 100644 index 0000000..963beae --- /dev/null +++ b/graphics/tiles/seaweed.tres @@ -0,0 +1,26 @@ +[gd_resource type="AnimatedTexture" load_steps=8 format=2] + +[ext_resource path="res://graphics/tiles/seaweed/seaweed_5.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/seaweed/seaweed_2.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/seaweed/seaweed_4.png" type="Texture" id=3] +[ext_resource path="res://graphics/tiles/seaweed/seaweed_1.png" type="Texture" id=4] +[ext_resource path="res://graphics/tiles/seaweed/seaweed_3.png" type="Texture" id=5] +[ext_resource path="res://graphics/tiles/seaweed/seaweed_7.png" type="Texture" id=6] +[ext_resource path="res://graphics/tiles/seaweed/seaweed_6.png" type="Texture" id=7] + +[resource] +frames = 7 +fps = 10.0 +frame_0/texture = ExtResource( 4 ) +frame_1/texture = ExtResource( 2 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 5 ) +frame_2/delay_sec = 0.0 +frame_3/texture = ExtResource( 3 ) +frame_3/delay_sec = 0.0 +frame_4/texture = ExtResource( 1 ) +frame_4/delay_sec = 0.0 +frame_5/texture = ExtResource( 7 ) +frame_5/delay_sec = 0.0 +frame_6/texture = ExtResource( 6 ) +frame_6/delay_sec = 0.0 diff --git a/graphics/tiles/seaweed/seaweed_1.png b/graphics/tiles/seaweed/seaweed_1.png new file mode 100644 index 0000000..2559f96 Binary files /dev/null and b/graphics/tiles/seaweed/seaweed_1.png differ diff --git a/graphics/tiles/seaweed/seaweed_1.png.import b/graphics/tiles/seaweed/seaweed_1.png.import new file mode 100644 index 0000000..fb2d384 --- /dev/null +++ b/graphics/tiles/seaweed/seaweed_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed_1.png-ff447e1bdd3f1fd9714fd980fc918b30.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed/seaweed_1.png" +dest_files=[ "res://.import/seaweed_1.png-ff447e1bdd3f1fd9714fd980fc918b30.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/seaweed/seaweed_2.png b/graphics/tiles/seaweed/seaweed_2.png new file mode 100644 index 0000000..6cd964b Binary files /dev/null and b/graphics/tiles/seaweed/seaweed_2.png differ diff --git a/graphics/tiles/seaweed/seaweed_2.png.import b/graphics/tiles/seaweed/seaweed_2.png.import new file mode 100644 index 0000000..f43cee7 --- /dev/null +++ b/graphics/tiles/seaweed/seaweed_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed_2.png-9e111a46944f7b1f355e0ade6a856490.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed/seaweed_2.png" +dest_files=[ "res://.import/seaweed_2.png-9e111a46944f7b1f355e0ade6a856490.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/seaweed/seaweed_3.png b/graphics/tiles/seaweed/seaweed_3.png new file mode 100644 index 0000000..efc3349 Binary files /dev/null and b/graphics/tiles/seaweed/seaweed_3.png differ diff --git a/graphics/tiles/seaweed/seaweed_3.png.import b/graphics/tiles/seaweed/seaweed_3.png.import new file mode 100644 index 0000000..5d045ce --- /dev/null +++ b/graphics/tiles/seaweed/seaweed_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed_3.png-9b13f282b82aa12623bf67ead45168a1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed/seaweed_3.png" +dest_files=[ "res://.import/seaweed_3.png-9b13f282b82aa12623bf67ead45168a1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/seaweed/seaweed_4.png b/graphics/tiles/seaweed/seaweed_4.png new file mode 100644 index 0000000..efc3349 Binary files /dev/null and b/graphics/tiles/seaweed/seaweed_4.png differ diff --git a/graphics/tiles/seaweed/seaweed_4.png.import b/graphics/tiles/seaweed/seaweed_4.png.import new file mode 100644 index 0000000..d32f5c3 --- /dev/null +++ b/graphics/tiles/seaweed/seaweed_4.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed_4.png-c04f3994d69c385c853bfd856241b874.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed/seaweed_4.png" +dest_files=[ "res://.import/seaweed_4.png-c04f3994d69c385c853bfd856241b874.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/seaweed/seaweed_5.png b/graphics/tiles/seaweed/seaweed_5.png new file mode 100644 index 0000000..2559f96 Binary files /dev/null and b/graphics/tiles/seaweed/seaweed_5.png differ diff --git a/graphics/tiles/seaweed/seaweed_5.png.import b/graphics/tiles/seaweed/seaweed_5.png.import new file mode 100644 index 0000000..12fc3d6 --- /dev/null +++ b/graphics/tiles/seaweed/seaweed_5.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed_5.png-29721519185c8df0cf66d1b5c542f645.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed/seaweed_5.png" +dest_files=[ "res://.import/seaweed_5.png-29721519185c8df0cf66d1b5c542f645.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/seaweed/seaweed_6.png b/graphics/tiles/seaweed/seaweed_6.png new file mode 100644 index 0000000..44b82e2 Binary files /dev/null and b/graphics/tiles/seaweed/seaweed_6.png differ diff --git a/graphics/tiles/seaweed/seaweed_6.png.import b/graphics/tiles/seaweed/seaweed_6.png.import new file mode 100644 index 0000000..41b6ecf --- /dev/null +++ b/graphics/tiles/seaweed/seaweed_6.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed_6.png-0817e041e4cd4e4c3a85526515737899.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed/seaweed_6.png" +dest_files=[ "res://.import/seaweed_6.png-0817e041e4cd4e4c3a85526515737899.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/seaweed/seaweed_7.png b/graphics/tiles/seaweed/seaweed_7.png new file mode 100644 index 0000000..c77fba2 Binary files /dev/null and b/graphics/tiles/seaweed/seaweed_7.png differ diff --git a/graphics/tiles/seaweed/seaweed_7.png.import b/graphics/tiles/seaweed/seaweed_7.png.import new file mode 100644 index 0000000..2e616cb --- /dev/null +++ b/graphics/tiles/seaweed/seaweed_7.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/seaweed_7.png-2514061e7b232c6d32ae3101ae99d4ee.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/seaweed/seaweed_7.png" +dest_files=[ "res://.import/seaweed_7.png-2514061e7b232c6d32ae3101ae99d4ee.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/spike.png b/graphics/tiles/spike.png index 64898e7..3a7f977 100644 Binary files a/graphics/tiles/spike.png and b/graphics/tiles/spike.png differ diff --git a/graphics/tiles/water_light.tres b/graphics/tiles/water_light.tres new file mode 100644 index 0000000..e5c074a --- /dev/null +++ b/graphics/tiles/water_light.tres @@ -0,0 +1,14 @@ +[gd_resource type="AnimatedTexture" load_steps=4 format=2] + +[ext_resource path="res://graphics/tiles/water_light_3.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/water_light_2.png" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/water_light_1.png" type="Texture" id=3] + +[resource] +frames = 3 +fps = 5.0 +frame_0/texture = ExtResource( 3 ) +frame_1/texture = ExtResource( 2 ) +frame_1/delay_sec = 0.0 +frame_2/texture = ExtResource( 1 ) +frame_2/delay_sec = 0.0 diff --git a/graphics/tiles/water_light_1.png b/graphics/tiles/water_light_1.png new file mode 100644 index 0000000..72c400b Binary files /dev/null and b/graphics/tiles/water_light_1.png differ diff --git a/graphics/tiles/water_light_1.png.import b/graphics/tiles/water_light_1.png.import new file mode 100644 index 0000000..e9ba36c --- /dev/null +++ b/graphics/tiles/water_light_1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/water_light_1.png-dc9c8f84dcd53cb8390256599356eb12.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/water_light_1.png" +dest_files=[ "res://.import/water_light_1.png-dc9c8f84dcd53cb8390256599356eb12.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/water_light_2.png b/graphics/tiles/water_light_2.png new file mode 100644 index 0000000..89884c1 Binary files /dev/null and b/graphics/tiles/water_light_2.png differ diff --git a/graphics/tiles/water_light_2.png.import b/graphics/tiles/water_light_2.png.import new file mode 100644 index 0000000..cc95433 --- /dev/null +++ b/graphics/tiles/water_light_2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/water_light_2.png-5ba81c90747918ba78298b265efaba0e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/water_light_2.png" +dest_files=[ "res://.import/water_light_2.png-5ba81c90747918ba78298b265efaba0e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/water_light_3.png b/graphics/tiles/water_light_3.png new file mode 100644 index 0000000..e834fe7 Binary files /dev/null and b/graphics/tiles/water_light_3.png differ diff --git a/graphics/tiles/water_light_3.png.import b/graphics/tiles/water_light_3.png.import new file mode 100644 index 0000000..3513196 --- /dev/null +++ b/graphics/tiles/water_light_3.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/water_light_3.png-0de652eb02faac645f8fedd7417768ab.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/water_light_3.png" +dest_files=[ "res://.import/water_light_3.png-0de652eb02faac645f8fedd7417768ab.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/water_light_bottom.png b/graphics/tiles/water_light_bottom.png new file mode 100644 index 0000000..e511845 Binary files /dev/null and b/graphics/tiles/water_light_bottom.png differ diff --git a/graphics/tiles/water_light_bottom.png.import b/graphics/tiles/water_light_bottom.png.import new file mode 100644 index 0000000..0a3ec4f --- /dev/null +++ b/graphics/tiles/water_light_bottom.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/water_light_bottom.png-e25ee4fe947bb28d8d59adf3b8d8632b.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/water_light_bottom.png" +dest_files=[ "res://.import/water_light_bottom.png-e25ee4fe947bb28d8d59adf3b8d8632b.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/turniwood/turning_platform_mountain.png b/graphics/turniwood/turning_platform_mountain.png new file mode 100644 index 0000000..ef12729 Binary files /dev/null and b/graphics/turniwood/turning_platform_mountain.png differ diff --git a/graphics/turniwood/turning_platform_mountain.png.import b/graphics/turniwood/turning_platform_mountain.png.import new file mode 100644 index 0000000..02a4aa4 --- /dev/null +++ b/graphics/turniwood/turning_platform_mountain.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/turning_platform_mountain.png-99234754fafbece81d44f113a3eb84f8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/turniwood/turning_platform_mountain.png" +dest_files=[ "res://.import/turning_platform_mountain.png-99234754fafbece81d44f113a3eb84f8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/turniwood/turning_platform_rust.png b/graphics/turniwood/turning_platform_rust.png new file mode 100644 index 0000000..594da05 Binary files /dev/null and b/graphics/turniwood/turning_platform_rust.png differ diff --git a/graphics/turniwood/turning_platform_rust.png.import b/graphics/turniwood/turning_platform_rust.png.import new file mode 100644 index 0000000..2f1583e --- /dev/null +++ b/graphics/turniwood/turning_platform_rust.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/turning_platform_rust.png-1716c004acdfe5c8b6f578edbffcb9d8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/turniwood/turning_platform_rust.png" +dest_files=[ "res://.import/turning_platform_rust.png-1716c004acdfe5c8b6f578edbffcb9d8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/turniwood/turning_platform_wood.png b/graphics/turniwood/turning_platform_wood.png new file mode 100644 index 0000000..a5bb338 Binary files /dev/null and b/graphics/turniwood/turning_platform_wood.png differ diff --git a/graphics/turniwood/turning_platform_wood.png.import b/graphics/turniwood/turning_platform_wood.png.import new file mode 100644 index 0000000..b69152b --- /dev/null +++ b/graphics/turniwood/turning_platform_wood.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/turning_platform_wood.png-3793ee416806618b38cf4a3017bfbd0e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/turniwood/turning_platform_wood.png" +dest_files=[ "res://.import/turning_platform_wood.png-3793ee416806618b38cf4a3017bfbd0e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/turniwood/turning_platform_wood_dark.png b/graphics/turniwood/turning_platform_wood_dark.png new file mode 100644 index 0000000..e1c2ab8 Binary files /dev/null and b/graphics/turniwood/turning_platform_wood_dark.png differ diff --git a/graphics/turniwood/turning_platform_wood_dark.png.import b/graphics/turniwood/turning_platform_wood_dark.png.import new file mode 100644 index 0000000..678972c --- /dev/null +++ b/graphics/turniwood/turning_platform_wood_dark.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/turning_platform_wood_dark.png-46a12d83de18f7a7acdb06d2e86d282c.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/turniwood/turning_platform_wood_dark.png" +dest_files=[ "res://.import/turning_platform_wood_dark.png-46a12d83de18f7a7acdb06d2e86d282c.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/turniwood/turning_platform_yellow.png b/graphics/turniwood/turning_platform_yellow.png index bc5ce12..5ccee02 100644 Binary files a/graphics/turniwood/turning_platform_yellow.png and b/graphics/turniwood/turning_platform_yellow.png differ diff --git a/graphics/turniwood/turning_platoform_lab.png b/graphics/turniwood/turning_platoform_lab.png new file mode 100644 index 0000000..55b4fe1 Binary files /dev/null and b/graphics/turniwood/turning_platoform_lab.png differ diff --git a/graphics/turniwood/turning_platoform_lab.png.import b/graphics/turniwood/turning_platoform_lab.png.import new file mode 100644 index 0000000..2e53082 --- /dev/null +++ b/graphics/turniwood/turning_platoform_lab.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/turning_platoform_lab.png-73e519d3a9eb265b437745a0ee008e01.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/turniwood/turning_platoform_lab.png" +dest_files=[ "res://.import/turning_platoform_lab.png-73e519d3a9eb265b437745a0ee008e01.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/icon.ico b/icon.ico new file mode 100644 index 0000000..da5c469 Binary files /dev/null and b/icon.ico differ diff --git a/icon.xcf b/icon.xcf new file mode 100644 index 0000000..f79bf7f Binary files /dev/null and b/icon.xcf differ diff --git a/ihateyou.bat b/ihateyou.bat new file mode 100644 index 0000000..6fc81be --- /dev/null +++ b/ihateyou.bat @@ -0,0 +1,6 @@ +git restore tilesets +git restore graphics/tiles +git restore shaders +git restore ui +git restore project.godot +git restore default_env.tres \ No newline at end of file diff --git a/maps/abyss.tscn b/maps/abyss.tscn index 3506e72..f0e06c0 100644 --- a/maps/abyss.tscn +++ b/maps/abyss.tscn @@ -1,18 +1,28 @@ -[gd_scene load_steps=26 format=2] +[gd_scene load_steps=28 format=2] [ext_resource path="res://maps/map.gd" type="Script" id=1] [ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=2] [ext_resource path="res://graphics/backgrounds/abyss.png" type="Texture" id=3] [ext_resource path="res://shaders/water_ripple.gdshader" type="Shader" id=4] [ext_resource path="res://audio/music/moon_trail.ogg" type="AudioStream" id=5] -[ext_resource path="res://graphics/tiles/abyss.png" type="Texture" id=6] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=6] [ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=7] -[ext_resource path="res://objects/player/player_scholar.tscn" type="PackedScene" id=8] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=8] [ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=9] -[ext_resource path="res://graphics/particles/bubble.png" type="Texture" id=10] +[ext_resource path="res://tilesets/t_abyss.tres" type="TileSet" id=10] [ext_resource path="res://objects/enemy/mine.tscn" type="PackedScene" id=11] -[ext_resource path="res://scripts/random_spawner.gd" type="Script" id=12] -[ext_resource path="res://objects/environment/bubble/bubble.tscn" type="PackedScene" id=13] +[ext_resource path="res://objects/enemy/fish.tscn" type="PackedScene" id=12] +[ext_resource path="res://objects/enemy/squig.tscn" type="PackedScene" id=14] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=15] +[ext_resource path="res://objects/enemy/turtle.tscn" type="PackedScene" id=16] +[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=17] +[ext_resource path="res://objects/enemy/eel.tscn" type="PackedScene" id=18] +[ext_resource path="res://objects/environment/moving_platform/moving_platform.tscn" type="PackedScene" id=19] +[ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=20] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=21] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=22] +[ext_resource path="res://objects/environment/rock/rock.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/environment/bubble/bubble_spawner.tscn" type="PackedScene" id=24] [sub_resource type="CanvasItemMaterial" id=12] blend_mode = 3 @@ -24,125 +34,34 @@ shader_param/speed = 1.0 shader_param/waves = 32.0 shader_param/color_amount = 0.3 -[sub_resource type="Shader" id=9] -code = "shader_type canvas_item; - -uniform vec4 distortion_color: hint_color = vec4(1.0, 0.0, 1.0, 1.0); -uniform float frames = 4.0; - -float rand(float co){ - return fract(sin(dot(vec2(co, 0.0) ,vec2(12.9898,78.233))) * 43758.5453); -} - -void vertex() { - VERTEX.x /= frames; - VERTEX.y /= 2.0; -} - -void fragment() { - COLOR = texture(TEXTURE, vec2(UV.x / frames + COLOR.r, UV.y / 2.0)); -}" - -[sub_resource type="ShaderMaterial" id=10] -shader = SubResource( 9 ) -shader_param/distortion_color = Color( 1, 0, 1, 1 ) -shader_param/frames = 4.0 - -[sub_resource type="Gradient" id=11] -interpolation_mode = 1 -offsets = PoolRealArray( 0, 0.25, 0.5, 0.75 ) -colors = PoolColorArray( 0, 0, 0, 1, 0.25, 0, 0, 1, 0.501961, 0, 0, 1, 0.75, 0, 0, 1 ) - [sub_resource type="RectangleShape2D" id=7] extents = Vector2( 4, 320 ) [sub_resource type="RectangleShape2D" id=8] extents = Vector2( 128, 4 ) -[sub_resource type="ConvexPolygonShape2D" id=2] -points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) - -[sub_resource type="ConvexPolygonShape2D" id=3] -points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) - -[sub_resource type="ConvexPolygonShape2D" id=4] -points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) - -[sub_resource type="ConvexPolygonShape2D" id=5] -points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) - -[sub_resource type="TileSet" id=6] -0/name = "abyss" -0/texture = ExtResource( 6 ) -0/tex_offset = Vector2( 0, 0 ) -0/modulate = Color( 1, 1, 1, 1 ) -0/region = Rect2( 0, 0, 32, 40 ) -0/tile_mode = 2 -0/autotile/icon_coordinate = Vector2( 0, 0 ) -0/autotile/tile_size = Vector2( 8, 8 ) -0/autotile/spacing = 0 -0/autotile/occluder_map = [ ] -0/autotile/navpoly_map = [ ] -0/autotile/priority_map = [ ] -0/autotile/z_index_map = [ ] -0/occluder_offset = Vector2( 0, 0 ) -0/navigation_offset = Vector2( 0, 0 ) -0/shape_offset = Vector2( 0, 0 ) -0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -0/shape = SubResource( 2 ) -0/shape_one_way = false -0/shape_one_way_margin = 1.0 -0/shapes = [ { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 2 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) -}, { -"autotile_coord": Vector2( 0, 1 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 3 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) -}, { -"autotile_coord": Vector2( 1, 1 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 4 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) -}, { -"autotile_coord": Vector2( 2, 1 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 5 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) -} ] -0/z_index = 0 - [node name="Map" type="Node2D" groups=["map"]] pause_mode = 1 script = ExtResource( 1 ) -target_time_any = 60 -target_time_100 = 120 music = ExtResource( 5 ) [node name="Camera2D" parent="." instance=ExtResource( 7 )] +__meta__ = { +"_edit_lock_": true +} scroll_h = false scroll_v = true respawn_h = false -[node name="BubbleSpawner" type="Node2D" parent="Camera2D"] -position = Vector2( 0, 192 ) -script = ExtResource( 12 ) -scene = ExtResource( 13 ) -extents = Rect2( 0, 0, 256, 8 ) - [node name="BackgroundLayer" type="CanvasLayer" parent="."] layer = -50 -[node name="Sprite" type="Sprite" parent="BackgroundLayer"] +[node name="Background" type="Sprite" parent="BackgroundLayer"] texture = ExtResource( 3 ) centered = false +__meta__ = { +"_edit_lock_": true +} [node name="EffectLayer" type="CanvasLayer" parent="."] layer = 50 @@ -155,6 +74,9 @@ anchor_bottom = 1.0 margin_top = 192.0 margin_bottom = 192.0 color = Color( 0.784314, 0.784314, 0.784314, 1 ) +__meta__ = { +"_edit_lock_": true +} [node name="Depth2" type="ColorRect" parent="EffectLayer"] material = SubResource( 12 ) @@ -163,6 +85,9 @@ anchor_bottom = 1.0 margin_top = 384.0 margin_bottom = 384.0 color = Color( 0.768627, 0.556863, 0.556863, 1 ) +__meta__ = { +"_edit_lock_": true +} [node name="WaterRipple" type="ColorRect" parent="EffectLayer"] material = SubResource( 1 ) @@ -170,68 +95,238 @@ anchor_right = 1.0 anchor_bottom = 1.0 margin_bottom = 384.0 color = Color( 0.054902, 0.0666667, 0.329412, 1 ) - -[node name="Bubbles" type="CPUParticles2D" parent="EffectLayer"] -visible = false -material = SubResource( 10 ) -position = Vector2( 128, 200 ) -lifetime = 13.0 -local_coords = false -texture = ExtResource( 10 ) -emission_shape = 2 -emission_rect_extents = Vector2( 128, 0 ) -direction = Vector2( 0, -1 ) -spread = 0.0 -gravity = Vector2( 0, 0 ) -initial_velocity = 16.0 -color_initial_ramp = SubResource( 11 ) +__meta__ = { +"_edit_lock_": true +} [node name="HUD" parent="." instance=ExtResource( 2 )] song_name = "♫Moon Trail" [node name="Player" parent="." instance=ExtResource( 8 )] -position = Vector2( 16, 56 ) +position = Vector2( 16, 40 ) +underwater = true [node name="LevelBorders" type="StaticBody2D" parent="."] +__meta__ = { +"_edit_group_": true, +"_edit_lock_": true +} -[node name="CollisionShape2D" type="CollisionShape2D" parent="LevelBorders"] +[node name="LeftWall" type="CollisionShape2D" parent="LevelBorders"] position = Vector2( -4, 256 ) shape = SubResource( 7 ) -[node name="CollisionShape2D2" type="CollisionShape2D" parent="LevelBorders"] +[node name="RightWall" type="CollisionShape2D" parent="LevelBorders"] position = Vector2( 260, 256 ) shape = SubResource( 7 ) -[node name="CollisionShape2D3" type="CollisionShape2D" parent="LevelBorders"] +[node name="Floor" type="CollisionShape2D" parent="LevelBorders"] position = Vector2( 128, 580 ) shape = SubResource( 8 ) [node name="Tilemaps" type="Node2D" parent="."] [node name="Ground" type="TileMap" parent="Tilemaps"] -tile_set = SubResource( 6 ) +z_index = -30 +tile_set = ExtResource( 10 ) cell_size = Vector2( 8, 8 ) format = 1 -tile_data = PoolIntArray( 393233, 0, 196608, 458752, 0, 65536, 458753, 0, 65537, 458754, 0, 65537, 458755, 0, 65537, 458756, 0, 65537, 458757, 0, 65537, 458758, 0, 65538, 458769, 0, 196608, 458770, 0, 0, 458771, 0, 0, 524302, 0, 0, 524303, 0, 0, 524305, 0, 196608, 589835, 0, 0, 589841, 0, 196608, 655368, 0, 0, 655377, 0, 196608, 720913, 0, 196608, 786449, 0, 196608, 851976, 0, 0, 851977, 0, 0, 851978, 0, 0, 851979, 0, 0, 851980, 0, 0, 851981, 0, 0, 851982, 0, 0, 851983, 0, 0, 851984, 0, 0, 851985, 0, 0, 851986, 0, 0, 851987, 0, 0, 917511, 0, 0, 917512, 0, 0, 917513, 0, 0, 917514, 0, 0, 917515, 0, 0, 917516, 0, 0, 917517, 0, 0, 917518, 0, 0, 917519, 0, 0, 917520, 0, 0, 917521, 0, 0, 917522, 0, 0, 983048, 0, 0, 983049, 0, 0, 983050, 0, 0, 983051, 0, 0, 983052, 0, 0, 983053, 0, 0, 983054, 0, 0, 983055, 0, 0, 983056, 0, 0, 983057, 0, 0, 983058, 0, 0, 1048586, 0, 0, 1048587, 0, 0, 1048588, 0, 0, 1048589, 0, 0, 1048590, 0, 0, 1048591, 0, 0, 1048592, 0, 0, 1048593, 0, 0, 1114124, 0, 0, 1114125, 0, 0, 1114126, 0, 0, 1114127, 0, 0, 1114128, 0, 0 ) +tile_data = PoolIntArray( 327680, 0, 196609, 327681, 0, 196610, 327682, 0, 196610, 327683, 0, 196610, 327684, 0, 196610, 327685, 0, 196610, 327686, 0, 196611, 327704, 0, 1, 327705, 0, 196610, 327706, 0, 196610, 327707, 0, 196610, 327708, 0, 3, 327711, 0, 0, 393240, 0, 65536, 393244, 0, 65536, 393247, 0, 65536, 458776, 0, 65536, 458780, 0, 65536, 458783, 0, 65536, 524303, 0, 196609, 524304, 0, 196610, 524305, 0, 196610, 524306, 0, 196610, 524307, 0, 196610, 524308, 0, 196610, 524309, 0, 196610, 524310, 0, 196610, 524311, 0, 196610, 524312, 0, 131075, 524316, 0, 65536, 524319, 0, 65536, 589830, 0, 196609, 589831, 0, 196610, 589832, 0, 196610, 589833, 0, 196610, 589834, 0, 196610, 589835, 0, 196610, 589836, 0, 3, 589852, 0, 65536, 589855, 0, 65536, 655363, 0, 196608, 655372, 0, 65536, 655388, 0, 65536, 655391, 0, 65536, 720908, 0, 131073, 720909, 0, 3, 720924, 0, 65536, 720927, 0, 65536, 786445, 0, 131073, 786446, 0, 3, 786456, 0, 196608, 786460, 0, 65536, 786463, 0, 65536, 851982, 0, 131073, 851983, 0, 3, 851986, 0, 196609, 851987, 0, 196610, 851988, 0, 196610, 851989, 0, 196611, 851996, 0, 65536, 851999, 0, 65536, 917506, 0, 196609, 917507, 0, 196610, 917508, 0, 196610, 917509, 0, 3, 917519, 0, 65536, 917532, 0, 65536, 917535, 0, 65536, 983045, 0, 65536, 983055, 0, 131073, 983056, 0, 196610, 983057, 0, 196610, 983058, 0, 196610, 983059, 0, 2, 983060, 0, 196610, 983061, 0, 196610, 983062, 0, 196610, 983063, 0, 196610, 983064, 0, 196610, 983065, 0, 196610, 983066, 0, 196610, 983067, 0, 196610, 983068, 0, 131075, 983071, 0, 131072, 1048581, 0, 65536, 1048588, 0, 1, 1048589, 0, 196611, 1048595, 0, 65536, 1114117, 0, 65536, 1114124, 0, 65536, 1114131, 0, 131072, 1179653, 0, 131073, 1179654, 0, 196610, 1179655, 0, 196610, 1179656, 0, 196610, 1179657, 0, 196610, 1179658, 0, 196610, 1179659, 0, 196610, 1179660, 0, 131075, 1310734, 0, 1, 1310735, 0, 196610, 1310736, 0, 196611, 1310739, 0, 196609, 1310740, 0, 196610, 1310741, 0, 196611, 1376258, 0, 196609, 1376259, 0, 196610, 1376260, 0, 196610, 1376261, 0, 3, 1376270, 0, 65536, 1441797, 0, 131073, 1441798, 0, 196610, 1441799, 0, 196610, 1441800, 0, 196611, 1441803, 0, 196609, 1441804, 0, 196610, 1441805, 0, 196610, 1441806, 0, 65539, 1507342, 0, 131073, 1507343, 0, 196610, 1507344, 0, 196610, 1507345, 0, 196610, 1507346, 0, 196610, 1507347, 0, 196610, 1507348, 0, 196610, 1507349, 0, 196610, 1507350, 0, 196610, 1507351, 0, 196610, 1507352, 0, 196610, 1507353, 0, 196610, 1507354, 0, 196610, 1507355, 0, 196611, 1835008, 0, 196609, 1835009, 0, 196610, 1835010, 0, 196610, 1835011, 0, 196610, 1835012, 0, 196610, 1835013, 0, 196610, 1835014, 0, 196610, 1835015, 0, 196610, 1835016, 0, 196610, 1835017, 0, 196610, 1835018, 0, 196610, 1835019, 0, 196610, 1835020, 0, 196610, 1835021, 0, 196610, 1835022, 0, 3, 1835031, 0, 1, 1835032, 0, 196610, 1835033, 0, 196611, 1835035, 0, 196609, 1835036, 0, 196610, 1835037, 0, 196610, 1835038, 0, 196610, 1835039, 0, 196611, 1900558, 0, 131073, 1900559, 0, 3, 1900566, 0, 1, 1900567, 0, 131075, 1966095, 0, 131073, 1966096, 0, 196611, 1966100, 0, 1, 1966101, 0, 196610, 1966102, 0, 131075, 2031636, 0, 65536, 2097172, 0, 131072, 2162702, 0, 1, 2162703, 0, 196610, 2162704, 0, 2, 2162705, 0, 196611, 2228238, 0, 65536, 2228240, 0, 65536, 2293764, 0, 196609, 2293765, 0, 196610, 2293766, 0, 196610, 2293767, 0, 196610, 2293768, 0, 196610, 2293769, 0, 196610, 2293770, 0, 196610, 2293771, 0, 196610, 2293772, 0, 196610, 2293773, 0, 196610, 2293774, 0, 131075, 2293776, 0, 65536, 2359296, 0, 196609, 2359297, 0, 3, 2359312, 0, 65536, 2359316, 0, 196609, 2359317, 0, 196610, 2359318, 0, 196610, 2359319, 0, 196610, 2359320, 0, 196610, 2359321, 0, 196610, 2359322, 0, 196610, 2359323, 0, 196610, 2359324, 0, 196610, 2359325, 0, 196610, 2359326, 0, 196610, 2359327, 0, 196611, 2424833, 0, 65536, 2424848, 0, 65536, 2490369, 0, 65536, 2490384, 0, 65536, 2555905, 0, 65536, 2555920, 0, 65536, 2621441, 0, 65536, 2621456, 0, 65536, 2686977, 0, 65536, 2686992, 0, 65536, 2752513, 0, 65536, 2752516, 0, 1, 2752517, 0, 196610, 2752518, 0, 196610, 2752519, 0, 196610, 2752520, 0, 196610, 2752521, 0, 196610, 2752522, 0, 196610, 2752523, 0, 196610, 2752524, 0, 196610, 2752525, 0, 196610, 2752526, 0, 196610, 2752527, 0, 196610, 2752528, 0, 131075, 2818049, 0, 65536, 2818052, 0, 65536, 2883585, 0, 65536, 2883588, 0, 65536, 2949121, 0, 65536, 2949124, 0, 65536, 3014657, 0, 65536, 3014660, 0, 65536, 3080193, 0, 131072, 3080196, 0, 131072 ) + +[node name="Ladders" type="TileMap" parent="Tilemaps"] +z_index = 10 +tile_set = ExtResource( 6 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 655360, 0, 131074, 720896, 0, 131074, 786432, 0, 131074, 851968, 0, 131074, 917504, 0, 131074, 983040, 0, 131074, 1048576, 0, 131074, 1114112, 0, 131074, 1179648, 0, 131074, 1245184, 0, 131074, 1310720, 0, 131074, 1376256, 0, 131074, 1441792, 0, 131074, 1507328, 0, 131074, 1572864, 0, 131074, 1638400, 0, 131074, 1703936, 0, 131074, 1769472, 0, 131074 ) + +[node name="Death" type="TileMap" parent="Tilemaps" groups=["death"]] +tile_set = ExtResource( 15 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 458768, 1, 0, 458769, 1, 0, 458770, 1, 0, 458771, 1, 0, 458772, 1, 0, 458773, 1, 0, 458774, 1, 0, 458775, 1, 0, 786452, 1, 0, 917520, 1, 0, 917521, 1, 0, 917522, 1, 0, 917523, 1, 0, 917524, 1, 0, 917525, 1, 0, 917526, 1, 0, 917527, 1, 0, 917528, 1, 0, 917529, 1, 0, 1114121, 1, 0, 1441807, 1, 0, 1441808, 1, 0, 1441809, 1, 0, 1441810, 1, 0, 1441811, 1, 0, 1441812, 1, 0, 1441813, 1, 0, 1441814, 1, 0, 1441815, 1, 0, 1441816, 1, 0, 1441817, 1, 0, 1441818, 1, 0, 1441819, 1, 0, 1769478, 1, 0, 1769485, 1, 0, 2228228, 1, 0, 2228229, 1, 0, 2228230, 1, 0, 2228231, 1, 0, 2228232, 1, 0, 2228233, 1, 0, 2228234, 1, 0, 2228235, 1, 0, 2228236, 1, 0, 2228237, 1, 0 ) [node name="Ladders" type="Node2D" parent="."] [node name="Ladder" parent="Ladders" instance=ExtResource( 9 )] -position = Vector2( 136, 48 ) -scale = Vector2( 1, 7 ) +position = Vector2( 0, 80 ) +scale = Vector2( 1, 18 ) [node name="Enemies" type="Node2D" parent="."] [node name="Mines" type="Node2D" parent="Enemies"] [node name="Mine" parent="Enemies/Mines" instance=ExtResource( 11 )] -position = Vector2( 96, 32 ) +position = Vector2( 48, 120 ) [node name="Mine2" parent="Enemies/Mines" instance=ExtResource( 11 )] -position = Vector2( 120, 32 ) - -[node name="Mine3" parent="Enemies/Mines" instance=ExtResource( 11 )] -position = Vector2( 144, 24 ) +position = Vector2( 72, 96 ) [node name="Mine4" parent="Enemies/Mines" instance=ExtResource( 11 )] -position = Vector2( 72, 48 ) +position = Vector2( 184, 152 ) + +[node name="Squigs" type="Node2D" parent="Enemies"] + +[node name="Squig" parent="Enemies/Squigs" instance=ExtResource( 14 )] +position = Vector2( 136, 416 ) + +[node name="Squig2" parent="Enemies/Squigs" instance=ExtResource( 14 )] +position = Vector2( 200, 432 ) + +[node name="Squig3" parent="Enemies/Squigs" instance=ExtResource( 14 )] +position = Vector2( 88, 528 ) + +[node name="Turtle" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 56, 40 ) +right_down_boundary = 9.0 +speed = 50 + +[node name="Turtle2" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 88, 264 ) +left_up_boundary = 10.0 +speed = 30 + +[node name="Eel" parent="Enemies" instance=ExtResource( 18 )] +position = Vector2( 152, 96 ) +speed = 50.0 + +[node name="Eel2" parent="Enemies" instance=ExtResource( 18 )] +position = Vector2( 144, 256 ) +speed = 50.0 + +[node name="Eel3" parent="Enemies" instance=ExtResource( 18 )] +position = Vector2( 40, 112 ) +speed = 50.0 + +[node name="Collectibles" type="Node2D" parent="."] + +[node name="Star" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 88, 136 ) + +[node name="Star2" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 208, 56 ) +color = 1 + +[node name="Key" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 32, 32 ) + +[node name="Key2" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 48, 32 ) + +[node name="Key3" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 40, 104 ) + +[node name="Key18" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 120, 152 ) + +[node name="Key15" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 128, 232 ) + +[node name="Key16" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 80, 216 ) + +[node name="Key17" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 112, 216 ) + +[node name="Key5" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 80, 64 ) + +[node name="Key7" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 192, 32 ) + +[node name="Key8" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 224, 32 ) + +[node name="Key12" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 232, 56 ) + +[node name="Key13" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 232, 88 ) + +[node name="Key14" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 232, 120 ) + +[node name="Key9" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 104, 80 ) + +[node name="Key10" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 112, 88 ) + +[node name="Key11" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 120, 96 ) + +[node name="Key6" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 56, 64 ) + +[node name="Key4" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 16, 104 ) + +[node name="Shard" parent="Collectibles" instance=ExtResource( 22 )] +position = Vector2( 160, 152 ) + +[node name="Star3" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 240, 256 ) +color = 2 + +[node name="Environment" type="Node2D" parent="."] + +[node name="TurningPlatform" parent="Environment" instance=ExtResource( 20 )] +position = Vector2( 168, 40 ) + +[node name="MovingPlatform" parent="Environment" instance=ExtResource( 19 )] +position = Vector2( 212, 104 ) +scale = Vector2( 2, 1 ) +left_up_boundary = 4.0 +move_direction = 1 + +[node name="MovingPlatform2" parent="Environment" instance=ExtResource( 19 )] +position = Vector2( 240, 160 ) +scale = Vector2( 2, 1 ) +speed = 40 +left_up_boundary = 8.0 + +[node name="Rock2" parent="Environment" instance=ExtResource( 23 )] +position = Vector2( 148, 152 ) + +[node name="Bubbles" type="Node2D" parent="."] + +[node name="BubbleSpawner" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 8, 32 ) + +[node name="BubbleSpawner2" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 64, 64 ) + +[node name="BubbleSpawner3" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 96, 120 ) + +[node name="BubbleSpawner4" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 24, 104 ) + +[node name="BubbleSpawner5" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 24, 160 ) + +[node name="BubbleSpawner6" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 120, 152 ) + +[node name="BubbleSpawner7" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 96, 216 ) + +[node name="Fish" parent="." instance=ExtResource( 12 )] +position = Vector2( 72, 64 ) +left_up_boundary = 3.0 +right_down_boundary = 4.0 + +[node name="Fish2" parent="." instance=ExtResource( 12 )] +position = Vector2( 40, 216 ) +left_up_boundary = 2.0 +right_down_boundary = 3.0 + +[node name="Fish3" parent="." instance=ExtResource( 12 )] +position = Vector2( 96, 216 ) +left_up_boundary = 1.0 +right_down_boundary = 3.0 + +[editable path="Enemies/Eel"] +[editable path="Enemies/Eel2"] +[editable path="Enemies/Eel3"] diff --git a/maps/abyss_scholar.tscn b/maps/abyss_scholar.tscn new file mode 100644 index 0000000..f816bc0 --- /dev/null +++ b/maps/abyss_scholar.tscn @@ -0,0 +1,751 @@ +[gd_scene load_steps=50 format=2] + +[ext_resource path="res://maps/map.gd" type="Script" id=1] +[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=2] +[ext_resource path="res://graphics/backgrounds/abyss.png" type="Texture" id=3] +[ext_resource path="res://shaders/water_ripple.gdshader" type="Shader" id=4] +[ext_resource path="res://audio/music/moon_trail.ogg" type="AudioStream" id=5] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=6] +[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=7] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=8] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=9] +[ext_resource path="res://tilesets/t_abyss.tres" type="TileSet" id=10] +[ext_resource path="res://objects/enemy/mine.tscn" type="PackedScene" id=11] +[ext_resource path="res://objects/enemy/fish.tscn" type="PackedScene" id=12] +[ext_resource path="res://objects/environment/falling_block/falling_block_cave.tscn" type="PackedScene" id=13] +[ext_resource path="res://objects/enemy/squig.tscn" type="PackedScene" id=14] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=15] +[ext_resource path="res://objects/enemy/turtle.tscn" type="PackedScene" id=16] +[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=17] +[ext_resource path="res://objects/enemy/eel.tscn" type="PackedScene" id=18] +[ext_resource path="res://objects/environment/moving_platform/moving_platform.tscn" type="PackedScene" id=19] +[ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=20] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=21] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=22] +[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/environment/bubble/bubble_spawner.tscn" type="PackedScene" id=24] +[ext_resource path="res://objects/respawn_point.tscn" type="PackedScene" id=25] +[ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=26] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=27] +[ext_resource path="res://objects/lore/abyss/crater_of_the_abyss.tscn" type="PackedScene" id=28] +[ext_resource path="res://objects/lore/abyss/beel.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/lore/abyss/bullet_fish.tscn" type="PackedScene" id=30] +[ext_resource path="res://objects/lore/abyss/mine.tscn" type="PackedScene" id=31] +[ext_resource path="res://objects/lore/abyss/squig.tscn" type="PackedScene" id=32] +[ext_resource path="res://objects/lore/abyss/turchin.tscn" type="PackedScene" id=33] +[ext_resource path="res://graphics/particles/pixel.png" type="Texture" id=34] + +[sub_resource type="CanvasItemMaterial" id=12] +blend_mode = 3 + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 4 ) +shader_param/offset = 0.5 +shader_param/speed = 1.0 +shader_param/waves = 32.0 +shader_param/color_amount = 0.3 + +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 4, 320 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 128, 4 ) + +[sub_resource type="Curve2D" id=13] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, -24, 0, 0, 0, 0, 0, -48, 0, 0, 0, 0, 24, -72, 0, 0, 0, 0, 0, -96, 0, 0, 0, 0, 24, -72, 0, 0, 0, 0, 0, -48, 0, 0, 0, 0, 24, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) +} + +[sub_resource type="Curve2D" id=15] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 40, 8, 0, 0, 0, 0, 40, 16, 0, 0, 0, 0, 32, 24, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, -8, 16, 0, 0, 0, 0, -8, 8, 0, 0, 0, 0, 0, 0 ) +} + +[sub_resource type="Curve2D" id=14] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -8, 0, 0, 0, 0, 16, -16, 0, 0, 0, 0, 56, -16, 0, 0, 0, 0, 72, -32, 0, 0, 0, 0, 80, -40, 0, 0, 0, 0, 160, -40, 0, 0, 0, 0, 168, -32, 0, 0, 0, 0, 168, -24, 0, 0, 0, 0, 88, -24, 0, 0, 0, 0, 80, -16, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) +} + +[sub_resource type="Curve2D" id=16] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, -32, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 24, -32, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 40, -32, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 40, -32, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 24, -32, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 8, -32, 0, 0, 0, 0, 0, 0 ) +} + +[sub_resource type="Curve2D" id=17] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, -16, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 48, -16, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 80, -16, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 48, -16, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 16, -16, 0, 0, 0, 0, 0, 0 ) +} + +[sub_resource type="Curve2D" id=24] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 16, 40, 0, 0, 0, 0, 24, 48, 0, 0, 0, 0, 24, 56, 0, 0, 0, 0, 16, 64, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 16, 64, 0, 0, 0, 0, 24, 56, 0, 0, 0, 0, 24, 48, 0, 0, 0, 0, 16, 40, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0 ) +} + +[sub_resource type="Curve2D" id=23] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 48, 8, 0, 0, 0, 0, 56, 16, 0, 0, 0, 0, 56, 32, 0, 0, 0, 0, 48, 40, 0, 0, 0, 0, 32, 48, 0, 0, 0, 0, 8, 48, 0, 0, 0, 0, -16, 40, 0, 0, 0, 0, -24, 32, 0, 0, 0, 0, -24, 16, 0, 0, 0, 0, -16, 8, 0, 0, 0, 0, 0, 0 ) +} + +[sub_resource type="RectangleShape2D" id=19] +extents = Vector2( 46.9375, 4 ) + +[sub_resource type="RectangleShape2D" id=25] +extents = Vector2( 20, 4 ) + +[sub_resource type="RectangleShape2D" id=20] +extents = Vector2( 80.5, 4 ) + +[sub_resource type="RectangleShape2D" id=21] +extents = Vector2( 42, 4 ) + +[node name="Map2" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 1 ) +target_time_any = 60 +target_time_100 = 160 +music = ExtResource( 5 ) +lore_entries = [ ExtResource( 28 ), ExtResource( 29 ), ExtResource( 30 ), ExtResource( 31 ), ExtResource( 32 ), ExtResource( 33 ) ] + +[node name="Camera2D" parent="." instance=ExtResource( 7 )] +position = Vector2( 0, 384 ) +__meta__ = { +"_edit_lock_": true +} +scroll_h = false +scroll_v = true +respawn_h = false + +[node name="BackgroundLayer" type="CanvasLayer" parent="."] +layer = -50 + +[node name="Background" type="Sprite" parent="BackgroundLayer"] +texture = ExtResource( 3 ) +centered = false +__meta__ = { +"_edit_lock_": true +} + +[node name="EffectLayer" type="CanvasLayer" parent="."] +layer = 50 +follow_viewport_enable = true + +[node name="Depth1" type="ColorRect" parent="EffectLayer"] +visible = false +material = SubResource( 12 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 192.0 +margin_bottom = 192.0 +color = Color( 0.784314, 0.784314, 0.784314, 1 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="Depth2" type="ColorRect" parent="EffectLayer"] +visible = false +material = SubResource( 12 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 384.0 +margin_bottom = 384.0 +color = Color( 0.768627, 0.556863, 0.556863, 1 ) + +[node name="WaterRipple" type="ColorRect" parent="EffectLayer"] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_bottom = 384.0 +color = Color( 0.054902, 0.0666667, 0.329412, 1 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="HUD" parent="." instance=ExtResource( 2 )] +song_name = "♫Moon Trail 2023" + +[node name="Depth1" type="Light2D" parent="."] +position = Vector2( 0, 192 ) +scale = Vector2( 256, 192 ) +z_index = 1 +texture = ExtResource( 34 ) +offset = Vector2( 0.5, 0.5 ) +color = Color( 0.148438, 0.0363846, 0.126981, 1 ) +energy = 0.25 +mode = 2 +range_layer_min = -50 + +[node name="Depth2" type="Light2D" parent="."] +position = Vector2( 0, 384 ) +scale = Vector2( 256, 192 ) +z_index = 1 +texture = ExtResource( 34 ) +offset = Vector2( 0.5, 0.5 ) +color = Color( 0.333333, 0.0901961, 0.0901961, 1 ) +energy = 0.5 +mode = 2 +range_layer_min = -50 + +[node name="Player" parent="." instance=ExtResource( 8 )] +position = Vector2( 24, 560 ) +underwater = true + +[node name="LevelBorders" type="StaticBody2D" parent="."] +__meta__ = { +"_edit_group_": true, +"_edit_lock_": true +} + +[node name="LeftWall" type="CollisionShape2D" parent="LevelBorders"] +position = Vector2( -4, 256 ) +shape = SubResource( 7 ) + +[node name="RightWall" type="CollisionShape2D" parent="LevelBorders"] +position = Vector2( 260, 256 ) +shape = SubResource( 7 ) + +[node name="Floor" type="CollisionShape2D" parent="LevelBorders"] +position = Vector2( 128, 580 ) +shape = SubResource( 8 ) + +[node name="Tilemaps" type="Node2D" parent="."] + +[node name="Ground" type="TileMap" parent="Tilemaps" groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 27 ) +z_index = -30 +tile_set = ExtResource( 10 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 131095, 2, 2, 131099, 2, 2, 196631, 2, 2, 196633, 2, 1, 196635, 2, 2, 262166, 0, 1, 262167, 0, 196610, 262168, 0, 196610, 262169, 0, 196610, 262170, 0, 196610, 262171, 0, 196610, 262172, 0, 3, 262175, 0, 0, 327680, 0, 196609, 327681, 0, 196610, 327682, 0, 196610, 327683, 0, 196610, 327684, 0, 196610, 327685, 0, 196610, 327686, 0, 196611, 327702, 0, 65536, 327708, 0, 131072, 327711, 0, 65536, 393231, 0, 196609, 393232, 0, 196610, 393233, 0, 196610, 393234, 0, 196610, 393235, 0, 196610, 393236, 0, 196610, 393237, 0, 196610, 393238, 0, 131075, 393244, -1610612733, 0, 393247, 0, 65536, 458759, 5, 0, 458762, 5, 0, 458780, -1610612733, 0, 458783, 0, 65536, 524295, 5, 0, 524298, 5, 0, 524316, -1610612733, 0, 524319, 0, 65536, 589830, 0, 196609, 589831, 0, 196610, 589832, 0, 196610, 589833, 0, 196610, 589834, 0, 196610, 589835, 0, 196610, 589836, 0, 3, 589848, 0, 196608, 589852, -1610612733, 0, 589855, 0, 65536, 655363, 0, 196608, 655372, 0, 65536, 655378, 0, 196609, 655379, 0, 196610, 655380, 0, 196610, 655381, 0, 196611, 655388, 0, 0, 655391, 0, 65536, 720908, 0, 131073, 720909, 0, 3, 720924, 0, 65536, 720927, 0, 65536, 786445, 0, 131073, 786446, 0, 196610, 786447, 0, 196610, 786448, 0, 196610, 786449, 0, 196610, 786450, 0, 196610, 786451, 0, 2, 786452, 0, 196610, 786453, 0, 196610, 786454, 0, 196610, 786455, 0, 196610, 786456, 0, 196610, 786457, 0, 196610, 786458, 0, 196610, 786459, 0, 196610, 786460, 0, 131075, 786463, 0, 131072, 851972, 2, 1, 917506, 0, 196609, 917507, 0, 196610, 917508, 0, 196610, 917509, 0, 3, 983045, 0, 65536, 1048581, 0, 65536, 1048595, 0, 196609, 1048596, 0, 196610, 1048597, 0, 196611, 1114117, 0, 65536, 1114124, 2, 0, 1179653, 0, 131073, 1179654, 0, 196610, 1179655, 0, 196610, 1179656, 0, 196610, 1179657, 0, 196610, 1179658, 0, 196610, 1179659, 0, 196610, 1179660, 0, 196611, 1245202, 0, 196609, 1245203, 0, 196610, 1245204, 0, 196610, 1245205, 0, 196610, 1245206, 0, 196610, 1245207, 0, 196610, 1245208, 0, 196610, 1245209, 0, 196610, 1245210, 0, 196610, 1245211, 0, 196610, 1245212, 0, 196610, 1245213, 0, 196610, 1245214, 0, 196610, 1245215, 0, 196611, 1310724, 2, 1, 1310732, 5, 0, 1310742, -1073741821, 0, 1376259, 0, 196609, 1376260, 0, 196610, 1376261, 0, 3, 1376264, 2, 0, 1376268, 5, 0, 1376274, 5, 0, 1376278, -1073741821, 0, 1376280, 5, 0, 1376283, 5, 0, 1441797, 0, 131073, 1441798, 0, 196610, 1441799, 0, 196610, 1441800, 0, 196611, 1441803, 0, 196609, 1441804, 0, 196610, 1441805, 0, 196610, 1441806, 0, 196610, 1441807, 0, 3, 1441810, 5, 0, 1441814, -1073741821, 0, 1441816, 5, 0, 1441819, 5, 0, 1507343, 0, 131073, 1507344, 0, 196610, 1507345, 0, 196610, 1507346, 0, 196610, 1507347, 0, 196610, 1507348, 0, 196610, 1507349, 0, 196610, 1507350, 0, 196610, 1507351, 0, 196610, 1507352, 0, 196610, 1507353, 0, 196610, 1507354, 0, 196610, 1507355, 0, 196610, 1507356, 0, 196610, 1507357, 0, 196611, 1638402, 5, 0, 1638407, 5, 0, 1638411, 5, 0, 1703938, 5, 0, 1703943, 5, 0, 1703947, 5, 0, 1769474, 5, 0, 1769479, 5, 0, 1769483, 5, 0, 1835008, 0, 196609, 1835009, 0, 196610, 1835010, 0, 196610, 1835011, 0, 196610, 1835012, 0, 196610, 1835013, 0, 196610, 1835014, 0, 196610, 1835015, 0, 196610, 1835016, 0, 196610, 1835017, 0, 196610, 1835018, 0, 196610, 1835019, 0, 196610, 1835020, 0, 196610, 1835021, 0, 196610, 1835022, 0, 3, 1835034, 0, 196609, 1835035, 0, 196610, 1835036, 0, 196610, 1835037, 0, 196610, 1835038, 0, 196610, 1835039, 0, 196611, 1900558, 0, 131073, 1900559, 0, 3, 1966095, 0, 131073, 1966096, 0, 196611, 2031636, 0, 196608, 2097166, 2, 0, 2097169, 2, 0, 2162701, 0, 196609, 2162702, 0, 196610, 2162703, 0, 196610, 2162704, 0, 196610, 2162705, 0, 196610, 2162706, 0, 196611, 2162710, 0, 196609, 2162711, 0, 196610, 2162712, 0, 196611, 2424841, 0, 196609, 2424842, 0, 196611, 2424857, 0, 0, 2424860, 0, 196609, 2424861, 0, 196610, 2424862, 0, 196610, 2424863, 0, 3, 2490372, 2, 0, 2490374, 2, 1, 2490383, 0, 196609, 2490384, 0, 196610, 2490385, 0, 196610, 2490386, 0, 196611, 2490393, 0, 65536, 2490399, 0, 65536, 2555907, 0, 196609, 2555908, 0, 196610, 2555909, 0, 196610, 2555910, 0, 196610, 2555911, 0, 196611, 2555929, 0, 131072, 2555935, 0, 65536, 2621465, -1073741821, 0, 2621469, 0, 196609, 2621470, 0, 196610, 2621471, 0, 131075, 2687001, -1073741821, 0, 2752537, -1073741821, 0, 2818071, 0, 196609, 2818072, 0, 196610, 2818073, 0, 2, 2818074, 0, 196610, 2818075, 0, 196610, 2818076, 0, 196611, 2883609, 0, 65536, 2883614, 0, 196609, 2883615, 0, 3, 2949134, 0, 196609, 2949135, 0, 196610, 2949136, 0, 196610, 2949137, 0, 196610, 2949138, 0, 196610, 2949139, 0, 196611, 2949145, 0, 65536, 2949150, 2, 3, 2949151, 0, 65536, 3014681, 0, 131073, 3014682, 0, 196610, 3014683, 0, 196610, 3014684, 0, 196610, 3014685, 0, 196610, 3014686, 0, 196610, 3014687, 0, 131075, 3342336, 3, 0, 3342337, 3, 0, 3342338, 3, 0, 3342339, 0, 196609, 3342340, 0, 3, 3342341, 2, 0, 3342355, 5, 0, 3342360, 5, 0, 3407876, 0, 65537, 3407877, 0, 3, 3407881, 0, 196608, 3407891, 5, 0, 3407896, 5, 0, 3473412, 0, 65537, 3473413, 0, 131074, 3473414, 0, 3, 3473415, 2, 1, 3473427, 5, 0, 3473432, 5, 0, 3538948, 0, 65536, 3538950, 0, 131073, 3538951, 0, 3, 3538954, 2, 0, 3538960, 2, 1, 3538961, -1073741824, 1, 3538962, 0, 196610, 3538963, 0, 196610, 3538964, 0, 196610, 3538965, 0, 196610, 3538966, 0, 196610, 3538967, 0, 196610, 3538968, 0, 196610, 3538969, 0, 196610, 3538970, 0, 196611, 3604484, 0, 65536, 3604487, 0, 131073, 3604488, 0, 196610, 3604489, 0, 196610, 3604490, 0, 196610, 3604491, 0, 196610, 3604492, 0, 196611, 3604496, 0, 1, 3604497, 0, 131075, 3670020, 0, 65536, 3670030, 2, 1, 3670031, 0, 1, 3670032, 0, 131075, 3735556, 0, 65536, 3735566, 0, 1, 3735567, 0, 131075, 3801091, 0, 1, 3801092, 0, 131075, 3801097, 0, 196609, 3801098, 0, 196610, 3801099, 0, 2, 3801100, 0, 196610, 3801101, 0, 196610, 3801102, 0, 131075, 3866627, 0, 65536, 3866635, 0, 65536, 3866645, 5, 0, 3932163, 0, 65536, 3932167, 0, 196609, 3932168, 0, 196611, 3932171, 0, 65536, 3932175, 2, 0, 3932179, 2, 1, 3932181, 5, 0, 3997699, 0, 65536, 3997707, 0, 131072, 3997709, 0, 196609, 3997710, 0, 196610, 3997711, 0, 196610, 3997712, 0, 196610, 3997713, 0, 196610, 3997714, 0, 196610, 3997715, 0, 196610, 3997716, 0, 196610, 3997717, 0, 196611, 4063235, 0, 65536, 4128771, 0, 65536, 4128794, 0, 196609, 4128795, 0, 196610, 4128796, 0, 2, 4128797, 0, 3, 4194307, 0, 65536, 4194317, 5, 0, 4194324, 5, 0, 4194327, 0, 196609, 4194328, 0, 196611, 4194332, 0, 131073, 4194333, 0, 131075, 4259843, 0, 65536, 4259853, 5, 0, 4259860, 5, 0, 4325379, 0, 131072, 4325387, 0, 1, 4325388, 0, 2, 4325389, 0, 3, 4325393, 0, 1, 4325394, 0, 2, 4325395, 0, 2, 4325396, 0, 2, 4325397, 0, 196610, 4325398, 0, 196610, 4325399, 0, 196610, 4325400, 0, 196610, 4325401, 0, 3, 4390923, 0, 131073, 4390924, 0, 131074, 4390925, 0, 131074, 4390926, 0, 196610, 4390927, 0, 196610, 4390928, 0, 196610, 4390929, 0, 131074, 4390930, 0, 131074, 4390931, 0, 131074, 4390932, 0, 131075, 4390937, 0, 131073, 4390938, 0, 196610, 4390939, 0, 196610, 4390940, 0, 196610, 4390941, 0, 196611, 4390942, 3, 0, 4390943, 3, 0, 4456455, 0, 1, 4456456, 0, 3, 4521990, 0, 1, 4521991, 0, 65538, 4521992, 0, 65539, 4521996, 2, 0, 4522000, 2, 0, 4522004, 2, 0, 4522008, 2, 0, 4522015, 0, 0, 4587520, 0, 1, 4587521, 0, 2, 4587522, 0, 2, 4587523, 0, 2, 4587524, 0, 2, 4587525, 0, 2, 4587526, 0, 65538, 4587527, 0, 65538, 4587528, 0, 65538, 4587529, 0, 2, 4587530, 0, 2, 4587531, 0, 2, 4587532, 0, 2, 4587533, 0, 2, 4587534, 0, 2, 4587535, 0, 2, 4587536, 0, 2, 4587537, 0, 2, 4587538, 0, 2, 4587539, 0, 2, 4587540, 0, 2, 4587541, 0, 2, 4587542, 0, 2, 4587543, 0, 2, 4587544, 0, 2, 4587545, 0, 2, 4587546, 0, 2, 4587547, 0, 2, 4587548, 0, 2, 4587549, 0, 2, 4587550, 0, 2, 4587551, 0, 65539, 4653056, 0, 131073, 4653057, 0, 131074, 4653058, 0, 131074, 4653059, 0, 131074, 4653060, 0, 131074, 4653061, 0, 131074, 4653062, 0, 131074, 4653063, 0, 131074, 4653064, 0, 131074, 4653065, 0, 131074, 4653066, 0, 131074, 4653067, 0, 131074, 4653068, 0, 131074, 4653069, 0, 131074, 4653070, 0, 131074, 4653071, 0, 131074, 4653072, 0, 131074, 4653073, 0, 131074, 4653074, 0, 131074, 4653075, 0, 131074, 4653076, 0, 131074, 4653077, 0, 131074, 4653078, 0, 131074, 4653079, 0, 131074, 4653080, 0, 131074, 4653081, 0, 131074, 4653082, 0, 131074, 4653083, 0, 131074, 4653084, 0, 131074, 4653085, 0, 131074, 4653086, 0, 131074, 4653087, 0, 131075 ) + +[node name="Cracks" type="TileMap" parent="Tilemaps"] +tile_set = ExtResource( 10 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 262169, 4, 0, 589832, 4, 0, 917507, 4, 0, 1376259, 4, 0, 1507351, 4, 0, 1507356, 4, 0, 1835016, 4, 0, 2424841, 4, 0, 2424862, 4, 0, 2949137, 4, 0, 3342339, 4, 0, 3538964, 4, 0, 3604491, 4, 0, 4390939, 4, 0, 4587523, 4, 0 ) + +[node name="Ladders" type="TileMap" parent="Tilemaps"] +z_index = 10 +tile_set = ExtResource( 6 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 327689, 0, 131074, 393225, 0, 131074, 655360, 0, 131074, 720896, 0, 131074, 786432, 0, 131074, 851968, 0, 131074, 917504, 0, 131074, 983040, 0, 131074, 1048576, 0, 131074, 1114112, 0, 131074, 1179648, 0, 131074, 1245184, 0, 131074, 1310720, 0, 131074, 1376256, 0, 131074, 1441792, 0, 131074, 1441823, 0, 131074, 1507328, 0, 131074, 1507359, 0, 131074, 1572864, 0, 131074, 1572895, 0, 131074, 1638400, 0, 131074, 1638431, 0, 131074, 1703936, 0, 131074, 1703967, 0, 131074, 1769472, 0, 131074, 1769503, 0, 131074, 2097163, 0, 131074, 2162699, 0, 131074, 2228235, 0, 131074, 2555904, 0, 131074, 2555917, 0, 131074, 2621440, 0, 131074, 2621453, 0, 131074, 2686976, 0, 131074, 2686989, 0, 131074, 2752512, 0, 131074, 2818048, 0, 131074, 2883595, 0, 131074, 2949131, 0, 131074, 3014667, 0, 131074, 3080203, 0, 131074, 3145739, 0, 131074, 3211275, 0, 131074, 3276811, 0, 131074, 3342365, 0, 131074, 3407901, 0, 131074, 3473437, 0, 131074, 3538945, 0, 131074, 3538973, 0, 131074, 3604481, 0, 131074, 3604509, 0, 131074, 3670017, 0, 131074, 3670045, 0, 131074, 3735553, 0, 131074, 3735581, 0, 131074, 3801089, 0, 131074, 3801117, 0, 131074, 3866625, 0, 131074, 3866628, 0, 131074, 3866653, 0, 131074, 3932161, 0, 131074, 3932164, 0, 131074, 3932189, 0, 131074, 3997697, 0, 131074, 3997700, 0, 131074, 3997725, 0, 131074, 4063233, 0, 131074, 4063236, 0, 131074, 4063261, 0, 131074, 4128769, 0, 131074, 4128772, 0, 131074, 4194305, 0, 131074, 4194308, 0, 131074, 4259841, 0, 131074, 4259844, 0, 131074, 4325377, 0, 131074, 4325380, 0, 131074, 4390913, 0, 131074, 4456449, 0, 131074 ) + +[node name="Death" type="TileMap" parent="Tilemaps" groups=["death"]] +tile_set = ExtResource( 15 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 327695, 1, 0, 327696, 1, 0, 327697, 1, 0, 327698, 1, 0, 327699, 1, 0, 327700, 1, 0, 327701, 1, 0, 720912, 1, 0, 720913, 1, 0, 720914, 1, 0, 720915, 1, 0, 720916, 1, 0, 720917, 1, 0, 720918, 1, 0, 720919, 1, 0, 720920, 1, 0, 720921, 1, 0, 720922, 1, 0, 720923, 1, 0, 1114121, 1, 0, 1179666, 1, 0, 1179667, 1, 0, 1179668, 1, 0, 1179669, 1, 0, 1179670, 1, 0, 1179671, 1, 0, 1179672, 1, 0, 1179673, 1, 0, 1179674, 1, 0, 1179675, 1, 0, 1179676, 1, 0, 1179677, 1, 0, 1179678, 1, 0, 1179679, 1, 0, 1769478, 1, 0, 1769485, 1, 0, 4325390, 1, 0, 4325391, 1, 0, 4325392, 1, 0 ) + +[node name="Environment" type="Node2D" parent="."] + +[node name="TurningPlatform" parent="Environment" instance=ExtResource( 20 )] +position = Vector2( 168, 32 ) + +[node name="MovingPlatform2" parent="Environment" instance=ExtResource( 19 )] +position = Vector2( 240, 136 ) +scale = Vector2( 2, 1 ) +speed = 40 +left_up_boundary = 8.0 + +[node name="MovingPlatform3" parent="Environment" instance=ExtResource( 19 )] +position = Vector2( 184, 240 ) +scale = Vector2( 2, 1 ) +speed = 30 +left_up_boundary = 3.0 +right_down_boundary = 3.0 +move_direction = 1 + +[node name="FallingBlocks" type="Node2D" parent="Environment"] + +[node name="FallingBlock" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 0, 360 ) + +[node name="FallingBlock2" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 8, 360 ) + +[node name="FallingBlock3" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 16, 360 ) + +[node name="FallingBlock4" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 24, 360 ) + +[node name="FallingBlock5" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 32, 360 ) + +[node name="FallingBlock6" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 40, 360 ) + +[node name="FallingBlock7" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 168, 328 ) + +[node name="FallingBlock9" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 168, 352 ) + +[node name="FallingBlock8" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 152, 312 ) + +[node name="FallingBlock10" parent="Environment/FallingBlocks" instance=ExtResource( 13 )] +position = Vector2( 184, 304 ) + +[node name="Ladders" type="Node2D" parent="Environment"] + +[node name="Ladder" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 0, 80 ) +scale = Vector2( 1, 18 ) +can_climb_left = false + +[node name="Ladder2" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 232, 408 ) +scale = Vector2( 1, 12 ) + +[node name="Ladder6" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 248, 176 ) +scale = Vector2( 1, 6 ) +can_climb_right = false + +[node name="Ladder3" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 88, 352 ) +scale = Vector2( 1, 7 ) + +[node name="Ladder5" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 0, 312 ) +scale = Vector2( 1, 5 ) +can_climb_left = false + +[node name="Ladder9" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 88, 256 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder10" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 104, 312 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder8" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 72, 40 ) +scale = Vector2( 1, 2 ) + +[node name="Ladder4" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 32, 472 ) +scale = Vector2( 1, 8 ) +can_climb_left = false + +[node name="Ladder7" parent="Environment/Ladders" instance=ExtResource( 9 )] +position = Vector2( 8, 432 ) +scale = Vector2( 1, 15 ) + +[node name="Enemies" type="Node2D" parent="."] + +[node name="Mines" type="Node2D" parent="Enemies"] + +[node name="Mine" parent="Enemies/Mines" instance=ExtResource( 11 )] +position = Vector2( 44, 120 ) + +[node name="Mine2" parent="Enemies/Mines" instance=ExtResource( 11 )] +position = Vector2( 80, 96 ) + +[node name="Mine4" parent="Enemies/Mines" instance=ExtResource( 11 )] +position = Vector2( 184, 128 ) + +[node name="Squigs" type="Node2D" parent="Enemies"] + +[node name="Squig2" parent="Enemies/Squigs" instance=ExtResource( 14 )] +position = Vector2( 132, 352 ) +left_up_boundary = 4.0 +speed = 30 + +[node name="Squig3" parent="Enemies/Squigs" instance=ExtResource( 14 )] +position = Vector2( 88, 288 ) +left_up_boundary = 7.0 +speed = 30 + +[node name="Eels" type="Node2D" parent="Enemies"] +position = Vector2( 24, 0 ) + +[node name="Eel4" parent="Enemies/Eels" instance=ExtResource( 18 )] +position = Vector2( -24, 528 ) +curve = SubResource( 13 ) +speed = 60.0 + +[node name="Eel" parent="Enemies/Eels" instance=ExtResource( 18 )] +position = Vector2( 120, 72 ) +curve = SubResource( 15 ) +speed = 50.0 + +[node name="Eel2" parent="Enemies/Eels" instance=ExtResource( 18 )] +position = Vector2( 48, 1472 ) +curve = SubResource( 14 ) + +[node name="Eel6" parent="Enemies/Eels" instance=ExtResource( 18 )] +position = Vector2( 176, 240 ) +curve = SubResource( 16 ) +speed = 45.0 + +[node name="Eel7" parent="Enemies/Eels" instance=ExtResource( 18 )] +position = Vector2( 136, 184 ) +curve = SubResource( 17 ) + +[node name="Eel8" parent="Enemies/Eels" instance=ExtResource( 18 )] +position = Vector2( 192, 296 ) +curve = SubResource( 24 ) + +[node name="Eel3" parent="Enemies/Eels" instance=ExtResource( 18 )] +position = Vector2( 40, 104 ) +curve = SubResource( 23 ) + +[node name="Fishes" type="Node2D" parent="Enemies"] + +[node name="Fish" parent="Enemies/Fishes" instance=ExtResource( 12 )] +position = Vector2( 72, 64 ) +left_up_boundary = 3.0 +right_down_boundary = 4.0 + +[node name="Fish4" parent="Enemies/Fishes" instance=ExtResource( 12 )] +position = Vector2( 128, 552 ) +left_up_boundary = 5.0 +right_down_boundary = 8.0 +speed = 40 + +[node name="Fish5" parent="Enemies/Fishes" instance=ExtResource( 12 )] +position = Vector2( 120, 520 ) +left_up_boundary = 3.0 +right_down_boundary = 8.0 +speed = 60 + +[node name="Fish6" parent="Enemies/Fishes" instance=ExtResource( 12 )] +position = Vector2( 24, 352 ) +left_up_boundary = 3.0 +right_down_boundary = 7.0 +speed = 60 + +[node name="Turtle" type="Node2D" parent="Enemies"] + +[node name="Turtle" parent="Enemies/Turtle" instance=ExtResource( 16 )] +position = Vector2( 112, 32 ) +left_up_boundary = 7.0 +right_down_boundary = 8.0 +speed = 50 +spike_positions = [ 0.0 ] + +[node name="Turtle2" parent="Enemies/Turtle" instance=ExtResource( 16 )] +position = Vector2( 24, 280 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 +speed = 30 +spike_positions = [ 0.0 ] + +[node name="Turtle3" parent="Enemies/Turtle" instance=ExtResource( 16 )] +position = Vector2( 192, 472 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 +speed = 30 +spike_positions = [ 0.0 ] +spike_direction = 1 + +[node name="Collectibles" type="Node2D" parent="."] + +[node name="Star" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 88, 136 ) +color = 3 + +[node name="Star2" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 208, 56 ) +color = 4 + +[node name="Key" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 32, 32 ) + +[node name="Key2" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 48, 32 ) + +[node name="Key3" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 40, 104 ) + +[node name="Key18" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 24, 160 ) + +[node name="Key15" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 248, 344 ) + +[node name="Key16" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 96, 432 ) + +[node name="Key17" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 248, 288 ) + +[node name="Key5" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 88, 64 ) + +[node name="Key7" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 160, 240 ) + +[node name="Key8" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 232, 216 ) + +[node name="Key12" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 104, 80 ) + +[node name="Key13" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 24, 72 ) + +[node name="Key14" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 112, 168 ) + +[node name="Key9" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 88, 168 ) + +[node name="Key10" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 136, 176 ) + +[node name="Key11" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 56, 168 ) + +[node name="Key6" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 48, 64 ) + +[node name="Key4" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 16, 104 ) + +[node name="Shard" parent="Collectibles" instance=ExtResource( 22 )] +position = Vector2( 160, 120 ) +number = 3 + +[node name="Shard4" parent="Collectibles" instance=ExtResource( 22 )] +position = Vector2( 208, 360 ) +number = 1 + +[node name="Star4" parent="Collectibles" instance=ExtResource( 17 )] +modulate = Color( 0.764706, 0.752941, 1, 1 ) +position = Vector2( 104, 480 ) + +[node name="Shard2" parent="Collectibles" instance=ExtResource( 22 )] +position = Vector2( 0, 256 ) +number = 2 + +[node name="Shard3" parent="Collectibles" instance=ExtResource( 22 )] +position = Vector2( 232, 552 ) + +[node name="Star5" parent="Collectibles" instance=ExtResource( 17 )] +modulate = Color( 0.803922, 0.905882, 1, 1 ) +position = Vector2( 8, 424 ) +color = 1 + +[node name="Key19" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 48, 544 ) + +[node name="Key20" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 64, 536 ) + +[node name="Key21" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 80, 552 ) + +[node name="Key22" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 96, 520 ) + +[node name="Key23" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 144, 520 ) + +[node name="Key24" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 184, 504 ) + +[node name="Key25" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 128, 480 ) + +[node name="Key26" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 56, 472 ) + +[node name="Key27" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 72, 456 ) + +[node name="Key28" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 104, 456 ) + +[node name="Key29" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 200, 288 ) + +[node name="Key36" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 112, 352 ) + +[node name="Key37" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 152, 352 ) + +[node name="Key38" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 184, 336 ) + +[node name="Key39" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 208, 496 ) + +[node name="Key40" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 144, 296 ) + +[node name="Key41" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 120, 296 ) + +[node name="Key44" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 144, 256 ) + +[node name="Key45" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 104, 256 ) + +[node name="Key46" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 224, 288 ) + +[node name="Key47" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 208, 216 ) + +[node name="Key49" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 144, 552 ) + +[node name="Key50" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 208, 552 ) + +[node name="Key48" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 184, 256 ) + +[node name="Key42" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 24, 304 ) + +[node name="Key43" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 56, 304 ) + +[node name="Key30" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 64, 432 ) + +[node name="Key31" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 40, 304 ) + +[node name="Key33" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 136, 424 ) + +[node name="Key34" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 176, 424 ) + +[node name="Key35" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 208, 424 ) + +[node name="Key32" parent="Collectibles" instance=ExtResource( 21 )] +position = Vector2( 32, 400 ) + +[node name="Star6" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 184, 176 ) +color = 2 + +[node name="Arrow" parent="Collectibles" instance=ExtResource( 23 )] +position = Vector2( 240, 312 ) + +[node name="Bubbles" type="Node2D" parent="."] + +[node name="BubbleSpawner" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 200, 24 ) + +[node name="BubbleSpawner2" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 64, 64 ) + +[node name="BubbleSpawner3" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 88, 136 ) +delay = 1.5 + +[node name="BubbleSpawner4" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 24, 104 ) + +[node name="BubbleSpawner5" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 24, 160 ) + +[node name="BubbleSpawner8" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 24, 552 ) + +[node name="BubbleSpawner10" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 88, 432 ) + +[node name="BubbleSpawner13" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 72, 288 ) + +[node name="BubbleSpawner18" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 136, 352 ) + +[node name="BubbleSpawner15" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 240, 288 ) + +[node name="BubbleSpawner16" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 224, 176 ) + +[node name="BubbleSpawner17" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 184, 176 ) + +[node name="BubbleSpawner12" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 24, 400 ) + +[node name="BubbleSpawner11" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 160, 424 ) + +[node name="BubbleSpawner9" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 216, 528 ) + +[node name="BubbleSpawner6" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 136, 40 ) + +[node name="BubbleSpawner7" parent="Bubbles" instance=ExtResource( 24 )] +position = Vector2( 64, 216 ) + +[node name="Respawns" type="Node2D" parent="."] + +[node name="RespawnPoint" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 88, 400 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint"] +position = Vector2( -44.9375, 4 ) +shape = SubResource( 19 ) + +[node name="RespawnPoint2" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 88, 368 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint2"] +position = Vector2( -44.125, 4 ) +shape = SubResource( 19 ) + +[node name="RespawnPoint4" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 96, 368 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint4"] +position = Vector2( 20, 4 ) +shape = SubResource( 25 ) + +[node name="RespawnPoint3" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 96, 400 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint3"] +position = Vector2( 79.5, 4 ) +shape = SubResource( 20 ) + +[node name="RespawnPoint5" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 248, 200 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint5"] +position = Vector2( -34, 4 ) +shape = SubResource( 21 ) + +[node name="RespawnPoint6" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 248, 176 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint6"] +position = Vector2( -32, 4 ) +shape = SubResource( 21 ) + +[node name="RespawnPoint7" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 8, 208 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint7"] +position = Vector2( 36, 4 ) +shape = SubResource( 21 ) + +[node name="RespawnPoint8" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 8, 168 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint8"] +position = Vector2( 36, 4 ) +shape = SubResource( 21 ) + +[node name="Exit" parent="." instance=ExtResource( 26 )] +position = Vector2( 16, 28 ) +cost = 25 diff --git a/maps/boss/boss1_arena.gd b/maps/boss/boss1_arena.gd index bf42a86..091ca90 100644 --- a/maps/boss/boss1_arena.gd +++ b/maps/boss/boss1_arena.gd @@ -1,5 +1,9 @@ extends "res://maps/map.gd" +const Text3D = preload("res://objects/hud/3d_text.tscn") + +var speccy_can_yap: bool = true + func _ready(): Game.current_sector = Vector2.ZERO @@ -11,12 +15,37 @@ func _on_Boss1_entered_phase(phase): match phase: 2: $DelayedArrow2.start() + speccy_can_yap = false 3: $DelayedArrow3.start() 4: $ExitTimer.start() + if not Debug.prey_slaughtered: + var text_3d = Text3D.instance() + text_3d.anim = "victory" + self.add_child(text_3d) + else: + var text_3d = Text3D.instance() + text_3d.anim = "prey slaughtered" + self.add_child(text_3d) + Game.instance_node(load("res://objects/environment/blood_rain/blood_rain.tscn"),0,0,self) func _on_ExitTimer_timeout(): - Game.save() - Game.change_map(load("res://maps/level_select.tscn")) + Game.can_pause = false + Game.save_boss() + if Game.marathon_mode: + Game.current_level += 1 + if Game.current_level > LevelData.marathon_end: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(load("res://menus/main_menu.tscn").instance()) + else: + Game.change_map(LevelData.levels[Game.current_level].scene) + else: + Game.change_map(load("res://menus/level_select_scholar.tscn")) + + +func _on_SpeccyTimer_timeout() -> void: + if speccy_can_yap: + $Speccy.appear() diff --git a/maps/boss/boss1_arena.tscn b/maps/boss/boss1_arena.tscn index 491c466..d346699 100644 --- a/maps/boss/boss1_arena.tscn +++ b/maps/boss/boss1_arena.tscn @@ -1,11 +1,11 @@ -[gd_scene load_steps=15 format=2] +[gd_scene load_steps=19 format=2] [ext_resource path="res://objects/enemy/boss/scrump.tscn" type="PackedScene" id=1] -[ext_resource path="res://objects/player/player_scholar.tscn" type="PackedScene" id=2] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=2] [ext_resource path="res://graphics/backgrounds/mountain_clouds.png" type="Texture" id=3] [ext_resource path="res://graphics/backgrounds/mountain_sunset.png" type="Texture" id=4] [ext_resource path="res://tilesets/t_mountain.tres" type="TileSet" id=5] -[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=6] +[ext_resource path="res://objects/hud/hud_boss.tscn" type="PackedScene" id=6] [ext_resource path="res://maps/boss/boss1_arena.gd" type="Script" id=7] [ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=8] [ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=9] @@ -14,14 +14,19 @@ [ext_resource path="res://objects/delayed_instance.tscn" type="PackedScene" id=12] [ext_resource path="res://objects/environment/death tile/death_tile.tscn" type="PackedScene" id=13] [ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=14] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=15] +[ext_resource path="res://objects/lore/boss/the_scrump.tscn" type="PackedScene" id=16] +[ext_resource path="res://graphics/turniwood/turning_platform_wood_dark.png" type="Texture" id=17] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=18] [node name="Map" type="Node2D" groups=["map"]] pause_mode = 1 script = ExtResource( 7 ) music = ExtResource( 11 ) +lore_entries = [ ExtResource( 16 ) ] -[node name="HUD" parent="." instance=ExtResource( 6 )] -song_name = "@Klystron" +[node name="BossHUD" parent="." instance=ExtResource( 6 )] +song_name = "♫Klystron" [node name="Sprite" type="Sprite" parent="."] position = Vector2( 128, 96 ) @@ -39,14 +44,17 @@ __meta__ = { "_edit_lock_": true } -[node name="TileMap" type="TileMap" parent="."] +[node name="TileMap" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 2 +material = ExtResource( 15 ) tile_set = ExtResource( 5 ) cell_size = Vector2( 8, 8 ) format = 1 -tile_data = PoolIntArray( -65537, 0, 0, -131072, 0, 0, -131071, 0, 0, -131070, 0, 0, -131069, 0, 0, -131068, 0, 0, -131067, 0, 0, -131066, 0, 0, -131065, 0, 0, -131064, 0, 0, -131063, 0, 0, -131062, 0, 0, -131061, 0, 0, -131060, 0, 0, -131059, 0, 0, -131058, 0, 0, -131057, 0, 0, -131056, 0, 0, -131055, 0, 0, -131054, 0, 0, -131053, 0, 0, -131052, 0, 0, -131051, 0, 0, -131050, 0, 0, -131049, 0, 0, -131048, 0, 0, -131047, 0, 0, -131046, 0, 0, -131045, 0, 0, -131044, 0, 0, -131043, 0, 0, -131042, 0, 0, -131041, 0, 0, -131040, 0, 0, -1, 0, 0, -65504, 0, 0, 65535, 0, 0, 32, 0, 0, 131071, 0, 0, 65568, 0, 0, 196607, 0, 0, 131104, 0, 0, 262143, 0, 0, 196640, 0, 0, 327679, 0, 0, 262176, 0, 0, 393215, 0, 0, 327712, 0, 0, 458751, 0, 0, 393248, 0, 0, 524287, 0, 0, 458784, 0, 0, 589823, 0, 0, 524320, 0, 0, 655359, 0, 0, 589856, 0, 0, 720895, 0, 0, 655370, 0, 65536, 655371, 0, 65537, 655372, 0, 65538, 655392, 0, 0, 786431, 0, 0, 720928, 0, 0, 851967, 0, 0, 786436, 0, 65536, 786437, 0, 65537, 786438, 0, 65538, 786464, 0, 0, 917503, 0, 0, 852000, 0, 0, 983039, 0, 0, 917536, 0, 0, 1048575, 0, 0, 983072, 0, 0, 1114111, 0, 0, 1048608, 0, 0, 1179647, 0, 0, 1114122, 0, 65536, 1114123, 0, 65537, 1114124, 0, 65537, 1114125, 0, 65537, 1114126, 0, 65538, 1114144, 0, 0, 1245183, 0, 0, 1179680, 0, 0, 1310719, 0, 0, 1245216, 0, 0, 1376255, 0, 0, 1310723, 0, 65536, 1310724, 0, 65537, 1310725, 0, 65537, 1310726, 0, 65537, 1310727, 0, 65537, 1310728, 0, 65537, 1310729, 0, 65537, 1310730, 0, 65537, 1310731, 0, 65537, 1310732, 0, 65537, 1310733, 0, 65537, 1310734, 0, 65537, 1310735, 0, 65537, 1310736, 0, 65537, 1310737, 0, 65537, 1310738, 0, 65537, 1310739, 0, 65537, 1310740, 0, 65538, 1310752, 0, 0, 1441791, 0, 0, 1376288, 0, 0, 1507327, 0, 0, 1441824, 0, 0, 1572863, 0, 0, 1507360, 0, 0, 1638399, 0, 0, 1572896, 0, 0 ) +tile_data = PoolIntArray( -65537, 0, 0, -131072, 0, 0, -131071, 0, 0, -131070, 0, 0, -131069, 0, 0, -131068, 0, 0, -131067, 0, 0, -131066, 0, 0, -131065, 0, 0, -131064, 0, 0, -131063, 0, 0, -131062, 0, 0, -131061, 0, 0, -131060, 0, 0, -131059, 0, 0, -131058, 0, 0, -131057, 0, 0, -131056, 0, 0, -131055, 0, 0, -131054, 0, 0, -131053, 0, 0, -131052, 0, 0, -131051, 0, 0, -131050, 0, 0, -131049, 0, 0, -131048, 0, 0, -131047, 0, 0, -131046, 0, 0, -131045, 0, 0, -131044, 0, 0, -131043, 0, 0, -131042, 0, 0, -131041, 0, 0, -131040, 0, 0, -1, 0, 0, -65504, 0, 0, 65535, 0, 0, 32, 0, 0, 131071, 0, 0, 65568, 0, 0, 196607, 0, 0, 131104, 0, 0, 262143, 0, 0, 196640, 0, 0, 327679, 0, 0, 262176, 0, 0, 393215, 0, 0, 327712, 0, 0, 458751, 0, 0, 393248, 0, 0, 524287, 0, 0, 458784, 0, 0, 589823, 0, 0, 524320, 0, 0, 655359, 0, 0, 589856, 0, 0, 720895, 0, 0, 655370, 0, 65536, 655371, 0, 65537, 655372, 0, 65538, 655392, 0, 0, 786431, 0, 0, 720928, 0, 0, 851967, 0, 0, 786436, 0, 65536, 786437, 0, 65537, 786438, 0, 65538, 786464, 0, 0, 917503, 0, 0, 852000, 0, 0, 983039, 0, 0, 917536, 0, 0, 1048575, 0, 0, 983072, 0, 0, 1114111, 0, 0, 1048608, 0, 0, 1179647, 0, 0, 1114122, 0, 65536, 1114123, 0, 65537, 1114124, 0, 65537, 1114125, 0, 65537, 1114126, 0, 65538, 1114144, 0, 0, 1245183, 0, 0, 1179680, 0, 0, 1310719, 0, 0, 1245216, 0, 0, 1376255, 0, 0, 1310720, 0, 65537, 1310721, 0, 65537, 1310722, 0, 65537, 1310723, 0, 65537, 1310724, 0, 65537, 1310725, 0, 65537, 1310726, 0, 65537, 1310727, 0, 65537, 1310728, 0, 65537, 1310729, 0, 65537, 1310730, 0, 65537, 1310731, 0, 65537, 1310732, 0, 65537, 1310733, 0, 65537, 1310734, 0, 65537, 1310735, 0, 65537, 1310736, 0, 65537, 1310737, 0, 65537, 1310738, 0, 65537, 1310739, 0, 65537, 1310740, 0, 0, 1310752, 0, 0, 1441791, 0, 0, 1376276, 0, 0, 1376288, 0, 0, 1507327, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1441824, 0, 0, 1572863, 0, 0, 1507360, 0, 0, 1638399, 0, 0, 1572896, 0, 0 ) [node name="Player" parent="." instance=ExtResource( 2 )] position = Vector2( 48, 160 ) +use_iframes = true [node name="Ladder" type="TileMap" parent="."] tile_set = ExtResource( 14 ) @@ -61,9 +69,11 @@ right_down_boundary = 2.0 [node name="TurningPlatform" parent="." instance=ExtResource( 9 )] position = Vector2( 72, 144 ) +texture = ExtResource( 17 ) [node name="TurningPlatform2" parent="." instance=ExtResource( 9 )] position = Vector2( 120, 144 ) +texture = ExtResource( 17 ) [node name="Ladder2" parent="." instance=ExtResource( 10 )] position = Vector2( 64, 96 ) @@ -96,6 +106,17 @@ scale = Vector2( 32, 1 ) wait_time = 5.0 one_shot = true +[node name="Speccy" parent="." instance=ExtResource( 18 )] +position = Vector2( 96, 80 ) +message = "shoot_the_eye" + +[node name="SpeccyTimer" type="Timer" parent="."] +process_mode = 0 +wait_time = 30.0 +one_shot = true +autostart = true + [connection signal="died" from="Boss1" to="." method="_on_Boss1_died"] [connection signal="entered_phase" from="Boss1" to="." method="_on_Boss1_entered_phase"] [connection signal="timeout" from="ExitTimer" to="." method="_on_ExitTimer_timeout"] +[connection signal="timeout" from="SpeccyTimer" to="." method="_on_SpeccyTimer_timeout"] diff --git a/maps/boss/boss2_arena.gd b/maps/boss/boss2_arena.gd new file mode 100644 index 0000000..959ee44 --- /dev/null +++ b/maps/boss/boss2_arena.gd @@ -0,0 +1,44 @@ +extends "res://maps/map.gd" + +const Text3D = preload("res://objects/hud/3d_text.tscn") + +var speccy_will_yell: bool = true + +func _ready(): + Game.current_sector = Vector2.ZERO + +func _on_2600_entered_phase(phase): + match phase: + 2: + Audio.play_sound(Audio.a_glass_crack,Audio.ac_mech_hurt) + $DelayedArrow2.start() + speccy_will_yell = false + 3: + Audio.play_sound(Audio.a_glass_break,Audio.ac_mech_hurt) + $DelayedArrow3.start() + 4: + $ExitTimer.start() + var text_3d = Text3D.instance() + text_3d.anim = "victory" + yield(get_tree(), "idle_frame") + self.add_child(text_3d) + + +func _on_ExitTimer_timeout(): + Game.can_pause = false + Game.save_boss() + if Game.marathon_mode: + Game.current_level += 1 + if Game.current_level > LevelData.marathon_end: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(load("res://menus/marathon_results.tscn").instance()) + else: + Game.change_map(LevelData.levels[Game.current_level].scene) + else: + Game.change_map(load("res://menus/level_select_scholar.tscn")) + + +func _on_SpeccyTimer_timeout() -> void: + if speccy_will_yell: + $Speccy.appear() diff --git a/maps/boss/boss2_arena.tscn b/maps/boss/boss2_arena.tscn new file mode 100644 index 0000000..f127836 --- /dev/null +++ b/maps/boss/boss2_arena.tscn @@ -0,0 +1,160 @@ +[gd_scene load_steps=20 format=2] + +[ext_resource path="res://tilesets/t_factory.tres" type="TileSet" id=1] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=2] +[ext_resource path="res://objects/environment/falling_block/falling_block_lab.tscn" type="PackedScene" id=3] +[ext_resource path="res://graphics/backgrounds/steel.png" type="Texture" id=4] +[ext_resource path="res://maps/boss/boss2_arena.gd" type="Script" id=5] +[ext_resource path="res://objects/hud/hud_boss.tscn" type="PackedScene" id=6] +[ext_resource path="res://audio/music/klystron_vip.ogg" type="AudioStream" id=7] +[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=8] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=9] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=10] +[ext_resource path="res://objects/lore/boss/dr_intelli.tscn" type="PackedScene" id=11] +[ext_resource path="res://objects/delayed_instance.tscn" type="PackedScene" id=12] +[ext_resource path="res://objects/environment/death tile/death_tile.tscn" type="PackedScene" id=13] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=14] +[ext_resource path="res://objects/enemy/boss/2600.tscn" type="PackedScene" id=15] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=16] +[ext_resource path="res://objects/lore/boss/2600.tscn" type="PackedScene" id=17] +[ext_resource path="res://objects/lore/boss/steel_factory.tscn" type="PackedScene" id=18] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=19] + +[node name="Map" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 5 ) +music = ExtResource( 7 ) +lore_entries = [ ExtResource( 17 ), ExtResource( 11 ), ExtResource( 18 ) ] + +[node name="BossHUD" parent="." instance=ExtResource( 6 )] +song_name = "♫Klystron VIP" + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 128, 96 ) +z_index = -2 +texture = ExtResource( 4 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="2600" parent="." instance=ExtResource( 15 )] +position = Vector2( 152, 8 ) + +[node name="Ground" type="Node2D" parent="."] + +[node name="TileMap" type="TileMap" parent="Ground" groups=["can_stain"]] +light_mask = 2 +material = ExtResource( 9 ) +tile_set = ExtResource( 1 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 65535, 0, 0, 131071, 0, 0, 196607, 0, 0, 262143, 0, 0, 327679, 0, 0, 393215, 0, 0, 458751, 0, 0, 393228, 0, 0, 393229, 0, 0, 393230, 0, 0, 393231, 0, 0, 524287, 0, 0, 458763, 0, 131074, 458764, 0, 131074, 458765, 0, 131074, 458766, 0, 131074, 589823, 0, 0, 524298, 0, 131074, 524299, 0, 131074, 524300, 0, 131074, 524301, 0, 131074, 524302, 0, 131074, 655359, 0, 0, 589829, 0, 0, 589830, 0, 0, 589833, 0, 0, 589839, 0, 131074, 589840, 0, 131074, 720895, 0, 0, 655376, 0, 131074, 786431, 0, 0, 720909, 0, 131074, 720910, 0, 131074, 720911, 0, 131074, 720912, 0, 131074, 851967, 0, 0, 786447, 0, 131074, 917503, 0, 0, 851971, 0, 0, 851972, 0, 0, 851973, 0, 0, 851974, 0, 0, 851977, 0, 0, 851978, 0, 0, 851979, 0, 0, 983039, 0, 0, 1048575, 0, 0, 983040, 0, 0, 1114111, 0, 0, 1048576, 0, 0, 1048577, 0, 0, 1048583, 0, 131074, 1179647, 0, 0, 1114112, 0, 0, 1114113, 0, 0, 1114114, 0, 0, 1114119, 0, 131074, 1245183, 0, 0, 1179650, 0, 0, 1179651, 0, 0, 1179652, 0, 0, 1179653, 0, 0, 1179654, 0, 0, 1179655, 0, 0, 1179656, 0, 0, 1179657, 0, 0, 1310719, 0, 0, 1376255, 0, 0, 1310734, 0, 0, 1310735, 0, 0, 1441791, 0, 0, 1507327, 0, 0, 1441792, 0, 1, 1441793, 0, 2, 1441794, 0, 2, 1441795, 0, 2, 1441796, 0, 2, 1441797, 0, 2, 1441798, 0, 2, 1441799, 0, 2, 1441800, 0, 2, 1441801, 0, 2, 1441802, 0, 2, 1441803, 0, 2, 1441804, 0, 2, 1441805, 0, 2, 1441806, 0, 2, 1441807, 0, 2, 1441808, 0, 2, 1441809, 0, 2, 1441810, 0, 2, 1441811, 0, 2, 1441812, 0, 2, 1441813, 0, 2, 1441814, 0, 2, 1441815, 0, 2, 1441816, 0, 2, 1441817, 0, 2, 1441818, 0, 2, 1441819, 0, 2, 1441820, 0, 2, 1441821, 0, 2, 1441822, 0, 2, 1441823, 0, 3, 1572863, 0, 0, 1507328, 0, 65536, 1507329, 0, 0, 1507330, 0, 65536, 1507331, 0, 0, 1507332, 0, 65536, 1507333, 0, 0, 1507334, 0, 65536, 1507335, 0, 0, 1507336, 0, 65536, 1507337, 0, 0, 1507338, 0, 65536, 1507339, 0, 0, 1507340, 0, 65536, 1507341, 0, 0, 1507342, 0, 65536, 1507343, 0, 0, 1507344, 0, 65536, 1507345, 0, 0, 1507346, 0, 65536, 1507347, 0, 0, 1507348, 0, 65536, 1507349, 0, 0, 1507350, 0, 65536, 1507351, 0, 0, 1507352, 0, 65536, 1507353, 0, 0, 1507354, 0, 65536, 1507355, 0, 0, 1507356, 0, 65536, 1507357, 0, 0, 1507358, 0, 65536, 1507359, 0, 0 ) + +[node name="Collapse" type="TileMap" parent="Ground" groups=["can_stain", "delete_on_collapse"]] +light_mask = 2 +material = ExtResource( 9 ) +tile_set = ExtResource( 1 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 589826, 0, 0, 589827, 0, 0, 589828, 0, 0, 589831, 0, 0, 589832, 0, 0, 851975, 0, 0, 851976, 0, 0 ) + +[node name="Ladder" type="TileMap" parent="Ground"] +tile_set = ExtResource( 14 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 655372, 0, 196609, 720908, 0, 196609, 786444, 0, 196609, 851980, 0, 196609 ) + +[node name="Death" type="TileMap" parent="Ground" groups=["death"]] +light_mask = 0 +tile_set = ExtResource( 16 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 1048578, 1, 0, 1114118, 1, 0, 1179658, -1610612735, 0 ) + +[node name="FallingBlock2" parent="Ground" instance=ExtResource( 3 )] +position = Vector2( 96, 152 ) + +[node name="FallingBlock8" parent="Ground" instance=ExtResource( 3 )] +position = Vector2( 64, 40 ) + +[node name="FallingBlock6" parent="Ground" instance=ExtResource( 3 )] +position = Vector2( 32, 40 ) + +[node name="FallingBlock4" parent="Ground" instance=ExtResource( 3 )] +position = Vector2( 8, 56 ) + +[node name="Player" parent="." instance=ExtResource( 2 )] +position = Vector2( 24, 176 ) +use_iframes = true + +[node name="Ladder2" parent="." instance=ExtResource( 10 )] +position = Vector2( 96, 80 ) +scale = Vector2( 1, 4 ) + +[node name="DelayedArrow" parent="." instance=ExtResource( 12 )] +delay = 0.1 +autostart = true + +[node name="Arrow" parent="DelayedArrow" instance=ExtResource( 8 )] +position = Vector2( 64, 168 ) + +[node name="DelayedArrow2" parent="." instance=ExtResource( 12 )] +delay = 0.1 + +[node name="Arrow2" parent="DelayedArrow2" instance=ExtResource( 8 )] +position = Vector2( 72, 168 ) + +[node name="DelayedArrow3" parent="." instance=ExtResource( 12 )] +delay = 0.1 + +[node name="Arrow3" parent="DelayedArrow3" instance=ExtResource( 8 )] +position = Vector2( 80, 168 ) + +[node name="DeathTile" parent="." instance=ExtResource( 13 )] +position = Vector2( 0, 192 ) +scale = Vector2( 32, 1 ) + +[node name="ExitTimer" type="Timer" parent="."] +wait_time = 5.0 +one_shot = true + +[node name="Enemies" type="Node2D" parent="."] + +[node name="ColorRect" type="ColorRect" parent="."] +visible = false +margin_left = 155.0 +margin_top = 75.0 +margin_right = 163.0 +margin_bottom = 228.0 +rect_rotation = 45.0 + +[node name="ColorRect3" type="ColorRect" parent="."] +visible = false +margin_left = 152.0 +margin_top = 67.0 +margin_right = 160.0 +margin_bottom = 220.0 +rect_rotation = 70.0 + +[node name="ColorRect2" type="ColorRect" parent="."] +visible = false +margin_left = 8.0 +margin_top = 59.0 +margin_right = 152.0 +margin_bottom = 67.0 + +[node name="Speccy" parent="." instance=ExtResource( 19 )] +position = Vector2( 152, 176 ) +flip = true +message = "break_the_glass" + +[node name="SpeccyTimer" type="Timer" parent="."] +process_mode = 0 +wait_time = 45.0 +one_shot = true +autostart = true + +[connection signal="entered_phase" from="2600" to="." method="_on_2600_entered_phase"] +[connection signal="timeout" from="ExitTimer" to="." method="_on_ExitTimer_timeout"] +[connection signal="timeout" from="SpeccyTimer" to="." method="_on_SpeccyTimer_timeout"] diff --git a/maps/boss/boss3_arena.gd b/maps/boss/boss3_arena.gd new file mode 100644 index 0000000..2c36a93 --- /dev/null +++ b/maps/boss/boss3_arena.gd @@ -0,0 +1,100 @@ +extends "res://maps/map.gd" + + +onready var sg_health: TextureProgress = $"%SGHealthBar" +onready var sg_energy: TextureProgress = $"%SGEnergyBar" +onready var fami_health: TextureProgress = $"%FamiHealthBar" +onready var laser_ok: TextureRect = $"%LaserOk" +onready var sg2083: KinematicBody2D = $"2083" +onready var famira: Node2D = $Famira + + +func _ready() -> void: + sg_energy.max_value = sg2083.max_energy + sg2083.state = sg2083.State.INACTIVE + famira.animation_player.play("grow", -1.0, 0.0) + Audio.play_sound(Audio.a_ominous,Audio.ac_collectible) + Audio.play_music(load("res://audio/music/the_dirt_under_the_meadow.ogg")) + + +func _on_2083_health_changed(amount) -> void: + sg_health.value = amount - 4 + + +func _on_Famira_health_changed(amount) -> void: + fami_health.value = ceil(amount) - 3 + + +func _on_cutscene_finished() -> void: + sg2083.visible = true + famira.visible = true + famira.animation_player.play("grow") + $AnimationPlayer.play("drop-stg") + Audio.play_music(load("res://audio/music/rumble_revolution.ogg")) + yield(get_tree().create_timer(0.5), "timeout") + $FamiCutscene/FamiHuman.visible = false + + +func fade() -> void: + Fade.fade_out(0.4) + Game.can_pause = true + yield(Fade, "fade_finished") + sg2083.anims.play("force idle") + Fade.fade_in(0.4) + $"%GUI".visible = true + yield(Fade, "fade_finished") + sg2083.state = sg2083.State.STAND + $FamiCutscene.queue_free() + Game.can_pause = true + Game.can_restart = true + famira.state_chart.send_event("transformed") + + +func start_fight() -> void: + famira.animation_player.state_chart.send_event("transformed") + + +func _on_2083_energy_changed(amount,laser_energy) -> void: + sg_energy.value = amount - 3 + #Display heads up of laser status + if amount >= laser_energy: + if !Audio.ac_collectible.is_playing() && $"%LaserOk".visible == false: Audio.play_sound(Audio.a_laser_ready,Audio.ac_collectible) + $"%LaserOk".visible = true + else: + $"%LaserOk".visible = false + + +func _on_Famira_died() -> void: + sg2083.state = sg2083.State.INACTIVE + SpeedrunTimer.timer_running = false + Game.can_pause = false + var tween = create_tween() + tween.set_trans(Tween.TRANS_CUBIC) + tween.tween_property($"%Camera", "global_position:x", famira.global_position.x - 128, 0.5) + tween.tween_interval(10.0) + tween.tween_callback(self, "_on_death_cooldown") + + +func _on_death_cooldown() -> void: + Game.can_pause = false + if Game.marathon_mode: + Game.current_level += 1 + if Game.current_level > LevelData.marathon_end: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(load("res://menus/marathon_results.tscn").instance()) + else: + Game.change_map(LevelData.levels[Game.current_level].scene) + else: + Game.change_map(load("res://cutscenes/ending_future.tscn")) + +func _notification(what: int) -> void: + match what: + NOTIFICATION_WM_FOCUS_OUT: + if !Game.can_pause: + Audio.pause_all(true) + get_tree().paused = true + NOTIFICATION_WM_FOCUS_IN: + if !Game.can_pause: + Audio.pause_all(false) + get_tree().paused = false diff --git a/maps/boss/boss3_arena.tscn b/maps/boss/boss3_arena.tscn new file mode 100644 index 0000000..26217b9 --- /dev/null +++ b/maps/boss/boss3_arena.tscn @@ -0,0 +1,372 @@ +[gd_scene load_steps=33 format=2] + +[ext_resource path="res://objects/enemy/boss/sg2083.tscn" type="PackedScene" id=1] +[ext_resource path="res://tilesets/t_laboratory.tres" type="TileSet" id=2] +[ext_resource path="res://maps/boss/boss3_arena.gd" type="Script" id=3] +[ext_resource path="res://objects/enemy/boss/famira.tscn" type="PackedScene" id=4] +[ext_resource path="res://ui/theme.tres" type="Theme" id=5] +[ext_resource path="res://tilesets/t_station.tres" type="TileSet" id=6] +[ext_resource path="res://cutscenes/fami_cutscene.tscn" type="PackedScene" id=7] +[ext_resource path="res://objects/lore/boss/fami.tscn" type="PackedScene" id=8] +[ext_resource path="res://graphics/backgrounds/fami_rooftop.png" type="Texture" id=9] +[ext_resource path="res://graphics/hud/laser_ok.png" type="Texture" id=10] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=11] +[ext_resource path="res://graphics/hud/2083_energy_back.png" type="Texture" id=12] +[ext_resource path="res://graphics/hud/famira_health_filled.png" type="Texture" id=13] +[ext_resource path="res://graphics/hud/famira_health_back.png" type="Texture" id=14] +[ext_resource path="res://graphics/hud/2083_energy_filled.png" type="Texture" id=15] +[ext_resource path="res://graphics/hud/2083_health_filled.png" type="Texture" id=16] +[ext_resource path="res://graphics/hud/2083_health_back.png" type="Texture" id=17] +[ext_resource path="res://shaders/color_noise.gdshader" type="Shader" id=18] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=19] +[ext_resource path="res://shaders/beam_cycle.gdshader" type="Shader" id=20] +[ext_resource path="res://graphics/enemy/boss/stg_2600/beam_gradient.png" type="Texture" id=21] +[ext_resource path="res://graphics/hud/laser_ok_text.png" type="Texture" id=22] +[ext_resource path="res://graphics/npc/speccy.png" type="Texture" id=23] +[ext_resource path="res://objects/lore/boss/sg_2083.tscn" type="PackedScene" id=24] +[ext_resource path="res://objects/lore/hills/sg.tscn" type="PackedScene" id=25] +[ext_resource path="res://objects/lore/lab/scope.tscn" type="PackedScene" id=26] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=27] + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 19 ) +shader_param/color_1 = Color( 1, 0.282353, 0, 0 ) +shader_param/color_2 = Color( 0.478431, 0.113725, 0, 0.619608 ) +shader_param/checker_size = Vector2( 4, 6 ) +shader_param/pan_speed = Vector2( 4, 6 ) +shader_param/cycle_speed = Vector2( 8, 0 ) +shader_param/cycle_alternation = Vector2( 1, 8 ) +shader_param/uv_transform = Transform2D( 1, 2, 1, 3, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 18 ) +shader_param/animate_noise = true +shader_param/noise_intensity = 1.0 +shader_param/fps = 60.0 + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 20 ) +shader_param/cycle_speed = 3.0 +shader_param/gradient = ExtResource( 21 ) + +[sub_resource type="Animation" id=1] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("2083:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 12 ) ] +} +tracks/1/type = "bezier" +tracks/1/path = NodePath("2083:position:x") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"points": PoolRealArray( 0, -0.25, 0, 0.25, 0 ), +"times": PoolRealArray( 0 ) +} +tracks/2/type = "bezier" +tracks/2/path = NodePath("2083:position:y") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"points": PoolRealArray( 12, -0.25, 0, 0.25, 0 ), +"times": PoolRealArray( 0 ) +} +tracks/3/type = "value" +tracks/3/path = NodePath("2083:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("CanvasLayer/Sprite:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("FamiCutscene:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} + +[sub_resource type="Animation" id=2] +resource_name = "drop-stg" +length = 4.4 +tracks/0/type = "bezier" +tracks/0/path = NodePath("2083:position:y") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"points": PoolRealArray( -300, -0.25, 0, 0.2, 0, 12, -0.1, -149.978, 0.25, 0 ), +"times": PoolRealArray( 3, 3.5 ) +} +tracks/1/type = "value" +tracks/1/path = NodePath("2083:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 3 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("FamiCutscene") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 3.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "kill_cop" +} ] +} +tracks/3/type = "method" +tracks/3/path = NodePath("2083") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 3.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ true ], +"method": "land" +} ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("FamiCutscene:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 3, 4.4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ true, false ] +} +tracks/5/type = "method" +tracks/5/path = NodePath(".") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 4 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "fade" +} ] +} + +[node name="Map" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 3 ) +lore_entries = [ ExtResource( 8 ), ExtResource( 25 ), ExtResource( 24 ), ExtResource( 26 ) ] + +[node name="CanvasLayer" type="CanvasLayer" parent="."] +layer = -11 + +[node name="Sprite" type="Sprite" parent="CanvasLayer"] +position = Vector2( 128, 0 ) +texture = ExtResource( 9 ) +centered = false +offset = Vector2( -128, 0 ) + +[node name="ColorRect2" type="ColorRect" parent="CanvasLayer"] +material = SubResource( 4 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="ColorRect" type="ColorRect" parent="CanvasLayer"] +material = SubResource( 3 ) +margin_right = 256.0 +margin_bottom = 192.0 +color = Color( 1, 0, 0, 0.333333 ) + +[node name="GUI" type="CanvasLayer" parent="."] +unique_name_in_owner = true +visible = false + +[node name="Control" type="Control" parent="GUI"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 5 ) + +[node name="Energy" type="Control" parent="GUI/Control"] +margin_left = 8.0 +margin_top = 167.0 +margin_right = 161.0 +margin_bottom = 178.0 + +[node name="SGEnergyBar" type="TextureProgress" parent="GUI/Control/Energy"] +unique_name_in_owner = true +margin_right = 153.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +value = 100.0 +texture_under = ExtResource( 12 ) +texture_progress = ExtResource( 15 ) + +[node name="Label" type="Label" parent="GUI/Control/Energy"] +material = ExtResource( 11 ) +margin_left = -7.0 +margin_top = 11.0 +margin_right = 146.0 +margin_bottom = 21.0 +text = " Energy" + +[node name="LaserBack" type="TextureRect" parent="GUI/Control/Energy"] +margin_left = 60.0 +margin_top = 11.0 +margin_right = 100.0 +margin_bottom = 22.0 +texture = ExtResource( 10 ) + +[node name="LaserOk" type="TextureRect" parent="GUI/Control/Energy"] +unique_name_in_owner = true +visible = false +material = SubResource( 5 ) +margin_left = 60.0 +margin_top = 11.0 +margin_right = 100.0 +margin_bottom = 22.0 +texture = ExtResource( 22 ) + +[node name="FamiHealth" type="Control" parent="GUI/Control/Energy"] +margin_left = 140.0 +margin_top = -163.0 +margin_right = 286.0 +margin_bottom = -152.0 + +[node name="FamiHealthBar" type="TextureProgress" parent="GUI/Control/Energy/FamiHealth"] +unique_name_in_owner = true +margin_right = 146.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +value = 100.0 +texture_under = ExtResource( 14 ) +texture_progress = ExtResource( 13 ) + +[node name="Label" type="Label" parent="GUI/Control/Energy/FamiHealth"] +material = ExtResource( 11 ) +margin_left = 16.0 +margin_top = 11.0 +margin_right = 162.0 +margin_bottom = 21.0 +text = "Super Famira" + +[node name="SGHealth" type="Control" parent="GUI/Control"] +margin_left = 8.0 +margin_top = 4.0 +margin_right = 407.0 +margin_bottom = 192.0 + +[node name="SGHealthBar" type="TextureProgress" parent="GUI/Control/SGHealth"] +unique_name_in_owner = true +margin_right = 399.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +value = 100.0 +texture_under = ExtResource( 17 ) +texture_progress = ExtResource( 16 ) + +[node name="Label" type="Label" parent="GUI/Control/SGHealth"] +material = ExtResource( 11 ) +margin_top = 11.0 +margin_right = 399.0 +margin_bottom = 21.0 +text = "SG-2083" + +[node name="TileMap2" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 27 ) +tile_set = ExtResource( 6 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 1506202, 0, 131073, 1506203, 0, 131073, 1506204, 0, 131073, 1506205, 0, 131073, 1506206, 0, 131073, 1506207, 0, 131073, 1506208, 0, 131073, 1506209, 0, 131073, 1506210, 0, 131073, 1506211, 0, 131073, 1506212, 0, 131073, 1506213, 0, 131073, 1506214, 0, 131073, 1506215, 0, 131073, 1506216, 0, 131073, 1506217, 0, 131073, 1506218, 0, 131073, 1506219, 0, 131073, 1506220, 0, 131073, 1506221, 0, 131073, 1506222, 0, 131073, 1506223, 0, 131073, 1506224, 0, 131073, 1506225, 0, 131073, 1506226, 0, 131073, 1506227, 0, 131073, 1506228, 0, 131073, 1506229, 0, 131073, 1506230, 0, 131073, 1506231, 0, 131073, 1506232, 0, 131073, 1506233, 0, 131073, 1506234, 0, 131073, 1506235, 0, 131073, 1506236, 0, 131073, 1506237, 0, 131073, 1506238, 0, 131073, 1506239, 0, 131073, 1506240, 0, 131073, 1506241, 0, 131073, 1506242, 0, 131073, 1506243, 0, 131073, 1506244, 0, 131073, 1506245, 0, 131073, 1506246, 0, 131073, 1506247, 0, 131073, 1506248, 0, 131073, 1506249, 0, 131073, 1506250, 0, 131073, 1506251, 0, 131073, 1506252, 0, 131073, 1506253, 0, 131073, 1506254, 0, 131073, 1506255, 0, 131073, 1506256, 0, 131073, 1506257, 0, 131073, 1506258, 0, 131073, 1506259, 0, 131073, 1506260, 0, 131073, 1506261, 0, 131073, 1506262, 0, 131073, 1506263, 0, 131073, 1506264, 0, 131073, 1506265, 0, 131073, 1506266, 0, 131073, 1506267, 0, 131073, 1506268, 0, 131073, 1506269, 0, 131073, 1506270, 0, 131073, 1506271, 0, 131073, 1506272, 0, 131073, 1506273, 0, 131073, 1506274, 0, 131073, 1506275, 0, 131073, 1506276, 0, 131073, 1506277, 0, 131073, 1506278, 0, 131073, 1506279, 0, 131073, 1506280, 0, 131073, 1506281, 0, 131073, 1506282, 0, 131073, 1506283, 0, 131073, 1506284, 0, 131073, 1506285, 0, 131073, 1506286, 0, 131073, 1506287, 0, 131073, 1506288, 0, 131073, 1506289, 0, 131073, 1506290, 0, 131073, 1506291, 0, 131073, 1506292, 0, 131073, 1506293, 0, 131073, 1506294, 0, 131073, 1506295, 0, 131073, 1506296, 0, 131073, 1506297, 0, 131073, 1506298, 0, 131073, 1506299, 0, 131073, 1506300, 0, 131073, 1506301, 0, 131073, 1506302, 0, 131073, 1506303, 0, 131073, 1506304, 0, 131073, 1506305, 0, 131073, 1506306, 0, 131073, 1506307, 0, 131073, 1506308, 0, 131073, 1506309, 0, 131073, 1506310, 0, 131073, 1506311, 0, 131073, 1506312, 0, 131073, 1506313, 0, 131073, 1506314, 0, 131073, 1506315, 0, 131073, 1506316, 0, 131073, 1506317, 0, 131073, 1506318, 0, 131073, 1506319, 0, 131073, 1506320, 0, 131073, 1506321, 0, 131073, 1506322, 0, 131073, 1506323, 0, 131073, 1506324, 0, 131073, 1506325, 0, 131073, 1506326, 0, 131073, 1506327, 0, 131073, 1506328, 0, 131073, 1506329, 0, 131073, 1506330, 0, 131073, 1506331, 0, 131073, 1506332, 0, 131073, 1506333, 0, 131073, 1506334, 0, 131073, 1506335, 0, 131073, 1506336, 0, 131073, 1506337, 0, 131073, 1506338, 0, 131073, 1506339, 0, 131073, 1506340, 0, 131073, 1506341, 0, 131073, 1506342, 0, 131073, 1506343, 0, 131073, 1506344, 0, 131073, 1506345, 0, 131073, 1506346, 0, 131073, 1506347, 0, 131073, 1506348, 0, 131073, 1506349, 0, 131073, 1506350, 0, 131073, 1506351, 0, 131073, 1506352, 0, 131073, 1506353, 0, 131073, 1506354, 0, 131073, 1506355, 0, 131073, 1506356, 0, 131073, 1506357, 0, 131073, 1506358, 0, 131073, 1506359, 0, 131073, 1506360, 0, 131073, 1506361, 0, 131073, 1506362, 0, 131073, 1506363, 0, 131073, 1506364, 0, 131073, 1506365, 0, 131073, 1506366, 0, 131073, 1506367, 0, 131073, 1506368, 0, 131073, 1506369, 0, 131073, 1506370, 0, 131073, 1506371, 0, 131073, 1506372, 0, 131073, 1506373, 0, 131073, 1506374, 0, 131073, 1506375, 0, 131073, 1506376, 0, 131073, 1506377, 0, 131073, 1506378, 0, 131073, 1506379, 0, 131073, 1506380, 0, 131073, 1506381, 0, 131073, 1506382, 0, 131073, 1506383, 0, 131073, 1506384, 0, 131073, 1506385, 0, 131073, 1506386, 0, 131073, 1506387, 0, 131073, 1506388, 0, 131073, 1506389, 0, 131073, 1506390, 0, 131073, 1506391, 0, 131073, 1506392, 0, 131073, 1506393, 0, 131073, 1506394, 0, 131073, 1506395, 0, 131073, 1506396, 0, 131073, 1506397, 0, 131073, 1506398, 0, 131073, 1506399, 0, 131073, 1506400, 0, 131073, 1506401, 0, 131073, 1506402, 0, 131073, 1506403, 0, 131073, 1506404, 0, 131073, 1506405, 0, 131073, 1506406, 0, 131073, 1506407, 0, 131073, 1506408, 0, 131073, 1506409, 0, 131073, 1506410, 0, 131073, 1506411, 0, 131073, 1506412, 0, 131073, 1506413, 0, 131073, 1506414, 0, 131073, 1506415, 0, 131073, 1506416, 0, 131073, 1506417, 0, 131073, 1506418, 0, 131073, 1506419, 0, 131073, 1506420, 0, 131073, 1506421, 0, 131073, 1506422, 0, 131073, 1506423, 0, 131073, 1506424, 0, 131073, 1506425, 0, 131073, 1506426, 0, 131073, 1506427, 0, 131073, 1506428, 0, 131073, 1506429, 0, 131073, 1506430, 0, 131073, 1506431, 0, 131073, 1506432, 0, 131073, 1506433, 0, 131073, 1506434, 0, 131073, 1506435, 0, 131073, 1506436, 0, 131073, 1506437, 0, 131073, 1506438, 0, 131073, 1506439, 0, 131073, 1506440, 0, 131073, 1506441, 0, 131073, 1506442, 0, 131073, 1506443, 0, 131073, 1506444, 0, 131073, 1506445, 0, 131073, 1506446, 0, 131073, 1506447, 0, 131073, 1506448, 0, 131073, 1506449, 0, 131073, 1506450, 0, 131073, 1506451, 0, 131073, 1506452, 0, 131073, 1506453, 0, 131073, 1506454, 0, 131073, 1506455, 0, 131073, 1506456, 0, 131073, 1506457, 0, 131073, 1506458, 0, 131073, 1506459, 0, 131073, 1506460, 0, 131073, 1506461, 0, 131073, 1506462, 0, 131073, 1506463, 0, 131073, 1506464, 0, 131073, 1506465, 0, 131073, 1506466, 0, 131073, 1506467, 0, 131073, 1506468, 0, 131073, 1506469, 0, 131073, 1506470, 0, 131073, 1506471, 0, 131073, 1506472, 0, 131073, 1506473, 0, 131073, 1506474, 0, 131073, 1506475, 0, 131073, 1506476, 0, 131073, 1506477, 0, 131073, 1506478, 0, 131073, 1506479, 0, 131073, 1506480, 0, 131073, 1506481, 0, 131073, 1506482, 0, 131073, 1506483, 0, 131073, 1506484, 0, 131073, 1506485, 0, 131073, 1506486, 0, 131073, 1506487, 0, 131073, 1506488, 0, 131073, 1506489, 0, 131073, 1506490, 0, 131073, 1506491, 0, 131073, 1506492, 0, 131073, 1506493, 0, 131073, 1506494, 0, 131073, 1506495, 0, 131073, 1506496, 0, 131073, 1506497, 0, 131073, 1506498, 0, 131073, 1506499, 0, 131073, 1506500, 0, 131073, 1506501, 0, 131073, 1506502, 0, 131073, 1506503, 0, 131073, 1506504, 0, 131073, 1506505, 0, 131073, 1506506, 0, 131073, 1506507, 0, 131073, 1506508, 0, 131073, 1506509, 0, 131073, 1506510, 0, 131073, 1506511, 0, 131073, 1506512, 0, 131073, 1506513, 0, 131073, 1506514, 0, 131073, 1506515, 0, 131073, 1506516, 0, 131073, 1506517, 0, 131073, 1506518, 0, 131073, 1506519, 0, 131073, 1506520, 0, 131073, 1506521, 0, 131073, 1506522, 0, 131073, 1506523, 0, 131073, 1506524, 0, 131073, 1506525, 0, 131073, 1506526, 0, 131073, 1506527, 0, 131073, 1506528, 0, 131073, 1506529, 0, 131073, 1506530, 0, 131073, 1506531, 0, 131073, 1506532, 0, 131073, 1506533, 0, 131073, 1506534, 0, 131073, 1506535, 0, 131073, 1506536, 0, 131073, 1506537, 0, 131073, 1506538, 0, 131073, 1506539, 0, 131073, 1506540, 0, 131073, 1506541, 0, 131073, 1506542, 0, 131073, 1506543, 0, 131073, 1506544, 0, 131073, 1506545, 0, 131073, 1506546, 0, 131073, 1506547, 0, 131073, 1506548, 0, 131073, 1506549, 0, 131073, 1506550, 0, 131073, 1506551, 0, 131073, 1506552, 0, 131073, 1506553, 0, 131073, 1506554, 0, 131073, 1506555, 0, 131073, 1506556, 0, 131073, 1506557, 0, 131073, 1506558, 0, 131073, 1506559, 0, 131073, 1506560, 0, 131073, 1506561, 0, 131073, 1506562, 0, 131073, 1506563, 0, 131073, 1506564, 0, 131073, 1506565, 0, 131073, 1506566, 0, 131073, 1506567, 0, 131073, 1506568, 0, 131073, 1506569, 0, 131073, 1506570, 0, 131073, 1506571, 0, 131073, 1506572, 0, 131073, 1506573, 0, 131073, 1506574, 0, 131073, 1506575, 0, 131073, 1506576, 0, 131073, 1506577, 0, 131073, 1506578, 0, 131073, 1506579, 0, 131073, 1506580, 0, 131073, 1506581, 0, 131073, 1506582, 0, 131073, 1506583, 0, 131073, 1506584, 0, 131073, 1506585, 0, 131073, 1506586, 0, 131073, 1506587, 0, 131073, 1506588, 0, 131073, 1506589, 0, 131073, 1506590, 0, 131073, 1506591, 0, 131073, 1506592, 0, 131073, 1506593, 0, 131073, 1506594, 0, 131073, 1506595, 0, 131073, 1506596, 0, 131073, 1506597, 0, 131073, 1506598, 0, 131073, 1506599, 0, 131073, 1506600, 0, 131073, 1506601, 0, 131073, 1506602, 0, 131073, 1506603, 0, 131073, 1506604, 0, 131073, 1506605, 0, 131073, 1506606, 0, 131073, 1506607, 0, 131073, 1506608, 0, 131073, 1506609, 0, 131073, 1506610, 0, 131073, 1506611, 0, 131073, 1506612, 0, 131073, 1506613, 0, 131073, 1506614, 0, 131073, 1506615, 0, 131073, 1506616, 0, 131073, 1506617, 0, 131073, 1506618, 0, 131073, 1506619, 0, 131073, 1506620, 0, 131073, 1506621, 0, 131073, 1506622, 0, 131073, 1506623, 0, 131073, 1506624, 0, 131073, 1506625, 0, 131073, 1506626, 0, 131073, 1506627, 0, 131073, 1506628, 0, 131073, 1506629, 0, 131073, 1506630, 0, 131073, 1506631, 0, 131073, 1506632, 0, 131073, 1506633, 0, 131073, 1506634, 0, 131073, 1506635, 0, 131073, 1506636, 0, 131073, 1506637, 0, 131073, 1506638, 0, 131073, 1506639, 0, 131073, 1506640, 0, 131073, 1506641, 0, 131073, 1506642, 0, 131073, 1506643, 0, 131073, 1506644, 0, 131073, 1506645, 0, 131073, 1506646, 0, 131073, 1506647, 0, 131073, 1506648, 0, 131073, 1506649, 0, 131073, 1506650, 0, 131073, 1506651, 0, 131073, 1506652, 0, 131073, 1506653, 0, 131073, 1506654, 0, 131073, 1506655, 0, 131073, 1506656, 0, 131073, 1506657, 0, 131073, 1506658, 0, 131073, 1506659, 0, 131073, 1506660, 0, 131073, 1506661, 0, 131073, 1506662, 0, 131073, 1506663, 0, 131073, 1506664, 0, 131073, 1506665, 0, 131073, 1506666, 0, 131073, 1506667, 0, 131073, 1506668, 0, 131073, 1506669, 0, 131073, 1506670, 0, 131073, 1506671, 0, 131073, 1506672, 0, 131073, 1506673, 0, 131073, 1506674, 0, 131073, 1506675, 0, 131073, 1506676, 0, 131073, 1506677, 0, 131073, 1506678, 0, 131073, 1506679, 0, 131073, 1506680, 0, 131073, 1506681, 0, 131073, 1506682, 0, 131073, 1506683, 0, 131073, 1506684, 0, 131073, 1506685, 0, 131073, 1506686, 0, 131073, 1506687, 0, 131073, 1506688, 0, 131073, 1506689, 0, 131073, 1506690, 0, 131073, 1506691, 0, 131073, 1506692, 0, 131073, 1506693, 0, 131073, 1506694, 0, 131073, 1506695, 0, 131073, 1506696, 0, 131073, 1506697, 0, 131073, 1506698, 0, 131073, 1506699, 0, 131073, 1506700, 0, 131073, 1506701, 0, 131073, 1506702, 0, 131073, 1506703, 0, 131073, 1506704, 0, 131073, 1506705, 0, 131073, 1506706, 0, 131073, 1506707, 0, 131073, 1506708, 0, 131073, 1506709, 0, 131073, 1506710, 0, 131073, 1506711, 0, 131073, 1506712, 0, 131073, 1506713, 0, 131073, 1506714, 0, 131073, 1506715, 0, 131073, 1506716, 0, 131073, 1506717, 0, 131073, 1506718, 0, 131073, 1506719, 0, 131073, 1506720, 0, 131073, 1506721, 0, 131073, 1506722, 0, 131073, 1506723, 0, 131073, 1506724, 0, 131073, 1506725, 0, 131073, 1506726, 0, 131073, 1506727, 0, 131073, 1506728, 0, 131073, 1506729, 0, 131073, 1506730, 0, 131073, 1506731, 0, 131073, 1506732, 0, 131073, 1506733, 0, 131073, 1506734, 0, 131073, 1506735, 0, 131073, 1506736, 0, 131073, 1506737, 0, 131073, 1506738, 0, 131073, 1506739, 0, 131073, 1506740, 0, 131073, 1506741, 0, 131073, 1506742, 0, 131073, 1506743, 0, 131073, 1506744, 0, 131073, 1506745, 0, 131073, 1506746, 0, 131073, 1506747, 0, 131073, 1506748, 0, 131073, 1506749, 0, 131073, 1506750, 0, 131073, 1506751, 0, 131073, 1506752, 0, 131073, 1506753, 0, 131073, 1506754, 0, 131073, 1506755, 0, 131073, 1506756, 0, 131073, 1506757, 0, 131073, 1506758, 0, 131073, 1506759, 0, 131073, 1506760, 0, 131073, 1506761, 0, 131073, 1506762, 0, 131073, 1506763, 0, 131073, 1506764, 0, 131073, 1506765, 0, 131073, 1506766, 0, 131073, 1506767, 0, 131073, 1506768, 0, 131073, 1506769, 0, 131073, 1506770, 0, 131073, 1506771, 0, 131073, 1506772, 0, 131073, 1506773, 0, 131073, 1506774, 0, 131073, 1506775, 0, 131073, 1506776, 0, 131073, 1506777, 0, 131073, 1506778, 0, 131073, 1506779, 0, 131073, 1506780, 0, 131073, 1506781, 0, 131073, 1506782, 0, 131073, 1506783, 0, 131073, 1506784, 0, 131073, 1506785, 0, 131073, 1506786, 0, 131073, 1506787, 0, 131073, 1506788, 0, 131073, 1506789, 0, 131073, 1506790, 0, 131073, 1506791, 0, 131073, 1506792, 0, 131073, 1506793, 0, 131073, 1506794, 0, 131073, 1506795, 0, 131073, 1506796, 0, 131073, 1506797, 0, 131073, 1506798, 0, 131073, 1506799, 0, 131073, 1506800, 0, 131073, 1506801, 0, 131073, 1506802, 0, 131073, 1506803, 0, 131073, 1506804, 0, 131073, 1506805, 0, 131073, 1506806, 0, 131073, 1506807, 0, 131073, 1506808, 0, 131073, 1506809, 0, 131073, 1506810, 0, 131073, 1506811, 0, 131073, 1506812, 0, 131073, 1506813, 0, 131073, 1506814, 0, 131073, 1506815, 0, 131073, 1506816, 0, 131073, 1506817, 0, 131073, 1506818, 0, 131073, 1506819, 0, 131073, 1506820, 0, 131073, 1506821, 0, 131073, 1506822, 0, 131073, 1506823, 0, 131073, 1506824, 0, 131073, 1506825, 0, 131073, 1506826, 0, 131073, 1506827, 0, 131073, 1506828, 0, 131073, 1506829, 0, 131073, 1506830, 0, 131073, 1506831, 0, 131073, 1506832, 0, 131073, 1506833, 0, 131073, 1506834, 0, 131073, 1506835, 0, 131073, 1506836, 0, 131073, 1506837, 0, 131073, 1506838, 0, 131073, 1506839, 0, 131073, 1506840, 0, 131073, 1506841, 0, 131073, 1506842, 0, 131073, 1506843, 0, 131073, 1506844, 0, 131073, 1506845, 0, 131073, 1506846, 0, 131073, 1506847, 0, 131073, 1506848, 0, 131073, 1506849, 0, 131073, 1506850, 0, 131073, 1506851, 0, 131073, 1506852, 0, 131073, 1506853, 0, 131073, 1506854, 0, 131073, 1506855, 0, 131073, 1506856, 0, 131073, 1506857, 0, 131073, 1506858, 0, 131073, 1506859, 0, 131073, 1506860, 0, 131073, 1506861, 0, 131073, 1506862, 0, 131073, 1506863, 0, 131073, 1506864, 0, 131073, 1506865, 0, 131073, 1506866, 0, 131073, 1506867, 0, 131073, 1506868, 0, 131073, 1506869, 0, 131073, 1506870, 0, 131073, 1506871, 0, 131073, 1506872, 0, 131073, 1506873, 0, 131073, 1506874, 0, 131073, 1506875, 0, 131073, 1506876, 0, 131073, 1506877, 0, 131073, 1506878, 0, 131073, 1506879, 0, 131073, 1506880, 0, 131073, 1506881, 0, 131073, 1506882, 0, 131073, 1506883, 0, 131073, 1506884, 0, 131073, 1506885, 0, 131073, 1506886, 0, 131073, 1506887, 0, 131073, 1506888, 0, 131073, 1506889, 0, 131073, 1506890, 0, 131073, 1506891, 0, 131073, 1506892, 0, 131073, 1506893, 0, 131073, 1506894, 0, 131073, 1506895, 0, 131073, 1506896, 0, 131073, 1506897, 0, 131073, 1506898, 0, 131073, 1506899, 0, 131073, 1506900, 0, 131073, 1506901, 0, 131073, 1506902, 0, 131073, 1506903, 0, 131073, 1506904, 0, 131073, 1506905, 0, 131073, 1506906, 0, 131073, 1506907, 0, 131073, 1506908, 0, 131073, 1506909, 0, 131073, 1506910, 0, 131073, 1506911, 0, 131073, 1506912, 0, 131073, 1506913, 0, 131073, 1506914, 0, 131073, 1506915, 0, 131073, 1506916, 0, 131073, 1506917, 0, 131073, 1506918, 0, 131073, 1506919, 0, 131073, 1506920, 0, 131073, 1506921, 0, 131073, 1506922, 0, 131073, 1506923, 0, 131073, 1506924, 0, 131073, 1506925, 0, 131073, 1506926, 0, 131073, 1506927, 0, 131073, 1506928, 0, 131073, 1506929, 0, 131073, 1506930, 0, 131073, 1506931, 0, 131073, 1506932, 0, 131073, 1506933, 0, 131073, 1506934, 0, 131073, 1506935, 0, 131073, 1506936, 0, 131073, 1506937, 0, 131073, 1506938, 0, 131073, 1506939, 0, 131073, 1506940, 0, 131073, 1506941, 0, 131073, 1506942, 0, 131073, 1506943, 0, 131073, 1506944, 0, 131073, 1506945, 0, 131073, 1506946, 0, 131073, 1506947, 0, 131073, 1506948, 0, 131073, 1506949, 0, 131073, 1506950, 0, 131073, 1506951, 0, 131073, 1506952, 0, 131073, 1506953, 0, 131073, 1506954, 0, 131073, 1506955, 0, 131073, 1506956, 0, 131073, 1506957, 0, 131073, 1506958, 0, 131073, 1506959, 0, 131073, 1506960, 0, 131073, 1506961, 0, 131073, 1506962, 0, 131073, 1506963, 0, 131073, 1506964, 0, 131073, 1506965, 0, 131073, 1506966, 0, 131073, 1506967, 0, 131073, 1506968, 0, 131073, 1506969, 0, 131073, 1506970, 0, 131073, 1506971, 0, 131073, 1506972, 0, 131073, 1506973, 0, 131073, 1506974, 0, 131073, 1506975, 0, 131073, 1506976, 0, 131073, 1506977, 0, 131073, 1506978, 0, 131073, 1506979, 0, 131073, 1506980, 0, 131073, 1506981, 0, 131073, 1506982, 0, 131073, 1506983, 0, 131073, 1506984, 0, 131073, 1506985, 0, 131073, 1506986, 0, 131073, 1506987, 0, 131073, 1506988, 0, 131073, 1506989, 0, 131073, 1506990, 0, 131073, 1506991, 0, 131073, 1506992, 0, 131073, 1506993, 0, 131073, 1506994, 0, 131073, 1506995, 0, 131073, 1506996, 0, 131073, 1506997, 0, 131073, 1506998, 0, 131073, 1506999, 0, 131073, 1507000, 0, 131073, 1507001, 0, 131073, 1507002, 0, 131073, 1507003, 0, 131073, 1507004, 0, 131073, 1507005, 0, 131073, 1507006, 0, 131073, 1507007, 0, 131073, 1507008, 0, 131073, 1507009, 0, 131073, 1507010, 0, 131073, 1507011, 0, 131073, 1507012, 0, 131073, 1507013, 0, 131073, 1507014, 0, 131073, 1507015, 0, 131073, 1507016, 0, 131073, 1507017, 0, 131073, 1507018, 0, 131073, 1507019, 0, 131073, 1507020, 0, 131073, 1507021, 0, 131073, 1507022, 0, 131073, 1507023, 0, 131073, 1507024, 0, 131073, 1507025, 0, 131073, 1507026, 0, 131073, 1507027, 0, 131073, 1507028, 0, 131073, 1507029, 0, 131073, 1507030, 0, 131073, 1507031, 0, 131073, 1507032, 0, 131073, 1507033, 0, 131073, 1507034, 0, 131073, 1507035, 0, 131073, 1507036, 0, 131073, 1507037, 0, 131073, 1507038, 0, 131073, 1507039, 0, 131073, 1507040, 0, 131073, 1507041, 0, 131073, 1507042, 0, 131073, 1507043, 0, 131073, 1507044, 0, 131073, 1507045, 0, 131073, 1507046, 0, 131073, 1507047, 0, 131073, 1507048, 0, 131073, 1507049, 0, 131073, 1507050, 0, 131073, 1507051, 0, 131073, 1507052, 0, 131073, 1507053, 0, 131073, 1507054, 0, 131073, 1507055, 0, 131073, 1507056, 0, 131073, 1507057, 0, 131073, 1507058, 0, 131073, 1507059, 0, 131073, 1507060, 0, 131073, 1507061, 0, 131073, 1507062, 0, 131073, 1507063, 0, 131073, 1507064, 0, 131073, 1507065, 0, 131073, 1507066, 0, 131073, 1507067, 0, 131073, 1507068, 0, 131073, 1507069, 0, 131073, 1507070, 0, 131073, 1507071, 0, 131073, 1507072, 0, 131073, 1507073, 0, 131073, 1507074, 0, 131073, 1507075, 0, 131073, 1507076, 0, 131073, 1507077, 0, 131073, 1507078, 0, 131073, 1507079, 0, 131073, 1507080, 0, 131073, 1507081, 0, 131073, 1507082, 0, 131073, 1507083, 0, 131073, 1507084, 0, 131073, 1507085, 0, 131073, 1507086, 0, 131073, 1507087, 0, 131073, 1507088, 0, 131073, 1507089, 0, 131073, 1507090, 0, 131073, 1507091, 0, 131073, 1507092, 0, 131073, 1507093, 0, 131073, 1507094, 0, 131073, 1507095, 0, 131073, 1507096, 0, 131073, 1507097, 0, 131073, 1507098, 0, 131073, 1507099, 0, 131073, 1507100, 0, 131073, 1507101, 0, 131073, 1507102, 0, 131073, 1507103, 0, 131073, 1507104, 0, 131073, 1507105, 0, 131073, 1507106, 0, 131073, 1507107, 0, 131073, 1507108, 0, 131073, 1507109, 0, 131073, 1507110, 0, 131073, 1507111, 0, 131073, 1507112, 0, 131073, 1507113, 0, 131073, 1507114, 0, 131073, 1507115, 0, 131073, 1507116, 0, 131073, 1507117, 0, 131073, 1507118, 0, 131073, 1507119, 0, 131073, 1507120, 0, 131073, 1507121, 0, 131073, 1507122, 0, 131073, 1507123, 0, 131073, 1507124, 0, 131073, 1507125, 0, 131073, 1507126, 0, 131073, 1507127, 0, 131073, 1507128, 0, 131073, 1507129, 0, 131073, 1507130, 0, 131073, 1507131, 0, 131073, 1507132, 0, 131073, 1507133, 0, 131073, 1507134, 0, 131073, 1507135, 0, 131073, 1507136, 0, 131073, 1507137, 0, 131073, 1507138, 0, 131073, 1507139, 0, 131073, 1507140, 0, 131073, 1507141, 0, 131073, 1507142, 0, 131073, 1507143, 0, 131073, 1507144, 0, 131073, 1507145, 0, 131073, 1507146, 0, 131073, 1507147, 0, 131073, 1507148, 0, 131073, 1507149, 0, 131073, 1507150, 0, 131073, 1507151, 0, 131073, 1507152, 0, 131073, 1507153, 0, 131073, 1507154, 0, 131073, 1507155, 0, 131073, 1507156, 0, 131073, 1507157, 0, 131073, 1507158, 0, 131073, 1507159, 0, 131073, 1507160, 0, 131073, 1507161, 0, 131073, 1507162, 0, 131073, 1507163, 0, 131073, 1507164, 0, 131073, 1507165, 0, 131073, 1507166, 0, 131073, 1507167, 0, 131073, 1507168, 0, 131073, 1507169, 0, 131073, 1507170, 0, 131073, 1507171, 0, 131073, 1507172, 0, 131073, 1507173, 0, 131073, 1507174, 0, 131073, 1507175, 0, 131073, 1507176, 0, 131073, 1507177, 0, 131073, 1507178, 0, 131073, 1507179, 0, 131073, 1507180, 0, 131073, 1507181, 0, 131073, 1507182, 0, 131073, 1507183, 0, 131073, 1507184, 0, 131073, 1507185, 0, 131073, 1507186, 0, 131073, 1507187, 0, 131073, 1507188, 0, 131073, 1507189, 0, 131073, 1507190, 0, 131073, 1507191, 0, 131073, 1507192, 0, 131073, 1507193, 0, 131073, 1507194, 0, 131073, 1507195, 0, 131073, 1507196, 0, 131073, 1507197, 0, 131073, 1507198, 0, 131073, 1507199, 0, 131073, 1507200, 0, 131073, 1507201, 0, 131073, 1507202, 0, 131073, 1507203, 0, 131073, 1507204, 0, 131073, 1507205, 0, 131073, 1507206, 0, 131073, 1507207, 0, 131073, 1507208, 0, 131073, 1507209, 0, 131073, 1507210, 0, 131073, 1507211, 0, 131073, 1507212, 0, 131073, 1507213, 0, 131073, 1507214, 0, 131073, 1507215, 0, 131073, 1507216, 0, 131073, 1507217, 0, 131073, 1507218, 0, 131073, 1507219, 0, 131073, 1507220, 0, 131073, 1507221, 0, 131073, 1507222, 0, 131073, 1507223, 0, 131073, 1507224, 0, 131073, 1507225, 0, 131073, 1507226, 0, 131073, 1507227, 0, 131073, 1507228, 0, 131073, 1507229, 0, 131073, 1507230, 0, 131073, 1507231, 0, 131073, 1507232, 0, 131073, 1507233, 0, 131073, 1507234, 0, 131073, 1507235, 0, 131073, 1507236, 0, 131073, 1507237, 0, 131073, 1507238, 0, 131073, 1507239, 0, 131073, 1507240, 0, 131073, 1507241, 0, 131073, 1507242, 0, 131073, 1507243, 0, 131073, 1507244, 0, 131073, 1507245, 0, 131073, 1507246, 0, 131073, 1507247, 0, 131073, 1507248, 0, 131073, 1507249, 0, 131073, 1507250, 0, 131073, 1507251, 0, 131073, 1507252, 0, 131073, 1507253, 0, 131073, 1507254, 0, 131073, 1507255, 0, 131073, 1507256, 0, 131073, 1507257, 0, 131073, 1507258, 0, 131073, 1507259, 0, 131073, 1507260, 0, 131073, 1507261, 0, 131073, 1507262, 0, 131073, 1507263, 0, 131073, 1507264, 0, 131073, 1507265, 0, 131073, 1507266, 0, 131073, 1507267, 0, 131073, 1507268, 0, 131073, 1507269, 0, 131073, 1507270, 0, 131073, 1507271, 0, 131073, 1507272, 0, 131073, 1507273, 0, 131073, 1507274, 0, 131073, 1507275, 0, 131073, 1507276, 0, 131073, 1507277, 0, 131073, 1507278, 0, 131073, 1507279, 0, 131073, 1507280, 0, 131073, 1507281, 0, 131073, 1507282, 0, 131073, 1507283, 0, 131073, 1507284, 0, 131073, 1507285, 0, 131073, 1507286, 0, 131073, 1507287, 0, 131073, 1507288, 0, 131073, 1507289, 0, 131073, 1507290, 0, 131073, 1507291, 0, 131073, 1507292, 0, 131073, 1507293, 0, 131073, 1507294, 0, 131073, 1507295, 0, 131073, 1507296, 0, 131073, 1507297, 0, 131073, 1507298, 0, 131073, 1507299, 0, 131073, 1507300, 0, 131073, 1507301, 0, 131073, 1507302, 0, 131073, 1507303, 0, 131073, 1507304, 0, 131073, 1507305, 0, 131073, 1507306, 0, 131073, 1507307, 0, 131073, 1507308, 0, 131073, 1507309, 0, 131073, 1507310, 0, 131073, 1507311, 0, 131073, 1507312, 0, 131073, 1507313, 0, 131073, 1507314, 0, 131073, 1507315, 0, 131073, 1507316, 0, 131073, 1507317, 0, 131073, 1507318, 0, 131073, 1507319, 0, 131073, 1507320, 0, 131073, 1507321, 0, 131073, 1507322, 0, 131073, 1507323, 0, 131073, 1507324, 0, 131073, 1507325, 0, 131073, 1507326, 0, 131073, 1507327, 0, 131073, 1441792, 0, 131073, 1441793, 0, 131073, 1441794, 0, 131073, 1441795, 0, 131073, 1441796, 0, 131073, 1441797, 0, 131073, 1441798, 0, 131073, 1441799, 0, 131073, 1441800, 0, 131073, 1441801, 0, 131073, 1441802, 0, 131073, 1441803, 0, 131073, 1441804, 0, 131073, 1441805, 0, 131073, 1441806, 0, 131073, 1441807, 0, 131073, 1441808, 0, 131073, 1441809, 0, 131073, 1441810, 0, 131073, 1441811, 0, 131073, 1441812, 0, 131073, 1441813, 0, 131073, 1441814, 0, 131073, 1441815, 0, 131073, 1441816, 0, 131073, 1441817, 0, 131073, 1441818, 0, 131073, 1441819, 0, 131073, 1441820, 0, 131073, 1441821, 0, 131073, 1441822, 0, 131073, 1441823, 0, 131073, 1441824, 0, 131073, 1441825, 0, 131073, 1441826, 0, 131073, 1441827, 0, 131073, 1441828, 0, 131073, 1441829, 0, 131073, 1441830, 0, 131073, 1441831, 0, 131073, 1441832, 0, 131073, 1441833, 0, 131073, 1441834, 0, 131073, 1441835, 0, 131073, 1441836, 0, 131073, 1441837, 0, 131073, 1441838, 0, 131073, 1441839, 0, 131073, 1441840, 0, 131073, 1441841, 0, 131073, 1441842, 0, 131073, 1441843, 0, 131073, 1441844, 0, 131073, 1441845, 0, 131073, 1441846, 0, 131073, 1441847, 0, 131073, 1441848, 0, 131073, 1441849, 0, 131073, 1441850, 0, 131073, 1441851, 0, 131073, 1441852, 0, 131073, 1441853, 0, 131073, 1441854, 0, 131073, 1441855, 0, 131073, 1441856, 0, 131073, 1441857, 0, 131073, 1441858, 0, 131073, 1441859, 0, 131073, 1441860, 0, 131073, 1441861, 0, 131073, 1441862, 0, 131073, 1441863, 0, 131073, 1441864, 0, 131073, 1441865, 0, 131073, 1441866, 0, 131073, 1441867, 0, 131073, 1441868, 0, 131073, 1441869, 0, 131073, 1441870, 0, 131073, 1441871, 0, 131073, 1441872, 0, 131073, 1441873, 0, 131073, 1441874, 0, 131073, 1441875, 0, 131073, 1441876, 0, 131073, 1441877, 0, 131073, 1441878, 0, 131073, 1441879, 0, 131073, 1441880, 0, 131073, 1441881, 0, 131073, 1441882, 0, 131073, 1441883, 0, 131073, 1441884, 0, 131073, 1441885, 0, 131073, 1441886, 0, 131073, 1441887, 0, 131073, 1572429, 1, 196608, 1638417, 0, 131073, 1638432, 0, 131073 ) + +[node name="TileMap" type="TileMap" parent="TileMap2" groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 27 ) +tile_set = ExtResource( 2 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 1571738, 1, 1, 1571739, 1, 2, 1571740, 1, 2, 1571741, 1, 2, 1571742, 1, 2, 1571743, 1, 2, 1571744, 1, 2, 1571745, 1, 2, 1571746, 1, 2, 1571747, 1, 2, 1571748, 1, 2, 1571749, 1, 2, 1571750, 1, 2, 1571751, 1, 2, 1571752, 1, 2, 1571753, 1, 2, 1571754, 1, 2, 1571755, 1, 2, 1571756, 1, 2, 1571757, 1, 2, 1571758, 1, 2, 1571759, 1, 2, 1571760, 1, 2, 1571761, 1, 2, 1571762, 1, 2, 1571763, 1, 2, 1571764, 1, 2, 1571765, 1, 2, 1571766, 1, 2, 1571767, 1, 2, 1571768, 1, 2, 1571769, 1, 2, 1571770, 1, 2, 1571771, 1, 2, 1571772, 1, 2, 1571773, 1, 2, 1571774, 1, 2, 1571775, 1, 2, 1571776, 1, 2, 1571777, 1, 2, 1571778, 1, 2, 1571779, 1, 2, 1571780, 1, 2, 1571781, 1, 2, 1571782, 1, 2, 1571783, 1, 2, 1571784, 1, 2, 1571785, 1, 2, 1571786, 1, 2, 1571787, 1, 2, 1571788, 1, 2, 1571789, 1, 2, 1571790, 1, 2, 1571791, 1, 2, 1571792, 1, 2, 1571793, 1, 2, 1571794, 1, 2, 1571795, 1, 2, 1571796, 1, 2, 1571797, 1, 2, 1571798, 1, 2, 1571799, 1, 2, 1571800, 1, 2, 1571801, 1, 2, 1571802, 1, 2, 1571803, 1, 2, 1571804, 1, 2, 1571805, 1, 2, 1571806, 1, 2, 1571807, 1, 2, 1571808, 1, 2, 1571809, 1, 2, 1571810, 1, 2, 1571811, 1, 2, 1571812, 1, 2, 1571813, 1, 2, 1571814, 1, 2, 1571815, 1, 2, 1571816, 1, 2, 1571817, 1, 2, 1571818, 1, 2, 1571819, 1, 2, 1571820, 1, 2, 1571821, 1, 2, 1571822, 1, 2, 1571823, 1, 2, 1571824, 1, 2, 1571825, 1, 2, 1571826, 1, 2, 1571827, 1, 2, 1571828, 1, 2, 1571829, 1, 2, 1571830, 1, 2, 1571831, 1, 2, 1571832, 1, 2, 1571833, 1, 2, 1571834, 1, 2, 1571835, 1, 2, 1571836, 1, 2, 1571837, 1, 2, 1571838, 1, 2, 1571839, 1, 2, 1571840, 1, 2, 1571841, 1, 2, 1571842, 1, 2, 1571843, 1, 2, 1571844, 1, 2, 1571845, 1, 2, 1571846, 1, 2, 1571847, 1, 2, 1571848, 1, 2, 1571849, 1, 2, 1571850, 1, 2, 1571851, 1, 2, 1571852, 1, 2, 1571853, 1, 2, 1571854, 1, 2, 1571855, 1, 2, 1571856, 1, 2, 1571857, 1, 2, 1571858, 1, 2, 1571859, 1, 2, 1571860, 1, 2, 1571861, 1, 2, 1571862, 1, 2, 1571863, 1, 2, 1571864, 1, 2, 1571865, 1, 2, 1571866, 1, 2, 1571867, 1, 2, 1571868, 1, 2, 1571869, 1, 2, 1571870, 1, 2, 1571871, 1, 2, 1571872, 1, 2, 1571873, 1, 2, 1571874, 1, 2, 1571875, 1, 2, 1571876, 1, 2, 1571877, 1, 2, 1571878, 1, 2, 1571879, 1, 2, 1571880, 1, 2, 1571881, 1, 2, 1571882, 1, 2, 1571883, 1, 2, 1571884, 1, 2, 1571885, 1, 2, 1571886, 1, 2, 1571887, 1, 2, 1571888, 1, 2, 1571889, 1, 2, 1571890, 1, 2, 1571891, 1, 2, 1571892, 1, 2, 1571893, 1, 2, 1571894, 1, 2, 1571895, 1, 2, 1571896, 1, 2, 1571897, 1, 2, 1571898, 1, 2, 1571899, 1, 2, 1571900, 1, 2, 1571901, 1, 2, 1571902, 1, 2, 1571903, 1, 2, 1571904, 1, 2, 1571905, 1, 2, 1571906, 1, 2, 1571907, 1, 2, 1571908, 1, 2, 1571909, 1, 2, 1571910, 1, 2, 1571911, 1, 2, 1571912, 1, 2, 1571913, 1, 2, 1571914, 1, 2, 1571915, 1, 2, 1571916, 1, 2, 1571917, 1, 2, 1571918, 1, 2, 1571919, 1, 2, 1571920, 1, 2, 1571921, 1, 2, 1571922, 1, 2, 1571923, 1, 2, 1571924, 1, 2, 1571925, 1, 2, 1571926, 1, 2, 1571927, 1, 2, 1571928, 1, 2, 1571929, 1, 2, 1571930, 1, 2, 1571931, 1, 2, 1571932, 1, 2, 1571933, 1, 2, 1571934, 1, 2, 1571935, 1, 2, 1571936, 1, 2, 1571937, 1, 2, 1571938, 1, 2, 1571939, 1, 2, 1571940, 1, 2, 1571941, 1, 2, 1571942, 1, 2, 1571943, 1, 2, 1571944, 1, 2, 1571945, 1, 2, 1571946, 1, 2, 1571947, 1, 2, 1571948, 1, 2, 1571949, 1, 2, 1571950, 1, 2, 1571951, 1, 2, 1571952, 1, 2, 1571953, 1, 2, 1571954, 1, 2, 1571955, 1, 2, 1571956, 1, 2, 1571957, 1, 2, 1571958, 1, 2, 1571959, 1, 2, 1571960, 1, 2, 1571961, 1, 2, 1571962, 1, 2, 1571963, 1, 2, 1571964, 1, 2, 1571965, 1, 2, 1571966, 1, 2, 1571967, 1, 2, 1571968, 1, 2, 1571969, 1, 2, 1571970, 1, 2, 1571971, 1, 2, 1571972, 1, 2, 1571973, 1, 2, 1571974, 1, 2, 1571975, 1, 2, 1571976, 1, 2, 1571977, 1, 2, 1571978, 1, 2, 1571979, 1, 2, 1571980, 1, 2, 1571981, 1, 2, 1571982, 1, 2, 1571983, 1, 2, 1571984, 1, 2, 1571985, 1, 2, 1571986, 1, 2, 1571987, 1, 2, 1571988, 1, 2, 1571989, 1, 2, 1571990, 1, 2, 1571991, 1, 2, 1571992, 1, 2, 1571993, 1, 2, 1571994, 1, 2, 1571995, 1, 2, 1571996, 1, 2, 1571997, 1, 2, 1571998, 1, 2, 1571999, 1, 2, 1572000, 1, 2, 1572001, 1, 2, 1572002, 1, 2, 1572003, 1, 2, 1572004, 1, 2, 1572005, 1, 2, 1572006, 1, 2, 1572007, 1, 2, 1572008, 1, 2, 1572009, 1, 2, 1572010, 1, 2, 1572011, 1, 2, 1572012, 1, 2, 1572013, 1, 2, 1572014, 1, 2, 1572015, 1, 2, 1572016, 1, 2, 1572017, 1, 2, 1572018, 1, 2, 1572019, 1, 2, 1572020, 1, 2, 1572021, 1, 2, 1572022, 1, 2, 1572023, 1, 2, 1572024, 1, 2, 1572025, 1, 2, 1572026, 1, 2, 1572027, 1, 2, 1572028, 1, 2, 1572029, 1, 2, 1572030, 1, 2, 1572031, 1, 2, 1572032, 1, 2, 1572033, 1, 2, 1572034, 1, 2, 1572035, 1, 2, 1572036, 1, 2, 1572037, 1, 2, 1572038, 1, 2, 1572039, 1, 2, 1572040, 1, 2, 1572041, 1, 2, 1572042, 1, 2, 1572043, 1, 2, 1572044, 1, 2, 1572045, 1, 2, 1572046, 1, 2, 1572047, 1, 2, 1572048, 1, 2, 1572049, 1, 2, 1572050, 1, 2, 1572051, 1, 2, 1572052, 1, 2, 1572053, 1, 2, 1572054, 1, 2, 1572055, 1, 2, 1572056, 1, 2, 1572057, 1, 2, 1572058, 1, 2, 1572059, 1, 2, 1572060, 1, 2, 1572061, 1, 2, 1572062, 1, 2, 1572063, 1, 2, 1572064, 1, 2, 1572065, 1, 2, 1572066, 1, 2, 1572067, 1, 2, 1572068, 1, 2, 1572069, 1, 2, 1572070, 1, 2, 1572071, 1, 2, 1572072, 1, 2, 1572073, 1, 2, 1572074, 1, 2, 1572075, 1, 2, 1572076, 1, 2, 1572077, 1, 2, 1572078, 1, 2, 1572079, 1, 2, 1572080, 1, 2, 1572081, 1, 2, 1572082, 1, 2, 1572083, 1, 2, 1572084, 1, 2, 1572085, 1, 2, 1572086, 1, 2, 1572087, 1, 2, 1572088, 1, 2, 1572089, 1, 2, 1572090, 1, 2, 1572091, 1, 2, 1572092, 1, 2, 1572093, 1, 2, 1572094, 1, 2, 1572095, 1, 2, 1572096, 1, 2, 1572097, 1, 2, 1572098, 1, 2, 1572099, 1, 2, 1572100, 1, 2, 1572101, 1, 2, 1572102, 1, 2, 1572103, 1, 2, 1572104, 1, 2, 1572105, 1, 2, 1572106, 1, 2, 1572107, 1, 2, 1572108, 1, 2, 1572109, 1, 2, 1572110, 1, 2, 1572111, 1, 2, 1572112, 1, 2, 1572113, 1, 2, 1572114, 1, 2, 1572115, 1, 2, 1572116, 1, 2, 1572117, 1, 2, 1572118, 1, 2, 1572119, 1, 2, 1572120, 1, 2, 1572121, 1, 2, 1572122, 1, 2, 1572123, 1, 2, 1572124, 1, 2, 1572125, 1, 2, 1572126, 1, 2, 1572127, 1, 2, 1572128, 1, 2, 1572129, 1, 2, 1572130, 1, 2, 1572131, 1, 2, 1572132, 1, 2, 1572133, 1, 2, 1572134, 1, 2, 1572135, 1, 2, 1572136, 1, 2, 1572137, 1, 2, 1572138, 1, 2, 1572139, 1, 2, 1572140, 1, 2, 1572141, 1, 2, 1572142, 1, 2, 1572143, 1, 2, 1572144, 1, 2, 1572145, 1, 2, 1572146, 1, 2, 1572147, 1, 2, 1572148, 1, 2, 1572149, 1, 2, 1572150, 1, 2, 1572151, 1, 2, 1572152, 1, 2, 1572153, 1, 2, 1572154, 1, 2, 1572155, 1, 2, 1572156, 1, 2, 1572157, 1, 2, 1572158, 1, 2, 1572159, 1, 2, 1572160, 1, 2, 1572161, 1, 2, 1572162, 1, 2, 1572163, 1, 2, 1572164, 1, 2, 1572165, 1, 2, 1572166, 1, 2, 1572167, 1, 2, 1572168, 1, 2, 1572169, 1, 2, 1572170, 1, 2, 1572171, 1, 2, 1572172, 1, 2, 1572173, 1, 2, 1572174, 1, 2, 1572175, 1, 2, 1572176, 1, 2, 1572177, 1, 2, 1572178, 1, 2, 1572179, 1, 2, 1572180, 1, 2, 1572181, 1, 2, 1572182, 1, 2, 1572183, 1, 2, 1572184, 1, 2, 1572185, 1, 2, 1572186, 1, 2, 1572187, 1, 2, 1572188, 1, 2, 1572189, 1, 2, 1572190, 1, 2, 1572191, 1, 2, 1572192, 1, 2, 1572193, 1, 2, 1572194, 1, 2, 1572195, 1, 2, 1572196, 1, 2, 1572197, 1, 2, 1572198, 1, 2, 1572199, 1, 2, 1572200, 1, 2, 1572201, 1, 2, 1572202, 1, 2, 1572203, 1, 2, 1572204, 1, 2, 1572205, 1, 2, 1572206, 1, 2, 1572207, 1, 2, 1572208, 1, 2, 1572209, 1, 2, 1572210, 1, 2, 1572211, 1, 2, 1572212, 1, 2, 1572213, 1, 2, 1572214, 1, 2, 1572215, 1, 2, 1572216, 1, 2, 1572217, 1, 2, 1572218, 1, 2, 1572219, 1, 2, 1572220, 1, 2, 1572221, 1, 2, 1572222, 1, 2, 1572223, 1, 2, 1572224, 1, 2, 1572225, 1, 2, 1572226, 1, 2, 1572227, 1, 2, 1572228, 1, 2, 1572229, 1, 2, 1572230, 1, 2, 1572231, 1, 2, 1572232, 1, 2, 1572233, 1, 2, 1572234, 1, 2, 1572235, 1, 2, 1572236, 1, 2, 1572237, 1, 2, 1572238, 1, 2, 1572239, 1, 2, 1572240, 1, 2, 1572241, 1, 2, 1572242, 1, 2, 1572243, 1, 2, 1572244, 1, 2, 1572245, 1, 2, 1572246, 1, 2, 1572247, 1, 2, 1572248, 1, 2, 1572249, 1, 2, 1572250, 1, 2, 1572251, 1, 2, 1572252, 1, 2, 1572253, 1, 2, 1572254, 1, 2, 1572255, 1, 2, 1572256, 1, 2, 1572257, 1, 2, 1572258, 1, 2, 1572259, 1, 2, 1572260, 1, 2, 1572261, 1, 2, 1572262, 1, 2, 1572263, 1, 2, 1572264, 1, 2, 1572265, 1, 2, 1572266, 1, 2, 1572267, 1, 2, 1572268, 1, 2, 1572269, 1, 2, 1572270, 1, 2, 1572271, 1, 2, 1572272, 1, 2, 1572273, 1, 2, 1572274, 1, 2, 1572275, 1, 2, 1572276, 1, 2, 1572277, 1, 2, 1572278, 1, 2, 1572279, 1, 2, 1572280, 1, 2, 1572281, 1, 2, 1572282, 1, 2, 1572283, 1, 2, 1572284, 1, 2, 1572285, 1, 2, 1572286, 1, 2, 1572287, 1, 2, 1572288, 1, 2, 1572289, 1, 2, 1572290, 1, 2, 1572291, 1, 2, 1572292, 1, 2, 1572293, 1, 2, 1572294, 1, 2, 1572295, 1, 2, 1572296, 1, 2, 1572297, 1, 2, 1572298, 1, 2, 1572299, 1, 2, 1572300, 1, 2, 1572301, 1, 2, 1572302, 1, 2, 1572303, 1, 2, 1572304, 1, 2, 1572305, 1, 2, 1572306, 1, 2, 1572307, 1, 2, 1572308, 1, 2, 1572309, 1, 2, 1572310, 1, 2, 1572311, 1, 2, 1572312, 1, 2, 1572313, 1, 2, 1572314, 1, 2, 1572315, 1, 2, 1572316, 1, 2, 1572317, 1, 2, 1572318, 1, 2, 1572319, 1, 2, 1572320, 1, 2, 1572321, 1, 2, 1572322, 1, 2, 1572323, 1, 2, 1572324, 1, 2, 1572325, 1, 2, 1572326, 1, 2, 1572327, 1, 2, 1572328, 1, 2, 1572329, 1, 2, 1572330, 1, 2, 1572331, 1, 2, 1572332, 1, 2, 1572333, 1, 2, 1572334, 1, 2, 1572335, 1, 2, 1572336, 1, 2, 1572337, 1, 2, 1572338, 1, 2, 1572339, 1, 2, 1572340, 1, 2, 1572341, 1, 2, 1572342, 1, 2, 1572343, 1, 2, 1572344, 1, 2, 1572345, 1, 2, 1572346, 1, 2, 1572347, 1, 2, 1572348, 1, 2, 1572349, 1, 2, 1572350, 1, 2, 1572351, 1, 2, 1572352, 1, 2, 1572353, 1, 2, 1572354, 1, 2, 1572355, 1, 2, 1572356, 1, 2, 1572357, 1, 2, 1572358, 1, 2, 1572359, 1, 2, 1572360, 1, 2, 1572361, 1, 2, 1572362, 1, 2, 1572363, 1, 2, 1572364, 1, 2, 1572365, 1, 2, 1572366, 1, 2, 1572367, 1, 2, 1572368, 1, 2, 1572369, 1, 2, 1572370, 1, 2, 1572371, 1, 2, 1572372, 1, 2, 1572373, 1, 2, 1572374, 1, 2, 1572375, 1, 2, 1572376, 1, 2, 1572377, 1, 2, 1572378, 1, 2, 1572379, 1, 2, 1572380, 1, 2, 1572381, 1, 2, 1572382, 1, 2, 1572383, 1, 2, 1572384, 1, 2, 1572385, 1, 2, 1572386, 1, 2, 1572387, 1, 2, 1572388, 1, 2, 1572389, 1, 2, 1572390, 1, 2, 1572391, 1, 2, 1572392, 1, 2, 1572393, 1, 2, 1572394, 1, 2, 1572395, 1, 2, 1572396, 1, 2, 1572397, 1, 2, 1572398, 1, 2, 1572399, 1, 2, 1572400, 1, 2, 1572401, 1, 2, 1572402, 1, 2, 1572403, 1, 2, 1572404, 1, 2, 1572405, 1, 2, 1572406, 1, 2, 1572407, 1, 2, 1572408, 1, 2, 1572409, 1, 2, 1572410, 1, 2, 1572411, 1, 2, 1572412, 1, 2, 1572413, 1, 2, 1572414, 1, 2, 1572415, 1, 2, 1572416, 1, 2, 1572417, 1, 2, 1572418, 1, 2, 1572419, 1, 2, 1572420, 1, 2, 1572421, 1, 2, 1572422, 1, 2, 1572423, 1, 2, 1572424, 1, 2, 1572425, 1, 2, 1572426, 1, 2, 1572427, 1, 2, 1572428, 1, 2, 1572429, 1, 2, 1572430, 1, 2, 1572431, 1, 2, 1572432, 1, 2, 1572433, 1, 2, 1572434, 1, 2, 1572435, 1, 2, 1572436, 1, 2, 1572437, 1, 2, 1572438, 1, 2, 1572439, 1, 2, 1572440, 1, 2, 1572441, 1, 2, 1572442, 1, 2, 1572443, 1, 2, 1572444, 1, 2, 1572445, 1, 2, 1572446, 1, 2, 1572447, 1, 2, 1572448, 1, 2, 1572449, 1, 2, 1572450, 1, 2, 1572451, 1, 2, 1572452, 1, 2, 1572453, 1, 2, 1572454, 1, 2, 1572455, 1, 2, 1572456, 1, 2, 1572457, 1, 2, 1572458, 1, 2, 1572459, 1, 2, 1572460, 1, 2, 1572461, 1, 2, 1572462, 1, 2, 1572463, 1, 2, 1572464, 1, 2, 1572465, 1, 2, 1572466, 1, 2, 1572467, 1, 2, 1572468, 1, 2, 1572469, 1, 2, 1572470, 1, 2, 1572471, 1, 2, 1572472, 1, 2, 1572473, 1, 2, 1572474, 1, 2, 1572475, 1, 2, 1572476, 1, 2, 1572477, 1, 2, 1572478, 1, 2, 1572479, 1, 2, 1572480, 1, 2, 1572481, 1, 2, 1572482, 1, 2, 1572483, 1, 2, 1572484, 1, 2, 1572485, 1, 2, 1572486, 1, 2, 1572487, 1, 2, 1572488, 1, 2, 1572489, 1, 2, 1572490, 1, 2, 1572491, 1, 2, 1572492, 1, 2, 1572493, 1, 2, 1572494, 1, 2, 1572495, 1, 2, 1572496, 1, 2, 1572497, 1, 2, 1572498, 1, 2, 1572499, 1, 2, 1572500, 1, 2, 1572501, 1, 2, 1572502, 1, 2, 1572503, 1, 2, 1572504, 1, 2, 1572505, 1, 2, 1572506, 1, 2, 1572507, 1, 2, 1572508, 1, 2, 1572509, 1, 2, 1572510, 1, 2, 1572511, 1, 2, 1572512, 1, 2, 1572513, 1, 2, 1572514, 1, 2, 1572515, 1, 2, 1572516, 1, 2, 1572517, 1, 2, 1572518, 1, 2, 1572519, 1, 2, 1572520, 1, 2, 1572521, 1, 2, 1572522, 1, 2, 1572523, 1, 2, 1572524, 1, 2, 1572525, 1, 2, 1572526, 1, 2, 1572527, 1, 2, 1572528, 1, 2, 1572529, 1, 2, 1572530, 1, 2, 1572531, 1, 2, 1572532, 1, 2, 1572533, 1, 2, 1572534, 1, 2, 1572535, 1, 2, 1572536, 1, 2, 1572537, 1, 2, 1572538, 1, 2, 1572539, 1, 2, 1572540, 1, 2, 1572541, 1, 2, 1572542, 1, 2, 1572543, 1, 2, 1572544, 1, 2, 1572545, 1, 2, 1572546, 1, 2, 1572547, 1, 2, 1572548, 1, 2, 1572549, 1, 2, 1572550, 1, 2, 1572551, 1, 2, 1572552, 1, 2, 1572553, 1, 2, 1572554, 1, 2, 1572555, 1, 2, 1572556, 1, 2, 1572557, 1, 2, 1572558, 1, 2, 1572559, 1, 2, 1572560, 1, 2, 1572561, 1, 2, 1572562, 1, 2, 1572563, 1, 2, 1572564, 1, 2, 1572565, 1, 2, 1572566, 1, 2, 1572567, 1, 2, 1572568, 1, 2, 1572569, 1, 2, 1572570, 1, 2, 1572571, 1, 2, 1572572, 1, 2, 1572573, 1, 2, 1572574, 1, 2, 1572575, 1, 2, 1572576, 1, 2, 1572577, 1, 2, 1572578, 1, 2, 1572579, 1, 2, 1572580, 1, 2, 1572581, 1, 2, 1572582, 1, 2, 1572583, 1, 2, 1572584, 1, 2, 1572585, 1, 2, 1572586, 1, 2, 1572587, 1, 2, 1572588, 1, 2, 1572589, 1, 2, 1572590, 1, 2, 1572591, 1, 2, 1572592, 1, 2, 1572593, 1, 2, 1572594, 1, 2, 1572595, 1, 2, 1572596, 1, 2, 1572597, 1, 2, 1572598, 1, 2, 1572599, 1, 2, 1572600, 1, 2, 1572601, 1, 2, 1572602, 1, 2, 1572603, 1, 2, 1572604, 1, 2, 1572605, 1, 2, 1572606, 1, 2, 1572607, 1, 2, 1572608, 1, 2, 1572609, 1, 2, 1572610, 1, 2, 1572611, 1, 2, 1572612, 1, 2, 1572613, 1, 2, 1572614, 1, 2, 1572615, 1, 2, 1572616, 1, 2, 1572617, 1, 2, 1572618, 1, 2, 1572619, 1, 2, 1572620, 1, 2, 1572621, 1, 2, 1572622, 1, 2, 1572623, 1, 2, 1572624, 1, 2, 1572625, 1, 2, 1572626, 1, 2, 1572627, 1, 2, 1572628, 1, 2, 1572629, 1, 2, 1572630, 1, 2, 1572631, 1, 2, 1572632, 1, 2, 1572633, 1, 2, 1572634, 1, 2, 1572635, 1, 2, 1572636, 1, 2, 1572637, 1, 2, 1572638, 1, 2, 1572639, 1, 2, 1572640, 1, 2, 1572641, 1, 2, 1572642, 1, 2, 1572643, 1, 2, 1572644, 1, 2, 1572645, 1, 2, 1572646, 1, 2, 1572647, 1, 2, 1572648, 1, 2, 1572649, 1, 2, 1572650, 1, 2, 1572651, 1, 2, 1572652, 1, 2, 1572653, 1, 2, 1572654, 1, 2, 1572655, 1, 2, 1572656, 1, 2, 1572657, 1, 2, 1572658, 1, 2, 1572659, 1, 2, 1572660, 1, 2, 1572661, 1, 2, 1572662, 1, 2, 1572663, 1, 2, 1572664, 1, 2, 1572665, 1, 2, 1572666, 1, 2, 1572667, 1, 2, 1572668, 1, 2, 1572669, 1, 2, 1572670, 1, 2, 1572671, 1, 2, 1572672, 1, 2, 1572673, 1, 2, 1572674, 1, 2, 1572675, 1, 2, 1572676, 1, 2, 1572677, 1, 2, 1572678, 1, 2, 1572679, 1, 2, 1572680, 1, 2, 1572681, 1, 2, 1572682, 1, 2, 1572683, 1, 2, 1572684, 1, 2, 1572685, 1, 2, 1572686, 1, 2, 1572687, 1, 2, 1572688, 1, 2, 1572689, 1, 2, 1572690, 1, 2, 1572691, 1, 2, 1572692, 1, 2, 1572693, 1, 2, 1572694, 1, 2, 1572695, 1, 2, 1572696, 1, 2, 1572697, 1, 2, 1572698, 1, 2, 1572699, 1, 2, 1572700, 1, 2, 1572701, 1, 2, 1572702, 1, 2, 1572703, 1, 2, 1572704, 1, 2, 1572705, 1, 2, 1572706, 1, 2, 1572707, 1, 2, 1572708, 1, 2, 1572709, 1, 2, 1572710, 1, 2, 1572711, 1, 2, 1572712, 1, 2, 1572713, 1, 2, 1572714, 1, 2, 1572715, 1, 2, 1572716, 1, 2, 1572717, 1, 2, 1572718, 1, 2, 1572719, 1, 2, 1572720, 1, 2, 1572721, 1, 2, 1572722, 1, 2, 1572723, 1, 2, 1572724, 1, 2, 1572725, 1, 2, 1572726, 1, 2, 1572727, 1, 2, 1572728, 1, 2, 1572729, 1, 2, 1572730, 1, 2, 1572731, 1, 2, 1572732, 1, 2, 1572733, 1, 2, 1572734, 1, 2, 1572735, 1, 2, 1572736, 1, 2, 1572737, 1, 2, 1572738, 1, 2, 1572739, 1, 2, 1572740, 1, 2, 1572741, 1, 2, 1572742, 1, 2, 1572743, 1, 2, 1572744, 1, 2, 1572745, 1, 2, 1572746, 1, 2, 1572747, 1, 2, 1572748, 1, 2, 1572749, 1, 2, 1572750, 1, 2, 1572751, 1, 2, 1572752, 1, 2, 1572753, 1, 2, 1572754, 1, 2, 1572755, 1, 2, 1572756, 1, 2, 1572757, 1, 2, 1572758, 1, 2, 1572759, 1, 2, 1572760, 1, 2, 1572761, 1, 2, 1572762, 1, 2, 1572763, 1, 2, 1572764, 1, 2, 1572765, 1, 2, 1572766, 1, 2, 1572767, 1, 2, 1572768, 1, 2, 1572769, 1, 2, 1572770, 1, 2, 1572771, 1, 2, 1572772, 1, 2, 1572773, 1, 2, 1572774, 1, 2, 1572775, 1, 2, 1572776, 1, 2, 1572777, 1, 2, 1572778, 1, 2, 1572779, 1, 2, 1572780, 1, 2, 1572781, 1, 2, 1572782, 1, 2, 1572783, 1, 2, 1572784, 1, 2, 1572785, 1, 2, 1572786, 1, 2, 1572787, 1, 2, 1572788, 1, 2, 1572789, 1, 2, 1572790, 1, 2, 1572791, 1, 2, 1572792, 1, 2, 1572793, 1, 2, 1572794, 1, 2, 1572795, 1, 2, 1572796, 1, 2, 1572797, 1, 2, 1572798, 1, 2, 1572799, 1, 2, 1572800, 1, 2, 1572801, 1, 2, 1572802, 1, 2, 1572803, 1, 2, 1572804, 1, 2, 1572805, 1, 2, 1572806, 1, 2, 1572807, 1, 2, 1572808, 1, 2, 1572809, 1, 2, 1572810, 1, 2, 1572811, 1, 2, 1572812, 1, 2, 1572813, 1, 2, 1572814, 1, 2, 1572815, 1, 2, 1572816, 1, 2, 1572817, 1, 2, 1572818, 1, 2, 1572819, 1, 2, 1572820, 1, 2, 1572821, 1, 2, 1572822, 1, 2, 1572823, 1, 2, 1572824, 1, 2, 1572825, 1, 2, 1572826, 1, 2, 1572827, 1, 2, 1572828, 1, 2, 1572829, 1, 2, 1572830, 1, 2, 1572831, 1, 2, 1572832, 1, 2, 1572833, 1, 2, 1572834, 1, 2, 1572835, 1, 2, 1572836, 1, 2, 1572837, 1, 2, 1572838, 1, 2, 1572839, 1, 2, 1572840, 1, 2, 1572841, 1, 2, 1572842, 1, 2, 1572843, 1, 2, 1572844, 1, 2, 1572845, 1, 2, 1572846, 1, 2, 1572847, 1, 2, 1572848, 1, 2, 1572849, 1, 2, 1572850, 1, 2, 1572851, 1, 2, 1572852, 1, 2, 1572853, 1, 2, 1572854, 1, 2, 1572855, 1, 2, 1572856, 1, 2, 1572857, 1, 2, 1572858, 1, 2, 1572859, 1, 2, 1572860, 1, 2, 1572861, 1, 2, 1572862, 1, 2, 1572863, 1, 2, 1507328, 1, 2, 1507329, 1, 2, 1507330, 1, 2, 1507331, 1, 2, 1507332, 1, 2, 1507333, 1, 2, 1507334, 1, 2, 1507335, 1, 2, 1507336, 1, 2, 1507337, 1, 2, 1507338, 1, 2, 1507339, 1, 2, 1507340, 1, 2, 1507341, 1, 2, 1507342, 1, 2, 1507343, 1, 2, 1507344, 1, 2, 1507345, 1, 2, 1507346, 1, 2, 1507347, 1, 2, 1507348, 1, 2, 1507349, 1, 2, 1507350, 1, 2, 1507351, 1, 2, 1507352, 1, 2, 1507353, 1, 2, 1507354, 1, 2, 1507355, 1, 2, 1507356, 1, 2, 1507357, 1, 2, 1507358, 1, 2, 1507359, 1, 2, 1507360, 1, 2, 1507361, 1, 2, 1507362, 1, 2, 1507363, 1, 2, 1507364, 1, 2, 1507365, 1, 2, 1507366, 1, 2, 1507367, 1, 2, 1507368, 1, 2, 1507369, 1, 2, 1507370, 1, 2, 1507371, 1, 2, 1507372, 1, 2, 1507373, 1, 2, 1507374, 1, 2, 1507375, 1, 2, 1507376, 1, 2, 1507377, 1, 2, 1507378, 1, 2, 1507379, 1, 2, 1507380, 1, 2, 1507381, 1, 2, 1507382, 1, 2, 1507383, 1, 2, 1507384, 1, 2, 1507385, 1, 2, 1507386, 1, 2, 1507387, 1, 2, 1507388, 1, 2, 1507389, 1, 2, 1507390, 1, 2, 1507391, 1, 2, 1507392, 1, 2, 1507393, 1, 2, 1507394, 1, 2, 1507395, 1, 2, 1507396, 1, 2, 1507397, 1, 2, 1507398, 1, 2, 1507399, 1, 2, 1507400, 1, 2, 1507401, 1, 2, 1507402, 1, 2, 1507403, 1, 2, 1507404, 1, 2, 1507405, 1, 2, 1507406, 1, 2, 1507407, 1, 2, 1507408, 1, 2, 1507409, 1, 2, 1507410, 1, 2, 1507411, 1, 2, 1507412, 1, 2, 1507413, 1, 2, 1507414, 1, 2, 1507415, 1, 2, 1507416, 1, 2, 1507417, 1, 2, 1507418, 1, 2, 1507419, 1, 2, 1507420, 1, 2, 1507421, 1, 2, 1507422, 1, 2, 1507423, 1, 3, 1637274, 1, 65537, 1637275, 1, 65538, 1637276, 1, 65538, 1637277, 1, 65538, 1637278, 1, 65538, 1637279, 1, 65538, 1637280, 1, 65538, 1637281, 1, 65538, 1637282, 1, 65538, 1637283, 1, 65538, 1637284, 1, 65538, 1637285, 1, 65538, 1637286, 1, 65538, 1637287, 1, 65538, 1637288, 1, 65538, 1637289, 1, 65538, 1637290, 1, 65538, 1637291, 1, 65538, 1637292, 1, 65538, 1637293, 1, 65538, 1637294, 1, 65538, 1637295, 1, 65538, 1637296, 1, 65538, 1637297, 1, 65538, 1637298, 1, 65538, 1637299, 1, 65538, 1637300, 1, 65538, 1637301, 1, 65538, 1637302, 1, 65538, 1637303, 1, 65538, 1637304, 1, 65538, 1637305, 1, 65538, 1637306, 1, 65538, 1637307, 1, 65538, 1637308, 1, 65538, 1637309, 1, 65538, 1637310, 1, 65538, 1637311, 1, 65538, 1637312, 1, 65538, 1637313, 1, 65538, 1637314, 1, 65538, 1637315, 1, 65538, 1637316, 1, 65538, 1637317, 1, 65538, 1637318, 1, 65538, 1637319, 1, 65538, 1637320, 1, 65538, 1637321, 1, 65538, 1637322, 1, 65538, 1637323, 1, 65538, 1637324, 1, 65538, 1637325, 1, 65538, 1637326, 1, 65538, 1637327, 1, 65538, 1637328, 1, 65538, 1637329, 1, 65538, 1637330, 1, 65538, 1637331, 1, 65538, 1637332, 1, 65538, 1637333, 1, 65538, 1637334, 1, 65538, 1637335, 1, 65538, 1637336, 1, 65538, 1637337, 1, 65538, 1637338, 1, 65538, 1637339, 1, 65538, 1637340, 1, 65538, 1637341, 1, 65538, 1637342, 1, 65538, 1637343, 1, 65538, 1637344, 1, 65538, 1637345, 1, 65538, 1637346, 1, 65538, 1637347, 1, 65538, 1637348, 1, 65538, 1637349, 1, 65538, 1637350, 1, 65538, 1637351, 1, 65538, 1637352, 1, 65538, 1637353, 1, 65538, 1637354, 1, 65538, 1637355, 1, 65538, 1637356, 1, 65538, 1637357, 1, 65538, 1637358, 1, 65538, 1637359, 1, 65538, 1637360, 1, 65538, 1637361, 1, 65538, 1637362, 1, 65538, 1637363, 1, 65538, 1637364, 1, 65538, 1637365, 1, 65538, 1637366, 1, 65538, 1637367, 1, 65538, 1637368, 1, 65538, 1637369, 1, 65538, 1637370, 1, 65538, 1637371, 1, 65538, 1637372, 1, 65538, 1637373, 1, 65538, 1637374, 1, 65538, 1637375, 1, 65538, 1637376, 1, 65538, 1637377, 1, 65538, 1637378, 1, 65538, 1637379, 1, 65538, 1637380, 1, 65538, 1637381, 1, 65538, 1637382, 1, 65538, 1637383, 1, 65538, 1637384, 1, 65538, 1637385, 1, 65538, 1637386, 1, 65538, 1637387, 1, 65538, 1637388, 1, 65538, 1637389, 1, 65538, 1637390, 1, 65538, 1637391, 1, 65538, 1637392, 1, 65538, 1637393, 1, 65538, 1637394, 1, 65538, 1637395, 1, 65538, 1637396, 1, 65538, 1637397, 1, 65538, 1637398, 1, 65538, 1637399, 1, 65538, 1637400, 1, 65538, 1637401, 1, 65538, 1637402, 1, 65538, 1637403, 1, 65538, 1637404, 1, 65538, 1637405, 1, 65538, 1637406, 1, 65538, 1637407, 1, 65538, 1637408, 1, 65538, 1637409, 1, 65538, 1637410, 1, 65538, 1637411, 1, 65538, 1637412, 1, 65538, 1637413, 1, 65538, 1637414, 1, 65538, 1637415, 1, 65538, 1637416, 1, 65538, 1637417, 1, 65538, 1637418, 1, 65538, 1637419, 1, 65538, 1637420, 1, 65538, 1637421, 1, 65538, 1637422, 1, 65538, 1637423, 1, 65538, 1637424, 1, 65538, 1637425, 1, 65538, 1637426, 1, 65538, 1637427, 1, 65538, 1637428, 1, 65538, 1637429, 1, 65538, 1637430, 1, 65538, 1637431, 1, 65538, 1637432, 1, 65538, 1637433, 1, 65538, 1637434, 1, 65538, 1637435, 1, 65538, 1637436, 1, 65538, 1637437, 1, 65538, 1637438, 1, 65538, 1637439, 1, 65538, 1637440, 1, 65538, 1637441, 1, 65538, 1637442, 1, 65538, 1637443, 1, 65538, 1637444, 1, 65538, 1637445, 1, 65538, 1637446, 1, 65538, 1637447, 1, 65538, 1637448, 1, 65538, 1637449, 1, 65538, 1637450, 1, 65538, 1637451, 1, 65538, 1637452, 1, 65538, 1637453, 1, 65538, 1637454, 1, 65538, 1637455, 1, 65538, 1637456, 1, 65538, 1637457, 1, 65538, 1637458, 1, 65538, 1637459, 1, 65538, 1637460, 1, 65538, 1637461, 1, 65538, 1637462, 1, 65538, 1637463, 1, 65538, 1637464, 1, 65538, 1637465, 1, 65538, 1637466, 1, 65538, 1637467, 1, 65538, 1637468, 1, 65538, 1637469, 1, 65538, 1637470, 1, 65538, 1637471, 1, 65538, 1637472, 1, 65538, 1637473, 1, 65538, 1637474, 1, 65538, 1637475, 1, 65538, 1637476, 1, 65538, 1637477, 1, 65538, 1637478, 1, 65538, 1637479, 1, 65538, 1637480, 1, 65538, 1637481, 1, 65538, 1637482, 1, 65538, 1637483, 1, 65538, 1637484, 1, 65538, 1637485, 1, 65538, 1637486, 1, 65538, 1637487, 1, 65538, 1637488, 1, 65538, 1637489, 1, 65538, 1637490, 1, 65538, 1637491, 1, 65538, 1637492, 1, 65538, 1637493, 1, 65538, 1637494, 1, 65538, 1637495, 1, 65538, 1637496, 1, 65538, 1637497, 1, 65538, 1637498, 1, 65538, 1637499, 1, 65538, 1637500, 1, 65538, 1637501, 1, 65538, 1637502, 1, 65538, 1637503, 1, 65538, 1637504, 1, 65538, 1637505, 1, 65538, 1637506, 1, 65538, 1637507, 1, 65538, 1637508, 1, 65538, 1637509, 1, 65538, 1637510, 1, 65538, 1637511, 1, 65538, 1637512, 1, 65538, 1637513, 1, 65538, 1637514, 1, 65538, 1637515, 1, 65538, 1637516, 1, 65538, 1637517, 1, 65538, 1637518, 1, 65538, 1637519, 1, 65538, 1637520, 1, 65538, 1637521, 1, 65538, 1637522, 1, 65538, 1637523, 1, 65538, 1637524, 1, 65538, 1637525, 1, 65538, 1637526, 1, 65538, 1637527, 1, 65538, 1637528, 1, 65538, 1637529, 1, 65538, 1637530, 1, 65538, 1637531, 1, 65538, 1637532, 1, 65538, 1637533, 1, 65538, 1637534, 1, 65538, 1637535, 1, 65538, 1637536, 1, 65538, 1637537, 1, 65538, 1637538, 1, 65538, 1637539, 1, 65538, 1637540, 1, 65538, 1637541, 1, 65538, 1637542, 1, 65538, 1637543, 1, 65538, 1637544, 1, 65538, 1637545, 1, 65538, 1637546, 1, 65538, 1637547, 1, 65538, 1637548, 1, 65538, 1637549, 1, 65538, 1637550, 1, 65538, 1637551, 1, 65538, 1637552, 1, 65538, 1637553, 1, 65538, 1637554, 1, 65538, 1637555, 1, 65538, 1637556, 1, 65538, 1637557, 1, 65538, 1637558, 1, 65538, 1637559, 1, 65538, 1637560, 1, 65538, 1637561, 1, 65538, 1637562, 1, 65538, 1637563, 1, 65538, 1637564, 1, 65538, 1637565, 1, 65538, 1637566, 1, 65538, 1637567, 1, 65538, 1637568, 1, 65538, 1637569, 1, 65538, 1637570, 1, 65538, 1637571, 1, 65538, 1637572, 1, 65538, 1637573, 1, 65538, 1637574, 1, 65538, 1637575, 1, 65538, 1637576, 1, 65538, 1637577, 1, 65538, 1637578, 1, 65538, 1637579, 1, 65538, 1637580, 1, 65538, 1637581, 1, 65538, 1637582, 1, 65538, 1637583, 1, 65538, 1637584, 1, 65538, 1637585, 1, 65538, 1637586, 1, 65538, 1637587, 1, 65538, 1637588, 1, 65538, 1637589, 1, 65538, 1637590, 1, 65538, 1637591, 1, 65538, 1637592, 1, 65538, 1637593, 1, 65538, 1637594, 1, 65538, 1637595, 1, 65538, 1637596, 1, 65538, 1637597, 1, 65538, 1637598, 1, 65538, 1637599, 1, 65538, 1637600, 1, 65538, 1637601, 1, 65538, 1637602, 1, 65538, 1637603, 1, 65538, 1637604, 1, 65538, 1637605, 1, 65538, 1637606, 1, 65538, 1637607, 1, 65538, 1637608, 1, 65538, 1637609, 1, 65538, 1637610, 1, 65538, 1637611, 1, 65538, 1637612, 1, 65538, 1637613, 1, 65538, 1637614, 1, 65538, 1637615, 1, 65538, 1637616, 1, 65538, 1637617, 1, 65538, 1637618, 1, 65538, 1637619, 1, 65538, 1637620, 1, 65538, 1637621, 1, 65538, 1637622, 1, 65538, 1637623, 1, 65538, 1637624, 1, 65538, 1637625, 1, 65538, 1637626, 1, 65538, 1637627, 1, 65538, 1637628, 1, 65538, 1637629, 1, 65538, 1637630, 1, 65538, 1637631, 1, 65538, 1637632, 1, 65538, 1637633, 1, 65538, 1637634, 1, 65538, 1637635, 1, 65538, 1637636, 1, 65538, 1637637, 1, 65538, 1637638, 1, 65538, 1637639, 1, 65538, 1637640, 1, 65538, 1637641, 1, 65538, 1637642, 1, 65538, 1637643, 1, 65538, 1637644, 1, 65538, 1637645, 1, 65538, 1637646, 1, 65538, 1637647, 1, 65538, 1637648, 1, 65538, 1637649, 1, 65538, 1637650, 1, 65538, 1637651, 1, 65538, 1637652, 1, 65538, 1637653, 1, 65538, 1637654, 1, 65538, 1637655, 1, 65538, 1637656, 1, 65538, 1637657, 1, 65538, 1637658, 1, 65538, 1637659, 1, 65538, 1637660, 1, 65538, 1637661, 1, 65538, 1637662, 1, 65538, 1637663, 1, 65538, 1637664, 1, 65538, 1637665, 1, 65538, 1637666, 1, 65538, 1637667, 1, 65538, 1637668, 1, 65538, 1637669, 1, 65538, 1637670, 1, 65538, 1637671, 1, 65538, 1637672, 1, 65538, 1637673, 1, 65538, 1637674, 1, 65538, 1637675, 1, 65538, 1637676, 1, 65538, 1637677, 1, 65538, 1637678, 1, 65538, 1637679, 1, 65538, 1637680, 1, 65538, 1637681, 1, 65538, 1637682, 1, 65538, 1637683, 1, 65538, 1637684, 1, 65538, 1637685, 1, 65538, 1637686, 1, 65538, 1637687, 1, 65538, 1637688, 1, 65538, 1637689, 1, 65538, 1637690, 1, 65538, 1637691, 1, 65538, 1637692, 1, 65538, 1637693, 1, 65538, 1637694, 1, 65538, 1637695, 1, 65538, 1637696, 1, 65538, 1637697, 1, 65538, 1637698, 1, 65538, 1637699, 1, 65538, 1637700, 1, 65538, 1637701, 1, 65538, 1637702, 1, 65538, 1637703, 1, 65538, 1637704, 1, 65538, 1637705, 1, 65538, 1637706, 1, 65538, 1637707, 1, 65538, 1637708, 1, 65538, 1637709, 1, 65538, 1637710, 1, 65538, 1637711, 1, 65538, 1637712, 1, 65538, 1637713, 1, 65538, 1637714, 1, 65538, 1637715, 1, 65538, 1637716, 1, 65538, 1637717, 1, 65538, 1637718, 1, 65538, 1637719, 1, 65538, 1637720, 1, 65538, 1637721, 1, 65538, 1637722, 1, 65538, 1637723, 1, 65538, 1637724, 1, 65538, 1637725, 1, 65538, 1637726, 1, 65538, 1637727, 1, 65538, 1637728, 1, 65538, 1637729, 1, 65538, 1637730, 1, 65538, 1637731, 1, 65538, 1637732, 1, 65538, 1637733, 1, 65538, 1637734, 1, 65538, 1637735, 1, 65538, 1637736, 1, 65538, 1637737, 1, 65538, 1637738, 1, 65538, 1637739, 1, 65538, 1637740, 1, 65538, 1637741, 1, 65538, 1637742, 1, 65538, 1637743, 1, 65538, 1637744, 1, 65538, 1637745, 1, 65538, 1637746, 1, 65538, 1637747, 1, 65538, 1637748, 1, 65538, 1637749, 1, 65538, 1637750, 1, 65538, 1637751, 1, 65538, 1637752, 1, 65538, 1637753, 1, 65538, 1637754, 1, 65538, 1637755, 1, 65538, 1637756, 1, 65538, 1637757, 1, 65538, 1637758, 1, 65538, 1637759, 1, 65538, 1637760, 1, 65538, 1637761, 1, 65538, 1637762, 1, 65538, 1637763, 1, 65538, 1637764, 1, 65538, 1637765, 1, 65538, 1637766, 1, 65538, 1637767, 1, 65538, 1637768, 1, 65538, 1637769, 1, 65538, 1637770, 1, 65538, 1637771, 1, 65538, 1637772, 1, 65538, 1637773, 1, 65538, 1637774, 1, 65538, 1637775, 1, 65538, 1637776, 1, 65538, 1637777, 1, 65538, 1637778, 1, 65538, 1637779, 1, 65538, 1637780, 1, 65538, 1637781, 1, 65538, 1637782, 1, 65538, 1637783, 1, 65538, 1637784, 1, 65538, 1637785, 1, 65538, 1637786, 1, 65538, 1637787, 1, 65538, 1637788, 1, 65538, 1637789, 1, 65538, 1637790, 1, 65538, 1637791, 1, 65538, 1637792, 1, 65538, 1637793, 1, 65538, 1637794, 1, 65538, 1637795, 1, 65538, 1637796, 1, 65538, 1637797, 1, 65538, 1637798, 1, 65538, 1637799, 1, 65538, 1637800, 1, 65538, 1637801, 1, 65538, 1637802, 1, 65538, 1637803, 1, 65538, 1637804, 1, 65538, 1637805, 1, 65538, 1637806, 1, 65538, 1637807, 1, 65538, 1637808, 1, 65538, 1637809, 1, 65538, 1637810, 1, 65538, 1637811, 1, 65538, 1637812, 1, 65538, 1637813, 1, 65538, 1637814, 1, 65538, 1637815, 1, 65538, 1637816, 1, 65538, 1637817, 1, 65538, 1637818, 1, 65538, 1637819, 1, 65538, 1637820, 1, 65538, 1637821, 1, 65538, 1637822, 1, 65538, 1637823, 1, 65538, 1637824, 1, 65538, 1637825, 1, 65538, 1637826, 1, 65538, 1637827, 1, 65538, 1637828, 1, 65538, 1637829, 1, 65538, 1637830, 1, 65538, 1637831, 1, 65538, 1637832, 1, 65538, 1637833, 1, 65538, 1637834, 1, 65538, 1637835, 1, 65538, 1637836, 1, 65538, 1637837, 1, 65538, 1637838, 1, 65538, 1637839, 1, 65538, 1637840, 1, 65538, 1637841, 1, 65538, 1637842, 1, 65538, 1637843, 1, 65538, 1637844, 1, 65538, 1637845, 1, 65538, 1637846, 1, 65538, 1637847, 1, 65538, 1637848, 1, 65538, 1637849, 1, 65538, 1637850, 1, 65538, 1637851, 1, 65538, 1637852, 1, 65538, 1637853, 1, 65538, 1637854, 1, 65538, 1637855, 1, 65538, 1637856, 1, 65538, 1637857, 1, 65538, 1637858, 1, 65538, 1637859, 1, 65538, 1637860, 1, 65538, 1637861, 1, 65538, 1637862, 1, 65538, 1637863, 1, 65538, 1637864, 1, 65538, 1637865, 1, 65538, 1637866, 1, 65538, 1637867, 1, 65538, 1637868, 1, 65538, 1637869, 1, 65538, 1637870, 1, 65538, 1637871, 1, 65538, 1637872, 1, 65538, 1637873, 1, 65538, 1637874, 1, 65538, 1637875, 1, 65538, 1637876, 1, 65538, 1637877, 1, 65538, 1637878, 1, 65538, 1637879, 1, 65538, 1637880, 1, 65538, 1637881, 1, 65538, 1637882, 1, 65538, 1637883, 1, 65538, 1637884, 1, 65538, 1637885, 1, 65538, 1637886, 1, 65538, 1637887, 1, 65538, 1637888, 1, 65538, 1637889, 1, 65538, 1637890, 1, 65538, 1637891, 1, 65538, 1637892, 1, 65538, 1637893, 1, 65538, 1637894, 1, 65538, 1637895, 1, 65538, 1637896, 1, 65538, 1637897, 1, 65538, 1637898, 1, 65538, 1637899, 1, 65538, 1637900, 1, 65538, 1637901, 1, 65538, 1637902, 1, 65538, 1637903, 1, 65538, 1637904, 1, 65538, 1637905, 1, 65538, 1637906, 1, 65538, 1637907, 1, 65538, 1637908, 1, 65538, 1637909, 1, 65538, 1637910, 1, 65538, 1637911, 1, 65538, 1637912, 1, 65538, 1637913, 1, 65538, 1637914, 1, 65538, 1637915, 1, 65538, 1637916, 1, 65538, 1637917, 1, 65538, 1637918, 1, 65538, 1637919, 1, 65538, 1637920, 1, 65538, 1637921, 1, 65538, 1637922, 1, 65538, 1637923, 1, 65538, 1637924, 1, 65538, 1637925, 1, 65538, 1637926, 1, 65538, 1637927, 1, 65538, 1637928, 1, 65538, 1637929, 1, 65538, 1637930, 1, 65538, 1637931, 1, 65538, 1637932, 1, 65538, 1637933, 1, 65538, 1637934, 1, 65538, 1637935, 1, 65538, 1637936, 1, 65538, 1637937, 1, 65538, 1637938, 1, 65538, 1637939, 1, 65538, 1637940, 1, 65538, 1637941, 1, 65538, 1637942, 1, 65538, 1637943, 1, 65538, 1637944, 1, 65538, 1637945, 1, 65538, 1637946, 1, 65538, 1637947, 1, 65538, 1637948, 1, 65538, 1637949, 1, 65538, 1637950, 1, 65538, 1637951, 1, 65538, 1637952, 1, 65538, 1637953, 1, 65538, 1637954, 1, 65538, 1637955, 1, 65538, 1637956, 1, 65538, 1637957, 1, 65538, 1637958, 1, 65538, 1637959, 1, 65538, 1637960, 1, 65538, 1637961, 1, 65538, 1637962, 1, 65538, 1637963, 1, 65538, 1637964, 1, 65538, 1637965, 1, 65538, 1637966, 1, 65538, 1637967, 1, 65538, 1637968, 1, 65538, 1637969, 1, 65538, 1637970, 1, 65538, 1637971, 1, 65538, 1637972, 1, 65538, 1637973, 1, 65538, 1637974, 1, 65538, 1637975, 1, 65538, 1637976, 1, 65538, 1637977, 1, 65538, 1637978, 1, 65538, 1637979, 1, 65538, 1637980, 1, 65538, 1637981, 1, 65538, 1637982, 1, 65538, 1637983, 1, 65538, 1637984, 1, 65538, 1637985, 1, 65538, 1637986, 1, 65538, 1637987, 1, 65538, 1637988, 1, 65538, 1637989, 1, 65538, 1637990, 1, 65538, 1637991, 1, 65538, 1637992, 1, 65538, 1637993, 1, 65538, 1637994, 1, 65538, 1637995, 1, 65538, 1637996, 1, 65538, 1637997, 1, 65538, 1637998, 1, 65538, 1637999, 1, 65538, 1638000, 1, 65538, 1638001, 1, 65538, 1638002, 1, 65538, 1638003, 1, 65538, 1638004, 1, 65538, 1638005, 1, 65538, 1638006, 1, 65538, 1638007, 1, 65538, 1638008, 1, 65538, 1638009, 1, 65538, 1638010, 1, 65538, 1638011, 1, 65538, 1638012, 1, 65538, 1638013, 1, 65538, 1638014, 1, 65538, 1638015, 1, 65538, 1638016, 1, 65538, 1638017, 1, 65538, 1638018, 1, 65538, 1638019, 1, 65538, 1638020, 1, 65538, 1638021, 1, 65538, 1638022, 1, 65538, 1638023, 1, 65538, 1638024, 1, 65538, 1638025, 1, 65538, 1638026, 1, 65538, 1638027, 1, 65538, 1638028, 1, 65538, 1638029, 1, 65538, 1638030, 1, 65538, 1638031, 1, 65538, 1638032, 1, 65538, 1638033, 1, 65538, 1638034, 1, 65538, 1638035, 1, 65538, 1638036, 1, 65538, 1638037, 1, 65538, 1638038, 1, 65538, 1638039, 1, 65538, 1638040, 1, 65538, 1638041, 1, 65538, 1638042, 1, 65538, 1638043, 1, 65538, 1638044, 1, 65538, 1638045, 1, 65538, 1638046, 1, 65538, 1638047, 1, 65538, 1638048, 1, 65538, 1638049, 1, 65538, 1638050, 1, 65538, 1638051, 1, 65538, 1638052, 1, 65538, 1638053, 1, 65538, 1638054, 1, 65538, 1638055, 1, 65538, 1638056, 1, 65538, 1638057, 1, 65538, 1638058, 1, 65538, 1638059, 1, 65538, 1638060, 1, 65538, 1638061, 1, 65538, 1638062, 1, 65538, 1638063, 1, 65538, 1638064, 1, 65538, 1638065, 1, 65538, 1638066, 1, 65538, 1638067, 1, 65538, 1638068, 1, 65538, 1638069, 1, 65538, 1638070, 1, 65538, 1638071, 1, 65538, 1638072, 1, 65538, 1638073, 1, 65538, 1638074, 1, 65538, 1638075, 1, 65538, 1638076, 1, 65538, 1638077, 1, 65538, 1638078, 1, 65538, 1638079, 1, 65538, 1638080, 1, 65538, 1638081, 1, 65538, 1638082, 1, 65538, 1638083, 1, 65538, 1638084, 1, 65538, 1638085, 1, 65538, 1638086, 1, 65538, 1638087, 1, 65538, 1638088, 1, 65538, 1638089, 1, 65538, 1638090, 1, 65538, 1638091, 1, 65538, 1638092, 1, 65538, 1638093, 1, 65538, 1638094, 1, 65538, 1638095, 1, 65538, 1638096, 1, 65538, 1638097, 1, 65538, 1638098, 1, 65538, 1638099, 1, 65538, 1638100, 1, 65538, 1638101, 1, 65538, 1638102, 1, 65538, 1638103, 1, 65538, 1638104, 1, 65538, 1638105, 1, 65538, 1638106, 1, 65538, 1638107, 1, 65538, 1638108, 1, 65538, 1638109, 1, 65538, 1638110, 1, 65538, 1638111, 1, 65538, 1638112, 1, 65538, 1638113, 1, 65538, 1638114, 1, 65538, 1638115, 1, 65538, 1638116, 1, 65538, 1638117, 1, 65538, 1638118, 1, 65538, 1638119, 1, 65538, 1638120, 1, 65538, 1638121, 1, 65538, 1638122, 1, 65538, 1638123, 1, 65538, 1638124, 1, 65538, 1638125, 1, 65538, 1638126, 1, 65538, 1638127, 1, 65538, 1638128, 1, 65538, 1638129, 1, 65538, 1638130, 1, 65538, 1638131, 1, 65538, 1638132, 1, 65538, 1638133, 1, 65538, 1638134, 1, 65538, 1638135, 1, 65538, 1638136, 1, 65538, 1638137, 1, 65538, 1638138, 1, 65538, 1638139, 1, 65538, 1638140, 1, 65538, 1638141, 1, 65538, 1638142, 1, 65538, 1638143, 1, 65538, 1638144, 1, 65538, 1638145, 1, 65538, 1638146, 1, 65538, 1638147, 1, 65538, 1638148, 1, 65538, 1638149, 1, 65538, 1638150, 1, 65538, 1638151, 1, 65538, 1638152, 1, 65538, 1638153, 1, 65538, 1638154, 1, 65538, 1638155, 1, 65538, 1638156, 1, 65538, 1638157, 1, 65538, 1638158, 1, 65538, 1638159, 1, 65538, 1638160, 1, 65538, 1638161, 1, 65538, 1638162, 1, 65538, 1638163, 1, 65538, 1638164, 1, 65538, 1638165, 1, 65538, 1638166, 1, 65538, 1638167, 1, 65538, 1638168, 1, 65538, 1638169, 1, 65538, 1638170, 1, 65538, 1638171, 1, 65538, 1638172, 1, 65538, 1638173, 1, 65538, 1638174, 1, 65538, 1638175, 1, 65538, 1638176, 1, 65538, 1638177, 1, 65538, 1638178, 1, 65538, 1638179, 1, 65538, 1638180, 1, 65538, 1638181, 1, 65538, 1638182, 1, 65538, 1638183, 1, 65538, 1638184, 1, 65538, 1638185, 1, 65538, 1638186, 1, 65538, 1638187, 1, 65538, 1638188, 1, 65538, 1638189, 1, 65538, 1638190, 1, 65538, 1638191, 1, 65538, 1638192, 1, 65538, 1638193, 1, 65538, 1638194, 1, 65538, 1638195, 1, 65538, 1638196, 1, 65538, 1638197, 1, 65538, 1638198, 1, 65538, 1638199, 1, 65538, 1638200, 1, 65538, 1638201, 1, 65538, 1638202, 1, 65538, 1638203, 1, 65538, 1638204, 1, 65538, 1638205, 1, 65538, 1638206, 1, 65538, 1638207, 1, 65538, 1638208, 1, 65538, 1638209, 1, 65538, 1638210, 1, 65538, 1638211, 1, 65538, 1638212, 1, 65538, 1638213, 1, 65538, 1638214, 1, 65538, 1638215, 1, 65538, 1638216, 1, 65538, 1638217, 1, 65538, 1638218, 1, 65538, 1638219, 1, 65538, 1638220, 1, 65538, 1638221, 1, 65538, 1638222, 1, 65538, 1638223, 1, 65538, 1638224, 1, 65538, 1638225, 1, 65538, 1638226, 1, 65538, 1638227, 1, 65538, 1638228, 1, 65538, 1638229, 1, 65538, 1638230, 1, 65538, 1638231, 1, 65538, 1638232, 1, 65538, 1638233, 1, 65538, 1638234, 1, 65538, 1638235, 1, 65538, 1638236, 1, 65538, 1638237, 1, 65538, 1638238, 1, 65538, 1638239, 1, 65538, 1638240, 1, 65538, 1638241, 1, 65538, 1638242, 1, 65538, 1638243, 1, 65538, 1638244, 1, 65538, 1638245, 1, 65538, 1638246, 1, 65538, 1638247, 1, 65538, 1638248, 1, 65538, 1638249, 1, 65538, 1638250, 1, 65538, 1638251, 1, 65538, 1638252, 1, 65538, 1638253, 1, 65538, 1638254, 1, 65538, 1638255, 1, 65538, 1638256, 1, 65538, 1638257, 1, 65538, 1638258, 1, 65538, 1638259, 1, 65538, 1638260, 1, 65538, 1638261, 1, 65538, 1638262, 1, 65538, 1638263, 1, 65538, 1638264, 1, 65538, 1638265, 1, 65538, 1638266, 1, 65538, 1638267, 1, 65538, 1638268, 1, 65538, 1638269, 1, 65538, 1638270, 1, 65538, 1638271, 1, 65538, 1638272, 1, 65538, 1638273, 1, 65538, 1638274, 1, 65538, 1638275, 1, 65538, 1638276, 1, 65538, 1638277, 1, 65538, 1638278, 1, 65538, 1638279, 1, 65538, 1638280, 1, 65538, 1638281, 1, 65538, 1638282, 1, 65538, 1638283, 1, 65538, 1638284, 1, 65538, 1638285, 1, 65538, 1638286, 1, 65538, 1638287, 1, 65538, 1638288, 1, 65538, 1638289, 1, 65538, 1638290, 1, 65538, 1638291, 1, 65538, 1638292, 1, 65538, 1638293, 1, 65538, 1638294, 1, 65538, 1638295, 1, 65538, 1638296, 1, 65538, 1638297, 1, 65538, 1638298, 1, 65538, 1638299, 1, 65538, 1638300, 1, 65538, 1638301, 1, 65538, 1638302, 1, 65538, 1638303, 1, 65538, 1638304, 1, 65538, 1638305, 1, 65538, 1638306, 1, 65538, 1638307, 1, 65538, 1638308, 1, 65538, 1638309, 1, 65538, 1638310, 1, 65538, 1638311, 1, 65538, 1638312, 1, 65538, 1638313, 1, 65538, 1638314, 1, 65538, 1638315, 1, 65538, 1638316, 1, 65538, 1638317, 1, 65538, 1638318, 1, 65538, 1638319, 1, 65538, 1638320, 1, 65538, 1638321, 1, 65538, 1638322, 1, 65538, 1638323, 1, 65538, 1638324, 1, 65538, 1638325, 1, 65538, 1638326, 1, 65538, 1638327, 1, 65538, 1638328, 1, 65538, 1638329, 1, 65538, 1638330, 1, 65538, 1638331, 1, 65538, 1638332, 1, 65538, 1638333, 1, 65538, 1638334, 1, 65538, 1638335, 1, 65538, 1638336, 1, 65538, 1638337, 1, 65538, 1638338, 1, 65538, 1638339, 1, 65538, 1638340, 1, 65538, 1638341, 1, 65538, 1638342, 1, 65538, 1638343, 1, 65538, 1638344, 1, 65538, 1638345, 1, 65538, 1638346, 1, 65538, 1638347, 1, 65538, 1638348, 1, 65538, 1638349, 1, 65538, 1638350, 1, 65538, 1638351, 1, 65538, 1638352, 1, 65538, 1638353, 1, 65538, 1638354, 1, 65538, 1638355, 1, 65538, 1638356, 1, 65538, 1638357, 1, 65538, 1638358, 1, 65538, 1638359, 1, 65538, 1638360, 1, 65538, 1638361, 1, 65538, 1638362, 1, 65538, 1638363, 1, 65538, 1638364, 1, 65538, 1638365, 1, 65538, 1638366, 1, 65538, 1638367, 1, 65538, 1638368, 1, 65538, 1638369, 1, 65538, 1638370, 1, 65538, 1638371, 1, 65538, 1638372, 1, 65538, 1638373, 1, 65538, 1638374, 1, 65538, 1638375, 1, 65538, 1638376, 1, 65538, 1638377, 1, 65538, 1638378, 1, 65538, 1638379, 1, 65538, 1638380, 1, 65538, 1638381, 1, 65538, 1638382, 1, 65538, 1638383, 1, 65538, 1638384, 1, 65538, 1638385, 1, 65538, 1638386, 1, 65538, 1638387, 1, 65538, 1638388, 1, 65538, 1638389, 1, 65538, 1638390, 1, 65538, 1638391, 1, 65538, 1638392, 1, 65538, 1638393, 1, 65538, 1638394, 1, 65538, 1638395, 1, 65538, 1638396, 1, 65538, 1638397, 1, 65538, 1638398, 1, 65538, 1638399, 1, 65538, 1572864, 1, 65538, 1572865, 1, 65538, 1572866, 1, 65538, 1572867, 1, 65538, 1572868, 1, 65538, 1572869, 1, 65538, 1572870, 1, 65538, 1572871, 1, 65538, 1572872, 1, 65538, 1572873, 1, 65538, 1572874, 1, 65538, 1572875, 1, 65538, 1572876, 1, 65538, 1572877, 1, 65538, 1572878, 1, 65538, 1572879, 1, 65538, 1572880, 1, 65538, 1572881, 1, 65538, 1572882, 1, 65538, 1572883, 1, 65538, 1572884, 1, 65538, 1572885, 1, 65538, 1572886, 1, 65538, 1572887, 1, 65538, 1572888, 1, 65538, 1572889, 1, 65538, 1572890, 1, 65538, 1572891, 1, 65538, 1572892, 1, 65538, 1572893, 1, 65538, 1572894, 1, 65538, 1572895, 1, 65538, 1572896, 1, 65538, 1572897, 1, 65538, 1572898, 1, 65538, 1572899, 1, 65538, 1572900, 1, 65538, 1572901, 1, 65538, 1572902, 1, 65538, 1572903, 1, 65538, 1572904, 1, 65538, 1572905, 1, 65538, 1572906, 1, 65538, 1572907, 1, 65538, 1572908, 1, 65538, 1572909, 1, 65538, 1572910, 1, 65538, 1572911, 1, 65538, 1572912, 1, 65538, 1572913, 1, 65538, 1572914, 1, 65538, 1572915, 1, 65538, 1572916, 1, 65538, 1572917, 1, 65538, 1572918, 1, 65538, 1572919, 1, 65538, 1572920, 1, 65538, 1572921, 1, 65538, 1572922, 1, 65538, 1572923, 1, 65538, 1572924, 1, 65538, 1572925, 1, 65538, 1572926, 1, 65538, 1572927, 1, 65538, 1572928, 1, 65538, 1572929, 1, 65538, 1572930, 1, 65538, 1572931, 1, 65538, 1572932, 1, 65538, 1572933, 1, 65538, 1572934, 1, 65538, 1572935, 1, 65538, 1572936, 1, 65538, 1572937, 1, 65538, 1572938, 1, 65538, 1572939, 1, 65538, 1572940, 1, 65538, 1572941, 1, 65538, 1572942, 1, 65538, 1572943, 1, 65538, 1572944, 1, 65538, 1572945, 1, 65538, 1572946, 1, 65538, 1572947, 1, 65538, 1572948, 1, 65538, 1572949, 1, 65538, 1572950, 1, 65538, 1572951, 1, 65538, 1572952, 1, 65538, 1572953, 1, 65538, 1572954, 1, 65538, 1572955, 1, 65538, 1572956, 1, 65538, 1572957, 1, 65538, 1572958, 1, 65538, 1572959, 1, 65539, 1702810, 1, 131073, 1702811, 1, 131074, 1702812, 1, 131074, 1702813, 1, 131074, 1702814, 1, 131074, 1702815, 1, 131074, 1702816, 1, 131074, 1702817, 1, 131074, 1702818, 1, 131074, 1702819, 1, 131074, 1702820, 1, 131074, 1702821, 1, 131074, 1702822, 1, 131074, 1702823, 1, 131074, 1702824, 1, 131074, 1702825, 1, 131074, 1702826, 1, 131074, 1702827, 1, 131074, 1702828, 1, 131074, 1702829, 1, 131074, 1702830, 1, 131074, 1702831, 1, 131074, 1702832, 1, 131074, 1702833, 1, 131074, 1702834, 1, 131074, 1702835, 1, 131074, 1702836, 1, 131074, 1702837, 1, 131074, 1702838, 1, 131074, 1702839, 1, 131074, 1702840, 1, 131074, 1702841, 1, 131074, 1702842, 1, 131074, 1702843, 1, 131074, 1702844, 1, 131074, 1702845, 1, 131074, 1702846, 1, 131074, 1702847, 1, 131074, 1702848, 1, 131074, 1702849, 1, 131074, 1702850, 1, 131074, 1702851, 1, 131074, 1702852, 1, 131074, 1702853, 1, 131074, 1702854, 1, 131074, 1702855, 1, 131074, 1702856, 1, 131074, 1702857, 1, 131074, 1702858, 1, 131074, 1702859, 1, 131074, 1702860, 1, 131074, 1702861, 1, 131074, 1702862, 1, 131074, 1702863, 1, 131074, 1702864, 1, 131074, 1702865, 1, 131074, 1702866, 1, 131074, 1702867, 1, 131074, 1702868, 1, 131074, 1702869, 1, 131074, 1702870, 1, 131074, 1702871, 1, 131074, 1702872, 1, 131074, 1702873, 1, 131074, 1702874, 1, 131074, 1702875, 1, 131074, 1702876, 1, 131074, 1702877, 1, 131074, 1702878, 1, 131074, 1702879, 1, 131074, 1702880, 1, 131074, 1702881, 1, 131074, 1702882, 1, 131074, 1702883, 1, 131074, 1702884, 1, 131074, 1702885, 1, 131074, 1702886, 1, 131074, 1702887, 1, 131074, 1702888, 1, 131074, 1702889, 1, 131074, 1702890, 1, 131074, 1702891, 1, 131074, 1702892, 1, 131074, 1702893, 1, 131074, 1702894, 1, 131074, 1702895, 1, 131074, 1702896, 1, 131074, 1702897, 1, 131074, 1702898, 1, 131074, 1702899, 1, 131074, 1702900, 1, 131074, 1702901, 1, 131074, 1702902, 1, 131074, 1702903, 1, 131074, 1702904, 1, 131074, 1702905, 1, 131074, 1702906, 1, 131074, 1702907, 1, 131074, 1702908, 1, 131074, 1702909, 1, 131074, 1702910, 1, 131074, 1702911, 1, 131074, 1702912, 1, 131074, 1702913, 1, 131074, 1702914, 1, 131074, 1702915, 1, 131074, 1702916, 1, 131074, 1702917, 1, 131074, 1702918, 1, 131074, 1702919, 1, 131074, 1702920, 1, 131074, 1702921, 1, 131074, 1702922, 1, 131074, 1702923, 1, 131074, 1702924, 1, 131074, 1702925, 1, 131074, 1702926, 1, 131074, 1702927, 1, 131074, 1702928, 1, 131074, 1702929, 1, 131074, 1702930, 1, 131074, 1702931, 1, 131074, 1702932, 1, 131074, 1702933, 1, 131074, 1702934, 1, 131074, 1702935, 1, 131074, 1702936, 1, 131074, 1702937, 1, 131074, 1702938, 1, 131074, 1702939, 1, 131074, 1702940, 1, 131074, 1702941, 1, 131074, 1702942, 1, 131074, 1702943, 1, 131074, 1702944, 1, 131074, 1702945, 1, 131074, 1702946, 1, 131074, 1702947, 1, 131074, 1702948, 1, 131074, 1702949, 1, 131074, 1702950, 1, 131074, 1702951, 1, 131074, 1702952, 1, 131074, 1702953, 1, 131074, 1702954, 1, 131074, 1702955, 1, 131074, 1702956, 1, 131074, 1702957, 1, 131074, 1702958, 1, 131074, 1702959, 1, 131074, 1702960, 1, 131074, 1702961, 1, 131074, 1702962, 1, 131074, 1702963, 1, 131074, 1702964, 1, 131074, 1702965, 1, 131074, 1702966, 1, 131074, 1702967, 1, 131074, 1702968, 1, 131074, 1702969, 1, 131074, 1702970, 1, 131074, 1702971, 1, 131074, 1702972, 1, 131074, 1702973, 1, 131074, 1702974, 1, 131074, 1702975, 1, 131074, 1702976, 1, 131074, 1702977, 1, 131074, 1702978, 1, 131074, 1702979, 1, 131074, 1702980, 1, 131074, 1702981, 1, 131074, 1702982, 1, 131074, 1702983, 1, 131074, 1702984, 1, 131074, 1702985, 1, 131074, 1702986, 1, 131074, 1702987, 1, 131074, 1702988, 1, 131074, 1702989, 1, 131074, 1702990, 1, 131074, 1702991, 1, 131074, 1702992, 1, 131074, 1702993, 1, 131074, 1702994, 1, 131074, 1702995, 1, 131074, 1702996, 1, 131074, 1702997, 1, 131074, 1702998, 1, 131074, 1702999, 1, 131074, 1703000, 1, 131074, 1703001, 1, 131074, 1703002, 1, 131074, 1703003, 1, 131074, 1703004, 1, 131074, 1703005, 1, 131074, 1703006, 1, 131074, 1703007, 1, 131074, 1703008, 1, 131074, 1703009, 1, 131074, 1703010, 1, 131074, 1703011, 1, 131074, 1703012, 1, 131074, 1703013, 1, 131074, 1703014, 1, 131074, 1703015, 1, 131074, 1703016, 1, 131074, 1703017, 1, 131074, 1703018, 1, 131074, 1703019, 1, 131074, 1703020, 1, 131074, 1703021, 1, 131074, 1703022, 1, 131074, 1703023, 1, 131074, 1703024, 1, 131074, 1703025, 1, 131074, 1703026, 1, 131074, 1703027, 1, 131074, 1703028, 1, 131074, 1703029, 1, 131074, 1703030, 1, 131074, 1703031, 1, 131074, 1703032, 1, 131074, 1703033, 1, 131074, 1703034, 1, 131074, 1703035, 1, 131074, 1703036, 1, 131074, 1703037, 1, 131074, 1703038, 1, 131074, 1703039, 1, 131074, 1703040, 1, 131074, 1703041, 1, 131074, 1703042, 1, 131074, 1703043, 1, 131074, 1703044, 1, 131074, 1703045, 1, 131074, 1703046, 1, 131074, 1703047, 1, 131074, 1703048, 1, 131074, 1703049, 1, 131074, 1703050, 1, 131074, 1703051, 1, 131074, 1703052, 1, 131074, 1703053, 1, 131074, 1703054, 1, 131074, 1703055, 1, 131074, 1703056, 1, 131074, 1703057, 1, 131074, 1703058, 1, 131074, 1703059, 1, 131074, 1703060, 1, 131074, 1703061, 1, 131074, 1703062, 1, 131074, 1703063, 1, 131074, 1703064, 1, 131074, 1703065, 1, 131074, 1703066, 1, 131074, 1703067, 1, 131074, 1703068, 1, 131074, 1703069, 1, 131074, 1703070, 1, 131074, 1703071, 1, 131074, 1703072, 1, 131074, 1703073, 1, 131074, 1703074, 1, 131074, 1703075, 1, 131074, 1703076, 1, 131074, 1703077, 1, 131074, 1703078, 1, 131074, 1703079, 1, 131074, 1703080, 1, 131074, 1703081, 1, 131074, 1703082, 1, 131074, 1703083, 1, 131074, 1703084, 1, 131074, 1703085, 1, 131074, 1703086, 1, 131074, 1703087, 1, 131074, 1703088, 1, 131074, 1703089, 1, 131074, 1703090, 1, 131074, 1703091, 1, 131074, 1703092, 1, 131074, 1703093, 1, 131074, 1703094, 1, 131074, 1703095, 1, 131074, 1703096, 1, 131074, 1703097, 1, 131074, 1703098, 1, 131074, 1703099, 1, 131074, 1703100, 1, 131074, 1703101, 1, 131074, 1703102, 1, 131074, 1703103, 1, 131074, 1703104, 1, 131074, 1703105, 1, 131074, 1703106, 1, 131074, 1703107, 1, 131074, 1703108, 1, 131074, 1703109, 1, 131074, 1703110, 1, 131074, 1703111, 1, 131074, 1703112, 1, 131074, 1703113, 1, 131074, 1703114, 1, 131074, 1703115, 1, 131074, 1703116, 1, 131074, 1703117, 1, 131074, 1703118, 1, 131074, 1703119, 1, 131074, 1703120, 1, 131074, 1703121, 1, 131074, 1703122, 1, 131074, 1703123, 1, 131074, 1703124, 1, 131074, 1703125, 1, 131074, 1703126, 1, 131074, 1703127, 1, 131074, 1703128, 1, 131074, 1703129, 1, 131074, 1703130, 1, 131074, 1703131, 1, 131074, 1703132, 1, 131074, 1703133, 1, 131074, 1703134, 1, 131074, 1703135, 1, 131074, 1703136, 1, 131074, 1703137, 1, 131074, 1703138, 1, 131074, 1703139, 1, 131074, 1703140, 1, 131074, 1703141, 1, 131074, 1703142, 1, 131074, 1703143, 1, 131074, 1703144, 1, 131074, 1703145, 1, 131074, 1703146, 1, 131074, 1703147, 1, 131074, 1703148, 1, 131074, 1703149, 1, 131074, 1703150, 1, 131074, 1703151, 1, 131074, 1703152, 1, 131074, 1703153, 1, 131074, 1703154, 1, 131074, 1703155, 1, 131074, 1703156, 1, 131074, 1703157, 1, 131074, 1703158, 1, 131074, 1703159, 1, 131074, 1703160, 1, 131074, 1703161, 1, 131074, 1703162, 1, 131074, 1703163, 1, 131074, 1703164, 1, 131074, 1703165, 1, 131074, 1703166, 1, 131074, 1703167, 1, 131074, 1703168, 1, 131074, 1703169, 1, 131074, 1703170, 1, 131074, 1703171, 1, 131074, 1703172, 1, 131074, 1703173, 1, 131074, 1703174, 1, 131074, 1703175, 1, 131074, 1703176, 1, 131074, 1703177, 1, 131074, 1703178, 1, 131074, 1703179, 1, 131074, 1703180, 1, 131074, 1703181, 1, 131074, 1703182, 1, 131074, 1703183, 1, 131074, 1703184, 1, 131074, 1703185, 1, 131074, 1703186, 1, 131074, 1703187, 1, 131074, 1703188, 1, 131074, 1703189, 1, 131074, 1703190, 1, 131074, 1703191, 1, 131074, 1703192, 1, 131074, 1703193, 1, 131074, 1703194, 1, 131074, 1703195, 1, 131074, 1703196, 1, 131074, 1703197, 1, 131074, 1703198, 1, 131074, 1703199, 1, 131074, 1703200, 1, 131074, 1703201, 1, 131074, 1703202, 1, 131074, 1703203, 1, 131074, 1703204, 1, 131074, 1703205, 1, 131074, 1703206, 1, 131074, 1703207, 1, 131074, 1703208, 1, 131074, 1703209, 1, 131074, 1703210, 1, 131074, 1703211, 1, 131074, 1703212, 1, 131074, 1703213, 1, 131074, 1703214, 1, 131074, 1703215, 1, 131074, 1703216, 1, 131074, 1703217, 1, 131074, 1703218, 1, 131074, 1703219, 1, 131074, 1703220, 1, 131074, 1703221, 1, 131074, 1703222, 1, 131074, 1703223, 1, 131074, 1703224, 1, 131074, 1703225, 1, 131074, 1703226, 1, 131074, 1703227, 1, 131074, 1703228, 1, 131074, 1703229, 1, 131074, 1703230, 1, 131074, 1703231, 1, 131074, 1703232, 1, 131074, 1703233, 1, 131074, 1703234, 1, 131074, 1703235, 1, 131074, 1703236, 1, 131074, 1703237, 1, 131074, 1703238, 1, 131074, 1703239, 1, 131074, 1703240, 1, 131074, 1703241, 1, 131074, 1703242, 1, 131074, 1703243, 1, 131074, 1703244, 1, 131074, 1703245, 1, 131074, 1703246, 1, 131074, 1703247, 1, 131074, 1703248, 1, 131074, 1703249, 1, 131074, 1703250, 1, 131074, 1703251, 1, 131074, 1703252, 1, 131074, 1703253, 1, 131074, 1703254, 1, 131074, 1703255, 1, 131074, 1703256, 1, 131074, 1703257, 1, 131074, 1703258, 1, 131074, 1703259, 1, 131074, 1703260, 1, 131074, 1703261, 1, 131074, 1703262, 1, 131074, 1703263, 1, 131074, 1703264, 1, 131074, 1703265, 1, 131074, 1703266, 1, 131074, 1703267, 1, 131074, 1703268, 1, 131074, 1703269, 1, 131074, 1703270, 1, 131074, 1703271, 1, 131074, 1703272, 1, 131074, 1703273, 1, 131074, 1703274, 1, 131074, 1703275, 1, 131074, 1703276, 1, 131074, 1703277, 1, 131074, 1703278, 1, 131074, 1703279, 1, 131074, 1703280, 1, 131074, 1703281, 1, 131074, 1703282, 1, 131074, 1703283, 1, 131074, 1703284, 1, 131074, 1703285, 1, 131074, 1703286, 1, 131074, 1703287, 1, 131074, 1703288, 1, 131074, 1703289, 1, 131074, 1703290, 1, 131074, 1703291, 1, 131074, 1703292, 1, 131074, 1703293, 1, 131074, 1703294, 1, 131074, 1703295, 1, 131074, 1703296, 1, 131074, 1703297, 1, 131074, 1703298, 1, 131074, 1703299, 1, 131074, 1703300, 1, 131074, 1703301, 1, 131074, 1703302, 1, 131074, 1703303, 1, 131074, 1703304, 1, 131074, 1703305, 1, 131074, 1703306, 1, 131074, 1703307, 1, 131074, 1703308, 1, 131074, 1703309, 1, 131074, 1703310, 1, 131074, 1703311, 1, 131074, 1703312, 1, 131074, 1703313, 1, 131074, 1703314, 1, 131074, 1703315, 1, 131074, 1703316, 1, 131074, 1703317, 1, 131074, 1703318, 1, 131074, 1703319, 1, 131074, 1703320, 1, 131074, 1703321, 1, 131074, 1703322, 1, 131074, 1703323, 1, 131074, 1703324, 1, 131074, 1703325, 1, 131074, 1703326, 1, 131074, 1703327, 1, 131074, 1703328, 1, 131074, 1703329, 1, 131074, 1703330, 1, 131074, 1703331, 1, 131074, 1703332, 1, 131074, 1703333, 1, 131074, 1703334, 1, 131074, 1703335, 1, 131074, 1703336, 1, 131074, 1703337, 1, 131074, 1703338, 1, 131074, 1703339, 1, 131074, 1703340, 1, 131074, 1703341, 1, 131074, 1703342, 1, 131074, 1703343, 1, 131074, 1703344, 1, 131074, 1703345, 1, 131074, 1703346, 1, 131074, 1703347, 1, 131074, 1703348, 1, 131074, 1703349, 1, 131074, 1703350, 1, 131074, 1703351, 1, 131074, 1703352, 1, 131074, 1703353, 1, 131074, 1703354, 1, 131074, 1703355, 1, 131074, 1703356, 1, 131074, 1703357, 1, 131074, 1703358, 1, 131074, 1703359, 1, 131074, 1703360, 1, 131074, 1703361, 1, 131074, 1703362, 1, 131074, 1703363, 1, 131074, 1703364, 1, 131074, 1703365, 1, 131074, 1703366, 1, 131074, 1703367, 1, 131074, 1703368, 1, 131074, 1703369, 1, 131074, 1703370, 1, 131074, 1703371, 1, 131074, 1703372, 1, 131074, 1703373, 1, 131074, 1703374, 1, 131074, 1703375, 1, 131074, 1703376, 1, 131074, 1703377, 1, 131074, 1703378, 1, 131074, 1703379, 1, 131074, 1703380, 1, 131074, 1703381, 1, 131074, 1703382, 1, 131074, 1703383, 1, 131074, 1703384, 1, 131074, 1703385, 1, 131074, 1703386, 1, 131074, 1703387, 1, 131074, 1703388, 1, 131074, 1703389, 1, 131074, 1703390, 1, 131074, 1703391, 1, 131074, 1703392, 1, 131074, 1703393, 1, 131074, 1703394, 1, 131074, 1703395, 1, 131074, 1703396, 1, 131074, 1703397, 1, 131074, 1703398, 1, 131074, 1703399, 1, 131074, 1703400, 1, 131074, 1703401, 1, 131074, 1703402, 1, 131074, 1703403, 1, 131074, 1703404, 1, 131074, 1703405, 1, 131074, 1703406, 1, 131074, 1703407, 1, 131074, 1703408, 1, 131074, 1703409, 1, 131074, 1703410, 1, 131074, 1703411, 1, 131074, 1703412, 1, 131074, 1703413, 1, 131074, 1703414, 1, 131074, 1703415, 1, 131074, 1703416, 1, 131074, 1703417, 1, 131074, 1703418, 1, 131074, 1703419, 1, 131074, 1703420, 1, 131074, 1703421, 1, 131074, 1703422, 1, 131074, 1703423, 1, 131074, 1703424, 1, 131074, 1703425, 1, 131074, 1703426, 1, 131074, 1703427, 1, 131074, 1703428, 1, 131074, 1703429, 1, 131074, 1703430, 1, 131074, 1703431, 1, 131074, 1703432, 1, 131074, 1703433, 1, 131074, 1703434, 1, 131074, 1703435, 1, 131074, 1703436, 1, 131074, 1703437, 1, 131074, 1703438, 1, 131074, 1703439, 1, 131074, 1703440, 1, 131074, 1703441, 1, 131074, 1703442, 1, 131074, 1703443, 1, 131074, 1703444, 1, 131074, 1703445, 1, 131074, 1703446, 1, 131074, 1703447, 1, 131074, 1703448, 1, 131074, 1703449, 1, 131074, 1703450, 1, 131074, 1703451, 1, 131074, 1703452, 1, 131074, 1703453, 1, 131074, 1703454, 1, 131074, 1703455, 1, 131074, 1703456, 1, 131074, 1703457, 1, 131074, 1703458, 1, 131074, 1703459, 1, 131074, 1703460, 1, 131074, 1703461, 1, 131074, 1703462, 1, 131074, 1703463, 1, 131074, 1703464, 1, 131074, 1703465, 1, 131074, 1703466, 1, 131074, 1703467, 1, 131074, 1703468, 1, 131074, 1703469, 1, 131074, 1703470, 1, 131074, 1703471, 1, 131074, 1703472, 1, 131074, 1703473, 1, 131074, 1703474, 1, 131074, 1703475, 1, 131074, 1703476, 1, 131074, 1703477, 1, 131074, 1703478, 1, 131074, 1703479, 1, 131074, 1703480, 1, 131074, 1703481, 1, 131074, 1703482, 1, 131074, 1703483, 1, 131074, 1703484, 1, 131074, 1703485, 1, 131074, 1703486, 1, 131074, 1703487, 1, 131074, 1703488, 1, 131074, 1703489, 1, 131074, 1703490, 1, 131074, 1703491, 1, 131074, 1703492, 1, 131074, 1703493, 1, 131074, 1703494, 1, 131074, 1703495, 1, 131074, 1703496, 1, 131074, 1703497, 1, 131074, 1703498, 1, 131074, 1703499, 1, 131074, 1703500, 1, 131074, 1703501, 1, 131074, 1703502, 1, 131074, 1703503, 1, 131074, 1703504, 1, 131074, 1703505, 1, 131074, 1703506, 1, 131074, 1703507, 1, 131074, 1703508, 1, 131074, 1703509, 1, 131074, 1703510, 1, 131074, 1703511, 1, 131074, 1703512, 1, 131074, 1703513, 1, 131074, 1703514, 1, 131074, 1703515, 1, 131074, 1703516, 1, 131074, 1703517, 1, 131074, 1703518, 1, 131074, 1703519, 1, 131074, 1703520, 1, 131074, 1703521, 1, 131074, 1703522, 1, 131074, 1703523, 1, 131074, 1703524, 1, 131074, 1703525, 1, 131074, 1703526, 1, 131074, 1703527, 1, 131074, 1703528, 1, 131074, 1703529, 1, 131074, 1703530, 1, 131074, 1703531, 1, 131074, 1703532, 1, 131074, 1703533, 1, 131074, 1703534, 1, 131074, 1703535, 1, 131074, 1703536, 1, 131074, 1703537, 1, 131074, 1703538, 1, 131074, 1703539, 1, 131074, 1703540, 1, 131074, 1703541, 1, 131074, 1703542, 1, 131074, 1703543, 1, 131074, 1703544, 1, 131074, 1703545, 1, 131074, 1703546, 1, 131074, 1703547, 1, 131074, 1703548, 1, 131074, 1703549, 1, 131074, 1703550, 1, 131074, 1703551, 1, 131074, 1703552, 1, 131074, 1703553, 1, 131074, 1703554, 1, 131074, 1703555, 1, 131074, 1703556, 1, 131074, 1703557, 1, 131074, 1703558, 1, 131074, 1703559, 1, 131074, 1703560, 1, 131074, 1703561, 1, 131074, 1703562, 1, 131074, 1703563, 1, 131074, 1703564, 1, 131074, 1703565, 1, 131074, 1703566, 1, 131074, 1703567, 1, 131074, 1703568, 1, 131074, 1703569, 1, 131074, 1703570, 1, 131074, 1703571, 1, 131074, 1703572, 1, 131074, 1703573, 1, 131074, 1703574, 1, 131074, 1703575, 1, 131074, 1703576, 1, 131074, 1703577, 1, 131074, 1703578, 1, 131074, 1703579, 1, 131074, 1703580, 1, 131074, 1703581, 1, 131074, 1703582, 1, 131074, 1703583, 1, 131074, 1703584, 1, 131074, 1703585, 1, 131074, 1703586, 1, 131074, 1703587, 1, 131074, 1703588, 1, 131074, 1703589, 1, 131074, 1703590, 1, 131074, 1703591, 1, 131074, 1703592, 1, 131074, 1703593, 1, 131074, 1703594, 1, 131074, 1703595, 1, 131074, 1703596, 1, 131074, 1703597, 1, 131074, 1703598, 1, 131074, 1703599, 1, 131074, 1703600, 1, 131074, 1703601, 1, 131074, 1703602, 1, 131074, 1703603, 1, 131074, 1703604, 1, 131074, 1703605, 1, 131074, 1703606, 1, 131074, 1703607, 1, 131074, 1703608, 1, 131074, 1703609, 1, 131074, 1703610, 1, 131074, 1703611, 1, 131074, 1703612, 1, 131074, 1703613, 1, 131074, 1703614, 1, 131074, 1703615, 1, 131074, 1703616, 1, 131074, 1703617, 1, 131074, 1703618, 1, 131074, 1703619, 1, 131074, 1703620, 1, 131074, 1703621, 1, 131074, 1703622, 1, 131074, 1703623, 1, 131074, 1703624, 1, 131074, 1703625, 1, 131074, 1703626, 1, 131074, 1703627, 1, 131074, 1703628, 1, 131074, 1703629, 1, 131074, 1703630, 1, 131074, 1703631, 1, 131074, 1703632, 1, 131074, 1703633, 1, 131074, 1703634, 1, 131074, 1703635, 1, 131074, 1703636, 1, 131074, 1703637, 1, 131074, 1703638, 1, 131074, 1703639, 1, 131074, 1703640, 1, 131074, 1703641, 1, 131074, 1703642, 1, 131074, 1703643, 1, 131074, 1703644, 1, 131074, 1703645, 1, 131074, 1703646, 1, 131074, 1703647, 1, 131074, 1703648, 1, 131074, 1703649, 1, 131074, 1703650, 1, 131074, 1703651, 1, 131074, 1703652, 1, 131074, 1703653, 1, 131074, 1703654, 1, 131074, 1703655, 1, 131074, 1703656, 1, 131074, 1703657, 1, 131074, 1703658, 1, 131074, 1703659, 1, 131074, 1703660, 1, 131074, 1703661, 1, 131074, 1703662, 1, 131074, 1703663, 1, 131074, 1703664, 1, 131074, 1703665, 1, 131074, 1703666, 1, 131074, 1703667, 1, 131074, 1703668, 1, 131074, 1703669, 1, 131074, 1703670, 1, 131074, 1703671, 1, 131074, 1703672, 1, 131074, 1703673, 1, 131074, 1703674, 1, 131074, 1703675, 1, 131074, 1703676, 1, 131074, 1703677, 1, 131074, 1703678, 1, 131074, 1703679, 1, 131074, 1703680, 1, 131074, 1703681, 1, 131074, 1703682, 1, 131074, 1703683, 1, 131074, 1703684, 1, 131074, 1703685, 1, 131074, 1703686, 1, 131074, 1703687, 1, 131074, 1703688, 1, 131074, 1703689, 1, 131074, 1703690, 1, 131074, 1703691, 1, 131074, 1703692, 1, 131074, 1703693, 1, 131074, 1703694, 1, 131074, 1703695, 1, 131074, 1703696, 1, 131074, 1703697, 1, 131074, 1703698, 1, 131074, 1703699, 1, 131074, 1703700, 1, 131074, 1703701, 1, 131074, 1703702, 1, 131074, 1703703, 1, 131074, 1703704, 1, 131074, 1703705, 1, 131074, 1703706, 1, 131074, 1703707, 1, 131074, 1703708, 1, 131074, 1703709, 1, 131074, 1703710, 1, 131074, 1703711, 1, 131074, 1703712, 1, 131074, 1703713, 1, 131074, 1703714, 1, 131074, 1703715, 1, 131074, 1703716, 1, 131074, 1703717, 1, 131074, 1703718, 1, 131074, 1703719, 1, 131074, 1703720, 1, 131074, 1703721, 1, 131074, 1703722, 1, 131074, 1703723, 1, 131074, 1703724, 1, 131074, 1703725, 1, 131074, 1703726, 1, 131074, 1703727, 1, 131074, 1703728, 1, 131074, 1703729, 1, 131074, 1703730, 1, 131074, 1703731, 1, 131074, 1703732, 1, 131074, 1703733, 1, 131074, 1703734, 1, 131074, 1703735, 1, 131074, 1703736, 1, 131074, 1703737, 1, 131074, 1703738, 1, 131074, 1703739, 1, 131074, 1703740, 1, 131074, 1703741, 1, 131074, 1703742, 1, 131074, 1703743, 1, 131074, 1703744, 1, 131074, 1703745, 1, 131074, 1703746, 1, 131074, 1703747, 1, 131074, 1703748, 1, 131074, 1703749, 1, 131074, 1703750, 1, 131074, 1703751, 1, 131074, 1703752, 1, 131074, 1703753, 1, 131074, 1703754, 1, 131074, 1703755, 1, 131074, 1703756, 1, 131074, 1703757, 1, 131074, 1703758, 1, 131074, 1703759, 1, 131074, 1703760, 1, 131074, 1703761, 1, 131074, 1703762, 1, 131074, 1703763, 1, 131074, 1703764, 1, 131074, 1703765, 1, 131074, 1703766, 1, 131074, 1703767, 1, 131074, 1703768, 1, 131074, 1703769, 1, 131074, 1703770, 1, 131074, 1703771, 1, 131074, 1703772, 1, 131074, 1703773, 1, 131074, 1703774, 1, 131074, 1703775, 1, 131074, 1703776, 1, 131074, 1703777, 1, 131074, 1703778, 1, 131074, 1703779, 1, 131074, 1703780, 1, 131074, 1703781, 1, 131074, 1703782, 1, 131074, 1703783, 1, 131074, 1703784, 1, 131074, 1703785, 1, 131074, 1703786, 1, 131074, 1703787, 1, 131074, 1703788, 1, 131074, 1703789, 1, 131074, 1703790, 1, 131074, 1703791, 1, 131074, 1703792, 1, 131074, 1703793, 1, 131074, 1703794, 1, 131074, 1703795, 1, 131074, 1703796, 1, 131074, 1703797, 1, 131074, 1703798, 1, 131074, 1703799, 1, 131074, 1703800, 1, 131074, 1703801, 1, 131074, 1703802, 1, 131074, 1703803, 1, 131074, 1703804, 1, 131074, 1703805, 1, 131074, 1703806, 1, 131074, 1703807, 1, 131074, 1703808, 1, 131074, 1703809, 1, 131074, 1703810, 1, 131074, 1703811, 1, 131074, 1703812, 1, 131074, 1703813, 1, 131074, 1703814, 1, 131074, 1703815, 1, 131074, 1703816, 1, 131074, 1703817, 1, 131074, 1703818, 1, 131074, 1703819, 1, 131074, 1703820, 1, 131074, 1703821, 1, 131074, 1703822, 1, 131074, 1703823, 1, 131074, 1703824, 1, 131074, 1703825, 1, 131074, 1703826, 1, 131074, 1703827, 1, 131074, 1703828, 1, 131074, 1703829, 1, 131074, 1703830, 1, 131074, 1703831, 1, 131074, 1703832, 1, 131074, 1703833, 1, 131074, 1703834, 1, 131074, 1703835, 1, 131074, 1703836, 1, 131074, 1703837, 1, 131074, 1703838, 1, 131074, 1703839, 1, 131074, 1703840, 1, 131074, 1703841, 1, 131074, 1703842, 1, 131074, 1703843, 1, 131074, 1703844, 1, 131074, 1703845, 1, 131074, 1703846, 1, 131074, 1703847, 1, 131074, 1703848, 1, 131074, 1703849, 1, 131074, 1703850, 1, 131074, 1703851, 1, 131074, 1703852, 1, 131074, 1703853, 1, 131074, 1703854, 1, 131074, 1703855, 1, 131074, 1703856, 1, 131074, 1703857, 1, 131074, 1703858, 1, 131074, 1703859, 1, 131074, 1703860, 1, 131074, 1703861, 1, 131074, 1703862, 1, 131074, 1703863, 1, 131074, 1703864, 1, 131074, 1703865, 1, 131074, 1703866, 1, 131074, 1703867, 1, 131074, 1703868, 1, 131074, 1703869, 1, 131074, 1703870, 1, 131074, 1703871, 1, 131074, 1703872, 1, 131074, 1703873, 1, 131074, 1703874, 1, 131074, 1703875, 1, 131074, 1703876, 1, 131074, 1703877, 1, 131074, 1703878, 1, 131074, 1703879, 1, 131074, 1703880, 1, 131074, 1703881, 1, 131074, 1703882, 1, 131074, 1703883, 1, 131074, 1703884, 1, 131074, 1703885, 1, 131074, 1703886, 1, 131074, 1703887, 1, 131074, 1703888, 1, 131074, 1703889, 1, 131074, 1703890, 1, 131074, 1703891, 1, 131074, 1703892, 1, 131074, 1703893, 1, 131074, 1703894, 1, 131074, 1703895, 1, 131074, 1703896, 1, 131074, 1703897, 1, 131074, 1703898, 1, 131074, 1703899, 1, 131074, 1703900, 1, 131074, 1703901, 1, 131074, 1703902, 1, 131074, 1703903, 1, 131074, 1703904, 1, 131074, 1703905, 1, 131074, 1703906, 1, 131074, 1703907, 1, 131074, 1703908, 1, 131074, 1703909, 1, 131074, 1703910, 1, 131074, 1703911, 1, 131074, 1703912, 1, 131074, 1703913, 1, 131074, 1703914, 1, 131074, 1703915, 1, 131074, 1703916, 1, 131074, 1703917, 1, 131074, 1703918, 1, 131074, 1703919, 1, 131074, 1703920, 1, 131074, 1703921, 1, 131074, 1703922, 1, 131074, 1703923, 1, 131074, 1703924, 1, 131074, 1703925, 1, 131074, 1703926, 1, 131074, 1703927, 1, 131074, 1703928, 1, 131074, 1703929, 1, 131074, 1703930, 1, 131074, 1703931, 1, 131074, 1703932, 1, 131074, 1703933, 1, 131074, 1703934, 1, 131074, 1703935, 1, 131074, 1638400, 1, 131074, 1638401, 1, 131074, 1638402, 1, 131074, 1638403, 1, 131074, 1638404, 1, 131074, 1638405, 1, 131074, 1638406, 1, 131074, 1638407, 1, 131074, 1638408, 1, 131074, 1638409, 1, 131074, 1638410, 1, 131074, 1638411, 1, 131074, 1638412, 1, 131074, 1638413, 1, 131074, 1638414, 1, 131074, 1638415, 1, 131074, 1638416, 1, 131074, 1638417, 1, 131074, 1638418, 1, 131074, 1638419, 1, 131074, 1638420, 1, 131074, 1638421, 1, 131074, 1638422, 1, 131074, 1638423, 1, 131074, 1638424, 1, 131074, 1638425, 1, 131074, 1638426, 1, 131074, 1638427, 1, 131074, 1638428, 1, 131074, 1638429, 1, 131074, 1638430, 1, 131074, 1638431, 1, 131074, 1638432, 1, 131074, 1638433, 1, 131074, 1638434, 1, 131074, 1638435, 1, 131074, 1638436, 1, 131074, 1638437, 1, 131074, 1638438, 1, 131074, 1638439, 1, 131074, 1638440, 1, 131074, 1638441, 1, 131074, 1638442, 1, 131074, 1638443, 1, 131074, 1638444, 1, 131074, 1638445, 1, 131074, 1638446, 1, 131074, 1638447, 1, 131074, 1638448, 1, 131074, 1638449, 1, 131074, 1638450, 1, 131074, 1638451, 1, 131074, 1638452, 1, 131074, 1638453, 1, 131074, 1638454, 1, 131074, 1638455, 1, 131074, 1638456, 1, 131074, 1638457, 1, 131074, 1638458, 1, 131074, 1638459, 1, 131074, 1638460, 1, 131074, 1638461, 1, 131074, 1638462, 1, 131074, 1638463, 1, 131074, 1638464, 1, 131074, 1638465, 1, 131074, 1638466, 1, 131074, 1638467, 1, 131074, 1638468, 1, 131074, 1638469, 1, 131074, 1638470, 1, 131074, 1638471, 1, 131074, 1638472, 1, 131074, 1638473, 1, 131074, 1638474, 1, 131074, 1638475, 1, 131074, 1638476, 1, 131074, 1638477, 1, 131074, 1638478, 1, 131074, 1638479, 1, 131074, 1638480, 1, 131074, 1638481, 1, 131074, 1638482, 1, 131074, 1638483, 1, 131074, 1638484, 1, 131074, 1638485, 1, 131074, 1638486, 1, 131074, 1638487, 1, 131074, 1638488, 1, 131074, 1638489, 1, 131074, 1638490, 1, 131074, 1638491, 1, 131074, 1638492, 1, 131074, 1638493, 1, 131074, 1638494, 1, 131074, 1638495, 1, 131075 ) + +[node name="FamiCutscene" parent="." instance=ExtResource( 7 )] + +[node name="2083" parent="." instance=ExtResource( 1 )] +visible = false +position = Vector2( 0, 12 ) +famira_path = NodePath("../Famira") + +[node name="Camera" type="Camera2D" parent="2083"] +unique_name_in_owner = true +position = Vector2( 0, -4 ) +offset = Vector2( 0, -8 ) +anchor_mode = 0 +current = true +limit_top = 8 +limit_bottom = 192 +limit_smoothed = true + +[node name="Famira" parent="." instance=ExtResource( 4 )] +visible = false +position = Vector2( 160, 179 ) +sg2083_path = NodePath("../2083") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 1 ) +anims/drop-stg = SubResource( 2 ) + +[node name="Speccy" type="Sprite" parent="."] +position = Vector2( -9001, 167 ) +texture = ExtResource( 23 ) + +[connection signal="cutscene_finished" from="FamiCutscene" to="." method="_on_cutscene_finished"] +[connection signal="energy_changed" from="2083" to="." method="_on_2083_energy_changed"] +[connection signal="health_changed" from="2083" to="." method="_on_2083_health_changed"] +[connection signal="died" from="Famira" to="." method="_on_Famira_died"] +[connection signal="health_changed" from="Famira" to="." method="_on_Famira_health_changed"] diff --git a/maps/bug_teleporter.gd b/maps/bug_teleporter.gd new file mode 100644 index 0000000..3ecf5ca --- /dev/null +++ b/maps/bug_teleporter.gd @@ -0,0 +1,7 @@ +extends Area2D + + + +func _on_Area2D_area_entered(area): + Audio.ac_music.stop() + Game.change_map(load("res://menus/bug_world.tscn")) diff --git a/maps/canopy.tscn b/maps/canopy.tscn index 979e718..bbb9863 100644 --- a/maps/canopy.tscn +++ b/maps/canopy.tscn @@ -1,11 +1,11 @@ -[gd_scene load_steps=28 format=2] +[gd_scene load_steps=35 format=2] [ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=1] [ext_resource path="res://maps/map.gd" type="Script" id=2] [ext_resource path="res://graphics/backgrounds/canopy.png" type="Texture" id=3] [ext_resource path="res://tilesets/t_canopy.tres" type="TileSet" id=4] [ext_resource path="res://objects/enemy/skelarcher.tscn" type="PackedScene" id=5] -[ext_resource path="res://objects/player/player_scholar.tscn" type="PackedScene" id=6] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=6] [ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=7] [ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=8] [ext_resource path="res://objects/enemy/spider.tscn" type="PackedScene" id=9] @@ -26,11 +26,24 @@ [ext_resource path="res://objects/lore/canopy/chipit.tscn" type="PackedScene" id=24] [ext_resource path="res://objects/lore/canopy/sabrespighter.tscn" type="PackedScene" id=25] [ext_resource path="res://objects/lore/canopy/shady_canopy.tscn" type="PackedScene" id=26] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=27] +[ext_resource path="res://scripts/has_splash.gd" type="Script" id=28] +[ext_resource path="res://maps/bug_teleporter.gd" type="Script" id=29] +[ext_resource path="res://graphics/turniwood/turning_platform_wood.png" type="Texture" id=30] + +[sub_resource type="RectangleShape2D" id=2] +extents = Vector2( 7.5, 20 ) + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 224, 36 ) + +[sub_resource type="RectangleShape2D" id=4] +extents = Vector2( 18, 108 ) [sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 4, 128 ) +extents = Vector2( 32, 108 ) -[node name="Map" type="Node2D" groups=["map"]] +[node name="Map2" type="Node2D" groups=["map"]] pause_mode = 1 script = ExtResource( 2 ) target_time_any = 80 @@ -42,33 +55,59 @@ lore_entries = [ ExtResource( 23 ), ExtResource( 24 ), ExtResource( 25 ), ExtRes [node name="Sprite" type="Sprite" parent="Camera2D"] position = Vector2( 128, 96 ) -z_index = -2 +z_index = -260 texture = ExtResource( 3 ) __meta__ = { "_edit_lock_": true } -[node name="Ground" type="TileMap" parent="."] +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 27 ) tile_set = ExtResource( 4 ) cell_size = Vector2( 8, 8 ) format = 1 -tile_data = PoolIntArray( 9, 0, 65537, 65545, 0, 1, 131081, 0, 1, 196617, -1610612736, 65538, 262161, 0, 65536, 262162, 0, 65537, 262163, 0, 65537, 262164, 0, 65537, 262165, 0, 65537, 262166, 0, 65537, 262167, 0, 65537, 262168, 0, 65537, 262169, 0, 65537, 262170, 0, 65537, 262171, 0, 65537, 262172, 0, 65537, 262173, 0, 65537, 262174, 0, 65537, 262175, 0, 65537, 262176, 0, 65537, 262177, 0, 65538, 262189, 0, 65536, 262190, 0, 65537, 262191, 0, 65537, 262192, 0, 65537, 262193, 0, 65537, 262194, 0, 65537, 262195, 0, 65537, 262196, 0, 65537, 262197, 0, 65538, 393216, 0, 65537, 393217, 0, 65537, 393218, 0, 65537, 393219, 0, 65537, 393220, 0, 65537, 393221, 0, 65537, 393222, 0, 65538, 393306, -1610612736, 2, 393307, 0, 65537, 393308, 0, 65537, 393309, 0, 65537, 393310, 0, 65537, 393311, 0, 65538, 458773, 0, 65536, 458774, 0, 65537, 458775, 1610612736, 2, 458782, 0, 65536, 458783, 0, 65537, 458784, 0, 65537, 458785, 0, 65537, 458786, 0, 65538, 458790, 0, 65536, 458791, 0, 65537, 458792, 0, 65537, 458793, 0, 65537, 458794, 0, 65537, 458795, 0, 65538, 458842, 0, 1, 524297, 0, 65536, 524298, 0, 65537, 524299, 0, 65537, 524300, 1610612736, 2, 524311, 0, 2, 524312, 0, 65538, 524361, -1610612736, 2, 524362, 0, 65537, 524363, 0, 65537, 524364, 0, 65537, 524365, 0, 65537, 524366, 0, 65537, 524367, 0, 65537, 524368, 0, 65537, 524369, 1610612736, 3, 524378, 0, 1, 589836, 0, 3, 589837, 0, 65537, 589838, 0, 65538, 589870, -1610612736, 2, 589871, 0, 65537, 589872, 0, 65537, 589873, 0, 65537, 589874, 0, 65537, 589875, 0, 65537, 589876, 0, 65537, 589877, 0, 65537, 589878, 0, 65537, 589879, 0, 65537, 589880, 0, 65537, 589881, 0, 65538, 589889, -1610612736, 2, 589890, 0, 65537, 589891, 1610612736, 3, 589897, 0, 1, 589905, 0, 3, 589906, 0, 65537, 589907, 1610612736, 2, 589914, 0, 1, 655406, 0, 1, 655423, -1610612736, 2, 655424, 0, 65537, 655425, 536870912, 3, 655427, 0, 2, 655428, 0, 65537, 655429, 0, 65537, 655430, 0, 65537, 655431, 0, 65537, 655432, 0, 65537, 655433, 536870912, 3, 655443, 0, 1, 655450, 0, 1, 720942, 0, 1, 720958, -1610612736, 2, 720959, 536870912, 3, 720979, 0, 3, 720980, 0, 65537, 720981, 1610612736, 3, 720986, 0, 1, 786433, 0, 65536, 786434, 0, 65537, 786435, 0, 65537, 786436, 0, 65538, 786448, -1610612736, 2, 786449, 0, 65537, 786450, 0, 65537, 786451, 0, 65537, 786452, 0, 65537, 786453, 0, 65537, 786454, 0, 65537, 786455, 0, 65537, 786456, 0, 65537, 786457, 0, 65537, 786458, 0, 65537, 786459, 0, 65537, 786460, 0, 65537, 786461, 0, 65537, 786462, 0, 65537, 786463, 0, 65537, 786464, 0, 65537, 786465, 0, 65537, 786466, 0, 65537, 786467, 0, 65537, 786468, 0, 65537, 786469, 0, 65537, 786470, 0, 65537, 786471, 0, 65537, 786472, 0, 65537, 786473, 0, 65537, 786474, 0, 65537, 786475, 0, 65538, 786477, 0, 65536, 786478, 536870912, 2, 786480, 0, 65536, 786481, 0, 65537, 786482, 0, 65537, 786483, 0, 65537, 786484, 0, 65537, 786485, 0, 65537, 786486, 0, 65537, 786487, 0, 65537, 786488, 0, 65537, 786489, 0, 65537, 786490, 0, 65538, 786493, 0, 65536, 786494, 536870912, 3, 786517, 536870912, 1, 786522, 0, 1, 851983, 0, 65536, 851984, 536870912, 2, 852053, 536870912, 1, 852058, 0, 1, 917585, 1073741824, 3, 917586, 0, 65537, 917587, 0, 65538, 917589, -1073741824, 65536, 917593, 0, 65536, 917594, 536870912, 3, 983065, -1610612736, 2, 983066, 0, 65537, 983067, 0, 65537, 983068, 0, 65538, 983107, -1610612736, 2, 983108, 0, 65537, 983109, 0, 65537, 983110, 0, 65537, 983111, 0, 65537, 983112, 0, 65537, 983113, 0, 65537, 983114, 0, 65537, 983115, 0, 65537, 983116, 0, 65537, 983117, 0, 65537, 983118, 0, 65537, 983119, 0, 65537, 983120, 0, 65537, 983121, 536870912, 3, 1048586, -1610612736, 65536, 1048601, 536870912, 1, 1048606, -1610612736, 2, 1048607, 0, 65537, 1048608, 0, 65537, 1048609, 0, 65537, 1048610, 0, 65537, 1048611, 0, 65537, 1048612, 0, 65537, 1048613, 0, 65538, 1048635, 0, 65536, 1048636, 0, 65537, 1048637, 0, 65537, 1048638, 0, 65537, 1048639, 0, 65537, 1048640, 0, 65537, 1048641, 0, 65537, 1048642, 0, 65537, 1048643, 536870912, 3, 1114112, 0, 65537, 1114113, 0, 65537, 1114114, 0, 65537, 1114115, 0, 65537, 1114116, 0, 65537, 1114117, 0, 65537, 1114118, 0, 65537, 1114119, 0, 65537, 1114120, 0, 65537, 1114121, 0, 65537, 1114122, 536870912, 2, 1114137, 536870912, 1, 1114142, 0, 1, 1179662, 0, 65536, 1179663, 0, 65537, 1179664, 0, 65537, 1179665, 0, 65537, 1179666, 0, 65537, 1179667, 0, 65537, 1179668, 0, 65538, 1179672, 0, 65536, 1179673, 536870912, 3, 1179678, 0, 1, 1179692, 0, 65536, 1179693, 0, 65537, 1179694, 0, 65537, 1179695, 0, 65538, 1179701, 0, 65536, 1179702, 1610612736, 3, 1179717, -1610612736, 2, 1179718, 0, 65537, 1179719, 0, 65537, 1179720, 0, 65537, 1179721, 0, 65537, 1179722, 0, 65537, 1179723, 0, 65537, 1179724, 0, 65537, 1179725, 0, 65537, 1179726, 0, 65537, 1179727, 0, 65537, 1179728, 0, 65537, 1179729, 0, 65537, 1179730, 0, 65537, 1179731, 1610612736, 2, 1245214, 0, 1, 1245238, 0, 2, 1245239, 0, 65537, 1245240, 0, 65538, 1245243, 0, 65536, 1245244, 0, 65537, 1245245, 0, 65537, 1245246, 0, 65537, 1245247, 0, 65537, 1245248, 0, 65537, 1245249, 0, 65537, 1245250, 0, 65537, 1245251, 0, 65537, 1245252, 0, 65537, 1245253, 536870912, 3, 1245267, 0, 1, 1310750, 0, 1, 1310803, 0, 1, 1376286, -1610612736, 65538, 1376339, -1610612736, 65538, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1441836, 0, 0, 1441837, 0, 0, 1441838, 0, 0, 1441839, 0, 0, 1441840, 0, 0, 1441841, 0, 0, 1441842, 0, 0, 1441843, 0, 0, 1441844, 0, 0, 1441845, 0, 0, 1441846, 0, 0, 1441847, 0, 0, 1441848, 0, 0, 1441849, 0, 0, 1441850, 0, 0, 1441851, 0, 0, 1441852, 0, 0, 1441853, 0, 0, 1441854, 0, 0, 1441855, 0, 0, 1441856, 0, 0, 1441857, 0, 0, 1441858, 0, 0, 1441859, 0, 0, 1441860, 0, 0, 1441861, 0, 0, 1441862, 0, 0, 1441863, 0, 0, 1441867, 0, 0, 1441868, 0, 0, 1441872, 0, 0, 1441873, 0, 0, 1441874, 0, 0, 1441875, 0, 0, 1441876, 0, 0, 1441877, 0, 0, 1441878, 0, 0, 1441879, 0, 0, 1441880, 0, 0, 1441881, 0, 0, 1441882, 0, 0, 1507328, 0, 65537, 1507329, 0, 65537, 1507330, 0, 65537, 1507331, 0, 65537, 1507332, 0, 65537, 1507333, 0, 65537, 1507334, 0, 65537, 1507335, 0, 65537, 1507336, 0, 65537, 1507337, 0, 65537, 1507338, 0, 65537, 1507339, 0, 65537, 1507340, 0, 65537, 1507341, 0, 65537, 1507342, 0, 65537, 1507343, 0, 65537, 1507344, 0, 65537, 1507345, 0, 65537, 1507346, 0, 65537, 1507347, 0, 65537, 1507348, 0, 65537, 1507349, 0, 65537, 1507350, 0, 65537, 1507351, 0, 65537, 1507352, 0, 65537, 1507353, 0, 65537, 1507354, 0, 65537, 1507355, 0, 65537, 1507356, 0, 65537, 1507357, 0, 65537, 1507358, 0, 65537, 1507359, 0, 65537, 1507372, 0, 65537, 1507373, 0, 65537, 1507374, 0, 65537, 1507375, 0, 65537, 1507376, 0, 65537, 1507377, 0, 65537, 1507378, 0, 65537, 1507379, 0, 65537, 1507380, 0, 65537, 1507381, 0, 65537, 1507382, 0, 65537, 1507383, 0, 65537, 1507384, 0, 65537, 1507385, 0, 65537, 1507386, 0, 65537, 1507387, 0, 65537, 1507388, 0, 65537, 1507389, 0, 65537, 1507390, 0, 65537, 1507391, 0, 65537, 1507392, 0, 65537, 1507393, 0, 65537, 1507394, 0, 65537, 1507395, 0, 65537, 1507396, 0, 65537, 1507397, 0, 65537, 1507398, 0, 65537, 1507399, 0, 65537, 1507403, 0, 65537, 1507404, 0, 65537, 1507408, 0, 65537, 1507409, 0, 65537, 1507410, 0, 65537, 1507411, 0, 65537, 1507412, 0, 65537, 1507413, 0, 65537, 1507414, 0, 65537, 1507415, 0, 65537, 1507416, 0, 65537, 1507417, 0, 65537, 1507418, 0, 65537 ) +tile_data = PoolIntArray( 9, 0, 65537, 65545, 2, 0, 131081, 2, 65536, 196617, 2, 131072, 196629, 1, 0, 196633, 1, 0, 196655, 1, 0, 196659, 1, 0, 262161, 2, 196609, 262162, 2, 196610, 262163, 2, 196610, 262164, 2, 196610, 262165, 2, 196610, 262166, 2, 196610, 262167, 2, 196610, 262168, 2, 196610, 262169, 2, 196610, 262170, 2, 196610, 262171, 2, 196610, 262172, 2, 196610, 262173, 2, 196610, 262174, 2, 196610, 262175, 2, 196610, 262176, 2, 196610, 262177, 2, 196611, 262189, 2, 196609, 262190, 2, 196610, 262191, 2, 196610, 262192, 2, 196610, 262193, 2, 196610, 262194, 2, 196610, 262195, 2, 196610, 262196, 2, 196610, 262197, 2, 196611, 458751, 2, 196609, 393216, 2, 196610, 393217, 2, 196610, 393218, 2, 196610, 393219, 2, 196610, 393220, 2, 196610, 393221, 2, 196610, 393222, 2, 196611, 393306, 2, 1, 393307, 2, 196610, 393308, 2, 196610, 393309, 2, 196610, 393310, 2, 196610, 393311, 2, 196610, 458763, 1, 0, 458773, 2, 196609, 458774, 2, 196610, 458775, 2, 3, 458782, 2, 196609, 458783, 2, 196610, 458784, 2, 196610, 458785, 2, 196610, 458786, 2, 196611, 458790, 2, 196609, 458791, 2, 196610, 458792, 2, 196610, 458793, 2, 196610, 458794, 2, 196610, 458795, 2, 196611, 458825, 1, 0, 458832, 1, 0, 458842, 2, 65536, 524297, 2, 196609, 524298, 2, 196610, 524299, 2, 196610, 524300, 2, 3, 524311, 2, 131073, 524312, 2, 196611, 524335, 1, 0, 524341, 1, 0, 524361, 2, 1, 524362, 2, 196610, 524363, 2, 196610, 524364, 2, 196610, 524365, 2, 196610, 524366, 2, 196610, 524367, 2, 196610, 524368, 2, 196610, 524369, 2, 3, 524378, 2, 65536, 589836, 2, 131073, 589837, 2, 196610, 589838, 2, 196611, 589870, 2, 1, 589871, 2, 196610, 589872, 2, 196610, 589873, 2, 196610, 589874, 2, 196610, 589875, 2, 196610, 589876, 2, 196610, 589877, 2, 196610, 589878, 2, 196610, 589879, 2, 196610, 589880, 2, 196610, 589881, 2, 196611, 589889, 2, 1, 589890, 2, 196610, 589891, 2, 3, 589894, 1, 0, 589897, 2, 65536, 589905, 2, 131073, 589906, 2, 196610, 589907, 2, 3, 589914, 2, 65536, 655406, 2, 65536, 655423, 2, 1, 655424, 2, 196610, 655425, 2, 131075, 655427, 2, 131073, 655428, 2, 196610, 655429, 2, 196610, 655430, 2, 196610, 655431, 2, 196610, 655432, 2, 196610, 655433, 2, 131075, 655443, 2, 65536, 655450, 2, 65536, 720917, 1, 0, 720922, 1, 0, 720932, 1, 0, 720937, 1, 0, 720942, 2, 65536, 720950, 1, 0, 720958, 2, 1, 720959, 2, 131075, 720979, 2, 131073, 720980, 2, 196610, 720981, 2, 3, 720986, 2, 65536, 786433, 2, 196609, 786434, 2, 196610, 786435, 2, 196610, 786436, 2, 196611, 786448, 2, 1, 786449, 2, 196610, 786450, 2, 196610, 786451, 2, 196610, 786452, 2, 196610, 786453, 2, 196610, 786454, 2, 196610, 786455, 2, 196610, 786456, 2, 196610, 786457, 2, 196610, 786458, 2, 196610, 786459, 2, 196610, 786460, 2, 196610, 786461, 2, 196610, 786462, 2, 196610, 786463, 2, 196610, 786464, 2, 196610, 786465, 2, 196610, 786466, 2, 196610, 786467, 2, 196610, 786468, 2, 196610, 786469, 2, 196610, 786470, 2, 196610, 786471, 2, 196610, 786472, 2, 196610, 786473, 2, 196610, 786474, 2, 196610, 786475, 2, 196611, 786477, 2, 196609, 786478, 2, 131075, 786480, 2, 196609, 786481, 2, 196610, 786482, 2, 196610, 786483, 2, 196610, 786484, 2, 196610, 786485, 2, 196610, 786486, 2, 196610, 786487, 2, 196610, 786488, 2, 196610, 786489, 2, 196610, 786490, 2, 196611, 786493, 2, 196609, 786494, 2, 131075, 786517, 2, 65536, 786522, 2, 65536, 851983, 2, 196609, 851984, 2, 131075, 852053, 2, 65536, 852058, 2, 65536, 917579, 1, 0, 917585, 2, 1, 917586, 2, 196610, 917587, 2, 196611, 917589, 2, 131072, 917593, 2, 196609, 917594, 2, 131075, 983065, 2, 1, 983066, 2, 196610, 983067, 2, 196610, 983068, 2, 196611, 983105, 1, 0, 983107, 2, 1, 983108, 2, 196610, 983109, 2, 196610, 983110, 2, 196610, 983111, 2, 196610, 983112, 2, 196610, 983113, 2, 196610, 983114, 2, 196610, 983115, 2, 196610, 983116, 2, 196610, 983117, 2, 196610, 983118, 2, 196610, 983119, 2, 196610, 983120, 2, 196610, 983121, 2, 131075, 1048586, 2, 0, 1048601, 2, 65536, 1048606, 2, 1, 1048607, 2, 196610, 1048608, 2, 196610, 1048609, 2, 196610, 1048610, 2, 196610, 1048611, 2, 196610, 1048612, 2, 196610, 1048613, 2, 196611, 1048635, 2, 196609, 1048636, 2, 196610, 1048637, 2, 196610, 1048638, 2, 196610, 1048639, 2, 196610, 1048640, 2, 196610, 1048641, 2, 196610, 1048642, 2, 196610, 1048643, 2, 131075, 1179647, 2, 196609, 1114112, 2, 196610, 1114113, 2, 196610, 1114114, 2, 196610, 1114115, 2, 196610, 1114116, 2, 196610, 1114117, 2, 196610, 1114118, 2, 196610, 1114119, 2, 196610, 1114120, 2, 196610, 1114121, 2, 2, 1114122, 2, 131075, 1114137, 2, 65536, 1114142, 2, 65536, 1179662, 2, 196609, 1179663, 2, 196610, 1179664, 2, 196610, 1179665, 2, 196610, 1179666, 2, 196610, 1179667, 2, 196610, 1179668, 2, 196611, 1179672, 2, 196609, 1179673, 2, 131075, 1179678, 2, 65536, 1179692, 2, 196609, 1179693, 2, 196610, 1179694, 2, 196610, 1179695, 2, 196611, 1179701, 2, 196609, 1179702, 2, 3, 1179717, 2, 1, 1179718, 2, 196610, 1179719, 2, 196610, 1179720, 2, 196610, 1179721, 2, 196610, 1179722, 2, 196610, 1179723, 2, 196610, 1179724, 2, 196610, 1179725, 2, 196610, 1179726, 2, 196610, 1179727, 2, 196610, 1179728, 2, 196610, 1179729, 2, 196610, 1179730, 2, 196610, 1179731, 2, 3, 1245214, 2, 65536, 1245238, 2, 131073, 1245239, 2, 196610, 1245240, 2, 196611, 1245243, 2, 196609, 1245244, 2, 196610, 1245245, 2, 196610, 1245246, 2, 196610, 1245247, 2, 196610, 1245248, 2, 196610, 1245249, 2, 196610, 1245250, 2, 196610, 1245251, 2, 196610, 1245252, 2, 196610, 1245253, 2, 131075, 1245267, 2, 65536, 1310750, 2, 65536, 1310803, 2, 65536, 1376257, 1, 0, 1376261, 1, 0, 1376265, 1, 0, 1376269, 1, 0, 1376280, 1, 0, 1376284, 1, 0, 1376286, 2, 65537, 1376301, 1, 0, 1376305, 1, 0, 1376309, 1, 0, 1376313, 1, 0, 1376317, 1, 0, 1376321, 1, 0, 1376325, 1, 0, 1376339, 2, 65537, 1376341, 1, 0, 1376345, 1, 0, 1507327, 3, 0, 1441792, 3, 1, 1441793, 3, 1, 1441794, 3, 1, 1441795, 3, 1, 1441796, 3, 1, 1441797, 3, 1, 1441798, 3, 1, 1441799, 3, 1, 1441800, 3, 1, 1441801, 3, 1, 1441802, 3, 1, 1441803, 3, 1, 1441804, 3, 1, 1441805, 3, 1, 1441806, 3, 1, 1441807, 3, 1, 1441808, 3, 1, 1441809, 3, 1, 1441810, 3, 1, 1441811, 3, 1, 1441812, 3, 1, 1441813, 3, 1, 1441814, 3, 1, 1441815, 3, 1, 1441816, 3, 1, 1441817, 3, 1, 1441818, 3, 1, 1441819, 3, 1, 1441820, 3, 1, 1441821, 3, 1, 1441822, 3, 1, 1441823, 3, 1, 1441836, 3, 0, 1441837, 3, 1, 1441838, 3, 1, 1441839, 3, 1, 1441840, 3, 1, 1441841, 3, 1, 1441842, 3, 1, 1441843, 3, 1, 1441844, 3, 1, 1441845, 3, 1, 1441846, 3, 1, 1441847, 3, 1, 1441848, 3, 1, 1441849, 3, 1, 1441850, 3, 1, 1441851, 3, 1, 1441852, 3, 1, 1441853, 3, 1, 1441854, 3, 1, 1441855, 3, 1, 1441856, 3, 1, 1441857, 3, 1, 1441858, 3, 1, 1441859, 3, 1, 1441860, 3, 1, 1441861, 3, 1, 1441862, 3, 1, 1441863, 3, 2, 1441867, 3, 0, 1441868, 3, 2, 1441872, 3, 0, 1441873, 3, 1, 1441874, 3, 1, 1441875, 3, 1, 1441876, 3, 1, 1441877, 3, 1, 1441878, 3, 1, 1441879, 3, 1, 1441880, 3, 1, 1441881, 3, 1, 1441882, 3, 2, 1572863, 3, 65536, 1507328, 3, 65537, 1507329, 3, 65537, 1507330, 3, 65537, 1507331, 3, 65537, 1507332, 3, 65537, 1507333, 3, 65537, 1507334, 3, 65537, 1507335, 3, 65537, 1507336, 3, 65537, 1507337, 3, 65537, 1507338, 3, 65537, 1507339, 3, 65537, 1507340, 3, 65537, 1507341, 3, 65537, 1507342, 3, 65537, 1507343, 3, 65537, 1507344, 3, 65537, 1507345, 3, 65537, 1507346, 3, 65537, 1507347, 3, 65537, 1507348, 3, 65537, 1507349, 3, 65537, 1507350, 3, 65537, 1507351, 3, 65537, 1507352, 3, 65537, 1507353, 3, 65537, 1507354, 3, 65537, 1507355, 3, 65537, 1507356, 3, 65537, 1507357, 3, 65537, 1507358, 3, 65537, 1507359, 3, 65537, 1507372, 3, 65536, 1507373, 3, 65537, 1507374, 3, 65537, 1507375, 3, 65537, 1507376, 3, 65537, 1507377, 3, 65537, 1507378, 3, 65537, 1507379, 3, 65537, 1507380, 3, 65537, 1507381, 3, 65537, 1507382, 3, 65537, 1507383, 3, 65537, 1507384, 3, 65537, 1507385, 3, 65537, 1507386, 3, 65537, 1507387, 3, 65537, 1507388, 3, 65537, 1507389, 3, 65537, 1507390, 3, 65537, 1507391, 3, 65537, 1507392, 3, 65537, 1507393, 3, 65537, 1507394, 3, 65537, 1507395, 3, 65537, 1507396, 3, 65537, 1507397, 3, 65537, 1507398, 3, 65537, 1507399, 3, 65538, 1507403, 3, 65536, 1507404, 3, 65538, 1507408, 3, 65536, 1507409, 3, 65537, 1507410, 3, 65537, 1507411, 3, 65537, 1507412, 3, 65537, 1507413, 3, 65537, 1507414, 3, 65537, 1507415, 3, 65537, 1507416, 3, 65537, 1507417, 3, 65537, 1507418, 3, 65538 ) [node name="Player" parent="." instance=ExtResource( 6 )] position = Vector2( 24, 176 ) +[node name="StaticBody2D2" type="StaticBody2D" parent="."] +position = Vector2( 752, 8 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D2"] +position = Vector2( 8.5, 20 ) +shape = SubResource( 2 ) + +[node name="Area2D" type="Area2D" parent="."] +position = Vector2( 832, 224 ) +script = ExtResource( 29 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +position = Vector2( 224, 36 ) +shape = SubResource( 3 ) + [node name="Ladder" type="TileMap" parent="."] tile_set = ExtResource( 19 ) cell_size = Vector2( 8, 8 ) format = 1 tile_data = PoolIntArray( 393303, 0, 1, 458839, 0, 1, 524375, 0, 1, 589911, 0, 1, 655367, 0, 1, 655447, 0, 1, 720903, 0, 1, 720983, 0, 1, 786519, 0, 1, 852055, 0, 1, 917516, 0, 1, 917591, 0, 1, 983052, 0, 1, 983127, 0, 1, 1048588, 0, 1, 1048663, 0, 1, 1114199, 0, 1, 1179735, 0, 1, 1245271, 0, 1 ) -[node name="Death" type="TileMap" parent="." groups=["death"]] +[node name="Death" type="TileMap" parent="." groups=["death", "no_blood"]] tile_set = ExtResource( 18 ) cell_size = Vector2( 8, 8 ) collision_layer = 32 format = 1 tile_data = PoolIntArray( 1441824, 0, 0, 1441825, 0, 0, 1441826, 0, 0, 1441827, 0, 0, 1441828, 0, 0, 1441829, 0, 0, 1441830, 0, 0, 1441831, 0, 0, 1441832, 0, 0, 1441833, 0, 0, 1441834, 0, 0, 1441835, 0, 0, 1441864, 0, 0, 1441865, 0, 0, 1441866, 0, 0, 1441869, 0, 0, 1441870, 0, 0, 1441871, 0, 0, 1441883, 0, 0, 1441884, 0, 0, 1441885, 0, 0, 1441886, 0, 0, 1441887, 0, 0, 1507360, 3, 0, 1507361, 3, 0, 1507362, 3, 0, 1507363, 3, 0, 1507364, 3, 0, 1507365, 3, 0, 1507366, 3, 0, 1507367, 3, 0, 1507368, 3, 0, 1507369, 3, 0, 1507370, 3, 0, 1507371, 3, 0, 1507400, 3, 0, 1507401, 3, 0, 1507402, 3, 0, 1507405, 3, 0, 1507406, 3, 0, 1507407, 3, 0, 1507419, 3, 0, 1507420, 3, 0, 1507421, 3, 0, 1507422, 3, 0, 1507423, 3, 0 ) +script = ExtResource( 28 ) +splash_color = Color( 0.227451, 0.627451, 1, 1 ) + +[node name="DeathBackground" type="TileMap" parent="Death"] +z_index = -11 +tile_set = ExtResource( 18 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 1441836, 0, 0, 1441863, 0, 0, 1441867, 0, 0, 1441868, 0, 0, 1441872, 0, 0, 1441882, 0, 0, 1507372, 3, 0, 1507399, 3, 0, 1507403, 3, 0, 1507404, 3, 0, 1507408, 3, 0, 1507418, 3, 0 ) [node name="Platforms" type="Node2D" parent="."] @@ -86,110 +125,140 @@ scale = Vector2( 1, 14 ) [node name="Turniwood" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 0, 96 ) +texture = ExtResource( 30 ) [node name="Turniwood2" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 72, 104 ) +texture = ExtResource( 30 ) [node name="Turniwood30" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 216, 72 ) time = 20.0 +texture = ExtResource( 30 ) [node name="Turniwood5" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 352, 80 ) +texture = ExtResource( 30 ) [node name="Turniwood12" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 464, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood24" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 456, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood25" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 448, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood13" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 472, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood14" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 480, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood15" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 488, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood16" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 496, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood17" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 504, 24 ) time = 30.0 +texture = ExtResource( 30 ) [node name="Turniwood20" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 736, 160 ) +texture = ExtResource( 30 ) [node name="Turniwood21" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 752, 144 ) delay = 0.5 +texture = ExtResource( 30 ) [node name="Turniwood22" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 736, 128 ) delay = 1.0 +texture = ExtResource( 30 ) [node name="Turniwood23" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 752, 120 ) delay = 1.5 +texture = ExtResource( 30 ) [node name="Turniwood26" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 736, 104 ) delay = 2.0 +texture = ExtResource( 30 ) [node name="Turniwood27" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 752, 88 ) delay = 2.5 +texture = ExtResource( 30 ) [node name="Turniwood10" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 448, 128 ) +texture = ExtResource( 30 ) [node name="Turniwood6" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 560, 64 ) +texture = ExtResource( 30 ) [node name="Turniwood3" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 96, 160 ) +texture = ExtResource( 30 ) [node name="Turniwood28" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 176, 152 ) +texture = ExtResource( 30 ) [node name="Turniwood9" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 120, 48 ) +texture = ExtResource( 30 ) [node name="Turniwood4" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 136, 80 ) +texture = ExtResource( 30 ) [node name="Turniwood11" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 336, 136 ) +texture = ExtResource( 30 ) [node name="Turniwood19" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 400, 144 ) +texture = ExtResource( 30 ) [node name="Turniwood29" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 328, 40 ) +texture = ExtResource( 30 ) [node name="Turniwood18" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 312, 136 ) delay = 1.0 +texture = ExtResource( 30 ) [node name="Turniwood7" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 456, 152 ) time = 90.0 +texture = ExtResource( 30 ) [node name="Turniwood8" parent="Platforms" instance=ExtResource( 13 )] position = Vector2( 464, 152 ) time = 90.0 +texture = ExtResource( 30 ) [node name="Barrier" parent="Platforms" instance=ExtResource( 15 )] position = Vector2( 164, 152 ) @@ -250,7 +319,7 @@ shoot_time = 3.0 [node name="Skelarcher5" parent="Enemies" instance=ExtResource( 5 )] position = Vector2( 384, 88 ) -shoot_time = 3.0 +shoot_time = 4.0 [node name="Telstar" parent="Enemies" instance=ExtResource( 5 )] position = Vector2( 352, 136 ) @@ -340,7 +409,7 @@ position = Vector2( 152, 136 ) position = Vector2( 232, 128 ) [node name="Gold11" parent="Collectibles" instance=ExtResource( 11 )] -position = Vector2( 216, 112 ) +position = Vector2( 232, 160 ) [node name="Gold10" parent="Collectibles" instance=ExtResource( 11 )] position = Vector2( 232, 144 ) @@ -528,11 +597,11 @@ __meta__ = { [node name="StaticBody2D" type="StaticBody2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] -position = Vector2( -4, 96 ) -shape = SubResource( 1 ) +position = Vector2( -18, 96 ) +shape = SubResource( 4 ) [node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"] -position = Vector2( 772, 96 ) +position = Vector2( 800, 116 ) shape = SubResource( 1 ) [node name="Exit" parent="." instance=ExtResource( 21 )] @@ -553,3 +622,5 @@ number = 1 [node name="Shard4" parent="." instance=ExtResource( 20 )] position = Vector2( 264, 120 ) + +[connection signal="area_entered" from="Area2D" to="Area2D" method="_on_Area2D_area_entered"] diff --git a/maps/cave.tscn b/maps/cave.tscn index 0d98f27..66b0830 100644 --- a/maps/cave.tscn +++ b/maps/cave.tscn @@ -1,6 +1,6 @@ -[gd_scene load_steps=26 format=2] +[gd_scene load_steps=32 format=2] -[ext_resource path="res://objects/player/player_scholar.tscn" type="PackedScene" id=1] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=1] [ext_resource path="res://tilesets/t_cave.tres" type="TileSet" id=2] [ext_resource path="res://objects/environment/rock/rock.tscn" type="PackedScene" id=3] [ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=4] @@ -24,6 +24,12 @@ [ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=22] [ext_resource path="res://objects/environment/barrier/barrier.tscn" type="PackedScene" id=23] [ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=24] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=25] +[ext_resource path="res://objects/lore/hills/catbat.tscn" type="PackedScene" id=26] +[ext_resource path="res://objects/lore/cave/shedge.tscn" type="PackedScene" id=27] +[ext_resource path="res://objects/lore/cave/the_scrumps_tongue.tscn" type="PackedScene" id=28] +[ext_resource path="res://objects/lore/cave/blue_ray_cavern.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/lore/mountain/rolling_fiend.tscn" type="PackedScene" id=30] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 4, 96 ) @@ -34,6 +40,7 @@ script = ExtResource( 11 ) target_time_any = 80 target_time_100 = 180 music = ExtResource( 12 ) +lore_entries = [ ExtResource( 29 ), ExtResource( 27 ), ExtResource( 28 ), ExtResource( 30 ), ExtResource( 26 ) ] [node name="Camera2D" parent="." instance=ExtResource( 6 )] @@ -48,24 +55,28 @@ __meta__ = { [node name="HUD" parent="." instance=ExtResource( 4 )] song_name = "♫Smokestack" -[node name="Ground" type="TileMap" parent="."] +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 25 ) tile_set = ExtResource( 2 ) cell_size = Vector2( 8, 8 ) collision_layer = 9 format = 1 -tile_data = PoolIntArray( 36, 0, 0, 65572, 0, 0, 131108, 0, 0, 131155, 0, 65537, 131156, 0, 65537, 196644, 0, 65537, 196645, 0, 65537, 196646, 0, 65537, 196697, 0, 262145, 262153, 0, 65537, 262154, 0, 65537, 262155, 0, 65537, 262156, 0, 0, 262159, 0, 65537, 262160, 0, 65537, 262161, 0, 65537, 262162, 0, 65537, 262163, 0, 65537, 262164, 0, 65537, 262165, 0, 65537, 262216, 0, 65537, 262217, 0, 65537, 262218, 0, 65537, 262229, 0, 65537, 262230, 0, 65537, 262231, 0, 65537, 262232, 0, 65537, 262233, 0, 65537, 262234, 0, 65537, 327685, 0, 65537, 327686, 0, 65537, 327687, 0, 65537, 327692, 0, 0, 327727, 0, 65537, 327728, 0, 65537, 327729, 0, 65537, 327734, 0, 262144, 327738, 0, 262145, 327748, 0, 262145, 327771, 0, 65537, 327772, 0, 65537, 327773, 0, 65537, 393228, 0, 0, 393240, 0, 262145, 393249, 0, 262145, 393258, 0, 65537, 393259, 0, 65537, 393260, 0, 65537, 393269, 0, 65537, 393270, 0, 65537, 393271, 0, 65537, 393272, 0, 65537, 393273, 0, 65537, 393274, 0, 65537, 393275, 0, 65537, 393276, 0, 65537, 393277, 0, 65537, 393279, 0, 0, 393280, 0, 65537, 393281, 0, 65537, 393282, 0, 65537, 393283, 0, 65537, 393284, 0, 65537, 393285, 0, 65537, 393292, 0, 65537, 458763, 0, 65537, 458764, 0, 65537, 458774, 0, 65537, 458775, 0, 65537, 458776, 0, 65537, 458777, 0, 65537, 458778, 0, 65537, 458779, 0, 65537, 458782, 0, 65537, 458783, 0, 65537, 458784, 0, 65537, 458785, 0, 65537, 458786, 0, 65537, 458787, 0, 65537, 458815, 0, 0, 524351, 0, 0, 655365, 0, 262145, 720896, 0, 65537, 720897, 0, 65537, 720898, 0, 65537, 720899, 0, 65537, 720900, 0, 65537, 720901, 0, 65537, 720902, 0, 65537, 720903, 0, 65537, 720904, 0, 65537, 720905, 0, 65537, 720919, 0, 0, 720931, 0, 262145, 720954, 0, 262144, 720972, 0, 262145, 720982, 0, 262145, 786448, 0, 262144, 786452, 0, 262145, 786455, 0, 65537, 786456, 0, 65537, 786457, 0, 65537, 786458, 0, 0, 786464, 0, 65537, 786465, 0, 65537, 786466, 0, 65537, 786467, 0, 65537, 786468, 0, 65537, 786469, 0, 65537, 786477, 0, 65537, 786478, 0, 65537, 786479, 0, 65537, 786480, 0, 65537, 786481, 0, 65537, 786485, 0, 65537, 786486, 0, 65537, 786487, 0, 65537, 786488, 0, 65537, 786489, 0, 65537, 786490, 0, 65537, 786491, 0, 65537, 786494, 0, 0, 786495, 0, 0, 786496, 0, 65537, 786497, 0, 65537, 786498, 0, 65537, 786499, 0, 65537, 786500, 0, 65537, 786501, 0, 65537, 786502, 0, 65537, 786503, 0, 65537, 786504, 0, 65537, 786505, 0, 65537, 786506, 0, 65537, 786507, 0, 65537, 786508, 0, 65537, 786509, 0, 65537, 786510, 0, 65537, 786511, 0, 65537, 786512, 0, 65537, 786513, 0, 65537, 786514, 0, 65537, 786515, 0, 65537, 786516, 0, 65537, 786517, 0, 65537, 786518, 0, 65537, 786519, 0, 65537, 786520, 0, 65537, 786521, 0, 0, 786525, 0, 65537, 786526, 0, 65537, 786527, 0, 65537, 851984, 0, 65537, 851985, 0, 65537, 851986, 0, 65537, 851987, 0, 65537, 851988, 0, 65537, 851989, 0, 65537, 851994, 0, 0, 852030, 0, 0, 852031, 0, 0, 852057, 0, 0, 917509, 0, 262144, 917530, 0, 0, 917566, 0, 0, 917567, 0, 0, 917593, 0, 0, 983040, 0, 65537, 983043, 0, 0, 983044, 0, 65537, 983045, 0, 65537, 983046, 0, 65537, 983047, 0, 65537, 983048, 0, 65537, 983049, 0, 65537, 983050, 0, 65537, 983051, 0, 65537, 983066, 0, 0, 983084, 0, 262145, 983102, 0, 0, 983103, 0, 0, 983113, 0, 262144, 983129, 0, 0, 1048579, 0, 0, 1048592, 0, 65537, 1048593, 0, 65537, 1048594, 0, 65537, 1048595, 0, 65537, 1048596, 0, 65537, 1048597, 0, 65537, 1048598, 0, 65537, 1048599, 0, 65537, 1048600, 0, 65537, 1048601, 0, 65537, 1048602, 0, 65537, 1048607, 0, 131072, 1048608, 0, 0, 1048609, 0, 0, 1048610, 0, 0, 1048611, 0, 0, 1048612, 0, 0, 1048613, 0, 131073, 1048617, 0, 131072, 1048618, 0, 0, 1048619, 0, 0, 1048620, 0, 0, 1048621, 0, 0, 1048622, 0, 0, 1048623, 0, 0, 1048624, 0, 0, 1048625, 0, 0, 1048626, 0, 0, 1048627, 0, 0, 1048628, 0, 0, 1048629, 0, 0, 1048630, 0, 0, 1048631, 0, 131073, 1048638, 0, 0, 1048639, 0, 0, 1048648, 0, 65537, 1048649, 0, 65537, 1048650, 0, 65537, 1048651, 0, 65537, 1048665, 0, 65537, 1048666, 0, 65537, 1048667, 0, 65537, 1048668, 0, 65537, 1048669, 0, 65537, 1048670, 0, 65537, 1048671, 0, 65537, 1114115, 0, 0, 1114143, 0, 0, 1114144, 0, 0, 1114145, 0, 0, 1114146, 0, 0, 1114147, 0, 0, 1114148, 0, 0, 1114149, 0, 0, 1114153, 0, 0, 1114154, 0, 0, 1114155, 0, 0, 1114156, 0, 0, 1114157, 0, 0, 1114158, 0, 0, 1114159, 0, 65537, 1114160, 0, 65537, 1114161, 0, 0, 1114162, 0, 0, 1114163, 0, 0, 1114164, 0, 65537, 1114165, 0, 65537, 1114166, 0, 0, 1114167, 0, 0, 1114168, 0, 131073, 1114174, 0, 0, 1114175, 0, 0, 1114190, 0, 65537, 1114191, 0, 65537, 1114192, 0, 65537, 1114197, 0, 65537, 1114198, 0, 0, 1179649, 0, 65537, 1179650, 0, 65537, 1179651, 0, 65537, 1179678, 0, 131072, 1179679, 0, 0, 1179680, 0, 0, 1179681, 0, 0, 1179682, 0, 0, 1179683, 0, 0, 1179684, 0, 0, 1179685, 0, 0, 1179689, 0, 0, 1179690, 0, 0, 1179691, 0, 0, 1179692, 0, 0, 1179693, 0, 0, 1179694, 0, 0, 1179697, 0, 0, 1179698, 0, 0, 1179699, 0, 0, 1179702, 0, 0, 1179703, 0, 0, 1179704, 0, 0, 1179710, 0, 0, 1179711, 0, 0, 1179734, 0, 0, 1179741, 0, 262145, 1245192, 0, 65537, 1245193, 0, 65537, 1245194, 0, 65537, 1245195, 0, 65537, 1245213, 0, 131072, 1245214, 0, 0, 1245215, 0, 0, 1245216, 0, 0, 1245217, 0, 0, 1245218, 0, 0, 1245219, 0, 0, 1245220, 0, 0, 1245221, 0, 0, 1245225, 0, 65537, 1245226, 0, 65537, 1245227, 0, 65537, 1245228, 0, 65537, 1245229, 0, 65537, 1245230, 0, 65537, 1245233, 0, 65537, 1245234, 0, 65537, 1245235, 0, 65537, 1245238, 0, 0, 1245239, 0, 0, 1245240, 0, 0, 1245270, 0, 65537, 1245271, 0, 65537, 1245272, 0, 65537, 1245273, 0, 65537, 1245274, 0, 65537, 1245275, 0, 65537, 1245276, 0, 65537, 1245277, 0, 65537, 1245278, 0, 65537, 1245279, 0, 65537, 1310749, 0, 0, 1310750, 0, 0, 1310751, 0, 0, 1310752, 0, 0, 1310753, 0, 0, 1310754, 0, 0, 1310755, 0, 0, 1310756, 0, 0, 1310757, 0, 0, 1310774, 0, 0, 1310775, 0, 0, 1310776, 0, 0, 1376268, 0, 262144, 1376274, 0, 262144, 1376284, 0, 262144, 1376285, 0, 0, 1376286, 0, 0, 1376287, 0, 0, 1376288, 0, 0, 1376289, 0, 0, 1376290, 0, 0, 1376291, 0, 0, 1376292, 0, 0, 1376293, 0, 0, 1376298, 0, 262145, 1376303, 0, 262144, 1376310, 0, 0, 1376311, 0, 0, 1376312, 0, 0, 1376325, 0, 262144, 1376332, 0, 262144, 1376340, 0, 262144, 1376345, 0, 262145, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1441824, 0, 0, 1441825, 0, 0, 1441826, 0, 0, 1441827, 0, 0, 1441828, 0, 0, 1441829, 0, 0, 1441830, 0, 0, 1441831, 0, 0, 1441832, 0, 0, 1441833, 0, 0, 1441834, 0, 0, 1441835, 0, 0, 1441836, 0, 0, 1441837, 0, 0, 1441838, 0, 0, 1441839, 0, 0, 1441840, 0, 0, 1441841, 0, 0, 1441842, 0, 0, 1441843, 0, 0, 1441844, 0, 0, 1441845, 0, 0, 1441846, 0, 0, 1441847, 0, 0, 1441848, 0, 0, 1441849, 0, 0, 1441850, 0, 0, 1441851, 0, 0, 1441852, 0, 0, 1441853, 0, 0, 1441854, 0, 0, 1441855, 0, 0, 1441856, 0, 0, 1441857, 0, 0, 1441858, 0, 0, 1441859, 0, 0, 1441860, 0, 0, 1441861, 0, 0, 1441862, 0, 0, 1441863, 0, 0, 1441864, 0, 0, 1441865, 0, 0, 1441866, 0, 0, 1441867, 0, 0, 1441868, 0, 0, 1441869, 0, 0, 1441870, 0, 0, 1441871, 0, 0, 1441872, 0, 0, 1441873, 0, 0, 1441874, 0, 0, 1441875, 0, 0, 1441876, 0, 0, 1441877, 0, 0, 1441878, 0, 0, 1441879, 0, 0, 1441880, 0, 0, 1441881, 0, 0, 1441882, 0, 0, 1441883, 0, 0, 1441884, 0, 0, 1441885, 0, 0, 1441886, 0, 0, 1441887, 0, 0, 1507328, 0, 0, 1507329, 0, 0, 1507330, 0, 0, 1507331, 0, 0, 1507332, 0, 0, 1507333, 0, 0, 1507334, 0, 0, 1507335, 0, 0, 1507336, 0, 0, 1507337, 0, 0, 1507338, 0, 0, 1507339, 0, 0, 1507340, 0, 0, 1507341, 0, 0, 1507342, 0, 0, 1507343, 0, 0, 1507344, 0, 0, 1507345, 0, 0, 1507346, 0, 0, 1507347, 0, 0, 1507348, 0, 0, 1507349, 0, 0, 1507350, 0, 0, 1507351, 0, 0, 1507352, 0, 0, 1507353, 0, 0, 1507354, 0, 0, 1507355, 0, 0, 1507356, 0, 0, 1507357, 0, 0, 1507358, 0, 0, 1507359, 0, 0, 1507360, 0, 0, 1507361, 0, 0, 1507362, 0, 0, 1507363, 0, 0, 1507364, 0, 0, 1507365, 0, 0, 1507366, 0, 0, 1507367, 0, 0, 1507368, 0, 0, 1507369, 0, 0, 1507370, 0, 0, 1507371, 0, 0, 1507372, 0, 0, 1507373, 0, 0, 1507374, 0, 0, 1507375, 0, 0, 1507376, 0, 0, 1507377, 0, 0, 1507378, 0, 0, 1507379, 0, 0, 1507380, 0, 0, 1507381, 0, 0, 1507382, 0, 0, 1507383, 0, 0, 1507384, 0, 0, 1507385, 0, 0, 1507386, 0, 0, 1507387, 0, 0, 1507388, 0, 0, 1507389, 0, 0, 1507390, 0, 0, 1507391, 0, 0, 1507392, 0, 0, 1507393, 0, 0, 1507394, 0, 0, 1507395, 0, 0, 1507396, 0, 0, 1507397, 0, 0, 1507398, 0, 0, 1507399, 0, 0, 1507400, 0, 0, 1507401, 0, 0, 1507402, 0, 0, 1507403, 0, 0, 1507404, 0, 0, 1507405, 0, 0, 1507406, 0, 0, 1507407, 0, 0, 1507408, 0, 0, 1507409, 0, 0, 1507410, 0, 0, 1507411, 0, 0, 1507412, 0, 0, 1507413, 0, 0, 1507414, 0, 0, 1507415, 0, 0, 1507416, 0, 0, 1507417, 0, 0, 1507418, 0, 0, 1507419, 0, 0, 1507420, 0, 0, 1507421, 0, 0, 1507422, 0, 0, 1507423, 0, 0 ) +tile_data = PoolIntArray( 65571, 0, 0, 131107, 0, 0, 131155, 0, 65537, 131156, 0, 65537, 196643, 0, 0, 196697, 0, 262145, 262153, 0, 65537, 262154, 0, 65537, 262155, 0, 65537, 262156, 0, 131073, 262159, 0, 65537, 262160, 0, 65537, 262161, 0, 65537, 262162, 0, 65537, 262163, 0, 65537, 262164, 0, 65537, 262165, 0, 65537, 262179, 0, 65537, 262180, 0, 65537, 262181, 0, 65537, 262182, 0, 65537, 262216, 0, 65537, 262217, 0, 65537, 262218, 0, 65537, 262229, 0, 65537, 262230, 0, 65537, 262231, 0, 65537, 262232, 0, 65537, 262233, 0, 65537, 262234, 0, 65537, 327685, 0, 65537, 327686, 0, 65537, 327687, 0, 65537, 327692, 0, 0, 327727, 0, 65537, 327728, 0, 65537, 327729, 0, 65537, 327734, 0, 262144, 327738, 0, 262145, 327748, 0, 262145, 327771, 0, 65537, 327772, 0, 65537, 327773, 0, 65537, 393228, 0, 0, 393240, 0, 262145, 393258, 0, 65537, 393259, 0, 65537, 393260, 0, 65537, 393269, 0, 65537, 393270, 0, 65537, 393271, 0, 65537, 393272, 0, 65537, 393273, 0, 65537, 393274, 0, 65537, 393275, 0, 65537, 393276, 0, 65537, 393277, 0, 65537, 393279, 0, 131072, 393280, 0, 65537, 393281, 0, 65537, 393282, 0, 65537, 393283, 0, 65537, 393284, 0, 65537, 393285, 0, 65537, 393292, 0, 65537, 458763, 0, 65537, 458764, 0, 65537, 458774, 0, 65537, 458775, 0, 65537, 458776, 0, 65537, 458777, 0, 65537, 458778, 0, 65537, 458779, 0, 65537, 458785, 0, 262145, 458815, 0, 0, 524318, 0, 65537, 524319, 0, 65537, 524320, 0, 65537, 524321, 0, 65537, 524322, 0, 65537, 524323, 0, 65537, 524351, 0, 0, 655365, 0, 262145, 786431, 0, 65537, 720896, 0, 65537, 720897, 0, 65537, 720898, 0, 65537, 720899, 0, 65537, 720900, 0, 65537, 720901, 0, 65537, 720902, 0, 65537, 720903, 0, 65537, 720904, 0, 65537, 720905, 0, 65537, 720919, 0, 0, 720931, 0, 262145, 720954, 0, 262144, 720972, 0, 262145, 720982, 0, 262145, 786448, 0, 262144, 786452, 0, 262145, 786455, 0, 65537, 786456, 0, 65537, 786457, 0, 65537, 786458, 0, 131073, 786462, 0, 65537, 786463, 0, 65537, 786464, 0, 65537, 786465, 0, 65537, 786466, 0, 65537, 786467, 0, 65537, 786468, 0, 65537, 786469, 0, 65537, 786477, 0, 65537, 786478, 0, 65537, 786479, 0, 65537, 786480, 0, 65537, 786481, 0, 65537, 786485, 0, 65537, 786486, 0, 65537, 786487, 0, 65537, 786488, 0, 65537, 786489, 0, 65537, 786490, 0, 65537, 786491, 0, 65537, 786494, 0, 131072, 786495, 0, 0, 786496, 0, 65537, 786497, 0, 65537, 786498, 0, 65537, 786499, 0, 65537, 786500, 0, 65537, 786501, 0, 65537, 786502, 0, 65537, 786503, 0, 65537, 786504, 0, 65537, 786505, 0, 65537, 786506, 0, 65537, 786507, 0, 65537, 786508, 0, 65537, 786509, 0, 65537, 786510, 0, 65537, 786511, 0, 65537, 786512, 0, 65537, 786513, 0, 65537, 786514, 0, 65537, 786515, 0, 65537, 786516, 0, 65537, 786517, 0, 65537, 786518, 0, 65537, 786519, 0, 65537, 786520, 0, 65537, 786521, 0, 131073, 786525, 0, 65537, 786526, 0, 65537, 786527, 0, 65537, 786528, 0, 65537, 851984, 0, 65537, 851985, 0, 65537, 851986, 0, 65537, 851987, 0, 65537, 851988, 0, 65537, 851989, 0, 65537, 851994, 0, 0, 852030, 0, 0, 852031, 0, 0, 852057, 0, 0, 917509, 0, 262144, 917530, 0, 0, 917566, 0, 0, 917567, 0, 0, 917593, 0, 0, 1048575, 0, 65537, 983040, 0, 65537, 983043, 0, 131072, 983044, 0, 65537, 983045, 0, 65537, 983046, 0, 65537, 983047, 0, 65537, 983048, 0, 65537, 983049, 0, 65537, 983050, 0, 65537, 983051, 0, 65537, 983066, 0, 0, 983084, 0, 262145, 983102, 0, 0, 983103, 0, 0, 983113, 0, 262144, 983129, 0, 0, 1048579, 0, 0, 1048592, 0, 65537, 1048593, 0, 65537, 1048594, 0, 65537, 1048595, 0, 65537, 1048596, 0, 65537, 1048597, 0, 65537, 1048598, 0, 65537, 1048599, 0, 65537, 1048600, 0, 65537, 1048601, 0, 65537, 1048602, 0, 65537, 1048607, 0, 131072, 1048608, 0, 0, 1048609, 0, 0, 1048610, 0, 0, 1048611, 0, 0, 1048612, 0, 0, 1048613, 0, 131073, 1048617, 0, 131072, 1048618, 0, 0, 1048619, 0, 0, 1048620, 0, 0, 1048621, 0, 0, 1048622, 0, 0, 1048623, 0, 0, 1048624, 0, 0, 1048625, 0, 0, 1048626, 0, 0, 1048627, 0, 0, 1048628, 0, 0, 1048629, 0, 0, 1048630, 0, 0, 1048631, 0, 131073, 1048638, 0, 0, 1048639, 0, 0, 1048648, 0, 65537, 1048649, 0, 65537, 1048650, 0, 65537, 1048651, 0, 65537, 1048665, 0, 65537, 1048666, 0, 65537, 1048667, 0, 65537, 1048668, 0, 65537, 1048669, 0, 65537, 1048670, 0, 65537, 1048671, 0, 65537, 1048672, 0, 65537, 1114115, 0, 0, 1114143, 0, 0, 1114144, 0, 0, 1114145, 0, 0, 1114146, 0, 0, 1114147, 0, 0, 1114148, 0, 0, 1114149, 0, 0, 1114153, 0, 0, 1114154, 0, 0, 1114155, 0, 0, 1114156, 0, 0, 1114157, 0, 0, 1114158, 0, 0, 1114159, 0, 65537, 1114160, 0, 65537, 1114161, 0, 0, 1114162, 0, 0, 1114163, 0, 0, 1114164, 0, 65537, 1114165, 0, 65537, 1114166, 0, 0, 1114167, 0, 0, 1114168, 0, 131073, 1114174, 0, 0, 1114175, 0, 0, 1114190, 0, 65537, 1114191, 0, 65537, 1114192, 0, 65537, 1114197, 0, 65537, 1114198, 0, 131073, 1179649, 0, 65537, 1179650, 0, 65537, 1179651, 0, 65537, 1179678, 0, 131072, 1179679, 0, 0, 1179680, 0, 0, 1179681, 0, 0, 1179682, 0, 0, 1179683, 0, 0, 1179684, 0, 0, 1179685, 0, 0, 1179689, 0, 0, 1179690, 0, 0, 1179691, 0, 0, 1179692, 0, 0, 1179693, 0, 0, 1179694, 0, 0, 1179697, 0, 0, 1179698, 0, 0, 1179699, 0, 0, 1179702, 0, 0, 1179703, 0, 0, 1179704, 0, 0, 1179710, 0, 0, 1179711, 0, 0, 1179734, 0, 0, 1179741, 0, 262145, 1245192, 0, 65537, 1245193, 0, 65537, 1245194, 0, 65537, 1245195, 0, 65537, 1245213, 0, 131072, 1245214, 0, 0, 1245215, 0, 0, 1245216, 0, 0, 1245217, 0, 0, 1245218, 0, 0, 1245219, 0, 0, 1245220, 0, 0, 1245221, 0, 0, 1245225, 0, 65537, 1245226, 0, 65537, 1245227, 0, 65537, 1245228, 0, 65537, 1245229, 0, 65537, 1245230, 0, 65537, 1245233, 0, 65537, 1245234, 0, 65537, 1245235, 0, 65537, 1245238, 0, 0, 1245239, 0, 0, 1245240, 0, 0, 1245270, 0, 65537, 1245271, 0, 65537, 1245272, 0, 65537, 1245273, 0, 65537, 1245274, 0, 65537, 1245275, 0, 65537, 1245276, 0, 65537, 1245277, 0, 65537, 1245278, 0, 65537, 1245279, 0, 65537, 1245280, 0, 65537, 1310749, 0, 0, 1310750, 0, 0, 1310751, 0, 0, 1310752, 0, 0, 1310753, 0, 0, 1310754, 0, 0, 1310755, 0, 0, 1310756, 0, 0, 1310757, 0, 0, 1310774, 0, 0, 1310775, 0, 0, 1310776, 0, 0, 1376268, 0, 262144, 1376274, 0, 262144, 1376284, 0, 262144, 1376285, 0, 0, 1376286, 0, 0, 1376287, 0, 0, 1376288, 0, 0, 1376289, 0, 0, 1376290, 0, 0, 1376291, 0, 0, 1376292, 0, 0, 1376293, 0, 0, 1376299, 0, 262144, 1376303, 0, 262145, 1376310, 0, 0, 1376311, 0, 0, 1376312, 0, 0, 1376325, 0, 262144, 1376332, 0, 262145, 1376340, 0, 262144, 1376345, 0, 262145, 1507327, 0, 0, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1441824, 0, 0, 1441825, 0, 0, 1441826, 0, 0, 1441827, 0, 0, 1441828, 0, 0, 1441829, 0, 0, 1441830, 0, 0, 1441831, 0, 0, 1441832, 0, 0, 1441833, 0, 0, 1441834, 0, 0, 1441835, 0, 0, 1441836, 0, 0, 1441837, 0, 0, 1441838, 0, 0, 1441839, 0, 0, 1441840, 0, 0, 1441841, 0, 0, 1441842, 0, 0, 1441843, 0, 0, 1441844, 0, 0, 1441845, 0, 0, 1441846, 0, 0, 1441847, 0, 0, 1441848, 0, 0, 1441849, 0, 0, 1441850, 0, 0, 1441851, 0, 0, 1441852, 0, 0, 1441853, 0, 0, 1441854, 0, 0, 1441855, 0, 0, 1441856, 0, 0, 1441857, 0, 0, 1441858, 0, 0, 1441859, 0, 0, 1441860, 0, 0, 1441861, 0, 0, 1441862, 0, 0, 1441863, 0, 0, 1441864, 0, 0, 1441865, 0, 0, 1441866, 0, 0, 1441867, 0, 0, 1441868, 0, 0, 1441869, 0, 0, 1441870, 0, 0, 1441871, 0, 0, 1441872, 0, 0, 1441873, 0, 0, 1441874, 0, 0, 1441875, 0, 0, 1441876, 0, 0, 1441877, 0, 0, 1441878, 0, 0, 1441879, 0, 0, 1441880, 0, 0, 1441881, 0, 0, 1441882, 0, 0, 1441883, 0, 0, 1441884, 0, 0, 1441885, 0, 0, 1441886, 0, 0, 1441887, 0, 0, 1441888, 0, 0, 1572863, 0, 0, 1507328, 0, 0, 1507329, 0, 0, 1507330, 0, 0, 1507331, 0, 0, 1507332, 0, 0, 1507333, 0, 0, 1507334, 0, 0, 1507335, 0, 0, 1507336, 0, 0, 1507337, 0, 0, 1507338, 0, 0, 1507339, 0, 0, 1507340, 0, 0, 1507341, 0, 0, 1507342, 0, 0, 1507343, 0, 0, 1507344, 0, 0, 1507345, 0, 0, 1507346, 0, 0, 1507347, 0, 0, 1507348, 0, 0, 1507349, 0, 0, 1507350, 0, 0, 1507351, 0, 0, 1507352, 0, 0, 1507353, 0, 0, 1507354, 0, 0, 1507355, 0, 0, 1507356, 0, 0, 1507357, 0, 0, 1507358, 0, 0, 1507359, 0, 0, 1507360, 0, 0, 1507361, 0, 0, 1507362, 0, 0, 1507363, 0, 0, 1507364, 0, 0, 1507365, 0, 0, 1507366, 0, 0, 1507367, 0, 0, 1507368, 0, 0, 1507369, 0, 0, 1507370, 0, 0, 1507371, 0, 0, 1507372, 0, 0, 1507373, 0, 0, 1507374, 0, 0, 1507375, 0, 0, 1507376, 0, 0, 1507377, 0, 0, 1507378, 0, 0, 1507379, 0, 0, 1507380, 0, 0, 1507381, 0, 0, 1507382, 0, 0, 1507383, 0, 0, 1507384, 0, 0, 1507385, 0, 0, 1507386, 0, 0, 1507387, 0, 0, 1507388, 0, 0, 1507389, 0, 0, 1507390, 0, 0, 1507391, 0, 0, 1507392, 0, 0, 1507393, 0, 0, 1507394, 0, 0, 1507395, 0, 0, 1507396, 0, 0, 1507397, 0, 0, 1507398, 0, 0, 1507399, 0, 0, 1507400, 0, 0, 1507401, 0, 0, 1507402, 0, 0, 1507403, 0, 0, 1507404, 0, 0, 1507405, 0, 0, 1507406, 0, 0, 1507407, 0, 0, 1507408, 0, 0, 1507409, 0, 0, 1507410, 0, 0, 1507411, 0, 0, 1507412, 0, 0, 1507413, 0, 0, 1507414, 0, 0, 1507415, 0, 0, 1507416, 0, 0, 1507417, 0, 0, 1507418, 0, 0, 1507419, 0, 0, 1507420, 0, 0, 1507421, 0, 0, 1507422, 0, 0, 1507423, 0, 0, 1507424, 0, 0, 1638399, 0, 0, 1572864, 0, 0, 1572865, 0, 0, 1572866, 0, 0, 1572867, 0, 0, 1572868, 0, 0, 1572869, 0, 0, 1572870, 0, 0, 1572871, 0, 0, 1572872, 0, 0, 1572873, 0, 0, 1572874, 0, 0, 1572875, 0, 0, 1572876, 0, 0, 1572877, 0, 0, 1572878, 0, 0, 1572879, 0, 0, 1572880, 0, 0, 1572881, 0, 0, 1572882, 0, 0, 1572883, 0, 0, 1572884, 0, 0, 1572885, 0, 0, 1572886, 0, 0, 1572887, 0, 0, 1572888, 0, 0, 1572889, 0, 0, 1572890, 0, 0, 1572891, 0, 0, 1572892, 0, 0, 1572893, 0, 0, 1572894, 0, 0, 1572895, 0, 0, 1572896, 0, 0, 1572897, 0, 0, 1572898, 0, 0, 1572899, 0, 0, 1572900, 0, 0, 1572901, 0, 0, 1572902, 0, 0, 1572903, 0, 0, 1572904, 0, 0, 1572905, 0, 0, 1572906, 0, 0, 1572907, 0, 0, 1572908, 0, 0, 1572909, 0, 0, 1572910, 0, 0, 1572911, 0, 0, 1572912, 0, 0, 1572913, 0, 0, 1572914, 0, 0, 1572915, 0, 0, 1572916, 0, 0, 1572917, 0, 0, 1572918, 0, 0, 1572919, 0, 0, 1572920, 0, 0, 1572921, 0, 0, 1572922, 0, 0, 1572923, 0, 0, 1572924, 0, 0, 1572925, 0, 0, 1572926, 0, 0, 1572927, 0, 0, 1572928, 0, 0, 1572929, 0, 0, 1572930, 0, 0, 1572931, 0, 0, 1572932, 0, 0, 1572933, 0, 0, 1572934, 0, 0, 1572935, 0, 0, 1572936, 0, 0, 1572937, 0, 0, 1572938, 0, 0, 1572939, 0, 0, 1572940, 0, 0, 1572941, 0, 0, 1572942, 0, 0, 1572943, 0, 0, 1572944, 0, 0, 1572945, 0, 0, 1572946, 0, 0, 1572947, 0, 0, 1572948, 0, 0, 1572949, 0, 0, 1572950, 0, 0, 1572951, 0, 0, 1572952, 0, 0, 1572953, 0, 0, 1572954, 0, 0, 1572955, 0, 0, 1572956, 0, 0, 1572957, 0, 0, 1572958, 0, 0, 1572959, 0, 0, 1572960, 0, 0 ) [node name="Player" parent="." instance=ExtResource( 1 )] position = Vector2( 32, 176 ) +beta_gameplay = true [node name="Ladder" type="TileMap" parent="."] tile_set = ExtResource( 22 ) cell_size = Vector2( 8, 8 ) collision_layer = 9 format = 1 -tile_data = PoolIntArray( 393236, 0, 65536, 458772, 0, 65537, 524308, 0, 65537, 589844, 0, 65537, 786445, 0, 65536, 786460, 0, 65536, 851981, 0, 65537, 851996, 0, 65537, 852058, 0, 65536, 917517, 0, 65537, 917532, 0, 65537, 917594, 0, 65537, 983053, 0, 65537, 983068, 0, 65537, 983078, 0, 65536, 983130, 0, 65538, 1048589, 0, 65537, 1048604, 0, 65537, 1048614, 0, 65537, 1048633, 0, 65536, 1114125, 0, 65537, 1114150, 0, 65537, 1114169, 0, 65537, 1179661, 0, 65537, 1179686, 0, 65537, 1179705, 0, 65537, 1245197, 0, 65537, 1245222, 0, 65537, 1245241, 0, 65537, 1310733, 0, 65537, 1310758, 0, 65537, 1310777, 0, 65537, 1376269, 0, 65538, 1376294, 0, 65538, 1376313, 0, 65538 ) +tile_data = PoolIntArray( 393236, 0, 65536, 458772, 0, 65537, 524308, 0, 65537, 589844, 0, 65537, 786445, 0, 65536, 786460, 0, 65536, 851981, 0, 65537, 851996, 0, 65537, 852058, 0, 65536, 917517, 0, 65537, 917532, 0, 65537, 917594, 0, 65537, 983053, 0, 65537, 983068, 0, 65537, 983130, 0, 65538, 1048589, 0, 65537, 1048604, 0, 65537, 1048614, 0, 65536, 1048633, 0, 65536, 1114125, 0, 65537, 1114150, 0, 65537, 1114169, 0, 65537, 1179661, 0, 65537, 1179686, 0, 65537, 1179705, 0, 65537, 1245197, 0, 65537, 1245222, 0, 65537, 1245241, 0, 65537, 1310733, 0, 65537, 1310758, 0, 65537, 1310777, 0, 65537, 1376269, 0, 65538, 1376294, 0, 65538, 1376313, 0, 65538 ) [node name="Death" type="TileMap" parent="." groups=["death"]] +light_mask = 0 tile_set = ExtResource( 5 ) cell_size = Vector2( 8, 8 ) collision_layer = 32 @@ -87,22 +98,28 @@ position = Vector2( 160, 48 ) scale = Vector2( 1, 4 ) [node name="Ladder3" parent="Platforms" instance=ExtResource( 9 )] -position = Vector2( 304, 120 ) -scale = Vector2( 1, 7 ) +position = Vector2( 304, 128 ) +scale = Vector2( 1, 6 ) +can_climb_left = false [node name="Ladder4" parent="Platforms" instance=ExtResource( 9 )] +position = Vector2( 456, 136 ) +scale = Vector2( 1, 5 ) +can_climb_left = false + +[node name="Ladder6" parent="Platforms" instance=ExtResource( 9 )] position = Vector2( 456, 128 ) -scale = Vector2( 1, 6 ) [node name="Ladder8" parent="Platforms" instance=ExtResource( 9 )] position = Vector2( 720, 104 ) scale = Vector2( 1, 3 ) +can_climb_left = false [node name="Rock2" parent="Platforms" instance=ExtResource( 3 )] position = Vector2( 208, 88 ) [node name="Rock3" parent="Platforms" instance=ExtResource( 3 )] -position = Vector2( 272, 48 ) +position = Vector2( 272, 56 ) [node name="FallingBlock" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 56, 72 ) @@ -110,12 +127,6 @@ position = Vector2( 56, 72 ) [node name="FallingBlock4" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 64, 40 ) -[node name="FallingBlock6" parent="Platforms" instance=ExtResource( 18 )] -position = Vector2( 240, 96 ) - -[node name="FallingBlock19" parent="Platforms" instance=ExtResource( 18 )] -position = Vector2( 248, 96 ) - [node name="FallingBlock7" parent="Platforms" instance=ExtResource( 18 )] position = Vector2( 352, 96 ) @@ -186,7 +197,7 @@ cost = 30 [node name="Barrier2" parent="Platforms" instance=ExtResource( 23 )] position = Vector2( 308, 0 ) -scale = Vector2( 1, 24 ) +scale = Vector2( 1, 32 ) cost = 25 label_offset = Vector2( 0, 10 ) @@ -340,7 +351,7 @@ position = Vector2( 624, 88 ) position = Vector2( 672, 88 ) [node name="Gold26" parent="Collectibles" instance=ExtResource( 14 )] -position = Vector2( 240, 48 ) +position = Vector2( 240, 56 ) [node name="Gold29" parent="Collectibles" instance=ExtResource( 14 )] position = Vector2( 264, 120 ) @@ -436,10 +447,10 @@ position = Vector2( 128, 24 ) position = Vector2( 160, 24 ) [node name="Gold16" parent="Collectibles" instance=ExtResource( 14 )] -position = Vector2( 16, 80 ) +position = Vector2( 40, 32 ) [node name="Gold17" parent="Collectibles" instance=ExtResource( 14 )] -position = Vector2( 32, 80 ) +position = Vector2( 56, 32 ) [node name="Gold14" parent="Collectibles" instance=ExtResource( 14 )] position = Vector2( 40, 56 ) @@ -461,7 +472,7 @@ position = Vector2( 192, 120 ) color = 1 [node name="Star3" parent="Collectibles" instance=ExtResource( 15 )] -position = Vector2( 296, 16 ) +position = Vector2( 288, 24 ) color = 2 [node name="Star6" parent="Collectibles" instance=ExtResource( 15 )] @@ -497,7 +508,7 @@ position = Vector2( 144, 24 ) position = Vector2( 728, 32 ) [node name="Arrow5" parent="Collectibles" instance=ExtResource( 20 )] -position = Vector2( 288, -8 ) +position = Vector2( 280, 0 ) [node name="Arrow4" parent="Collectibles" instance=ExtResource( 20 )] position = Vector2( 208, 168 ) diff --git a/maps/cave_scholar.tscn b/maps/cave_scholar.tscn new file mode 100644 index 0000000..3542bfd --- /dev/null +++ b/maps/cave_scholar.tscn @@ -0,0 +1,1177 @@ +[gd_scene load_steps=38 format=2] + +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=1] +[ext_resource path="res://tilesets/t_cave.tres" type="TileSet" id=2] +[ext_resource path="res://objects/environment/stalactite/stalactite.tscn" type="PackedScene" id=3] +[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=4] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=5] +[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=6] +[ext_resource path="res://objects/enemy/snail.tscn" type="PackedScene" id=7] +[ext_resource path="res://graphics/backgrounds/cave_scholar.png" type="Texture" id=8] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=9] +[ext_resource path="res://objects/enemy/bat.tscn" type="PackedScene" id=10] +[ext_resource path="res://maps/map.gd" type="Script" id=11] +[ext_resource path="res://audio/music/sleet.ogg" type="AudioStream" id=12] +[ext_resource path="res://objects/enemy/rolling_fiend.tscn" type="PackedScene" id=13] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=14] +[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=15] +[ext_resource path="res://objects/enemy/tentacle.tscn" type="PackedScene" id=16] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=17] +[ext_resource path="res://objects/environment/falling_block/falling_block_cave.tscn" type="PackedScene" id=18] +[ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=19] +[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=20] +[ext_resource path="res://scripts/fix_parallax_background.gd" type="Script" id=21] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=22] +[ext_resource path="res://objects/environment/barrier/barrier.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=24] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=25] +[ext_resource path="res://objects/lore/hills/catbat.tscn" type="PackedScene" id=26] +[ext_resource path="res://objects/lore/cave/shedge.tscn" type="PackedScene" id=27] +[ext_resource path="res://objects/lore/cave/the_scrumps_tongue.tscn" type="PackedScene" id=28] +[ext_resource path="res://objects/lore/cave/blue_ray_cavern.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/lore/mountain/rolling_fiend.tscn" type="PackedScene" id=30] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=31] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=32] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=33] +[ext_resource path="res://maps/cave_speccy_detector.gd" type="Script" id=34] + +[sub_resource type="Curve" id=2] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 4, 96 ) + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 20, 20 ) + +[node name="Map2" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 11 ) +target_time_any = 40 +target_time_100 = 170 +music = ExtResource( 12 ) +lore_entries = [ ExtResource( 29 ), ExtResource( 27 ), ExtResource( 28 ), ExtResource( 30 ), ExtResource( 26 ) ] + +[node name="ParallaxBackground" type="ParallaxBackground" parent="."] +script = ExtResource( 21 ) + +[node name="ParallaxLayer" type="ParallaxLayer" parent="ParallaxBackground"] +motion_scale = Vector2( 0.5, 1 ) + +[node name="Background" type="Sprite" parent="ParallaxBackground/ParallaxLayer"] +texture = ExtResource( 8 ) +centered = false +__meta__ = { +"_edit_lock_": true +} + +[node name="Camera2D" parent="." instance=ExtResource( 6 )] + +[node name="HUD" parent="." instance=ExtResource( 4 )] +song_name = "♫Sleet" + +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 25 ) +tile_set = ExtResource( 2 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 9 +format = 1 +tile_data = PoolIntArray( 0, 1, 1, 1, 1, 2, 2, 1, 2, 3, 1, 2, 4, 1, 2, 5, 1, 2, 6, 1, 2, 7, 1, 2, 8, 1, 2, 9, 1, 2, 10, 1, 2, 11, 1, 2, 12, 1, 2, 13, 1, 2, 14, 1, 2, 15, 1, 2, 16, 1, 2, 17, 1, 2, 18, 1, 2, 19, 1, 2, 20, 1, 2, 21, 1, 2, 22, 1, 2, 23, 1, 2, 24, 1, 2, 25, 1, 2, 26, 1, 2, 27, 1, 2, 28, 1, 2, 29, 1, 2, 30, 1, 2, 31, 1, 2, 32, 1, 2, 33, 1, 2, 34, 1, 2, 35, 1, 2, 36, 1, 2, 37, 1, 2, 38, 1, 2, 39, 1, 2, 40, 1, 2, 41, 1, 2, 42, 1, 2, 43, 1, 2, 44, 1, 2, 45, 1, 2, 46, 1, 2, 47, 1, 2, 48, 1, 2, 49, 1, 2, 50, 1, 2, 51, 1, 2, 52, 1, 2, 53, 1, 2, 54, 1, 2, 55, 1, 2, 56, 1, 2, 57, 1, 2, 58, 1, 2, 59, 1, 2, 60, 1, 2, 61, 1, 2, 62, 1, 2, 63, 1, 2, 64, 1, 2, 65, 1, 2, 66, 1, 2, 67, 1, 2, 68, 1, 2, 69, 1, 2, 70, 1, 2, 71, 1, 2, 72, 1, 2, 73, 1, 2, 74, 1, 2, 75, 1, 2, 76, 1, 2, 77, 1, 2, 78, 1, 2, 79, 1, 2, 80, 1, 2, 81, 1, 2, 82, 1, 2, 83, 1, 2, 84, 1, 2, 85, 1, 2, 86, 1, 2, 87, 1, 2, 88, 1, 2, 89, 1, 2, 90, 1, 2, 91, 1, 2, 92, 1, 2, 93, 1, 2, 94, 1, 2, 95, 1, 3, 65536, 1, 131073, 65537, 1, 131074, 65538, 1, 131074, 65539, 1, 131074, 65540, 1, 131074, 65541, 1, 131074, 65542, 1, 131074, 65543, 1, 131074, 65544, 1, 131074, 65545, 1, 131074, 65546, 1, 131074, 65547, 1, 131074, 65548, 1, 131074, 65549, 1, 131074, 65550, 1, 131074, 65551, 1, 131074, 65552, 1, 131074, 65553, 1, 131074, 65554, 1, 131074, 65555, 1, 131074, 65556, 1, 131074, 65557, 1, 131074, 65558, 1, 131074, 65559, 1, 131074, 65560, 1, 131074, 65561, 1, 131074, 65562, 1, 131074, 65563, 1, 131074, 65564, 1, 131074, 65565, 1, 131074, 65566, 1, 131074, 65567, 1, 131074, 65568, 1, 131074, 65569, 1, 131074, 65570, 1, 131074, 65571, 1, 131074, 65572, 1, 131074, 65573, 1, 131074, 65574, 1, 131074, 65575, 1, 131074, 65576, 1, 131074, 65577, 1, 131074, 65578, 1, 131074, 65579, 1, 131074, 65580, 1, 131074, 65581, 1, 131074, 65582, 1, 131074, 65583, 1, 131074, 65584, 1, 131074, 65585, 1, 131074, 65586, 1, 131074, 65587, 1, 131074, 65588, 1, 131074, 65589, 1, 131074, 65590, 1, 131074, 65591, 1, 131074, 65592, 1, 131074, 65593, 1, 131074, 65594, 1, 131074, 65595, 1, 131074, 65596, 1, 131074, 65597, 1, 131074, 65598, 1, 131074, 65599, 1, 131074, 65600, 1, 131074, 65601, 1, 131074, 65602, 1, 131074, 65603, 1, 131074, 65604, 1, 131074, 65605, 1, 131074, 65606, 1, 131074, 65607, 1, 131074, 65608, 1, 131074, 65609, 1, 131074, 65610, 1, 131074, 65611, 1, 131074, 65612, 1, 131074, 65613, 1, 131074, 65614, 1, 131074, 65615, 1, 131074, 65616, 1, 131074, 65617, 1, 131074, 65618, 1, 131074, 65619, 1, 131074, 65620, 1, 131074, 65621, 1, 131074, 65622, 1, 131074, 65623, 1, 131074, 65624, 1, 131074, 65625, 1, 131074, 65626, 1, 131074, 65627, 1, 131074, 65628, 1, 131074, 65629, 1, 131074, 65630, 1, 131074, 65631, 1, 131075, 327763, 1, 196609, 327764, 1, 196611, 393221, 1, 196609, 393222, 1, 196610, 393223, 1, 196610, 393224, 1, 196610, 393225, 1, 196610, 393226, 1, 196611, 393229, 1, 196609, 393230, 1, 196610, 393231, 1, 196610, 393232, 1, 196610, 393233, 1, 196610, 393234, 1, 196611, 393251, 3, 0, 393259, 3, 0, 393268, 3, 0, 393278, 3, 0, 393289, 1, 196609, 393290, 1, 196610, 393291, 1, 196611, 458775, 1, 196609, 458776, 1, 196610, 458777, 1, 196611, 458780, 1, 1, 458781, 1, 2, 458782, 1, 2, 458783, 1, 2, 458784, 1, 2, 458785, 1, 2, 458786, 1, 2, 458787, 1, 2, 458788, 1, 2, 458789, 1, 196610, 458790, 1, 196611, 458791, 0, 196608, 458792, 0, 196608, 458793, 0, 196608, 458794, 0, 196608, 458795, 1, 1, 458796, 1, 3, 458801, 1, 196609, 458802, 1, 196610, 458803, 1, 196610, 458804, 1, 196610, 458805, 1, 196610, 458806, 1, 196610, 458807, 1, 2, 458808, 1, 2, 458809, 1, 2, 458810, 1, 196610, 458811, 1, 196610, 458812, 1, 196610, 458813, 1, 196610, 458814, 1, 2, 458815, 1, 2, 458816, 1, 2, 458817, 1, 3, 458818, 0, 196608, 458819, 0, 196608, 458820, 1, 0, 458823, 1, 196608, 458837, 1, 196609, 458838, 1, 196610, 458839, 1, 196610, 458840, 1, 196610, 458841, 1, 196610, 458842, 1, 196610, 458843, 1, 196610, 458844, 1, 196611, 458847, 1, 0, 524316, 1, 65537, 524317, 1, 65538, 524318, 1, 65538, 524319, 1, 65538, 524320, 1, 131074, 524321, 1, 131074, 524322, 1, 131074, 524323, 1, 131074, 524324, 1, 131075, 524331, 1, 65537, 524332, 1, 65539, 524343, 1, 131073, 524344, 1, 131074, 524345, 1, 131075, 524350, 1, 65537, 524351, 1, 65538, 524352, 1, 131074, 524353, 1, 131075, 524356, 1, 65536, 524364, 1, 196608, 524383, 1, 65536, 589839, 1, 1, 589840, 1, 196610, 589841, 1, 196610, 589842, 1, 196611, 589851, 1, 1, 589852, 1, 65538, 589853, 1, 131074, 589854, 1, 131074, 589855, 1, 131075, 589867, 1, 65537, 589868, 1, 65539, 589886, 1, 131073, 589887, 1, 131075, 589892, 1, 65536, 589907, 3, 0, 589917, 3, 0, 589919, 1, 65536, 655364, 1, 196609, 655365, 1, 196611, 655369, 1, 196609, 655370, 1, 196611, 655375, 1, 65536, 655380, 3, 0, 655386, 3, 0, 655387, 1, 65537, 655388, 1, 65539, 655403, 1, 65537, 655404, 1, 65539, 655428, 1, 65536, 655441, 1, 196609, 655442, 1, 196610, 655443, 1, 2, 655444, 1, 196610, 655445, 1, 196610, 655446, 1, 196610, 655447, 1, 196610, 655448, 1, 196610, 655449, 1, 196610, 655450, 1, 196610, 655451, 1, 196610, 655452, 1, 196610, 655453, 1, 196610, 655454, 1, 196610, 655455, 1, 131075, 720911, 1, 65536, 720916, 1, 1, 720917, 1, 196610, 720918, 1, 196610, 720919, 1, 196610, 720920, 1, 196610, 720921, 1, 196610, 720922, 1, 196610, 720923, 1, 131074, 720924, 1, 131075, 720939, 1, 65537, 720940, 1, 65539, 720964, 1, 65536, 720979, 1, 65536, 786447, 1, 131073, 786448, 1, 196610, 786449, 1, 196610, 786450, 1, 196610, 786451, 1, 196610, 786452, 1, 131075, 786475, 1, 65537, 786476, 1, 65539, 786500, 1, 65536, 786515, 1, 65536, 852002, 1, 0, 852004, 1, 196609, 852005, 1, 196610, 852006, 1, 196611, 852011, 1, 65537, 852012, 1, 65538, 852013, 1, 2, 852014, 1, 2, 852015, 1, 2, 852016, 1, 2, 852017, 1, 3, 852020, 1, 196609, 852021, 1, 196610, 852022, 1, 196610, 852023, 1, 196611, 852036, 1, 65536, 852051, 1, 65536, 917510, 3, 0, 917514, 3, 0, 917534, 1, 1, 917535, 1, 2, 917536, 1, 196610, 917537, 1, 196610, 917538, 1, 131075, 917544, 1, 196609, 917545, 1, 2, 917546, 1, 2, 917547, 1, 65538, 917548, 1, 65538, 917549, 1, 131074, 917550, 1, 131074, 917551, 1, 131074, 917552, 1, 131074, 917553, 1, 131075, 917572, 1, 65536, 917583, 1, 196609, 917584, 1, 196610, 917585, 1, 196610, 917586, 1, 196610, 917587, 1, 131075, 1048575, 1, 196609, 983040, 1, 196611, 983043, 1, 1, 983044, 1, 196610, 983045, 1, 196610, 983046, 1, 196610, 983047, 1, 196610, 983048, 1, 196610, 983049, 1, 196610, 983050, 1, 196610, 983051, 1, 196611, 983060, 3, 0, 983066, 3, 0, 983070, 1, 65537, 983071, 1, 65539, 983081, 1, 131073, 983082, 1, 131074, 983083, 1, 131074, 983084, 1, 131075, 983099, 1, 196609, 983100, 1, 196610, 983101, 1, 196610, 983102, 1, 196610, 983103, 1, 196610, 983104, 1, 196610, 983105, 1, 196610, 983106, 1, 196610, 983107, 1, 196610, 983108, 1, 131074, 983109, 1, 196610, 983110, 1, 196610, 983111, 1, 196610, 983112, 1, 196611, 983113, 0, 196608, 983114, 0, 196608, 983115, 1, 0, 983133, 1, 196609, 983134, 1, 196610, 983135, 1, 196611, 1048579, 1, 65536, 1048591, 1, 196609, 1048592, 1, 196610, 1048593, 1, 196610, 1048594, 1, 196610, 1048595, 1, 196610, 1048596, 1, 196610, 1048597, 1, 196610, 1048598, 1, 196610, 1048599, 1, 196610, 1048600, 1, 196610, 1048601, 1, 196610, 1048602, 1, 196610, 1048603, 1, 196610, 1048604, 1, 196610, 1048605, 1, 196610, 1048606, 1, 131074, 1048607, 1, 131075, 1048651, 1, 65536, 1048661, 1, 1, 1048662, 1, 2, 1048663, 1, 3, 1048665, 1, 196609, 1048666, 1, 196611, 1114115, 1, 65536, 1114187, 1, 65536, 1114191, 1, 1, 1114192, 1, 2, 1114193, 1, 2, 1114194, 1, 2, 1114195, 1, 2, 1114196, 1, 196610, 1114197, 1, 131074, 1114198, 1, 65538, 1114199, 1, 65539, 1114204, 1, 1, 1114205, 1, 196610, 1114206, 1, 196610, 1114207, 1, 196611, 1179649, 1, 196609, 1179650, 1, 196610, 1179651, 1, 131075, 1179697, 3, 0, 1179723, 1, 65536, 1179727, 1, 65537, 1179728, 1, 65538, 1179729, 1, 65538, 1179730, 1, 65538, 1179731, 1, 65539, 1179734, 1, 65537, 1179735, 1, 65538, 1179736, 1, 2, 1179737, 1, 2, 1179738, 1, 2, 1179739, 1, 2, 1179740, 1, 65539, 1245230, 1, 196609, 1245231, 1, 196610, 1245232, 1, 196610, 1245233, 1, 196610, 1245234, 1, 196611, 1245259, 1, 65536, 1245263, 1, 131073, 1245264, 1, 131074, 1245265, 1, 131074, 1245266, 1, 131074, 1245267, 1, 131075, 1245270, 1, 131073, 1245271, 1, 131074, 1245272, 1, 131074, 1245273, 1, 131074, 1245274, 1, 131074, 1245275, 1, 131074, 1245276, 1, 131075, 1310756, 1, 1, 1310757, 1, 2, 1310758, 1, 2, 1310759, 1, 2, 1310760, 1, 2, 1310761, 1, 2, 1310762, 1, 2, 1310763, 1, 2, 1310764, 1, 3, 1310776, 1, 196609, 1310777, 1, 196610, 1310778, 1, 196610, 1310779, 1, 196611, 1310781, 3, 0, 1310795, 1, 65536, 1376263, 3, 0, 1376274, 3, 0, 1376282, 3, 0, 1376291, 1, 1, 1376292, 1, 65538, 1376293, 1, 65538, 1376294, 1, 65538, 1376295, 1, 65538, 1376296, 1, 65538, 1376297, 1, 65538, 1376298, 1, 65538, 1376299, 1, 65538, 1376300, 1, 65539, 1376307, 1, 1, 1376308, 1, 2, 1376309, 1, 2, 1376310, 1, 3, 1376317, 1, 1, 1376318, 1, 3, 1376331, 1, 65536, 1507327, 1, 1, 1441792, 1, 2, 1441793, 1, 2, 1441794, 1, 2, 1441795, 1, 2, 1441796, 1, 2, 1441797, 1, 2, 1441798, 1, 2, 1441799, 1, 2, 1441800, 1, 2, 1441801, 1, 2, 1441802, 1, 2, 1441803, 1, 2, 1441804, 1, 2, 1441805, 1, 2, 1441806, 1, 2, 1441807, 1, 2, 1441808, 1, 2, 1441809, 1, 2, 1441810, 1, 2, 1441811, 1, 2, 1441812, 1, 2, 1441813, 1, 2, 1441814, 1, 2, 1441815, 1, 2, 1441816, 1, 2, 1441817, 1, 2, 1441818, 1, 2, 1441819, 1, 2, 1441820, 1, 2, 1441821, 1, 2, 1441822, 1, 2, 1441823, 1, 2, 1441824, 1, 2, 1441825, 1, 2, 1441826, 1, 2, 1441827, 1, 65538, 1441828, 1, 65538, 1441829, 1, 65538, 1441830, 1, 65538, 1441831, 1, 65538, 1441832, 1, 65538, 1441833, 1, 65538, 1441834, 1, 65538, 1441835, 1, 65538, 1441836, 1, 65538, 1441837, 1, 2, 1441838, 1, 2, 1441839, 1, 2, 1441840, 1, 2, 1441841, 1, 2, 1441842, 1, 2, 1441843, 1, 65538, 1441844, 1, 65538, 1441845, 1, 65538, 1441846, 1, 65538, 1441847, 1, 2, 1441848, 1, 2, 1441849, 1, 2, 1441850, 1, 2, 1441851, 1, 2, 1441852, 1, 2, 1441853, 1, 65538, 1441854, 1, 65538, 1441855, 1, 2, 1441856, 1, 2, 1441857, 1, 2, 1441858, 1, 2, 1441859, 1, 2, 1441860, 1, 2, 1441861, 1, 2, 1441862, 1, 2, 1441863, 1, 2, 1441864, 1, 2, 1441865, 1, 2, 1441866, 1, 2, 1441867, 1, 65538, 1441868, 1, 2, 1441869, 1, 2, 1441870, 1, 2, 1441871, 1, 2, 1441872, 1, 2, 1441873, 1, 2, 1441874, 1, 2, 1441875, 1, 2, 1441876, 1, 2, 1441877, 1, 2, 1441878, 1, 2, 1441879, 1, 2, 1441880, 1, 2, 1441881, 1, 2, 1441882, 1, 2, 1441883, 1, 2, 1441884, 1, 2, 1441885, 1, 2, 1441886, 1, 2, 1441887, 1, 2, 1441888, 1, 3, 1572863, 1, 65537, 1507328, 1, 65538, 1507329, 1, 65538, 1507330, 1, 65538, 1507331, 1, 65538, 1507332, 1, 65538, 1507333, 1, 65538, 1507334, 1, 65538, 1507335, 1, 65538, 1507336, 1, 65538, 1507337, 1, 65538, 1507338, 1, 65538, 1507339, 1, 65538, 1507340, 1, 65538, 1507341, 1, 65538, 1507342, 1, 65538, 1507343, 1, 65538, 1507344, 1, 65538, 1507345, 1, 65538, 1507346, 1, 65538, 1507347, 1, 65538, 1507348, 1, 65538, 1507349, 1, 65538, 1507350, 1, 65538, 1507351, 1, 65538, 1507352, 1, 65538, 1507353, 1, 65538, 1507354, 1, 65538, 1507355, 1, 65538, 1507356, 1, 65538, 1507357, 1, 65538, 1507358, 1, 65538, 1507359, 1, 65538, 1507360, 1, 65538, 1507361, 1, 65538, 1507362, 1, 65538, 1507363, 1, 65538, 1507364, 1, 65538, 1507365, 1, 65538, 1507366, 1, 65538, 1507367, 1, 65538, 1507368, 1, 65538, 1507369, 1, 65538, 1507370, 1, 65538, 1507371, 1, 65538, 1507372, 1, 65538, 1507373, 1, 65538, 1507374, 1, 65538, 1507375, 1, 65538, 1507376, 1, 65538, 1507377, 1, 65538, 1507378, 1, 65538, 1507379, 1, 65538, 1507380, 1, 65538, 1507381, 1, 65538, 1507382, 1, 65538, 1507383, 1, 65538, 1507384, 1, 65538, 1507385, 1, 65538, 1507386, 1, 65538, 1507387, 1, 65538, 1507388, 1, 65538, 1507389, 1, 65538, 1507390, 1, 65538, 1507391, 1, 65538, 1507392, 1, 65538, 1507393, 1, 65538, 1507394, 1, 65538, 1507395, 1, 65538, 1507396, 1, 65538, 1507397, 1, 65538, 1507398, 1, 65538, 1507399, 1, 65538, 1507400, 1, 65538, 1507401, 1, 65538, 1507402, 1, 65538, 1507403, 1, 65538, 1507404, 1, 65538, 1507405, 1, 65538, 1507406, 1, 65538, 1507407, 1, 65538, 1507408, 1, 65538, 1507409, 1, 65538, 1507410, 1, 65538, 1507411, 1, 65538, 1507412, 1, 65538, 1507413, 1, 65538, 1507414, 1, 65538, 1507415, 1, 65538, 1507416, 1, 65538, 1507417, 1, 65538, 1507418, 1, 65538, 1507419, 1, 65538, 1507420, 1, 65538, 1507421, 1, 65538, 1507422, 1, 65538, 1507423, 1, 65538, 1507424, 1, 65539, 1638399, 1, 131073, 1572864, 1, 131074, 1572865, 1, 131074, 1572866, 1, 131074, 1572867, 1, 131074, 1572868, 1, 131074, 1572869, 1, 131074, 1572870, 1, 131074, 1572871, 1, 131074, 1572872, 1, 131074, 1572873, 1, 131074, 1572874, 1, 131074, 1572875, 1, 131074, 1572876, 1, 131074, 1572877, 1, 131074, 1572878, 1, 131074, 1572879, 1, 131074, 1572880, 1, 131074, 1572881, 1, 131074, 1572882, 1, 131074, 1572883, 1, 131074, 1572884, 1, 131074, 1572885, 1, 131074, 1572886, 1, 131074, 1572887, 1, 131074, 1572888, 1, 131074, 1572889, 1, 131074, 1572890, 1, 131074, 1572891, 1, 131074, 1572892, 1, 131074, 1572893, 1, 131074, 1572894, 1, 131074, 1572895, 1, 131074, 1572896, 1, 131074, 1572897, 1, 131074, 1572898, 1, 131074, 1572899, 1, 131074, 1572900, 1, 131074, 1572901, 1, 131074, 1572902, 1, 131074, 1572903, 1, 131074, 1572904, 1, 131074, 1572905, 1, 131074, 1572906, 1, 131074, 1572907, 1, 131074, 1572908, 1, 131074, 1572909, 1, 131074, 1572910, 1, 131074, 1572911, 1, 131074, 1572912, 1, 131074, 1572913, 1, 131074, 1572914, 1, 131074, 1572915, 1, 131074, 1572916, 1, 131074, 1572917, 1, 131074, 1572918, 1, 131074, 1572919, 1, 131074, 1572920, 1, 131074, 1572921, 1, 131074, 1572922, 1, 131074, 1572923, 1, 131074, 1572924, 1, 131074, 1572925, 1, 131074, 1572926, 1, 131074, 1572927, 1, 131074, 1572928, 1, 131074, 1572929, 1, 131074, 1572930, 1, 131074, 1572931, 1, 131074, 1572932, 1, 131074, 1572933, 1, 131074, 1572934, 1, 131074, 1572935, 1, 131074, 1572936, 1, 131074, 1572937, 1, 131074, 1572938, 1, 131074, 1572939, 1, 131074, 1572940, 1, 131074, 1572941, 1, 131074, 1572942, 1, 131074, 1572943, 1, 131074, 1572944, 1, 131074, 1572945, 1, 131074, 1572946, 1, 131074, 1572947, 1, 131074, 1572948, 1, 131074, 1572949, 1, 131074, 1572950, 1, 131074, 1572951, 1, 131074, 1572952, 1, 131074, 1572953, 1, 131074, 1572954, 1, 131074, 1572955, 1, 131074, 1572956, 1, 131074, 1572957, 1, 131074, 1572958, 1, 131074, 1572959, 1, 131074, 1572960, 1, 131075, 2490371, 1, 0, 2490386, 1, 0, 2555907, 1, 65536, 2555922, 1, 65536, 2621441, 1, 196609, 2621442, 1, 196610, 2621443, 1, 131075, 2621448, 1, 196608, 2621453, 1, 196608, 2621458, 1, 131073, 2621459, 1, 196610, 2621460, 1, 196611, 2686980, 1, 0, 2686993, 1, 0, 2752516, 1, 131072, 2752529, 1, 131072, 2818053, 1, 196608, 2818064, 1, 196608, 2883590, 1, 196609, 2883591, 1, 196610, 2883592, 1, 2, 2883593, 1, 196610, 2883594, 1, 196610, 2883595, 1, 2, 2883596, 1, 196610, 2883597, 1, 2, 2883598, 1, 196610, 2883599, 1, 196611, 2949128, 1, 65536, 2949131, 1, 65536, 2949133, 1, 65536, 3014664, 1, 65536, 3014667, 1, 131072, 3014669, 1, 65536, 3080200, 1, 65536, 3080205, 1, 65536, 3145736, 1, 131072, 3145741, 1, 131072, 3211273, 1, 196609, 3211274, 1, 196610, 3211275, 1, 196610, 3211276, 1, 196611 ) + +[node name="Ore" type="TileMap" parent="."] +tile_set = ExtResource( 2 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 524320, 0, 196610, 524323, 0, 196609, 524324, 0, 196609, 524350, 0, 196610, 589854, 0, 196609, 852014, 0, 196610, 917547, 0, 196609, 917552, 0, 196609, 983071, 0, 196610, 1114198, 0, 196610, 1179728, 0, 196609, 1179729, 0, 196609, 1179737, 0, 196610, 1376294, 0, 196609, 1376295, 0, 196609, 1376298, 0, 196610, 1441828, 0, 196609, 1441846, 0, 196610, 1441851, 0, 196610, 1441860, 0, 196610, 1441876, 0, 196610, 1507337, 0, 196609, 1507341, 0, 196609, 1507346, 0, 196609, 1507347, 0, 196610, 1507354, 0, 196610, 1507364, 0, 196609, 1507365, 0, 196609, 1507370, 0, 196609, 1507373, 0, 196610, 1507376, 0, 196609, 1507377, 0, 196609, 1507378, 0, 196609, 1507386, 0, 196609, 1507393, 0, 196609, 1507401, 0, 196609, 1507402, 0, 196609, 1507406, 0, 196610, 1507409, 0, 196609, 1507410, 0, 196609, 1507418, 0, 196609, 1507421, 0, 196610 ) + +[node name="Player" parent="." instance=ExtResource( 1 )] +position = Vector2( 32, 176 ) + +[node name="Ladder" type="TileMap" parent="."] +tile_set = ExtResource( 22 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 9 +format = 1 +tile_data = PoolIntArray( 524330, 0, 65536, 524333, 0, 65536, 589866, 0, 65537, 589869, 0, 65537, 589891, 0, 65536, 589893, 0, 65536, 655402, 0, 65537, 655405, 0, 65537, 655427, 0, 65537, 655429, 0, 65537, 720938, 0, 65537, 720941, 0, 65537, 720963, 0, 65537, 720965, 0, 65537, 786445, 0, 65536, 786474, 0, 65537, 786477, 0, 65538, 786499, 0, 65537, 786501, 0, 65537, 851981, 0, 65537, 852010, 0, 65538, 852035, 0, 65537, 852037, 0, 65537, 917517, 0, 65537, 917571, 0, 65538, 917573, 0, 65538, 983053, 0, 65537, 1048589, 0, 65537, 1048650, 0, 65536, 1048652, 0, 65536, 1114125, 0, 65537, 1114186, 0, 65537, 1114188, 0, 65537, 1179661, 0, 65537, 1179722, 0, 65537, 1179724, 0, 65537, 1245197, 0, 65537, 1245258, 0, 65537, 1245260, 0, 65537, 1310733, 0, 65537, 1310794, 0, 65537, 1310796, 0, 65537, 1376269, 0, 65538, 1376330, 0, 65538, 1376332, 0, 65538 ) + +[node name="Death" type="TileMap" parent="." groups=["death"]] +light_mask = 0 +tile_set = ExtResource( 5 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 1179695, 1, 0, 1245226, 1, 0, 1245240, 1, 0, 1245243, 1, 0 ) + +[node name="Environment" type="Node2D" parent="."] + +[node name="FallingBlock" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 0, 144 ) + +[node name="FallingBlock2" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 64, 80 ) + +[node name="FallingBlock9" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 616, 48 ) + +[node name="FallingBlock12" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 648, 40 ) + +[node name="FallingBlock10" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 624, 48 ) + +[node name="FallingBlock11" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 632, 48 ) + +[node name="FallingBlock3" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 56, 80 ) + +[node name="FallingBlock7" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 456, 112 ) + +[node name="FallingBlock6" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 168, 56 ) + +[node name="FallingBlock8" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 376, 56 ) + +[node name="FallingBlock5" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 16, 64 ) + +[node name="FallingBlock4" parent="Environment" instance=ExtResource( 18 )] +position = Vector2( 48, 80 ) + +[node name="Ladder" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 104, 96 ) +scale = Vector2( 1, 10 ) + +[node name="Ladder2" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 336, 64 ) +scale = Vector2( 1, 6 ) +can_climb_right = false + +[node name="Ladder4" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 536, 72 ) +scale = Vector2( 1, 6 ) +can_climb_right = false + +[node name="Ladder5" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 552, 72 ) +scale = Vector2( 1, 6 ) +can_climb_left = false + +[node name="Ladder6" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 592, 128 ) +scale = Vector2( 1, 6 ) +can_climb_right = false + +[node name="Ladder7" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 608, 128 ) +scale = Vector2( 1, 6 ) +can_climb_left = false + +[node name="Ladder3" parent="Environment" instance=ExtResource( 9 )] +position = Vector2( 360, 64 ) +scale = Vector2( 1, 5 ) +can_climb_left = false + +[node name="Stalactite" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 64, 16 ) + +[node name="Stalactite6" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 64, 128 ) + +[node name="Stalactite2" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 120, 16 ) + +[node name="Stalactite4" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 136, 136 ) + +[node name="Stalactite3" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 192, 16 ) + +[node name="Stalactite7" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 176, 96 ) + +[node name="Stalactite11" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 320, 120 ) + +[node name="Stalactite9" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 296, 64 ) + +[node name="Stalactite10" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 424, 64 ) + +[node name="Stalactite13" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 528, 128 ) + +[node name="Stalactite14" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 544, 128 ) + +[node name="Stalactite15" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 560, 128 ) + +[node name="Stalactite12" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 408, 16 ) + +[node name="Stalactite16" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 712, 88 ) + +[node name="Stalactite17" parent="Environment" instance=ExtResource( 3 )] +position = Vector2( 720, 88 ) + +[node name="Barrier" parent="Environment" instance=ExtResource( 23 )] +position = Vector2( 144, 80 ) +scale = Vector2( 1, 16 ) +cost = 20 + +[node name="Enemies" type="Node2D" parent="."] + +[node name="Bat2" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 16, 120 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 + +[node name="Bat4" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 480, 104 ) +left_up_boundary = 5.0 +right_down_boundary = 2.0 + +[node name="Bat3" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 20, 64 ) +left_up_boundary = 3.0 +right_down_boundary = 4.0 +speed = 60 + +[node name="RollingFiend2" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 112, 40 ) + +[node name="RollingFiend3" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 296, 96 ) + +[node name="RollingFiend4" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 432, 96 ) + +[node name="RollingFiend6" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 456, 152 ) + +[node name="RollingFiend7" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 592, 40 ) + +[node name="RollingFiend8" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 712, 120 ) + +[node name="RollingFiend5" parent="Enemies" instance=ExtResource( 13 )] +position = Vector2( 376, 160 ) + +[node name="Snail" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 64, 112 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 + +[node name="Snail2" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 192, 168 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 + +[node name="Snail6" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 632, 168 ) +right_down_boundary = 14.0 + +[node name="Snail4" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 400, 48 ) +right_down_boundary = 6.0 + +[node name="Snail3" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 192, 120 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 + +[node name="Tentacle" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 568, 152 ) + +[node name="Bat8" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 576, 40 ) +left_up_boundary = 4.0 +right_down_boundary = 5.0 + +[node name="Snail5" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 696, 48 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 +slower_speed = 40 +faster_speed = 100 + +[node name="Collectibles" type="Node2D" parent="."] + +[node name="Shard" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 8, 136 ) + +[node name="Shard2" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 520, 112 ) +number = 1 + +[node name="Shard3" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 728, 48 ) +number = 2 + +[node name="Shard4" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 760, 168 ) +number = 3 + +[node name="Key" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 144, 120 ) + +[node name="Key3" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 48, 168 ) + +[node name="Key4" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 80, 168 ) + +[node name="Key28" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 264, 168 ) + +[node name="Key29" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 280, 160 ) + +[node name="Key30" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 304, 152 ) + +[node name="Key31" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 344, 152 ) + +[node name="Key32" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 520, 168 ) + +[node name="Key33" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 400, 144 ) + +[node name="Key34" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 408, 160 ) + +[node name="Key8" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 40, 40 ) + +[node name="Key9" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 80, 40 ) + +[node name="Key10" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 80, 72 ) + +[node name="Key11" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 32, 72 ) + +[node name="Key12" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 104, 40 ) + +[node name="Key13" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 144, 40 ) + +[node name="Key14" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 192, 48 ) + +[node name="Key15" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 224, 48 ) + +[node name="Key16" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 248, 48 ) + +[node name="Key17" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 272, 48 ) + +[node name="Key18" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 296, 48 ) + +[node name="Key19" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 544, 168 ) + +[node name="Key20" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 216, 120 ) + +[node name="Key21" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 240, 104 ) + +[node name="Key22" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 376, 96 ) + +[node name="Key25" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 376, 48 ) + +[node name="Key26" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 408, 48 ) + +[node name="Key27" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 440, 48 ) + +[node name="Key35" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 472, 48 ) + +[node name="Key36" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 504, 48 ) + +[node name="Key37" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 496, 160 ) + +[node name="Key38" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 432, 160 ) + +[node name="Key39" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 632, 128 ) + +[node name="Key40" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 672, 128 ) + +[node name="Key48" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 120, 168 ) + +[node name="Key49" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 168, 168 ) + +[node name="Key50" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 224, 168 ) + +[node name="Key41" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 688, 120 ) + +[node name="Key42" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 592, 40 ) + +[node name="Key43" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 664, 32 ) + +[node name="Key44" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 664, 168 ) + +[node name="Key46" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 696, 168 ) + +[node name="Key47" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 728, 168 ) + +[node name="Key45" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 632, 168 ) + +[node name="Key24" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 496, 112 ) + +[node name="Key23" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 424, 96 ) + +[node name="Key5" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 88, 112 ) + +[node name="Key6" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 24, 112 ) + +[node name="Key7" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 56, 112 ) + +[node name="Key2" parent="Collectibles" instance=ExtResource( 14 )] +position = Vector2( 632, 104 ) + +[node name="Star" parent="Collectibles" instance=ExtResource( 15 )] +position = Vector2( 128, 88 ) + +[node name="Star2" parent="Collectibles" instance=ExtResource( 15 )] +position = Vector2( 392, 168 ) +color = 2 + +[node name="Star3" parent="Collectibles" instance=ExtResource( 15 )] +position = Vector2( 320, 104 ) +color = 1 + +[node name="Star4" parent="Collectibles" instance=ExtResource( 15 )] +position = Vector2( 584, 168 ) +color = 3 + +[node name="Arrow" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 124, 40 ) + +[node name="Arrow2" parent="Collectibles" instance=ExtResource( 20 )] +position = Vector2( 720, 72 ) + +[node name="Star5" parent="Collectibles" instance=ExtResource( 15 )] +position = Vector2( 752, 112 ) +color = 4 + +[node name="Sparkles" type="Node2D" parent="."] + +[node name="Green" type="Node2D" parent="Sparkles"] + +[node name="Sparkles" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 108, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles2" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 148, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles3" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 76, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles4" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 292, 180 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles5" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 300, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles6" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 292, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles7" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 308, 172 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles8" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 316, 172 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles9" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 340, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles10" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 388, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles11" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 396, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles12" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 404, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles13" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 468, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles14" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 588, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles15" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 596, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles16" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 652, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles17" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 660, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles18" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 724, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles19" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 652, 148 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles20" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 644, 148 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles21" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 292, 68 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles22" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 284, 68 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles23" type="CPUParticles2D" parent="Sparkles/Green"] +position = Vector2( 244, 76 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 0.709804, 1, 0.74902, 1 ) +script = ExtResource( 31 ) + +[node name="Red" type="Node2D" parent="Sparkles"] + +[node name="Sparkles24" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 156, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles25" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 212, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles26" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 260, 68 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles27" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 252, 124 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles28" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 372, 108 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles29" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 340, 172 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles30" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 364, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles31" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 436, 180 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles32" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 476, 180 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles33" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 500, 68 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles34" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 548, 180 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles35" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 628, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles36" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 676, 180 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles37" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 748, 188 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles38" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 716, 148 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="Sparkles39" type="CPUParticles2D" parent="Sparkles/Red"] +position = Vector2( 692, 140 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 32 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 31 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( -4, 96 ) +shape = SubResource( 1 ) + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( 772, 96 ) +shape = SubResource( 1 ) + +[node name="ColorRect" type="ColorRect" parent="."] +margin_left = 256.0 +margin_right = 512.0 +margin_bottom = 192.0 +color = Color( 0, 1, 0.180392, 0.0627451 ) +script = ExtResource( 19 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="ColorRect2" type="ColorRect" parent="."] +margin_left = 512.0 +margin_right = 768.0 +margin_bottom = 192.0 +color = Color( 1, 0, 0.890196, 0.0627451 ) +script = ExtResource( 19 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="Exit" parent="." instance=ExtResource( 24 )] +position = Vector2( 656, 100 ) +cost = 25 + +[node name="SpeccyArea" type="Area2D" parent="."] +position = Vector2( 536, 176 ) +collision_layer = 0 +collision_mask = 128 +monitorable = false +script = ExtResource( 34 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="SpeccyArea"] +position = Vector2( 4, -20 ) +shape = SubResource( 3 ) + +[node name="Speccy" parent="SpeccyArea" instance=ExtResource( 33 )] +position = Vector2( 64, -56 ) +flip = true +message = "shoot_that_thing" + +[connection signal="body_entered" from="SpeccyArea" to="SpeccyArea" method="_on_body_entered"] diff --git a/maps/cave_speccy_detector.gd b/maps/cave_speccy_detector.gd new file mode 100644 index 0000000..192e595 --- /dev/null +++ b/maps/cave_speccy_detector.gd @@ -0,0 +1,10 @@ +extends Area2D + + +var speccy_urgent_warning: bool = true + + +func _on_body_entered(body: Node) -> void: + if speccy_urgent_warning: + $Speccy.appear() + speccy_urgent_warning = false diff --git a/maps/copper.tscn b/maps/copper.tscn deleted file mode 100644 index 61c6ab7..0000000 --- a/maps/copper.tscn +++ /dev/null @@ -1,27 +0,0 @@ -[gd_scene load_steps=6 format=2] - -[ext_resource path="res://graphics/backgrounds/copper.png" type="Texture" id=1] -[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=2] -[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=3] -[ext_resource path="res://maps/map.gd" type="Script" id=4] -[ext_resource path="res://tilesets/t_copper.tres" type="TileSet" id=5] - -[node name="Map" type="Node2D" groups=["map"]] -pause_mode = 1 -script = ExtResource( 4 ) - -[node name="Camera2D" parent="." instance=ExtResource( 3 )] - -[node name="Sprite" type="Sprite" parent="Camera2D"] -position = Vector2( 128, 96 ) -z_index = -2 -texture = ExtResource( 1 ) - -[node name="Player" parent="." instance=ExtResource( 2 )] -position = Vector2( 32, 152 ) - -[node name="TileMap" type="TileMap" parent="."] -tile_set = ExtResource( 5 ) -cell_size = Vector2( 8, 8 ) -format = 1 -tile_data = PoolIntArray( 1310731, 0, 65536, 1310732, 0, 65537, 1310733, 0, 65537, 1310734, 0, 65538, 1441792, 0, 65539, 1441793, 0, 65539, 1441794, 0, 65539, 1441795, 0, 65539, 1441796, 0, 65539, 1441797, 0, 65539, 1441798, 0, 65539, 1441799, 0, 65539, 1441800, 0, 65539, 1441801, 0, 65539, 1441802, 0, 65539, 1441803, 0, 65539, 1441804, 0, 65539, 1441805, 0, 65539, 1441806, 0, 65539, 1441807, 0, 65539, 1441808, 0, 65539, 1441809, 0, 65539, 1441810, 0, 65539, 1441811, 0, 65539, 1441812, 0, 65539, 1441813, 0, 65539, 1441814, 0, 65539, 1441815, 0, 65539, 1441816, 0, 65539, 1441817, 0, 65539, 1441818, 0, 65539, 1441819, 0, 65539, 1441820, 0, 65539, 1441821, 0, 65539, 1441822, 0, 65539, 1441823, 0, 65539, 1507328, 0, 65539, 1507329, 0, 65539, 1507330, 0, 65539, 1507331, 0, 65539, 1507332, 0, 65539, 1507333, 0, 65539, 1507334, 0, 65539, 1507335, 0, 65539, 1507336, 0, 65539, 1507337, 0, 65539, 1507338, 0, 65539, 1507339, 0, 65539, 1507340, 0, 65539, 1507341, 0, 65539, 1507342, 0, 65539, 1507343, 0, 65539, 1507344, 0, 65539, 1507345, 0, 65539, 1507346, 0, 65539, 1507347, 0, 65539, 1507348, 0, 65539, 1507349, 0, 65539, 1507350, 0, 65539, 1507351, 0, 65539, 1507352, 0, 65539, 1507353, 0, 65539, 1507354, 0, 65539, 1507355, 0, 65539, 1507356, 0, 65539, 1507357, 0, 65539, 1507358, 0, 65539, 1507359, 0, 65539 ) diff --git a/maps/demo_end.tscn b/maps/demo_end.tscn deleted file mode 100644 index 51e4a54..0000000 --- a/maps/demo_end.tscn +++ /dev/null @@ -1,30 +0,0 @@ -[gd_scene load_steps=2 format=2] - -[ext_resource path="res://maps/demo_end.gd" type="Script" id=1] - -[node name="DemoEnd" type="Node2D"] -script = ExtResource( 1 ) - -[node name="ColorRect" type="ColorRect" parent="."] -margin_right = 259.0 -margin_bottom = 196.0 -color = Color( 0, 0, 0, 1 ) - -[node name="Label" type="Label" parent="."] -margin_left = 13.0 -margin_top = 24.0 -margin_right = 112.0 -margin_bottom = 38.0 -text = "Congratulations! you beat the demo! -Your high score is: - - - -Press \"R\" to play again!" - -[node name="Score" type="Label" parent="."] -margin_left = 136.0 -margin_top = 41.0 -margin_right = 235.0 -margin_bottom = 55.0 -text = "000000" diff --git a/maps/factory.tscn b/maps/factory.tscn deleted file mode 100644 index 1e7a01c..0000000 --- a/maps/factory.tscn +++ /dev/null @@ -1,113 +0,0 @@ -[gd_scene load_steps=12 format=2] - -[ext_resource path="res://maps/map.gd" type="Script" id=1] -[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=2] -[ext_resource path="res://graphics/backgrounds/factory.png" type="Texture" id=3] -[ext_resource path="res://objects/player/player_scholar.tscn" type="PackedScene" id=4] -[ext_resource path="res://tilesets/t_factory.tres" type="TileSet" id=5] -[ext_resource path="res://objects/environment/tube/tube_entrance.tscn" type="PackedScene" id=6] -[ext_resource path="res://objects/environment/tube/tube_exit.tscn" type="PackedScene" id=7] -[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=8] -[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=9] -[ext_resource path="res://objects/environment/turret/turret.tscn" type="PackedScene" id=10] - -[sub_resource type="RectangleShape2D" id=5] -extents = Vector2( 8, 16 ) - -[node name="Map" type="Node2D" groups=["map"]] -script = ExtResource( 1 ) - -[node name="Sectors" type="CanvasLayer" parent="."] -layer = -100 -visible = false - -[node name="ColorRect" type="ColorRect" parent="Sectors"] -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 256.0 -margin_right = 256.0 -color = Color( 1, 0, 0.960784, 0.121569 ) - -[node name="ColorRect4" type="ColorRect" parent="Sectors"] -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 256.0 -margin_top = 192.0 -margin_right = 256.0 -margin_bottom = 192.0 -color = Color( 0.101961, 1, 0, 0.121569 ) - -[node name="ColorRect3" type="ColorRect" parent="Sectors"] -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 256.0 -margin_top = -192.0 -margin_right = 256.0 -margin_bottom = -192.0 -color = Color( 1, 0, 0, 0.121569 ) - -[node name="ColorRect2" type="ColorRect" parent="Sectors"] -anchor_right = 1.0 -anchor_bottom = 1.0 -margin_left = 512.0 -margin_right = 512.0 -color = Color( 0, 0.0627451, 1, 0.121569 ) - -[node name="BackgroundLayer" type="CanvasLayer" parent="."] -layer = -50 - -[node name="Sprite" type="Sprite" parent="BackgroundLayer"] -texture = ExtResource( 3 ) -centered = false - -[node name="Camera2D" parent="." instance=ExtResource( 2 )] -scroll_v = true - -[node name="Ground" type="TileMap" parent="."] -tile_set = ExtResource( 5 ) -cell_size = Vector2( 8, 8 ) -format = 1 -tile_data = PoolIntArray( -65523, 1610612739, 0, -65512, 1610612738, 0, -65509, 1610612737, 0, -65508, 1610612737, 0, -65507, 1610612737, 0, -65506, 1610612737, 0, -65505, 1610612737, 0, -65504, 1610612737, 0, -65503, 1610612737, 0, -65502, 1610612737, 0, 13, 1610612739, 0, 65549, 1610612739, 0, 65554, 0, 0, 65555, 0, 2, 65556, 0, 0, 131085, 1610612739, 0, 131090, -1073741824, 2, 131091, 0, 65536, 131092, -1073741824, 2, 131096, 3, 0, 196621, 1610612739, 0, 196626, 0, 0, 196627, 0, 2, 196628, 0, 0, 196632, 3, 0, 262145, 1610612738, 0, 262148, 1, 0, 262149, 1, 0, 262150, 1, 0, 262151, 1, 0, 262152, 1, 0, 262153, 1, 0, 262154, 1, 0, 262155, 1, 0, 262156, 1, 0, 262157, 2, 0, 262168, 3, 0, 327696, 1610612738, 0, 327699, 1, 0, 327700, 1, 0, 327701, 1, 0, 327702, 1, 0, 327703, 1, 0, 327704, 2, 0, 393233, 0, 65536, 393241, 0, 0, 458753, 1610612739, 0, 524289, 1610612739, 0, 524292, 1610612738, 0, 524295, 1, 0, 524296, 1, 0, 524297, 1, 0, 524298, 1, 0, 524299, 1, 0, 524300, 1, 0, 524301, 1, 0, 524302, 1, 0, 524303, 1, 0, 524304, 1, 0, 524305, 1, 0, 524306, 1, 0, 524307, 1, 0, 524308, 1, 0, 524309, -1073741822, 0, 589825, 1610612739, 0, 655361, 1610612739, 0, 720897, 1610612739, 0, 720900, 3, 0, 720917, 3, 0, 786433, 1610612739, 0, 786436, 3, 0, 786453, 3, 0, 851969, 1610612739, 0, 851989, 3, 0, 917517, 1, 0, 917518, 1, 0, 917519, 1, 0, 917520, 1, 0, 917521, 1, 0, 917522, 1, 0, 917523, 1, 0, 917524, 1, 0, 917525, 2, 0, 1114122, 0, 0, 1114123, 0, 2, 1114124, 0, 2, 1114125, 0, 0, 1179658, -1073741824, 2, 1179659, 0, 65536, 1179660, 0, 65536, 1179661, -1073741824, 2, 1245194, 0, 0, 1245195, 0, 2, 1245196, 0, 2, 1245197, 0, 0, 1310721, 0, 1, 1310722, 0, 2, 1310723, 0, 2, 1310724, 0, 2, 1310725, 0, 2, 1310726, 0, 2, 1310727, 0, 2, 1310728, 0, 2, 1310729, 0, 3 ) - -[node name="Player" parent="." instance=ExtResource( 4 )] -position = Vector2( 40, 160 ) - -[node name="Ladder2" type="TileMap" parent="."] -tile_set = ExtResource( 8 ) -cell_size = Vector2( 8, 8 ) -format = 1 -tile_data = PoolIntArray( 1114119, 0, 196610, 1179655, 0, 196610, 1245191, 0, 196610 ) - -[node name="Ladder" parent="." instance=ExtResource( 9 )] -position = Vector2( 56, 136 ) -scale = Vector2( 1, 3 ) - -[node name="Turret" parent="." instance=ExtResource( 10 )] -position = Vector2( 96, 160 ) - -[node name="Area2D" type="Area2D" parent="."] -position = Vector2( 8, 160 ) - -[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] -position = Vector2( 0, -16 ) -shape = SubResource( 5 ) - -[node name="TubeEntrance" parent="." instance=ExtResource( 6 )] -position = Vector2( 104, 120 ) - -[node name="TubeEntrance2" parent="." instance=ExtResource( 6 )] -position = Vector2( 176, 120 ) -direction = Vector2( 0, -1 ) - -[node name="TubeEntrance3" parent="." instance=ExtResource( 6 )] -position = Vector2( 176, 72 ) -direction = Vector2( -1, 0 ) - -[node name="TubeEntrance4" parent="." instance=ExtResource( 6 )] -position = Vector2( 40, 72 ) -direction = Vector2( 0, 1 ) - -[node name="TubeExit" parent="." instance=ExtResource( 7 )] -position = Vector2( 40, 104 ) - -[connection signal="tree_entered" from="Sectors" to="Sectors" method="set_visible" binds= [ false ]] diff --git a/maps/graffiti.gd b/maps/graffiti.gd new file mode 100644 index 0000000..6bbcbd6 --- /dev/null +++ b/maps/graffiti.gd @@ -0,0 +1,7 @@ +extends Node2D + +func _ready(): + var save = Save.current_file + var id = LevelData.levels[Game.current_level].save_id + if !save.levels[id].shards_collected[1]: + visible = false diff --git a/maps/graveyard.tscn b/maps/graveyard.tscn index 2927600..16134a4 100644 --- a/maps/graveyard.tscn +++ b/maps/graveyard.tscn @@ -1,6 +1,6 @@ -[gd_scene load_steps=21 format=2] +[gd_scene load_steps=27 format=2] -[ext_resource path="res://objects/player/player_scholar.tscn" type="PackedScene" id=1] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=1] [ext_resource path="res://maps/map.gd" type="Script" id=2] [ext_resource path="res://graphics/backgrounds/night.png" type="Texture" id=3] [ext_resource path="res://tilesets/t_horror.tres" type="TileSet" id=4] @@ -20,12 +20,20 @@ [ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=18] [ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=19] [ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=20] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=21] +[ext_resource path="res://scripts/has_splash.gd" type="Script" id=22] +[ext_resource path="res://objects/lore/graveyard/hellarcher.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/lore/graveyard/woeful_soul.tscn" type="PackedScene" id=24] +[ext_resource path="res://objects/lore/graveyard/graveyard.tscn" type="PackedScene" id=25] +[ext_resource path="res://objects/lore/graveyard/artificial_soul.tscn" type="PackedScene" id=26] [node name="Map" type="Node2D" groups=["map"]] pause_mode = 1 script = ExtResource( 2 ) +target_time_any = 40 +target_time_100 = 145 music = ExtResource( 11 ) -lore_entries = [ ] +lore_entries = [ ExtResource( 25 ), ExtResource( 26 ), ExtResource( 23 ), ExtResource( 24 ) ] [node name="Background" type="CanvasLayer" parent="."] layer = -1 @@ -37,11 +45,13 @@ __meta__ = { "_edit_lock_": true } -[node name="Ground" type="TileMap" parent="."] +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 21 ) tile_set = ExtResource( 4 ) cell_size = Vector2( 8, 8 ) format = 1 -tile_data = PoolIntArray( -65537, 1, 0, -130976, 1, 0, -1, 1, 65536, -65492, 0, 0, -65440, 1, 65536, 65535, 1, 65536, 31, 0, 0, 44, 0, 65536, 96, 1, 65536, 131071, 1, 65536, 65567, 0, 65536, 65580, 0, 65536, 65632, 1, 65536, 196607, 1, 65536, 131103, 0, 65536, 131116, 0, 65536, 131134, 2, 65536, 131168, 1, 65536, 262143, 1, 65536, 196610, 0, 196609, 196611, 0, 196610, 196612, 0, 196610, 196613, 0, 196610, 196614, 0, 196610, 196615, 0, 196610, 196616, 0, 196610, 196617, 0, 196610, 196618, 0, 196610, 196619, 0, 196610, 196620, 0, 196611, 196639, 0, 65536, 196652, 0, 65536, 196659, 2, 65536, 196661, 2, 65537, 196663, 2, 65536, 196665, 2, 65539, 196667, 2, 65536, 196668, 1, 1, 196669, 1, 2, 196670, 1, 2, 196671, 1, 2, 196672, 1, 2, 196673, 1, 3, 196695, 1, 196608, 196699, 1, 196609, 196700, 1, 196610, 196701, 1, 196610, 196702, 1, 196611, 196704, 1, 65536, 327679, 1, 131072, 262159, 0, 196609, 262160, 0, 196610, 262161, 0, 196611, 262164, 0, 196609, 262165, 0, 196610, 262166, 0, 196610, 262167, 0, 196610, 262168, 0, 196610, 262169, 0, 196610, 262170, 0, 196611, 262175, 0, 131072, 262188, 0, 65536, 262190, 1, 196609, 262191, 1, 196610, 262192, 1, 196610, 262193, 1, 196610, 262194, 1, 196610, 262195, 1, 196610, 262196, 1, 196610, 262197, 1, 196610, 262198, 1, 196610, 262199, 1, 196610, 262200, 1, 196610, 262201, 1, 196610, 262202, 1, 196610, 262203, 1, 196610, 262204, 1, 131074, 262205, 1, 131074, 262206, 1, 131074, 262207, 1, 131074, 262208, 1, 131074, 262209, 1, 131075, 262218, 2, 65537, 262224, 1, 196609, 262225, 1, 196610, 262226, 1, 196610, 262227, 1, 196611, 262240, 1, 65536, 393215, 0, 196609, 327680, 0, 196611, 327724, 0, 65536, 327752, 1, 196609, 327753, 1, 196610, 327754, 1, 196610, 327755, 1, 196610, 327756, 1, 196611, 327776, 1, 65536, 458751, 1, 0, 393255, 0, 1, 393256, 0, 196610, 393257, 0, 196610, 393258, 0, 196610, 393259, 0, 196610, 393260, 0, 131075, 393279, 2, 65536, 393312, 1, 65536, 524287, 1, 65536, 458752, 0, 196609, 458753, 0, 196610, 458754, 0, 196611, 458757, 0, 196609, 458758, 0, 196610, 458759, 0, 196611, 458788, 0, 1, 458789, 0, 196610, 458790, 0, 196610, 458791, 0, 131075, 458811, 2, 65536, 458813, 1, 1, 458814, 1, 196610, 458815, 1, 196610, 458816, 1, 196610, 458817, 1, 196610, 458818, 1, 196611, 458845, 2, 65536, 458848, 1, 65536, 589823, 1, 65536, 524321, 0, 1, 524322, 0, 196610, 524323, 0, 196610, 524324, 0, 131075, 524346, 1, 196609, 524347, 1, 196610, 524348, 1, 196610, 524349, 1, 131075, 524365, 2, 65539, 524379, 1, 1, 524380, 1, 2, 524381, 1, 2, 524382, 1, 2, 524383, 1, 2, 524384, 1, 65539, 655359, 1, 65536, 589854, 0, 1, 589855, 0, 196610, 589856, 0, 196610, 589857, 0, 131075, 589900, 1, 1, 589901, 1, 3, 589915, 1, 131073, 589916, 1, 131074, 589917, 1, 131074, 589918, 1, 131074, 589919, 1, 131074, 589920, 1, 65539, 720895, 1, 65536, 655374, 0, 196609, 655375, 0, 196610, 655376, 0, 196610, 655377, 0, 196610, 655378, 0, 196610, 655379, 0, 196610, 655380, 0, 196610, 655381, 0, 196610, 655382, 0, 196610, 655383, 0, 196610, 655384, 0, 196610, 655385, 0, 196610, 655386, 0, 196611, 655389, 0, 196609, 655390, 0, 131075, 655406, 2, 65536, 655408, 2, 65538, 655410, 2, 65536, 655432, 2, 65539, 655436, 1, 65537, 655437, 1, 65539, 655442, 1, 196609, 655443, 1, 196611, 655456, 1, 65536, 786431, 1, 65536, 720939, 1, 1, 720940, 1, 2, 720941, 1, 2, 720942, 1, 2, 720943, 1, 2, 720944, 1, 2, 720945, 1, 2, 720946, 1, 2, 720947, 1, 2, 720948, 1, 2, 720949, 1, 3, 720955, 2, 65536, 720958, 2, 65536, 720967, 1, 1, 720968, 1, 3, 720972, 1, 131073, 720973, 1, 131075, 720981, 2, 65537, 720992, 1, 65536, 851967, 1, 65536, 786442, 0, 196609, 786443, 0, 196610, 786444, 0, 196611, 786471, 2, 65536, 786475, 1, 131073, 786476, 1, 131074, 786477, 1, 131074, 786478, 1, 131074, 786479, 1, 131074, 786480, 1, 65538, 786481, 1, 65538, 786482, 1, 131074, 786483, 1, 131074, 786484, 1, 131074, 786485, 1, 131075, 786490, 1, 196609, 786491, 1, 196610, 786492, 1, 196610, 786493, 1, 196610, 786494, 1, 196610, 786495, 1, 2, 786496, 1, 2, 786497, 1, 3, 786503, 1, 131073, 786504, 1, 131075, 786517, 1, 1, 786518, 1, 3, 786528, 1, 65536, 917503, 1, 65536, 852007, 1, 1, 852008, 1, 3, 852016, 1, 65537, 852017, 1, 65539, 852031, 1, 65537, 852032, 1, 65538, 852033, 1, 65538, 852034, 1, 3, 852040, 0, 0, 852053, 1, 131073, 852054, 1, 131074, 852055, 1, 196610, 852056, 1, 196610, 852057, 1, 196610, 852058, 1, 196610, 852059, 1, 196610, 852060, 1, 196610, 852061, 1, 196610, 852062, 1, 196610, 852063, 1, 196610, 852064, 1, 65539, 983039, 1, 65536, 917512, 2, 65536, 917515, 2, 65538, 917518, 2, 65536, 917528, 0, 196609, 917529, 0, 196610, 917530, 0, 196611, 917543, 1, 131073, 917544, 1, 131075, 917552, 1, 65537, 917553, 1, 65539, 917567, 1, 65537, 917568, 1, 65538, 917569, 1, 131074, 917570, 1, 131075, 917576, 0, 131073, 917577, 0, 196610, 917578, 0, 196610, 917579, 0, 196610, 917580, 0, 3, 917600, 1, 65536, 1048575, 1, 65536, 983048, 1, 1, 983049, 1, 2, 983050, 1, 2, 983051, 1, 2, 983052, 1, 2, 983053, 1, 2, 983054, 1, 3, 983075, 1, 1, 983076, 1, 3, 983088, 1, 65537, 983089, 1, 65539, 983103, 1, 65537, 983104, 1, 65539, 983116, 0, 131073, 983117, 0, 196610, 983118, 0, 196610, 983119, 0, 196611, 983136, 1, 65536, 1114111, 1, 65536, 1048584, 1, 131073, 1048585, 1, 131074, 1048586, 1, 131074, 1048587, 1, 131074, 1048588, 1, 131074, 1048589, 1, 131074, 1048590, 1, 131075, 1048605, 2, 65537, 1048609, 2, 65536, 1048611, 1, 65537, 1048612, 1, 65539, 1048624, 1, 131073, 1048625, 1, 131075, 1048627, 1, 196609, 1048628, 1, 196610, 1048629, 1, 196610, 1048630, 1, 196610, 1048631, 1, 196610, 1048632, 1, 196610, 1048633, 1, 196610, 1048634, 1, 196610, 1048635, 1, 196610, 1048636, 1, 196610, 1048637, 1, 196610, 1048638, 1, 196610, 1048639, 1, 131074, 1048640, 1, 65539, 1048672, 1, 65536, 1179647, 1, 65536, 1114141, 1, 1, 1114142, 1, 2, 1114143, 1, 2, 1114144, 1, 2, 1114145, 1, 2, 1114146, 1, 2, 1114147, 1, 65538, 1114148, 1, 65539, 1114176, 1, 131073, 1114177, 1, 196610, 1114178, 1, 196611, 1114196, 2, 65536, 1114198, 2, 65538, 1114200, 2, 65536, 1114204, 2, 65536, 1114205, 2, 65537, 1114208, 1, 65536, 1245183, 1, 65536, 1179652, 0, 196609, 1179653, 0, 196610, 1179654, 0, 196611, 1179675, 1, 196609, 1179676, 1, 196610, 1179677, 1, 131074, 1179678, 1, 131074, 1179679, 1, 131074, 1179680, 1, 131074, 1179681, 1, 131074, 1179682, 1, 131074, 1179683, 1, 131074, 1179684, 1, 131075, 1179732, 1, 196609, 1179733, 1, 196610, 1179734, 1, 196610, 1179735, 1, 196610, 1179736, 1, 196610, 1179737, 1, 196610, 1179738, 1, 196610, 1179739, 1, 196610, 1179740, 1, 196610, 1179741, 1, 196610, 1179742, 1, 196610, 1179743, 1, 196610, 1179744, 1, 65539, 1310719, 1, 65536, 1245280, 1, 65536, 1376255, 1, 65536, 1310720, 0, 196609, 1310721, 0, 196611, 1310732, 2, 65536, 1310734, 2, 65539, 1310736, 2, 65536, 1310742, 2, 65536, 1310757, 2, 65537, 1310816, 1, 65536, 1441791, 1, 65536, 1376258, 2, 65538, 1376262, 2, 65536, 1376266, 1, 1, 1376267, 1, 2, 1376268, 1, 2, 1376269, 1, 2, 1376270, 1, 2, 1376271, 1, 2, 1376272, 1, 2, 1376273, 1, 2, 1376274, 1, 2, 1376275, 1, 2, 1376276, 1, 2, 1376277, 1, 2, 1376278, 1, 3, 1376281, 3, 1, 1376283, 2, 65536, 1376287, 2, 65537, 1376289, 2, 65536, 1376290, 2, 65536, 1376291, 2, 65536, 1376292, 1, 1, 1376293, 1, 2, 1376294, 1, 3, 1376301, 2, 65536, 1376303, 2, 65539, 1376304, 2, 65536, 1376305, 2, 65539, 1376308, 2, 65536, 1376322, 2, 65536, 1376324, 2, 65538, 1376326, 2, 65536, 1376336, 2, 65536, 1376338, 2, 65539, 1376340, 2, 65536, 1376342, 2, 65539, 1376344, 2, 65536, 1376352, 1, 65536, 1507327, 1, 65537, 1441792, 1, 2, 1441793, 1, 2, 1441794, 1, 2, 1441795, 1, 2, 1441796, 1, 2, 1441797, 1, 2, 1441798, 1, 2, 1441799, 1, 2, 1441800, 1, 2, 1441801, 1, 2, 1441802, 1, 65538, 1441803, 1, 65538, 1441804, 1, 65538, 1441805, 1, 65538, 1441806, 1, 65538, 1441807, 1, 65538, 1441808, 1, 65538, 1441809, 1, 65538, 1441810, 1, 65538, 1441811, 1, 65538, 1441812, 1, 65538, 1441813, 1, 65538, 1441814, 1, 65538, 1441815, 1, 2, 1441816, 1, 2, 1441817, 1, 2, 1441818, 1, 2, 1441819, 1, 2, 1441820, 1, 2, 1441821, 1, 2, 1441822, 1, 2, 1441823, 1, 2, 1441824, 1, 2, 1441825, 1, 2, 1441826, 1, 2, 1441827, 1, 2, 1441828, 1, 65538, 1441829, 1, 65538, 1441830, 1, 65539, 1441836, 1, 1, 1441837, 1, 2, 1441838, 1, 2, 1441839, 1, 2, 1441840, 1, 2, 1441841, 1, 2, 1441842, 1, 2, 1441843, 1, 2, 1441844, 1, 2, 1441845, 1, 3, 1441851, 1, 1, 1441852, 1, 2, 1441853, 1, 2, 1441854, 1, 2, 1441855, 1, 2, 1441856, 1, 2, 1441857, 1, 2, 1441858, 1, 2, 1441859, 1, 2, 1441860, 1, 2, 1441861, 1, 2, 1441862, 1, 2, 1441863, 1, 2, 1441864, 1, 3, 1441870, 1, 1, 1441871, 1, 2, 1441872, 1, 2, 1441873, 1, 2, 1441874, 1, 2, 1441875, 1, 2, 1441876, 1, 2, 1441877, 1, 2, 1441878, 1, 2, 1441879, 1, 2, 1441880, 1, 2, 1441881, 1, 2, 1441882, 1, 2, 1441883, 1, 2, 1441884, 1, 2, 1441885, 1, 2, 1441886, 1, 2, 1441887, 1, 2, 1441888, 1, 65539, 1572863, 1, 65537, 1507328, 1, 65538, 1507329, 1, 65538, 1507330, 1, 65538, 1507331, 1, 65538, 1507332, 1, 65538, 1507333, 1, 65538, 1507334, 1, 65538, 1507335, 1, 65538, 1507336, 1, 65538, 1507337, 1, 65538, 1507338, 1, 65538, 1507339, 1, 65538, 1507340, 1, 65538, 1507341, 1, 65538, 1507342, 1, 65538, 1507343, 1, 65538, 1507344, 1, 65538, 1507345, 1, 65538, 1507346, 1, 65538, 1507347, 1, 65538, 1507348, 1, 65538, 1507349, 1, 65538, 1507350, 1, 65538, 1507351, 1, 65538, 1507352, 1, 65538, 1507353, 1, 65538, 1507354, 1, 65538, 1507355, 1, 65538, 1507356, 1, 65538, 1507357, 1, 65538, 1507358, 1, 65538, 1507359, 1, 65538, 1507360, 1, 65538, 1507361, 1, 65538, 1507362, 1, 65538, 1507363, 1, 65538, 1507364, 1, 65538, 1507365, 1, 65538, 1507366, 1, 65539, 1507372, 1, 65537, 1507373, 1, 65538, 1507374, 1, 65538, 1507375, 1, 65538, 1507376, 1, 65538, 1507377, 1, 65538, 1507378, 1, 65538, 1507379, 1, 65538, 1507380, 1, 65538, 1507381, 1, 65539, 1507387, 1, 65537, 1507388, 1, 65538, 1507389, 1, 65538, 1507390, 1, 65538, 1507391, 1, 65538, 1507392, 1, 65538, 1507393, 1, 65538, 1507394, 1, 65538, 1507395, 1, 65538, 1507396, 1, 65538, 1507397, 1, 65538, 1507398, 1, 65538, 1507399, 1, 65538, 1507400, 1, 65539, 1507406, 1, 65537, 1507407, 1, 65538, 1507408, 1, 65538, 1507409, 1, 65538, 1507410, 1, 65538, 1507411, 1, 65538, 1507412, 1, 65538, 1507413, 1, 65538, 1507414, 1, 65538, 1507415, 1, 65538, 1507416, 1, 65538, 1507417, 1, 65538, 1507418, 1, 65538, 1507419, 1, 65538, 1507420, 1, 65538, 1507421, 1, 65538, 1507422, 1, 65538, 1507423, 1, 65538, 1507424, 1, 65539, 1638399, 1, 131073, 1572864, 1, 131074, 1572865, 1, 131074, 1572866, 1, 131074, 1572867, 1, 131074, 1572868, 1, 131074, 1572869, 1, 131074, 1572870, 1, 131074, 1572871, 1, 131074, 1572872, 1, 131074, 1572873, 1, 131074, 1572874, 1, 131074, 1572875, 1, 131074, 1572876, 1, 131074, 1572877, 1, 131074, 1572878, 1, 131074, 1572879, 1, 131074, 1572880, 1, 131074, 1572881, 1, 131074, 1572882, 1, 131074, 1572883, 1, 131074, 1572884, 1, 131074, 1572885, 1, 131074, 1572886, 1, 131074, 1572887, 1, 131074, 1572888, 1, 131074, 1572889, 1, 131074, 1572890, 1, 131074, 1572891, 1, 131074, 1572892, 1, 131074, 1572893, 1, 131074, 1572894, 1, 131074, 1572895, 1, 131074, 1572896, 1, 131074, 1572897, 1, 131074, 1572898, 1, 131074, 1572899, 1, 131074, 1572900, 1, 131074, 1572901, 1, 131074, 1572902, 1, 131075, 1572908, 1, 131073, 1572909, 1, 131074, 1572910, 1, 131074, 1572911, 1, 131074, 1572912, 1, 131074, 1572913, 1, 131074, 1572914, 1, 131074, 1572915, 1, 131074, 1572916, 1, 131074, 1572917, 1, 131075, 1572923, 1, 131073, 1572924, 1, 131074, 1572925, 1, 131074, 1572926, 1, 131074, 1572927, 1, 131074, 1572928, 1, 131074, 1572929, 1, 131074, 1572930, 1, 131074, 1572931, 1, 131074, 1572932, 1, 131074, 1572933, 1, 131074, 1572934, 1, 131074, 1572935, 1, 131074, 1572936, 1, 131075, 1572942, 1, 131073, 1572943, 1, 131074, 1572944, 1, 131074, 1572945, 1, 131074, 1572946, 1, 131074, 1572947, 1, 131074, 1572948, 1, 131074, 1572949, 1, 131074, 1572950, 1, 131074, 1572951, 1, 131074, 1572952, 1, 131074, 1572953, 1, 131074, 1572954, 1, 131074, 1572955, 1, 131074, 1572956, 1, 131074, 1572957, 1, 131074, 1572958, 1, 131074, 1572959, 1, 131074, 1572960, 1, 131075 ) +tile_data = PoolIntArray( -65537, 1, 0, -130976, 1, 0, -1, 1, 65536, -65492, 0, 0, -65440, 1, 65536, 65535, 1, 65536, 31, 0, 0, 44, 0, 65536, 96, 1, 65536, 131071, 1, 65536, 65567, 0, 65536, 65580, 0, 65536, 65632, 1, 65536, 196607, 1, 65536, 131103, 0, 65536, 131116, 0, 65536, 131134, 2, 65536, 131168, 1, 65536, 262143, 1, 65536, 196610, 0, 196609, 196611, 0, 196610, 196612, 0, 196610, 196613, 0, 196610, 196614, 0, 196610, 196615, 0, 196610, 196616, 0, 196610, 196617, 0, 196610, 196618, 0, 196610, 196619, 0, 196610, 196620, 0, 196611, 196639, 0, 65536, 196652, 0, 65536, 196659, 2, 65536, 196661, 2, 65537, 196663, 2, 65536, 196665, 2, 65539, 196667, 2, 65536, 196668, 1, 1, 196669, 1, 2, 196670, 1, 2, 196671, 1, 2, 196672, 1, 2, 196673, 1, 3, 196695, 1, 196608, 196699, 1, 196609, 196700, 1, 196610, 196701, 1, 196610, 196702, 1, 196611, 196704, 1, 65536, 327679, 1, 131072, 262159, 0, 196609, 262160, 0, 196610, 262161, 0, 196611, 262164, 0, 196609, 262165, 0, 196610, 262166, 0, 196610, 262167, 0, 196610, 262168, 0, 196610, 262169, 0, 196610, 262170, 0, 196611, 262175, 0, 131072, 262188, 0, 65536, 262190, 1, 196609, 262191, 1, 196610, 262192, 1, 196610, 262193, 1, 196610, 262194, 1, 196610, 262195, 1, 196610, 262196, 1, 196610, 262197, 1, 196610, 262198, 1, 196610, 262199, 1, 196610, 262200, 1, 196610, 262201, 1, 196610, 262202, 1, 196610, 262203, 1, 196610, 262204, 1, 131074, 262205, 1, 131074, 262206, 1, 131074, 262207, 1, 131074, 262208, 1, 131074, 262209, 1, 131075, 262218, 2, 65537, 262224, 1, 196609, 262225, 1, 196610, 262226, 1, 196610, 262227, 1, 196611, 262240, 1, 65536, 393215, 0, 196609, 327680, 0, 196611, 327724, 0, 65536, 327752, 1, 196609, 327753, 1, 196610, 327754, 1, 196610, 327755, 1, 196610, 327756, 1, 196611, 327776, 1, 65536, 458751, 1, 0, 393255, 0, 1, 393256, 0, 196610, 393257, 0, 196610, 393258, 0, 196610, 393259, 0, 196610, 393260, 0, 131075, 393279, 2, 65536, 393312, 1, 65536, 524287, 1, 65536, 458752, 0, 196609, 458753, 0, 196610, 458754, 0, 196611, 458757, 0, 196609, 458758, 0, 196610, 458759, 0, 196611, 458788, 0, 1, 458789, 0, 196610, 458790, 0, 196610, 458791, 0, 131075, 458811, 2, 65536, 458813, 1, 1, 458814, 1, 196610, 458815, 1, 196610, 458816, 1, 196610, 458817, 1, 196610, 458818, 1, 196611, 458845, 2, 65536, 458848, 1, 65536, 589823, 1, 65536, 524321, 0, 1, 524322, 0, 196610, 524323, 0, 196610, 524324, 0, 131075, 524346, 1, 196609, 524347, 1, 196610, 524348, 1, 196610, 524349, 1, 131075, 524365, 2, 65539, 524379, 1, 1, 524380, 1, 2, 524381, 1, 2, 524382, 1, 2, 524383, 1, 2, 524384, 1, 65539, 655359, 1, 65536, 589854, 0, 1, 589855, 0, 196610, 589856, 0, 196610, 589857, 0, 131075, 589900, 1, 1, 589901, 1, 3, 589915, 1, 131073, 589916, 1, 131074, 589917, 1, 131074, 589918, 1, 131074, 589919, 1, 131074, 589920, 1, 65539, 720895, 1, 65536, 655374, 0, 196609, 655375, 0, 196610, 655376, 0, 196610, 655377, 0, 196610, 655378, 0, 196610, 655379, 0, 196610, 655380, 0, 196610, 655381, 0, 196610, 655382, 0, 196610, 655383, 0, 196610, 655384, 0, 196610, 655385, 0, 196610, 655386, 0, 196611, 655389, 0, 196609, 655390, 0, 131075, 655406, 2, 65536, 655408, 2, 65538, 655410, 2, 65536, 655432, 2, 65539, 655436, 1, 65537, 655437, 1, 65539, 655442, 1, 196609, 655443, 1, 196611, 655456, 1, 65536, 786431, 1, 65536, 720939, 1, 1, 720940, 1, 2, 720941, 1, 2, 720942, 1, 2, 720943, 1, 2, 720944, 1, 2, 720945, 1, 2, 720946, 1, 2, 720947, 1, 2, 720948, 1, 2, 720949, 1, 3, 720955, 2, 65536, 720958, 2, 65536, 720966, 1, 1, 720967, 1, 2, 720968, 1, 3, 720972, 1, 131073, 720973, 1, 131075, 720981, 2, 65537, 720992, 1, 65536, 851967, 1, 65536, 786442, 0, 196609, 786443, 0, 196610, 786444, 0, 196611, 786471, 2, 65536, 786475, 1, 131073, 786476, 1, 131074, 786477, 1, 131074, 786478, 1, 131074, 786479, 1, 131074, 786480, 1, 65538, 786481, 1, 65538, 786482, 1, 131074, 786483, 1, 131074, 786484, 1, 131074, 786485, 1, 131075, 786490, 1, 196609, 786491, 1, 196610, 786492, 1, 196610, 786493, 1, 196610, 786494, 1, 196610, 786495, 1, 2, 786496, 1, 2, 786497, 1, 3, 786502, 1, 131073, 786503, 1, 131074, 786504, 1, 131075, 786517, 1, 1, 786518, 1, 3, 786528, 1, 65536, 917503, 1, 65536, 852007, 1, 1, 852008, 1, 3, 852016, 1, 65537, 852017, 1, 65539, 852031, 1, 65537, 852032, 1, 65538, 852033, 1, 131074, 852034, 1, 196611, 852040, 0, 0, 852053, 1, 131073, 852054, 1, 131074, 852055, 1, 196610, 852056, 1, 196610, 852057, 1, 196610, 852058, 1, 196610, 852059, 1, 196610, 852060, 1, 196610, 852061, 1, 196610, 852062, 1, 196610, 852063, 1, 196610, 852064, 1, 65539, 983039, 1, 65536, 917512, 2, 65536, 917515, 2, 65538, 917518, 2, 65536, 917528, 0, 196609, 917529, 0, 196610, 917530, 0, 196611, 917543, 1, 131073, 917544, 1, 131075, 917552, 1, 65537, 917553, 1, 65539, 917567, 1, 65537, 917568, 1, 65539, 917576, 0, 131073, 917577, 0, 196610, 917578, 0, 196610, 917579, 0, 196610, 917580, 0, 3, 917600, 1, 65536, 1048575, 1, 65536, 983048, 1, 1, 983049, 1, 2, 983050, 1, 2, 983051, 1, 2, 983052, 1, 2, 983053, 1, 2, 983054, 1, 3, 983075, 1, 1, 983076, 1, 3, 983088, 1, 65537, 983089, 1, 65539, 983103, 1, 65537, 983104, 1, 65539, 983116, 0, 131073, 983117, 0, 196610, 983118, 0, 196610, 983119, 0, 196611, 983136, 1, 65536, 1114111, 1, 65536, 1048584, 1, 131073, 1048585, 1, 131074, 1048586, 1, 131074, 1048587, 1, 131074, 1048588, 1, 131074, 1048589, 1, 131074, 1048590, 1, 131075, 1048605, 2, 65537, 1048609, 2, 65536, 1048611, 1, 65537, 1048612, 1, 65539, 1048624, 1, 131073, 1048625, 1, 131075, 1048627, 1, 196609, 1048628, 1, 196610, 1048629, 1, 196610, 1048630, 1, 196610, 1048631, 1, 196610, 1048632, 1, 196610, 1048633, 1, 196610, 1048634, 1, 196610, 1048635, 1, 196610, 1048636, 1, 196610, 1048637, 1, 196610, 1048638, 1, 196610, 1048639, 1, 131074, 1048640, 1, 65539, 1048672, 1, 65536, 1179647, 1, 65536, 1114141, 1, 1, 1114142, 1, 2, 1114143, 1, 2, 1114144, 1, 2, 1114145, 1, 2, 1114146, 1, 2, 1114147, 1, 65538, 1114148, 1, 65539, 1114176, 1, 131073, 1114177, 1, 196610, 1114178, 1, 196610, 1114179, 1, 196611, 1114196, 2, 65536, 1114198, 2, 65538, 1114200, 2, 65536, 1114204, 2, 65536, 1114205, 2, 65537, 1114208, 1, 65536, 1245183, 1, 65536, 1179652, 0, 196609, 1179653, 0, 196610, 1179654, 0, 196611, 1179675, 1, 196609, 1179676, 1, 196610, 1179677, 1, 131074, 1179678, 1, 131074, 1179679, 1, 131074, 1179680, 1, 131074, 1179681, 1, 131074, 1179682, 1, 131074, 1179683, 1, 131074, 1179684, 1, 131075, 1179732, 1, 196609, 1179733, 1, 196610, 1179734, 1, 196610, 1179735, 1, 196610, 1179736, 1, 196610, 1179737, 1, 196610, 1179738, 1, 196610, 1179739, 1, 196610, 1179740, 1, 196610, 1179741, 1, 196610, 1179742, 1, 196610, 1179743, 1, 196610, 1179744, 1, 65539, 1310719, 1, 65536, 1245280, 1, 65536, 1376255, 1, 65536, 1310720, 0, 196609, 1310721, 0, 196611, 1310732, 2, 65536, 1310734, 2, 65539, 1310736, 2, 65536, 1310742, 2, 65536, 1310757, 2, 65537, 1310816, 1, 65536, 1441791, 1, 65536, 1376258, 2, 65538, 1376262, 2, 65536, 1376266, 1, 1, 1376267, 1, 2, 1376268, 1, 2, 1376269, 1, 2, 1376270, 1, 2, 1376271, 1, 2, 1376272, 1, 2, 1376273, 1, 2, 1376274, 1, 2, 1376275, 1, 2, 1376276, 1, 2, 1376277, 1, 2, 1376278, 1, 3, 1376281, 3, 1, 1376283, 2, 65536, 1376287, 2, 65537, 1376289, 2, 65536, 1376290, 2, 65536, 1376291, 2, 65536, 1376292, 1, 1, 1376293, 1, 2, 1376294, 1, 3, 1376301, 2, 65536, 1376303, 2, 65539, 1376304, 2, 65536, 1376305, 2, 65539, 1376308, 2, 65536, 1376322, 2, 65536, 1376324, 2, 65538, 1376326, 2, 65536, 1376336, 2, 65536, 1376338, 2, 65539, 1376340, 2, 65536, 1376342, 2, 65539, 1376344, 2, 65536, 1376352, 1, 65536, 1507327, 1, 65537, 1441792, 1, 2, 1441793, 1, 2, 1441794, 1, 2, 1441795, 1, 2, 1441796, 1, 2, 1441797, 1, 2, 1441798, 1, 2, 1441799, 1, 2, 1441800, 1, 2, 1441801, 1, 2, 1441802, 1, 65538, 1441803, 1, 65538, 1441804, 1, 65538, 1441805, 1, 65538, 1441806, 1, 65538, 1441807, 1, 65538, 1441808, 1, 65538, 1441809, 1, 65538, 1441810, 1, 65538, 1441811, 1, 65538, 1441812, 1, 65538, 1441813, 1, 65538, 1441814, 1, 65538, 1441815, 1, 2, 1441816, 1, 2, 1441817, 1, 2, 1441818, 1, 2, 1441819, 1, 2, 1441820, 1, 2, 1441821, 1, 2, 1441822, 1, 2, 1441823, 1, 2, 1441824, 1, 2, 1441825, 1, 2, 1441826, 1, 2, 1441827, 1, 2, 1441828, 1, 65538, 1441829, 1, 65538, 1441830, 1, 65539, 1441836, 1, 1, 1441837, 1, 2, 1441838, 1, 2, 1441839, 1, 2, 1441840, 1, 2, 1441841, 1, 2, 1441842, 1, 2, 1441843, 1, 2, 1441844, 1, 2, 1441845, 1, 3, 1441851, 1, 1, 1441852, 1, 2, 1441853, 1, 2, 1441854, 1, 2, 1441855, 1, 2, 1441856, 1, 2, 1441857, 1, 2, 1441858, 1, 2, 1441859, 1, 2, 1441860, 1, 2, 1441861, 1, 2, 1441862, 1, 2, 1441863, 1, 2, 1441864, 1, 3, 1441870, 1, 1, 1441871, 1, 2, 1441872, 1, 2, 1441873, 1, 2, 1441874, 1, 2, 1441875, 1, 2, 1441876, 1, 2, 1441877, 1, 2, 1441878, 1, 2, 1441879, 1, 2, 1441880, 1, 2, 1441881, 1, 2, 1441882, 1, 2, 1441883, 1, 2, 1441884, 1, 2, 1441885, 1, 2, 1441886, 1, 2, 1441887, 1, 2, 1441888, 1, 65539, 1572863, 1, 65537, 1507328, 1, 65538, 1507329, 1, 65538, 1507330, 1, 65538, 1507331, 1, 65538, 1507332, 1, 65538, 1507333, 1, 65538, 1507334, 1, 65538, 1507335, 1, 65538, 1507336, 1, 65538, 1507337, 1, 65538, 1507338, 1, 65538, 1507339, 1, 65538, 1507340, 1, 65538, 1507341, 1, 65538, 1507342, 1, 65538, 1507343, 1, 65538, 1507344, 1, 65538, 1507345, 1, 65538, 1507346, 1, 65538, 1507347, 1, 65538, 1507348, 1, 65538, 1507349, 1, 65538, 1507350, 1, 65538, 1507351, 1, 65538, 1507352, 1, 65538, 1507353, 1, 65538, 1507354, 1, 65538, 1507355, 1, 65538, 1507356, 1, 65538, 1507357, 1, 65538, 1507358, 1, 65538, 1507359, 1, 65538, 1507360, 1, 65538, 1507361, 1, 65538, 1507362, 1, 65538, 1507363, 1, 65538, 1507364, 1, 65538, 1507365, 1, 65538, 1507366, 1, 65539, 1507372, 1, 65537, 1507373, 1, 65538, 1507374, 1, 65538, 1507375, 1, 65538, 1507376, 1, 65538, 1507377, 1, 65538, 1507378, 1, 65538, 1507379, 1, 65538, 1507380, 1, 65538, 1507381, 1, 65539, 1507387, 1, 65537, 1507388, 1, 65538, 1507389, 1, 65538, 1507390, 1, 65538, 1507391, 1, 65538, 1507392, 1, 65538, 1507393, 1, 65538, 1507394, 1, 65538, 1507395, 1, 65538, 1507396, 1, 65538, 1507397, 1, 65538, 1507398, 1, 65538, 1507399, 1, 65538, 1507400, 1, 65539, 1507406, 1, 65537, 1507407, 1, 65538, 1507408, 1, 65538, 1507409, 1, 65538, 1507410, 1, 65538, 1507411, 1, 65538, 1507412, 1, 65538, 1507413, 1, 65538, 1507414, 1, 65538, 1507415, 1, 65538, 1507416, 1, 65538, 1507417, 1, 65538, 1507418, 1, 65538, 1507419, 1, 65538, 1507420, 1, 65538, 1507421, 1, 65538, 1507422, 1, 65538, 1507423, 1, 65538, 1507424, 1, 65539, 1638399, 1, 131073, 1572864, 1, 131074, 1572865, 1, 131074, 1572866, 1, 131074, 1572867, 1, 131074, 1572868, 1, 131074, 1572869, 1, 131074, 1572870, 1, 131074, 1572871, 1, 131074, 1572872, 1, 131074, 1572873, 1, 131074, 1572874, 1, 131074, 1572875, 1, 131074, 1572876, 1, 131074, 1572877, 1, 131074, 1572878, 1, 131074, 1572879, 1, 131074, 1572880, 1, 131074, 1572881, 1, 131074, 1572882, 1, 131074, 1572883, 1, 131074, 1572884, 1, 131074, 1572885, 1, 131074, 1572886, 1, 131074, 1572887, 1, 131074, 1572888, 1, 131074, 1572889, 1, 131074, 1572890, 1, 131074, 1572891, 1, 131074, 1572892, 1, 131074, 1572893, 1, 131074, 1572894, 1, 131074, 1572895, 1, 131074, 1572896, 1, 131074, 1572897, 1, 131074, 1572898, 1, 131074, 1572899, 1, 131074, 1572900, 1, 131074, 1572901, 1, 131074, 1572902, 1, 131075, 1572908, 1, 131073, 1572909, 1, 131074, 1572910, 1, 131074, 1572911, 1, 131074, 1572912, 1, 131074, 1572913, 1, 131074, 1572914, 1, 131074, 1572915, 1, 131074, 1572916, 1, 131074, 1572917, 1, 131075, 1572923, 1, 131073, 1572924, 1, 131074, 1572925, 1, 131074, 1572926, 1, 131074, 1572927, 1, 131074, 1572928, 1, 131074, 1572929, 1, 131074, 1572930, 1, 131074, 1572931, 1, 131074, 1572932, 1, 131074, 1572933, 1, 131074, 1572934, 1, 131074, 1572935, 1, 131074, 1572936, 1, 131075, 1572942, 1, 131073, 1572943, 1, 131074, 1572944, 1, 131074, 1572945, 1, 131074, 1572946, 1, 131074, 1572947, 1, 131074, 1572948, 1, 131074, 1572949, 1, 131074, 1572950, 1, 131074, 1572951, 1, 131074, 1572952, 1, 131074, 1572953, 1, 131074, 1572954, 1, 131074, 1572955, 1, 131074, 1572956, 1, 131074, 1572957, 1, 131074, 1572958, 1, 131074, 1572959, 1, 131074, 1572960, 1, 131075 ) [node name="Player" parent="." instance=ExtResource( 1 )] position = Vector2( 32, 176 ) @@ -52,30 +62,41 @@ position = Vector2( 32, 176 ) tile_set = ExtResource( 9 ) cell_size = Vector2( 8, 8 ) format = 1 -tile_data = PoolIntArray( 131140, 1, 0, 196676, 1, 65536, 262212, 1, 65536, 327748, 1, 65536, 393284, 1, 131072, 458831, 1, 0, 524367, 1, 65536, 589903, 1, 65536, 655439, 1, 65536, 720901, 1, 0, 720975, 1, 65536, 786437, 1, 65536, 786511, 1, 131072, 851973, 1, 65536, 917509, 1, 131072, 983122, 1, 0, 1048658, 1, 65536, 1114194, 1, 65536, 1179730, 1, 65536, 1245266, 1, 131072 ) +tile_data = PoolIntArray( 131140, 1, 0, 196676, 1, 65536, 262212, 1, 65536, 327748, 1, 65536, 393284, 1, 131072, 458831, 1, 0, 524367, 1, 65536, 589903, 1, 65536, 655439, 1, 65536, 720901, 1, 0, 720975, 1, 65536, 786437, 1, 65536, 786511, 1, 131072, 851973, 1, 65536, 917509, 1, 65536, 983045, 1, 131072, 983122, 1, 0, 1048658, 1, 65536, 1114194, 1, 65536, 1179730, 1, 65536, 1245266, 1, 131072 ) [node name="Death" type="TileMap" parent="." groups=["death"]] +light_mask = 0 tile_set = ExtResource( 6 ) cell_size = Vector2( 8, 8 ) collision_layer = 32 collision_mask = 0 format = 1 -tile_data = PoolIntArray( 196694, -1073741823, 0, 196696, -1610612735, 0, 262228, -1610612735, 0, 589914, -1073741823, 0, 720938, -1073741823, 0, 720971, -1073741823, 0, 786474, -1073741823, 0, 786520, 1, 0, 852006, -1073741823, 0, 852035, -1610612735, 0, 917542, -1073741823, 0, 1441831, 8, 0, 1441832, 8, 0, 1441833, 8, 0, 1441834, 8, 0, 1441835, 8, 0, 1441846, 8, 0, 1441847, 8, 0, 1441848, 8, 0, 1441849, 8, 0, 1441850, 8, 0, 1441866, 8, 0, 1441867, 8, 0, 1441868, 8, 0, 1441869, 8, 0, 1507367, 9, 0, 1507368, 9, 0, 1507369, 9, 0, 1507370, 9, 0, 1507371, 9, 0, 1507382, 9, 0, 1507383, 9, 0, 1507384, 9, 0, 1507385, 9, 0, 1507386, 9, 0, 1507402, 9, 0, 1507403, 9, 0, 1507404, 9, 0, 1507405, 9, 0 ) +tile_data = PoolIntArray( 196694, -1073741823, 0, 196696, -1610612735, 0, 262228, -1610612735, 0, 589914, -1073741823, 0, 720938, -1073741823, 0, 720971, -1073741823, 0, 786474, -1073741823, 0, 786520, 1, 0, 852006, -1073741823, 0, 917542, -1073741823, 0, 1048643, 1, 0 ) -[node name="DeathBackground" type="TileMap" parent="Death"] -z_index = -1 +[node name="DeathNoBlood" type="TileMap" parent="." groups=["death", "has_splash", "no_blood"]] +tile_set = ExtResource( 6 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +collision_mask = 0 +format = 1 +tile_data = PoolIntArray( 1441831, 8, 0, 1441832, 8, 0, 1441833, 8, 0, 1441834, 8, 0, 1441835, 8, 0, 1441846, 8, 0, 1441847, 8, 0, 1441848, 8, 0, 1441849, 8, 0, 1441850, 8, 0, 1441865, 8, 0, 1441866, 8, 0, 1441867, 8, 0, 1441868, 8, 0, 1441869, 8, 0, 1507367, 9, 0, 1507368, 9, 0, 1507369, 9, 0, 1507370, 9, 0, 1507371, 9, 0, 1507382, 9, 0, 1507383, 9, 0, 1507384, 9, 0, 1507385, 9, 0, 1507386, 9, 0, 1507401, 9, 0, 1507402, 9, 0, 1507403, 9, 0, 1507404, 9, 0, 1507405, 9, 0 ) +script = ExtResource( 22 ) +splash_color = Color( 0.552941, 0.14902, 0.180392, 1 ) + +[node name="DeathBackground" type="TileMap" parent="DeathNoBlood"] +z_index = -11 tile_set = ExtResource( 6 ) cell_size = Vector2( 8, 8 ) collision_layer = 0 collision_mask = 0 format = 1 -tile_data = PoolIntArray( 1441830, 8, 0, 1441836, 8, 0, 1441845, 8, 0, 1441851, 8, 0, 1441864, 8, 0, 1441865, 8, 0, 1441870, 8, 0, 1507366, 9, 0, 1507372, 9, 0, 1507381, 9, 0, 1507387, 9, 0, 1507400, 9, 0, 1507401, 9, 0, 1507406, 9, 0 ) +tile_data = PoolIntArray( 1441830, 8, 0, 1441836, 8, 0, 1441845, 8, 0, 1441851, 8, 0, 1441864, 8, 0, 1441870, 8, 0, 1507366, 9, 0, 1507372, 9, 0, 1507381, 9, 0, 1507387, 9, 0, 1507400, 9, 0, 1507406, 9, 0 ) [node name="Environment" type="Node2D" parent="."] [node name="Ladder" parent="Environment" instance=ExtResource( 10 )] position = Vector2( 40, 88 ) -scale = Vector2( 1, 4 ) +scale = Vector2( 1, 5 ) [node name="Ladder2" parent="Environment" instance=ExtResource( 10 )] position = Vector2( 544, 16 ) @@ -337,7 +358,7 @@ initial_angle = 1.0 [node name="ArtificialSoul3" parent="Enemy" instance=ExtResource( 8 )] position = Vector2( 216, 96 ) radius = 1.0 -speed = 3.0 +speed = 6.0 [node name="ArtificialSoul2" parent="Enemy" instance=ExtResource( 8 )] position = Vector2( 168, 72 ) @@ -473,23 +494,16 @@ initial_angle = 6.0 [node name="ArtificialSoul13" parent="Enemy" instance=ExtResource( 8 )] position = Vector2( 600, 168 ) +z_index = 10 __meta__ = { "_edit_group_": true } radius = 3.0 -[node name="ArtificialSoul2" parent="Enemy/ArtificialSoul13" instance=ExtResource( 8 )] -radius = 3.0 -initial_angle = 2.0 - [node name="ArtificialSoul3" parent="Enemy/ArtificialSoul13" instance=ExtResource( 8 )] radius = 3.0 initial_angle = 4.0 -[node name="ArtificialSoul4" parent="Enemy/ArtificialSoul13" instance=ExtResource( 8 )] -radius = 3.0 -initial_angle = 6.0 - [node name="ArtificialSoul8" parent="Enemy" instance=ExtResource( 8 )] position = Vector2( 696, 32 ) __meta__ = { @@ -518,13 +532,13 @@ position = Vector2( 712, 128 ) __meta__ = { "_edit_group_": true } -radius = 1.0 -speed = 6.0 +radius = 2.0 +speed = 8.0 [node name="ArtificialSoul2" parent="Enemy/ArtificialSoul10" instance=ExtResource( 8 )] -radius = 1.0 +radius = 2.0 initial_angle = 2.0 -speed = 6.0 +speed = 8.0 [node name="ArtificialSoul6" parent="Enemy" instance=ExtResource( 8 )] position = Vector2( 544, 32 ) diff --git a/maps/hills.tscn b/maps/hills.tscn index 5b5ce49..a06cddd 100644 --- a/maps/hills.tscn +++ b/maps/hills.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=27 format=2] +[gd_scene load_steps=29 format=2] [ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=1] [ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=2] @@ -19,12 +19,14 @@ [ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=17] [ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=18] [ext_resource path="res://maps/map.gd" type="Script" id=19] +[ext_resource path="res://objects/lore/hills/speccy.tscn" type="PackedScene" id=20] [ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=21] [ext_resource path="res://objects/lore/hills/bioslime.tscn" type="PackedScene" id=22] [ext_resource path="res://objects/lore/hills/catbat.tscn" type="PackedScene" id=23] [ext_resource path="res://objects/lore/hills/eviscerator.tscn" type="PackedScene" id=24] [ext_resource path="res://objects/lore/hills/verdant_hills.tscn" type="PackedScene" id=25] -[ext_resource path="res://objects/player/player_scholar.tscn" type="PackedScene" id=26] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=26] +[ext_resource path="res://objects/lore/hills/sg.tscn" type="PackedScene" id=27] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 8, 128 ) @@ -35,7 +37,7 @@ script = ExtResource( 19 ) target_time_any = 70 target_time_100 = 180 music = ExtResource( 3 ) -lore_entries = [ ExtResource( 25 ), ExtResource( 24 ), ExtResource( 22 ), ExtResource( 23 ) ] +lore_entries = [ ExtResource( 25 ), ExtResource( 24 ), ExtResource( 22 ), ExtResource( 23 ), ExtResource( 27 ), ExtResource( 20 ) ] [node name="CanvasLayer" type="CanvasLayer" parent="."] layer = -2 @@ -64,6 +66,7 @@ tile_data = PoolIntArray( 196660, 2, 2, 196661, 2, 2, 196668, 0, 0, 196669, 0, 0 [node name="Player" parent="." instance=ExtResource( 26 )] position = Vector2( 32, 176 ) +beta_gameplay = true [node name="Death" type="TileMap" parent="."] tile_set = ExtResource( 9 ) @@ -98,11 +101,25 @@ scale = Vector2( 1, 3 ) [node name="Ladder2" parent="Platforms" instance=ExtResource( 1 )] position = Vector2( 216, 40 ) -scale = Vector2( 1, 9 ) + +[node name="Ladder11" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 216, 48 ) +can_climb_right = false + +[node name="Ladder9" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 216, 56 ) +scale = Vector2( 1, 7 ) [node name="Ladder4" parent="Platforms" instance=ExtResource( 1 )] position = Vector2( 352, 40 ) -scale = Vector2( 1, 4 ) + +[node name="Ladder13" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 352, 48 ) +can_climb_left = false + +[node name="Ladder12" parent="Platforms" instance=ExtResource( 1 )] +position = Vector2( 352, 56 ) +scale = Vector2( 1, 2 ) [node name="Ladder5" parent="Platforms" instance=ExtResource( 1 )] position = Vector2( 464, 24 ) diff --git a/maps/hills_scholar.tscn b/maps/hills_scholar.tscn new file mode 100644 index 0000000..51a6a63 --- /dev/null +++ b/maps/hills_scholar.tscn @@ -0,0 +1,463 @@ +[gd_scene load_steps=35 format=2] + +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=1] +[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=2] +[ext_resource path="res://audio/music/rumble_loop.ogg" type="AudioStream" id=3] +[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=4] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=5] +[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=6] +[ext_resource path="res://graphics/backgrounds/hills.png" type="Texture" id=7] +[ext_resource path="res://tilesets/t_grass.tres" type="TileSet" id=8] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=9] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=10] +[ext_resource path="res://objects/environment/moving_platform/moving_platform.tscn" type="PackedScene" id=11] +[ext_resource path="res://objects/enemy/bat.tscn" type="PackedScene" id=12] +[ext_resource path="res://objects/environment/barrier/barrier.tscn" type="PackedScene" id=13] +[ext_resource path="res://objects/enemy/snake.tscn" type="PackedScene" id=14] +[ext_resource path="res://objects/enemy/slime.tscn" type="PackedScene" id=15] +[ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=16] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=17] +[ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=18] +[ext_resource path="res://maps/map.gd" type="Script" id=19] +[ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=20] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=21] +[ext_resource path="res://objects/lore/hills/bioslime.tscn" type="PackedScene" id=22] +[ext_resource path="res://objects/lore/hills/catbat.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/lore/hills/eviscerator.tscn" type="PackedScene" id=24] +[ext_resource path="res://objects/lore/hills/verdant_hills.tscn" type="PackedScene" id=25] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=26] +[ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=27] +[ext_resource path="res://scripts/has_splash.gd" type="Script" id=28] +[ext_resource path="res://objects/lore/hills/speccy.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/lore/hills/sg.tscn" type="PackedScene" id=30] +[ext_resource path="res://graphics/turniwood/turning_platform_wood_dark.png" type="Texture" id=31] +[ext_resource path="res://graphics/decal/helper_hints/the_signs/go_right_from_here/arrow_sign.png" type="Texture" id=32] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=33] +[ext_resource path="res://maps/hills_speccy_detect.gd" type="Script" id=34] + +[node name="Map" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 19 ) +target_time_any = 70 +target_time_100 = 180 +music = ExtResource( 3 ) +lore_entries = [ ExtResource( 25 ), ExtResource( 24 ), ExtResource( 22 ), ExtResource( 23 ), ExtResource( 30 ), ExtResource( 29 ) ] + +[node name="CanvasLayer" type="CanvasLayer" parent="."] +layer = -2 + +[node name="Background" type="Sprite" parent="CanvasLayer"] +z_index = -2 +texture = ExtResource( 7 ) +centered = false +__meta__ = { +"_edit_lock_": true +} + +[node name="Camera2D" parent="." instance=ExtResource( 6 )] + +[node name="BackgroundTiles" type="TileMap" parent="."] +tile_set = ExtResource( 8 ) +cell_size = Vector2( 8, 8 ) +format = 1 + +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 10 ) +tile_set = ExtResource( 8 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 65535, 3, 0, 96, 3, 0, 131071, 3, 65536, 65632, 3, 65536, 196607, 3, 65536, 131168, 3, 65536, 262143, 3, 65536, 196634, 5, 0, 196698, 3, 1, 196699, 3, 3, 196704, 3, 65536, 327679, 3, 65536, 262170, 3, 1, 262171, 3, 196610, 262172, 3, 196611, 262183, 5, 0, 262189, 5, 0, 262196, 3, 196609, 262197, 3, 196611, 262200, 3, 196609, 262201, 3, 196610, 262202, 3, 196611, 262228, 4, 0, 262230, 3, 1, 262231, 3, 3, 262234, 3, 65537, 262235, 3, 65539, 262236, 4, 0, 262240, 3, 65536, 393215, 3, 65536, 327682, 3, 1, 327683, 3, 2, 327684, 3, 2, 327685, 3, 2, 327686, 3, 3, 327690, 3, 196609, 327691, 3, 196610, 327692, 3, 196610, 327693, 3, 196610, 327694, 3, 196610, 327695, 3, 196611, 327706, 3, 65536, 327710, 3, 0, 327719, 3, 196609, 327720, 3, 196610, 327721, 3, 196610, 327722, 3, 196610, 327723, 3, 196610, 327724, 3, 196610, 327725, 3, 196611, 327762, 3, 1, 327763, 3, 2, 327764, 3, 2, 327765, 3, 2, 327766, 3, 65538, 327767, 3, 65538, 327768, 3, 2, 327769, 3, 2, 327770, 3, 65538, 327771, 3, 65538, 327772, 3, 3, 327776, 3, 65536, 458751, 3, 65536, 393218, 3, 131073, 393219, 3, 131074, 393220, 3, 131074, 393221, 3, 131074, 393222, 3, 131075, 393237, 5, 0, 393241, 3, 1, 393242, 3, 65539, 393246, 3, 65536, 393291, 4, 0, 393298, 3, 65537, 393299, 3, 65538, 393300, 3, 65538, 393301, 3, 131074, 393302, 3, 131074, 393303, 3, 131074, 393304, 3, 131074, 393305, 3, 131074, 393306, 3, 131074, 393307, 3, 131074, 393308, 3, 131075, 393312, 3, 65536, 524287, 3, 65536, 458770, 3, 1, 458771, 3, 2, 458772, 3, 2, 458773, 3, 3, 458776, 3, 196609, 458777, 3, 131074, 458778, 3, 131074, 458779, 3, 196610, 458780, 3, 196610, 458781, 3, 196610, 458782, 3, 131075, 458787, 3, 196609, 458788, 3, 196610, 458789, 3, 196611, 458815, 5, 0, 458819, 4, 0, 458827, 3, 1, 458828, 3, 196610, 458829, 3, 196610, 458830, 3, 196610, 458831, 3, 196610, 458832, 3, 196610, 458833, 3, 196610, 458834, 3, 131074, 458835, 3, 131074, 458836, 3, 65539, 458848, 3, 65536, 589823, 3, 65536, 524306, 3, 65537, 524307, 3, 65538, 524308, 3, 65538, 524309, 3, 65539, 524334, 5, 0, 524346, 5, 0, 524349, 3, 1, 524350, 3, 196610, 524351, 3, 196610, 524352, 3, 196610, 524353, 3, 196610, 524354, 3, 196610, 524355, 3, 3, 524363, 3, 65536, 524372, 3, 65536, 524384, 3, 65536, 655359, 3, 65536, 589838, 4, 0, 589842, 3, 65537, 589843, 3, 131074, 589844, 3, 131074, 589845, 3, 131074, 589846, 3, 3, 589854, 4, 0, 589859, 4, 0, 589863, 3, 0, 589870, 3, 196609, 589871, 3, 196610, 589872, 3, 196610, 589873, 3, 196610, 589874, 3, 196610, 589875, 3, 196610, 589876, 3, 196610, 589877, 3, 196610, 589878, 3, 2, 589879, 3, 196610, 589880, 3, 196610, 589881, 3, 196610, 589882, 3, 196610, 589883, 3, 196610, 589884, 3, 196610, 589885, 3, 131075, 589891, 3, 131073, 589892, 3, 196610, 589893, 3, 196610, 589894, 3, 196610, 589895, 3, 196610, 589896, 3, 196610, 589897, 3, 196610, 589898, 3, 196610, 589899, 3, 131075, 589908, 3, 65536, 589919, 3, 1, 589920, 3, 65539, 720895, 3, 65536, 655370, 5, 0, 655374, 3, 196609, 655375, 3, 196610, 655376, 3, 196610, 655377, 3, 196610, 655378, 3, 131075, 655382, 3, 131073, 655383, 3, 3, 655388, 4, 0, 655390, 3, 1, 655391, 3, 2, 655392, 3, 196610, 655393, 3, 196610, 655394, 3, 196610, 655395, 3, 196610, 655396, 3, 196610, 655397, 3, 196610, 655398, 3, 196610, 655399, 3, 131075, 655414, 3, 65536, 655444, 3, 65536, 655448, 5, 0, 655452, 5, 0, 655454, 3, 1, 655455, 3, 65538, 655456, 3, 65539, 786431, 3, 65536, 720902, 3, 196609, 720903, 3, 196610, 720904, 3, 196610, 720905, 3, 196610, 720906, 3, 196610, 720907, 3, 196610, 720908, 3, 196611, 720919, 3, 131073, 720920, 3, 196610, 720921, 3, 196610, 720922, 3, 196610, 720923, 3, 196610, 720924, 3, 196611, 720926, 3, 131073, 720927, 3, 131075, 720950, 3, 65536, 720977, 3, 1, 720978, 3, 2, 720979, 3, 2, 720980, 3, 131075, 720982, 3, 196609, 720983, 3, 196610, 720984, 3, 196610, 720985, 3, 196610, 720986, 3, 196610, 720987, 3, 196610, 720988, 3, 196610, 720989, 3, 196610, 720990, 3, 131074, 720991, 3, 131074, 720992, 3, 65539, 851967, 3, 65536, 786486, 3, 65536, 786513, 3, 131073, 786514, 3, 131074, 786515, 3, 131075, 786528, 3, 65536, 917503, 3, 65536, 851982, 3, 196609, 851983, 3, 196611, 852022, 3, 131072, 852037, 5, 0, 852040, 5, 0, 852044, 3, 1, 852045, 3, 2, 852046, 3, 2, 852047, 3, 3, 852064, 3, 65536, 983039, 3, 65536, 917517, 3, 0, 917522, 3, 0, 917531, 5, 0, 917548, 3, 196609, 917549, 3, 196610, 917550, 3, 196610, 917551, 3, 196611, 917554, 3, 196609, 917555, 3, 196610, 917556, 3, 196611, 917573, 3, 1, 917574, 3, 2, 917575, 3, 2, 917576, 3, 3, 917580, 3, 131073, 917581, 3, 131074, 917582, 3, 131074, 917583, 3, 131075, 917600, 3, 65536, 1048575, 3, 65536, 983051, 4, 0, 983052, 3, 1, 983053, 3, 65539, 983057, 3, 1, 983058, 3, 65538, 983059, 3, 2, 983060, 3, 2, 983061, 3, 2, 983062, 3, 3, 983065, 3, 196609, 983066, 3, 196610, 983067, 3, 196610, 983068, 3, 196610, 983069, 3, 3, 983073, 5, 0, 983078, 4, 0, 983103, 4, 0, 983106, 4, 0, 983109, 3, 131073, 983110, 3, 131074, 983111, 3, 131074, 983112, 3, 131075, 983124, 5, 0, 983134, 3, 196609, 983135, 3, 196610, 983136, 3, 65539, 1114111, 3, 65536, 1048587, 3, 196609, 1048588, 3, 131074, 1048589, 3, 131074, 1048590, 3, 196610, 1048591, 3, 196610, 1048592, 3, 196610, 1048593, 3, 131074, 1048594, 3, 131074, 1048595, 3, 131074, 1048596, 3, 131074, 1048597, 3, 131074, 1048598, 3, 131075, 1048605, 3, 131073, 1048606, 3, 196610, 1048607, 3, 196610, 1048608, 3, 196610, 1048609, 3, 196611, 1048612, 3, 196609, 1048613, 3, 196610, 1048614, 3, 196610, 1048615, 3, 196610, 1048616, 3, 196611, 1048638, 3, 1, 1048639, 3, 2, 1048640, 3, 2, 1048641, 3, 2, 1048642, 3, 3, 1048659, 3, 1, 1048660, 3, 2, 1048661, 3, 2, 1048662, 3, 3, 1048665, 3, 196608, 1048668, 3, 196608, 1048672, 3, 65536, 1179647, 3, 65536, 1114116, 5, 0, 1114120, 5, 0, 1114174, 3, 131073, 1114175, 3, 131074, 1114176, 3, 131074, 1114177, 3, 131074, 1114178, 3, 131075, 1114193, 5, 0, 1114194, 3, 1, 1114195, 3, 65538, 1114196, 3, 65538, 1114197, 3, 131074, 1114198, 3, 131075, 1114208, 3, 65536, 1245183, 3, 65537, 1179648, 3, 196610, 1179649, 3, 196611, 1179652, 3, 196609, 1179653, 3, 196610, 1179654, 3, 196610, 1179655, 3, 196610, 1179656, 3, 196611, 1179706, 3, 1, 1179707, 3, 3, 1179728, 3, 1, 1179729, 3, 2, 1179730, 3, 65538, 1179731, 3, 131074, 1179732, 3, 131075, 1179744, 3, 65536, 1310719, 3, 65536, 1245194, 4, 0, 1245199, 4, 0, 1245228, 4, 0, 1245242, 3, 131073, 1245243, 3, 131075, 1245264, 3, 131073, 1245265, 3, 131074, 1245266, 3, 131075, 1245280, 3, 65536, 1376255, 3, 65536, 1310730, 3, 1, 1310731, 3, 2, 1310732, 3, 2, 1310733, 3, 2, 1310734, 3, 2, 1310735, 3, 3, 1310761, 3, 1, 1310762, 3, 2, 1310763, 3, 2, 1310764, 3, 3, 1310773, 3, 1, 1310774, 3, 2, 1310775, 3, 3, 1310816, 3, 65536, 1441791, 3, 65536, 1376257, 4, 0, 1376260, 4, 0, 1376263, 4, 0, 1376264, 2, 1, 1376266, 3, 65537, 1376267, 3, 65538, 1376268, 3, 65538, 1376269, 3, 65538, 1376270, 3, 65538, 1376271, 3, 65538, 1376272, 3, 3, 1376275, 4, 0, 1376291, 4, 0, 1376297, 3, 65537, 1376298, 3, 65538, 1376299, 3, 65538, 1376300, 3, 65539, 1376309, 3, 65537, 1376310, 3, 65538, 1376311, 3, 65539, 1376312, 4, 0, 1376320, 4, 0, 1376327, 4, 0, 1376331, 4, 0, 1376339, 4, 0, 1376347, 4, 0, 1376352, 3, 65536, 1507327, 3, 65537, 1441792, 3, 2, 1441793, 3, 2, 1441794, 3, 2, 1441795, 3, 2, 1441796, 3, 2, 1441797, 3, 2, 1441798, 3, 2, 1441799, 3, 2, 1441800, 3, 2, 1441801, 3, 2, 1441802, 3, 65538, 1441803, 3, 65538, 1441804, 3, 65538, 1441805, 3, 65538, 1441806, 3, 65538, 1441807, 3, 65538, 1441808, 3, 65538, 1441809, 3, 2, 1441810, 3, 2, 1441811, 3, 2, 1441812, 3, 2, 1441813, 3, 3, 1441817, 3, 1, 1441818, 3, 2, 1441819, 3, 2, 1441820, 3, 2, 1441821, 3, 2, 1441822, 3, 2, 1441823, 3, 2, 1441824, 3, 2, 1441825, 3, 2, 1441826, 3, 2, 1441827, 3, 2, 1441828, 3, 2, 1441829, 3, 2, 1441830, 3, 2, 1441831, 3, 2, 1441832, 3, 2, 1441833, 3, 65538, 1441834, 3, 65538, 1441835, 3, 65538, 1441836, 3, 65539, 1441845, 3, 65537, 1441846, 3, 65538, 1441847, 3, 65538, 1441848, 3, 2, 1441849, 3, 2, 1441850, 3, 2, 1441851, 3, 2, 1441852, 3, 2, 1441853, 3, 2, 1441854, 3, 2, 1441855, 3, 2, 1441856, 3, 2, 1441857, 3, 2, 1441858, 3, 2, 1441859, 3, 2, 1441860, 3, 2, 1441861, 3, 2, 1441862, 3, 2, 1441863, 3, 3, 1441867, 3, 1, 1441868, 3, 2, 1441869, 3, 2, 1441870, 3, 2, 1441871, 3, 2, 1441872, 3, 2, 1441873, 3, 2, 1441874, 3, 2, 1441875, 3, 2, 1441876, 3, 2, 1441877, 3, 2, 1441878, 3, 2, 1441879, 3, 2, 1441880, 3, 2, 1441881, 3, 2, 1441882, 3, 2, 1441883, 3, 2, 1441884, 3, 2, 1441885, 3, 2, 1441886, 3, 2, 1441887, 3, 2, 1441888, 3, 65539, 1572863, 3, 65537, 1507328, 3, 65538, 1507329, 3, 65538, 1507330, 3, 65538, 1507331, 3, 65538, 1507332, 3, 65538, 1507333, 3, 65538, 1507334, 3, 65538, 1507335, 3, 65538, 1507336, 3, 65538, 1507337, 3, 65538, 1507338, 3, 65538, 1507339, 3, 65538, 1507340, 3, 65538, 1507341, 3, 65538, 1507342, 3, 65538, 1507343, 3, 65538, 1507344, 3, 65538, 1507345, 3, 65538, 1507346, 3, 65538, 1507347, 3, 65538, 1507348, 3, 65538, 1507349, 3, 65539, 1507353, 3, 65537, 1507354, 3, 65538, 1507355, 3, 65538, 1507356, 3, 65538, 1507357, 3, 65538, 1507358, 3, 65538, 1507359, 3, 65538, 1507360, 3, 65538, 1507361, 3, 65538, 1507362, 3, 65538, 1507363, 3, 65538, 1507364, 3, 65538, 1507365, 3, 65538, 1507366, 3, 65538, 1507367, 3, 65538, 1507368, 3, 65538, 1507369, 3, 65538, 1507370, 3, 65538, 1507371, 3, 65538, 1507372, 3, 65539, 1507381, 3, 65537, 1507382, 3, 65538, 1507383, 3, 65538, 1507384, 3, 65538, 1507385, 3, 65538, 1507386, 3, 65538, 1507387, 3, 65538, 1507388, 3, 65538, 1507389, 3, 65538, 1507390, 3, 65538, 1507391, 3, 65538, 1507392, 3, 65538, 1507393, 3, 65538, 1507394, 3, 65538, 1507395, 3, 65538, 1507396, 3, 65538, 1507397, 3, 65538, 1507398, 3, 65538, 1507399, 3, 65539, 1507403, 3, 65537, 1507404, 3, 65538, 1507405, 3, 65538, 1507406, 3, 65538, 1507407, 3, 65538, 1507408, 3, 65538, 1507409, 3, 65538, 1507410, 3, 65538, 1507411, 3, 65538, 1507412, 3, 65538, 1507413, 3, 65538, 1507414, 3, 65538, 1507415, 3, 65538, 1507416, 3, 65538, 1507417, 3, 65538, 1507418, 3, 65538, 1507419, 3, 65538, 1507420, 3, 65538, 1507421, 3, 65538, 1507422, 3, 65538, 1507423, 3, 65538, 1507424, 3, 65539, 1638399, 3, 131073, 1572864, 3, 131074, 1572865, 3, 131074, 1572866, 3, 131074, 1572867, 3, 131074, 1572868, 3, 131074, 1572869, 3, 131074, 1572870, 3, 131074, 1572871, 3, 131074, 1572872, 3, 131074, 1572873, 3, 131074, 1572874, 3, 131074, 1572875, 3, 131074, 1572876, 3, 131074, 1572877, 3, 131074, 1572878, 3, 131074, 1572879, 3, 131074, 1572880, 3, 131074, 1572881, 3, 131074, 1572882, 3, 131074, 1572883, 3, 131074, 1572884, 3, 131074, 1572885, 3, 131075, 1572889, 3, 131073, 1572890, 3, 131074, 1572891, 3, 131074, 1572892, 3, 131074, 1572893, 3, 131074, 1572894, 3, 131074, 1572895, 3, 131074, 1572896, 3, 131074, 1572897, 3, 131074, 1572898, 3, 131074, 1572899, 3, 131074, 1572900, 3, 131074, 1572901, 3, 131074, 1572902, 3, 131074, 1572903, 3, 131074, 1572904, 3, 131074, 1572905, 3, 131074, 1572906, 3, 131074, 1572907, 3, 131074, 1572908, 3, 131075, 1572917, 3, 131073, 1572918, 3, 131074, 1572919, 3, 131074, 1572920, 3, 131074, 1572921, 3, 131074, 1572922, 3, 131074, 1572923, 3, 131074, 1572924, 3, 131074, 1572925, 3, 131074, 1572926, 3, 131074, 1572927, 3, 131074, 1572928, 3, 131074, 1572929, 3, 131074, 1572930, 3, 131074, 1572931, 3, 131074, 1572932, 3, 131074, 1572933, 3, 131074, 1572934, 3, 131074, 1572935, 3, 131075, 1572939, 3, 131073, 1572940, 3, 131074, 1572941, 3, 131074, 1572942, 3, 131074, 1572943, 3, 131074, 1572944, 3, 131074, 1572945, 3, 131074, 1572946, 3, 131074, 1572947, 3, 131074, 1572948, 3, 131074, 1572949, 3, 131074, 1572950, 3, 131074, 1572951, 3, 131074, 1572952, 3, 131074, 1572953, 3, 131074, 1572954, 3, 131074, 1572955, 3, 131074, 1572956, 3, 131074, 1572957, 3, 131074, 1572958, 3, 131074, 1572959, 3, 131074, 1572960, 3, 131075 ) + +[node name="Player" parent="." instance=ExtResource( 26 )] +position = Vector2( 24, 176 ) + +[node name="Death" type="TileMap" parent="." groups=["death", "no_blood"]] +tile_set = ExtResource( 9 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 65515, 11, 0, 131050, 11, 0, 131052, 11, 0, 196586, 11, 0, 196587, 11, 0, 196588, 11, 0, 196589, 11, 0, 262122, 11, 0, 327658, 11, 0, 327661, 11, 0, 327662, 11, 0, 327663, 11, 0, 327664, 11, 0, 393194, 11, 0, 393196, 11, 0, 393201, 11, 0, 458730, 11, 0, 458732, 11, 0, 458734, 11, 0, 458736, 11, 0, 458737, 11, 0, 458739, 11, 0, 524265, 11, 0, 524266, 11, 0, 524267, 11, 0, 524268, 11, 0, 524273, 11, 0, 524274, 11, 0, 524275, 11, 0, 589800, 11, 0, 589801, 11, 0, 589811, 11, 0, 655336, 11, 0, 655337, 11, 0, 655338, 11, 0, 655340, 11, 0, 655343, 11, 0, 655344, 11, 0, 655345, 11, 0, 655346, 11, 0, 655347, 11, 0, 720872, 11, 0, 720873, 11, 0, 720874, 11, 0, 720875, 11, 0, 720879, 11, 0, 786408, 11, 0, 786409, 11, 0, 786410, 11, 0, 786411, 11, 0, 786415, 11, 0, 851944, 11, 0, 851945, 11, 0, 851946, 11, 0, 851951, 11, 0, 917482, 11, 0, 917484, 11, 0, 917487, 11, 0, 983018, 11, 0, 983021, 11, 0, 983024, 11, 0, 1048554, 11, 0, 1048555, 11, 0, 1048556, 11, 0, 1048557, 11, 0, 1048558, 11, 0, 1048559, 11, 0, 1048560, 11, 0, 1441814, 10, 0, 1441815, 10, 0, 1441816, 10, 0, 1441837, 10, 0, 1441838, 10, 0, 1441839, 10, 0, 1441840, 10, 0, 1441841, 10, 0, 1441842, 10, 0, 1441843, 10, 0, 1441844, 10, 0, 1441864, 10, 0, 1441865, 10, 0, 1441866, 10, 0, 1507350, 11, 0, 1507351, 11, 0, 1507352, 11, 0, 1507373, 11, 0, 1507374, 11, 0, 1507375, 11, 0, 1507376, 11, 0, 1507377, 11, 0, 1507378, 11, 0, 1507379, 11, 0, 1507380, 11, 0, 1507400, 11, 0, 1507401, 11, 0, 1507402, 11, 0 ) +script = ExtResource( 28 ) +splash_color = Color( 0.368627, 0.784314, 0.94902, 1 ) + +[node name="Ladder" type="TileMap" parent="."] +tile_set = ExtResource( 21 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 262218, 0, 0, 327749, 0, 0, 327754, 0, 0, 327775, 0, 0, 393285, 0, 0, 393290, 0, 0, 393311, 0, 0, 458821, 0, 0, 458847, 0, 0, 524383, 0, 0, 655362, 0, 0, 720898, 0, 0, 786434, 0, 0, 851970, 0, 0, 983046, 0, 0, 1048582, 0, 0, 1048618, 0, 0, 1114118, 0, 0, 1114154, 0, 0 ) + +[node name="Environment" type="Node2D" parent="."] + +[node name="Ladders" type="Node2D" parent="Environment"] + +[node name="Ladder" parent="Environment/Ladders" instance=ExtResource( 1 )] +position = Vector2( 48, 120 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder8" parent="Environment/Ladders" instance=ExtResource( 1 )] +position = Vector2( 336, 128 ) +scale = Vector2( 1, 2 ) + +[node name="Ladder5" parent="Environment/Ladders" instance=ExtResource( 1 )] +position = Vector2( 552, 40 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder6" parent="Environment/Ladders" instance=ExtResource( 1 )] +position = Vector2( 592, 32 ) +scale = Vector2( 1, 3 ) + +[node name="Ladder7" parent="Environment/Ladders" instance=ExtResource( 1 )] +position = Vector2( 760, 40 ) +scale = Vector2( 1, 4 ) +can_climb_right = false + +[node name="Ladder2" parent="Environment/Ladders" instance=ExtResource( 1 )] +position = Vector2( 16, 80 ) +scale = Vector2( 1, 4 ) + +[node name="TurningPlatforms" type="Node2D" parent="Environment"] + +[node name="TurningPlatform" parent="Environment/TurningPlatforms" instance=ExtResource( 16 )] +position = Vector2( 136, 64 ) +texture = ExtResource( 31 ) + +[node name="TurningPlatform3" parent="Environment/TurningPlatforms" instance=ExtResource( 16 )] +position = Vector2( 368, 152 ) +time = 80.0 +texture = ExtResource( 31 ) + +[node name="TurningPlatform6" parent="Environment/TurningPlatforms" instance=ExtResource( 16 )] +position = Vector2( 384, 32 ) +texture = ExtResource( 31 ) + +[node name="TurningPlatform5" parent="Environment/TurningPlatforms" instance=ExtResource( 16 )] +position = Vector2( 616, 160 ) +texture = ExtResource( 31 ) + +[node name="TurningPlatform4" parent="Environment/TurningPlatforms" instance=ExtResource( 16 )] +position = Vector2( 408, 152 ) +time = 80.0 +texture = ExtResource( 31 ) + +[node name="MovingPlatform" parent="Environment" instance=ExtResource( 11 )] +position = Vector2( 624, 40 ) +scale = Vector2( 2, 1 ) +right_down_boundary = 3.0 + +[node name="MovingPlatform2" parent="Environment" instance=ExtResource( 11 )] +position = Vector2( 344, 80 ) +scale = Vector2( 2, 1 ) +left_up_boundary = 2.0 +right_down_boundary = 2.0 + +[node name="Barrier3" parent="Environment" instance=ExtResource( 13 )] +position = Vector2( 124, 109 ) +scale = Vector2( 1, 19 ) +cost = 30 + +[node name="ArrowSign" type="Sprite" parent="Environment"] +position = Vector2( 221, 170 ) +z_index = -6 +texture = ExtResource( 32 ) + +[node name="Collectibles" type="Node2D" parent="."] + +[node name="Star" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 4 )] +position = Vector2( 0, 136 ) + +[node name="Star2" parent="Collectibles" instance=ExtResource( 4 )] +position = Vector2( 112, 120 ) +color = 1 + +[node name="Key" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 40, 168 ) + +[node name="Key2" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 64, 168 ) + +[node name="Key3" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 88, 152 ) + +[node name="Key5" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 232, 112 ) + +[node name="Key6" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 48, 80 ) + +[node name="Key7" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 72, 80 ) + +[node name="Key8" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 96, 80 ) + +[node name="Key9" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 152, 48 ) + +[node name="Key10" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 120, 32 ) + +[node name="Key11" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 184, 72 ) + +[node name="Key14" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 120, 72 ) + +[node name="Key13" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 192, 48 ) + +[node name="Key4" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 112, 152 ) + +[node name="Key12" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 160, 168 ) + +[node name="Key15" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 288, 120 ) + +[node name="Key16" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 248, 120 ) + +[node name="Key20" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 360, 104 ) + +[node name="Key22" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 264, 72 ) + +[node name="Key24" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 296, 72 ) + +[node name="Key25" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 288, 48 ) + +[node name="Key26" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 488, 56 ) + +[node name="Key27" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 448, 64 ) + +[node name="Key33" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 432, 152 ) + +[node name="Key34" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 464, 136 ) + +[node name="Key35" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 472, 168 ) + +[node name="Key36" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 496, 120 ) + +[node name="Key37" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 520, 120 ) + +[node name="Key38" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 560, 104 ) + +[node name="Key39" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 640, 136 ) + +[node name="Key40" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 664, 120 ) + +[node name="Key41" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 688, 120 ) + +[node name="Key42" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 712, 120 ) + +[node name="Key43" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 736, 120 ) + +[node name="Key44" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 656, 32 ) + +[node name="Key45" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 680, 32 ) + +[node name="Key46" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 720, 16 ) + +[node name="Key47" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 712, 168 ) + +[node name="Key48" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 680, 168 ) + +[node name="Key49" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 648, 168 ) + +[node name="Key50" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 528, 56 ) + +[node name="Key28" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 408, 64 ) + +[node name="Key23" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 616, 168 ) + +[node name="Key21" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 320, 120 ) + +[node name="Key29" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 200, 168 ) + +[node name="Key30" parent="Collectibles" instance=ExtResource( 5 )] +position = Vector2( 232, 168 ) + +[node name="Key31" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 272, 168 ) + +[node name="Key32" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 5 )] +position = Vector2( 304, 168 ) + +[node name="Key18" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 152, 112 ) + +[node name="Key19" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 216, 80 ) + +[node name="Key17" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 5 )] +position = Vector2( 200, 112 ) + +[node name="Shard" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 17 )] +position = Vector2( 32, 32 ) + +[node name="Shard4" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 648, 80 ) +number = 2 + +[node name="Shard2" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 17 )] +position = Vector2( 456, 24 ) +number = 1 + +[node name="Shard3" parent="Collectibles" instance=ExtResource( 17 )] +position = Vector2( 688, 80 ) +number = 3 + +[node name="Star3" parent="Collectibles" groups=["speccy_skip"] instance=ExtResource( 4 )] +position = Vector2( 416, 104 ) +color = 3 + +[node name="Arrow" parent="Collectibles" instance=ExtResource( 27 )] +position = Vector2( 176, 112 ) + +[node name="Arrow2" parent="Collectibles" instance=ExtResource( 27 )] +position = Vector2( 664, 80 ) + +[node name="Star4" parent="Collectibles" instance=ExtResource( 4 )] +position = Vector2( 760, 112 ) +color = 4 + +[node name="Star5" parent="Collectibles" groups=["speccy_appear"] instance=ExtResource( 4 )] +position = Vector2( 224, 48 ) +color = 2 + +[node name="Enemies" type="Node2D" parent="."] + +[node name="Bat" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 32, 104 ) +left_up_boundary = 4.0 +right_down_boundary = 5.0 + +[node name="Bat4" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 392, 104 ) +left_up_boundary = 3.0 +right_down_boundary = 2.0 +speed = 70 + +[node name="Bat8" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 408, 40 ) +left_up_boundary = 5.0 + +[node name="Bat9" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 576, 48 ) +left_up_boundary = 3.0 +right_down_boundary = 2.0 + +[node name="Bat2" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 72, 32 ) +left_up_boundary = 3.0 +right_down_boundary = 3.0 +speed = 50 + +[node name="Snake" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 64, 80 ) +left_up_boundary = 1.0 +right_down_boundary = 5.0 + +[node name="Snake4" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 336, 32 ) +left_up_boundary = 2.0 +right_down_boundary = 3.0 + +[node name="Snake5" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 392, 64 ) +left_up_boundary = 2.0 +right_down_boundary = 11.0 + +[node name="Snake6" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 688, 80 ) +right_down_boundary = 8.0 +speed = 70 + +[node name="Snake7" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 616, 96 ) +left_up_boundary = 1.0 +right_down_boundary = 3.0 +speed = 30 + +[node name="Snake2" parent="Enemies" instance=ExtResource( 14 )] +position = Vector2( 96, 32 ) +left_up_boundary = 2.0 +right_down_boundary = 4.0 +speed = 30 + +[node name="Slime7" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 232, 24 ) +scale = Vector2( -1, 1 ) + +[node name="Slime6" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 552, 168 ) +scale = Vector2( -1, 1 ) + +[node name="ColorRect2" type="ColorRect" parent="."] +margin_left = 512.0 +margin_right = 768.0 +margin_bottom = 192.0 +color = Color( 1, 0.843137, 0, 0.0901961 ) +script = ExtResource( 18 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="ColorRect3" type="ColorRect" parent="."] +margin_left = 256.0 +margin_right = 512.0 +margin_bottom = 192.0 +color = Color( 1, 0, 0.631373, 0.0901961 ) +script = ExtResource( 18 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="HUD" parent="." instance=ExtResource( 2 )] +song_name = "♫Rumble" + +[node name="TileMap" type="TileMap" parent="."] +tile_set = ExtResource( 8 ) +cell_size = Vector2( 8, 8 ) +format = 1 + +[node name="Exit" parent="." instance=ExtResource( 20 )] +position = Vector2( 757, 164 ) +cost = 25 + +[node name="SpeccyDetect" type="Node2D" parent="."] +position = Vector2( 224, 176 ) +script = ExtResource( 34 ) + +[node name="Speccy" parent="SpeccyDetect" instance=ExtResource( 33 )] +position = Vector2( -8, 0 ) +flip = true +message = "oi_go_right" diff --git a/maps/hills_speccy_detect.gd b/maps/hills_speccy_detect.gd new file mode 100644 index 0000000..5d89a23 --- /dev/null +++ b/maps/hills_speccy_detect.gd @@ -0,0 +1,15 @@ +extends Node2D + + +var try_for_speccy: bool = true + +onready var skippers: int = get_tree().get_nodes_in_group("speccy_skip").size() + + +func _physics_process(delta: float) -> void: + if try_for_speccy: + if get_tree().get_nodes_in_group("speccy_appear").empty(): + try_for_speccy = false + $Speccy.appear() + elif get_tree().get_nodes_in_group("speccy_skip").size() < skippers: + try_for_speccy = false diff --git a/maps/lab.tscn b/maps/lab.tscn new file mode 100644 index 0000000..e407fcc --- /dev/null +++ b/maps/lab.tscn @@ -0,0 +1,592 @@ +[gd_scene load_steps=53 format=2] + +[ext_resource path="res://graphics/backgrounds/factory.png" type="Texture" id=1] +[ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=2] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=3] +[ext_resource path="res://tilesets/t_laboratory.tres" type="TileSet" id=4] +[ext_resource path="res://audio/music/mitten.ogg" type="AudioStream" id=5] +[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=6] +[ext_resource path="res://objects/enemy/snake.tscn" type="PackedScene" id=7] +[ext_resource path="res://objects/enemy/bat.tscn" type="PackedScene" id=8] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=9] +[ext_resource path="res://objects/enemy/spider.tscn" type="PackedScene" id=10] +[ext_resource path="res://objects/enemy/rolling_fiend.tscn" type="PackedScene" id=11] +[ext_resource path="res://objects/enemy/snail.tscn" type="PackedScene" id=12] +[ext_resource path="res://shaders/electricity.gdshader" type="Shader" id=13] +[ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=14] +[ext_resource path="res://objects/enemy/artificial_soul.tscn" type="PackedScene" id=15] +[ext_resource path="res://objects/enemy/roboturret.tscn" type="PackedScene" id=16] +[ext_resource path="res://objects/enemy/scope.tscn" type="PackedScene" id=17] +[ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=18] +[ext_resource path="res://maps/map.gd" type="Script" id=19] +[ext_resource path="res://objects/lore/station/famicop.tscn" type="PackedScene" id=20] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=21] +[ext_resource path="res://objects/lore/lab/famis_lab.tscn" type="PackedScene" id=22] +[ext_resource path="res://objects/lore/hills/catbat.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/lore/hills/eviscerator.tscn" type="PackedScene" id=24] +[ext_resource path="res://objects/lore/rust/roboturret.tscn" type="PackedScene" id=25] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=26] +[ext_resource path="res://objects/environment/moving_platform/moving_platform.tscn" type="PackedScene" id=27] +[ext_resource path="res://objects/environment/electric_tiles/electric_tiles.tscn" type="PackedScene" id=28] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=30] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=31] +[ext_resource path="res://objects/enemy/hellarcher.tscn" type="PackedScene" id=32] +[ext_resource path="res://objects/environment/falling_block/falling_block_lab.tscn" type="PackedScene" id=33] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=34] +[ext_resource path="res://objects/lore/graveyard/hellarcher.tscn" type="PackedScene" id=35] +[ext_resource path="res://objects/lore/canopy/sabrespighter.tscn" type="PackedScene" id=36] +[ext_resource path="res://objects/lore/cave/shedge.tscn" type="PackedScene" id=37] +[ext_resource path="res://objects/lore/mountain/rolling_fiend.tscn" type="PackedScene" id=38] +[ext_resource path="res://objects/lore/graveyard/artificial_soul.tscn" type="PackedScene" id=39] +[ext_resource path="res://objects/enemy/sheriff.tscn" type="PackedScene" id=40] +[ext_resource path="res://objects/lore/lab/scope.tscn" type="PackedScene" id=41] +[ext_resource path="res://objects/lore/lab/sheriff.tscn" type="PackedScene" id=42] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=43] + +[sub_resource type="ShaderMaterial" id=9] +shader = ExtResource( 13 ) +shader_param/arc_speed = 4.0 +shader_param/arc_fps = 10.0 +shader_param/arc_scale = 8.0 +shader_param/arc_threshold = 0.15 +shader_param/arc_color = Color( 1, 0.93, 0, 1 ) +shader_param/gamma = 2.0 +shader_param/flash_rate = 3.0 +shader_param/flash_intensity = 0.2 +shader_param/background_color = Color( 0, 0, 0, 0 ) + +[sub_resource type="RectangleShape2D" id=2] +extents = Vector2( 16.9355, 4.03226 ) + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 10.4839, 10.4234 ) + +[sub_resource type="RectangleShape2D" id=4] +extents = Vector2( 3.62902, 7.19756 ) + +[sub_resource type="RectangleShape2D" id=5] +extents = Vector2( 3.83064, 7.22781 ) + +[sub_resource type="RectangleShape2D" id=6] +extents = Vector2( 7.15723, 4.01713 ) + +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 16.1291, 4.03226 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 4.03226, 4.03226 ) + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 8, 128 ) + +[node name="Map2" type="Node2D" groups=["map"]] +pause_mode = 1 +script = ExtResource( 19 ) +target_time_any = 60 +target_time_100 = 180 +music = ExtResource( 5 ) +lore_entries = [ ExtResource( 22 ), ExtResource( 39 ), ExtResource( 23 ), ExtResource( 35 ), ExtResource( 25 ), ExtResource( 36 ), ExtResource( 20 ), ExtResource( 38 ), ExtResource( 24 ), ExtResource( 37 ), ExtResource( 41 ), ExtResource( 42 ) ] + +[node name="CanvasLayer" type="CanvasLayer" parent="."] +layer = -2 + +[node name="Background" type="Sprite" parent="CanvasLayer"] +z_index = -2 +texture = ExtResource( 1 ) +centered = false +__meta__ = { +"_edit_lock_": true +} + +[node name="Camera2D" parent="." instance=ExtResource( 6 )] + +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 2 +material = ExtResource( 34 ) +tile_set = ExtResource( 4 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 9 +format = 1 +tile_data = PoolIntArray( 39, 1, 0, 46, 1, 0, 90, 1, 0, 65575, 1, 65536, 65582, 1, 65536, 65587, 1, 196609, 65588, 1, 196610, 65589, 1, 196610, 65590, 1, 196610, 65591, 1, 196610, 65592, 1, 196610, 65593, 1, 196610, 65594, 1, 196611, 65626, 1, 65536, 131111, 1, 131073, 131112, 1, 196610, 131113, 1, 196610, 131114, 1, 196610, 131115, 1, 196610, 131116, 1, 196610, 131117, 1, 196610, 131118, 1, 65539, 131119, 4, 65536, 131120, 4, 65536, 131121, 4, 65536, 131122, 4, 65536, 131162, 1, 65536, 196654, 1, 65536, 196698, 1, 65536, 262190, 1, 131073, 262191, 1, 196610, 262192, 1, 196610, 262193, 1, 2, 262194, 1, 196610, 262195, 1, 196611, 262205, 1, 1, 262206, 1, 196610, 262207, 1, 196610, 262208, 1, 196611, 262213, 1, 196609, 262214, 1, 196610, 262215, 1, 196610, 262216, 1, 196610, 262217, 1, 196611, 262229, 1, 196609, 262230, 1, 196610, 262231, 1, 196610, 262232, 1, 196610, 262233, 1, 196610, 262234, 1, 65539, 327699, 1, 0, 327729, 1, 65536, 327741, 1, 65536, 327770, 1, 65536, 393220, 1, 196609, 393221, 1, 196610, 393222, 1, 196611, 393235, 1, 131072, 393243, 1, 196609, 393244, 1, 196610, 393245, 1, 196610, 393246, 1, 196610, 393247, 1, 2, 393248, 1, 196610, 393249, 1, 3, 393265, 1, 65537, 393266, 1, 196610, 393267, 1, 196610, 393268, 1, 196610, 393269, 1, 196610, 393270, 1, 196610, 393271, 1, 196610, 393272, 1, 196610, 393273, 1, 196610, 393274, 1, 196610, 393275, 1, 196610, 393276, 1, 196610, 393277, 1, 131075, 393306, 1, 131073, 393307, 1, 196610, 393308, 1, 196610, 393309, 1, 3, 458783, 1, 65536, 458785, 1, 131073, 458786, 1, 196610, 458787, 1, 196610, 458788, 1, 196611, 458790, 1, 1, 458791, 1, 196610, 458792, 1, 196610, 458793, 1, 196610, 458794, 1, 196610, 458795, 1, 196610, 458796, 1, 196610, 458797, 1, 196610, 458798, 1, 196610, 458799, 1, 196610, 458800, 1, 196610, 458801, 1, 131075, 458815, 1, 1, 458816, 1, 196611, 458845, 1, 65536, 524319, 1, 65536, 524326, 1, 65536, 524351, 1, 65536, 524361, 1, 0, 524381, 1, 65536, 589855, 1, 65536, 589862, 1, 65536, 589886, 1, 1, 589887, 1, 65539, 589896, 1, 1, 589897, 1, 65539, 589903, 1, 196608, 589908, 1, 196609, 589909, 1, 196610, 589910, 1, 196610, 589911, 1, 196610, 589912, 1, 196610, 589913, 1, 196610, 589914, 1, 196610, 589915, 1, 196611, 589917, 1, 131072, 655390, 1, 196609, 655391, 1, 131075, 655398, 1, 65536, 655418, 1, 1, 655419, 1, 196610, 655420, 1, 196610, 655421, 1, 196610, 655422, 1, 131074, 655423, 1, 131075, 655431, 1, 196609, 655432, 1, 131074, 655433, 1, 131074, 655434, 1, 196611, 720899, 1, 0, 720916, 1, 196608, 720934, 1, 131073, 720935, 1, 196610, 720936, 1, 196610, 720937, 1, 196610, 720938, 1, 196610, 720939, 1, 196610, 720940, 1, 196610, 720941, 1, 196610, 720942, 1, 196610, 720943, 1, 196610, 720944, 1, 196610, 720945, 1, 196610, 720946, 1, 196610, 720947, 1, 196610, 720948, 1, 196610, 720949, 1, 196610, 720950, 1, 196610, 720951, 1, 196610, 720952, 1, 196610, 720953, 1, 196610, 720954, 1, 131075, 786435, 1, 131073, 786436, 1, 196610, 786437, 1, 196610, 786438, 1, 196610, 786439, 1, 196610, 786440, 1, 196610, 786441, 1, 196611, 786444, 1, 196609, 786445, 1, 196610, 786446, 1, 196610, 786447, 1, 196610, 786448, 1, 196610, 786449, 1, 196611, 917566, 1, 1, 917567, 1, 196610, 917568, 1, 196610, 917569, 1, 196610, 917570, 1, 196610, 917571, 1, 196610, 917572, 1, 196610, 917573, 1, 196610, 917574, 1, 196610, 917575, 1, 196610, 917576, 1, 196610, 917577, 1, 196610, 917578, 1, 196610, 917579, 1, 196610, 917580, 1, 196610, 917581, 1, 196610, 917582, 1, 196610, 917583, 1, 196610, 917584, 1, 196610, 917585, 1, 196610, 917586, 1, 196610, 917587, 1, 196610, 917588, 1, 196610, 917589, 1, 196611, 917591, 1, 196609, 917592, 1, 196610, 917593, 1, 196611, 917595, 1, 196609, 917596, 1, 196610, 917597, 1, 196611, 917598, 4, 65536, 917599, 4, 65536, 983077, 1, 1, 983078, 1, 196610, 983079, 1, 196610, 983080, 1, 196610, 983081, 1, 196610, 983082, 1, 196611, 983084, 1, 196608, 983087, 1, 196608, 983090, 1, 196609, 983091, 1, 196610, 983092, 1, 196610, 983093, 1, 196610, 983094, 1, 196610, 983095, 1, 196610, 983096, 1, 196610, 983097, 1, 196610, 983098, 1, 196610, 983099, 1, 196610, 983100, 1, 196611, 983102, 1, 65536, 1048578, 1, 196609, 1048579, 1, 196610, 1048580, 1, 3, 1048586, 1, 196609, 1048587, 1, 196611, 1048593, 1, 196609, 1048594, 1, 196610, 1048595, 1, 196611, 1048610, 1, 1, 1048611, 1, 196610, 1048612, 1, 196610, 1048613, 1, 65539, 1048638, 1, 65536, 1114116, 1, 131073, 1114117, 1, 3, 1114133, 1, 196608, 1114143, 1, 1, 1114144, 1, 196610, 1114145, 1, 196610, 1114146, 1, 131075, 1114149, 1, 65536, 1114174, 1, 65536, 1114190, 1, 0, 1179653, 1, 131073, 1179654, 1, 2, 1179655, 1, 3, 1179662, 1, 0, 1179677, 1, 196609, 1179678, 1, 196610, 1179679, 1, 131075, 1179685, 1, 131073, 1179686, 1, 196610, 1179687, 1, 196610, 1179688, 1, 196610, 1179689, 1, 196610, 1179690, 1, 3, 1179693, 1, 1, 1179694, 1, 196610, 1179695, 1, 196610, 1179696, 1, 3, 1179710, 1, 65536, 1179725, 1, 196609, 1179726, 1, 131075, 1179732, 1, 196609, 1179733, 1, 3, 1179737, 1, 0, 1245190, 1, 131073, 1245191, 1, 131074, 1245192, 1, 196610, 1245193, 1, 196610, 1245194, 1, 196610, 1245195, 1, 196610, 1245196, 1, 196610, 1245197, 1, 196610, 1245198, 1, 131074, 1245199, 1, 196610, 1245200, 1, 196611, 1245213, -1073741820, 65536, 1245226, 1, 131072, 1245228, 1, 196609, 1245229, 1, 131075, 1245232, 1, 131073, 1245233, 1, 3, 1245246, 1, 131072, 1245252, 1, 196609, 1245253, 1, 196610, 1245254, 1, 196610, 1245255, 1, 196610, 1245256, 1, 196611, 1245269, 1, 131073, 1245270, 1, 196611, 1245273, 1, 65536, 1310749, -1073741820, 65536, 1310762, -1073741820, 65536, 1310769, 1, 65537, 1310770, 1, 3, 1310809, 1, 65536, 1376285, -1073741820, 65536, 1376298, -1073741820, 65536, 1376305, 1, 131073, 1376306, 1, 131075, 1376321, 1, 196609, 1376322, 1, 196610, 1376323, 1, 196611, 1376345, 1, 131072, 1441792, 0, 1, 1441793, 0, 2, 1441794, 0, 2, 1441795, 0, 2, 1441796, 0, 2, 1441797, 0, 2, 1441798, 0, 2, 1441799, 0, 2, 1441800, 0, 2, 1441801, 0, 2, 1441802, 0, 2, 1441803, 0, 2, 1441804, 0, 2, 1441805, 0, 2, 1441806, 0, 2, 1441807, 0, 2, 1441808, 0, 2, 1441809, 0, 2, 1441810, 0, 2, 1441811, 0, 2, 1441812, 0, 2, 1441813, 0, 2, 1441814, 0, 2, 1441815, 0, 2, 1441816, 0, 2, 1441817, 0, 2, 1441818, 0, 2, 1441819, 0, 2, 1441820, 0, 2, 1441821, 0, 2, 1441822, 0, 2, 1441823, 0, 2, 1441824, 0, 2, 1441825, 0, 2, 1441826, 0, 2, 1441827, 1610612736, 2, 1441828, 1610612736, 2, 1441829, 0, 2, 1441830, 0, 2, 1441831, 0, 2, 1441832, 0, 2, 1441833, 0, 2, 1441834, 0, 2, 1441835, 0, 2, 1441836, 0, 2, 1441837, 0, 2, 1441838, 0, 2, 1441839, 0, 2, 1441840, 0, 2, 1441841, 0, 2, 1441842, 0, 2, 1441843, 0, 2, 1441844, 0, 2, 1441845, 0, 2, 1441846, 0, 2, 1441847, 0, 2, 1441848, 0, 2, 1441849, 0, 2, 1441850, 0, 2, 1441851, 0, 2, 1441852, 0, 2, 1441853, 0, 2, 1441854, 0, 2, 1441855, 0, 2, 1441856, 0, 2, 1441857, 0, 2, 1441858, 0, 2, 1441859, 0, 2, 1441860, 0, 2, 1441861, 0, 2, 1441862, 0, 2, 1441863, 0, 2, 1441864, 0, 2, 1441865, 0, 2, 1441866, 0, 2, 1441867, 0, 2, 1441868, 0, 2, 1441869, 0, 2, 1441870, 0, 2, 1441871, 0, 2, 1441872, 0, 2, 1441873, 0, 2, 1441874, 0, 2, 1441875, 0, 2, 1441876, 0, 2, 1441877, 0, 2, 1441878, 0, 2, 1441879, 0, 2, 1441880, 0, 2, 1441881, 0, 2, 1441882, 0, 2, 1441883, 0, 2, 1441884, 0, 2, 1441885, 0, 2, 1441886, 0, 2, 1441887, 0, 3, 1507328, 1, 196609, 1507329, 1, 196610, 1507330, 1, 196610, 1507331, 1, 196610, 1507332, 1, 196610, 1507333, 1, 196610, 1507334, 1, 196610, 1507335, 1, 196610, 1507336, 1, 196610, 1507337, 1, 196610, 1507338, 1, 196610, 1507339, 1, 196610, 1507340, 1, 196610, 1507341, 1, 196610, 1507342, 1, 196610, 1507343, 1, 196610, 1507344, 1, 196610, 1507345, 1, 196610, 1507346, 1, 196610, 1507347, 1, 196610, 1507348, 1, 196610, 1507349, 1, 196610, 1507350, 1, 196610, 1507351, 1, 196610, 1507352, 1, 196610, 1507353, 1, 196610, 1507354, 1, 196610, 1507355, 1, 196610, 1507356, 1, 196610, 1507357, 1, 196610, 1507358, 1, 196610, 1507359, 1, 196610, 1507360, 1, 196610, 1507361, 1, 196610, 1507362, 1, 196610, 1507363, 1, 196610, 1507364, 1, 196610, 1507365, 1, 196610, 1507366, 1, 196610, 1507367, 1, 196610, 1507368, 1, 196610, 1507369, 1, 196610, 1507370, 1, 196610, 1507371, 1, 196610, 1507372, 1, 196610, 1507373, 1, 196610, 1507374, 1, 196610, 1507375, 1, 196610, 1507376, 1, 196610, 1507377, 1, 196610, 1507378, 1, 196610, 1507379, 1, 196610, 1507380, 1, 196610, 1507381, 1, 196610, 1507382, 1, 196610, 1507383, 1, 196610, 1507384, 1, 196610, 1507385, 1, 196610, 1507386, 1, 196610, 1507387, 1, 196610, 1507388, 1, 196610, 1507389, 1, 196610, 1507390, 1, 196610, 1507391, 1, 196610, 1507392, 1, 196610, 1507393, 1, 196610, 1507394, 1, 196610, 1507395, 1, 196610, 1507396, 1, 196610, 1507397, 1, 196610, 1507398, 1, 196610, 1507399, 1, 196610, 1507400, 1, 196610, 1507401, 1, 196610, 1507402, 1, 196610, 1507403, 1, 196610, 1507404, 1, 196610, 1507405, 1, 196610, 1507406, 1, 196610, 1507407, 1, 196610, 1507408, 1, 196610, 1507409, 1, 196610, 1507410, 1, 196610, 1507411, 1, 196610, 1507412, 1, 196610, 1507413, 1, 196610, 1507414, 1, 196610, 1507415, 1, 196610, 1507416, 1, 196610, 1507417, 1, 196610, 1507418, 1, 196610, 1507419, 1, 196610, 1507420, 1, 196610, 1507421, 1, 196610, 1507422, 1, 196610, 1507423, 1, 196611 ) + +[node name="ElectricTiles" parent="." groups=["can_stain"] instance=ExtResource( 28 )] +material = SubResource( 9 ) +position = Vector2( -152, 16 ) +tile_data = PoolIntArray( 131172, 2, 196608, 262172, 2, 196609, 262173, 2, 196610, 262174, 2, 196610, 262175, 2, 196610, 262176, 2, 196611, 786436, 2, 196609, 786437, 2, 196610, 786438, 2, 196610, 786439, 2, 196610, 786440, 2, 196610, 786441, 2, 196611, 786526, 2, 196609, 786527, 2, 196610, 786528, 2, 196610, 786529, 2, 196610, 786530, 2, 196611, 1048586, 2, 196609, 1048587, 2, 196611, 1114154, 2, 1, 1114155, 2, 2, 1114156, 2, 3, 1179689, 2, 1, 1179690, 2, 65538, 1179691, 2, 65538, 1179692, 2, 65538, 1179693, 2, 3, 1245223, 2, 196609, 1245224, 2, 196610, 1245225, 2, 131074, 1245226, 2, 131074, 1245227, 2, 131074, 1245228, 2, 131074, 1245229, 2, 131075 ) + +[node name="CollisionShape2D" parent="ElectricTiles/DeathTile" index="0"] +position = Vector2( -31.4516, -28.2258 ) + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="ElectricTiles/DeathTile" index="1"] +position = Vector2( 94.3548, -105.645 ) +shape = SubResource( 2 ) + +[node name="CollisionShape2D3" type="CollisionShape2D" parent="ElectricTiles/DeathTile" index="2"] +position = Vector2( 178.226, -15.3831 ) +shape = SubResource( 3 ) + +[node name="CollisionShape2D4" type="CollisionShape2D" parent="ElectricTiles/DeathTile" index="3"] +position = Vector2( 191.532, -12.1573 ) +shape = SubResource( 4 ) + +[node name="CollisionShape2D5" type="CollisionShape2D" parent="ElectricTiles/DeathTile" index="4"] +position = Vector2( 165.121, -12.127 ) +shape = SubResource( 5 ) + +[node name="CollisionShape2D6" type="CollisionShape2D" parent="ElectricTiles/DeathTile" index="5"] +position = Vector2( 155.544, -8.88611 ) +shape = SubResource( 6 ) + +[node name="CollisionShape2D7" type="CollisionShape2D" parent="ElectricTiles/DeathTile" index="6"] +position = Vector2( 520.161, -54.0323 ) +shape = SubResource( 7 ) + +[node name="CollisionShape2D10" type="CollisionShape2D" parent="ElectricTiles/DeathTile" index="7"] +position = Vector2( 545.968, -118.548 ) +shape = SubResource( 8 ) + +[node name="Player" parent="." instance=ExtResource( 26 )] +position = Vector2( 32, 176 ) + +[node name="Death" type="TileMap" parent="." groups=["death"]] +light_mask = 0 +tile_set = ExtResource( 9 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 196682, 12, 0, 262211, 12, 0, 262218, 12, 0, 262220, 12, 0, 262221, 12, 0, 262223, 12, 0, 327754, 12, 0, 327755, 12, 0, 327756, 12, 0, 327757, 12, 0, 327758, 12, 0, 327759, 12, 0, 327760, 12, 0, 327761, 12, 0, 327762, 12, 0, 327763, 12, 0, 327764, 12, 0, 393230, 12, 0, 393231, 12, 0, 393232, 12, 0, 393233, 12, 0, 393234, 12, 0, 393236, 12, 0, 393237, 12, 0, 393238, 12, 0, 393239, 12, 0, 393240, 12, 0, 393241, 12, 0, 393242, 12, 0, 458818, 12, 0, 589900, 12, 0, 589906, 12, 0, 655384, 12, 0, 655427, 12, 0, 720902, 1, 0, 720905, 1, 0, 720913, 1, 0, 786453, 12, 0, 786454, 12, 0, 786455, 12, 0, 786457, 12, 0, 786458, 12, 0, 786459, 12, 0, 786460, 12, 0, 851996, 12, 0, 852041, 1, 0, 852044, 1, 0, 852048, 1, 0, 852052, 1, 0, 852056, 1, 0, 917532, 12, 0, 917533, 12, 0, 917590, 12, 0, 917594, 12, 0, 983083, 12, 0, 983085, 12, 0, 983086, 12, 0, 983088, 12, 0, 983089, 12, 0, 1179717, 1, 0, 1179719, 1, 0, 1245257, -1610612735, 0, 1376307, 1, 0, 1376309, 1, 0, 1376311, 1, 0, 1376315, 1, 0, 2031608, 9, 0, 2031609, 6, 0, 2031610, 9, 0, 2031611, 6, 0, 2031612, 9, 0, 2097144, 6, 0, 2097145, 9, 0, 2097146, 6, 0, 2097147, 9, 0, 2097148, 6, 0, 2162680, 9, 0, 2162681, 6, 0, 2162682, 9, 0, 2162683, 6, 0, 2162684, 9, 0, 2228216, 6, 0, 2228217, 9, 0, 2228218, 6, 0, 2228219, 9, 0, 2228220, 6, 0, 2293752, 9, 0, 2293753, 6, 0, 2293754, 9, 0, 2293755, 6, 0, 2293756, 9, 0 ) + +[node name="Ladder" type="TileMap" parent="."] +tile_set = ExtResource( 21 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 196703, 0, 196609, 262239, 0, 196609, 327680, 536870912, 196609, 327775, 0, 196609, 393216, 536870912, 196609, 393311, 0, 196609, 458752, 536870912, 196609, 458847, 0, 196609, 524288, 536870912, 196609, 524383, 0, 196609, 589824, 536870912, 196609, 589919, 0, 196609, 655360, 536870912, 196609, 655455, 0, 196609, 720896, 536870912, 196609, 720991, 0, 196609, 786432, 536870912, 196609, 786450, 536870912, 196609, 786527, 0, 196609, 851968, 536870912, 196609, 851986, 536870912, 196609, 852063, 0, 196609, 917504, 536870912, 196609, 917599, 0, 196609, 983040, 536870912, 196609, 983135, 0, 196609, 1048576, 536870912, 196609, 1048671, 0, 196609, 1114191, 536870912, 196609, 1114207, 0, 196609, 1179727, 536870912, 196609, 1179743, 0, 196609, 1245263, 536870912, 196609, 1245279, 0, 196609 ) + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( -8, 104 ) +shape = SubResource( 1 ) + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2( 776, 112 ) +shape = SubResource( 1 ) + +[node name="Enemies" type="Node2D" parent="."] + +[node name="ArtificialSoul" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 88, 160 ) +__meta__ = { +"_edit_group_": true +} +radius = 3.0 +speed = 4.5 + +[node name="ArtificialSoul2" parent="Enemies/ArtificialSoul" instance=ExtResource( 15 )] +radius = 3.0 +initial_angle = 1.0 +speed = 4.5 + +[node name="ArtificialSoul3" parent="Enemies/ArtificialSoul" instance=ExtResource( 15 )] +radius = 3.0 +initial_angle = 2.0 +speed = 4.5 + +[node name="ArtificialSoul4" parent="Enemies/ArtificialSoul" instance=ExtResource( 15 )] +radius = 3.0 +initial_angle = 3.0 +speed = 4.5 + +[node name="ArtificialSoul5" parent="Enemies/ArtificialSoul" instance=ExtResource( 15 )] +radius = 3.0 +initial_angle = 4.0 +speed = 4.5 + +[node name="ArtificialSoul2" parent="Enemies" instance=ExtResource( 15 )] +position = Vector2( 632, 56 ) +__meta__ = { +"_edit_group_": true +} +radius = 3.0 +speed = 4.0 + +[node name="ArtificialSoul5" parent="Enemies/ArtificialSoul2" instance=ExtResource( 15 )] +radius = 3.0 +initial_angle = 4.0 +speed = 4.0 + +[node name="Bat" parent="Enemies" instance=ExtResource( 8 )] +position = Vector2( 8, 136 ) +left_up_boundary = 5.0 + +[node name="Cop3" parent="Enemies" instance=ExtResource( 40 )] +position = Vector2( 312, 136 ) +turn_time = 1.25 + +[node name="Cop" parent="Enemies" instance=ExtResource( 17 )] +position = Vector2( 400, 80 ) +walk_speed = 40.0 +left_boundary = 3.0 +right_boundary = 5.0 +turn_time = 1.0 + +[node name="Shard" parent="Enemies/Cop" instance=ExtResource( 31 )] +position = Vector2( 10, 0 ) +number = 2 + +[node name="RollingFiend5" parent="Enemies" instance=ExtResource( 11 )] +position = Vector2( 560, 144 ) +move_speed = 100.0 + +[node name="RollingFiend2" parent="Enemies" instance=ExtResource( 11 )] +position = Vector2( 352, 112 ) +clockwise = true + +[node name="RollingFiend3" parent="Enemies" instance=ExtResource( 11 )] +position = Vector2( 376, 128 ) +clockwise = true + +[node name="Hellarcher" parent="Enemies" instance=ExtResource( 32 )] +position = Vector2( 240, 40 ) +scale = Vector2( -1, 1 ) +shoot_time = 1.0 +arrow_speed = 100.0 + +[node name="Hellarcher2" parent="Enemies" instance=ExtResource( 32 )] +position = Vector2( 144, 120 ) +scale = Vector2( -1, 1 ) +shoot_time = 0.75 +arrow_speed = 100.0 + +[node name="Hellarcher3" parent="Enemies" instance=ExtResource( 32 )] +position = Vector2( 704, 64 ) +scale = Vector2( -1, 1 ) +arrow_speed = 125.0 + +[node name="Roboturret3" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 112, 88 ) +arrow_speed = 100.0 + +[node name="Roboturret6" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 616, 136 ) +shoot_time = 2.56 +arrow_speed = 200.0 + +[node name="Roboturret7" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 712, 136 ) +shoot_time = 1.5 +arrow_speed = 200.0 + +[node name="Roboturret4" parent="Enemies" instance=ExtResource( 16 )] +position = Vector2( 408, 40 ) +scale = Vector2( -1, 1 ) +shoot_time = 0.5 + +[node name="Snail" parent="Enemies" instance=ExtResource( 12 )] +position = Vector2( 88, 40 ) +left_up_boundary = 2.0 +right_down_boundary = 2.0 + +[node name="Spider6" parent="Enemies" instance=ExtResource( 10 )] +position = Vector2( 336, 24 ) +speed = 60.0 +down_boundary = 3 + +[node name="Snake" parent="Enemies" instance=ExtResource( 7 )] +position = Vector2( 456, 168 ) +left_up_boundary = 6.0 +right_down_boundary = 4.0 +speed = 70 + +[node name="Platforms" type="Node2D" parent="."] + +[node name="Ladder" parent="Platforms" instance=ExtResource( 3 )] +position = Vector2( 0, 40 ) +scale = Vector2( 1, 12 ) +can_climb_left = false + +[node name="Ladder3" parent="Platforms" instance=ExtResource( 3 )] +position = Vector2( 760, 24 ) +scale = Vector2( 1, 17 ) +can_climb_right = false + +[node name="Ladder4" parent="Platforms" instance=ExtResource( 3 )] +position = Vector2( 632, 136 ) +scale = Vector2( 1, 2 ) +can_climb_left = false + +[node name="Ladder6" parent="Platforms" instance=ExtResource( 3 )] +position = Vector2( 632, 152 ) + +[node name="Ladder2" parent="Platforms" instance=ExtResource( 3 )] +position = Vector2( 144, 104 ) + +[node name="Ladder5" parent="Platforms" instance=ExtResource( 3 )] +position = Vector2( 144, 96 ) +can_climb_left = false + +[node name="MovingPlatform" parent="Platforms" instance=ExtResource( 27 )] +position = Vector2( 176, 88 ) +scale = Vector2( 2, 1 ) +speed = 100 +right_down_boundary = 6.0 + +[node name="MovingPlatform3" parent="Platforms" instance=ExtResource( 27 )] +position = Vector2( 168, 48 ) +scale = Vector2( 2, 1 ) +speed = 40 +right_down_boundary = 5.0 + +[node name="MovingPlatform4" parent="Platforms" instance=ExtResource( 27 )] +position = Vector2( 536, 104 ) +scale = Vector2( 2, 1 ) +speed = 40 +left_up_boundary = 8.0 +right_down_boundary = 1.0 +move_direction = 1 + +[node name="FallingBlock3" parent="Platforms" instance=ExtResource( 33 )] +position = Vector2( 144, 48 ) + +[node name="FallingBlock4" parent="Platforms" instance=ExtResource( 33 )] +position = Vector2( 216, 80 ) + +[node name="FallingBlock6" parent="Platforms" instance=ExtResource( 33 )] +position = Vector2( 600, 40 ) + +[node name="FallingBlock7" parent="Platforms" instance=ExtResource( 33 )] +position = Vector2( 624, 32 ) + +[node name="FallingBlock5" parent="Platforms" instance=ExtResource( 33 )] +position = Vector2( 136, 152 ) + +[node name="FallingBlock9" parent="Platforms" instance=ExtResource( 33 )] +position = Vector2( 608, 72 ) + +[node name="FallingBlock10" parent="Platforms" instance=ExtResource( 33 )] +position = Vector2( 656, 72 ) + +[node name="Collectibles" type="Node2D" parent="."] + +[node name="Key" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 48, 168 ) + +[node name="Key2" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 80, 168 ) + +[node name="Key3" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 112, 168 ) + +[node name="Key4" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 144, 168 ) + +[node name="Key5" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 136, 144 ) + +[node name="Key6" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 112, 136 ) + +[node name="Key7" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 56, 136 ) + +[node name="Key8" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 40, 128 ) + +[node name="Key9" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 24, 120 ) + +[node name="Key10" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 512, 24 ) + +[node name="Key13" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 40, 40 ) + +[node name="Key14" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 72, 40 ) + +[node name="Key15" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 104, 40 ) + +[node name="Key16" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 152, 32 ) + +[node name="Key17" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 264, 40 ) + +[node name="Key18" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 304, 48 ) + +[node name="Key19" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 336, 48 ) + +[node name="Key20" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 368, 48 ) + +[node name="Key21" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 304, 112 ) + +[node name="Key22" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 336, 112 ) + +[node name="Key23" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 352, 112 ) + +[node name="Key24" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 376, 112 ) + +[node name="Key25" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 408, 112 ) + +[node name="Key26" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 392, 144 ) + +[node name="Key27" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 368, 136 ) + +[node name="Key28" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 312, 168 ) + +[node name="Key29" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 264, 168 ) + +[node name="Key11" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 488, 24 ) + +[node name="Key30" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 528, 160 ) + +[node name="Key34" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 440, 112 ) + +[node name="Key35" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 480, 112 ) + +[node name="Key36" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 520, 104 ) + +[node name="Key37" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 544, 104 ) + +[node name="Key38" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 568, 72 ) + +[node name="Key39" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 584, 56 ) + +[node name="Key40" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 512, 48 ) + +[node name="Key43" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 552, 24 ) + +[node name="Key44" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 584, 24 ) + +[node name="Key45" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 728, 104 ) + +[node name="Key46" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 744, 104 ) + +[node name="Key47" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 568, 104 ) + +[node name="Key48" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 592, 104 ) + +[node name="Key49" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 616, 104 ) + +[node name="Key50" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 672, 136 ) + +[node name="Key41" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 496, 64 ) + +[node name="Key42" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 472, 72 ) + +[node name="Key31" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 600, 168 ) + +[node name="Key32" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 648, 168 ) + +[node name="Key33" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 688, 144 ) + +[node name="Key12" parent="Collectibles" instance=ExtResource( 29 )] +position = Vector2( 160, 80 ) + +[node name="Shard" parent="Collectibles" instance=ExtResource( 31 )] +position = Vector2( 240, 72 ) + +[node name="Shard2" parent="Collectibles" instance=ExtResource( 31 )] +position = Vector2( 384, 48 ) +number = 1 + +[node name="Shard3" parent="Collectibles" instance=ExtResource( 31 )] +position = Vector2( 744, 168 ) +number = 3 + +[node name="Star2" parent="Collectibles" instance=ExtResource( 30 )] +position = Vector2( 88, 144 ) + +[node name="Star3" parent="Collectibles" instance=ExtResource( 30 )] +position = Vector2( 368, 168 ) +color = 1 + +[node name="Star" parent="Collectibles" instance=ExtResource( 30 )] +position = Vector2( 696, 24 ) +color = 3 + +[node name="Star4" parent="Collectibles" instance=ExtResource( 30 )] +position = Vector2( 384, 24 ) +color = 2 + +[node name="Star5" parent="Collectibles" instance=ExtResource( 30 )] +position = Vector2( 728, 64 ) +color = 4 + +[node name="ColorRect2" type="ColorRect" parent="."] +margin_left = 512.0 +margin_right = 768.0 +margin_bottom = 192.0 +color = Color( 1, 0.843137, 0, 0.0901961 ) +script = ExtResource( 18 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="ColorRect4" type="ColorRect" parent="."] +margin_left = 256.0 +margin_right = 512.0 +margin_bottom = 192.0 +color = Color( 0, 0.0627451, 1, 0.0901961 ) +script = ExtResource( 18 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="ColorRect3" type="ColorRect" parent="."] +margin_right = 256.0 +margin_bottom = 8.0 +color = Color( 0, 0, 0, 1 ) + +[node name="HUD" parent="." instance=ExtResource( 2 )] +song_name = "♫Mitten" + +[node name="Exit" parent="." instance=ExtResource( 14 )] +position = Vector2( 736, 36 ) +cost = 25 + +[node name="Speccy" parent="." instance=ExtResource( 43 )] +position = Vector2( 128, 96 ) +flip = true +message = "go_get_em" + +[connection signal="ready" from="Speccy" to="Speccy" method="appear"] + +[editable path="ElectricTiles"] +[editable path="ElectricTiles/DeathTile"] diff --git a/maps/level_select.gd b/maps/level_select.gd index 1c18907..7dc6e8f 100644 --- a/maps/level_select.gd +++ b/maps/level_select.gd @@ -32,6 +32,7 @@ export var target_time_any = 0 # Called when the node enters the scene tree for the first time. func _ready(): + easy_mode_text.text = "difficulty: %s, Z to change" % ["sweet", "salty", "spicy", "pungent"][Game.difficulty] Fade.fade_in(0.000000000000001) change_current_level(Game.current_level) Audio.ac_music.stop() @@ -53,20 +54,8 @@ func _physics_process(delta): Game.change_map(level.scene) #Toggle lives mode if Input.is_action_just_pressed("ui_cancel"): - Game.use_lives = !Game.use_lives - Save.set_options() - if Game.use_lives: - lives_mode_text.text = "lives are on press z to change this" - else: - lives_mode_text.text = "lives are off press z to change this" - #Toggle easy mode - if Input.is_action_just_pressed("sword"): - Game.is_easy_mode = !Game.is_easy_mode - Save.set_options() - if Game.is_easy_mode: - easy_mode_text.text = "easy is on press c to change this" - else: - easy_mode_text.text = "easy is off press c to change this" + Game.difficulty = (Game.difficulty + 1) % 4 + easy_mode_text.text = "difficulty: %s, Z to change" % ["sweet", "salty", "spicy", "pungent"][Game.difficulty] func change_current_shard(amount): if current_shard + amount != -1 && current_shard + amount != 8: #Check if in range @@ -92,17 +81,17 @@ func change_current_level(amount): shard_arrow.position.x = 76 #Load new data var save_id = LevelData.levels[current_level].save_id - var save_data = Save.get_level_data(save_id) + var save_data = Save.current_file.levels[save_id] # set any% scores high_score_any.text = "Any%%\n%05d\n%s" % [ save_data.score_any, - Game.timeify(save_data.time_any) + Game.format_time(save_data.time_any) ] # set 100% scores high_score_100.text = "100%%\n%05d\n%s" % [ save_data.score_100, - Game.timeify(save_data.time_100) + Game.format_time(save_data.time_100) ] # set collected shards for i in 8: - shards[i].visible = save_data.shards[i] + shards[i].visible = save_data.shards_collected[i] diff --git a/maps/level_select.tscn b/maps/level_select.tscn index 91444a7..b0fee28 100644 --- a/maps/level_select.tscn +++ b/maps/level_select.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=11 format=2] +[gd_scene load_steps=15 format=2] [ext_resource path="res://ui/theme.tres" type="Theme" id=1] [ext_resource path="res://tilesets/t_gui.tres" type="TileSet" id=2] @@ -9,6 +9,28 @@ [ext_resource path="res://maps/level_select.gd" type="Script" id=7] [ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=8] [ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=9] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=10] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=11] + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 11 ) +shader_param/color_1 = Color( 0.121569, 0.454902, 1, 1 ) +shader_param/color_2 = Color( 0.258824, 0.909804, 0.396078, 1 ) +shader_param/checker_size = Vector2( 8, 8 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 11, 1 ) +shader_param/cycle_alternation = Vector2( 1, 1 ) +shader_param/uv_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 11 ) +shader_param/color_1 = Color( 1, 0.121569, 0.92549, 1 ) +shader_param/color_2 = Color( 0.258824, 0.909804, 0.396078, 0 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 0.2, 11 ) +shader_param/cycle_alternation = Vector2( 2.404, 1.608 ) +shader_param/uv_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) [sub_resource type="ShaderMaterial" id=2] shader = ExtResource( 3 ) @@ -19,9 +41,15 @@ shader_param/border_corners = false script = ExtResource( 7 ) [node name="BackGround" type="ColorRect" parent="."] +material = SubResource( 3 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="BackGround2" type="ColorRect" parent="."] +visible = false +material = SubResource( 4 ) margin_right = 256.0 margin_bottom = 192.0 -color = Color( 0, 0, 0, 1 ) [node name="ColorRect2" type="ColorRect" parent="."] margin_left = 43.0 @@ -37,15 +65,17 @@ format = 1 tile_data = PoolIntArray( 327685, 0, 0, 327686, 536870912, 1, 327687, 0, 1, 327688, 0, 1, 327689, 0, 1, 327690, 0, 1, 327691, 0, 1, 327692, 0, 1, 327693, 0, 1, 327694, 0, 1, 327695, 0, 1, 327696, 0, 1, 327697, 0, 1, 327698, 0, 1, 327699, 0, 1, 327700, 0, 1, 327701, 0, 1, 327702, 0, 1, 327703, 0, 1, 327704, 0, 1, 327705, 0, 1, 327706, 536870912, 0, 393221, 1073741824, 2, 393242, 1610612736, 2, 458757, 1073741824, 2, 458778, 1610612736, 2, 524293, 1073741824, 2, 524314, 1610612736, 2, 589829, 1073741824, 2, 589850, 1610612736, 2, 655365, 1073741824, 2, 655386, 1610612736, 2, 720901, 1073741824, 2, 720922, 1610612736, 2, 786437, 1073741824, 2, 786458, 1610612736, 2, 851973, 1073741824, 2, 851994, 1610612736, 2, 917509, 1073741824, 2, 917530, 1610612736, 2, 983045, 1073741824, 2, 983066, 1610612736, 2, 1048581, 1073741824, 2, 1048602, 1610612736, 2, 1114117, 1073741824, 2, 1114138, 1610612736, 2, 1179653, 1073741824, 0, 1179654, 1073741824, 1, 1179655, 1610612736, 1, 1179656, 1610612736, 1, 1179657, 1610612736, 1, 1179658, 1610612736, 1, 1179659, 1610612736, 1, 1179660, 1610612736, 1, 1179661, 1610612736, 1, 1179662, 1610612736, 1, 1179663, 1610612736, 1, 1179664, 1610612736, 1, 1179665, 1610612736, 1, 1179666, 1610612736, 1, 1179667, 1610612736, 1, 1179668, 1610612736, 1, 1179669, 1610612736, 1, 1179670, 1610612736, 1, 1179671, 1610612736, 1, 1179672, 1610612736, 1, 1179673, 1073741824, 1, 1179674, 1610612736, 0 ) [node name="Title" type="Label" parent="."] -margin_left = 72.0 +material = ExtResource( 10 ) +margin_left = 43.0 margin_top = 48.0 -margin_right = 184.0 +margin_right = 213.0 margin_bottom = 58.0 theme = ExtResource( 1 ) text = "test text" align = 1 [node name="HighScoreText" type="Label" parent="."] +material = ExtResource( 10 ) margin_left = 56.0 margin_top = 61.0 margin_right = 200.0 @@ -55,6 +85,7 @@ text = "High SCORE:" align = 1 [node name="HighScoreAny" type="Label" parent="."] +material = ExtResource( 10 ) margin_left = 21.0 margin_top = 72.0 margin_right = 165.0 @@ -66,6 +97,7 @@ text = "any% align = 1 [node name="HighScore100" type="Label" parent="."] +material = ExtResource( 10 ) margin_left = 84.0 margin_top = 72.0 margin_right = 228.0 @@ -77,23 +109,27 @@ text = "100% align = 1 [node name="ShardTitle" type="Label" parent="."] +material = ExtResource( 10 ) margin_left = 43.0 margin_top = 134.0 margin_right = 213.0 margin_bottom = 144.0 theme = ExtResource( 1 ) -text = "Collect all coins" +text = "AAAAAAAAAAAAAAAAAAAAAAAA" align = 1 [node name="EasyModeText" type="Label" parent="."] +material = ExtResource( 10 ) margin_top = 3.0 margin_right = 256.0 margin_bottom = 13.0 theme = ExtResource( 1 ) -text = "easy is off press c to change this" +text = "difficulty" align = 1 [node name="LivesModeText" type="Label" parent="."] +visible = false +material = ExtResource( 10 ) margin_left = 2.0 margin_top = 180.0 margin_right = 258.0 diff --git a/maps/map.gd b/maps/map.gd index e5e4b62..e256720 100644 --- a/maps/map.gd +++ b/maps/map.gd @@ -1,33 +1,47 @@ extends Node2D + +const PauseScreen := preload("res://objects/hud/pause_screen.tscn") + export var target_time_any = 0 export var target_time_100 = 0 export (AudioStream) var music -export (Array, PackedScene) var lore_entries = null +export (Array, PackedScene) var lore_entries = [] #Bonuses var time_bonus = true var life_bonus = true var collectible_bonus = false +func _notification(what: int) -> void: + match what: + NOTIFICATION_WM_FOCUS_OUT: + if Debug.entry == false and Game.can_pause and not get_tree().paused: + var pause = PauseScreen.instance() + pause.lore_entries = lore_entries + get_parent().call_deferred("add_child", pause) + func _ready(): get_tree().paused = true Game.can_pause = false - Fade.fade_in(0.4) + Fade.fade_in(Options.transition_speed_secs) Fade.connect("fade_finished", get_tree(), "set_pause", [false], CONNECT_ONESHOT) Fade.connect("fade_finished", Game, "set", ["can_pause", true], CONNECT_ONESHOT) Audio.play_music(music) + Game.time = 0.0 + Game.still_playing = true + if Debug.reset_is_cheating: Debug.is_cheating = false func _physics_process(delta): + if Game.still_playing: + Game.time += delta if Debug.entry == false && Game.can_pause: #Pause if Input.is_action_just_pressed("pause") && !get_tree().paused: - var pause = Game.pause_screen.instance() - if lore_entries != null && !lore_entries.empty(): - var entry = lore_entries[randi() % lore_entries.size()] - pause.lore_entry = entry + var pause = PauseScreen.instance() + pause.lore_entries = lore_entries get_parent().add_child(pause) # restart level - if Input.is_action_just_pressed("restart"): + if Input.is_action_just_pressed("restart") and not Game.marathon_mode: Game.call_deferred("restart_level") if Game.keys == 50 && Game.shards == 5: diff --git a/maps/mountain.tscn b/maps/mountain.tscn index bc13867..9285a2e 100644 --- a/maps/mountain.tscn +++ b/maps/mountain.tscn @@ -1,16 +1,16 @@ -[gd_scene load_steps=37 format=2] +[gd_scene load_steps=44 format=2] [ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=1] [ext_resource path="res://maps/map.gd" type="Script" id=2] [ext_resource path="res://graphics/backgrounds/mountain_mountain.png" type="Texture" id=3] [ext_resource path="res://graphics/backgrounds/mountain_clouds.png" type="Texture" id=4] [ext_resource path="res://graphics/backgrounds/mountain_sunset.png" type="Texture" id=5] -[ext_resource path="res://objects/player/player_scholar.tscn" type="PackedScene" id=6] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=6] [ext_resource path="res://tilesets/t_mountain.tres" type="TileSet" id=7] [ext_resource path="res://objects/enemy/rolling_fiend.tscn" type="PackedScene" id=8] [ext_resource path="res://objects/environment/moving_platform/moving_platform.tscn" type="PackedScene" id=9] [ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=10] -[ext_resource path="res://objects/environment/death tile/death_tile.tscn" type="PackedScene" id=11] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=11] [ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=12] [ext_resource path="res://objects/enemy/bat.tscn" type="PackedScene" id=13] [ext_resource path="res://objects/collectibles/star.tscn" type="PackedScene" id=14] @@ -26,7 +26,12 @@ [ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=24] [ext_resource path="res://objects/respawn_point.tscn" type="PackedScene" id=25] [ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=26] -[ext_resource path="res://audio/music/burnt_in.ogg" type="AudioStream" id=27] +[ext_resource path="res://audio/music/burnt_out.ogg" type="AudioStream" id=27] +[ext_resource path="res://objects/lore/hills/eviscerator.tscn" type="PackedScene" id=28] +[ext_resource path="res://objects/lore/hills/catbat.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/lore/mountain/echo_mountain.tscn" type="PackedScene" id=30] +[ext_resource path="res://objects/lore/mountain/rolling_fiend.tscn" type="PackedScene" id=31] +[ext_resource path="res://graphics/turniwood/turning_platform_wood_dark.png" type="Texture" id=32] [sub_resource type="RectangleShape2D" id=2] extents = Vector2( 24, 20 ) @@ -43,11 +48,17 @@ extents = Vector2( 28, 4 ) [sub_resource type="RectangleShape2D" id=4] extents = Vector2( 32, 4 ) +[sub_resource type="RectangleShape2D" id=12] +extents = Vector2( 32, 4 ) + [sub_resource type="RectangleShape2D" id=5] extents = Vector2( 48, 64 ) [sub_resource type="RectangleShape2D" id=6] -extents = Vector2( 20, 8 ) +extents = Vector2( 16, 8 ) + +[sub_resource type="RectangleShape2D" id=11] +extents = Vector2( 24, 4 ) [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 4, 294 ) @@ -69,10 +80,13 @@ tracks/0/keys = { "values": [ Vector2( 128, 96 ), Vector2( 124, 96 ), Vector2( 132, 96 ), Vector2( 128, 96 ), Vector2( 124, 96 ), Vector2( 132, 96 ), Vector2( 128, 96 ), Vector2( 124, 96 ), Vector2( 132, 96 ), Vector2( 128, 96 ), Vector2( 124, 96 ), Vector2( 132, 96 ), Vector2( 128, 96 ), Vector2( 128, 96 ), Vector2( 128, -999 ) ] } -[node name="Map" type="Node2D" groups=["map"]] +[node name="Map2" type="Node2D" groups=["map"]] pause_mode = 1 script = ExtResource( 2 ) +target_time_any = 45 +target_time_100 = 185 music = ExtResource( 27 ) +lore_entries = [ ExtResource( 30 ), ExtResource( 28 ), ExtResource( 29 ), ExtResource( 31 ) ] [node name="Background" type="Node" parent="."] @@ -113,11 +127,13 @@ __meta__ = { "_edit_lock_": true } -[node name="Ground" type="TileMap" parent="."] +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 11 ) tile_set = ExtResource( 7 ) cell_size = Vector2( 8, 8 ) format = 1 -tile_data = PoolIntArray( -2818047, 0, 65536, -2818046, 0, 65537, -2818045, 0, 65537, -2818044, 0, 65537, -2818043, 0, 65538, -2818033, 0, 65536, -2818032, 0, 65537, -2818031, 0, 65537, -2818030, 0, 65537, -2818029, 0, 65538, -2818022, 0, 0, -2818021, 0, 196609, -2818020, 0, 196609, -2818019, 0, 196609, -2818018, 0, 196609, -2818017, 0, 196609, -2752486, 0, 1, -2686950, 0, 1, -2621440, 0, 0, -2621439, 0, 65537, -2621438, 0, 65537, -2621437, 0, 65537, -2621436, 0, 65537, -2621435, 0, 65537, -2621434, 0, 65537, -2621433, 0, 65537, -2621432, 0, 65537, -2621431, 0, 65537, -2621430, 0, 65537, -2621429, 0, 65537, -2621428, 0, 65537, -2621427, 0, 65537, -2621426, 0, 65537, -2621425, 0, 65537, -2621424, 0, 65538, -2621414, 0, 1, -2621413, 0, 0, -2621412, 0, 0, -2621411, 0, 0, -2555904, 0, 1, -2555878, 0, 1, -2490368, 0, 1, -2490342, 0, 1, -2424832, 0, 1, -2424806, 0, 1, -2359296, 0, 1, -2359270, 0, 1, -2293760, 0, 0, -2293759, 0, 0, -2293758, 0, 0, -2293757, 0, 0, -2293756, 0, 0, -2293755, 0, 0, -2293744, 0, 65536, -2293743, 0, 65537, -2293742, 0, 65538, -2293734, 0, 0, -2293733, 0, 0, -2293732, 0, 0, -2097152, 0, 0, -2097151, 0, 0, -2097150, 0, 0, -2097149, 0, 0, -2097148, 0, 0, -2097147, 0, 0, -2097146, 0, 0, -2097145, 0, 0, -2097144, 0, 0, -2097143, 0, 0, -2097142, 0, 0, -2097141, 0, 0, -2097140, 0, 0, -2097139, 0, 0, -2097138, 0, 0, -2097137, 0, 0, -2097136, 0, 0, -2097135, 0, 0, -2097134, 0, 0, -2031616, 0, 1, -1966080, 0, 1, -1900544, 0, 1, -1900535, 0, 0, -1900534, 0, 0, -1900533, 0, 0, -1900532, 0, 0, -1900531, 0, 0, -1900530, 0, 0, -1900529, 0, 0, -1900528, 0, 0, -1900527, 0, 0, -1900526, 0, 0, -1835008, 0, 1, -1834999, 0, 0, -1769472, 0, 1, -1769463, 0, 0, -1769447, 0, 0, -1769446, 0, 0, -1769445, 0, 0, -1703936, 0, 1, -1703927, 0, 0, -1703909, 0, 1, -1638400, 0, 1, -1638391, 0, 0, -1638390, 0, 0, -1638389, 0, 0, -1638388, 0, 0, -1638387, 0, 0, -1638386, 0, 0, -1638385, 0, 0, -1638384, 0, 0, -1638383, 0, 0, -1638382, 0, 0, -1638381, 0, 0, -1638380, 0, 0, -1638373, 0, 1, -1572864, 0, 1, -1572844, 0, 1, -1572837, 0, 1, -1507328, 0, 1, -1507308, 0, 1, -1507301, 0, 1, -1441792, 0, 1, -1441772, 0, 1, -1441765, 0, 1, -1376256, 0, 1, -1376236, 0, 1, -1376229, 0, 1, -1310720, 0, 1, -1310700, 0, 1, -1310693, 0, 1, -1245184, 0, 1, -1245164, 0, 1, -1245157, 0, 65536, -1245156, 0, 65537, -1245155, 0, 65537, -1245154, 0, 65537, -1245153, 0, 65538, -1179648, 0, 65536, -1179647, 0, 65537, -1179646, 0, 65537, -1179645, 0, 65537, -1179644, 0, 65537, -1179643, 0, 65537, -1179642, 0, 65537, -1179641, 0, 65537, -1179640, 0, 65538, -1179638, 0, 65536, -1179637, 0, 65537, -1179636, 0, 65537, -1179635, 0, 65538, -1179631, 0, 65536, -1179630, 0, 65537, -1179629, 0, 65537, -1179628, 0, 65538, -917480, 0, 65536, -917479, 0, 65537, -917478, 0, 65537, -917477, 0, 65538, -851955, 0, 65536, -851954, 0, 65537, -851953, 0, 65538, -655359, 0, 65536, -655358, 0, 65537, -655357, 0, 65537, -655356, 0, 65537, -655355, 0, 65538, -655340, 0, 65536, -655339, 0, 65537, -655338, 0, 65537, -655337, 0, 65537, -655336, 0, 65537, -655335, 0, 65537, -655334, 0, 65537, -655333, 0, 65538, -458743, 0, 0, -458742, 0, 0, -458741, 0, 0, -458740, 0, 0, -458739, 0, 0, -458738, 0, 0, -458737, 0, 0, -458736, 0, 0, -458735, 0, 0, -458734, 0, 0, -458733, 0, 0, -458732, 0, 0, -458731, 0, 0, -393207, 0, 1, -327671, 0, 1, -262135, 0, 1, -262129, 0, 0, -262128, 0, 0, -262127, 0, 0, -262121, 0, 0, -262120, 0, 0, -262119, 0, 0, -262118, 0, 0, -262117, 0, 0, -262116, 0, 0, -262115, 0, 0, -262114, 0, 0, -262113, 0, 0, -196599, 0, 1, -196591, 0, 1, -131068, 0, 0, -131067, 0, 0, -131066, 0, 0, -131065, 0, 0, -131063, 0, 1, -131059, 0, 65536, -131058, 0, 65538, -131055, 0, 1, -65527, 0, 1, -65526, 0, 0, -65519, 0, 1, -65515, 0, 65536, -65514, 0, 65537, -65513, 0, 65536, -65512, 0, 65537, -65511, 0, 65537, -65510, 0, 65537, -65509, 0, 65537, -65508, 0, 65537, -65507, 0, 65537, -65506, 0, 65537, -65505, 0, 65537, 9, 0, 1, 17, 0, 1, 65545, 0, 1, 65553, 0, 1, 131081, 0, 1, 131089, 0, 1, 196617, 0, 1, 196619, 0, 65536, 196620, 0, 65537, 196621, 0, 65537, 196622, 0, 65537, 196623, 0, 65537, 196624, 0, 65538, 196625, 0, 1, 262153, 0, 1, 262161, 0, 1, 262172, 0, 0, 262173, 0, 0, 262174, 0, 0, 327689, 0, 1, 327697, 0, 1, 393225, 0, 1, 393233, 0, 0, 458757, 0, 0, 458758, 0, 0, 458759, 0, 0, 458761, 0, 1, 524297, 0, 0, 524298, 0, 0, 524299, 0, 0, 524300, 0, 0, 524301, 0, 0, 524302, 0, 0, 720910, 0, 0, 720911, 0, 0, 720912, 0, 0, 720913, 0, 0, 720914, 0, 0, 720915, 0, 0, 720920, 0, 196609, 720921, 0, 196609, 720922, 0, 196609, 720923, 0, 196609, 720924, 0, 196609, 720925, 0, 196609, 720926, 0, 196609, 720927, 0, 196609, 851969, 0, 65536, 851970, 0, 65537, 851971, 0, 65537, 851972, 0, 65537, 851973, 0, 65537, 851974, 0, 65537, 851975, 0, 65538, 983041, 0, 196609, 983042, 0, 196609, 983043, 0, 196609, 983044, 0, 196609, 983045, 0, 196609, 983046, 0, 196609, 983047, 0, 196609, 983048, 0, 196609, 983049, 0, 196609, 983050, 0, 196609, 983051, 0, 196609, 983052, 0, 196609, 983053, 0, 196609, 983059, 0, 0, 983060, 0, 0, 983061, 0, 0, 983062, 0, 0, 983063, 0, 0, 983064, 0, 0, 983065, 0, 0, 983066, 0, 0, 983067, 0, 0, 1245186, 0, 196609, 1245187, 0, 196609, 1245188, 0, 196609, 1245189, 0, 196609, 1245190, 0, 196609, 1245191, 0, 196609, 1310743, 0, 65536, 1310744, 0, 65537, 1310745, 0, 65537, 1310746, 0, 65537, 1310747, 0, 65537, 1310748, 0, 65538, 1441794, 0, 65536, 1441795, 0, 65537, 1441796, 0, 65537, 1441797, 0, 65537, 1441798, 0, 65537, 1441799, 0, 65538, 1441808, 0, 65536, 1441809, 0, 65537, 1441810, 0, 65537, 1441811, 0, 65538, 1507351, 0, 65536, 1507352, 0, 65537, 1507353, 0, 65537, 1507354, 0, 65537, 1507355, 0, 65537, 1507356, 0, 65537, 1507357, 0, 65538 ) +tile_data = PoolIntArray( -2818047, 0, 65536, -2818046, 0, 65537, -2818045, 0, 65537, -2818044, 0, 65537, -2818043, 0, 65538, -2818033, 0, 65536, -2818032, 0, 65537, -2818031, 0, 65537, -2818030, 0, 65537, -2818029, 0, 65538, -2818022, 0, 0, -2818021, 0, 196609, -2818020, 0, 196609, -2818019, 0, 196609, -2818018, 0, 196609, -2818017, 0, 196609, -2752486, 0, 1, -2686950, 0, 1, -2621440, 0, 0, -2621439, 0, 65537, -2621438, 0, 65537, -2621437, 0, 65537, -2621436, 0, 65537, -2621435, 0, 65537, -2621434, 0, 65537, -2621433, 0, 65537, -2621432, 0, 65537, -2621431, 0, 65537, -2621430, 0, 65537, -2621429, 0, 65537, -2621428, 0, 65537, -2621427, 0, 65537, -2621426, 0, 65537, -2621425, 0, 65537, -2621424, 0, 65538, -2621414, 0, 1, -2621413, 0, 0, -2621412, 0, 0, -2621411, 0, 0, -2555904, 0, 1, -2555878, 0, 1, -2490368, 0, 1, -2490342, 0, 1, -2424832, 0, 1, -2424806, 0, 1, -2359296, 0, 1, -2359270, 0, 1, -2293760, 0, 0, -2293759, 0, 0, -2293758, 0, 0, -2293757, 0, 0, -2293756, 0, 0, -2293755, 0, 0, -2293744, 0, 65536, -2293743, 0, 65537, -2293742, 0, 65538, -2293734, 0, 0, -2293733, 0, 0, -2293732, 0, 0, -2097152, 0, 0, -2097151, 0, 0, -2097150, 0, 0, -2097149, 0, 0, -2097148, 0, 0, -2097147, 0, 0, -2097146, 0, 0, -2097145, 0, 0, -2097144, 0, 0, -2097143, 0, 0, -2097142, 0, 0, -2097141, 0, 0, -2097140, 0, 0, -2097139, 0, 0, -2097138, 0, 0, -2097137, 0, 0, -2097136, 0, 0, -2097135, 0, 0, -2097134, 0, 0, -2031616, 0, 1, -1966080, 0, 1, -1900544, 0, 1, -1900535, 0, 0, -1900534, 0, 0, -1900533, 0, 0, -1900532, 0, 0, -1900531, 0, 0, -1900530, 0, 0, -1900529, 0, 0, -1900528, 0, 0, -1900527, 0, 0, -1900526, 0, 0, -1835008, 0, 1, -1835004, 0, 0, -1835001, 0, 0, -1835000, 0, 0, -1834999, 0, 0, -1769472, 0, 1, -1769463, 0, 0, -1769447, 0, 0, -1769446, 0, 0, -1769445, 0, 0, -1703936, 0, 1, -1703927, 0, 0, -1703909, 0, 1, -1638400, 0, 1, -1638391, 0, 0, -1638390, 0, 0, -1638389, 0, 0, -1638388, 0, 0, -1638387, 0, 0, -1638386, 0, 0, -1638385, 0, 0, -1638384, 0, 0, -1638383, 0, 0, -1638382, 0, 0, -1638381, 0, 0, -1638380, 0, 0, -1638373, 0, 1, -1572864, 0, 1, -1572844, 0, 1, -1572837, 0, 1, -1507328, 0, 1, -1507308, 0, 1, -1507301, 0, 1, -1441792, 0, 1, -1441772, 0, 1, -1441765, 0, 1, -1376256, 0, 1, -1376236, 0, 1, -1376229, 0, 1, -1310720, 0, 1, -1310700, 0, 1, -1310693, 0, 1, -1245184, 0, 1, -1245164, 0, 1, -1245157, 0, 65536, -1245156, 0, 65537, -1245155, 0, 65537, -1245154, 0, 65537, -1245153, 0, 65538, -1179648, 0, 65536, -1179647, 0, 65537, -1179646, 0, 65537, -1179645, 0, 65537, -1179644, 0, 65537, -1179643, 0, 65537, -1179642, 0, 65537, -1179641, 0, 65537, -1179640, 0, 65538, -1179638, 0, 65536, -1179637, 0, 65537, -1179636, 0, 65537, -1179635, 0, 65538, -1179631, 0, 65536, -1179630, 0, 65537, -1179629, 0, 65537, -1179628, 0, 65538, -917480, 0, 65536, -917479, 0, 65537, -917478, 0, 65537, -917477, 0, 65538, -851955, 0, 65536, -851954, 0, 65537, -851953, 0, 65538, -655359, 0, 65536, -655358, 0, 65537, -655357, 0, 65537, -655356, 0, 65537, -655355, 0, 65538, -655340, 0, 65536, -655339, 0, 65537, -655338, 0, 65537, -655337, 0, 65537, -655336, 0, 65537, -655335, 0, 65537, -655334, 0, 65537, -655333, 0, 65538, -458743, 0, 0, -458742, 0, 0, -458741, 0, 0, -458740, 0, 0, -458739, 0, 0, -458738, 0, 0, -458737, 0, 0, -458736, 0, 0, -458735, 0, 0, -458734, 0, 0, -458733, 0, 0, -458732, 0, 0, -458731, 0, 0, -393207, 0, 1, -327671, 0, 1, -262135, 0, 1, -262129, 0, 0, -262128, 0, 0, -262127, 0, 0, -262120, 0, 0, -262119, 0, 0, -262118, 0, 0, -262117, 0, 0, -262116, 0, 0, -262115, 0, 0, -262114, 0, 0, -262113, 0, 0, -196599, 0, 1, -196591, 0, 1, -131068, 0, 0, -131067, 0, 0, -131066, 0, 0, -131065, 0, 0, -131063, 0, 1, -131059, 0, 65536, -131058, 0, 65538, -131055, 0, 1, -131050, 0, 0, -65527, 0, 1, -65526, 0, 0, -65519, 0, 1, -65515, 0, 65536, -65514, 0, 65537, -65513, 0, 65536, -65512, 0, 65537, -65511, 0, 65537, -65510, 0, 65537, -65509, 0, 65537, -65508, 0, 65537, -65507, 0, 65537, -65506, 0, 65537, -65505, 0, 65537, 9, 0, 1, 17, 0, 1, 65545, 0, 1, 65553, 0, 1, 131081, 0, 1, 131089, 0, 1, 196617, 0, 1, 196619, 0, 65536, 196620, 0, 65537, 196621, 0, 65537, 196622, 0, 65537, 196623, 0, 65537, 196624, 0, 65538, 196625, 0, 1, 262153, 0, 1, 262161, 0, 1, 327689, 0, 1, 327697, 0, 1, 327707, 0, 0, 327708, 0, 0, 327709, 0, 0, 327710, 0, 0, 393225, 0, 1, 393233, 0, 0, 458757, 0, 0, 458758, 0, 0, 458759, 0, 0, 458761, 0, 1, 524297, 0, 0, 524298, 0, 0, 524299, 0, 0, 524300, 0, 0, 524301, 0, 0, 524302, 0, 0, 720910, 0, 0, 720911, 0, 0, 720912, 0, 0, 720913, 0, 0, 720914, 0, 0, 720915, 0, 0, 720920, 0, 196609, 720921, 0, 196609, 720922, 0, 196609, 720923, 0, 196609, 720924, 0, 196609, 720925, 0, 196609, 720926, 0, 196609, 720927, 0, 196609, 851969, 0, 65536, 851970, 0, 65537, 851971, 0, 65537, 851972, 0, 65537, 851973, 0, 65537, 851974, 0, 65537, 851975, 0, 65538, 983041, 0, 196609, 983042, 0, 196609, 983043, 0, 196609, 983044, 0, 196609, 983045, 0, 196609, 983046, 0, 196609, 983047, 0, 196609, 983048, 0, 196609, 983049, 0, 196609, 983050, 0, 196609, 983051, 0, 196609, 983052, 0, 196609, 983053, 0, 196609, 983059, 0, 0, 983060, 0, 0, 983061, 0, 0, 983062, 0, 0, 983063, 0, 0, 983064, 0, 0, 983065, 0, 0, 983066, 0, 0, 983067, 0, 0, 1245186, 0, 196609, 1245187, 0, 196609, 1245188, 0, 196609, 1245189, 0, 196609, 1245190, 0, 196609, 1245191, 0, 196609, 1310743, 0, 65536, 1310744, 0, 65537, 1310745, 0, 65537, 1310746, 0, 65537, 1310747, 0, 65537, 1310748, 0, 65538, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1507328, 0, 0, 1507329, 0, 0, 1507330, 0, 0, 1507331, 0, 0, 1507332, 0, 0, 1507333, 0, 0, 1507334, 0, 0, 1507335, 0, 0, 1507336, 0, 0, 1507337, 0, 0, 1507338, 0, 0, 1507339, 0, 0, 1507340, 0, 0, 1507341, 0, 0, 1507342, 0, 0, 1507343, 0, 0, 1507344, 0, 0, 1507345, 0, 0, 1507346, 0, 0, 1507347, 0, 0, 1507348, 0, 0, 1507349, 0, 0, 1507350, 0, 0, 1507351, 0, 0, 1507352, 0, 0, 1507353, 0, 0, 1507354, 0, 0, 1507355, 0, 0, 1507356, 0, 0, 1507357, 0, 0, 1507358, 0, 0, 1507359, 0, 0 ) [node name="Camera2D" parent="." instance=ExtResource( 1 )] scroll_h = false @@ -131,19 +147,20 @@ position = Vector2( 24, 176 ) tile_set = ExtResource( 23 ) cell_size = Vector2( 8, 8 ) format = 1 -tile_data = PoolIntArray( -2752488, 0, 2, -2686952, 0, 2, -2621416, 0, 2, -2555880, 0, 2, -2555873, 0, 2, -2490344, 0, 2, -2490337, 0, 2, -2424808, 0, 2, -2424801, 0, 2, -2359272, 0, 2, -2359265, 0, 2, -2293736, 0, 2, -2293729, 0, 2, -2228200, 0, 2, -2228193, 0, 2, -2162657, 0, 2, -2097121, 0, 2, -2031585, 0, 2, -1966058, 0, 2, -1966049, 0, 2, -1900522, 0, 2, -1900513, 0, 2, -1834986, 0, 2, -1834977, 0, 2, -1769450, 0, 2, -1769441, 0, 2, -1703914, 0, 2, -1703905, 0, 2, -1638378, 0, 2, -1638369, 0, 2, -1572842, 0, 2, -1572833, 0, 2, -1507306, 0, 2, -1507297, 0, 2, -1441770, 0, 2, -1441761, 0, 2, -1376234, 0, 2, -1376225, 0, 2, -1310698, 0, 2, -1310689, 0, 2, -1245162, 0, 2, -1179626, 0, 2, -1114090, 0, 2, -1048554, 0, 2, -917475, 0, 2, -851939, 0, 2, -786403, 0, 2, -720867, 0, 2, -655331, 0, 2, -589795, 0, 2, -524259, 0, 2, -458723, 0, 2, -393209, 0, 2, -327673, 0, 2, -262137, 0, 2, -196589, 0, 2, -131053, 0, 2, -65517, 0, 2, 19, 0, 2, 65555, 0, 2, 131091, 0, 2, 196627, 0, 2, 262163, 0, 2, 327699, 0, 2, 393235, 0, 2, 458771, 0, 2, 589825, 0, 2, 655361, 0, 2, 720897, 0, 2, 851998, 0, 2, 917534, 0, 2, 983070, 0, 2, 1048606, 0, 2, 1114142, 0, 2, 1179678, 0, 2, 1245214, 0, 2 ) +tile_data = PoolIntArray( -2752488, 0, 2, -2686952, 0, 2, -2621416, 0, 2, -2555880, 0, 2, -2555873, 0, 2, -2490344, 0, 2, -2490337, 0, 2, -2424808, 0, 2, -2424801, 0, 2, -2359272, 0, 2, -2359265, 0, 2, -2293736, 0, 2, -2293729, 0, 2, -2228200, 0, 2, -2228193, 0, 2, -2162657, 0, 2, -2097121, 0, 2, -2031585, 0, 2, -1966058, 0, 2, -1966049, 0, 2, -1900522, 0, 2, -1900513, 0, 2, -1834986, 0, 2, -1834977, 0, 2, -1769450, 0, 2, -1769441, 0, 2, -1703935, 0, 2, -1703914, 0, 2, -1703905, 0, 2, -1638399, 0, 2, -1638378, 0, 2, -1638369, 0, 2, -1572863, 0, 2, -1572842, 0, 2, -1572833, 0, 2, -1507327, 0, 2, -1507306, 0, 2, -1507297, 0, 2, -1441791, 0, 2, -1441770, 0, 2, -1441761, 0, 2, -1376255, 0, 2, -1376234, 0, 2, -1376225, 0, 2, -1310698, 0, 2, -1310689, 0, 2, -1245162, 0, 2, -1179626, 0, 2, -1114090, 0, 2, -1048554, 0, 2, -917475, 0, 2, -851939, 0, 2, -786403, 0, 2, -720867, 0, 2, -655331, 0, 2, -589795, 0, 2, -524259, 0, 2, -458723, 0, 2, -393209, 0, 2, -327673, 0, 2, -262137, 0, 2, -196589, 0, 2, -131053, 0, 2, -65517, 0, 2, 19, 0, 2, 65555, 0, 2, 131091, 0, 2, 196627, 0, 2, 262163, 0, 2, 327699, 0, 2, 393235, 0, 2, 458771, 0, 2, 589825, 0, 2, 655361, 0, 2, 720897, 0, 2, 851998, 0, 2, 917534, 0, 2, 983070, 0, 2, 1048606, 0, 2, 1114142, 0, 2, 1179678, 0, 2, 1245214, 0, 2 ) [node name="Death" type="TileMap" parent="." groups=["death"]] +light_mask = 0 tile_set = ExtResource( 22 ) cell_size = Vector2( 8, 8 ) collision_layer = 32 format = 1 -tile_data = PoolIntArray( -2686976, 1, 0, -2686975, 1, 0, -2686974, 1, 0, -2686973, 1, 0, -2686972, 1, 0, -2686971, 1, 0, -2686970, 1, 0, -2686969, 1, 0, -2686968, 1, 0, -2686967, 1, 0, -2686966, 1, 0, -2686965, 1, 0, -2686964, 1, 0, -2686963, 1, 0, -2686962, 1, 0, -2686961, 1, 0, -2686960, 1, 0, -2162688, 1, 0, -2162687, 1, 0, -2162686, 1, 0, -2162685, 1, 0, -2162684, 1, 0, -2162683, 1, 0, -2162682, 1, 0, -2162681, 1, 0, -2162680, 1, 0, -2162679, 1, 0, -2162678, 1, 0, -2162677, 1, 0, -2162676, 1, 0, -2162675, 1, 0, -2162674, 1, 0, -2162673, 1, 0, -2162672, 1, 0, -2162671, 1, 0, -2162670, 1, 0, -524276, 1, 0, -524273, 1, 0 ) +tile_data = PoolIntArray( -2686976, 1, 0, -2686975, 1, 0, -2686974, 1, 0, -2686973, 1, 0, -2686972, 1, 0, -2686971, 1, 0, -2686970, 1, 0, -2686969, 1, 0, -2686968, 1, 0, -2686967, 1, 0, -2686966, 1, 0, -2686965, 1, 0, -2686964, 1, 0, -2686963, 1, 0, -2686962, 1, 0, -2686961, 1, 0, -2686960, 1, 0, -2162688, 1, 0, -2162687, 1, 0, -2162686, 1, 0, -2162685, 1, 0, -2162684, 1, 0, -2162683, 1, 0, -2162682, 1, 0, -2162681, 1, 0, -2162680, 1, 0, -2162679, 1, 0, -2162678, 1, 0, -2162677, 1, 0, -2162676, 1, 0, -2162675, 1, 0, -2162674, 1, 0, -2162673, 1, 0, -2162672, 1, 0, -2162671, 1, 0, -2162670, 1, 0, -524276, 1, 0, -524273, 1, 0, 1441800, 1, 0, 1441801, 1, 0, 1441802, 1, 0, 1441803, 1, 0, 1441804, 1, 0, 1441805, 1, 0, 1441806, 1, 0, 1441807, 1, 0, 1441812, 1, 0, 1441813, 1, 0, 1441814, 1, 0 ) [node name="Environment" type="Node2D" parent="."] [node name="MovingPlatform" parent="Environment" instance=ExtResource( 9 )] -position = Vector2( 96, 176 ) +position = Vector2( 96, 168 ) scale = Vector2( 2, 1 ) left_up_boundary = 2.0 right_down_boundary = 2.0 @@ -151,7 +168,7 @@ right_down_boundary = 2.0 [node name="MovingPlatform5" parent="Environment" instance=ExtResource( 9 )] position = Vector2( 104, 136 ) scale = Vector2( 2, 1 ) -right_down_boundary = 2.0 +right_down_boundary = 5.0 [node name="MovingPlatform8" parent="Environment" instance=ExtResource( 9 )] position = Vector2( 96, -280 ) @@ -164,7 +181,7 @@ position = Vector2( 80, -344 ) scale = Vector2( 2, 1 ) speed = 40 left_up_boundary = 3.0 -right_down_boundary = 3.0 +right_down_boundary = 4.0 [node name="MovingPlatform6" parent="Environment" instance=ExtResource( 9 )] position = Vector2( 80, -280 ) @@ -174,7 +191,7 @@ speed = 30 left_up_boundary = 2.0 [node name="MovingPlatform2" parent="Environment" instance=ExtResource( 9 )] -position = Vector2( 184, 32 ) +position = Vector2( 184, 40 ) scale = Vector2( 2, 1 ) left_up_boundary = 2.0 right_down_boundary = 2.0 @@ -189,7 +206,7 @@ position = Vector2( 16, 40 ) scale = Vector2( 2, 1 ) speed = 40 left_up_boundary = 8.0 -right_down_boundary = 1.0 +right_down_boundary = 2.0 move_direction = 1 [node name="Ladder" parent="Environment" instance=ExtResource( 12 )] @@ -204,6 +221,11 @@ scale = Vector2( 1, 11 ) position = Vector2( 176, -240 ) scale = Vector2( 1, 15 ) +[node name="Ladder11" parent="Environment" instance=ExtResource( 12 )] +position = Vector2( 8, -208 ) +scale = Vector2( 1, 6 ) +can_climb_left = false + [node name="Ladder10" parent="Environment" instance=ExtResource( 12 )] position = Vector2( 192, -336 ) scale = Vector2( 1, 9 ) @@ -211,6 +233,7 @@ scale = Vector2( 1, 9 ) [node name="Ladder9" parent="Environment" instance=ExtResource( 12 )] position = Vector2( 248, -312 ) scale = Vector2( 1, 20 ) +can_climb_right = false [node name="Ladder7" parent="Environment" instance=ExtResource( 12 )] position = Vector2( 232, -112 ) @@ -226,12 +249,15 @@ scale = Vector2( 1, 3 ) [node name="TurningPlatform" parent="Environment" instance=ExtResource( 15 )] position = Vector2( 168, 168 ) +texture = ExtResource( 32 ) [node name="TurningPlatform2" parent="Environment" instance=ExtResource( 15 )] position = Vector2( 80, 144 ) +texture = ExtResource( 32 ) [node name="TurningPlatform4" parent="Environment" instance=ExtResource( 15 )] position = Vector2( 168, -280 ) +texture = ExtResource( 32 ) [node name="Rock2" parent="Environment" instance=ExtResource( 19 )] position = Vector2( 112, 56 ) @@ -258,7 +284,10 @@ cost = 40 position = Vector2( 200, 152 ) [node name="RollingFiend2" parent="Enemies" instance=ExtResource( 8 )] -position = Vector2( 224, 24 ) +position = Vector2( 216, 32 ) + +[node name="RollingFiend8" parent="Enemies" instance=ExtResource( 8 )] +position = Vector2( 240, 48 ) [node name="RollingFiend4" parent="Enemies" instance=ExtResource( 8 )] position = Vector2( 104, -24 ) @@ -276,11 +305,6 @@ position = Vector2( 80, -139 ) [node name="RollingFiend6" parent="Enemies" instance=ExtResource( 8 )] position = Vector2( 104, -152 ) -[node name="Bat2" parent="Enemies" instance=ExtResource( 13 )] -position = Vector2( 32, 56 ) -left_up_boundary = 3.0 -right_down_boundary = 3.0 - [node name="Bat3" parent="Enemies" instance=ExtResource( 13 )] position = Vector2( 124, -152 ) left_up_boundary = 2.0 @@ -319,8 +343,8 @@ left_up_boundary = 2.0 right_down_boundary = 3.0 [node name="Snake7" parent="Enemies" instance=ExtResource( 16 )] -position = Vector2( 208, -16 ) -left_up_boundary = 3.0 +position = Vector2( 216, -16 ) +left_up_boundary = 2.0 right_down_boundary = 5.0 speed = 80 @@ -336,7 +360,7 @@ position = Vector2( 172, 160 ) position = Vector2( 28, 16 ) [node name="Star2" parent="Collectibles" instance=ExtResource( 14 )] -position = Vector2( 60, -136 ) +position = Vector2( 60, -128 ) color = 1 [node name="Star3" parent="Collectibles" instance=ExtResource( 14 )] @@ -481,7 +505,7 @@ position = Vector2( 20, -280 ) position = Vector2( 44, -280 ) [node name="Gold26" parent="Collectibles" instance=ExtResource( 18 )] -position = Vector2( 12, -200 ) +position = Vector2( 20, -200 ) [node name="Gold30" parent="Collectibles" instance=ExtResource( 18 )] position = Vector2( -92, -104 ) @@ -490,7 +514,7 @@ position = Vector2( -92, -104 ) position = Vector2( -76, -104 ) [node name="Gold27" parent="Collectibles" instance=ExtResource( 18 )] -position = Vector2( 36, -200 ) +position = Vector2( 44, -200 ) [node name="Gold28" parent="Collectibles" instance=ExtResource( 18 )] position = Vector2( -116, -16 ) @@ -525,108 +549,96 @@ position = Vector2( 60, -320 ) [node name="Respawns" type="Node2D" parent="."] [node name="RespawnPoint" parent="Respawns" instance=ExtResource( 25 )] -position = Vector2( 40, -32 ) -__meta__ = { -"_edit_lock_": true -} +position = Vector2( 40, -16 ) match_v = false [node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint"] -position = Vector2( 8, -4 ) +position = Vector2( 8, -20 ) shape = SubResource( 2 ) -__meta__ = { -"_edit_lock_": true -} [node name="RespawnPoint2" parent="Respawns" instance=ExtResource( 25 )] position = Vector2( 160, 16 ) __meta__ = { -"_edit_group_": true, -"_edit_lock_": true +"_edit_group_": true } match_v = false [node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint2"] position = Vector2( 16, 0 ) shape = SubResource( 9 ) -__meta__ = { -"_edit_lock_": true -} [node name="RespawnPoint6" parent="Respawns" instance=ExtResource( 25 )] -position = Vector2( 48, 48 ) +position = Vector2( 48, 56 ) __meta__ = { -"_edit_group_": true, -"_edit_lock_": true +"_edit_group_": true } match_v = false [node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint6"] -position = Vector2( -12, -36 ) +position = Vector2( -12, -44 ) shape = SubResource( 7 ) -__meta__ = { -"_edit_lock_": true -} [node name="RespawnPoint7" parent="Respawns" instance=ExtResource( 25 )] -position = Vector2( 112, 40 ) +position = Vector2( 96, 24 ) __meta__ = { -"_edit_group_": true, -"_edit_lock_": true +"_edit_group_": true } match_v = false [node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint7"] -position = Vector2( -4, 0 ) +position = Vector2( 12, -4 ) shape = SubResource( 8 ) -__meta__ = { -"_edit_lock_": true -} [node name="RespawnPoint3" parent="Respawns" instance=ExtResource( 25 )] -position = Vector2( 16, -152 ) +position = Vector2( 16, -144 ) __meta__ = { -"_edit_group_": true, -"_edit_lock_": true +"_edit_group_": true } match_v = false [node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint3"] -position = Vector2( 24, -28 ) +position = Vector2( 24, -36 ) shape = SubResource( 4 ) + +[node name="RespawnPoint9" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 16, -200 ) __meta__ = { -"_edit_lock_": true +"_edit_group_": true } +match_v = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint9"] +position = Vector2( 24, -4 ) +shape = SubResource( 12 ) [node name="RespawnPoint4" parent="Respawns" instance=ExtResource( 25 )] -position = Vector2( 184, -200 ) +position = Vector2( 183, -200 ) __meta__ = { -"_edit_group_": true, -"_edit_lock_": true +"_edit_group_": true } match_v = false [node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint4"] position = Vector2( 24, -64 ) shape = SubResource( 5 ) -__meta__ = { -"_edit_lock_": true -} [node name="RespawnPoint5" parent="Respawns" instance=ExtResource( 25 )] -position = Vector2( 172, -16 ) +position = Vector2( 176, -8 ) __meta__ = { -"_edit_group_": true, -"_edit_lock_": true +"_edit_group_": true } match_v = false [node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint5"] -position = Vector2( -8, 0 ) +position = Vector2( -16, -8 ) shape = SubResource( 6 ) -__meta__ = { -"_edit_lock_": true -} + +[node name="RespawnPoint8" parent="Respawns" instance=ExtResource( 25 )] +position = Vector2( 184, -184 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Respawns/RespawnPoint8"] +position = Vector2( 8, 4 ) +shape = SubResource( 11 ) [node name="Boundaries" type="StaticBody2D" parent="."] @@ -657,10 +669,6 @@ __meta__ = { "_edit_lock_": true } -[node name="DeathPlane" parent="." instance=ExtResource( 11 )] -position = Vector2( 0, 192 ) -scale = Vector2( 32, 1 ) - [node name="HUD" parent="." instance=ExtResource( 17 )] song_name = "♫Burnt Out" diff --git a/maps/rust.tscn b/maps/rust.tscn index 6e91a1a..cb64470 100644 --- a/maps/rust.tscn +++ b/maps/rust.tscn @@ -1,10 +1,10 @@ -[gd_scene load_steps=27 format=2] +[gd_scene load_steps=35 format=2] [ext_resource path="res://maps/map.gd" type="Script" id=1] [ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=2] [ext_resource path="res://graphics/backgrounds/rust.png" type="Texture" id=3] [ext_resource path="res://tilesets/t_rust.tres" type="TileSet" id=4] -[ext_resource path="res://objects/player/player_scholar.tscn" type="PackedScene" id=5] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=5] [ext_resource path="res://scripts/delete_on_game_running.gd" type="Script" id=6] [ext_resource path="res://objects/enemy/steam.tscn" type="PackedScene" id=7] [ext_resource path="res://objects/environment/rock/crate.tscn" type="PackedScene" id=8] @@ -25,6 +25,14 @@ [ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=23] [ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=24] [ext_resource path="res://audio/music/cryokiller.ogg" type="AudioStream" id=25] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=26] +[ext_resource path="res://scripts/has_splash.gd" type="Script" id=27] +[ext_resource path="res://objects/lore/rust/roboturret.tscn" type="PackedScene" id=28] +[ext_resource path="res://objects/lore/rust/tin.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/lore/rust/rolling_saw.tscn" type="PackedScene" id=30] +[ext_resource path="res://objects/lore/rust/rust_inc.tscn" type="PackedScene" id=31] +[ext_resource path="res://graphics/turniwood/turning_platform_rust.png" type="Texture" id=32] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=33] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 4, 112 ) @@ -32,7 +40,10 @@ extents = Vector2( 4, 112 ) [node name="Map" type="Node2D" groups=["map"]] pause_mode = 1 script = ExtResource( 1 ) +target_time_any = 80 +target_time_100 = 160 music = ExtResource( 25 ) +lore_entries = [ ExtResource( 31 ), ExtResource( 28 ), ExtResource( 30 ), ExtResource( 29 ) ] [node name="Camera2D" parent="." instance=ExtResource( 2 )] @@ -46,23 +57,18 @@ __meta__ = { "_edit_lock_": true } -[node name="Ground" type="TileMap" parent="."] +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 26 ) tile_set = ExtResource( 4 ) cell_size = Vector2( 8, 8 ) format = 1 -tile_data = PoolIntArray( 48, 0, 0, 65584, 0, 0, 131120, 0, 0, 196614, 0, 0, 196656, 0, 0, 196671, 0, 0, 196672, 0, 0, 196673, 0, 0, 196674, 0, 0, 262173, 0, 131072, 262174, 0, 65537, 262175, 0, 65537, 262176, 0, 65537, 262177, 0, 65537, 262178, 0, 65537, 262179, 0, 65537, 262180, 0, 65537, 262181, -1610612736, 131072, 262192, 0, 0, 327691, 0, 131072, 327692, 0, 65537, 327693, 0, 65537, 327694, 0, 65537, 327695, 0, 65537, 327696, 0, 65537, 327697, 0, 65537, 327698, 0, 65537, 327699, 0, 65537, 327700, 0, 65537, 327701, 0, 65537, 327702, 0, 65537, 327703, 0, 65537, 327704, 0, 65537, 327705, 0, 65537, 327706, 0, 65537, 327707, 0, 65537, 327708, 0, 65537, 327709, 1610612736, 131072, 327717, -1073741824, 65537, 327733, 0, 0, 327734, 0, 0, 327735, 536870912, 196609, 327736, 536870912, 196609, 327737, 0, 65536, 327738, 0, 65538, 327739, 0, 65538, 327740, 536870912, 65536, 327760, 0, 131072, 327761, 0, 65537, 327762, 1610612736, 65538, 327763, 0, 65537, 327764, 0, 131073, 327765, 0, 65537, 327766, 0, 65537, 327767, 0, 65537, 327768, 0, 65537, 327769, 0, 65537, 327770, 0, 65537, 327771, 0, 65538, 327772, 0, 65537, 327773, 0, 65537, 327774, 0, 65537, 327775, 0, 65537, 393227, -2147483648, 65537, 393253, -1073741824, 65537, 393268, 0, 0, 393269, 0, 0, 393288, 0, 65536, 393289, 0, 65537, 393290, 0, 131075, 393296, -1073741824, 65537, 458763, -2147483648, 65537, 458789, -1073741824, 131072, 458790, 0, 65537, 458791, 0, 65537, 458792, 0, 65537, 458793, 0, 65537, 458794, 0, 65537, 458795, 0, 65537, 458796, 0, 65537, 458797, 0, 65537, 458798, 0, 65537, 458799, 536870912, 65536, 458805, 0, 0, 458832, -1073741824, 65538, 524299, -2147483648, 65537, 524315, 0, 131072, 524316, 0, 65537, 524317, 0, 65537, 524318, 0, 65537, 524319, 0, 65537, 524320, 0, 65537, 524321, 0, 65537, 524322, 536870912, 131072, 524338, 0, 0, 524341, 0, 0, 524342, 0, 0, 524343, 0, 0, 524344, 0, 0, 524368, -1073741824, 65537, 589830, -2147483648, 65536, 589831, 0, 196609, 589832, 0, 196609, 589833, 0, 65536, 589834, 0, 65537, 589835, -536870912, 131072, 589851, -1073741824, 65537, 589858, -1073741824, 65537, 589898, 0, 65536, 589899, 0, 65537, 589900, 536870912, 65536, 589904, -1073741824, 65536, 589906, 0, 0, 589907, 0, 0, 589908, 0, 0, 589910, 0, 0, 589911, 0, 0, 589913, 0, 0, 589914, 0, 0, 655366, -1073741824, 65537, 655376, 0, 65536, 655377, 0, 65537, 655378, 0, 65537, 655379, 0, 65537, 655380, 0, 65537, 655381, 0, 65537, 655382, 0, 65537, 655383, 0, 65537, 655384, 0, 65537, 655385, 0, 65537, 655386, 0, 65537, 655387, 1610612736, 131072, 655394, -1073741824, 131072, 655395, 0, 65537, 655396, 0, 65537, 655397, 0, 65538, 655398, 0, 65537, 655399, 0, 65537, 655400, 0, 65537, 655401, 536870912, 65536, 655418, 0, 0, 655419, 0, 0, 655420, 0, 0, 720902, -1073741824, 65537, 720903, 0, 196609, 720904, 0, 196609, 720962, 0, 0, 720963, 0, 0, 720964, 0, 0, 720966, 0, 0, 720967, 0, 0, 720968, 0, 0, 786438, -1073741824, 65538, 851974, -1073741824, 65537, 851975, 0, 196609, 851976, 0, 196609, 851989, 0, 0, 852021, 0, 0, 852042, 0, 0, 917510, -1073741824, 65537, 917550, 0, 65536, 917551, 0, 65537, 917552, 0, 65537, 917553, 0, 65537, 917554, 0, 65537, 917555, 0, 65537, 917556, 0, 65537, 917557, 0, 65537, 917558, 0, 65537, 917559, 0, 65537, 917560, 0, 65537, 917561, -1610612736, 131072, 917565, 0, 65536, 917566, 0, 65537, 917567, 0, 65537, 917568, 0, 65537, 917569, 0, 65537, 917570, 0, 65537, 917571, 0, 65537, 917572, 0, 65537, 917573, 0, 65537, 917574, 536870912, 131072, 917590, 0, 0, 917591, 0, 0, 917592, 0, 0, 917593, 0, 0, 917594, 0, 0, 917595, 0, 0, 917596, 0, 0, 917597, 0, 0, 917599, 0, 0, 983046, -1073741824, 131072, 983047, 0, 65537, 983048, 0, 65537, 983049, 0, 65537, 983050, 0, 65537, 983051, 0, 65537, 983052, 0, 65537, 983053, 0, 65537, 983054, 0, 65538, 983055, 0, 262144, 983057, 0, 262145, 983058, 0, 131075, 983078, 0, 0, 983079, 0, 0, 983080, 0, 0, 983081, 0, 0, 983097, -1073741824, 131072, 983098, -1610612736, 131072, 983110, -1073741824, 65537, 983113, 536870912, 0, 983121, 0, 0, 983122, 0, 0, 983123, 0, 0, 1048634, -1073741824, 65537, 1048646, -1073741824, 65537, 1114135, 0, 131072, 1114136, 0, 65537, 1114137, 0, 65537, 1114138, 0, 65537, 1114139, 0, 65537, 1114140, 0, 65537, 1114141, 0, 65538, 1114142, 0, 65537, 1114143, 0, 65537, 1114144, 0, 65537, 1114145, 0, 65537, 1114146, 0, 262144, 1114147, 0, 262145, 1114148, -1610612736, 131072, 1114170, -1073741824, 131072, 1114171, 0, 65537, 1114172, 0, 65537, 1114173, 0, 65537, 1114174, 536870912, 65537, 1114175, 0, 65537, 1114176, 0, 65537, 1114177, 0, 65537, 1114178, 0, 131075, 1114182, -1073741824, 65537, 1114191, 0, 0, 1179661, 0, 65536, 1179662, 0, 65537, 1179663, 0, 131074, 1179664, 0, 131074, 1179665, 0, 65537, 1179666, 0, 65537, 1179667, 0, 65537, 1179668, 0, 131074, 1179669, 0, 131074, 1179670, 0, 65537, 1179671, 1610612736, 131072, 1179684, -1073741824, 65537, 1179718, -1073741824, 65537, 1179723, 0, 0, 1179724, 0, 0, 1179725, 0, 0, 1179741, 0, 0, 1179742, 0, 0, 1245220, -1073741824, 131072, 1245221, 0, 65537, 1245222, 0, 65537, 1245223, 0, 131075, 1245254, -1073741824, 131072, 1245255, 0, 65537, 1245256, 536870912, 65536, 1310720, 0, 0, 1310721, 0, 0, 1310731, 0, 0, 1376256, 0, 0, 1376257, 0, 0, 1376261, 0, 0, 1376286, 0, 0, 1376304, 0, 0, 1376312, 0, 65536, 1376313, 536870912, 65538, 1376314, 536870912, 65537, 1376315, 536870912, 65536, 1376333, 0, 0, 1376334, 0, 0, 1376335, 0, 0, 1376341, 0, 0, 1376342, 0, 0, 1376343, 0, 0, 1441792, 0, 1, 1441793, 0, 2, 1441794, 0, 2, 1441795, 0, 2, 1441796, 0, 2, 1441797, 0, 2, 1441798, 0, 2, 1441799, 0, 2, 1441800, 0, 2, 1441801, 0, 2, 1441802, 0, 2, 1441803, 0, 2, 1441804, 0, 2, 1441805, 0, 2, 1441806, 0, 2, 1441807, 0, 2, 1441808, 0, 2, 1441809, 0, 2, 1441810, 0, 2, 1441811, 0, 2, 1441812, 0, 2, 1441813, 0, 2, 1441814, 0, 2, 1441815, 0, 2, 1441816, 0, 2, 1441817, 0, 2, 1441818, 0, 2, 1441819, 0, 2, 1441820, 0, 2, 1441821, 0, 2, 1441822, 0, 2, 1441823, 0, 2, 1441824, 0, 2, 1441825, 0, 2, 1441826, 0, 2, 1441827, 0, 2, 1441828, 0, 2, 1441829, 0, 2, 1441830, 0, 2, 1441831, 0, 2, 1441832, 0, 2, 1441833, 0, 2, 1441834, 0, 2, 1441835, 0, 2, 1441836, 0, 2, 1441837, 0, 3, 1441843, 0, 1, 1441844, 0, 2, 1441845, 0, 2, 1441846, 0, 2, 1441853, 0, 2, 1441854, 0, 2, 1441855, 0, 2, 1441856, 0, 2, 1441857, 0, 2, 1441858, 0, 2, 1441859, 0, 2, 1441860, 0, 2, 1441861, 0, 2, 1441862, 0, 2, 1441863, 0, 2, 1441864, 0, 2, 1441865, 0, 2, 1441866, 0, 2, 1441867, 0, 3, 1441882, 0, 1, 1441883, 0, 2, 1441884, 0, 2, 1441885, 0, 2, 1441886, 0, 2, 1441887, 0, 3, 1507328, 0, 0, 1507329, 0, 0, 1507330, 0, 0, 1507331, 0, 0, 1507332, 0, 0, 1507333, 0, 0, 1507334, 0, 0, 1507335, 0, 0, 1507336, 0, 0, 1507337, 0, 0, 1507338, 0, 0, 1507339, 0, 0, 1507340, 0, 0, 1507341, 0, 0, 1507342, 0, 0, 1507343, 0, 0, 1507344, 0, 0, 1507345, 0, 0, 1507346, 0, 0, 1507347, 0, 0, 1507348, 0, 0, 1507349, 0, 0, 1507350, 0, 0, 1507351, 0, 0, 1507352, 0, 0, 1507353, 0, 0, 1507354, 0, 0, 1507355, 0, 0, 1507356, 0, 0, 1507357, 0, 0, 1507358, 0, 0, 1507359, 0, 0, 1507360, 0, 0, 1507361, 0, 0, 1507362, 0, 0, 1507363, 0, 0, 1507364, 0, 0, 1507365, 0, 0, 1507366, 0, 0, 1507367, 0, 0, 1507368, 0, 0, 1507369, 0, 0, 1507370, 0, 0, 1507371, 0, 0, 1507372, 0, 0, 1507373, 0, 0, 1507379, 0, 0, 1507380, 0, 0, 1507381, 0, 0, 1507382, 0, 0, 1507389, 0, 0, 1507390, 0, 0, 1507391, 0, 0, 1507392, 0, 0, 1507393, 0, 0, 1507394, 0, 0, 1507395, 0, 0, 1507396, 0, 0, 1507397, 0, 0, 1507398, 0, 0, 1507399, 0, 0, 1507400, 0, 0, 1507401, 0, 0, 1507402, 0, 0, 1507403, 0, 0, 1507418, 0, 0, 1507419, 0, 0, 1507420, 0, 0, 1507421, 0, 0, 1507422, 0, 0, 1507423, 0, 0 ) +tile_data = PoolIntArray( 48, 0, 0, 65584, 0, 0, 131120, 0, 0, 196614, 0, 0, 196656, 0, 0, 196671, 0, 0, 196672, 0, 0, 196673, 0, 0, 196674, 0, 0, 262173, 0, 131072, 262174, 0, 65537, 262175, 0, 65537, 262176, 0, 65537, 262177, 0, 65537, 262178, 0, 65537, 262179, 0, 65537, 262180, 0, 65537, 262181, -1610612736, 131072, 262192, 0, 0, 327691, 0, 131072, 327692, 0, 65537, 327693, 0, 65537, 327694, 0, 65537, 327695, 0, 65537, 327696, 0, 65537, 327697, 0, 65537, 327698, 0, 65537, 327699, 0, 65537, 327700, 0, 65537, 327701, 0, 65537, 327702, 0, 65537, 327703, 0, 65537, 327704, 0, 65537, 327705, 0, 65537, 327706, 0, 65537, 327707, 0, 65537, 327708, 0, 65537, 327709, 1610612736, 131072, 327717, -1073741824, 65537, 327733, 0, 0, 327734, 0, 196609, 327735, 0, 196609, 327736, 0, 65536, 327737, 0, 65538, 327738, 0, 65537, 327739, 0, 65538, 327740, 536870912, 65536, 327760, 0, 131072, 327761, 0, 65537, 327762, 1610612736, 65538, 327763, 0, 65537, 327764, 0, 131073, 327765, 0, 65537, 327766, 0, 65537, 327767, 0, 65537, 327768, 0, 65537, 327769, 0, 65537, 327770, 0, 65537, 327771, 0, 65538, 327772, 0, 65537, 327773, 0, 65537, 327774, 0, 65537, 327775, 0, 65537, 393227, -2147483648, 65537, 393253, -1073741824, 65537, 393268, 0, 0, 393269, 0, 0, 393288, 0, 65536, 393289, 0, 65537, 393290, 0, 131075, 393296, -1073741824, 65537, 458763, -2147483648, 65537, 458789, -1073741824, 131072, 458790, 0, 65537, 458791, 0, 65537, 458792, 0, 65537, 458793, 0, 65537, 458794, 0, 65537, 458795, 0, 65537, 458796, 0, 65537, 458797, 0, 65537, 458798, 0, 65537, 458799, 536870912, 65536, 458805, 0, 0, 458822, 0, 0, 458832, -1073741824, 65538, 524299, -2147483648, 65537, 524315, 0, 131072, 524316, 0, 65537, 524317, 0, 65537, 524318, 0, 65537, 524319, 0, 65537, 524320, 0, 65537, 524321, 0, 65537, 524322, 536870912, 131072, 524338, 0, 0, 524341, 0, 0, 524342, 0, 0, 524343, 0, 0, 524344, 0, 0, 524357, 0, 0, 524358, 0, 0, 524359, 0, 0, 524368, -1073741824, 65537, 589830, -2147483648, 65536, 589831, 0, 196609, 589832, 0, 196609, 589833, 0, 65536, 589834, 0, 65537, 589835, -536870912, 131072, 589851, -1073741824, 65537, 589858, -1073741824, 65537, 589892, 0, 0, 589893, 0, 0, 589894, 0, 0, 589898, 0, 65536, 589899, 0, 65537, 589900, 536870912, 65536, 589904, -1073741824, 65536, 589906, 0, 0, 589907, 0, 0, 589908, 0, 0, 589910, 0, 0, 589911, 0, 0, 589913, 0, 0, 589914, 0, 0, 655366, -1073741824, 65537, 655376, 0, 65536, 655377, 0, 65537, 655378, 0, 65537, 655379, 0, 65537, 655380, 0, 65537, 655381, 0, 65537, 655382, 0, 65537, 655383, 0, 65537, 655384, 0, 65537, 655385, 0, 65537, 655386, 0, 65537, 655387, 1610612736, 131072, 655394, -1073741824, 131072, 655395, 0, 65537, 655396, 0, 65537, 655397, 0, 65538, 655398, 0, 65537, 655399, 0, 65537, 655400, 0, 65537, 655401, 536870912, 65536, 655418, 0, 0, 655419, 0, 0, 655420, 0, 0, 655427, 0, 0, 655428, 0, 0, 655429, 0, 0, 655430, 0, 0, 720902, -1073741824, 65537, 720903, 0, 196609, 720904, 0, 196609, 720962, 0, 0, 720963, 0, 0, 720964, 0, 0, 720965, 0, 0, 720966, 0, 0, 720967, 0, 0, 720968, 0, 0, 786438, -1073741824, 65538, 851974, -1073741824, 65537, 851975, 0, 196609, 851976, 0, 196609, 851989, 0, 0, 852021, 0, 0, 852042, 0, 0, 917510, -1073741824, 65537, 917519, 0, 131072, 917520, 0, 262144, 917550, 0, 65536, 917551, 0, 65537, 917552, 0, 65537, 917553, 0, 65537, 917554, 0, 65537, 917555, 0, 65537, 917556, 0, 65537, 917557, 0, 65537, 917558, 0, 65537, 917559, 0, 65537, 917560, 0, 65537, 917561, -1610612736, 131072, 917565, 0, 65536, 917566, 0, 65537, 917567, 0, 65537, 917568, 0, 65537, 917569, 0, 65537, 917570, 0, 65537, 917571, 0, 65537, 917572, 536870912, 65536, 917590, 0, 0, 917591, 0, 0, 917592, 0, 0, 917593, 0, 0, 917594, 0, 0, 917595, 0, 0, 917596, 0, 0, 917597, 0, 0, 917599, 0, 0, 983046, -1073741824, 131072, 983047, 0, 65537, 983048, 0, 65537, 983049, 0, 65537, 983050, 0, 65537, 983051, 0, 65537, 983052, 0, 65537, 983053, 0, 65537, 983054, 0, 65538, 983055, 1610612736, 131072, 983058, 0, 0, 983059, 0, 0, 983078, 0, 0, 983079, 0, 0, 983080, 0, 0, 983081, 0, 0, 983097, -1073741824, 131072, 983098, -1610612736, 131072, 983113, 0, 0, 983121, 0, 0, 983122, 0, 0, 983123, 0, 0, 1048634, -1073741824, 65537, 1048647, 0, 0, 1114135, 0, 131072, 1114136, 0, 65537, 1114137, 0, 65537, 1114138, 0, 65537, 1114139, 0, 65537, 1114140, 0, 65537, 1114141, 0, 65538, 1114142, 0, 65537, 1114143, 0, 65537, 1114144, 0, 65537, 1114145, 0, 65537, 1114146, 0, 65537, 1114147, 0, 65537, 1114148, -1610612736, 131072, 1114170, -1073741824, 131072, 1114171, 0, 65537, 1114172, 0, 65537, 1114173, 0, 65537, 1114174, 536870912, 65537, 1114175, 0, 65537, 1114176, 0, 65537, 1114177, 0, 65537, 1114178, 0, 131075, 1114191, 0, 0, 1114205, 0, 0, 1114206, 0, 0, 1179661, 0, 65536, 1179662, 0, 65537, 1179663, 0, 131074, 1179664, 0, 131074, 1179665, 0, 65537, 1179666, 0, 65537, 1179667, 0, 65537, 1179668, 0, 131074, 1179669, 0, 131074, 1179670, 0, 65537, 1179671, 1610612736, 131072, 1179684, -1073741824, 65537, 1179723, 0, 0, 1179724, 0, 0, 1179725, 0, 0, 1245220, -1073741824, 131072, 1245221, 0, 65537, 1245222, 0, 65537, 1245223, 0, 131075, 1245254, 0, 65536, 1245255, 0, 65537, 1245256, 536870912, 65536, 1310720, 0, 0, 1310721, 0, 0, 1310731, 0, 0, 1376256, 0, 0, 1376257, 0, 0, 1376261, 0, 0, 1376286, 0, 0, 1376297, 0, 0, 1376304, 0, 0, 1376312, 0, 65536, 1376313, 536870912, 65538, 1376314, 536870912, 65537, 1376315, 536870912, 65536, 1376333, 0, 0, 1376334, 0, 0, 1376335, 0, 0, 1376341, 0, 0, 1376342, 0, 0, 1376343, 0, 0, 1441792, 0, 1, 1441793, 0, 2, 1441794, 0, 2, 1441795, 0, 2, 1441796, 0, 2, 1441797, 0, 2, 1441798, 0, 2, 1441799, 0, 2, 1441800, 0, 2, 1441801, 0, 2, 1441802, 0, 2, 1441803, 0, 2, 1441804, 0, 2, 1441805, 0, 2, 1441806, 0, 2, 1441807, 0, 2, 1441808, 0, 2, 1441809, 0, 2, 1441810, 0, 2, 1441811, 0, 2, 1441812, 0, 2, 1441813, 0, 2, 1441814, 0, 2, 1441815, 0, 2, 1441816, 0, 2, 1441817, 0, 2, 1441818, 0, 2, 1441819, 0, 2, 1441820, 0, 2, 1441821, 0, 2, 1441822, 0, 2, 1441823, 0, 2, 1441824, 0, 2, 1441825, 0, 2, 1441826, 0, 2, 1441827, 0, 2, 1441828, 0, 2, 1441829, 0, 2, 1441830, 0, 2, 1441831, 0, 2, 1441832, 0, 2, 1441833, 0, 2, 1441834, 0, 2, 1441835, 0, 2, 1441836, 0, 2, 1441837, 0, 3, 1441843, 0, 1, 1441844, 0, 2, 1441845, 0, 2, 1441846, 0, 3, 1441853, 0, 1, 1441854, 0, 2, 1441855, 0, 2, 1441856, 0, 2, 1441857, 0, 2, 1441858, 0, 2, 1441859, 0, 2, 1441860, 0, 2, 1441861, 0, 2, 1441862, 0, 2, 1441863, 0, 2, 1441864, 0, 2, 1441865, 0, 2, 1441866, 0, 2, 1441867, 0, 3, 1441882, 0, 1, 1441883, 0, 2, 1441884, 0, 2, 1441885, 0, 2, 1441886, 0, 2, 1441887, 0, 3, 1507328, 0, 0, 1507329, 0, 0, 1507330, 0, 0, 1507331, 0, 0, 1507332, 0, 0, 1507333, 0, 0, 1507334, 0, 0, 1507335, 0, 0, 1507336, 0, 0, 1507337, 0, 0, 1507338, 0, 0, 1507339, 0, 0, 1507340, 0, 0, 1507341, 0, 0, 1507342, 0, 0, 1507343, 0, 0, 1507344, 0, 0, 1507345, 0, 0, 1507346, 0, 0, 1507347, 0, 0, 1507348, 0, 0, 1507349, 0, 0, 1507350, 0, 0, 1507351, 0, 0, 1507352, 0, 0, 1507353, 0, 0, 1507354, 0, 0, 1507355, 0, 0, 1507356, 0, 0, 1507357, 0, 0, 1507358, 0, 0, 1507359, 0, 0, 1507360, 0, 0, 1507361, 0, 0, 1507362, 0, 0, 1507363, 0, 0, 1507364, 0, 0, 1507365, 0, 0, 1507366, 0, 0, 1507367, 0, 0, 1507368, 0, 0, 1507369, 0, 0, 1507370, 0, 0, 1507371, 0, 0, 1507372, 0, 0, 1507373, 0, 0, 1507379, 0, 0, 1507380, 0, 0, 1507381, 0, 0, 1507382, 0, 0, 1507389, 0, 0, 1507390, 0, 0, 1507391, 0, 0, 1507392, 0, 0, 1507393, 0, 0, 1507394, 0, 0, 1507395, 0, 0, 1507396, 0, 0, 1507397, 0, 0, 1507398, 0, 0, 1507399, 0, 0, 1507400, 0, 0, 1507401, 0, 0, 1507402, 0, 0, 1507403, 0, 0, 1507418, 0, 0, 1507419, 0, 0, 1507420, 0, 0, 1507421, 0, 0, 1507422, 0, 0, 1507423, 0, 0 ) [node name="Player" parent="." instance=ExtResource( 5 )] position = Vector2( 24, 176 ) [node name="Death" type="TileMap" parent="." groups=["death"]] -tile_set = ExtResource( 16 ) -cell_size = Vector2( 8, 8 ) -collision_layer = 32 -format = 1 -tile_data = PoolIntArray( 1441838, 7, 0, 1441839, 7, 0, 1441840, 7, 0, 1441841, 7, 0, 1441842, 7, 0, 1441847, 7, 0, 1441848, 7, 0, 1441849, 7, 0, 1441850, 7, 0, 1441851, 7, 0, 1441852, 7, 0, 1441868, 7, 0, 1441869, 7, 0, 1441870, 7, 0, 1441871, 7, 0, 1441872, 7, 0, 1441873, 7, 0, 1441874, 7, 0, 1441875, 7, 0, 1441876, 7, 0, 1441877, 7, 0, 1441878, 7, 0, 1441879, 7, 0, 1441880, 7, 0, 1441881, 7, 0, 1507374, 6, 0, 1507375, 6, 0, 1507376, 6, 0, 1507377, 6, 0, 1507378, 6, 0, 1507383, 6, 0, 1507384, 6, 0, 1507385, 6, 0, 1507386, 6, 0, 1507387, 6, 0, 1507388, 6, 0, 1507404, 6, 0, 1507405, 6, 0, 1507406, 6, 0, 1507407, 6, 0, 1507408, 6, 0, 1507409, 6, 0, 1507410, 6, 0, 1507411, 6, 0, 1507412, 6, 0, 1507413, 6, 0, 1507414, 6, 0, 1507415, 6, 0, 1507416, 6, 0, 1507417, 6, 0 ) - -[node name="Death2" type="TileMap" parent="." groups=["death"]] position = Vector2( 0, 1 ) tile_set = ExtResource( 16 ) cell_size = Vector2( 8, 8 ) @@ -70,11 +76,28 @@ collision_layer = 32 format = 1 tile_data = PoolIntArray( 262157, 1, 0, 262161, 1, 0, 262168, 1, 0, 262172, 1, 0, 393254, 1, 0, 393255, 1, 0, 393256, 1, 0, 393257, 1, 0, 393258, 1, 0, 393259, 1, 0, 393260, 1, 0, 393261, 1, 0, 393262, 1, 0 ) +[node name="DeathNoBlood" type="TileMap" parent="." groups=["death", "no_blood"]] +tile_set = ExtResource( 16 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 1441838, 7, 0, 1441839, 7, 0, 1441840, 7, 0, 1441841, 7, 0, 1441842, 7, 0, 1441847, 7, 0, 1441848, 7, 0, 1441849, 7, 0, 1441850, 7, 0, 1441851, 7, 0, 1441852, 7, 0, 1441868, 7, 0, 1441869, 7, 0, 1441870, 7, 0, 1441871, 7, 0, 1441872, 7, 0, 1441873, 7, 0, 1441874, 7, 0, 1441875, 7, 0, 1441876, 7, 0, 1441877, 7, 0, 1441878, 7, 0, 1441879, 7, 0, 1441880, 7, 0, 1441881, 7, 0, 1507374, 6, 0, 1507375, 6, 0, 1507376, 6, 0, 1507377, 6, 0, 1507378, 6, 0, 1507383, 6, 0, 1507384, 6, 0, 1507385, 6, 0, 1507386, 6, 0, 1507387, 6, 0, 1507388, 6, 0, 1507404, 6, 0, 1507405, 6, 0, 1507406, 6, 0, 1507407, 6, 0, 1507408, 6, 0, 1507409, 6, 0, 1507410, 6, 0, 1507411, 6, 0, 1507412, 6, 0, 1507413, 6, 0, 1507414, 6, 0, 1507415, 6, 0, 1507416, 6, 0, 1507417, 6, 0 ) +script = ExtResource( 27 ) +splash_color = Color( 0.12549, 0.133333, 0.227451, 1 ) + +[node name="DeathBackground" type="TileMap" parent="DeathNoBlood" groups=["death", "no_blood"]] +z_index = -11 +tile_set = ExtResource( 16 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 1441837, 7, 0, 1441843, 7, 0, 1441846, 7, 0, 1441853, 7, 0, 1441867, 7, 0, 1441882, 7, 0 ) + [node name="Ladder" type="TileMap" parent="."] tile_set = ExtResource( 23 ) cell_size = Vector2( 8, 8 ) format = 1 -tile_data = PoolIntArray( 196618, 0, 196608, 262154, 0, 196608, 262223, 0, 196608, 327690, 0, 196608, 327759, 0, 196608, 393226, 0, 196608, 393295, 0, 196608, 458762, 0, 196608, 458822, 0, 196608, 458831, 0, 196608, 524298, 0, 196608, 524358, 0, 196608, 524367, 0, 196608, 589826, 0, 196608, 589894, 0, 196608, 589917, 536870912, 196608, 655362, 0, 196608, 655430, 0, 196608, 655453, 536870912, 196608, 720898, 0, 196608, 720989, 536870912, 196608, 786434, 0, 196608, 786476, 0, 196608, 851970, 0, 196608, 852012, 0, 196608, 917506, 0, 196608, 917548, 0, 196608, 983042, 0, 196608, 983084, 0, 196608, 983111, 536870912, 196608, 1048578, 0, 196608, 1048647, 536870912, 196608, 1114181, 0, 196608, 1114183, 536870912, 196608, 1179717, 0, 196608, 1179719, 536870912, 196608, 1245253, 0, 196608 ) +tile_data = PoolIntArray( 196618, 0, 196608, 262154, 0, 196608, 327690, 0, 196608, 327759, 0, 196608, 393226, 0, 196608, 393295, 0, 196608, 458762, 0, 196608, 458831, 0, 196608, 524298, 0, 196608, 524367, 0, 196608, 589826, 0, 196608, 589917, 536870912, 196608, 655362, 0, 196608, 655453, 536870912, 196608, 720898, 0, 196608, 720989, 536870912, 196608, 786434, 0, 196608, 786476, 0, 196608, 851970, 0, 196608, 852012, 0, 196608, 917506, 0, 196608, 917548, 0, 196608, 983042, 0, 196608, 983084, 0, 196608, 1048578, 0, 196608, 1179717, 0, 196608, 1245253, 0, 196608 ) [node name="Environment" type="Node2D" parent="."] @@ -82,34 +105,33 @@ tile_data = PoolIntArray( 196618, 0, 196608, 262154, 0, 196608, 262223, 0, 19660 position = Vector2( 336, 40 ) time = 15.0 delay = 1.0 +texture = ExtResource( 32 ) [node name="TurningPlatform7" parent="Environment" instance=ExtResource( 9 )] position = Vector2( 656, 168 ) time = 15.0 +texture = ExtResource( 32 ) [node name="TurningPlatform4" parent="Environment" instance=ExtResource( 9 )] position = Vector2( 312, 40 ) time = 30.0 +texture = ExtResource( 32 ) [node name="Ladder" parent="Environment" instance=ExtResource( 14 )] position = Vector2( 352, 96 ) scale = Vector2( 1, 4 ) -[node name="Ladder4" parent="Environment" instance=ExtResource( 14 )] -position = Vector2( 560, 56 ) -scale = Vector2( 1, 4 ) - [node name="Ladder7" parent="Environment" instance=ExtResource( 14 )] -position = Vector2( 632, 32 ) -scale = Vector2( 1, 5 ) +position = Vector2( 632, 40 ) +scale = Vector2( 1, 4 ) +can_climb_right = false [node name="Ladder5" parent="Environment" instance=ExtResource( 14 )] -position = Vector2( 552, 136 ) -scale = Vector2( 1, 3 ) +position = Vector2( 552, 144 ) [node name="Ladder8" parent="Environment" instance=ExtResource( 14 )] -position = Vector2( 568, 120 ) -scale = Vector2( 1, 4 ) +position = Vector2( 552, 152 ) +can_climb_right = false [node name="Ladder6" parent="Environment" instance=ExtResource( 14 )] position = Vector2( 744, 72 ) @@ -121,7 +143,12 @@ scale = Vector2( 1, 8 ) [node name="Ladder3" parent="Environment" instance=ExtResource( 14 )] position = Vector2( 80, 24 ) -scale = Vector2( 1, 6 ) +scale = Vector2( 1, 2 ) + +[node name="Ladder9" parent="Environment" instance=ExtResource( 14 )] +position = Vector2( 80, 40 ) +scale = Vector2( 1, 4 ) +can_climb_right = false [node name="Button" parent="Environment" instance=ExtResource( 15 )] position = Vector2( 80, 113 ) @@ -145,13 +172,7 @@ scale = Vector2( 1, 17 ) cost = 15 [node name="Rock3" parent="Environment" instance=ExtResource( 8 )] -position = Vector2( 146, 113 ) - -[node name="Rock5" parent="Environment" instance=ExtResource( 8 )] -position = Vector2( 314, 145 ) - -[node name="Rock6" parent="Environment" instance=ExtResource( 8 )] -position = Vector2( 536, 80 ) +position = Vector2( 152, 112 ) [node name="Enemies" type="Node2D" parent="."] @@ -213,15 +234,14 @@ position = Vector2( 600, 79 ) [node name="RollingSaw6" parent="Enemies" instance=ExtResource( 11 )] position = Vector2( 648, 128 ) +clockwise = true [node name="RollingSaw7" parent="Enemies" instance=ExtResource( 11 )] position = Vector2( 664, 112 ) - -[node name="RollingSaw12" parent="Enemies" instance=ExtResource( 11 )] -position = Vector2( 696, 64 ) +clockwise = true [node name="RollingSaw13" parent="Enemies" instance=ExtResource( 11 )] -position = Vector2( 752, 136 ) +position = Vector2( 752, 128 ) [node name="RollingSaw2" parent="Enemies" instance=ExtResource( 11 )] position = Vector2( 48, 32 ) @@ -353,7 +373,7 @@ position = Vector2( 160, 136 ) position = Vector2( 192, 128 ) [node name="Gold16" parent="Collectibles" instance=ExtResource( 21 )] -position = Vector2( 264, 128 ) +position = Vector2( 272, 128 ) [node name="Gold17" parent="Collectibles" instance=ExtResource( 21 )] position = Vector2( 296, 144 ) @@ -410,7 +430,7 @@ position = Vector2( 264, 24 ) position = Vector2( 288, 24 ) [node name="Gold39" parent="Collectibles" instance=ExtResource( 21 )] -position = Vector2( 432, 32 ) +position = Vector2( 424, 32 ) [node name="Gold40" parent="Collectibles" instance=ExtResource( 21 )] position = Vector2( 200, 72 ) @@ -422,10 +442,10 @@ position = Vector2( 480, 32 ) position = Vector2( 528, 16 ) [node name="Gold48" parent="Collectibles" instance=ExtResource( 21 )] -position = Vector2( 552, 104 ) +position = Vector2( 544, 104 ) [node name="Gold49" parent="Collectibles" instance=ExtResource( 21 )] -position = Vector2( 528, 104 ) +position = Vector2( 520, 104 ) [node name="Gold50" parent="Collectibles" instance=ExtResource( 21 )] position = Vector2( 488, 104 ) @@ -477,11 +497,11 @@ color = 1 position = Vector2( 144, 168 ) [node name="Star4" parent="Collectibles" instance=ExtResource( 20 )] -position = Vector2( 576, 80 ) +position = Vector2( 568, 80 ) color = 3 [node name="Star5" parent="Collectibles" instance=ExtResource( 20 )] -position = Vector2( 744, 136 ) +position = Vector2( 744, 128 ) color = 4 [node name="Star2" parent="Collectibles" instance=ExtResource( 20 )] @@ -528,3 +548,7 @@ song_name = "♫Cryokiller" [node name="Exit" parent="." instance=ExtResource( 19 )] position = Vector2( 752, 164 ) cost = 25 + +[node name="Speccy" parent="." groups=["button3"] instance=ExtResource( 33 )] +position = Vector2( 705, 41 ) +flip = true diff --git a/maps/station.gd b/maps/station.gd index 6e2c912..9ac633d 100644 --- a/maps/station.gd +++ b/maps/station.gd @@ -1,6 +1,6 @@ extends "res://maps/map.gd" -var acab_shard_has_been_collected = false +var acab_shard_has_been_collected: bool = false func _physics_process(delta): ._physics_process(delta) @@ -8,6 +8,5 @@ func _physics_process(delta): if !acab_shard_has_been_collected: Audio.play_shard_sound() Game.score += 500 - Game.shards += 1 Game.shards_collected[0] = true acab_shard_has_been_collected = true diff --git a/maps/station.tscn b/maps/station.tscn index 4e69714..5ab3c5a 100644 --- a/maps/station.tscn +++ b/maps/station.tscn @@ -1,7 +1,7 @@ -[gd_scene load_steps=24 format=2] +[gd_scene load_steps=38 format=2] [ext_resource path="res://maps/station.gd" type="Script" id=1] -[ext_resource path="res://objects/player/player_scholar.tscn" type="PackedScene" id=2] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=2] [ext_resource path="res://tilesets/t_station.tres" type="TileSet" id=3] [ext_resource path="res://graphics/backgrounds/night.png" type="Texture" id=4] [ext_resource path="res://objects/environment/exit/exit.tscn" type="PackedScene" id=5] @@ -15,6 +15,7 @@ [ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=13] [ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=14] [ext_resource path="res://objects/enemy/laser_wall.tscn" type="PackedScene" id=15] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=16] [ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=17] [ext_resource path="res://objects/environment/switches/button.tscn" type="PackedScene" id=18] [ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=19] @@ -22,6 +23,34 @@ [ext_resource path="res://objects/environment/barrier/jail_bars.tscn" type="PackedScene" id=21] [ext_resource path="res://objects/npc/msx.tscn" type="PackedScene" id=22] [ext_resource path="res://objects/environment/barrier/barrier.tscn" type="PackedScene" id=23] +[ext_resource path="res://maps/graffiti.gd" type="Script" id=24] +[ext_resource path="res://objects/lore/station/msx.tscn" type="PackedScene" id=25] +[ext_resource path="res://graphics/graffiti/tgirls_rule.png" type="Texture" id=26] +[ext_resource path="res://graphics/graffiti/msx.png" type="Texture" id=27] +[ext_resource path="res://graphics/graffiti/msx_was_here.png" type="Texture" id=28] +[ext_resource path="res://objects/lore/station/famicop.tscn" type="PackedScene" id=29] +[ext_resource path="res://objects/lore/station/dread_pd.tscn" type="PackedScene" id=30] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=31] +[ext_resource path="res://ui/theme.tres" type="Theme" id=32] +[ext_resource path="res://graphics/hatch/hatch.png" type="Texture" id=33] +[ext_resource path="res://graphics/turniwood/turning_platoform_lab.png" type="Texture" id=34] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=35] + +[sub_resource type="Animation" id=2] +resource_name = "open" +length = 0.9 +tracks/0/type = "value" +tracks/0/path = NodePath(".:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.7, 0.8 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 1, 0 ] +} [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 4, 120 ) @@ -29,7 +58,10 @@ extents = Vector2( 4, 120 ) [node name="Map" type="Node2D" groups=["map"]] pause_mode = 1 script = ExtResource( 1 ) +target_time_any = 180 +target_time_100 = 500 music = ExtResource( 9 ) +lore_entries = [ ExtResource( 30 ), ExtResource( 29 ), ExtResource( 25 ) ] [node name="Camera2D" parent="." instance=ExtResource( 6 )] @@ -44,21 +76,48 @@ __meta__ = { } [node name="BackgroundTiles" type="TileMap" parent="."] -z_index = -1 +z_index = -2 tile_set = ExtResource( 3 ) cell_size = Vector2( 8, 8 ) format = 1 -tile_data = PoolIntArray( 327699, 0, 3, 327700, 0, 3, 327701, 0, 3, 327702, 0, 3, 327703, 0, 3, 327704, 0, 3, 327705, 0, 3, 327706, 0, 3, 327707, 0, 3, 327708, 0, 3, 327709, 0, 3, 327710, 0, 3, 327711, 0, 3, 327712, 0, 3, 327713, 0, 3, 327714, 0, 3, 327715, 0, 3, 327716, 0, 3, 327717, 0, 3, 327718, 0, 3, 327719, 0, 3, 327720, 0, 3, 327721, 0, 3, 327722, 0, 3, 327723, 0, 3, 327724, 0, 3, 327725, 0, 3, 327726, 0, 3, 327727, 0, 3, 327728, 0, 3, 327729, 0, 3, 327730, 0, 3, 327731, 0, 3, 327732, 0, 3, 327733, 0, 3, 327734, 0, 3, 327735, 0, 3, 327736, 0, 3, 327737, 0, 3, 327738, 0, 3, 327739, 0, 3, 327740, 0, 3, 327741, 0, 3, 327742, 0, 3, 327743, 0, 3, 327744, 0, 3, 327745, 0, 3, 327746, 0, 3, 327747, 0, 3, 327748, 0, 3, 327749, 0, 3, 327750, 0, 3, 327751, 0, 3, 327752, 0, 3, 327753, 0, 3, 327754, 0, 3, 327755, 0, 3, 327756, 0, 3, 327757, 0, 3, 327758, 0, 3, 327759, 0, 3, 327760, 0, 3, 327761, 0, 3, 327762, 0, 3, 327763, 0, 3, 327764, 0, 3, 327765, 0, 3, 327766, 0, 3, 327767, 0, 3, 327768, 0, 3, 327769, 0, 3, 327770, 0, 3, 327771, 0, 3, 327772, 0, 3, 327773, 0, 3, 327774, 0, 3, 393234, 0, 3, 393235, 0, 3, 393236, 0, 3, 393237, 0, 3, 393238, 0, 3, 393239, 0, 3, 393240, 0, 3, 393241, 0, 3, 393242, 0, 3, 393243, 0, 3, 393244, 0, 3, 393245, 0, 3, 393246, 0, 3, 393247, 0, 3, 393248, 0, 3, 393249, 0, 3, 393250, 0, 3, 393251, 0, 3, 393252, 0, 3, 393253, 0, 3, 393254, 0, 3, 393255, 0, 3, 393256, 0, 3, 393257, 0, 3, 393258, 0, 3, 393259, 0, 3, 393260, 0, 3, 393261, 0, 3, 393262, 0, 3, 393263, 0, 3, 393264, 0, 3, 393265, 0, 3, 393266, 0, 3, 393267, 0, 3, 393268, 0, 3, 393269, 0, 3, 393270, 0, 3, 393271, 0, 3, 393272, 0, 3, 393273, 0, 3, 393274, 0, 3, 393275, 0, 3, 393276, 0, 3, 393277, 0, 3, 393278, 0, 3, 393279, 0, 3, 393280, 0, 3, 393281, 0, 3, 393282, 0, 3, 393283, 0, 3, 393284, 0, 3, 393285, 0, 3, 393286, 0, 3, 393287, 0, 3, 393288, 0, 3, 393289, 0, 3, 393290, 0, 3, 393291, 0, 3, 393292, 0, 3, 393293, 0, 3, 393294, 0, 3, 393295, 0, 3, 393296, 0, 3, 393297, 0, 3, 393298, 0, 3, 393299, 0, 3, 393300, 0, 3, 393301, 0, 3, 393302, 0, 3, 393303, 0, 3, 393304, 0, 3, 393305, 0, 3, 393306, 0, 3, 393307, 0, 3, 393308, 0, 3, 393309, 0, 3, 393310, 0, 3, 393311, 0, 3, 458771, 0, 3, 458772, 536870912, 3, 458773, 536870912, 3, 458774, 536870912, 3, 458775, 536870912, 3, 458776, 536870912, 3, 458777, 536870912, 3, 458778, 536870912, 3, 458779, 536870912, 3, 458780, 536870912, 3, 458781, 536870912, 3, 458782, 536870912, 3, 458783, 536870912, 3, 458784, 536870912, 3, 458785, 536870912, 3, 458786, 536870912, 3, 458787, 536870912, 3, 458788, 536870912, 3, 458789, 536870912, 3, 458790, 536870912, 3, 458791, 536870912, 3, 458792, 536870912, 3, 458793, 536870912, 3, 458794, 536870912, 3, 458795, 536870912, 3, 458796, 536870912, 3, 458797, 536870912, 3, 458798, 536870912, 3, 458799, 536870912, 3, 458800, 536870912, 3, 458801, 536870912, 3, 458802, 536870912, 3, 458803, 536870912, 3, 458804, 536870912, 3, 458805, 536870912, 3, 458806, 536870912, 3, 458807, 536870912, 3, 458808, 536870912, 3, 458809, 536870912, 3, 458810, 536870912, 3, 458811, 536870912, 3, 458812, 536870912, 3, 458813, 536870912, 3, 458814, 536870912, 3, 458815, 536870912, 3, 458816, 536870912, 3, 458817, 536870912, 3, 458818, 536870912, 3, 458819, 536870912, 3, 458820, 536870912, 3, 458821, 536870912, 3, 458822, 536870912, 3, 458823, 536870912, 3, 458824, 536870912, 3, 458825, 536870912, 3, 458826, 536870912, 3, 458827, 536870912, 3, 458828, 536870912, 3, 458829, 536870912, 3, 458830, 536870912, 3, 458831, 536870912, 3, 458832, 536870912, 3, 458833, 536870912, 3, 458834, 536870912, 3, 458835, 536870912, 3, 458836, 536870912, 3, 458837, 536870912, 3, 458838, 536870912, 3, 458839, 536870912, 3, 458840, 536870912, 3, 458841, 536870912, 3, 458842, 536870912, 3, 458843, 536870912, 3, 458844, 536870912, 3, 458845, 536870912, 3, 458846, 536870912, 3, 458847, 536870912, 3, 524307, 0, 3, 524308, 536870912, 3, 524309, 536870912, 3, 524310, 536870912, 3, 524311, 536870912, 3, 524312, 536870912, 3, 524313, 536870912, 3, 524314, 536870912, 3, 524315, 536870912, 3, 524316, 536870912, 3, 524317, 536870912, 3, 524318, 536870912, 3, 524319, 536870912, 3, 524320, 536870912, 3, 524321, 536870912, 3, 524322, 536870912, 3, 524323, 536870912, 3, 524324, 536870912, 3, 524325, 536870912, 3, 524326, 536870912, 3, 524327, 536870912, 3, 524328, 536870912, 3, 524329, 536870912, 3, 524330, 536870912, 3, 524331, 536870912, 3, 524332, 536870912, 3, 524333, 536870912, 3, 524334, 536870912, 3, 524335, 536870912, 3, 524336, 536870912, 3, 524337, 536870912, 3, 524338, 536870912, 3, 524339, 536870912, 3, 524340, 536870912, 3, 524341, 536870912, 3, 524342, 536870912, 3, 524343, 536870912, 3, 524344, 536870912, 3, 524345, 536870912, 3, 524346, 536870912, 3, 524347, 536870912, 3, 524348, 536870912, 3, 524349, 536870912, 3, 524350, 536870912, 3, 524351, 536870912, 3, 524352, 536870912, 3, 524353, 536870912, 3, 524354, 536870912, 3, 524355, 536870912, 3, 524356, 536870912, 3, 524357, 536870912, 3, 524358, 536870912, 3, 524359, 536870912, 3, 524360, 536870912, 3, 524361, 536870912, 3, 524362, 536870912, 3, 524363, 536870912, 3, 524364, 536870912, 3, 524365, 536870912, 3, 524366, 536870912, 3, 524367, 536870912, 3, 524368, 536870912, 3, 524369, 536870912, 3, 524370, 536870912, 3, 524371, 536870912, 3, 524372, 536870912, 3, 524373, 536870912, 3, 524374, 536870912, 3, 524375, 536870912, 3, 524376, 536870912, 3, 524377, 536870912, 3, 524378, 536870912, 3, 524379, 536870912, 3, 524380, 536870912, 3, 524381, 536870912, 3, 524382, 536870912, 3, 524383, 536870912, 3, 589843, 0, 3, 589844, 536870912, 3, 589845, 536870912, 3, 589846, 536870912, 3, 589847, 536870912, 3, 589848, 536870912, 3, 589849, 536870912, 3, 589850, 536870912, 3, 589851, 536870912, 3, 589852, 536870912, 3, 589853, 536870912, 3, 589854, 536870912, 3, 589855, 536870912, 3, 589856, 536870912, 3, 589857, 536870912, 3, 589858, 536870912, 3, 589859, 536870912, 3, 589860, 536870912, 3, 589861, 536870912, 3, 589862, 536870912, 3, 589863, 536870912, 3, 589864, 536870912, 3, 589865, 536870912, 3, 589866, 536870912, 3, 589867, 536870912, 3, 589868, 536870912, 3, 589869, 536870912, 3, 589870, 536870912, 3, 589871, 536870912, 3, 589872, 536870912, 3, 589873, 536870912, 3, 589874, 536870912, 3, 589875, 536870912, 3, 589876, 536870912, 3, 589877, 536870912, 3, 589878, 536870912, 3, 589879, 536870912, 3, 589880, 0, 3, 589881, 0, 3, 589882, 536870912, 3, 589883, 536870912, 3, 589884, 536870912, 3, 589885, 536870912, 3, 589886, 536870912, 3, 589887, 536870912, 3, 589888, 536870912, 3, 589889, 536870912, 3, 589890, 536870912, 3, 589891, 536870912, 3, 589892, 536870912, 3, 589893, 536870912, 3, 589894, 536870912, 3, 589895, 536870912, 3, 589896, 536870912, 3, 589897, 536870912, 3, 589898, 536870912, 3, 589899, 536870912, 3, 589900, 536870912, 3, 589901, 536870912, 3, 589902, 536870912, 3, 589903, 536870912, 3, 589904, 536870912, 3, 589905, 536870912, 3, 589906, 536870912, 3, 589907, 536870912, 3, 589908, 536870912, 3, 589909, 536870912, 3, 589910, 536870912, 3, 589911, 536870912, 3, 589912, 536870912, 3, 589913, 536870912, 3, 589914, 536870912, 3, 589915, 536870912, 3, 589916, 536870912, 3, 589917, 536870912, 3, 589918, 536870912, 3, 589919, 536870912, 3, 655379, 0, 3, 655380, 536870912, 3, 655381, 536870912, 3, 655382, 536870912, 3, 655383, 536870912, 3, 655384, 536870912, 3, 655385, 536870912, 3, 655386, 536870912, 3, 655387, 536870912, 3, 655388, 536870912, 3, 655389, 536870912, 3, 655390, 536870912, 3, 655391, 536870912, 3, 655392, 536870912, 3, 655393, 536870912, 3, 655394, 536870912, 3, 655395, 536870912, 3, 655396, 536870912, 3, 655397, 536870912, 3, 655398, 536870912, 3, 655399, 536870912, 3, 655400, 536870912, 3, 655401, 536870912, 3, 655402, 536870912, 3, 655403, 536870912, 3, 655404, 536870912, 3, 655405, 536870912, 3, 655406, 536870912, 3, 655407, 536870912, 3, 655408, 536870912, 3, 655409, 536870912, 3, 655410, 536870912, 3, 655411, 536870912, 3, 655412, 536870912, 3, 655413, 536870912, 3, 655414, 536870912, 3, 655415, 536870912, 3, 655416, 0, 3, 655417, 0, 3, 655418, 536870912, 3, 655419, 536870912, 3, 655420, 536870912, 3, 655421, 536870912, 3, 655422, 536870912, 3, 655423, 536870912, 3, 655424, 536870912, 3, 655425, 536870912, 3, 655426, 536870912, 3, 655427, 536870912, 3, 655428, 536870912, 3, 655429, 536870912, 3, 655430, 536870912, 3, 655431, 536870912, 3, 655432, 536870912, 3, 655433, 536870912, 3, 655434, 536870912, 3, 655435, 536870912, 3, 655436, 536870912, 3, 655437, 536870912, 3, 655438, 536870912, 3, 655439, 536870912, 3, 655440, 536870912, 3, 655441, 536870912, 3, 655442, 536870912, 3, 655443, 536870912, 3, 655444, 536870912, 3, 655445, 536870912, 3, 655446, 536870912, 3, 655447, 536870912, 3, 655448, 536870912, 3, 655449, 536870912, 3, 655450, 536870912, 3, 655451, 536870912, 3, 655452, 536870912, 3, 655453, 536870912, 3, 655454, 536870912, 3, 655455, 536870912, 3, 720915, 0, 3, 720916, 536870912, 3, 720917, 536870912, 3, 720918, 536870912, 3, 720919, 536870912, 3, 720920, 536870912, 3, 720921, 536870912, 3, 720922, 536870912, 3, 720923, 536870912, 3, 720924, 536870912, 3, 720925, 536870912, 3, 720926, 536870912, 3, 720927, 536870912, 3, 720928, 536870912, 3, 720929, 536870912, 3, 720930, 536870912, 3, 720931, 536870912, 3, 720932, 536870912, 3, 720933, 536870912, 3, 720934, 536870912, 3, 720935, 536870912, 3, 720936, 536870912, 3, 720937, 536870912, 3, 720938, 536870912, 3, 720939, 536870912, 3, 720940, 536870912, 3, 720941, 536870912, 3, 720942, 536870912, 3, 720943, 536870912, 3, 720944, 536870912, 3, 720945, 536870912, 3, 720946, 536870912, 3, 720947, 536870912, 3, 720948, 536870912, 3, 720949, 536870912, 3, 720950, 536870912, 3, 720951, 536870912, 3, 720952, 536870912, 3, 720953, 536870912, 3, 720954, 536870912, 3, 720955, 536870912, 3, 720956, 536870912, 3, 720957, 536870912, 3, 720958, 536870912, 3, 720959, 536870912, 3, 720960, 536870912, 3, 720961, 536870912, 3, 720962, 536870912, 3, 720963, 536870912, 3, 720964, 536870912, 3, 720965, 536870912, 3, 720966, 536870912, 3, 720967, 536870912, 3, 720968, 536870912, 3, 720969, 536870912, 3, 720970, 536870912, 3, 720971, 536870912, 3, 720972, 536870912, 3, 720973, 536870912, 3, 720974, 536870912, 3, 720975, 536870912, 3, 720976, 536870912, 3, 720977, 536870912, 3, 720978, 536870912, 3, 720979, 536870912, 3, 720980, 536870912, 3, 720981, 536870912, 3, 720982, 536870912, 3, 720983, 536870912, 3, 720984, 536870912, 3, 720985, 536870912, 3, 720986, 536870912, 3, 720987, 536870912, 3, 720988, 536870912, 3, 720989, 536870912, 3, 720990, 536870912, 3, 720991, 536870912, 3, 786451, 0, 3, 786452, 536870912, 3, 786453, 536870912, 3, 786454, 536870912, 3, 786455, 536870912, 3, 786456, 536870912, 3, 786457, 536870912, 3, 786458, 536870912, 3, 786459, 536870912, 3, 786460, 536870912, 3, 786461, 536870912, 3, 786462, 536870912, 3, 786463, 536870912, 3, 786464, 536870912, 3, 786465, 536870912, 3, 786466, 536870912, 3, 786467, 536870912, 3, 786468, 536870912, 3, 786469, 536870912, 3, 786470, 536870912, 3, 786471, 536870912, 3, 786472, 536870912, 3, 786473, 536870912, 3, 786474, 536870912, 3, 786475, 536870912, 3, 786476, 536870912, 3, 786477, 536870912, 3, 786478, 536870912, 3, 786479, 536870912, 3, 786480, 536870912, 3, 786481, 536870912, 3, 786482, 536870912, 3, 786483, 536870912, 3, 786484, 536870912, 3, 786485, 536870912, 3, 786486, 536870912, 3, 786487, 536870912, 3, 786488, 536870912, 3, 786489, 536870912, 3, 786490, 536870912, 3, 786491, 536870912, 3, 786492, 536870912, 3, 786493, 536870912, 3, 786494, 536870912, 3, 786495, 536870912, 3, 786496, 536870912, 3, 786497, 536870912, 3, 786498, 536870912, 3, 786499, 536870912, 3, 786500, 536870912, 3, 786501, 536870912, 3, 786502, 536870912, 3, 786503, 536870912, 3, 786504, 536870912, 3, 786505, 536870912, 3, 786506, 536870912, 3, 786507, 536870912, 3, 786508, 536870912, 3, 786509, 536870912, 3, 786510, 536870912, 3, 786511, 536870912, 3, 786512, 536870912, 3, 786513, 536870912, 3, 786514, 536870912, 3, 786515, 536870912, 3, 786516, 536870912, 3, 786517, 536870912, 3, 786518, 536870912, 3, 786519, 536870912, 3, 786520, 536870912, 3, 786521, 536870912, 3, 786522, 536870912, 3, 786523, 536870912, 3, 786524, 536870912, 3, 786525, 536870912, 3, 786526, 536870912, 3, 786527, 536870912, 3, 851987, 0, 3, 851988, 536870912, 3, 851989, 536870912, 3, 851990, 536870912, 3, 851991, 536870912, 3, 851992, 536870912, 3, 851993, 536870912, 3, 851994, 536870912, 3, 851995, 536870912, 3, 851996, 536870912, 3, 851997, 536870912, 3, 851998, 536870912, 3, 851999, 536870912, 3, 852000, 536870912, 3, 852001, 536870912, 3, 852002, 536870912, 3, 852003, 536870912, 3, 852004, 536870912, 3, 852005, 536870912, 3, 852006, 536870912, 3, 852007, 536870912, 3, 852008, 536870912, 3, 852009, 536870912, 3, 852010, 536870912, 3, 852011, 536870912, 3, 852012, 536870912, 3, 852013, 536870912, 3, 852014, 536870912, 3, 852015, 536870912, 3, 852016, 536870912, 3, 852017, 536870912, 3, 852018, 536870912, 3, 852019, 536870912, 3, 852020, 536870912, 3, 852021, 536870912, 3, 852022, 536870912, 3, 852023, 536870912, 3, 852024, 536870912, 3, 852025, 536870912, 3, 852026, 536870912, 3, 852027, 536870912, 3, 852028, 536870912, 3, 852029, 536870912, 3, 852030, 536870912, 3, 852031, 536870912, 3, 852032, 536870912, 3, 852033, 536870912, 3, 852034, 536870912, 3, 852035, 536870912, 3, 852036, 536870912, 3, 852037, 536870912, 3, 852038, 536870912, 3, 852039, 536870912, 3, 852040, 536870912, 3, 852041, 536870912, 3, 852042, 536870912, 3, 852043, 536870912, 3, 852044, 536870912, 3, 852045, 536870912, 3, 852046, 536870912, 3, 852047, 536870912, 3, 852048, 536870912, 3, 852049, 536870912, 3, 852050, 536870912, 3, 852051, 536870912, 3, 852052, 536870912, 3, 852053, 536870912, 3, 852054, 536870912, 3, 852055, 536870912, 3, 852056, 536870912, 3, 852057, 536870912, 3, 852058, 536870912, 3, 852059, 536870912, 3, 852060, 536870912, 3, 852061, 536870912, 3, 852062, 536870912, 3, 852063, 536870912, 3, 917523, 0, 3, 917524, 536870912, 3, 917525, 536870912, 3, 917526, 536870912, 3, 917527, 536870912, 3, 917528, 536870912, 3, 917529, 536870912, 3, 917530, 536870912, 3, 917531, 536870912, 3, 917532, 536870912, 3, 917533, 536870912, 3, 917534, 536870912, 3, 917535, 536870912, 3, 917536, 536870912, 3, 917537, 536870912, 3, 917538, 536870912, 3, 917539, 536870912, 3, 917540, 536870912, 3, 917541, 536870912, 3, 917542, 536870912, 3, 917543, 536870912, 3, 917544, 536870912, 3, 917545, 536870912, 3, 917546, 536870912, 3, 917547, 536870912, 3, 917548, 536870912, 3, 917549, 536870912, 3, 917550, 536870912, 3, 917551, 536870912, 3, 917552, 536870912, 3, 917553, 536870912, 3, 917554, 536870912, 3, 917555, 536870912, 3, 917556, 536870912, 3, 917557, 536870912, 3, 917558, 536870912, 3, 917559, 536870912, 3, 917560, 536870912, 3, 917561, 536870912, 3, 917562, 536870912, 3, 917563, 536870912, 3, 917564, 536870912, 3, 917565, 536870912, 3, 917566, 536870912, 3, 917567, 536870912, 3, 917568, 536870912, 3, 917569, 536870912, 3, 917570, 536870912, 3, 917571, 536870912, 3, 917572, 536870912, 3, 917573, 536870912, 3, 917574, 536870912, 3, 917575, 536870912, 3, 917576, 536870912, 3, 917577, 536870912, 3, 917578, 536870912, 3, 917579, 536870912, 3, 917580, 536870912, 3, 917581, 536870912, 3, 917582, 536870912, 3, 917583, 536870912, 3, 917584, 536870912, 3, 917585, 536870912, 3, 917586, 536870912, 3, 917587, 536870912, 3, 917588, 536870912, 3, 917589, 536870912, 3, 917590, 536870912, 3, 917591, 536870912, 3, 917592, 536870912, 3, 917593, 536870912, 3, 917594, 536870912, 3, 917595, 536870912, 3, 917596, 536870912, 3, 917597, 536870912, 3, 917598, 536870912, 3, 917599, 536870912, 3, 983059, 0, 3, 983060, 536870912, 3, 983061, 536870912, 3, 983062, 536870912, 3, 983063, 536870912, 3, 983064, 536870912, 3, 983065, 536870912, 3, 983066, 536870912, 3, 983067, 536870912, 3, 983068, 536870912, 3, 983069, 536870912, 3, 983070, 536870912, 3, 983071, 536870912, 3, 983072, 536870912, 3, 983073, 536870912, 3, 983074, 536870912, 3, 983075, 536870912, 3, 983076, 536870912, 3, 983077, 536870912, 3, 983078, 536870912, 3, 983079, 536870912, 3, 983080, 536870912, 3, 983081, 536870912, 3, 983082, 536870912, 3, 983083, 536870912, 3, 983084, 536870912, 3, 983085, 536870912, 3, 983086, 536870912, 3, 983087, 536870912, 3, 983088, 536870912, 3, 983089, 536870912, 3, 983090, 536870912, 3, 983091, 536870912, 3, 983092, 536870912, 3, 983093, 536870912, 3, 983094, 536870912, 3, 983095, 536870912, 3, 983096, 536870912, 3, 983097, 536870912, 3, 983098, 536870912, 3, 983099, 536870912, 3, 983100, 536870912, 3, 983101, 536870912, 3, 983102, 536870912, 3, 983103, 536870912, 3, 983104, 536870912, 3, 983105, 536870912, 3, 983106, 536870912, 3, 983107, 536870912, 3, 983108, 536870912, 3, 983109, 536870912, 3, 983110, 536870912, 3, 983111, 536870912, 3, 983112, 536870912, 3, 983113, 536870912, 3, 983114, 536870912, 3, 983115, 536870912, 3, 983116, 536870912, 3, 983117, 536870912, 3, 983118, 536870912, 3, 983119, 536870912, 3, 983120, 536870912, 3, 983121, 536870912, 3, 983122, 536870912, 3, 983123, 536870912, 3, 983124, 536870912, 3, 983125, 536870912, 3, 983126, 536870912, 3, 983127, 536870912, 3, 983128, 536870912, 3, 983129, 536870912, 3, 983130, 536870912, 3, 983131, 536870912, 3, 983132, 536870912, 3, 983133, 536870912, 3, 983134, 536870912, 3, 983135, 536870912, 3, 1048595, 0, 3, 1048596, 536870912, 3, 1048597, 536870912, 3, 1048598, 536870912, 3, 1048599, 536870912, 3, 1048600, 536870912, 3, 1048601, 536870912, 3, 1048602, 536870912, 3, 1048603, 536870912, 3, 1048604, 536870912, 3, 1048605, 536870912, 3, 1048606, 536870912, 3, 1048607, 536870912, 3, 1048608, 536870912, 3, 1048609, 536870912, 3, 1048610, 536870912, 3, 1048611, 536870912, 3, 1048612, 536870912, 3, 1048613, 536870912, 3, 1048614, 536870912, 3, 1048615, 536870912, 3, 1048616, 536870912, 3, 1048617, 536870912, 3, 1048618, 536870912, 3, 1048619, 536870912, 3, 1048620, 536870912, 3, 1048621, 536870912, 3, 1048622, 536870912, 3, 1048623, 536870912, 3, 1048624, 536870912, 3, 1048625, 536870912, 3, 1048626, 536870912, 3, 1048627, 536870912, 3, 1048628, 536870912, 3, 1048629, 536870912, 3, 1048630, 536870912, 3, 1048631, 536870912, 3, 1048632, 536870912, 3, 1048633, 536870912, 3, 1048634, 536870912, 3, 1048635, 536870912, 3, 1048636, 536870912, 3, 1048637, 536870912, 3, 1048638, 536870912, 3, 1048639, 536870912, 3, 1048640, 536870912, 3, 1048641, 536870912, 3, 1048642, 536870912, 3, 1048643, 536870912, 3, 1048644, 536870912, 3, 1048645, 536870912, 3, 1048646, 536870912, 3, 1048647, 536870912, 3, 1048648, 536870912, 3, 1048649, 536870912, 3, 1048650, 536870912, 3, 1048651, 536870912, 3, 1048652, 536870912, 3, 1048653, 536870912, 3, 1048654, 536870912, 3, 1048655, 536870912, 3, 1048656, 536870912, 3, 1048657, 536870912, 3, 1048658, 536870912, 3, 1048659, 536870912, 3, 1048660, 536870912, 3, 1048661, 536870912, 3, 1048662, 536870912, 3, 1048663, 536870912, 3, 1048664, 536870912, 3, 1048665, 536870912, 3, 1048666, 536870912, 3, 1048667, 536870912, 3, 1048668, 536870912, 3, 1048669, 536870912, 3, 1048670, 536870912, 3, 1048671, 536870912, 3, 1114131, 0, 3, 1114132, 536870912, 3, 1114133, 536870912, 3, 1114134, 536870912, 3, 1114135, 536870912, 3, 1114136, 536870912, 3, 1114137, 536870912, 3, 1114138, 536870912, 3, 1114139, 536870912, 3, 1114140, 536870912, 3, 1114141, 536870912, 3, 1114142, 536870912, 3, 1114143, 536870912, 3, 1114144, 536870912, 3, 1114145, 536870912, 3, 1114146, 536870912, 3, 1114147, 536870912, 3, 1114148, 536870912, 3, 1114149, 536870912, 3, 1114150, 536870912, 3, 1114151, 536870912, 3, 1114152, 536870912, 3, 1114153, 536870912, 3, 1114154, 536870912, 3, 1114155, 536870912, 3, 1114156, 536870912, 3, 1114157, 536870912, 3, 1114158, 536870912, 3, 1114159, 536870912, 3, 1114160, 536870912, 3, 1114161, 536870912, 3, 1114162, 536870912, 3, 1114163, 536870912, 3, 1114164, 536870912, 3, 1114165, 536870912, 3, 1114166, 536870912, 3, 1114167, 536870912, 3, 1114168, 536870912, 3, 1114169, 536870912, 3, 1114170, 536870912, 3, 1114171, 536870912, 3, 1114172, 536870912, 3, 1114173, 536870912, 3, 1114174, 536870912, 3, 1114175, 536870912, 3, 1114176, 536870912, 3, 1114177, 536870912, 3, 1114178, 536870912, 3, 1114179, 536870912, 3, 1114180, 536870912, 3, 1114181, 536870912, 3, 1114182, 536870912, 3, 1114183, 536870912, 3, 1114184, 536870912, 3, 1114185, 536870912, 3, 1114186, 536870912, 3, 1114187, 536870912, 3, 1114188, 536870912, 3, 1114189, 536870912, 3, 1114190, 536870912, 3, 1114191, 536870912, 3, 1114192, 536870912, 3, 1114193, 536870912, 3, 1114194, 536870912, 3, 1114195, 536870912, 3, 1114196, 536870912, 3, 1114197, 536870912, 3, 1114198, 536870912, 3, 1114199, 536870912, 3, 1114200, 536870912, 3, 1114201, 536870912, 3, 1114202, 536870912, 3, 1114203, 536870912, 3, 1114204, 536870912, 3, 1114205, 536870912, 3, 1114206, 536870912, 3, 1114207, 536870912, 3, 1179666, 536870912, 3, 1179667, 0, 3, 1179668, 536870912, 3, 1179669, 536870912, 3, 1179670, 536870912, 3, 1179671, 536870912, 3, 1179672, 536870912, 3, 1179673, 536870912, 3, 1179674, 536870912, 3, 1179675, 536870912, 3, 1179676, 536870912, 3, 1179677, 536870912, 3, 1179678, 536870912, 3, 1179679, 536870912, 3, 1179680, 536870912, 3, 1179681, 536870912, 3, 1179682, 536870912, 3, 1179683, 536870912, 3, 1179684, 536870912, 3, 1179685, 536870912, 3, 1179686, 536870912, 3, 1179687, 536870912, 3, 1179688, 536870912, 3, 1179689, 536870912, 3, 1179690, 536870912, 3, 1179691, 536870912, 3, 1179692, 536870912, 3, 1179693, 536870912, 3, 1179694, 536870912, 3, 1179695, 536870912, 3, 1179696, 536870912, 3, 1179697, 536870912, 3, 1179698, 536870912, 3, 1179699, 536870912, 3, 1179700, 536870912, 3, 1179701, 536870912, 3, 1179702, 536870912, 3, 1179703, 536870912, 3, 1179704, 536870912, 3, 1179705, 536870912, 3, 1179706, 536870912, 3, 1179707, 536870912, 3, 1179708, 536870912, 3, 1179709, 536870912, 3, 1179710, 536870912, 3, 1179711, 536870912, 3, 1179712, 536870912, 3, 1179713, 536870912, 3, 1179714, 536870912, 3, 1179715, 536870912, 3, 1179716, 536870912, 3, 1179717, 536870912, 3, 1179718, 536870912, 3, 1179719, 536870912, 3, 1179720, 536870912, 3, 1179721, 536870912, 3, 1179722, 536870912, 3, 1179723, 536870912, 3, 1179724, 536870912, 3, 1179725, 536870912, 3, 1179726, 536870912, 3, 1179727, 536870912, 3, 1179728, 536870912, 3, 1179729, 536870912, 3, 1179730, 536870912, 3, 1179731, 536870912, 3, 1179732, 536870912, 3, 1179733, 536870912, 3, 1179734, 536870912, 3, 1179735, 536870912, 3, 1179736, 536870912, 3, 1179737, 536870912, 3, 1179738, 536870912, 3, 1179739, 536870912, 3, 1179740, 536870912, 3, 1179741, 536870912, 3, 1179742, 536870912, 3, 1179743, 536870912, 3, 1245202, 536870912, 3, 1245203, 536870912, 3, 1245204, 536870912, 3, 1245205, 536870912, 3, 1245206, 536870912, 3, 1245207, 536870912, 3, 1245208, 536870912, 3, 1245209, 536870912, 3, 1245210, 536870912, 3, 1245211, 536870912, 3, 1245212, 536870912, 3, 1245213, 536870912, 3, 1245214, 536870912, 3, 1245215, 536870912, 3, 1245216, 536870912, 3, 1245217, 536870912, 3, 1245218, 536870912, 3, 1245219, 536870912, 3, 1245220, 536870912, 3, 1245221, 536870912, 3, 1245222, 536870912, 3, 1245223, 536870912, 3, 1245224, 536870912, 3, 1245225, 536870912, 3, 1245226, 536870912, 3, 1245227, 536870912, 3, 1245228, 536870912, 3, 1245229, 536870912, 3, 1245230, 536870912, 3, 1245231, 536870912, 3, 1245232, 536870912, 3, 1245233, 536870912, 3, 1245234, 536870912, 3, 1245235, 536870912, 3, 1245236, 536870912, 3, 1245237, 536870912, 3, 1245238, 536870912, 3, 1245239, 536870912, 3, 1245240, 536870912, 3, 1245241, 536870912, 3, 1245242, 536870912, 3, 1245243, 536870912, 3, 1245244, 536870912, 3, 1245245, 536870912, 3, 1245246, 536870912, 3, 1245247, 536870912, 3, 1245248, 536870912, 3, 1245249, 536870912, 3, 1245250, 536870912, 3, 1245251, 536870912, 3, 1245252, 536870912, 3, 1245253, 536870912, 3, 1245254, 536870912, 3, 1245255, 536870912, 3, 1245256, 536870912, 3, 1245257, 536870912, 3, 1245258, 536870912, 3, 1245259, 536870912, 3, 1245260, 536870912, 3, 1245261, 536870912, 3, 1245262, 536870912, 3, 1245263, 536870912, 3, 1245264, 536870912, 3, 1245265, 536870912, 3, 1245266, 536870912, 3, 1245267, 536870912, 3, 1245268, 536870912, 3, 1245269, 536870912, 3, 1245270, 536870912, 3, 1245271, 536870912, 3, 1245272, 536870912, 3, 1245273, 536870912, 3, 1245274, 536870912, 3, 1245275, 536870912, 3, 1245276, 536870912, 3, 1245277, 536870912, 3, 1245278, 536870912, 3, 1245279, 536870912, 3, 1310738, 536870912, 3, 1310739, 536870912, 3, 1310740, 536870912, 3, 1310741, 536870912, 3, 1310742, 536870912, 3, 1310743, 536870912, 3, 1310744, 536870912, 3, 1310745, 536870912, 3, 1310746, 536870912, 3, 1310747, 536870912, 3, 1310748, 536870912, 3, 1310749, 536870912, 3, 1310750, 536870912, 3, 1310751, 536870912, 3, 1310752, 536870912, 3, 1310753, 536870912, 3, 1310754, 536870912, 3, 1310755, 536870912, 3, 1310756, 536870912, 3, 1310757, 536870912, 3, 1310758, 536870912, 3, 1310759, 536870912, 3, 1310760, 536870912, 3, 1310761, 536870912, 3, 1310762, 536870912, 3, 1310763, 536870912, 3, 1310764, 536870912, 3, 1310765, 536870912, 3, 1310766, 536870912, 3, 1310767, 536870912, 3, 1310768, 536870912, 3, 1310769, 536870912, 3, 1310770, 536870912, 3, 1310771, 536870912, 3, 1310772, 536870912, 3, 1310773, 536870912, 3, 1310774, 536870912, 3, 1310775, 536870912, 3, 1310776, 536870912, 3, 1310777, 536870912, 3, 1310778, 536870912, 3, 1310779, 536870912, 3, 1310780, 536870912, 3, 1310781, 536870912, 3, 1310782, 536870912, 3, 1310783, 536870912, 3, 1310784, 536870912, 3, 1310785, 536870912, 3, 1310786, 536870912, 3, 1310787, 536870912, 3, 1310788, 536870912, 3, 1310789, 536870912, 3, 1310790, 536870912, 3, 1310791, 536870912, 3, 1310792, 536870912, 3, 1310793, 536870912, 3, 1310794, 536870912, 3, 1310795, 536870912, 3, 1310796, 536870912, 3, 1310797, 536870912, 3, 1310798, 536870912, 3, 1310799, 536870912, 3, 1310800, 536870912, 3, 1310801, 536870912, 3, 1310802, 536870912, 3, 1310803, 536870912, 3, 1310804, 536870912, 3, 1310805, 536870912, 3, 1310806, 536870912, 3, 1310807, 536870912, 3, 1310808, 536870912, 3, 1310809, 536870912, 3, 1310810, 536870912, 3, 1310811, 536870912, 3, 1310812, 536870912, 3, 1310813, 536870912, 3, 1310814, 536870912, 3, 1310815, 536870912, 3, 1376274, 0, 2, 1376275, 0, 2, 1376276, 0, 2, 1376277, 0, 2, 1376278, 0, 2, 1376279, 0, 2, 1376280, 0, 2, 1376281, 0, 2, 1376282, 0, 2, 1376283, 0, 2, 1376284, 0, 2, 1376285, 0, 2, 1376286, 0, 2, 1376287, 0, 2, 1441801, 0, 0, 1441802, 0, 0, 1441809, 0, 65536, 1441810, 0, 65537, 1441811, 0, 65536, 1441812, 0, 65537, 1441813, 0, 65536, 1441814, 0, 65537, 1441815, 0, 65536, 1441816, 0, 65537, 1441817, 0, 65536, 1441818, 0, 65537, 1441819, 0, 65536, 1441820, 0, 65537, 1441821, 0, 65536, 1441822, 0, 65537, 1441823, 0, 65536, 1507328, 0, 131074, 1507329, 0, 131074, 1507330, 0, 131074, 1507331, 0, 131074, 1507332, 0, 131074, 1507333, 0, 131074, 1507334, 0, 131074, 1507335, 0, 131074, 1507336, 0, 131074, 1507337, 0, 131074, 1507338, 0, 131074, 1507339, 0, 131074, 1507340, 0, 131074, 1507341, 0, 131074, 1507342, 0, 131074, 1507346, 0, 131074, 1507347, 0, 131074, 1507348, 0, 131074, 1507349, 0, 131074, 1507350, 0, 131074, 1507351, 0, 131074, 1507352, 0, 131074, 1507353, 0, 131074, 1507354, 0, 131074, 1507355, 0, 131074, 1507356, 0, 131074, 1507357, 0, 131074, 1507358, 0, 131074, 1507359, 0, 131074 ) +tile_data = PoolIntArray( 327699, 0, 3, 327700, 0, 3, 327701, 0, 3, 327702, 0, 3, 327703, 0, 3, 327704, 0, 3, 327705, 0, 3, 327706, 0, 3, 327707, 0, 3, 327708, 0, 3, 327709, 0, 3, 327710, 0, 3, 327711, 0, 3, 327712, 0, 3, 327713, 0, 3, 327714, 0, 3, 327715, 0, 3, 327716, 0, 3, 327717, 0, 3, 327718, 0, 3, 327719, 0, 3, 327720, 0, 3, 327721, 0, 3, 327722, 0, 3, 327723, 0, 3, 327724, 0, 3, 327725, 0, 3, 327726, 0, 3, 327727, 0, 3, 327728, 0, 3, 327729, 0, 3, 327730, 0, 3, 327731, 0, 3, 327732, 0, 3, 327733, 0, 3, 327734, 0, 3, 327735, 0, 3, 327736, 0, 3, 327737, 0, 3, 327738, 0, 3, 327739, 0, 3, 327740, 0, 3, 327741, 0, 3, 327742, 0, 3, 327743, 0, 3, 327744, 0, 3, 327745, 0, 3, 327746, 0, 3, 327747, 0, 3, 327748, 0, 3, 327749, 0, 3, 327750, 0, 3, 327751, 0, 3, 327752, 0, 3, 327753, 0, 3, 327754, 0, 3, 327755, 0, 3, 327756, 0, 3, 327757, 0, 3, 327758, 0, 3, 327759, 0, 3, 327760, 0, 3, 327761, 0, 3, 327762, 0, 3, 327763, 0, 3, 327764, 0, 3, 327765, 0, 3, 327766, 0, 3, 327767, 0, 3, 327768, 0, 3, 327769, 0, 3, 327770, 0, 3, 327771, 0, 3, 327772, 0, 3, 327773, 0, 3, 327774, 0, 3, 393234, 0, 3, 393235, 0, 3, 393236, 0, 3, 393237, 0, 3, 393238, 0, 3, 393239, 0, 3, 393240, 0, 3, 393241, 0, 3, 393242, 0, 3, 393243, 0, 3, 393244, 0, 3, 393245, 0, 3, 393246, 0, 3, 393247, 0, 3, 393248, 0, 3, 393249, 0, 3, 393250, 0, 3, 393251, 0, 3, 393252, 0, 3, 393253, 0, 3, 393254, 0, 3, 393255, 0, 3, 393256, 0, 3, 393257, 0, 3, 393258, 0, 3, 393259, 0, 3, 393260, 0, 3, 393261, 0, 3, 393262, 0, 3, 393263, 0, 3, 393264, 0, 3, 393265, 0, 3, 393266, 0, 3, 393267, 0, 3, 393268, 0, 3, 393269, 0, 3, 393270, 0, 3, 393271, 0, 3, 393272, 0, 3, 393273, 0, 3, 393274, 0, 3, 393275, 0, 3, 393276, 0, 3, 393277, 0, 3, 393278, 0, 3, 393279, 0, 3, 393280, 0, 3, 393281, 0, 3, 393282, 0, 3, 393283, 0, 3, 393284, 0, 3, 393285, 0, 3, 393286, 0, 3, 393287, 0, 3, 393288, 0, 3, 393289, 0, 3, 393290, 0, 3, 393291, 0, 3, 393292, 0, 3, 393293, 0, 3, 393294, 0, 3, 393295, 0, 3, 393296, 0, 3, 393297, 0, 3, 393298, 0, 3, 393299, 0, 3, 393300, 0, 3, 393301, 0, 3, 393302, 0, 3, 393303, 0, 3, 393304, 0, 3, 393305, 0, 3, 393306, 0, 3, 393307, 0, 3, 393308, 0, 3, 393309, 0, 3, 393310, 0, 3, 393311, 0, 3, 458771, 0, 3, 458772, 536870912, 3, 458773, 536870912, 3, 458774, 536870912, 3, 458775, 536870912, 3, 458776, 536870912, 3, 458777, 536870912, 3, 458778, 536870912, 3, 458779, 536870912, 3, 458780, 536870912, 3, 458781, 536870912, 3, 458782, 536870912, 3, 458783, 536870912, 3, 458784, 536870912, 3, 458785, 536870912, 3, 458786, 536870912, 3, 458787, 536870912, 3, 458788, 536870912, 3, 458789, 536870912, 3, 458790, 536870912, 3, 458791, 536870912, 3, 458792, 536870912, 3, 458793, 536870912, 3, 458794, 536870912, 3, 458795, 536870912, 3, 458796, 536870912, 3, 458797, 536870912, 3, 458798, 536870912, 3, 458799, 536870912, 3, 458800, 536870912, 3, 458801, 536870912, 3, 458802, 536870912, 3, 458803, 536870912, 3, 458804, 536870912, 3, 458805, 536870912, 3, 458806, 536870912, 3, 458807, 536870912, 3, 458808, 536870912, 3, 458809, 536870912, 3, 458810, 536870912, 3, 458811, 536870912, 3, 458812, 536870912, 3, 458813, 536870912, 3, 458814, 536870912, 3, 458815, 536870912, 3, 458816, 536870912, 3, 458817, 536870912, 3, 458818, 536870912, 3, 458819, 536870912, 3, 458820, 536870912, 3, 458821, 536870912, 3, 458822, 536870912, 3, 458823, 536870912, 3, 458824, 536870912, 3, 458825, 536870912, 3, 458826, 536870912, 3, 458827, 536870912, 3, 458828, 536870912, 3, 458829, 536870912, 3, 458830, 536870912, 3, 458831, 536870912, 3, 458832, 536870912, 3, 458833, 536870912, 3, 458834, 536870912, 3, 458835, 536870912, 3, 458836, 536870912, 3, 458837, 536870912, 3, 458838, 536870912, 3, 458839, 536870912, 3, 458840, 536870912, 3, 458841, 536870912, 3, 458842, 536870912, 3, 458843, 536870912, 3, 458844, 536870912, 3, 458845, 536870912, 3, 458846, 536870912, 3, 458847, 536870912, 3, 524307, 0, 3, 524308, 536870912, 3, 524309, 536870912, 3, 524310, 536870912, 3, 524311, 536870912, 3, 524312, 536870912, 3, 524313, 536870912, 3, 524314, 536870912, 3, 524315, 536870912, 3, 524316, 536870912, 3, 524317, 536870912, 3, 524318, 536870912, 3, 524319, 536870912, 3, 524320, 536870912, 3, 524321, 536870912, 3, 524322, 536870912, 3, 524323, 536870912, 3, 524324, 536870912, 3, 524325, 536870912, 3, 524326, 536870912, 3, 524327, 536870912, 3, 524328, 536870912, 3, 524329, 536870912, 3, 524330, 536870912, 3, 524331, 536870912, 3, 524332, 536870912, 3, 524333, 536870912, 3, 524334, 536870912, 3, 524335, 536870912, 3, 524336, 536870912, 3, 524337, 536870912, 3, 524338, 536870912, 3, 524339, 536870912, 3, 524340, 536870912, 3, 524341, 536870912, 3, 524342, 536870912, 3, 524343, 536870912, 3, 524344, 536870912, 3, 524345, 536870912, 3, 524346, 536870912, 3, 524347, 536870912, 3, 524348, 536870912, 3, 524349, 536870912, 3, 524350, 536870912, 3, 524351, 536870912, 3, 524352, 536870912, 3, 524353, 536870912, 3, 524354, 536870912, 3, 524355, 536870912, 3, 524356, 536870912, 3, 524357, 536870912, 3, 524358, 536870912, 3, 524359, 536870912, 3, 524360, 536870912, 3, 524361, 536870912, 3, 524362, 536870912, 3, 524363, 536870912, 3, 524364, 536870912, 3, 524365, 536870912, 3, 524366, 536870912, 3, 524367, 536870912, 3, 524368, 536870912, 3, 524369, 536870912, 3, 524370, 536870912, 3, 524371, 536870912, 3, 524372, 536870912, 3, 524373, 536870912, 3, 524374, 536870912, 3, 524375, 536870912, 3, 524376, 536870912, 3, 524377, 536870912, 3, 524378, 536870912, 3, 524379, 536870912, 3, 524380, 536870912, 3, 524381, 536870912, 3, 524382, 536870912, 3, 524383, 536870912, 3, 589843, 0, 3, 589844, 536870912, 3, 589845, 536870912, 3, 589846, 536870912, 3, 589847, 536870912, 3, 589848, 536870912, 3, 589849, 536870912, 3, 589850, 536870912, 3, 589851, 536870912, 3, 589852, 536870912, 3, 589853, 536870912, 3, 589854, 536870912, 3, 589855, 536870912, 3, 589856, 536870912, 3, 589857, 536870912, 3, 589858, 536870912, 3, 589859, 536870912, 3, 589860, 536870912, 3, 589861, 536870912, 3, 589862, 536870912, 3, 589863, 536870912, 3, 589864, 536870912, 3, 589865, 536870912, 3, 589866, 536870912, 3, 589867, 536870912, 3, 589868, 536870912, 3, 589869, 536870912, 3, 589870, 536870912, 3, 589871, 536870912, 3, 589872, 536870912, 3, 589873, 536870912, 3, 589874, 536870912, 3, 589875, 536870912, 3, 589876, 536870912, 3, 589877, 536870912, 3, 589878, 536870912, 3, 589879, 536870912, 3, 589880, 0, 3, 589881, 0, 3, 589882, 536870912, 3, 589883, 536870912, 3, 589884, 536870912, 3, 589885, 536870912, 3, 589886, 536870912, 3, 589887, 536870912, 3, 589888, 536870912, 3, 589889, 536870912, 3, 589890, 536870912, 3, 589891, 536870912, 3, 589892, 536870912, 3, 589893, 536870912, 3, 589894, 536870912, 3, 589895, 536870912, 3, 589896, 536870912, 3, 589897, 536870912, 3, 589898, 536870912, 3, 589899, 536870912, 3, 589900, 536870912, 3, 589901, 536870912, 3, 589902, 536870912, 3, 589903, 536870912, 3, 589904, 536870912, 3, 589905, 536870912, 3, 589906, 536870912, 3, 589907, 536870912, 3, 589908, 536870912, 3, 589909, 536870912, 3, 589910, 536870912, 3, 589911, 536870912, 3, 589912, 536870912, 3, 589913, 536870912, 3, 589914, 536870912, 3, 589915, 536870912, 3, 589916, 536870912, 3, 589917, 536870912, 3, 589918, 536870912, 3, 589919, 536870912, 3, 655379, 0, 3, 655380, 536870912, 3, 655381, 536870912, 3, 655382, 536870912, 3, 655383, 536870912, 3, 655384, 536870912, 3, 655385, 536870912, 3, 655386, 536870912, 3, 655387, 536870912, 3, 655388, 536870912, 3, 655389, 536870912, 3, 655390, 536870912, 3, 655391, 536870912, 3, 655392, 536870912, 3, 655393, 536870912, 3, 655394, 536870912, 3, 655395, 536870912, 3, 655396, 536870912, 3, 655397, 536870912, 3, 655398, 536870912, 3, 655399, 536870912, 3, 655400, 536870912, 3, 655401, 536870912, 3, 655402, 536870912, 3, 655403, 536870912, 3, 655404, 536870912, 3, 655405, 536870912, 3, 655406, 536870912, 3, 655407, 536870912, 3, 655408, 536870912, 3, 655409, 536870912, 3, 655410, 536870912, 3, 655411, 536870912, 3, 655412, 536870912, 3, 655413, 536870912, 3, 655414, 536870912, 3, 655415, 536870912, 3, 655416, 0, 3, 655417, 0, 3, 655418, 536870912, 3, 655419, 536870912, 3, 655420, 536870912, 3, 655421, 536870912, 3, 655422, 536870912, 3, 655423, 536870912, 3, 655424, 536870912, 3, 655425, 536870912, 3, 655426, 536870912, 3, 655427, 536870912, 3, 655428, 536870912, 3, 655429, 536870912, 3, 655430, 536870912, 3, 655431, 536870912, 3, 655432, 536870912, 3, 655433, 536870912, 3, 655434, 536870912, 3, 655435, 536870912, 3, 655436, 536870912, 3, 655437, 536870912, 3, 655438, 536870912, 3, 655439, 536870912, 3, 655440, 536870912, 3, 655441, 536870912, 3, 655442, 536870912, 3, 655443, 536870912, 3, 655444, 536870912, 3, 655445, 536870912, 3, 655446, 536870912, 3, 655447, 536870912, 3, 655448, 536870912, 3, 655449, 536870912, 3, 655450, 536870912, 3, 655451, 536870912, 3, 655452, 536870912, 3, 655453, 536870912, 3, 655454, 536870912, 3, 655455, 536870912, 3, 720915, 0, 3, 720916, 536870912, 3, 720917, 536870912, 3, 720918, 536870912, 3, 720919, 536870912, 3, 720920, 536870912, 3, 720921, 536870912, 3, 720922, 536870912, 3, 720923, 536870912, 3, 720924, 536870912, 3, 720925, 536870912, 3, 720926, 536870912, 3, 720927, 536870912, 3, 720928, 536870912, 3, 720929, 536870912, 3, 720930, 536870912, 3, 720931, 536870912, 3, 720932, 536870912, 3, 720933, 536870912, 3, 720934, 536870912, 3, 720935, 536870912, 3, 720936, 536870912, 3, 720937, 536870912, 3, 720938, 536870912, 3, 720939, 536870912, 3, 720940, 536870912, 3, 720941, 536870912, 3, 720942, 536870912, 3, 720943, 536870912, 3, 720944, 536870912, 3, 720945, 536870912, 3, 720946, 536870912, 3, 720947, 536870912, 3, 720948, 536870912, 3, 720949, 536870912, 3, 720950, 536870912, 3, 720951, 536870912, 3, 720952, 536870912, 3, 720953, 536870912, 3, 720954, 536870912, 3, 720955, 536870912, 3, 720956, 536870912, 3, 720957, 536870912, 3, 720958, 536870912, 3, 720959, 536870912, 3, 720960, 536870912, 3, 720961, 536870912, 3, 720962, 536870912, 3, 720963, 536870912, 3, 720964, 536870912, 3, 720965, 536870912, 3, 720966, 536870912, 3, 720967, 536870912, 3, 720968, 536870912, 3, 720969, 536870912, 3, 720970, 536870912, 3, 720971, 536870912, 3, 720972, 536870912, 3, 720973, 536870912, 3, 720974, 536870912, 3, 720975, 536870912, 3, 720976, 536870912, 3, 720977, 536870912, 3, 720978, 536870912, 3, 720979, 536870912, 3, 720980, 536870912, 3, 720981, 536870912, 3, 720982, 536870912, 3, 720983, 536870912, 3, 720984, 536870912, 3, 720985, 536870912, 3, 720986, 536870912, 3, 720987, 536870912, 3, 720988, 536870912, 3, 720989, 536870912, 3, 720990, 536870912, 3, 720991, 536870912, 3, 786451, 0, 3, 786452, 536870912, 3, 786453, 536870912, 3, 786454, 536870912, 3, 786455, 536870912, 3, 786456, 536870912, 3, 786457, 536870912, 3, 786458, 536870912, 3, 786459, 536870912, 3, 786460, 536870912, 3, 786461, 536870912, 3, 786462, 536870912, 3, 786463, 536870912, 3, 786464, 536870912, 3, 786465, 536870912, 3, 786466, 536870912, 3, 786467, 536870912, 3, 786468, 536870912, 3, 786469, 536870912, 3, 786470, 536870912, 3, 786471, 536870912, 3, 786472, 536870912, 3, 786473, 536870912, 3, 786474, 536870912, 3, 786475, 536870912, 3, 786476, 536870912, 3, 786477, 536870912, 3, 786478, 536870912, 3, 786479, 536870912, 3, 786480, 536870912, 3, 786481, 536870912, 3, 786482, 536870912, 3, 786483, 536870912, 3, 786484, 536870912, 3, 786485, 536870912, 3, 786486, 536870912, 3, 786487, 536870912, 3, 786488, 536870912, 3, 786489, 536870912, 3, 786490, 536870912, 3, 786491, 536870912, 3, 786492, 536870912, 3, 786493, 536870912, 3, 786494, 536870912, 3, 786495, 536870912, 3, 786496, 536870912, 3, 786497, 536870912, 3, 786498, 536870912, 3, 786499, 536870912, 3, 786500, 536870912, 3, 786501, 536870912, 3, 786502, 536870912, 3, 786503, 536870912, 3, 786504, 536870912, 3, 786505, 536870912, 3, 786506, 536870912, 3, 786507, 536870912, 3, 786508, 536870912, 3, 786509, 536870912, 3, 786510, 536870912, 3, 786511, 536870912, 3, 786512, 536870912, 3, 786513, 536870912, 3, 786514, 536870912, 3, 786515, 536870912, 3, 786516, 536870912, 3, 786517, 536870912, 3, 786518, 536870912, 3, 786519, 536870912, 3, 786520, 536870912, 3, 786521, 536870912, 3, 786522, 536870912, 3, 786523, 536870912, 3, 786524, 536870912, 3, 786525, 536870912, 3, 786526, 536870912, 3, 786527, 536870912, 3, 851987, 0, 3, 851988, 536870912, 3, 851989, 536870912, 3, 851990, 536870912, 3, 851991, 536870912, 3, 851992, 536870912, 3, 851993, 536870912, 3, 851994, 536870912, 3, 851995, 536870912, 3, 851996, 536870912, 3, 851997, 536870912, 3, 851998, 536870912, 3, 851999, 536870912, 3, 852000, 536870912, 3, 852001, 536870912, 3, 852002, 536870912, 3, 852003, 536870912, 3, 852004, 536870912, 3, 852005, 536870912, 3, 852006, 536870912, 3, 852007, 536870912, 3, 852008, 536870912, 3, 852009, 536870912, 3, 852010, 536870912, 3, 852011, 536870912, 3, 852012, 536870912, 3, 852013, 536870912, 3, 852014, 536870912, 3, 852015, 536870912, 3, 852016, 536870912, 3, 852017, 536870912, 3, 852018, 536870912, 3, 852019, 536870912, 3, 852020, 536870912, 3, 852021, 536870912, 3, 852022, 536870912, 3, 852023, 536870912, 3, 852024, 536870912, 3, 852025, 536870912, 3, 852026, 536870912, 3, 852027, 536870912, 3, 852028, 536870912, 3, 852029, 536870912, 3, 852030, 536870912, 3, 852031, 536870912, 3, 852032, 536870912, 3, 852033, 536870912, 3, 852034, 536870912, 3, 852035, 536870912, 3, 852036, 536870912, 3, 852037, 536870912, 3, 852038, 536870912, 3, 852039, 536870912, 3, 852040, 536870912, 3, 852041, 536870912, 3, 852042, 536870912, 3, 852043, 536870912, 3, 852044, 536870912, 3, 852045, 536870912, 3, 852046, 536870912, 3, 852047, 536870912, 3, 852048, 536870912, 3, 852049, 536870912, 3, 852050, 536870912, 3, 852051, 536870912, 3, 852052, 536870912, 3, 852053, 536870912, 3, 852054, 536870912, 3, 852055, 536870912, 3, 852056, 536870912, 3, 852057, 536870912, 3, 852058, 536870912, 3, 852059, 536870912, 3, 852060, 536870912, 3, 852061, 536870912, 3, 852062, 536870912, 3, 852063, 536870912, 3, 917523, 0, 3, 917524, 536870912, 3, 917525, 536870912, 3, 917526, 536870912, 3, 917527, 536870912, 3, 917528, 536870912, 3, 917529, 536870912, 3, 917530, 536870912, 3, 917531, 536870912, 3, 917532, 536870912, 3, 917533, 536870912, 3, 917534, 536870912, 3, 917535, 536870912, 3, 917536, 536870912, 3, 917537, 536870912, 3, 917538, 536870912, 3, 917539, 536870912, 3, 917540, 536870912, 3, 917541, 536870912, 3, 917542, 536870912, 3, 917543, 536870912, 3, 917544, 536870912, 3, 917545, 536870912, 3, 917546, 536870912, 3, 917547, 536870912, 3, 917548, 536870912, 3, 917549, 536870912, 3, 917550, 536870912, 3, 917551, 536870912, 3, 917552, 536870912, 3, 917553, 536870912, 3, 917554, 536870912, 3, 917555, 536870912, 3, 917556, 536870912, 3, 917557, 536870912, 3, 917558, 536870912, 3, 917559, 536870912, 3, 917560, 536870912, 3, 917561, 536870912, 3, 917562, 536870912, 3, 917563, 536870912, 3, 917564, 536870912, 3, 917565, 536870912, 3, 917566, 536870912, 3, 917567, 536870912, 3, 917568, 536870912, 3, 917569, 536870912, 3, 917570, 536870912, 3, 917571, 536870912, 3, 917572, 536870912, 3, 917573, 536870912, 3, 917574, 536870912, 3, 917575, 536870912, 3, 917576, 536870912, 3, 917577, 536870912, 3, 917578, 536870912, 3, 917579, 536870912, 3, 917580, 536870912, 3, 917581, 536870912, 3, 917582, 536870912, 3, 917583, 536870912, 3, 917584, 536870912, 3, 917585, 536870912, 3, 917586, 536870912, 3, 917587, 536870912, 3, 917588, 536870912, 3, 917589, 536870912, 3, 917590, 536870912, 3, 917591, 536870912, 3, 917592, 536870912, 3, 917593, 536870912, 3, 917594, 536870912, 3, 917595, 536870912, 3, 917596, 536870912, 3, 917597, 536870912, 3, 917598, 536870912, 3, 917599, 536870912, 3, 983059, 0, 3, 983060, 536870912, 3, 983061, 536870912, 3, 983062, 536870912, 3, 983063, 536870912, 3, 983064, 536870912, 3, 983065, 536870912, 3, 983066, 536870912, 3, 983067, 536870912, 3, 983068, 536870912, 3, 983069, 536870912, 3, 983070, 536870912, 3, 983071, 536870912, 3, 983072, 536870912, 3, 983073, 536870912, 3, 983074, 536870912, 3, 983075, 536870912, 3, 983076, 536870912, 3, 983077, 536870912, 3, 983078, 536870912, 3, 983079, 536870912, 3, 983080, 536870912, 3, 983081, 536870912, 3, 983082, 536870912, 3, 983083, 536870912, 3, 983084, 536870912, 3, 983085, 536870912, 3, 983086, 536870912, 3, 983087, 536870912, 3, 983088, 536870912, 3, 983089, 536870912, 3, 983090, 536870912, 3, 983091, 536870912, 3, 983092, 536870912, 3, 983093, 536870912, 3, 983094, 536870912, 3, 983095, 536870912, 3, 983096, 536870912, 3, 983097, 536870912, 3, 983098, 536870912, 3, 983099, 536870912, 3, 983100, 536870912, 3, 983101, 536870912, 3, 983102, 536870912, 3, 983103, 536870912, 3, 983104, 536870912, 3, 983105, 536870912, 3, 983106, 536870912, 3, 983107, 536870912, 3, 983108, 536870912, 3, 983109, 536870912, 3, 983110, 536870912, 3, 983111, 536870912, 3, 983112, 536870912, 3, 983113, 536870912, 3, 983114, 536870912, 3, 983115, 536870912, 3, 983116, 536870912, 3, 983117, 536870912, 3, 983118, 536870912, 3, 983119, 536870912, 3, 983120, 536870912, 3, 983121, 536870912, 3, 983122, 536870912, 3, 983123, 536870912, 3, 983124, 536870912, 3, 983125, 536870912, 3, 983126, 536870912, 3, 983127, 536870912, 3, 983128, 536870912, 3, 983129, 536870912, 3, 983130, 536870912, 3, 983131, 536870912, 3, 983132, 536870912, 3, 983133, 536870912, 3, 983134, 536870912, 3, 983135, 536870912, 3, 1048595, 0, 3, 1048596, 536870912, 3, 1048597, 536870912, 3, 1048598, 536870912, 3, 1048599, 536870912, 3, 1048600, 536870912, 3, 1048601, 536870912, 3, 1048602, 536870912, 3, 1048603, 536870912, 3, 1048604, 536870912, 3, 1048605, 536870912, 3, 1048606, 536870912, 3, 1048607, 536870912, 3, 1048608, 536870912, 3, 1048609, 536870912, 3, 1048610, 536870912, 3, 1048611, 536870912, 3, 1048612, 536870912, 3, 1048613, 536870912, 3, 1048614, 536870912, 3, 1048615, 536870912, 3, 1048616, 536870912, 3, 1048617, 536870912, 3, 1048618, 536870912, 3, 1048619, 536870912, 3, 1048620, 536870912, 3, 1048621, 536870912, 3, 1048622, 536870912, 3, 1048623, 536870912, 3, 1048624, 536870912, 3, 1048625, 536870912, 3, 1048626, 536870912, 3, 1048627, 536870912, 3, 1048628, 536870912, 3, 1048629, 536870912, 3, 1048630, 536870912, 3, 1048631, 536870912, 3, 1048632, 536870912, 3, 1048633, 536870912, 3, 1048634, 536870912, 3, 1048635, 536870912, 3, 1048636, 536870912, 3, 1048637, 536870912, 3, 1048638, 536870912, 3, 1048639, 536870912, 3, 1048640, 536870912, 3, 1048641, 536870912, 3, 1048642, 536870912, 3, 1048643, 536870912, 3, 1048644, 536870912, 3, 1048645, 536870912, 3, 1048646, 536870912, 3, 1048647, 536870912, 3, 1048648, 536870912, 3, 1048649, 536870912, 3, 1048650, 536870912, 3, 1048651, 536870912, 3, 1048652, 536870912, 3, 1048653, 536870912, 3, 1048654, 536870912, 3, 1048655, 536870912, 3, 1048656, 536870912, 3, 1048657, 536870912, 3, 1048658, 536870912, 3, 1048659, 536870912, 3, 1048660, 536870912, 3, 1048661, 536870912, 3, 1048662, 536870912, 3, 1048663, 536870912, 3, 1048664, 536870912, 3, 1048665, 536870912, 3, 1048666, 536870912, 3, 1048667, 536870912, 3, 1048668, 536870912, 3, 1048669, 536870912, 3, 1048670, 536870912, 3, 1048671, 536870912, 3, 1114131, 0, 3, 1114132, 536870912, 3, 1114133, 536870912, 3, 1114134, 536870912, 3, 1114135, 536870912, 3, 1114136, 536870912, 3, 1114137, 536870912, 3, 1114138, 536870912, 3, 1114139, 536870912, 3, 1114140, 536870912, 3, 1114141, 536870912, 3, 1114142, 536870912, 3, 1114143, 536870912, 3, 1114144, 536870912, 3, 1114145, 536870912, 3, 1114146, 536870912, 3, 1114147, 536870912, 3, 1114148, 536870912, 3, 1114149, 536870912, 3, 1114150, 536870912, 3, 1114151, 536870912, 3, 1114152, 536870912, 3, 1114153, 536870912, 3, 1114154, 536870912, 3, 1114155, 536870912, 3, 1114156, 536870912, 3, 1114157, 536870912, 3, 1114158, 536870912, 3, 1114159, 536870912, 3, 1114160, 536870912, 3, 1114161, 536870912, 3, 1114162, 536870912, 3, 1114163, 536870912, 3, 1114164, 536870912, 3, 1114165, 536870912, 3, 1114166, 536870912, 3, 1114167, 536870912, 3, 1114168, 536870912, 3, 1114169, 536870912, 3, 1114170, 536870912, 3, 1114171, 536870912, 3, 1114172, 536870912, 3, 1114173, 536870912, 3, 1114174, 536870912, 3, 1114175, 536870912, 3, 1114176, 536870912, 3, 1114177, 536870912, 3, 1114178, 536870912, 3, 1114179, 536870912, 3, 1114180, 536870912, 3, 1114181, 536870912, 3, 1114182, 536870912, 3, 1114183, 536870912, 3, 1114184, 536870912, 3, 1114185, 536870912, 3, 1114186, 536870912, 3, 1114187, 536870912, 3, 1114188, 536870912, 3, 1114189, 536870912, 3, 1114190, 536870912, 3, 1114191, 536870912, 3, 1114192, 536870912, 3, 1114193, 536870912, 3, 1114194, 536870912, 3, 1114195, 536870912, 3, 1114196, 536870912, 3, 1114197, 536870912, 3, 1114198, 536870912, 3, 1114199, 536870912, 3, 1114200, 536870912, 3, 1114201, 536870912, 3, 1114202, 536870912, 3, 1114203, 536870912, 3, 1114204, 536870912, 3, 1114205, 536870912, 3, 1114206, 536870912, 3, 1114207, 536870912, 3, 1179666, 536870912, 3, 1179667, 0, 3, 1179668, 536870912, 3, 1179669, 536870912, 3, 1179670, 536870912, 3, 1179671, 536870912, 3, 1179672, 536870912, 3, 1179673, 536870912, 3, 1179674, 536870912, 3, 1179675, 536870912, 3, 1179676, 536870912, 3, 1179677, 536870912, 3, 1179678, 536870912, 3, 1179679, 536870912, 3, 1179680, 536870912, 3, 1179681, 536870912, 3, 1179682, 536870912, 3, 1179683, 536870912, 3, 1179684, 536870912, 3, 1179685, 536870912, 3, 1179686, 536870912, 3, 1179687, 536870912, 3, 1179688, 536870912, 3, 1179689, 536870912, 3, 1179690, 536870912, 3, 1179691, 536870912, 3, 1179692, 536870912, 3, 1179693, 536870912, 3, 1179694, 536870912, 3, 1179695, 536870912, 3, 1179696, 536870912, 3, 1179697, 536870912, 3, 1179698, 536870912, 3, 1179699, 536870912, 3, 1179700, 536870912, 3, 1179701, 536870912, 3, 1179702, 536870912, 3, 1179703, 536870912, 3, 1179704, 536870912, 3, 1179705, 536870912, 3, 1179706, 536870912, 3, 1179707, 536870912, 3, 1179708, 536870912, 3, 1179709, 536870912, 3, 1179710, 536870912, 3, 1179711, 536870912, 3, 1179712, 536870912, 3, 1179713, 536870912, 3, 1179714, 536870912, 3, 1179715, 536870912, 3, 1179716, 536870912, 3, 1179717, 536870912, 3, 1179718, 536870912, 3, 1179719, 536870912, 3, 1179720, 536870912, 3, 1179721, 536870912, 3, 1179722, 536870912, 3, 1179723, 536870912, 3, 1179724, 536870912, 3, 1179725, 536870912, 3, 1179726, 536870912, 3, 1179727, 536870912, 3, 1179728, 536870912, 3, 1179729, 536870912, 3, 1179730, 536870912, 3, 1179731, 536870912, 3, 1179732, 536870912, 3, 1179733, 536870912, 3, 1179734, 536870912, 3, 1179735, 536870912, 3, 1179736, 536870912, 3, 1179737, 536870912, 3, 1179738, 0, 2, 1179739, 0, 2, 1179740, 0, 2, 1179741, 0, 2, 1179742, 0, 2, 1179743, 536870912, 3, 1245202, 536870912, 3, 1245203, 536870912, 3, 1245204, 536870912, 3, 1245205, 536870912, 3, 1245206, 536870912, 3, 1245207, 536870912, 3, 1245208, 536870912, 3, 1245209, 536870912, 3, 1245210, 536870912, 3, 1245211, 536870912, 3, 1245212, 536870912, 3, 1245213, 536870912, 3, 1245214, 536870912, 3, 1245215, 536870912, 3, 1245216, 536870912, 3, 1245217, 536870912, 3, 1245218, 536870912, 3, 1245219, 536870912, 3, 1245220, 536870912, 3, 1245221, 536870912, 3, 1245222, 536870912, 3, 1245223, 536870912, 3, 1245224, 536870912, 3, 1245225, 536870912, 3, 1245226, 536870912, 3, 1245227, 536870912, 3, 1245228, 536870912, 3, 1245229, 536870912, 3, 1245230, 536870912, 3, 1245231, 536870912, 3, 1245232, 536870912, 3, 1245233, 536870912, 3, 1245234, 536870912, 3, 1245235, 536870912, 3, 1245236, 536870912, 3, 1245237, 536870912, 3, 1245238, 536870912, 3, 1245239, 536870912, 3, 1245240, 536870912, 3, 1245241, 536870912, 3, 1245242, 536870912, 3, 1245243, 536870912, 3, 1245244, 536870912, 3, 1245245, 536870912, 3, 1245246, 536870912, 3, 1245247, 536870912, 3, 1245248, 536870912, 3, 1245249, 536870912, 3, 1245250, 536870912, 3, 1245251, 536870912, 3, 1245252, 536870912, 3, 1245253, 536870912, 3, 1245254, 536870912, 3, 1245255, 536870912, 3, 1245256, 536870912, 3, 1245257, 536870912, 3, 1245258, 536870912, 3, 1245259, 536870912, 3, 1245260, 536870912, 3, 1245261, 536870912, 3, 1245262, 536870912, 3, 1245263, 536870912, 3, 1245264, 536870912, 3, 1245265, 536870912, 3, 1245266, 536870912, 3, 1245267, 536870912, 3, 1245268, 536870912, 3, 1245269, 536870912, 3, 1245270, 536870912, 3, 1245271, 536870912, 3, 1245272, 536870912, 3, 1245273, 0, 2, 1245274, 0, 2, 1245275, 0, 2, 1245276, 0, 2, 1245277, 0, 2, 1245278, 0, 2, 1245279, 536870912, 3, 1310738, 536870912, 3, 1310739, 536870912, 3, 1310740, 536870912, 3, 1310741, 536870912, 3, 1310742, 536870912, 3, 1310743, 536870912, 3, 1310744, 536870912, 3, 1310745, 536870912, 3, 1310746, 536870912, 3, 1310747, 536870912, 3, 1310748, 536870912, 3, 1310749, 536870912, 3, 1310750, 536870912, 3, 1310751, 536870912, 3, 1310752, 536870912, 3, 1310753, 536870912, 3, 1310754, 536870912, 3, 1310755, 536870912, 3, 1310756, 536870912, 3, 1310757, 536870912, 3, 1310758, 536870912, 3, 1310759, 536870912, 3, 1310760, 536870912, 3, 1310761, 536870912, 3, 1310762, 536870912, 3, 1310763, 536870912, 3, 1310764, 536870912, 3, 1310765, 536870912, 3, 1310766, 536870912, 3, 1310767, 536870912, 3, 1310768, 536870912, 3, 1310769, 536870912, 3, 1310770, 536870912, 3, 1310771, 536870912, 3, 1310772, 536870912, 3, 1310773, 536870912, 3, 1310774, 536870912, 3, 1310775, 536870912, 3, 1310776, 536870912, 3, 1310777, 536870912, 3, 1310778, 536870912, 3, 1310779, 536870912, 3, 1310780, 536870912, 3, 1310781, 536870912, 3, 1310782, 536870912, 3, 1310783, 536870912, 3, 1310784, 536870912, 3, 1310785, 536870912, 3, 1310786, 536870912, 3, 1310787, 536870912, 3, 1310788, 536870912, 3, 1310789, 536870912, 3, 1310790, 536870912, 3, 1310791, 536870912, 3, 1310792, 536870912, 3, 1310793, 536870912, 3, 1310794, 536870912, 3, 1310795, 536870912, 3, 1310796, 536870912, 3, 1310797, 536870912, 3, 1310798, 536870912, 3, 1310799, 536870912, 3, 1310800, 536870912, 3, 1310801, 536870912, 3, 1310802, 536870912, 3, 1310803, 536870912, 3, 1310804, 536870912, 3, 1310805, 536870912, 3, 1310806, 536870912, 3, 1310807, 536870912, 3, 1310808, 536870912, 3, 1310809, 0, 2, 1310810, 0, 2, 1310811, 0, 2, 1310812, 0, 2, 1310813, 0, 2, 1310814, 0, 2, 1310815, 536870912, 3, 1376274, 0, 2, 1376275, 0, 2, 1376276, 0, 2, 1376277, 0, 2, 1376278, 0, 2, 1376279, 0, 2, 1376280, 0, 2, 1376281, 0, 2, 1376282, 0, 2, 1376283, 0, 2, 1376284, 0, 2, 1376285, 0, 2, 1376286, 0, 2, 1376287, 0, 2, 1441801, 0, 0, 1441802, 0, 0, 1441809, 0, 65536, 1441810, 0, 65537, 1441811, 0, 65536, 1441812, 0, 65537, 1441813, 0, 65536, 1441814, 0, 65537, 1441815, 0, 65536, 1441816, 0, 65537, 1441817, 0, 65536, 1441818, 0, 65537, 1441819, 0, 65536, 1441820, 0, 65537, 1441821, 0, 65536, 1441822, 0, 65537, 1441823, 0, 65536, 1507328, 0, 131074, 1507329, 0, 131074, 1507330, 0, 131074, 1507331, 0, 131074, 1507332, 0, 131074, 1507333, 0, 131074, 1507334, 0, 131074, 1507335, 0, 131074, 1507336, 0, 131074, 1507337, 0, 131074, 1507338, 0, 131074, 1507339, 0, 131074, 1507340, 0, 131074, 1507341, 0, 131074, 1507342, 0, 131074, 1507346, 0, 131074, 1507347, 0, 131074, 1507348, 0, 131074, 1507349, 0, 131074, 1507350, 0, 131074, 1507351, 0, 131074, 1507352, 0, 131074, 1507353, 0, 131074, 1507354, 0, 131074, 1507355, 0, 131074, 1507356, 0, 131074, 1507357, 0, 131074, 1507358, 0, 131074, 1507359, 0, 131074 ) __meta__ = { "_edit_lock_": true } -[node name="Ground" type="TileMap" parent="."] +[node name="Graffiti" type="Node2D" parent="."] +script = ExtResource( 24 ) + +[node name="Msx" type="Sprite" parent="Graffiti"] +position = Vector2( 289, 118 ) +texture = ExtResource( 27 ) + +[node name="TgirlsRule" type="Sprite" parent="Graffiti"] +position = Vector2( 585, 60 ) +texture = ExtResource( 26 ) + +[node name="MsxWasHere" type="Sprite" parent="Graffiti"] +position = Vector2( 732, 70 ) +texture = ExtResource( 28 ) + +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 16 ) tile_set = ExtResource( 3 ) cell_size = Vector2( 8, 8 ) collision_layer = 9 format = 1 -tile_data = PoolIntArray( -65485, 1, 196609, -65484, 1, 196610, -65483, 1, 196610, -65482, 1, 196611, -65480, 1, 196609, -65479, 1, 196611, -65476, 1, 196608, 63, 1, 1, 64, 1, 3, 65599, 1, 65537, 65600, 1, 65539, 131135, 1, 65537, 131136, 1, 65539, 131168, 1, 196608, 196625, 0, 131072, 196626, 0, 131073, 196627, 0, 131073, 196628, 0, 131073, 196629, 0, 131073, 196630, 0, 131073, 196631, 0, 131073, 196642, 0, 131073, 196643, 0, 131073, 196644, 0, 131073, 196645, 0, 131073, 196646, 0, 131073, 196647, 0, 131073, 196648, 0, 131073, 196649, 0, 131073, 196650, 0, 131073, 196651, 0, 131073, 196652, 0, 131073, 196653, 0, 131073, 196654, 0, 131073, 196655, 0, 131073, 196656, 0, 131073, 196657, 0, 131073, 196658, 0, 131073, 196659, 0, 131073, 196662, 0, 131073, 196663, 0, 131073, 196666, 0, 131073, 196667, 0, 131073, 196671, 1, 65537, 196672, 1, 65539, 196673, 0, 131073, 196676, 0, 131073, 196677, 0, 131073, 196678, 0, 131073, 196679, 0, 131073, 196680, 0, 131073, 196681, 0, 131073, 196682, 0, 131073, 196683, 0, 131073, 196684, 0, 131073, 196685, 0, 131073, 196686, 0, 131073, 196687, 0, 131073, 196688, 0, 131073, 196689, 0, 131073, 196690, 0, 131073, 196691, 0, 131073, 196692, 0, 131073, 196698, 0, 131073, 196699, 0, 131073, 196700, 0, 131073, 196701, 0, 131073, 196702, 0, 131073, 196703, 0, 131073, 262162, 1, 1, 262163, 1, 196610, 262164, 1, 196610, 262165, 1, 196610, 262166, 1, 196610, 262167, 1, 196611, 262178, 1, 196609, 262179, 1, 196610, 262180, 1, 196610, 262181, 1, 196610, 262182, 1, 196610, 262183, 1, 196610, 262184, 1, 196610, 262185, 1, 196610, 262186, 1, 196610, 262187, 1, 196610, 262188, 1, 196610, 262189, 1, 196610, 262190, 1, 196610, 262191, 1, 196610, 262192, 1, 196610, 262193, 1, 196610, 262194, 1, 196610, 262195, 1, 196611, 262198, 1, 196609, 262199, 1, 196611, 262202, 1, 196609, 262203, 1, 196611, 262207, 1, 131073, 262208, 1, 131074, 262209, 1, 196611, 262212, 1, 196609, 262213, 1, 196610, 262214, 1, 196610, 262215, 1, 196610, 262216, 1, 196610, 262217, 1, 196610, 262218, 1, 196610, 262219, 1, 196610, 262220, 1, 196610, 262221, 1, 196610, 262222, 1, 196610, 262223, 1, 196610, 262224, 1, 196610, 262225, 1, 196610, 262226, 1, 196610, 262227, 1, 196610, 262228, 1, 196611, 262234, 1, 196609, 262235, 1, 196610, 262236, 1, 196610, 262237, 1, 196610, 262238, 1, 196610, 262239, 1, 3, 327693, 1, 196609, 327694, 1, 196610, 327695, 1, 196611, 327698, 1, 65536, 327767, 1, 0, 327775, 1, 65536, 393234, 1, 65536, 393302, 1, 1, 393303, 1, 131075, 393311, 1, 65536, 458770, 1, 65536, 458813, 1, 196609, 458814, 1, 196610, 458815, 1, 2, 458816, 1, 196610, 458817, 1, 196610, 458818, 1, 196610, 458819, 1, 196610, 458820, 1, 3, 458830, 1, 196609, 458831, 1, 196610, 458832, 1, 196610, 458833, 1, 196610, 458834, 1, 196610, 458835, 1, 196610, 458836, 1, 2, 458837, 1, 196610, 458838, 1, 131075, 458847, 1, 65536, 524306, 1, 65537, 524307, 536870913, 196610, 524308, 536870913, 196610, 524309, 536870913, 196610, 524310, 536870913, 196610, 524311, 536870913, 196610, 524312, 536870913, 196610, 524313, 536870913, 196610, 524314, 536870913, 196610, 524315, 1, 196611, 524324, 1, 196609, 524325, 1, 196610, 524326, 1, 196610, 524327, 1, 196610, 524328, 1, 196610, 524329, 1, 196610, 524330, 1, 196610, 524331, 1, 196610, 524332, 1, 196610, 524333, 1, 196610, 524334, 1, 196610, 524335, 1, 2, 524336, 1, 196610, 524337, 1, 196610, 524338, 1, 196611, 524351, 1, 65536, 524356, 1, 65536, 524365, 1, 196608, 524372, 1, 131072, 524383, 1, 65536, 589842, 1, 65536, 589871, 1, 65536, 589878, 1, 196609, 589879, 1, 196611, 589881, 1, 196609, 589882, 1, 196611, 589887, 1, 65536, 589892, 1, 65536, 589919, 1, 65536, 655368, 1, 196609, 655369, 1, 196610, 655370, 1, 196610, 655371, 1, 196610, 655372, 1, 196610, 655373, 1, 196611, 655378, 1, 65536, 655391, 1, 196609, 655392, 1, 196610, 655393, 1, 196611, 655407, 1, 65536, 655423, 1, 65536, 655428, 1, 131073, 655429, 1, 196610, 655430, 1, 2, 655431, 1, 196610, 655432, 1, 196610, 655433, 1, 196610, 655434, 1, 196610, 655435, 1, 196610, 655436, 1, 196611, 655444, 1, 0, 655455, 1, 65536, 720914, 1, 65536, 720943, 1, 65536, 720949, 1, 1, 720950, 1, 196610, 720951, 1, 196610, 720952, 1, 196610, 720953, 1, 196610, 720954, 1, 196610, 720955, 1, 3, 720959, 1, 65536, 720966, 1, 65536, 720978, 1, 196609, 720979, 1, 196610, 720980, 1, 65539, 720991, 1, 65536, 786450, 1, 65536, 786468, 1, 196609, 786469, 1, 196611, 786475, 1, 196609, 786476, 1, 196610, 786477, 1, 196611, 786479, 1, 131072, 786485, 1, 65536, 786491, 1, 65536, 786495, 1, 65536, 786499, 1, 196608, 786502, 1, 65536, 786511, 1, 196608, 786516, 1, 65537, 786517, 1, 196611, 786520, 1, 196609, 786521, 1, 196611, 786527, 1, 65536, 851986, 1, 65537, 851987, 1, 196610, 851988, 1, 196610, 851989, 1, 196611, 852008, 1, 196608, 852017, 1, 196609, 852018, 1, 196611, 852021, 1, 131072, 852027, 1, 65536, 852030, 1, 196609, 852031, 1, 65539, 852038, 1, 131072, 852052, 1, 65536, 852063, 1, 65536, 917522, 1, 65536, 917563, 1, 65536, 917567, 1, 131072, 917580, 1, 0, 917583, 1, 0, 917588, 1, 65536, 917596, 1, 196609, 917597, 1, 196610, 917598, 1, 196610, 917599, 1, 65539, 983047, 1, 196609, 983048, 1, 196610, 983049, 536870913, 196610, 983050, 536870913, 196610, 983051, 536870913, 196610, 983052, 536870913, 196610, 983053, 536870913, 196610, 983054, 536870913, 196610, 983055, 536870913, 196610, 983056, 536870913, 196610, 983057, 1, 196610, 983058, 1, 65539, 983063, 1, 196609, 983064, 1, 196610, 983065, 1, 196611, 983099, 1, 65537, 983100, 1, 196611, 983114, 1, 0, 983116, 1, 65536, 983119, 1, 65536, 983124, 1, 65536, 983135, 1, 65536, 1048594, 1, 65536, 1048635, 1, 65536, 1048650, 1, 131073, 1048651, 1, 196610, 1048652, 1, 131074, 1048653, 1, 196610, 1048654, 1, 196610, 1048655, 1, 131075, 1048660, 1, 131072, 1048671, 1, 65536, 1114117, 1, 196609, 1114118, 1, 196611, 1114130, 1, 131072, 1114140, 1, 196609, 1114141, 1, 196610, 1114142, 1, 196610, 1114143, 1, 196610, 1114144, 1, 196610, 1114145, 1, 196610, 1114146, 1, 196610, 1114147, 1, 196610, 1114148, 1, 196610, 1114149, 1, 196610, 1114150, 1, 196610, 1114151, 1, 196610, 1114152, 1, 196610, 1114153, 1, 196611, 1114157, 1, 196609, 1114158, 1, 196610, 1114159, 1, 196610, 1114160, 1, 196610, 1114161, 1, 196610, 1114162, 1, 196611, 1114164, 1, 196609, 1114165, 1, 196610, 1114166, 1, 196610, 1114167, 1, 196610, 1114168, 1, 196610, 1114169, 1, 196610, 1114170, 1, 196610, 1114171, 1, 131074, 1114172, 1, 196610, 1114173, 1, 196610, 1114174, 1, 196610, 1114175, 1, 196610, 1114176, 1, 196610, 1114177, 1, 196610, 1114178, 1, 196610, 1114179, 1, 196610, 1114180, 1, 196610, 1114181, 1, 196610, 1114182, 1, 196611, 1114201, 1, 1, 1114202, 1, 196610, 1114203, 1, 196610, 1114204, 1, 196610, 1114205, 1, 196610, 1114206, 1, 196610, 1114207, 1, 65539, 1179737, 1, 131072, 1179743, 1, 65536, 1245184, 1, 196609, 1245185, 1, 196611, 1245279, 1, 65536, 1310815, 1, 65536, 1376269, 0, 65538, 1376270, 0, 65539, 1376271, 1, 1, 1376272, 1, 2, 1376273, 1, 2, 1376274, 1, 2, 1376275, 1, 2, 1376276, 536870913, 2, 1376277, 536870913, 2, 1376278, 536870913, 2, 1376279, 536870913, 2, 1376280, 1, 2, 1376281, 1, 2, 1376282, 536870913, 2, 1376283, 1, 2, 1376284, 1, 2, 1376285, 1, 2, 1376286, 1, 2, 1376287, 1, 2, 1376288, 1, 2, 1376289, 1, 2, 1376290, 1, 2, 1376291, 1, 2, 1376292, 1, 2, 1376293, 1, 2, 1376294, 1, 2, 1376295, 1, 2, 1376296, 1, 2, 1376297, 1, 2, 1376298, 1, 2, 1376299, 1, 2, 1376300, 1, 2, 1376301, 1, 2, 1376302, 1, 2, 1376303, 1, 2, 1376304, 1, 2, 1376305, 1, 2, 1376306, 1, 2, 1376307, 1, 2, 1376308, 1, 2, 1376309, 1, 2, 1376310, 1, 2, 1376311, 1, 2, 1376312, 1, 2, 1376313, 1, 2, 1376314, 1, 2, 1376315, 1, 2, 1376316, 1, 2, 1376317, 1, 2, 1376318, 1, 2, 1376319, 1, 2, 1376320, 1, 2, 1376321, 1, 2, 1376322, 1, 2, 1376323, 1, 2, 1376324, 1, 2, 1376325, 1, 2, 1376326, 1, 2, 1376327, 1, 2, 1376328, 1, 2, 1376329, 1, 2, 1376330, 1, 2, 1376331, 1, 2, 1376332, 1, 2, 1376333, 1, 2, 1376334, 1, 2, 1376335, 1, 2, 1376336, 1, 2, 1376337, 1, 2, 1376338, 1, 2, 1376339, 1, 2, 1376340, 1, 2, 1376341, 1, 2, 1376342, 1, 2, 1376343, 1, 2, 1376344, 1, 2, 1376345, 1, 2, 1376346, 1, 2, 1376347, 1, 2, 1376348, 1, 2, 1376349, 1, 2, 1376350, 1, 2, 1376351, 1, 65539, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 1, 1, 1441806, 1, 2, 1441807, 1, 65538, 1441808, 1, 65538, 1441809, 1, 65538, 1441810, 1, 65538, 1441811, 1, 65538, 1441812, 536870913, 65538, 1441813, 536870913, 65538, 1441814, 536870913, 65538, 1441815, 536870913, 65538, 1441816, 1, 65538, 1441817, 1, 65538, 1441818, 536870913, 65538, 1441819, 1, 65538, 1441820, 1, 65538, 1441821, 1, 65538, 1441822, 1, 65538, 1441823, 1, 65538, 1441824, 1, 65538, 1441825, 1, 65538, 1441826, 1, 65538, 1441827, 1, 65538, 1441828, 1, 65538, 1441829, 1, 65538, 1441830, 1, 65538, 1441831, 1, 65538, 1441832, 1, 65538, 1441833, 1, 65538, 1441834, 1, 65538, 1441835, 1, 65538, 1441836, 1, 65538, 1441837, 1, 65538, 1441838, 1, 65538, 1441839, 1, 65538, 1441840, 1, 65538, 1441841, 1, 65538, 1441842, 1, 65538, 1441843, 1, 65538, 1441844, 1, 65538, 1441845, 1, 65538, 1441846, 1, 65538, 1441847, 1, 65538, 1441848, 1, 65538, 1441849, 1, 65538, 1441850, 1, 65538, 1441851, 1, 65538, 1441852, 1, 65538, 1441853, 1, 65538, 1441854, 1, 65538, 1441855, 1, 65538, 1441856, 1, 65538, 1441857, 1, 65538, 1441858, 1, 65538, 1441859, 1, 65538, 1441860, 1, 65538, 1441861, 1, 65538, 1441862, 1, 65538, 1441863, 1, 65538, 1441864, 1, 65538, 1441865, 1, 65538, 1441866, 1, 65538, 1441867, 1, 65538, 1441868, 1, 65538, 1441869, 1, 65538, 1441870, 1, 65538, 1441871, 1, 65538, 1441872, 1, 65538, 1441873, 1, 65538, 1441874, 1, 65538, 1441875, 1, 65538, 1441876, 1, 65538, 1441877, 1, 65538, 1441878, 1, 65538, 1441879, 1, 65538, 1441880, 1, 65538, 1441881, 1, 65538, 1441882, 1, 65538, 1441883, 1, 65538, 1441884, 1, 65538, 1441885, 1, 65538, 1441886, 1, 65538, 1441887, 1, 65539, 1507328, 536870913, 196609, 1507329, 536870913, 196610, 1507330, 536870913, 196610, 1507331, 536870913, 196610, 1507332, 536870913, 196610, 1507333, 536870913, 196610, 1507334, 536870913, 196610, 1507335, 536870913, 196610, 1507336, 536870913, 196610, 1507337, 536870913, 196610, 1507338, 536870913, 196610, 1507339, 536870913, 196610, 1507340, 536870913, 196610, 1507341, 536870913, 131074, 1507342, 536870913, 131074, 1507343, 1, 131074, 1507344, 1, 131074, 1507345, 1, 131074, 1507346, 1, 131074, 1507347, 536870913, 131074, 1507348, 536870913, 131074, 1507349, 536870913, 131074, 1507350, 536870913, 131074, 1507351, 536870913, 131074, 1507352, 536870913, 131074, 1507353, 536870913, 131074, 1507354, 536870913, 131074, 1507355, 536870913, 131074, 1507356, 1, 131074, 1507357, 1, 131074, 1507358, 1, 131074, 1507359, 1, 131074, 1507360, 1, 131074, 1507361, 1, 131074, 1507362, 1, 131074, 1507363, 1, 131074, 1507364, 1, 131074, 1507365, 1, 131074, 1507366, 1, 131074, 1507367, 1, 131074, 1507368, 1, 131074, 1507369, 1, 131074, 1507370, 1, 131074, 1507371, 1, 131074, 1507372, 1, 131074, 1507373, 1, 131074, 1507374, 1, 131074, 1507375, 1, 131074, 1507376, 1, 131074, 1507377, 1, 131074, 1507378, 1, 131074, 1507379, 1, 131074, 1507380, 1, 131074, 1507381, 1, 131074, 1507382, 1, 131074, 1507383, 1, 131074, 1507384, 1, 131074, 1507385, 1, 131074, 1507386, 1, 131074, 1507387, 1, 131074, 1507388, 1, 131074, 1507389, 1, 131074, 1507390, 1, 131074, 1507391, 1, 131074, 1507392, 1, 131074, 1507393, 1, 131074, 1507394, 1, 131074, 1507395, 1, 131074, 1507396, 1, 131074, 1507397, 1, 131074, 1507398, 1, 131074, 1507399, 1, 131074, 1507400, 1, 131074, 1507401, 1, 131074, 1507402, 1, 131074, 1507403, 1, 131074, 1507404, 1, 131074, 1507405, 1, 131074, 1507406, 1, 131074, 1507407, 1, 131074, 1507408, 1, 131074, 1507409, 1, 131074, 1507410, 1, 131074, 1507411, 1, 131074, 1507412, 1, 131074, 1507413, 1, 131074, 1507414, 1, 131074, 1507415, 1, 131074, 1507416, 1, 131074, 1507417, 1, 131074, 1507418, 1, 131074, 1507419, 1, 131074, 1507420, 1, 131074, 1507421, 1, 131074, 1507422, 1, 131074, 1507423, 1, 131075 ) +tile_data = PoolIntArray( -65485, 1, 196609, -65484, 1, 196610, -65483, 1, 196610, -65482, 1, 196611, -65480, 1, 196609, -65479, 1, 196611, -65476, 1, 196608, 63, 1, 1, 64, 1, 3, 65599, 1, 65537, 65600, 1, 65539, 131135, 1, 65537, 131136, 1, 65539, 131168, 1, 196608, 196625, 0, 131072, 196626, 0, 131073, 196627, 0, 131073, 196628, 0, 131073, 196629, 0, 131073, 196630, 0, 131073, 196631, 0, 131073, 196642, 0, 131073, 196643, 0, 131073, 196644, 0, 131073, 196645, 0, 131073, 196646, 0, 131073, 196647, 0, 131073, 196648, 0, 131073, 196649, 0, 131073, 196650, 0, 131073, 196651, 0, 131073, 196652, 0, 131073, 196653, 0, 131073, 196654, 0, 131073, 196655, 0, 131073, 196656, 0, 131073, 196657, 0, 131073, 196658, 0, 131073, 196659, 0, 131073, 196662, 0, 131073, 196663, 0, 131073, 196666, 0, 131073, 196667, 0, 131073, 196671, 1, 65537, 196672, 1, 65539, 196673, 0, 131073, 196676, 0, 131073, 196677, 0, 131073, 196678, 0, 131073, 196679, 0, 131073, 196680, 0, 131073, 196681, 0, 131073, 196682, 0, 131073, 196683, 0, 131073, 196684, 0, 131073, 196685, 0, 131073, 196686, 0, 131073, 196687, 0, 131073, 196688, 0, 131073, 196689, 0, 131073, 196690, 0, 131073, 196691, 0, 131073, 196692, 0, 131073, 196698, 0, 131073, 196699, 0, 131073, 196700, 0, 131073, 196701, 0, 131073, 196702, 0, 131073, 196703, 0, 131073, 262162, 1, 1, 262163, 1, 196610, 262164, 1, 196610, 262165, 1, 196610, 262166, 1, 196610, 262167, 1, 196611, 262178, 1, 196609, 262179, 1, 196610, 262180, 1, 196610, 262181, 1, 196610, 262182, 1, 196610, 262183, 1, 196610, 262184, 1, 196610, 262185, 1, 196610, 262186, 1, 196610, 262187, 1, 196610, 262188, 1, 196610, 262189, 1, 196610, 262190, 1, 196610, 262191, 1, 196610, 262192, 1, 196610, 262193, 1, 196610, 262194, 1, 196610, 262195, 1, 196611, 262198, 1, 196609, 262199, 1, 196611, 262202, 1, 196609, 262203, 1, 196611, 262207, 1, 131073, 262208, 1, 131074, 262209, 1, 196611, 262212, 1, 196609, 262213, 1, 196610, 262214, 1, 196610, 262215, 1, 196610, 262216, 1, 196610, 262217, 1, 196610, 262218, 1, 196610, 262219, 1, 196610, 262220, 1, 196610, 262221, 1, 196610, 262222, 1, 196610, 262223, 1, 196610, 262224, 1, 196610, 262225, 1, 196610, 262226, 1, 196610, 262227, 1, 196610, 262228, 1, 196611, 262234, 1, 196609, 262235, 1, 196610, 262236, 1, 196610, 262237, 1, 196610, 262238, 1, 196610, 262239, 1, 3, 327693, 1, 196609, 327694, 1, 196610, 327695, 1, 196611, 327698, 1, 65536, 327767, 1, 0, 327775, 1, 65536, 393234, 1, 65536, 393302, 1, 1, 393303, 1, 131075, 393311, 1, 65536, 458770, 1, 65536, 458813, 1, 196609, 458814, 1, 196610, 458815, 1, 2, 458816, 1, 196610, 458817, 1, 196610, 458818, 1, 196610, 458819, 1, 196610, 458820, 1, 3, 458830, 1, 196609, 458831, 1, 196610, 458832, 1, 196610, 458833, 1, 196610, 458834, 1, 196610, 458835, 1, 196610, 458836, 1, 2, 458837, 1, 196610, 458838, 1, 131075, 458847, 1, 65536, 524306, 1, 65537, 524307, 536870913, 196610, 524308, 536870913, 196610, 524309, 536870913, 196610, 524310, 536870913, 196610, 524311, 536870913, 196610, 524312, 536870913, 196610, 524313, 536870913, 196610, 524314, 536870913, 196610, 524315, 1, 196611, 524324, 1, 196609, 524325, 1, 196610, 524326, 1, 196610, 524327, 1, 196610, 524328, 1, 196610, 524329, 1, 196610, 524330, 1, 196610, 524331, 1, 196610, 524332, 1, 196610, 524333, 1, 196610, 524334, 1, 196610, 524335, 1, 2, 524336, 1, 196610, 524337, 1, 196610, 524338, 1, 196611, 524351, 1, 65536, 524356, 1, 65537, 524357, 1, 3, 524365, 1, 196608, 524372, 1, 131072, 524383, 1, 65536, 589842, 1, 65536, 589871, 1, 65536, 589878, 1, 196609, 589879, 1, 196611, 589881, 1, 196609, 589882, 1, 196611, 589887, 1, 65536, 589892, 1, 65537, 589893, 1, 65538, 589894, 1, 3, 589919, 1, 65536, 655368, 1, 196609, 655369, 1, 196610, 655370, 1, 196610, 655371, 1, 196610, 655372, 1, 196610, 655373, 1, 196611, 655378, 1, 65536, 655391, 1, 196609, 655392, 1, 196610, 655393, 1, 196611, 655407, 1, 65536, 655423, 1, 65536, 655428, 1, 131073, 655429, 1, 131074, 655430, 1, 65538, 655431, 1, 196610, 655432, 1, 196610, 655433, 1, 196610, 655434, 1, 196610, 655435, 1, 196610, 655436, 1, 196611, 655444, 1, 0, 655455, 1, 65536, 720914, 1, 65536, 720943, 1, 65536, 720949, 1, 1, 720950, 1, 196610, 720951, 1, 196610, 720952, 1, 196610, 720953, 1, 196610, 720954, 1, 196610, 720955, 1, 3, 720959, 1, 65536, 720966, 1, 65536, 720978, 1, 196609, 720979, 1, 196610, 720980, 1, 65539, 720991, 1, 65536, 786450, 1, 65536, 786468, 1, 196609, 786469, 1, 196611, 786475, 1, 196609, 786476, 1, 196610, 786477, 1, 196611, 786479, 1, 131072, 786485, 1, 65536, 786491, 1, 65536, 786495, 1, 65536, 786499, 1, 196608, 786502, 1, 65536, 786511, 1, 196608, 786516, 1, 65537, 786517, 1, 196611, 786520, 1, 196609, 786521, 1, 196611, 786527, 1, 65536, 851986, 1, 65537, 851987, 1, 196610, 851988, 1, 196610, 851989, 1, 196611, 852008, 1, 196608, 852017, 1, 196609, 852018, 1, 196611, 852021, 1, 131072, 852027, 1, 65536, 852030, 1, 196609, 852031, 1, 65539, 852038, 1, 131072, 852052, 1, 65536, 852059, 1, 196609, 852060, 1, 196611, 852063, 1, 65536, 917522, 1, 65536, 917563, 1, 65536, 917567, 1, 131072, 917580, 1, 0, 917583, 1, 0, 917588, 1, 65536, 917598, 1, 1, 917599, 1, 65539, 983047, 1, 196609, 983048, 1, 196610, 983049, 536870913, 196610, 983050, 536870913, 196610, 983051, 536870913, 196610, 983052, 536870913, 196610, 983053, 536870913, 196610, 983054, 536870913, 196610, 983055, 536870913, 196610, 983056, 536870913, 196610, 983057, 1, 196610, 983058, 1, 65539, 983063, 1, 196609, 983064, 1, 196610, 983065, 1, 196611, 983099, 1, 65537, 983100, 1, 196611, 983114, 1, 0, 983116, 1, 65536, 983119, 1, 65536, 983124, 1, 65536, 983134, 1, 65537, 983135, 1, 65539, 1048594, 1, 65536, 1048635, 1, 65536, 1048650, 1, 131073, 1048651, 1, 196610, 1048652, 1, 131074, 1048653, 1, 196610, 1048654, 1, 196610, 1048655, 1, 131075, 1048660, 1, 131072, 1048669, 1, 1, 1048670, 1, 65538, 1048671, 1, 65539, 1114117, 1, 196609, 1114118, 1, 196611, 1114130, 1, 131072, 1114142, 1, 1, 1114143, 1, 196610, 1114144, 1, 196610, 1114145, 1, 196610, 1114146, 1, 196610, 1114147, 1, 196610, 1114148, 1, 196610, 1114149, 1, 196610, 1114150, 1, 196610, 1114151, 1, 196610, 1114152, 1, 196610, 1114153, 1, 196611, 1114157, 1, 196609, 1114158, 1, 196610, 1114159, 1, 196610, 1114160, 1, 196610, 1114161, 1, 196610, 1114162, 1, 196611, 1114164, 1, 196609, 1114165, 1, 196610, 1114166, 1, 196610, 1114167, 1, 196610, 1114168, 1, 196610, 1114169, 1, 196610, 1114170, 1, 196610, 1114171, 1, 131074, 1114172, 1, 196610, 1114173, 1, 196610, 1114174, 1, 196610, 1114175, 1, 196610, 1114176, 1, 196610, 1114177, 1, 196610, 1114178, 1, 196610, 1114179, 1, 196610, 1114180, 1, 196610, 1114181, 1, 196610, 1114182, 1, 196611, 1114201, 1, 1, 1114202, 1, 196610, 1114203, 1, 196610, 1114204, 1, 196610, 1114205, 1, 131074, 1114206, 1, 131074, 1114207, 1, 65539, 1179676, 1, 196609, 1179677, 1, 196610, 1179678, 1, 131075, 1179737, 1, 131072, 1179743, 1, 65536, 1245184, 1, 196609, 1245185, 1, 196611, 1245279, 1, 65536, 1310815, 1, 65536, 1376269, 0, 65538, 1376270, 0, 65539, 1376271, 1, 1, 1376272, 1, 2, 1376273, 1, 2, 1376274, 1, 2, 1376275, 1, 2, 1376276, 536870913, 2, 1376277, 536870913, 2, 1376278, 536870913, 2, 1376279, 536870913, 2, 1376280, 1, 2, 1376281, 1, 2, 1376282, 536870913, 2, 1376283, 1, 2, 1376284, 1, 2, 1376285, 1, 2, 1376286, 1, 2, 1376287, 1, 2, 1376288, 1, 2, 1376289, 1, 2, 1376290, 1, 2, 1376291, 1, 2, 1376292, 1, 2, 1376293, 1, 2, 1376294, 1, 2, 1376295, 1, 2, 1376296, 1, 2, 1376297, 1, 2, 1376298, 1, 2, 1376299, 1, 2, 1376300, 1, 2, 1376301, 1, 2, 1376302, 1, 2, 1376303, 1, 2, 1376304, 1, 2, 1376305, 1, 2, 1376306, 1, 2, 1376307, 1, 2, 1376308, 1, 2, 1376309, 1, 2, 1376310, 1, 2, 1376311, 1, 2, 1376312, 1, 2, 1376313, 1, 2, 1376314, 1, 2, 1376315, 1, 2, 1376316, 1, 2, 1376317, 1, 2, 1376318, 1, 2, 1376319, 1, 2, 1376320, 1, 2, 1376321, 1, 2, 1376322, 1, 2, 1376323, 1, 2, 1376324, 1, 2, 1376325, 1, 2, 1376326, 1, 2, 1376327, 1, 2, 1376328, 1, 2, 1376329, 1, 2, 1376330, 1, 2, 1376331, 1, 2, 1376332, 1, 2, 1376333, 1, 2, 1376334, 1, 2, 1376335, 1, 2, 1376336, 1, 2, 1376337, 1, 2, 1376338, 1, 2, 1376339, 1, 2, 1376340, 1, 2, 1376341, 1, 2, 1376342, 1, 2, 1376343, 1, 2, 1376344, 1, 2, 1376345, 1, 2, 1376346, 1, 2, 1376347, 1, 2, 1376348, 1, 2, 1376349, 1, 2, 1376350, 1, 2, 1376351, 1, 65539, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 1, 1, 1441806, 1, 2, 1441807, 1, 65538, 1441808, 1, 65538, 1441809, 1, 65538, 1441810, 1, 65538, 1441811, 1, 65538, 1441812, 536870913, 65538, 1441813, 536870913, 65538, 1441814, 536870913, 65538, 1441815, 536870913, 65538, 1441816, 1, 65538, 1441817, 1, 65538, 1441818, 536870913, 65538, 1441819, 1, 65538, 1441820, 1, 65538, 1441821, 1, 65538, 1441822, 1, 65538, 1441823, 1, 65538, 1441824, 1, 65538, 1441825, 1, 65538, 1441826, 1, 65538, 1441827, 1, 65538, 1441828, 1, 65538, 1441829, 1, 65538, 1441830, 1, 65538, 1441831, 1, 65538, 1441832, 1, 65538, 1441833, 1, 65538, 1441834, 1, 65538, 1441835, 1, 65538, 1441836, 1, 65538, 1441837, 1, 65538, 1441838, 1, 65538, 1441839, 1, 65538, 1441840, 1, 65538, 1441841, 1, 65538, 1441842, 1, 65538, 1441843, 1, 65538, 1441844, 1, 65538, 1441845, 1, 65538, 1441846, 1, 65538, 1441847, 1, 65538, 1441848, 1, 65538, 1441849, 1, 65538, 1441850, 1, 65538, 1441851, 1, 65538, 1441852, 1, 65538, 1441853, 1, 65538, 1441854, 1, 65538, 1441855, 1, 65538, 1441856, 1, 65538, 1441857, 1, 65538, 1441858, 1, 65538, 1441859, 1, 65538, 1441860, 1, 65538, 1441861, 1, 65538, 1441862, 1, 65538, 1441863, 1, 65538, 1441864, 1, 65538, 1441865, 1, 65538, 1441866, 1, 65538, 1441867, 1, 65538, 1441868, 1, 65538, 1441869, 1, 65538, 1441870, 1, 65538, 1441871, 1, 65538, 1441872, 1, 65538, 1441873, 1, 65538, 1441874, 1, 65538, 1441875, 1, 65538, 1441876, 1, 65538, 1441877, 1, 65538, 1441878, 1, 65538, 1441879, 1, 65538, 1441880, 1, 65538, 1441881, 1, 65538, 1441882, 1, 65538, 1441883, 1, 65538, 1441884, 1, 65538, 1441885, 1, 65538, 1441886, 1, 65538, 1441887, 1, 65539, 1507328, 536870913, 196609, 1507329, 536870913, 196610, 1507330, 536870913, 196610, 1507331, 536870913, 196610, 1507332, 536870913, 196610, 1507333, 536870913, 196610, 1507334, 536870913, 196610, 1507335, 536870913, 196610, 1507336, 536870913, 196610, 1507337, 1, 196610, 1507338, 1, 196610, 1507339, 536870913, 196610, 1507340, 536870913, 196610, 1507341, 536870913, 131074, 1507342, 536870913, 131074, 1507343, 1, 131074, 1507344, 1, 131074, 1507345, 1, 131074, 1507346, 1, 131074, 1507347, 536870913, 131074, 1507348, 536870913, 131074, 1507349, 536870913, 131074, 1507350, 536870913, 131074, 1507351, 536870913, 131074, 1507352, 536870913, 131074, 1507353, 536870913, 131074, 1507354, 536870913, 131074, 1507355, 536870913, 131074, 1507356, 1, 131074, 1507357, 1, 131074, 1507358, 1, 131074, 1507359, 1, 131074, 1507360, 1, 131074, 1507361, 1, 131074, 1507362, 1, 131074, 1507363, 1, 131074, 1507364, 1, 131074, 1507365, 1, 131074, 1507366, 1, 131074, 1507367, 1, 131074, 1507368, 1, 131074, 1507369, 1, 131074, 1507370, 1, 131074, 1507371, 1, 131074, 1507372, 1, 131074, 1507373, 1, 131074, 1507374, 1, 131074, 1507375, 1, 131074, 1507376, 1, 131074, 1507377, 1, 131074, 1507378, 1, 131074, 1507379, 1, 131074, 1507380, 1, 131074, 1507381, 1, 131074, 1507382, 1, 131074, 1507383, 1, 131074, 1507384, 1, 131074, 1507385, 1, 131074, 1507386, 1, 131074, 1507387, 1, 131074, 1507388, 1, 131074, 1507389, 1, 131074, 1507390, 1, 131074, 1507391, 1, 131074, 1507392, 1, 131074, 1507393, 1, 131074, 1507394, 1, 131074, 1507395, 1, 131074, 1507396, 1, 131074, 1507397, 1, 131074, 1507398, 1, 131074, 1507399, 1, 131074, 1507400, 1, 131074, 1507401, 1, 131074, 1507402, 1, 131074, 1507403, 1, 131074, 1507404, 1, 131074, 1507405, 1, 131074, 1507406, 1, 131074, 1507407, 1, 131074, 1507408, 1, 131074, 1507409, 1, 131074, 1507410, 1, 131074, 1507411, 1, 131074, 1507412, 1, 131074, 1507413, 1, 131074, 1507414, 1, 131074, 1507415, 1, 131074, 1507416, 1, 131074, 1507417, 1, 131074, 1507418, 1, 131074, 1507419, 1, 131074, 1507420, 1, 131074, 1507421, 1, 131074, 1507422, 1, 131074, 1507423, 1, 131075 ) + +[node name="OccludeMsx" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 16 ) +z_index = 10 +z_as_relative = false +tile_set = ExtResource( 3 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 1441801, 0, 0, 1441802, 0, 0, 1507337, 1, 196610, 1507338, 1, 196610 ) [node name="Player" parent="." instance=ExtResource( 2 )] position = Vector2( 40, 176 ) @@ -67,11 +126,10 @@ position = Vector2( 40, 176 ) tile_set = ExtResource( 14 ) cell_size = Vector2( 8, 8 ) format = 1 -tile_data = PoolIntArray( 393226, 536870912, 196609, 458762, 536870912, 196609, 524298, 536870912, 196609, 589834, 536870912, 196609, 589853, 536870912, 196609, 655376, 0, 196609, 655389, 536870912, 196609, 720912, 0, 196609, 720925, 536870912, 196609, 786448, 0, 196609, 786461, 536870912, 196609, 851984, 0, 196609, 1048603, 0, 196609, 1048648, 0, 196609, 1114139, 0, 196609, 1114155, 0, 196609, 1114184, 0, 196609, 1179651, 536870912, 196609, 1179675, 0, 196609, 1179691, 0, 196609, 1179720, 0, 196609, 1245187, 536870912, 196609 ) +tile_data = PoolIntArray( 393226, 536870912, 196609, 458762, 536870912, 196609, 524298, 536870912, 196609, 589834, 536870912, 196609, 589853, 536870912, 196609, 655376, 0, 196609, 655389, 536870912, 196609, 720912, 0, 196609, 720925, 536870912, 196609, 786448, 0, 196609, 786461, 536870912, 196609, 851984, 0, 196609, 1048648, 0, 196609, 1114155, 0, 196609, 1114184, 0, 196609, 1179651, 536870912, 196609, 1179675, 0, 196609, 1179691, 0, 196609, 1179720, 0, 196609, 1245187, 536870912, 196609 ) [node name="Exit" parent="." instance=ExtResource( 5 )] position = Vector2( 8, 164 ) -z_index = 0 cost = 25 [node name="Enemies" type="Node2D" parent="."] @@ -87,7 +145,7 @@ position = Vector2( 136, 160 ) scale = Vector2( -1, 1 ) turn_time = inf -[node name="Cop3" parent="Enemies" instance=ExtResource( 10 )] +[node name="OfficerRabbitPCoaster" parent="Enemies" instance=ExtResource( 10 )] position = Vector2( 200, 112 ) turn_time = inf @@ -203,8 +261,8 @@ position = Vector2( 232, 72 ) scale = Vector2( 1, 4 ) [node name="Ladder5" parent="Environment" instance=ExtResource( 7 )] -position = Vector2( 216, 128 ) -scale = Vector2( 1, 3 ) +position = Vector2( 216, 144 ) +can_climb_right = false [node name="Ladder7" parent="Environment" instance=ExtResource( 7 )] position = Vector2( 344, 136 ) @@ -217,34 +275,35 @@ scale = Vector2( 1, 4 ) [node name="TurningPlatform" parent="Environment" instance=ExtResource( 17 )] position = Vector2( 696, 144 ) time = 20.0 - -[node name="TurningPlatform2" parent="Environment" instance=ExtResource( 17 )] -position = Vector2( 720, 120 ) -time = 20.0 +texture = ExtResource( 34 ) [node name="TurningPlatform3" parent="Environment" instance=ExtResource( 17 )] position = Vector2( 40, 72 ) time = 20.0 +texture = ExtResource( 34 ) [node name="TurningPlatform6" parent="Environment" instance=ExtResource( 17 )] position = Vector2( 520, 112 ) time = 40.0 +texture = ExtResource( 34 ) [node name="TurningPlatform8" parent="Environment" instance=ExtResource( 17 )] position = Vector2( 488, 32 ) time = 50.0 +texture = ExtResource( 34 ) [node name="TurningPlatform4" parent="Environment" instance=ExtResource( 17 )] position = Vector2( 16, 56 ) time = 20.0 delay = 1.0 +texture = ExtResource( 34 ) [node name="JailBars" parent="Environment" groups=["cell"] instance=ExtResource( 21 )] position = Vector2( 712, 152 ) scale = Vector2( 1, 2 ) [node name="Button" parent="Environment" instance=ExtResource( 18 )] -position = Vector2( 688, 160 ) +position = Vector2( 736, 128 ) target_group = "cell" [node name="Button2" parent="Environment" instance=ExtResource( 18 )] @@ -252,14 +311,23 @@ position = Vector2( 312, 19 ) target_group = "yellow_star_laser" [node name="MsX" parent="Environment" groups=["cell"] instance=ExtResource( 22 )] -position = Vector2( 740, 158 ) -scale = Vector2( -1, 1 ) +position = Vector2( 744, 158 ) +hatch = NodePath("../Hatch/HatchAnim") [node name="Barrier" parent="Environment" instance=ExtResource( 23 )] position = Vector2( 424, 112 ) scale = Vector2( 1, 24 ) cost = 40 +[node name="Hatch" type="Sprite" parent="Environment"] +position = Vector2( 82, 171 ) +z_index = -2 +texture = ExtResource( 33 ) +hframes = 3 + +[node name="HatchAnim" type="AnimationPlayer" parent="Environment/Hatch"] +anims/open = SubResource( 2 ) + [node name="Collectibles" type="Node2D" parent="."] [node name="Star" parent="Collectibles" instance=ExtResource( 11 )] @@ -368,7 +436,7 @@ position = Vector2( 464, 64 ) position = Vector2( 520, 160 ) [node name="Gold31" parent="Collectibles" instance=ExtResource( 20 )] -position = Vector2( 552, 72 ) +position = Vector2( 560, 64 ) [node name="Gold40" parent="Collectibles" instance=ExtResource( 20 )] position = Vector2( 592, 112 ) @@ -492,3 +560,24 @@ __meta__ = { [node name="HUD" parent="." instance=ExtResource( 12 )] song_name = "♫Spine_V2" + +[node name="Label" type="Label" parent="."] +material = ExtResource( 31 ) +margin_left = 636.0 +margin_top = 198.0 +margin_right = 797.0 +margin_bottom = 221.0 +theme = ExtResource( 32 ) +text = "Help me get +outta here!" + +[node name="SpeccyDetection" type="VisibilityNotifier2D" parent="."] +position = Vector2( 384, 136 ) +rect = Rect2( -10, -20, 20, 20 ) + +[node name="Speccy" parent="SpeccyDetection" instance=ExtResource( 35 )] +flip = true +message = "kill_em_all" + +[connection signal="screen_entered" from="SpeccyDetection" to="SpeccyDetection/Speccy" method="appear"] +[connection signal="screen_exited" from="SpeccyDetection" to="SpeccyDetection" method="queue_free"] diff --git a/maps/test_room.tscn b/maps/test_room.tscn index d91f727..48d9571 100644 --- a/maps/test_room.tscn +++ b/maps/test_room.tscn @@ -1,28 +1,33 @@ -[gd_scene load_steps=28 format=2] +[gd_scene load_steps=33 format=2] -[ext_resource path="res://tilesets/t_cave.tres" type="TileSet" id=2] +[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=1] +[ext_resource path="res://objects/npc/speccy.tscn" type="PackedScene" id=2] [ext_resource path="res://tilesets/t_mountain.tres" type="TileSet" id=3] [ext_resource path="res://objects/hud/hud.tscn" type="PackedScene" id=4] -[ext_resource path="res://tilesets/t_death.tres" type="TileSet" id=5] -[ext_resource path="res://objects/Camera2D.tscn" type="PackedScene" id=6] +[ext_resource path="res://objects/enemy/roboturret.tscn" type="PackedScene" id=5] +[ext_resource path="res://objects/environment/moving_platform/moving_platform.tscn" type="PackedScene" id=6] [ext_resource path="res://graphics/backgrounds/canopy.png" type="Texture" id=7] -[ext_resource path="res://objects/environment/rock/rock.tscn" type="PackedScene" id=9] +[ext_resource path="res://objects/environment/collapse_block/collapse_block.tscn" type="PackedScene" id=8] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=9] [ext_resource path="res://objects/enemy/slime.tscn" type="PackedScene" id=10] [ext_resource path="res://maps/map.gd" type="Script" id=11] [ext_resource path="res://objects/environment/turniwood/turning_platform.tscn" type="PackedScene" id=12] [ext_resource path="res://objects/collectibles/arrow.tscn" type="PackedScene" id=13] -[ext_resource path="res://objects/environment/hatch/hatch.tscn" type="PackedScene" id=14] -[ext_resource path="res://objects/npc/msx.tscn" type="PackedScene" id=15] +[ext_resource path="res://objects/enemy/super_slime.tscn" type="PackedScene" id=14] +[ext_resource path="res://audio/music/BBBBBBBB.ogg" type="AudioStream" id=15] [ext_resource path="res://objects/respawn_point.tscn" type="PackedScene" id=16] [ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=17] +[ext_resource path="res://objects/environment/stalactite/stalactite.tscn" type="PackedScene" id=18] [ext_resource path="res://objects/environment/switches/button.tscn" type="PackedScene" id=19] [ext_resource path="res://objects/enemy/tin.tscn" type="PackedScene" id=20] [ext_resource path="res://graphics/enemy/sawblade.png" type="Texture" id=21] [ext_resource path="res://objects/enemy/rolling_fiend.tscn" type="PackedScene" id=22] [ext_resource path="res://objects/enemy/steam.tscn" type="PackedScene" id=23] +[ext_resource path="res://objects/environment/falling_block/falling_block_cave.tscn" type="PackedScene" id=24] [ext_resource path="res://objects/enemy/cop.tscn" type="PackedScene" id=25] [ext_resource path="res://objects/environment/turret/turret_bullet.tscn" type="PackedScene" id=26] -[ext_resource path="res://objects/player/player_scholar.tscn" type="PackedScene" id=27] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=27] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=28] [sub_resource type="ShaderMaterial" id=4] shader = ExtResource( 17 ) @@ -45,13 +50,12 @@ animations = [ { "speed": 20.0 } ] -[node name="Map2" type="Node2D" groups=["map"]] +[node name="Map3" type="Node2D" groups=["map"]] +pause_mode = 1 script = ExtResource( 11 ) +music = ExtResource( 15 ) -[node name="Camera2D" parent="." instance=ExtResource( 6 )] -current = false - -[node name="Sprite" type="Sprite" parent="Camera2D"] +[node name="Sprite" type="Sprite" parent="."] position = Vector2( 128, 96 ) z_index = -50 texture = ExtResource( 7 ) @@ -61,15 +65,14 @@ __meta__ = { [node name="CanvasLayer" parent="." instance=ExtResource( 4 )] -[node name="Ground" type="TileMap" parent="."] +[node name="Ground" type="TileMap" parent="." groups=["can_stain"]] +light_mask = 3 +material = ExtResource( 9 ) tile_set = ExtResource( 3 ) cell_size = Vector2( 8, 8 ) collision_layer = 9 format = 1 -tile_data = PoolIntArray( 196630, 1, 0, 262166, 1, 0, 327702, 1, 0, 393238, 1, 0, 458774, 1, 0, 524310, 1, 0, 589846, 1, 0, 655382, 1, 0, 655388, 0, 196609, 983062, 0, 65537, 983063, 0, 65537, 983064, 0, 65537, 983065, 0, 65537, 983066, 0, 65537, 983067, 0, 65537, 983068, 0, 65537, 983069, 0, 65537, 1048579, 0, 65537, 1048580, 0, 65537, 1048581, 0, 65537, 1048582, 0, 65537, 1048583, 0, 65537, 1048594, 0, 65537, 1048595, 0, 65537, 1048596, 0, 65537, 1048597, 0, 65537, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441799, 0, 0, 1441800, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441816, 0, 0, 1441817, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1507328, 0, 1, 1507329, 0, 1, 1507330, 0, 1, 1507331, 0, 1, 1507332, 0, 1, 1507333, 0, 1, 1507334, 0, 1, 1507335, 0, 1, 1507336, 0, 1, 1507337, 0, 1, 1507338, 0, 1, 1507339, 0, 1, 1507340, 0, 1, 1507341, 0, 1, 1507342, 0, 1, 1507343, 0, 1, 1507344, 0, 1, 1507345, 0, 1, 1507346, 0, 1, 1507347, 0, 1, 1507348, 0, 1, 1507349, 0, 1, 1507350, 0, 1, 1507351, 0, 1, 1507352, 0, 1, 1507353, 0, 1, 1507354, 0, 1, 1507355, 0, 1, 1507356, 0, 1, 1507357, 0, 1, 1507358, 0, 1, 1507359, 0, 1 ) - -[node name="Rock" parent="." instance=ExtResource( 9 )] -position = Vector2( 152, 120 ) +tile_data = PoolIntArray( 196630, 1, 0, 262166, 1, 0, 327702, 1, 0, 393238, 1, 0, 458774, 1, 0, 524310, 1, 0, 589839, 0, 0, 589840, 0, 0, 589841, 0, 0, 589842, 0, 0, 589843, 0, 0, 589844, 0, 0, 589845, 0, 0, 589846, 1, 0, 655382, 1, 0, 655388, 0, 196609, 983062, 0, 0, 983063, 0, 0, 983064, 0, 0, 983065, 0, 0, 983066, 0, 0, 983067, 0, 0, 983068, 0, 0, 983069, 0, 0, 1048579, 0, 65537, 1048580, 0, 65537, 1048581, 0, 65537, 1048582, 0, 65537, 1048583, 0, 65537, 1441792, 0, 0, 1441793, 0, 0, 1441794, 0, 0, 1441795, 0, 0, 1441796, 0, 0, 1441797, 0, 0, 1441798, 0, 0, 1441801, 0, 0, 1441802, 0, 0, 1441803, 0, 0, 1441804, 0, 0, 1441805, 0, 0, 1441806, 0, 0, 1441807, 0, 0, 1441808, 0, 0, 1441809, 0, 0, 1441810, 0, 0, 1441811, 0, 0, 1441812, 0, 0, 1441813, 0, 0, 1441814, 0, 0, 1441815, 0, 0, 1441818, 0, 0, 1441819, 0, 0, 1441820, 0, 0, 1441821, 0, 0, 1441822, 0, 0, 1441823, 0, 0, 1507328, 0, 1, 1507329, 0, 1, 1507330, 0, 1, 1507331, 0, 1, 1507332, 0, 1, 1507333, 0, 1, 1507334, 0, 1, 1507337, 0, 1, 1507338, 0, 1, 1507339, 0, 1, 1507340, 0, 1, 1507341, 0, 1, 1507342, 0, 1, 1507343, 0, 1, 1507344, 0, 1, 1507345, 0, 1, 1507346, 0, 1, 1507347, 0, 1, 1507348, 0, 1, 1507349, 0, 1, 1507350, 0, 1, 1507351, 0, 1, 1507354, 0, 1, 1507355, 0, 1, 1507356, 0, 1, 1507357, 0, 1, 1507358, 0, 1, 1507359, 0, 1 ) [node name="Slime" parent="." instance=ExtResource( 10 )] position = Vector2( 264, 168 ) @@ -81,18 +84,12 @@ position = Vector2( 264, 160 ) position = Vector2( 104, 120 ) [node name="Ladder" type="TileMap" parent="."] -tile_set = ExtResource( 2 ) +tile_set = ExtResource( 28 ) cell_size = Vector2( 8, 8 ) collision_layer = 9 format = 1 tile_data = PoolIntArray( 1114117, 0, 196610, 1179653, 0, 196608, 1245189, 0, 196608, 1310725, 0, 196608, 1376261, 0, 196609 ) -[node name="Death" type="TileMap" parent="."] -visible = false -tile_set = ExtResource( 5 ) -cell_size = Vector2( 8, 8 ) -format = 1 - [node name="Turniwood5" parent="." instance=ExtResource( 12 )] position = Vector2( 80, 120 ) @@ -120,18 +117,11 @@ position = Vector2( 32, 72 ) up_boundary = 3.0 down_boundary = 3.0 -[node name="Tin3" parent="." instance=ExtResource( 20 )] -position = Vector2( 96, 72 ) -up_boundary = 3.0 -down_boundary = 3.0 -move_direction = 1 - [node name="RollingFiend" parent="." instance=ExtResource( 22 )] position = Vector2( 48, 120 ) [node name="AnimatedSprite" parent="RollingFiend" index="0"] visible = false -frame = 0 [node name="SawTest2" type="AnimatedSprite" parent="RollingFiend"] material = SubResource( 4 ) @@ -145,16 +135,9 @@ position = Vector2( 27, 128 ) [node name="StaticBody2D" type="StaticBody2D" parent="."] -[node name="Hatch" parent="." instance=ExtResource( 14 )] -position = Vector2( 40, 120 ) - [node name="Button" parent="." instance=ExtResource( 19 )] position = Vector2( 16, 168 ) -target_group = "a" - -[node name="MsX" parent="." groups=["a"] instance=ExtResource( 15 )] -position = Vector2( 240, 160 ) -scale = Vector2( -1, 1 ) +target_group = "speccy" [node name="Cop" parent="." instance=ExtResource( 25 )] position = Vector2( 184, 112 ) @@ -164,6 +147,63 @@ turn_time = inf position = Vector2( 152, 72 ) [node name="Player2" parent="." instance=ExtResource( 27 )] -position = Vector2( 112, 176 ) +position = Vector2( 128, 72 ) + +[node name="MovingPlatform" parent="." instance=ExtResource( 6 )] +position = Vector2( 96, 144 ) +scale = Vector2( 2, 1 ) +left_up_boundary = 4.0 +right_down_boundary = 4.0 +move_direction = 1 + +[node name="CollapseBlock" parent="." instance=ExtResource( 8 )] +position = Vector2( 136, 128 ) + +[node name="CollapseBlock2" parent="." instance=ExtResource( 8 )] +position = Vector2( 144, 128 ) + +[node name="CollapseBlock3" parent="." instance=ExtResource( 8 )] +position = Vector2( 152, 128 ) + +[node name="MovingPlatform2" parent="." instance=ExtResource( 6 )] +position = Vector2( 208, 64 ) +scale = Vector2( 2, 1 ) +left_up_boundary = 6.0 +right_down_boundary = 6.0 +move_direction = 1 + +[node name="Roboturret" parent="MovingPlatform2" instance=ExtResource( 5 )] +position = Vector2( -1.5, 12 ) +scale = Vector2( 0.5, -1 ) + +[node name="Death" type="TileMap" parent="." groups=["death"]] +tile_set = ExtResource( 1 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 1441799, 10, 0, 1441800, 10, 0, 1441816, 0, 0, 1441817, 0, 0, 1507335, 11, 0, 1507336, 11, 0, 1507352, 3, 0, 1507353, 3, 0 ) + +[node name="Death2" type="TileMap" parent="." groups=["death"]] +tile_set = ExtResource( 1 ) +cell_size = Vector2( 8, 8 ) +collision_layer = 32 +format = 1 +tile_data = PoolIntArray( 1179655, 12, 0, 1179656, 12, 0, 1179672, 12, 0, 1179673, 12, 0 ) + +[node name="SuperSlime" parent="." instance=ExtResource( 14 )] +position = Vector2( 119, 168 ) +left_boundary = 3.0 +right_boundary = 3.0 +bottom_jumps = [ -2.0 ] +top_jumps = [ 3.0 ] + +[node name="Stalactite" parent="." instance=ExtResource( 18 )] +position = Vector2( 144, 24 ) + +[node name="FallingBlock" parent="." instance=ExtResource( 24 )] +position = Vector2( 124, 96 ) + +[node name="speccy" parent="." groups=["speccy"] instance=ExtResource( 2 )] +position = Vector2( 82, 72 ) [editable path="RollingFiend"] diff --git a/menus/Button.gd b/menus/Button.gd new file mode 100644 index 0000000..fd75304 --- /dev/null +++ b/menus/Button.gd @@ -0,0 +1,7 @@ +extends Button + + +# Declare member variables here. Examples: +# var a = 2 +# var b = "text" + diff --git a/menus/DeleteButton.gd b/menus/DeleteButton.gd new file mode 100644 index 0000000..4af4968 --- /dev/null +++ b/menus/DeleteButton.gd @@ -0,0 +1,14 @@ +extends TextureButton + +onready var sprite = $AnimatedSprite + +func _process(delta): + if has_focus(): + sprite.playing = true + else: + sprite.playing = false + sprite.frame = 0 + +func _gui_input(event): + if event.is_action_pressed("ui_accept"): + get_parent().set_kill_mode(!get_parent().kill_mode) diff --git a/menus/back_button.gd b/menus/back_button.gd new file mode 100644 index 0000000..8b4fb33 --- /dev/null +++ b/menus/back_button.gd @@ -0,0 +1,23 @@ +extends TextureButton + +export var next_scene: PackedScene +onready var sprite = $AnimatedSprite + +func _process(delta): + if has_focus(): + sprite.playing = true + else: + sprite.playing = false + sprite.frame = 0 + +func _gui_input(event): + if event.is_action_pressed("ui_accept"): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = next_scene.instance() + +func _input(event): + if event.is_action_pressed("ui_cancel"): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = next_scene.instance() diff --git a/menus/back_button.tscn b/menus/back_button.tscn new file mode 100644 index 0000000..533d19f --- /dev/null +++ b/menus/back_button.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://graphics/hud/back.png" type="Texture" id=1] +[ext_resource path="res://graphics/hud/back_dim.png" type="Texture" id=2] +[ext_resource path="res://menus/back_button.gd" type="Script" id=3] + +[sub_resource type="Theme" id=1] + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 26, 33 ) + +[sub_resource type="SpriteFrames" id=3] +animations = [ { +"frames": [ SubResource( 2 ), ExtResource( 2 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[node name="Back" type="TextureButton"] +margin_right = 52.0 +margin_bottom = 33.0 +theme = SubResource( 1 ) +texture_normal = ExtResource( 1 ) +script = ExtResource( 3 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +position = Vector2( 13, 17 ) +frames = SubResource( 3 ) diff --git a/menus/bug_world.gd b/menus/bug_world.gd new file mode 100644 index 0000000..27f2102 --- /dev/null +++ b/menus/bug_world.gd @@ -0,0 +1,8 @@ +extends Node2D + + +func _ready() -> void: + Fade.fade_in(Options.transition_speed_secs) + +func _input(event): + Game.change_map(load("res://menus/level_select_scholar.tscn")) diff --git a/menus/bug_world.tscn b/menus/bug_world.tscn new file mode 100644 index 0000000..1cc1d6d --- /dev/null +++ b/menus/bug_world.tscn @@ -0,0 +1,227 @@ +[gd_scene load_steps=36 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://objects/hud/3d_text.tscn" type="PackedScene" id=2] +[ext_resource path="res://ui/PressStart2P-Regular.ttf" type="DynamicFontData" id=3] +[ext_resource path="res://graphics/sockbug/walk_strip6.png" type="Texture" id=4] +[ext_resource path="res://menus/sockbug.gd" type="Script" id=5] +[ext_resource path="res://objects/player/player_death_particles.tscn" type="PackedScene" id=6] +[ext_resource path="res://graphics/sockbug/fullturn_strip10.png" type="Texture" id=7] +[ext_resource path="res://graphics/player/wriggle.png" type="Texture" id=8] +[ext_resource path="res://audio/music/BBBBBBBB.ogg" type="AudioStream" id=9] +[ext_resource path="res://objects/enemy/antlion.tscn" type="PackedScene" id=10] +[ext_resource path="res://menus/bug_world.gd" type="Script" id=11] +[ext_resource path="res://ui/theme.tres" type="Theme" id=12] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=13] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 1, 1, 1, 1 ) +shader_param/color_2 = Color( 0.466667, 0.466667, 0.466667, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 32, 32 ) +shader_param/cycle_speed = Vector2( 0, 0 ) +shader_param/cycle_alternation = Vector2( 0, 0 ) +shader_param/uv_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) + +[sub_resource type="AtlasTexture" id=18] +atlas = ExtResource( 4 ) +region = Rect2( 0, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=19] +atlas = ExtResource( 4 ) +region = Rect2( 32, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=20] +atlas = ExtResource( 4 ) +region = Rect2( 64, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=21] +atlas = ExtResource( 4 ) +region = Rect2( 96, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=22] +atlas = ExtResource( 4 ) +region = Rect2( 128, 0, 32, 32 ) + +[sub_resource type="AtlasTexture" id=23] +atlas = ExtResource( 4 ) +region = Rect2( 160, 0, 32, 32 ) + +[sub_resource type="SpriteFrames" id=24] +animations = [ { +"frames": [ SubResource( 18 ), SubResource( 19 ), SubResource( 20 ), SubResource( 21 ), SubResource( 22 ), SubResource( 23 ) ], +"loop": true, +"name": "default", +"speed": 15.0 +} ] + +[sub_resource type="AtlasTexture" id=25] +atlas = ExtResource( 7 ) +region = Rect2( 0, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=26] +atlas = ExtResource( 7 ) +region = Rect2( 31, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=27] +atlas = ExtResource( 7 ) +region = Rect2( 62, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=28] +atlas = ExtResource( 7 ) +region = Rect2( 93, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=29] +atlas = ExtResource( 7 ) +region = Rect2( 124, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=30] +atlas = ExtResource( 7 ) +region = Rect2( 155, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=31] +atlas = ExtResource( 7 ) +region = Rect2( 186, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=32] +atlas = ExtResource( 7 ) +region = Rect2( 217, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=33] +atlas = ExtResource( 7 ) +region = Rect2( 248, 0, 31, 29 ) + +[sub_resource type="AtlasTexture" id=34] +atlas = ExtResource( 7 ) +region = Rect2( 279, 0, 31, 29 ) + +[sub_resource type="SpriteFrames" id=35] +animations = [ { +"frames": [ SubResource( 25 ), SubResource( 26 ), SubResource( 27 ), SubResource( 28 ), SubResource( 29 ), SubResource( 30 ), SubResource( 31 ), SubResource( 32 ), SubResource( 33 ), SubResource( 34 ) ], +"loop": true, +"name": "default", +"speed": 15.0 +} ] + +[sub_resource type="SpatialMaterial" id=16] +albedo_color = Color( 0.105882, 0.34902, 0.509804, 1 ) +metallic = 0.46 + +[sub_resource type="DynamicFont" id=8] +font_data = ExtResource( 3 ) + +[sub_resource type="TextMesh" id=17] +resource_local_to_scene = true +material = SubResource( 16 ) +text = "TEXT" +font = SubResource( 8 ) +pixel_size = 0.05 +depth = 0.1 + +[node name="BugWorld" type="Node2D"] +script = ExtResource( 11 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="Wriggle" type="Sprite" parent="."] +position = Vector2( 135, 143 ) +scale = Vector2( 3, 3 ) +texture = ExtResource( 8 ) + +[node name="Sockbug" type="AnimatedSprite" parent="."] +position = Vector2( 89, 149 ) +rotation = 0.785398 +frames = SubResource( 24 ) +frame = 3 +playing = true +script = ExtResource( 5 ) +speed = Vector2( 100, 100 ) + +[node name="Sockbug2" type="AnimatedSprite" parent="."] +position = Vector2( 78, 67 ) +rotation = 0.785398 +scale = Vector2( -1, 1 ) +frames = SubResource( 24 ) +frame = 3 +playing = true +script = ExtResource( 5 ) +speed = Vector2( -100, -100 ) + +[node name="Sockbug3" type="AnimatedSprite" parent="."] +position = Vector2( 181, 130 ) +rotation = -0.785398 +frames = SubResource( 24 ) +frame = 2 +playing = true +script = ExtResource( 5 ) +speed = Vector2( 100, -100 ) + +[node name="Sockbug4" type="AnimatedSprite" parent="."] +position = Vector2( 175, 22 ) +rotation = 0.785398 +scale = Vector2( -1, 1 ) +frames = SubResource( 24 ) +frame = 2 +playing = true +script = ExtResource( 5 ) +speed = Vector2( -100, -100 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +position = Vector2( 192, 92 ) +frames = SubResource( 35 ) +frame = 1 +playing = true + +[node name="AnimatedSprite2" type="AnimatedSprite" parent="."] +position = Vector2( 37, 107 ) +frames = SubResource( 35 ) +frame = 1 +playing = true + +[node name="AnimatedSprite3" type="AnimatedSprite" parent="."] +position = Vector2( 222, 166 ) +frames = SubResource( 35 ) +playing = true + +[node name="DeathSplatter" parent="." instance=ExtResource( 6 )] +position = Vector2( 126, 63 ) +emitting = true +lifetime = 2.0 +one_shot = false +speed_scale = 3.42 +explosiveness = 1.0 +texture = ExtResource( 8 ) +scale_amount = 1.0 + +[node name="3DText" parent="." instance=ExtResource( 2 )] +margin_top = -26.0 +margin_right = 256.0 +margin_bottom = 166.0 +text_material = SubResource( 16 ) +anim = "bug world" + +[node name="TextMesh" parent="3DText/Viewport" index="0"] +mesh = SubResource( 17 ) + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 9 ) +volume_db = -8.0 +autoplay = true + +[node name="Antlion" parent="." instance=ExtResource( 10 )] +position = Vector2( 38, 176 ) + +[node name="Label" type="Label" parent="."] +material = ExtResource( 13 ) +margin_left = 200.0 +margin_top = 56.0 +margin_right = 249.0 +margin_bottom = 70.0 +theme = ExtResource( 12 ) +text = "415LBUG" + +[editable path="3DText"] diff --git a/menus/cool.tscn b/menus/cool.tscn new file mode 100644 index 0000000..2ac0bd1 --- /dev/null +++ b/menus/cool.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.145098, 0.0823529, 0.0823529, 1 ) +shader_param/color_2 = Color( 1, 0, 0, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 8 ) +shader_param/cycle_speed = Vector2( -8, 0 ) +shader_param/cycle_alternation = Vector2( 0, 0 ) +shader_param/uv_transform = Transform2D( 1, 0, 1, 4, 0, 0 ) + +[node name="Node2D" type="Node2D"] + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 diff --git a/menus/credits.gd b/menus/credits.gd new file mode 100644 index 0000000..0afae6e --- /dev/null +++ b/menus/credits.gd @@ -0,0 +1,16 @@ +extends Node + + +func _notification(what: int) -> void: + match what: + NOTIFICATION_WM_FOCUS_OUT: + $AnimationPlayer.playback_active = false + Audio.ac_music.stream_paused = true + NOTIFICATION_WM_FOCUS_IN: + $AnimationPlayer.playback_active = true + Audio.ac_music.stream_paused = false + +func _ready(): + Fade.fade_in(Options.transition_speed_secs) + Audio.play_music(load("res://audio/music/rev83-wondering-now-short.ogg")) + $Control/Playername.text = str(Save.current_file.name) diff --git a/menus/credits.tscn b/menus/credits.tscn new file mode 100644 index 0000000..19d725c --- /dev/null +++ b/menus/credits.tscn @@ -0,0 +1,1514 @@ +[gd_scene load_steps=142 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=2] +[ext_resource path="res://graphics/hud/logo.png" type="Texture" id=3] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=4] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=5] +[ext_resource path="res://ui/theme.tres" type="Theme" id=6] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=7] +[ext_resource path="res://graphics/enemy/bat.png" type="Texture" id=8] +[ext_resource path="res://graphics/npc/msx_walk.png" type="Texture" id=9] +[ext_resource path="res://graphics/npc/fami_human_laugh.png" type="Texture" id=10] +[ext_resource path="res://graphics/npc/speccy_cool.png" type="Texture" id=11] +[ext_resource path="res://graphics/npc/intelli_idle.png" type="Texture" id=12] +[ext_resource path="res://ui/PressStart2P-Regular.ttf" type="DynamicFontData" id=13] +[ext_resource path="res://menus/credits.gd" type="Script" id=14] +[ext_resource path="res://graphics/enemy/snake.png" type="Texture" id=15] +[ext_resource path="res://scripts/sg_palette.gd" type="Script" id=16] +[ext_resource path="res://graphics/player/sg_stim.png" type="Texture" id=17] +[ext_resource path="res://graphics/enemy/pal_slime_purple.png" type="Texture" id=19] +[ext_resource path="res://graphics/enemy/slime.png" type="Texture" id=20] +[ext_resource path="res://graphics/enemy/spider.png" type="Texture" id=21] +[ext_resource path="res://graphics/enemy/skelarcher_shoot.png" type="Texture" id=22] +[ext_resource path="res://graphics/enemy/jumping_spider.png" type="Texture" id=23] +[ext_resource path="res://graphics/enemy/rolling_fiend.png" type="Texture" id=24] +[ext_resource path="res://graphics/enemy/boss/the_scrump.png" type="Texture" id=25] +[ext_resource path="res://shaders/wibble_border.gdshader" type="Shader" id=26] +[ext_resource path="res://graphics/enemy/snail.png" type="Texture" id=27] +[ext_resource path="res://graphics/enemy/tentacle.png" type="Texture" id=28] +[ext_resource path="res://graphics/enemy/eel_tail.png" type="Texture" id=29] +[ext_resource path="res://objects/enemy/fish.tscn" type="PackedScene" id=30] +[ext_resource path="res://graphics/enemy/eel_head.png" type="Texture" id=31] +[ext_resource path="res://graphics/enemy/eel_body.png" type="Texture" id=32] +[ext_resource path="res://graphics/enemy/squig.png" type="Texture" id=33] +[ext_resource path="res://graphics/enemy/turtle.png" type="Texture" id=34] +[ext_resource path="res://objects/enemy/artificial_soul.tscn" type="PackedScene" id=35] +[ext_resource path="res://graphics/enemy/hellarcher_shoot.png" type="Texture" id=36] +[ext_resource path="res://objects/enemy/boss/2600.tscn" type="PackedScene" id=37] +[ext_resource path="res://shaders/fade.gdshader" type="Shader" id=38] +[ext_resource path="res://objects/enemy/tin.tscn" type="PackedScene" id=39] +[ext_resource path="res://objects/enemy/roboturret.tscn" type="PackedScene" id=40] +[ext_resource path="res://graphics/enemy/cop/cop_walk.png" type="Texture" id=41] +[ext_resource path="res://graphics/npc/ivy.png" type="Texture" id=42] +[ext_resource path="res://graphics/npc/kiki_dog.png" type="Texture" id=43] +[ext_resource path="res://graphics/npc/penny.png" type="Texture" id=44] +[ext_resource path="res://graphics/npc/haze.png" type="Texture" id=45] +[ext_resource path="res://graphics/hud/speech_bubble.png" type="Texture" id=46] +[ext_resource path="res://objects/enemy/boss/famira.tscn" type="PackedScene" id=47] +[ext_resource path="res://graphics/hud/team_sg_logo.png" type="Texture" id=48] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) +shader_param/color_1 = Color( 1, 0.423529, 0.4, 1 ) +shader_param/color_2 = Color( 0.4, 0.52549, 1, 1 ) +shader_param/checker_size = Vector2( 32, 32 ) +shader_param/pan_speed = Vector2( 20, 21 ) +shader_param/cycle_speed = Vector2( 6, 3 ) +shader_param/cycle_alternation = Vector2( 6, 3 ) +shader_param/uv_transform = Transform2D( 1, -1, 1, 1, 0, 0 ) + +[sub_resource type="Animation" id=3] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Background:material:shader_param/color_1") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 0.423529, 0.4, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Background:material:shader_param/color_2") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.4, 0.52549, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Background:material:shader_param/uv_transform") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Transform2D( 1, -1, 1, 1, 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("CanvasLayer/Background:material:shader_param/color_1") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 0.423529, 0.4, 1 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("CanvasLayer/Background:material:shader_param/color_2") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.4, 0.52549, 1, 1 ) ] +} + +[sub_resource type="Animation" id=91] +resource_name = "rainbow" +length = 5.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("CanvasLayer/Background:material:shader_param/color_1") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1, 2, 3, 4, 5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 1, 0.423529, 0.4, 1 ), Color( 1, 0.894118, 0.4, 1 ), Color( 0.4, 1, 0.443137, 1 ), Color( 0.4, 0.52549, 1, 1 ), Color( 0.992157, 0.4, 1, 1 ), Color( 1, 0.423529, 0.4, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CanvasLayer/Background:material:shader_param/color_2") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1, 2, 3, 4, 5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.4, 1, 0.443137, 1 ), Color( 0.4, 0.52549, 1, 1 ), Color( 0.992157, 0.4, 1, 1 ), Color( 1, 0.423529, 0.4, 1 ), Color( 1, 0.894118, 0.4, 1 ), Color( 0.4, 1, 0.443137, 1 ) ] +} + +[sub_resource type="DynamicFont" id=92] +font_data = ExtResource( 13 ) + +[sub_resource type="Theme" id=93] +default_font = SubResource( 92 ) + +[sub_resource type="ShaderMaterial" id=7] +shader = ExtResource( 5 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true +shader_param/palette = ExtResource( 7 ) + +[sub_resource type="AtlasTexture" id=10] +atlas = ExtResource( 17 ) +region = Rect2( 0, 0, 20, 20 ) + +[sub_resource type="AtlasTexture" id=11] +atlas = ExtResource( 17 ) +region = Rect2( 20, 0, 20, 20 ) + +[sub_resource type="SpriteFrames" id=12] +animations = [ { +"frames": [ SubResource( 10 ), SubResource( 11 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="AtlasTexture" id=94] +atlas = ExtResource( 11 ) +region = Rect2( 0, 0, 24, 24 ) + +[sub_resource type="AtlasTexture" id=95] +atlas = ExtResource( 11 ) +region = Rect2( 24, 0, 24, 24 ) + +[sub_resource type="AtlasTexture" id=96] +atlas = ExtResource( 11 ) +region = Rect2( 72, 0, 24, 24 ) + +[sub_resource type="SpriteFrames" id=97] +animations = [ { +"frames": [ SubResource( 94 ), SubResource( 95 ), SubResource( 96 ), SubResource( 96 ), SubResource( 96 ), SubResource( 95 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="ShaderMaterial" id=8] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=14] +atlas = ExtResource( 9 ) +region = Rect2( 0, 0, 20, 20 ) + +[sub_resource type="AtlasTexture" id=15] +atlas = ExtResource( 9 ) +region = Rect2( 20, 0, 20, 20 ) + +[sub_resource type="AtlasTexture" id=16] +atlas = ExtResource( 9 ) +region = Rect2( 40, 0, 20, 20 ) + +[sub_resource type="AtlasTexture" id=17] +atlas = ExtResource( 9 ) +region = Rect2( 60, 0, 20, 20 ) + +[sub_resource type="SpriteFrames" id=18] +animations = [ { +"frames": [ SubResource( 14 ), SubResource( 15 ), SubResource( 16 ), SubResource( 17 ) ], +"loop": true, +"name": "default", +"speed": 10.0 +} ] + +[sub_resource type="AtlasTexture" id=98] +atlas = ExtResource( 10 ) +region = Rect2( 0, 0, 30, 30 ) + +[sub_resource type="AtlasTexture" id=99] +atlas = ExtResource( 10 ) +region = Rect2( 30, 0, 30, 30 ) + +[sub_resource type="SpriteFrames" id=100] +animations = [ { +"frames": [ SubResource( 98 ), SubResource( 99 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="ShaderMaterial" id=51] +shader = ExtResource( 26 ) +shader_param/speed = Vector2( 3, 1 ) +shader_param/ammount = Vector2( 3, 3 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) +shader_param/border_color = Color( 0.219608, 0.219608, 0.219608, 1 ) +shader_param/border_corners = true + +[sub_resource type="ShaderMaterial" id=13] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=19] +atlas = ExtResource( 15 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=20] +atlas = ExtResource( 15 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="SpriteFrames" id=21] +animations = [ { +"frames": [ SubResource( 19 ), SubResource( 20 ) ], +"loop": true, +"name": "default", +"speed": 7.0 +} ] + +[sub_resource type="AtlasTexture" id=22] +atlas = ExtResource( 8 ) +region = Rect2( 0, 0, 18, 10 ) + +[sub_resource type="AtlasTexture" id=23] +atlas = ExtResource( 8 ) +region = Rect2( 18, 0, 18, 10 ) + +[sub_resource type="SpriteFrames" id=24] +animations = [ { +"frames": [ SubResource( 22 ), SubResource( 23 ) ], +"loop": true, +"name": "default", +"speed": 8.0 +} ] + +[sub_resource type="AtlasTexture" id=25] +atlas = ExtResource( 25 ) +region = Rect2( 0, 0, 55, 64 ) + +[sub_resource type="AtlasTexture" id=26] +atlas = ExtResource( 25 ) +region = Rect2( 55, 0, 55, 64 ) + +[sub_resource type="SpriteFrames" id=27] +animations = [ { +"frames": [ SubResource( 25 ), SubResource( 26 ) ], +"loop": true, +"name": "default", +"speed": 10.0 +} ] + +[sub_resource type="AtlasTexture" id=28] +atlas = ExtResource( 24 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=29] +atlas = ExtResource( 24 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="SpriteFrames" id=30] +animations = [ { +"frames": [ SubResource( 28 ), SubResource( 29 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="AtlasTexture" id=31] +atlas = ExtResource( 23 ) +region = Rect2( 0, 0, 13, 12 ) + +[sub_resource type="AtlasTexture" id=32] +atlas = ExtResource( 23 ) +region = Rect2( 13, 0, 13, 12 ) + +[sub_resource type="SpriteFrames" id=33] +animations = [ { +"frames": [ SubResource( 31 ), SubResource( 32 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="ShaderMaterial" id=34] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=35] +atlas = ExtResource( 22 ) +region = Rect2( 0, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=36] +atlas = ExtResource( 22 ) +region = Rect2( 19, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=37] +atlas = ExtResource( 22 ) +region = Rect2( 38, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=38] +atlas = ExtResource( 22 ) +region = Rect2( 57, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=39] +atlas = ExtResource( 22 ) +region = Rect2( 76, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=40] +atlas = ExtResource( 22 ) +region = Rect2( 95, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=41] +atlas = ExtResource( 22 ) +region = Rect2( 114, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=42] +atlas = ExtResource( 22 ) +region = Rect2( 133, 0, 19, 20 ) + +[sub_resource type="SpriteFrames" id=43] +animations = [ { +"frames": [ SubResource( 35 ), SubResource( 36 ), SubResource( 37 ), SubResource( 38 ), SubResource( 39 ), SubResource( 40 ), SubResource( 41 ), SubResource( 42 ) ], +"loop": true, +"name": "default", +"speed": 10.0 +} ] + +[sub_resource type="AtlasTexture" id=44] +atlas = ExtResource( 21 ) +region = Rect2( 0, 0, 15, 14 ) + +[sub_resource type="AtlasTexture" id=45] +atlas = ExtResource( 21 ) +region = Rect2( 15, 0, 15, 14 ) + +[sub_resource type="SpriteFrames" id=46] +animations = [ { +"frames": [ SubResource( 44 ), SubResource( 45 ) ], +"loop": true, +"name": "default", +"speed": 7.0 +} ] + +[sub_resource type="ShaderMaterial" id=47] +shader = ExtResource( 5 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false +shader_param/palette = ExtResource( 19 ) + +[sub_resource type="AtlasTexture" id=48] +atlas = ExtResource( 20 ) +region = Rect2( 0, 0, 13, 13 ) + +[sub_resource type="AtlasTexture" id=49] +atlas = ExtResource( 20 ) +region = Rect2( 13, 0, 13, 13 ) + +[sub_resource type="SpriteFrames" id=50] +animations = [ { +"frames": [ SubResource( 48 ), SubResource( 49 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="AtlasTexture" id=52] +atlas = ExtResource( 27 ) +region = Rect2( 0, 0, 12, 11 ) + +[sub_resource type="AtlasTexture" id=53] +atlas = ExtResource( 27 ) +region = Rect2( 12, 0, 12, 11 ) + +[sub_resource type="SpriteFrames" id=54] +animations = [ { +"frames": [ SubResource( 52 ), SubResource( 53 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="AtlasTexture" id=55] +atlas = ExtResource( 28 ) +region = Rect2( 0, 0, 8, 24 ) + +[sub_resource type="AtlasTexture" id=56] +atlas = ExtResource( 28 ) +region = Rect2( 8, 0, 8, 24 ) + +[sub_resource type="SpriteFrames" id=57] +animations = [ { +"frames": [ SubResource( 55 ), SubResource( 56 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="AtlasTexture" id=63] +atlas = ExtResource( 33 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=64] +atlas = ExtResource( 33 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="SpriteFrames" id=65] +animations = [ { +"frames": [ SubResource( 63 ), SubResource( 64 ) ], +"loop": true, +"name": "default", +"speed": 7.0 +} ] + +[sub_resource type="ShaderMaterial" id=71] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=72] +atlas = ExtResource( 36 ) +region = Rect2( 0, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=73] +atlas = ExtResource( 36 ) +region = Rect2( 19, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=74] +atlas = ExtResource( 36 ) +region = Rect2( 38, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=75] +atlas = ExtResource( 36 ) +region = Rect2( 57, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=76] +atlas = ExtResource( 36 ) +region = Rect2( 76, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=77] +atlas = ExtResource( 36 ) +region = Rect2( 95, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=78] +atlas = ExtResource( 36 ) +region = Rect2( 114, 0, 19, 20 ) + +[sub_resource type="AtlasTexture" id=79] +atlas = ExtResource( 36 ) +region = Rect2( 133, 0, 19, 20 ) + +[sub_resource type="SpriteFrames" id=80] +animations = [ { +"frames": [ SubResource( 72 ), SubResource( 73 ), SubResource( 74 ), SubResource( 75 ), SubResource( 76 ), SubResource( 77 ), SubResource( 78 ), SubResource( 79 ) ], +"loop": true, +"name": "default", +"speed": 10.0 +} ] + +[sub_resource type="ShaderMaterial" id=66] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=67] +atlas = ExtResource( 34 ) +region = Rect2( 0, 32, 24, 16 ) + +[sub_resource type="AtlasTexture" id=68] +atlas = ExtResource( 34 ) +region = Rect2( 24, 32, 24, 16 ) + +[sub_resource type="AtlasTexture" id=69] +atlas = ExtResource( 34 ) +region = Rect2( 48, 32, 24, 16 ) + +[sub_resource type="SpriteFrames" id=70] +animations = [ { +"frames": [ SubResource( 67 ), SubResource( 68 ), SubResource( 69 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="Curve2D" id=58] +_data = { +"points": PoolVector2Array( 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 33.7028, 0.317383, 0, 0, 0, 0, 40, 0 ) +} + +[sub_resource type="AtlasTexture" id=59] +atlas = ExtResource( 31 ) +region = Rect2( 0, 0, 14, 12 ) + +[sub_resource type="AtlasTexture" id=60] +atlas = ExtResource( 31 ) +region = Rect2( 14, 0, 14, 12 ) + +[sub_resource type="SpriteFrames" id=61] +animations = [ { +"frames": [ SubResource( 59 ), SubResource( 60 ) ], +"loop": true, +"name": "chomp", +"speed": 8.0 +} ] + +[sub_resource type="ShaderMaterial" id=62] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="ShaderMaterial" id=81] +resource_local_to_scene = true +shader = ExtResource( 38 ) +shader_param/color = Color( 1, 1, 1, 1 ) +shader_param/smooth_mode = true +shader_param/reverse = true +shader_param/opacity = 0.0 + +[sub_resource type="ShaderMaterial" id=82] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=83] +atlas = ExtResource( 41 ) +region = Rect2( 0, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=84] +atlas = ExtResource( 41 ) +region = Rect2( 20, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=85] +atlas = ExtResource( 41 ) +region = Rect2( 40, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=86] +atlas = ExtResource( 41 ) +region = Rect2( 60, 0, 20, 21 ) + +[sub_resource type="SpriteFrames" id=87] +animations = [ { +"frames": [ SubResource( 83 ), SubResource( 84 ), SubResource( 85 ), SubResource( 86 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="Animation" id=89] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Control:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} + +[sub_resource type="Animation" id=90] +resource_name = "credits" +length = 98.0 +step = 1.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Control:rect_position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 2, 3, 5, 6, 10, 11, 15, 16, 20, 21, 25, 26, 30, 31, 35, 36, 40, 41, 45, 46, 50, 51, 55, 56, 60, 61, 65, 66, 70, 71, 75, 76, 80, 81, 85, 86, 90 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( -256, 0 ), Vector2( -256, 0 ), Vector2( -512, 0 ), Vector2( -512, 0 ), Vector2( -768, 0 ), Vector2( -768, 0 ), Vector2( -1024, 0 ), Vector2( -1024, 0 ), Vector2( -1280, 0 ), Vector2( -1280, 0 ), Vector2( -1536, 0 ), Vector2( -1536, 0 ), Vector2( -1792, 0 ), Vector2( -1792, 0 ), Vector2( -2048, 0 ), Vector2( -2048, 0 ), Vector2( -2304, 0 ), Vector2( -2304, 0 ), Vector2( -2560, 0 ), Vector2( -2560, 0 ), Vector2( -2816, 0 ), Vector2( -2816, 0 ), Vector2( -3072, 0 ), Vector2( -3072, 0 ), Vector2( -3328, 0 ), Vector2( -3328, 0 ), Vector2( -3584, 0 ), Vector2( -3584, 0 ), Vector2( -3840, 0 ), Vector2( -3840, 0 ), Vector2( -4096, 0 ), Vector2( -4096, 0 ), Vector2( -4352, 0 ), Vector2( -4352, 0 ), Vector2( -4608, 0 ), Vector2( -4608, 0 ) ] +} + +[node name="Credits" type="Node" groups=["map"]] +script = ExtResource( 14 ) + +[node name="CanvasLayer" type="CanvasLayer" parent="."] +layer = -64 + +[node name="ColorRect2" type="ColorRect" parent="CanvasLayer"] +margin_left = 4864.0 +margin_right = 5120.0 +margin_bottom = 192.0 +color = Color( 0.0666667, 0.164706, 0.454902, 0.329412 ) + +[node name="Background" type="ColorRect" parent="CanvasLayer"] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="CanvasLayer/Background"] +root_node = NodePath("../../..") +autoplay = "rainbow" +anims/RESET = SubResource( 3 ) +anims/rainbow = SubResource( 91 ) + +[node name="Control" type="Control" parent="."] +margin_right = 40.0 +margin_bottom = 40.0 + +[node name="Title" type="Sprite" parent="Control"] +position = Vector2( 128, 96 ) +texture = ExtResource( 3 ) + +[node name="TeamSG" type="Node2D" parent="Control"] +position = Vector2( 640, 96 ) + +[node name="GameStaffBack" type="Label" parent="Control/TeamSG"] +modulate = Color( 0.172549, 0, 0.552941, 1 ) +margin_left = -330.0 +margin_top = -14.0 +margin_right = -170.0 +margin_bottom = 2.0 +theme = SubResource( 93 ) +text = "Game Staff" + +[node name="GameStaff" type="Label" parent="Control/TeamSG"] +margin_left = -330.0 +margin_top = -16.0 +margin_right = -170.0 +theme = SubResource( 93 ) +text = "Game Staff" + +[node name="RollCall" type="Label" parent="Control/TeamSG"] +modulate = Color( 0.426872, 0.218491, 0.433594, 1 ) +margin_left = 2479.0 +margin_top = -15.0 +margin_right = 2671.0 +margin_bottom = 1.0 +theme = SubResource( 93 ) +text = "Roll Call!!!" + +[node name="RollCall2" type="Label" parent="Control/TeamSG"] +margin_left = 2479.0 +margin_top = -17.0 +margin_right = 2671.0 +margin_bottom = -1.0 +theme = SubResource( 93 ) +text = "Roll Call!!!" + +[node name="TeamSgSplash" type="Sprite" parent="Control/TeamSG"] +position = Vector2( 0, -23 ) +texture = ExtResource( 48 ) + +[node name="TeamSG2" type="Label" parent="Control/TeamSG"] +material = ExtResource( 4 ) +margin_left = -128.0 +margin_top = 56.0 +margin_right = 128.0 +margin_bottom = 105.0 +theme = ExtResource( 6 ) +text = "Team SG is: Penny rigate, +Haze Weathers, Scarlett Sylvistrix + and Dog Jelly. + " +align = 1 +valign = 1 + +[node name="TeamSG5" type="Label" parent="Control/TeamSG"] +material = ExtResource( 4 ) +margin_left = -112.0 +margin_top = -85.0 +margin_right = -56.0 +margin_bottom = -49.0 +theme = ExtResource( 6 ) +text = "Similar +people +create" +align = 1 +valign = 1 + +[node name="TeamSG6" type="Label" parent="Control/TeamSG"] +material = ExtResource( 4 ) +margin_left = 72.0 +margin_top = -85.0 +margin_right = 107.0 +margin_bottom = -49.0 +theme = ExtResource( 6 ) +text = "Games +for +fun" +align = 1 +valign = 1 + +[node name="Penny" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 768.0 +margin_right = 1024.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-Penny \"SG\" Rigate- +Director +Game design +Level design +Code +graphics +sound effects +Scenario" +align = 1 +valign = 1 + +[node name="Haze" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 1024.0 +margin_right = 1280.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-Haze \"Rolling fiend\" Weathers- +Lead Programmer +graphics +sound effects +voice of \"narrator\" +Story +Additional Enemy design" +align = 1 +valign = 1 + +[node name="Ivy" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 1280.0 +margin_right = 1536.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-Scarlett \"Shedge\" Sylvistrix- +Lead Composer +Sound effects +mixing" +align = 1 +valign = 1 + +[node name="Dog" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 1536.0 +margin_right = 1792.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-Dog \"the scrump\" jelly- +designer of \"the scrump\" +Story Help +Concept artist +Character design help" +align = 1 +valign = 1 + +[node name="Wolfboy" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 1792.0 +margin_right = 2048.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-WolfBoy \"SG-2083\"- +\"infiltration\" border" +align = 1 +valign = 1 + +[node name="Bodhi" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 2048.0 +margin_right = 2304.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-Bodhi \"eviscerator\" darner- +\"Got Shards\" border" +align = 1 +valign = 1 + +[node name="Playtesters" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 2304.0 +margin_right = 2560.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-Our playtesters- +Penny rigate +Haze Weathers +Scarlett Sylvistrix +DogJelly +Wolfboy +Rhidianruckus +Wily Beast +Maddy" +align = 1 +valign = 1 + +[node name="WonderingNow" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 2560.0 +margin_right = 2816.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-You're wondering now- +Original composition by: +Clement \"Coxsone\" Dodd +Originally performed by: +Andy & Joey +later performed by: +The specials +Cover version by: +haze weathers" +align = 1 +valign = 1 + +[node name="SpecialThanks" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 2816.0 +margin_right = 3072.0 +margin_bottom = 192.0 +theme = ExtResource( 6 ) +text = "-Special thanks- +Wolfboy +Cirquet +wily beast +RhidianRuckus +" +align = 1 +valign = 1 + +[node name="Playername" type="Label" parent="Control"] +material = ExtResource( 4 ) +margin_left = 2816.0 +margin_top = 123.0 +margin_right = 3072.0 +margin_bottom = 133.0 +theme = ExtResource( 6 ) +text = "Ty Tiramisu" +align = 1 +autowrap = true + +[node name="RollCall1" type="Node2D" parent="Control"] +position = Vector2( 3328, 0 ) + +[node name="SG" type="AnimatedSprite" parent="Control/RollCall1"] +material = SubResource( 7 ) +position = Vector2( 74, 69 ) +frames = SubResource( 12 ) +playing = true +script = ExtResource( 16 ) + +[node name="Label" type="Label" parent="Control/RollCall1/SG"] +material = ExtResource( 4 ) +margin_left = -7.0 +margin_top = 11.0 +margin_right = 33.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "SG" + +[node name="Speccy" type="AnimatedSprite" parent="Control/RollCall1"] +position = Vector2( 155, 68 ) +frames = SubResource( 97 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall1/Speccy"] +material = ExtResource( 4 ) +margin_left = -33.0 +margin_top = 12.0 +margin_right = 31.0 +margin_bottom = 26.0 +theme = ExtResource( 6 ) +text = "Speccy" +align = 1 + +[node name="MsX" type="AnimatedSprite" parent="Control/RollCall1"] +material = SubResource( 8 ) +position = Vector2( 106, 69 ) +frames = SubResource( 18 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall1/MsX"] +material = ExtResource( 4 ) +margin_left = -16.0 +margin_top = 11.0 +margin_right = 16.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "Ms.x" +align = 1 + +[node name="DrIntelli" type="Sprite" parent="Control/RollCall1"] +position = Vector2( 90, 140 ) +texture = ExtResource( 12 ) + +[node name="Label" type="Label" parent="Control/RollCall1/DrIntelli"] +material = ExtResource( 4 ) +margin_left = -32.0 +margin_top = 11.0 +margin_right = 38.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "DR.Intelli" +align = 1 + +[node name="Fami" type="AnimatedSprite" parent="Control/RollCall1"] +position = Vector2( 152, 135 ) +frames = SubResource( 100 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall1/Fami"] +material = ExtResource( 4 ) +margin_left = -33.0 +margin_top = 16.0 +margin_right = 37.0 +margin_bottom = 30.0 +theme = ExtResource( 6 ) +text = "Fami" +align = 1 + +[node name="FreedomFighters" type="Label" parent="Control/RollCall1"] +modulate = Color( 0.223529, 0.843137, 0.435294, 1 ) +material = SubResource( 51 ) +margin_left = 64.0 +margin_top = 32.0 +margin_right = 176.0 +margin_bottom = 55.0 +theme = ExtResource( 6 ) +text = "Freedom Fighters" +align = 1 + +[node name="VileVillians" type="Label" parent="Control/RollCall1"] +modulate = Color( 0.866667, 0.368627, 0.435294, 1 ) +material = SubResource( 51 ) +margin_left = 64.0 +margin_top = 104.0 +margin_right = 176.0 +margin_bottom = 127.0 +theme = ExtResource( 6 ) +text = "Vile Villians" +align = 1 + +[node name="RollCall2" type="Node2D" parent="Control"] +position = Vector2( 768, 0 ) + +[node name="Eviscerator" type="AnimatedSprite" parent="Control/RollCall2"] +material = SubResource( 13 ) +position = Vector2( 2880, 24 ) +frames = SubResource( 21 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/Eviscerator"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "eviscerator" +align = 1 + +[node name="Catbat" type="AnimatedSprite" parent="Control/RollCall2"] +material = SubResource( 13 ) +position = Vector2( 2952, 24 ) +frames = SubResource( 24 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/Catbat"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "Catbat" +align = 1 + +[node name="TheScrump" type="AnimatedSprite" parent="Control/RollCall2"] +position = Vector2( 2992, 128 ) +frames = SubResource( 27 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/TheScrump"] +material = ExtResource( 4 ) +margin_left = -40.0 +margin_top = 32.0 +margin_right = 53.0 +margin_bottom = 46.0 +theme = ExtResource( 6 ) +text = "The Scrump" +align = 1 + +[node name="RollingFiend" type="AnimatedSprite" parent="Control/RollCall2"] +material = SubResource( 13 ) +position = Vector2( 2880, 102 ) +frames = SubResource( 30 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/RollingFiend"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "Rolling fiend" +align = 1 + +[node name="ChipIt" type="AnimatedSprite" parent="Control/RollCall2"] +position = Vector2( 2960, 62 ) +frames = SubResource( 33 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/ChipIt"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "Chipit" +align = 1 + +[node name="Skelarcher" type="AnimatedSprite" parent="Control/RollCall2"] +material = SubResource( 34 ) +position = Vector2( 3024, 62 ) +frames = SubResource( 43 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/Skelarcher"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "Skelarcher" +align = 1 + +[node name="SabreSpighter" type="AnimatedSprite" parent="Control/RollCall2"] +position = Vector2( 2880, 62 ) +frames = SubResource( 46 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/SabreSpighter"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "SabreSpighter" +align = 1 + +[node name="BioSlime" type="AnimatedSprite" parent="Control/RollCall2"] +material = SubResource( 47 ) +position = Vector2( 3016, 24 ) +frames = SubResource( 50 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall2/BioSlime"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "Bioslime" +align = 1 + +[node name="ParadisePoachers" type="Label" parent="Control/RollCall2"] +modulate = Color( 0.223529, 0.843137, 0.435294, 1 ) +material = SubResource( 51 ) +margin_left = 2840.0 +margin_top = 144.0 +margin_right = 2928.0 +margin_bottom = 167.0 +theme = ExtResource( 6 ) +text = "Paradise +Poachers" +align = 1 + +[node name="RollCall3" type="Node2D" parent="Control"] +position = Vector2( 3840, 0 ) + +[node name="Shedge" type="AnimatedSprite" parent="Control/RollCall3"] +position = Vector2( 60, 25 ) +frames = SubResource( 54 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall3/Shedge"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 11.0 +margin_right = 45.0 +margin_bottom = 25.0 +theme = ExtResource( 6 ) +text = "Shedge" +align = 1 + +[node name="TheScrumpsTongue" type="AnimatedSprite" parent="Control/RollCall3"] +position = Vector2( 156, 20 ) +frames = SubResource( 57 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall3/TheScrumpsTongue"] +material = ExtResource( 4 ) +margin_left = -64.0 +margin_top = 16.0 +margin_right = 69.0 +margin_bottom = 30.0 +theme = ExtResource( 6 ) +text = "The scrump's tongue" +align = 1 + +[node name="Fish" parent="Control/RollCall3" instance=ExtResource( 30 )] +position = Vector2( 88, 62 ) +speed = 0 + +[node name="Label2" type="Label" parent="Control/RollCall3/Fish"] +material = ExtResource( 4 ) +margin_left = -48.0 +margin_top = 15.0 +margin_right = 45.0 +margin_bottom = 29.0 +theme = ExtResource( 6 ) +text = "Bullet fish" +align = 1 + +[node name="Squig" type="AnimatedSprite" parent="Control/RollCall3"] +position = Vector2( 200, 64 ) +frames = SubResource( 65 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall3/Squig"] +material = ExtResource( 4 ) +margin_left = -69.0 +margin_top = 13.0 +margin_right = 64.0 +margin_bottom = 27.0 +theme = ExtResource( 6 ) +text = "Squig" +align = 1 + +[node name="Hellarcher" type="AnimatedSprite" parent="Control/RollCall3"] +material = SubResource( 71 ) +position = Vector2( 72, 152 ) +frames = SubResource( 80 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall3/Hellarcher"] +material = ExtResource( 4 ) +margin_left = -69.0 +margin_top = 13.0 +margin_right = 64.0 +margin_bottom = 27.0 +theme = ExtResource( 6 ) +text = "Hellarcher" +align = 1 + +[node name="Turchin" type="AnimatedSprite" parent="Control/RollCall3"] +material = SubResource( 66 ) +position = Vector2( 68, 104 ) +frames = SubResource( 70 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall3/Turchin"] +material = ExtResource( 4 ) +margin_left = -69.0 +margin_top = 13.0 +margin_right = 64.0 +margin_bottom = 27.0 +theme = ExtResource( 6 ) +text = "Turchin +" +align = 1 + +[node name="Beel" type="Path2D" parent="Control/RollCall3" groups=["enemy"]] +position = Vector2( 128, 69 ) +curve = SubResource( 58 ) + +[node name="Head" type="PathFollow2D" parent="Control/RollCall3/Beel" groups=["eel_segment"]] +position = Vector2( 29.7698, 0.268818 ) +rotation = 0.0123443 +offset = 21.77 +cubic_interp = false +lookahead = 0.001 + +[node name="Sprite" type="AnimatedSprite" parent="Control/RollCall3/Beel/Head"] +position = Vector2( 4, 0 ) +z_index = 1 +frames = SubResource( 61 ) +animation = "chomp" +playing = true + +[node name="Border" type="AnimatedSprite" parent="Control/RollCall3/Beel/Head/Sprite"] +material = SubResource( 62 ) +z_index = -1 +frames = SubResource( 61 ) +animation = "chomp" +playing = true + +[node name="ShapeTransform" type="RemoteTransform2D" parent="Control/RollCall3/Beel/Head"] +position = Vector2( 2.5, 0 ) + +[node name="Tail" type="PathFollow2D" parent="Control/RollCall3/Beel"] +position = Vector2( 18.0018, 0.123504 ) +rotation = 0.0123431 +offset = 10.0 +cubic_interp = false +lookahead = 0.001 + +[node name="Sprite" type="Sprite" parent="Control/RollCall3/Beel/Tail"] +position = Vector2( -2, 0 ) +z_index = 1 +texture = ExtResource( 29 ) + +[node name="Border" type="Sprite" parent="Control/RollCall3/Beel/Tail/Sprite"] +material = SubResource( 62 ) +z_index = -1 +texture = ExtResource( 29 ) + +[node name="Segment" type="PathFollow2D" parent="Control/RollCall3/Beel"] +position = Vector2( 26.0015, 0.222285 ) +rotation = 0.0123294 +offset = 18.0 +cubic_interp = false +lookahead = 0.001 + +[node name="Sprite" type="Sprite" parent="Control/RollCall3/Beel/Segment"] +z_index = 1 +texture = ExtResource( 32 ) + +[node name="Border" type="Sprite" parent="Control/RollCall3/Beel/Segment/Sprite"] +material = SubResource( 62 ) +z_index = -1 +texture = ExtResource( 32 ) + +[node name="Segment2" type="PathFollow2D" parent="Control/RollCall3/Beel"] +position = Vector2( 22.0031, 0.172913 ) +rotation = 0.0123357 +offset = 14.0 +cubic_interp = false +lookahead = 0.001 + +[node name="Sprite" type="Sprite" parent="Control/RollCall3/Beel/Segment2"] +z_index = 1 +texture = ExtResource( 32 ) + +[node name="Border" type="Sprite" parent="Control/RollCall3/Beel/Segment2/Sprite"] +material = SubResource( 62 ) +z_index = -1 +texture = ExtResource( 32 ) + +[node name="Label3" type="Label" parent="Control/RollCall3/Beel"] +material = ExtResource( 4 ) +margin_left = -24.0 +margin_top = 8.0 +margin_right = 69.0 +margin_bottom = 22.0 +theme = ExtResource( 6 ) +text = "Beel" +align = 1 + +[node name="ArtificialSoul" parent="Control/RollCall3" instance=ExtResource( 35 )] +position = Vector2( 156, 105 ) +radius = 0.0 +speed = 0.0 + +[node name="Label2" type="Label" parent="Control/RollCall3/ArtificialSoul"] +material = ExtResource( 4 ) +margin_left = -64.0 +margin_top = 12.0 +margin_right = 69.0 +margin_bottom = 35.0 +theme = ExtResource( 6 ) +text = "Artificial soul" +align = 1 + +[node name="EnervatingExperiments" type="Label" parent="Control/RollCall3"] +modulate = Color( 0.223529, 0.364706, 0.843137, 1 ) +material = SubResource( 51 ) +margin_left = 144.0 +margin_top = 152.0 +margin_right = 232.0 +margin_bottom = 175.0 +theme = ExtResource( 6 ) +text = "Eldritch +experiments" +align = 1 + +[node name="RollCall4" type="Node2D" parent="Control"] +position = Vector2( 768, 0 ) + +[node name="2600" parent="Control/RollCall4" instance=ExtResource( 37 )] +position = Vector2( 3464, -8 ) +make_explosions = true + +[node name="ShootTimer" parent="Control/RollCall4/2600" index="2"] +autostart = false + +[node name="FootShapeFront" parent="Control/RollCall4/2600/Hitbox" index="1"] +position = Vector2( 63.7334, 154.923 ) +scale = Vector2( 1, 1 ) + +[node name="FootShapeBack" parent="Control/RollCall4/2600/Hitbox" index="2"] +position = Vector2( 42.7334, 154.923 ) +scale = Vector2( 1, 1 ) + +[node name="ExplosionRect" parent="Control/RollCall4/2600/BigExplosion" index="0"] +material = SubResource( 81 ) + +[node name="Label2" type="Label" parent="Control/RollCall4/2600"] +material = ExtResource( 4 ) +margin_left = -16.0 +margin_top = 176.0 +margin_right = 117.0 +margin_bottom = 190.0 +theme = ExtResource( 6 ) +text = "Stg-2600 / Sg-2083" +align = 1 + +[node name="MonsterousMechaMadeMoral" type="Label" parent="Control/RollCall4"] +modulate = Color( 0.564706, 0.576471, 0.607843, 1 ) +material = SubResource( 51 ) +margin_left = 3344.0 +margin_top = 16.0 +margin_right = 3456.0 +margin_bottom = 39.0 +theme = ExtResource( 6 ) +text = "Monsterous mecha +made moral" +align = 1 + +[node name="MonsterousMechaMadeMoral2" type="Label" parent="Control/RollCall4"] +modulate = Color( 0.105882, 0.682353, 0.615686, 1 ) +material = SubResource( 51 ) +margin_left = 3344.0 +margin_top = 72.0 +margin_right = 3456.0 +margin_bottom = 108.0 +theme = ExtResource( 6 ) +text = "Bastards +'n' +bots" +align = 1 + +[node name="Famicop" type="AnimatedSprite" parent="Control/RollCall4"] +material = SubResource( 82 ) +position = Vector2( 3362, 122.5 ) +frames = SubResource( 87 ) +playing = true + +[node name="Label" type="Label" parent="Control/RollCall4/Famicop"] +material = ExtResource( 4 ) +margin_left = -64.0 +margin_top = 12.0 +margin_right = 69.0 +margin_bottom = 26.0 +theme = ExtResource( 6 ) +text = "Famicop" +align = 1 + +[node name="Roboturret" parent="Control/RollCall4" instance=ExtResource( 40 )] +position = Vector2( 3434, 122.5 ) +shoot_time = inf + +[node name="Label2" type="Label" parent="Control/RollCall4/Roboturret"] +material = ExtResource( 4 ) +margin_left = -64.0 +margin_top = 12.0 +margin_right = 69.0 +margin_bottom = 26.0 +theme = ExtResource( 6 ) +text = "roboturret" +align = 1 + +[node name="Tin" parent="Control/RollCall4" instance=ExtResource( 39 )] +position = Vector2( 3400, 160 ) +speed = 0 + +[node name="Label2" type="Label" parent="Control/RollCall4/Tin"] +material = ExtResource( 4 ) +margin_left = -67.0 +margin_top = 8.0 +margin_right = 66.0 +margin_bottom = 22.0 +theme = ExtResource( 6 ) +text = "Tin" +align = 1 + +[node name="RollCall6" type="Node2D" parent="Control"] + +[node name="Famira" parent="Control/RollCall6" instance=ExtResource( 47 )] +position = Vector2( 4502, 184 ) +credits = true + +[node name="MonsterousMechaMadeMoral" type="Label" parent="Control/RollCall6"] +modulate = Color( 0.980392, 0.878431, 0.0392157, 1 ) +material = SubResource( 51 ) +margin_left = 4361.0 +margin_top = 112.0 +margin_right = 4473.0 +margin_bottom = 135.0 +theme = ExtResource( 6 ) +text = "Totalitarian +terror" +align = 1 + +[node name="Label2" type="Label" parent="Control/RollCall6"] +material = ExtResource( 4 ) +margin_left = 4352.0 +margin_top = 148.0 +margin_right = 4485.0 +margin_bottom = 162.0 +theme = ExtResource( 6 ) +text = "Super Famira" +align = 1 + +[node name="RollCall5" type="Node2D" parent="Control"] +position = Vector2( 4608, 0 ) + +[node name="Haze" type="Sprite" parent="Control/RollCall5"] +position = Vector2( 80, 136 ) +scale = Vector2( 2, 2 ) +texture = ExtResource( 45 ) + +[node name="Penny" type="Sprite" parent="Control/RollCall5"] +position = Vector2( 104, 134 ) +scale = Vector2( 2, 2 ) +texture = ExtResource( 44 ) + +[node name="KikiDog" type="Sprite" parent="Control/RollCall5"] +position = Vector2( 24, 138 ) +scale = Vector2( -2, 2 ) +texture = ExtResource( 43 ) + +[node name="Ivy" type="Sprite" parent="Control/RollCall5"] +position = Vector2( 54, 136 ) +scale = Vector2( 2, 2 ) +texture = ExtResource( 42 ) + +[node name="Sprite" type="Sprite" parent="Control/RollCall5"] +position = Vector2( 176, 88 ) +texture = ExtResource( 46 ) + +[node name="Label" type="Label" parent="Control/RollCall5"] +material = ExtResource( 4 ) +margin_left = 136.0 +margin_top = 64.0 +margin_right = 220.0 +margin_bottom = 100.0 +theme = ExtResource( 6 ) +text = "Thank you +for playing +our game!" +align = 1 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "credits" +playback_speed = 0.85 +anims/RESET = SubResource( 89 ) +anims/credits = SubResource( 90 ) + +[editable path="Control/RollCall4/2600"] diff --git a/menus/file_create.gd b/menus/file_create.gd new file mode 100644 index 0000000..3f2fe6f --- /dev/null +++ b/menus/file_create.gd @@ -0,0 +1,115 @@ +extends Node + + +const DESCRIPTIONS := [ + # sweet mode + { + "enemies": "*slower enemies", + "lives": "*unlimited lives", + "description": "*Difficulty for\n beginners", + }, + # salty mode + { + "enemies": "*normal enemies", + "lives": "*unlimited lives", + "description": "*Difficulty for\n skilled players", + }, + # spicy mode + { + "enemies": "*normal enemies", + "lives": "*limited lives", + "description": "*Difficulty for\n retro players", + }, + # pungent mode + { + "enemies": "*faster enemies", + "lives": "*limited lives", + "description": "*Difficulty for\n insane players", + }, +] + +var file: Save.SaveFile = null +var difficulty: int = Game.Difficulty.SPICY + +onready var face: Sprite = $"%Face" +onready var chosen_name: Label = $"%ChosenName" +onready var enemies: Label = $"%Enemies" +onready var lives: Label = $"%Lives" +onready var description: Label = $"%Description" +onready var exit_sprite: Sprite = $"%ExitSprite" +onready var closed_collision: CollisionShape2D = $"%ClosedCollision" + + +func _ready() -> void: + # escape to file select if no file is assigned + if not file: + yield(get_tree(), "idle_frame") + SceneManager.current_scene = load("res://menus/file_select.tscn").instance() + return + + # pause so that player can not move around until difficulty chosen + get_tree().paused = true + # initialize name + chosen_name.text = "" + file.name = "" + # fade in + Fade.fade_in(Options.transition_speed_secs) + # focus the difficulty + $"%Spicy".call_deferred("grab_focus") + + +func _set_difficulty(value: int) -> void: + difficulty = posmod(value, 4) + file.difficulty = difficulty + face.frame = difficulty + enemies.text = DESCRIPTIONS[difficulty].enemies + lives.text = DESCRIPTIONS[difficulty].lives + description.text = DESCRIPTIONS[difficulty].description + + + +func _difficulty_selected() -> void: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + $"%DifficultySelect".queue_free() + $"%NameEntry".visible = true + get_tree().paused = false + Game.use_lives = false + Fade.fade_in(Options.transition_speed_secs) + +func _on_letter_chosen(letter: String) -> void: + if file.name.length() < 8: + file.name += letter + chosen_name.text = file.name + if file.name.length() > 0: + var tween = create_tween() + tween.tween_property(exit_sprite, "frame", 3, 0.25) + tween.tween_property(closed_collision, "disabled", true, 0.0) + +func _on_backspace(): +# file.name.erase(file.name.length() - 1,1) + file.name = file.name.left(file.name.length() - 1) + chosen_name.text = file.name + +func _on_Exit_area_entered(area: Area2D) -> void: + if area.is_in_group("player_hitbox"): + var player = area.get_parent() + player.state_chart.send_event("start_teleport") + player.connect("teleport_finished", self, "_on_player_teleport_finished") + +func _on_player_teleport_finished() -> void: + if file.name.length() > 0: + get_tree().paused = true + if Options.scoreboard_name.empty(): + Options.scoreboard_name = file.name + Options.save_options() + file.save_to_file() + Save.current_file = file + Game.difficulty = file.difficulty + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + get_tree().paused = false + if Options.speedrun_timer: + SpeedrunTimer.timer_running = true + SpeedrunTimer.visible = true + SceneManager.current_scene = load("res://cutscenes/intro_story.tscn").instance() diff --git a/menus/file_create.tscn b/menus/file_create.tscn new file mode 100644 index 0000000..1b622fa --- /dev/null +++ b/menus/file_create.tscn @@ -0,0 +1,497 @@ +[gd_scene load_steps=32 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/hud/sg_menu.png" type="Texture" id=4] +[ext_resource path="res://graphics/hud/sg_tasting.png" type="Texture" id=5] +[ext_resource path="res://graphics/hud/scores/salty.png" type="Texture" id=6] +[ext_resource path="res://menus/file_create.gd" type="Script" id=7] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=8] +[ext_resource path="res://tilesets/t_abstract.tres" type="TileSet" id=9] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=10] +[ext_resource path="res://objects/hud/letter_block.tscn" type="PackedScene" id=11] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=12] +[ext_resource path="res://graphics/hud/scores/sweet.png" type="Texture" id=13] +[ext_resource path="res://graphics/exit/exit.png" type="Texture" id=14] +[ext_resource path="res://objects/environment/ladder/ladder.tscn" type="PackedScene" id=15] +[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=16] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=17] +[ext_resource path="res://shaders/beam_of_sin.gdshader" type="Shader" id=18] +[ext_resource path="res://graphics/exit/exit_back.png" type="Texture" id=19] +[ext_resource path="res://graphics/hud/scores/pungent.png" type="Texture" id=20] +[ext_resource path="res://graphics/hud/scores/spicy.png" type="Texture" id=21] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.458824, 0.282353, 0.690196, 1 ) +shader_param/color_2 = Color( 0.160784, 0.0352941, 0.282353, 1 ) +shader_param/checker_size = Vector2( 32, 16 ) +shader_param/pan_speed = Vector2( 16, -8 ) +shader_param/cycle_speed = Vector2( 0, 4 ) +shader_param/cycle_alternation = Vector2( 0, 1 ) +shader_param/uv_transform = Transform2D( 1, 0, 1, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 3 ) +shader_param/speed = Vector2( 0, 4 ) +shader_param/ammount = Vector2( 0, 1 ) +shader_param/offset = Vector2( 0, 1 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 3 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 1, 0.47451, 0.266667, 1 ) +shader_param/color_2 = Color( 0.980392, 0.890196, 0.576471, 1 ) +shader_param/checker_size = Vector2( 16, 8 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 0, 12 ) +shader_param/cycle_alternation = Vector2( 0, 0 ) +shader_param/uv_transform = Transform2D( 1, 0, 2, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=9] +shader = ExtResource( 18 ) +shader_param/speed = 1.0 +shader_param/cycle_offset = 0.0 +shader_param/wave_length = 8.0 +shader_param/thickness = 0.1 + +[sub_resource type="ShaderMaterial" id=10] +shader = ExtResource( 18 ) +shader_param/speed = -2.0 +shader_param/cycle_offset = 3.0 +shader_param/wave_length = 5.0 +shader_param/thickness = 0.1 + +[sub_resource type="Gradient" id=11] +interpolation_mode = 1 +offsets = PoolRealArray( 0, 0.5 ) +colors = PoolColorArray( 0.345098, 0.74902, 0.878431, 1, 0.396078, 1, 1, 1 ) + +[sub_resource type="RectangleShape2D" id=12] +extents = Vector2( 1, 1 ) + +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 7, 7.5 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 8, 4.5 ) + +[node name="FileCreate" type="Node" groups=["gets_letters"]] +pause_mode = 2 +script = ExtResource( 7 ) +__meta__ = { +"_edit_horizontal_guides_": [ ] +} + +[node name="BackgroundLayer" type="CanvasLayer" parent="."] +layer = -10 + +[node name="Background" type="ColorRect" parent="BackgroundLayer"] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="DifficultySelect" type="Control" parent="."] +unique_name_in_owner = true +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 2 ) +__meta__ = { +"_edit_lock_": true +} + +[node name="Label" type="Label" parent="DifficultySelect"] +material = ExtResource( 8 ) +margin_left = 8.0 +margin_top = 8.0 +margin_right = 253.0 +margin_bottom = 44.0 +text = "Select the difficulty of the +future, sg loves hot peppers but +that doesn't mean you have to!" + +[node name="Label2" type="Label" parent="DifficultySelect"] +material = ExtResource( 8 ) +margin_left = 92.0 +margin_top = 56.0 +margin_right = 176.0 +margin_bottom = 105.0 +text = "Feel free +to start +anew if you +have trouble" + +[node name="ButtonsPanel" type="Panel" parent="DifficultySelect"] +material = SubResource( 2 ) +margin_left = 16.0 +margin_top = 48.0 +margin_right = 88.0 +margin_bottom = 112.0 +theme = ExtResource( 2 ) + +[node name="Sweet" type="TextureButton" parent="DifficultySelect/ButtonsPanel"] +material = SubResource( 3 ) +margin_left = 5.0 +margin_top = 8.0 +margin_right = 17.0 +margin_bottom = 20.0 +focus_neighbour_top = NodePath("../Pungent") +focus_neighbour_bottom = NodePath("../Salty") +texture_focused = ExtResource( 13 ) + +[node name="Salty" type="TextureButton" parent="DifficultySelect/ButtonsPanel"] +material = SubResource( 3 ) +margin_left = 5.0 +margin_top = 21.0 +margin_right = 17.0 +margin_bottom = 33.0 +focus_neighbour_top = NodePath("../Sweet") +focus_neighbour_bottom = NodePath("../Spicy") +texture_focused = ExtResource( 6 ) + +[node name="Spicy" type="TextureButton" parent="DifficultySelect/ButtonsPanel"] +unique_name_in_owner = true +material = SubResource( 3 ) +margin_left = 5.0 +margin_top = 34.0 +margin_right = 17.0 +margin_bottom = 46.0 +focus_neighbour_top = NodePath("../Salty") +focus_neighbour_bottom = NodePath("../Pungent") +texture_focused = ExtResource( 21 ) + +[node name="Pungent" type="TextureButton" parent="DifficultySelect/ButtonsPanel"] +material = SubResource( 3 ) +margin_left = 5.0 +margin_top = 47.0 +margin_right = 17.0 +margin_bottom = 59.0 +focus_neighbour_top = NodePath("../Spicy") +focus_neighbour_bottom = NodePath("../Sweet") +texture_focused = ExtResource( 20 ) + +[node name="Body" type="Label" parent="DifficultySelect/ButtonsPanel"] +material = SubResource( 2 ) +margin_left = 18.0 +margin_top = 8.0 +margin_right = 67.0 +margin_bottom = 57.0 +text = "sweet +salty +spicy +pungent" + +[node name="DescriptionPanel" type="Panel" parent="DifficultySelect"] +material = SubResource( 2 ) +margin_left = 16.0 +margin_top = 120.0 +margin_right = 144.0 +margin_bottom = 184.0 +theme = ExtResource( 2 ) + +[node name="Enemies" type="Label" parent="DifficultySelect/DescriptionPanel"] +unique_name_in_owner = true +material = SubResource( 2 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 8.0 +margin_top = 8.0 +margin_right = -8.0 +margin_bottom = -22.0 +text = "*normal enemies" +autowrap = true + +[node name="Lives" type="Label" parent="DifficultySelect/DescriptionPanel"] +unique_name_in_owner = true +material = SubResource( 2 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 8.0 +margin_top = 22.0 +margin_bottom = -8.0 +text = "*limited lives" +autowrap = true + +[node name="Description" type="Label" parent="DifficultySelect/DescriptionPanel"] +unique_name_in_owner = true +material = SubResource( 2 ) +margin_left = 8.0 +margin_top = 37.0 +margin_right = 113.0 +margin_bottom = 69.0 +text = "*Difficulty for + retro players" + +[node name="SG" type="TextureRect" parent="DifficultySelect"] +margin_left = 176.0 +margin_top = 40.0 +margin_right = 242.0 +margin_bottom = 187.0 +texture = ExtResource( 4 ) + +[node name="Face" type="Sprite" parent="DifficultySelect/SG"] +unique_name_in_owner = true +position = Vector2( 33, 42 ) +texture = ExtResource( 5 ) +hframes = 4 +frame = 2 + +[node name="MenuSounds" parent="DifficultySelect" instance=ExtResource( 16 )] + +[node name="NameEntry" type="Node2D" parent="."] +pause_mode = 1 +unique_name_in_owner = true +visible = false + +[node name="ChosenName" type="Label" parent="NameEntry"] +unique_name_in_owner = true +material = ExtResource( 8 ) +anchor_right = 1.0 +margin_right = 256.0 +margin_bottom = 16.0 +theme = ExtResource( 2 ) +text = "SG" +align = 1 +valign = 1 + +[node name="TileBG" type="ColorRect" parent="NameEntry"] +material = SubResource( 4 ) +margin_left = 1.0 +margin_top = 161.0 +margin_right = 255.0 +margin_bottom = 191.0 + +[node name="TileBG2" type="ColorRect" parent="NameEntry/TileBG"] +material = SubResource( 4 ) +margin_left = 24.0 +margin_top = -56.0 +margin_right = 238.0 +margin_bottom = -42.0 + +[node name="TileBG3" type="ColorRect" parent="NameEntry/TileBG"] +material = SubResource( 4 ) +margin_left = 24.0 +margin_top = -112.0 +margin_right = 238.0 +margin_bottom = -98.0 + +[node name="Ground" type="TileMap" parent="NameEntry"] +tile_set = ExtResource( 9 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( -1, 0, 1, -65536, 0, 196610, -65535, 0, 196610, -65534, 0, 196610, -65533, 0, 196610, -65532, 0, 196610, -65531, 0, 196610, -65530, 0, 196610, -65529, 0, 196610, -65528, 0, 196610, -65527, 0, 196610, -65526, 0, 196610, -65525, 0, 196610, -65524, 0, 196610, -65523, 0, 196610, -65522, 0, 196610, -65521, 0, 196610, -65520, 0, 196610, -65519, 0, 196610, -65518, 0, 196610, -65517, 0, 196610, -65516, 0, 196610, -65515, 0, 196610, -65514, 0, 196610, -65513, 0, 196610, -65512, 0, 196610, -65511, 0, 196610, -65510, 0, 196610, -65509, 0, 196610, -65508, 0, 196610, -65507, 0, 196610, -65506, 0, 196610, -65505, 0, 196610, -65504, 0, 3, 65535, 0, 65536, 32, 0, 65536, 131071, 0, 65539, 65568, 0, 65537, 196607, 0, 65539, 131104, 0, 65537, 262143, 0, 65539, 196640, 0, 65537, 327679, 0, 65539, 262176, 0, 65537, 393215, 0, 65539, 327712, 0, 65537, 458751, 0, 65539, 393219, 0, 1, 393220, 0, 2, 393221, 0, 2, 393222, 0, 2, 393223, 0, 2, 393224, 0, 2, 393225, 0, 2, 393226, 0, 2, 393227, 0, 2, 393228, 0, 2, 393229, 0, 2, 393230, 0, 2, 393231, 0, 2, 393232, 0, 2, 393233, 0, 2, 393234, 0, 2, 393235, 0, 2, 393236, 0, 2, 393237, 0, 2, 393238, 0, 2, 393239, 0, 2, 393240, 0, 2, 393241, 0, 2, 393242, 0, 2, 393243, 0, 2, 393244, 0, 2, 393245, 0, 3, 393248, 0, 65537, 524287, 0, 65539, 458755, 0, 131073, 458756, 0, 131074, 458757, 0, 131074, 458758, 0, 131074, 458759, 0, 131074, 458760, 0, 131074, 458761, 0, 131074, 458762, 0, 131074, 458763, 0, 131074, 458764, 0, 131074, 458765, 0, 131074, 458766, 0, 131074, 458767, 0, 131074, 458768, 0, 131074, 458769, 0, 131074, 458770, 0, 131074, 458771, 0, 131074, 458772, 0, 131074, 458773, 0, 131074, 458774, 0, 131074, 458775, 0, 131074, 458776, 0, 131074, 458777, 0, 131074, 458778, 0, 131074, 458779, 0, 131074, 458780, 0, 131074, 458781, 0, 131075, 458784, 0, 65537, 589823, 0, 65539, 524320, 0, 65537, 655359, 0, 65539, 589856, 0, 65537, 720895, 0, 65539, 655392, 0, 65537, 786431, 0, 65539, 720928, 0, 65537, 851967, 0, 65539, 786464, 0, 65537, 917503, 0, 65539, 851971, 0, 1, 851972, 0, 2, 851973, 0, 2, 851974, 0, 2, 851975, 0, 2, 851976, 0, 2, 851977, 0, 2, 851978, 0, 2, 851979, 0, 2, 851980, 0, 2, 851981, 0, 2, 851982, 0, 2, 851983, 0, 2, 851984, 0, 2, 851985, 0, 2, 851986, 0, 2, 851987, 0, 2, 851988, 0, 2, 851989, 0, 2, 851990, 0, 2, 851991, 0, 2, 851992, 0, 2, 851993, 0, 2, 851994, 0, 2, 851995, 0, 2, 851996, 0, 2, 851997, 0, 3, 852000, 0, 65537, 983039, 0, 65539, 917507, 0, 131073, 917508, 0, 131074, 917509, 0, 131074, 917510, 0, 131074, 917511, 0, 131074, 917512, 0, 131074, 917513, 0, 131074, 917514, 0, 131074, 917515, 0, 131074, 917516, 0, 131074, 917517, 0, 131074, 917518, 0, 131074, 917519, 0, 131074, 917520, 0, 131074, 917521, 0, 131074, 917522, 0, 131074, 917523, 0, 131074, 917524, 0, 131074, 917525, 0, 131074, 917526, 0, 131074, 917527, 0, 131074, 917528, 0, 131074, 917529, 0, 131074, 917530, 0, 131074, 917531, 0, 131074, 917532, 0, 131074, 917533, 0, 131075, 917536, 0, 65537, 1048575, 0, 65539, 983072, 0, 65537, 1114111, 0, 65539, 1048608, 0, 65537, 1179647, 0, 65539, 1114144, 0, 65537, 1245183, 0, 65539, 1179680, 0, 65537, 1310719, 0, 65539, 1245216, 0, 65537, 1376255, 0, 65539, 1310720, 0, 1, 1310721, 0, 2, 1310722, 0, 2, 1310723, 0, 2, 1310724, 0, 2, 1310725, 0, 2, 1310726, 0, 2, 1310727, 0, 2, 1310728, 0, 2, 1310729, 0, 2, 1310730, 0, 2, 1310731, 0, 2, 1310732, 0, 2, 1310733, 0, 2, 1310734, 0, 2, 1310735, 0, 2, 1310736, 0, 2, 1310737, 0, 2, 1310738, 0, 2, 1310739, 0, 2, 1310740, 0, 2, 1310741, 0, 2, 1310742, 0, 2, 1310743, 0, 2, 1310744, 0, 2, 1310745, 0, 2, 1310746, 0, 2, 1310747, 0, 2, 1310748, 0, 2, 1310749, 0, 2, 1310750, 0, 2, 1310751, 0, 3, 1310752, 0, 65537, 1441791, 0, 65539, 1376256, 0, 65537, 1376257, 0, 65538, 1376258, 0, 65538, 1376259, 0, 65538, 1376260, 0, 65538, 1376261, 0, 65538, 1376262, 0, 65538, 1376263, 0, 65538, 1376264, 0, 65538, 1376265, 0, 65538, 1376266, 0, 65538, 1376267, 0, 65538, 1376268, 0, 65538, 1376269, 0, 65538, 1376270, 0, 65538, 1376271, 0, 65538, 1376272, 0, 65538, 1376273, 0, 65538, 1376274, 0, 65538, 1376275, 0, 65538, 1376276, 0, 65538, 1376277, 0, 65538, 1376278, 0, 65538, 1376279, 0, 65538, 1376280, 0, 65538, 1376281, 0, 65538, 1376282, 0, 65538, 1376283, 0, 65538, 1376284, 0, 65538, 1376285, 0, 65538, 1376286, 0, 65538, 1376287, 0, 65539, 1376288, 0, 65537, 1507327, 0, 65539, 1441792, 0, 65537, 1441793, 0, 65538, 1441794, 0, 65538, 1441795, 0, 65538, 1441796, 0, 65538, 1441797, 0, 65538, 1441798, 0, 65538, 1441799, 0, 65538, 1441800, 0, 65538, 1441801, 0, 65538, 1441802, 0, 65538, 1441803, 0, 65538, 1441804, 0, 65538, 1441805, 0, 65538, 1441806, 0, 65538, 1441807, 0, 65538, 1441808, 0, 65538, 1441809, 0, 65538, 1441810, 0, 65538, 1441811, 0, 65538, 1441812, 0, 65538, 1441813, 0, 65538, 1441814, 0, 65538, 1441815, 0, 65538, 1441816, 0, 65538, 1441817, 0, 65538, 1441818, 0, 65538, 1441819, 0, 65538, 1441820, 0, 65538, 1441821, 0, 65538, 1441822, 0, 65538, 1441823, 0, 65539, 1441824, 0, 65537, 1572863, 0, 65539, 1507328, 0, 131073, 1507329, 0, 131074, 1507330, 0, 131074, 1507331, 0, 131074, 1507332, 0, 131074, 1507333, 0, 131074, 1507334, 0, 131074, 1507335, 0, 131074, 1507336, 0, 131074, 1507337, 0, 131074, 1507338, 0, 131074, 1507339, 0, 131074, 1507340, 0, 131074, 1507341, 0, 131074, 1507342, 0, 131074, 1507343, 0, 131074, 1507344, 0, 131074, 1507345, 0, 131074, 1507346, 0, 131074, 1507347, 0, 131074, 1507348, 0, 131074, 1507349, 0, 131074, 1507350, 0, 131074, 1507351, 0, 131074, 1507352, 0, 131074, 1507353, 0, 131074, 1507354, 0, 131074, 1507355, 0, 131074, 1507356, 0, 131074, 1507357, 0, 131074, 1507358, 0, 131074, 1507359, 0, 131075, 1507360, 0, 65537 ) + +[node name="Player" parent="NameEntry" instance=ExtResource( 10 )] +unique_name_in_owner = true +position = Vector2( 16, 160 ) +walk_speed = 100.0 +climb_speed = 78.0 + +[node name="Ladders" type="TileMap" parent="NameEntry"] +tile_set = ExtResource( 12 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 0, 0, 196609, 65536, 0, 196609, 131072, 0, 196609, 196608, 0, 196609, 262144, 0, 196609, 327680, 0, 196609, 393216, 0, 196609, 458752, 0, 196609, 524288, 0, 196609, 589824, 0, 196609, 655360, 0, 196609, 720896, 0, 196609, 786432, 0, 196609, 851968, 0, 196609, 917504, 0, 196609, 983040, 0, 196609, 1048576, 0, 196609, 1114112, 0, 196609, 1179648, 0, 196609, 1245184, 0, 196609 ) + +[node name="Letters" type="Node2D" parent="NameEntry"] + +[node name="LetterBlock1" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 32, 128 ) + +[node name="LetterBlock2" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 56, 128 ) +glyph = 1 + +[node name="LetterBlock3" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 80, 128 ) +glyph = 2 + +[node name="LetterBlock4" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 104, 128 ) +glyph = 3 + +[node name="LetterBlock5" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 128, 128 ) +glyph = 4 + +[node name="LetterBlock6" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 152, 128 ) +glyph = 5 + +[node name="LetterBlock7" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 176, 128 ) +glyph = 6 + +[node name="LetterBlock8" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 200, 128 ) +glyph = 7 + +[node name="LetterBlock27" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 224, 128 ) +glyph = 36 + +[node name="LetterBlock9" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 40, 72 ) +glyph = 8 + +[node name="LetterBlock10" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 64, 72 ) +glyph = 9 + +[node name="LetterBlock11" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 88, 72 ) +glyph = 10 + +[node name="LetterBlock12" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 112, 72 ) +glyph = 11 + +[node name="LetterBlock13" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 136, 72 ) +glyph = 12 + +[node name="LetterBlock14" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 160, 72 ) +glyph = 13 + +[node name="LetterBlock15" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 184, 72 ) +glyph = 14 + +[node name="LetterBlock16" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 208, 72 ) +glyph = 15 + +[node name="LetterBlock17" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 232, 72 ) +glyph = 16 + +[node name="LetterBlock18" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 40, 16 ) +glyph = 17 + +[node name="LetterBlock19" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 64, 16 ) +glyph = 18 + +[node name="LetterBlock20" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 88, 16 ) +glyph = 19 + +[node name="LetterBlock21" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 112, 16 ) +glyph = 20 + +[node name="LetterBlock22" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 136, 16 ) +glyph = 21 + +[node name="LetterBlock23" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 160, 16 ) +glyph = 22 + +[node name="LetterBlock24" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 184, 16 ) +glyph = 23 + +[node name="LetterBlock25" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 208, 16 ) +glyph = 24 + +[node name="LetterBlock26" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 232, 16 ) +glyph = 25 + +[node name="Ladder" parent="NameEntry" instance=ExtResource( 15 )] +scale = Vector2( 1, 20 ) +can_climb_left = false + +[node name="Exit" type="Node2D" parent="NameEntry"] +position = Vector2( 248, 148 ) + +[node name="Background" type="Sprite" parent="NameEntry/Exit"] +position = Vector2( 0, 5 ) +z_index = -1 +texture = ExtResource( 19 ) + +[node name="ExitSprite" type="Sprite" parent="NameEntry/Exit"] +unique_name_in_owner = true +material = ExtResource( 17 ) +texture = ExtResource( 14 ) +hframes = 4 + +[node name="Energy" type="Node2D" parent="NameEntry/Exit/ExitSprite"] +show_behind_parent = true + +[node name="Wave1" type="ColorRect" parent="NameEntry/Exit/ExitSprite/Energy"] +material = SubResource( 9 ) +margin_left = -7.0 +margin_top = -3.0 +margin_right = 7.0 +margin_bottom = 12.0 +color = Color( 0.396078, 1, 1, 1 ) + +[node name="Wave2" type="ColorRect" parent="NameEntry/Exit/ExitSprite/Energy"] +material = SubResource( 10 ) +margin_left = -7.0 +margin_top = -3.0 +margin_right = 7.0 +margin_bottom = 12.0 +color = Color( 0.345098, 0.74902, 0.878431, 1 ) + +[node name="Sparkles" type="CPUParticles2D" parent="NameEntry/Exit/ExitSprite/Energy"] +position = Vector2( 0, 12 ) +amount = 16 +lifetime = 2.0 +emission_shape = 2 +emission_rect_extents = Vector2( 6, 0 ) +direction = Vector2( 0, -1 ) +spread = 0.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 12.0 +damping = 4.0 +color_initial_ramp = SubResource( 11 ) + +[node name="DetectPlayer" type="Area2D" parent="NameEntry/Exit"] +z_index = -3 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="NameEntry/Exit/DetectPlayer"] +position = Vector2( 0, 11 ) +shape = SubResource( 12 ) + +[node name="Collision" type="StaticBody2D" parent="NameEntry/Exit" groups=["can_stain"]] + +[node name="ClosedCollision" type="CollisionShape2D" parent="NameEntry/Exit/Collision"] +unique_name_in_owner = true +position = Vector2( 0, 4.5 ) +shape = SubResource( 7 ) + +[node name="TopShape" type="CollisionShape2D" parent="NameEntry/Exit/Collision"] +position = Vector2( 0, -7.5 ) +shape = SubResource( 8 ) + +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Sweet" to="." method="_difficulty_selected"] +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Sweet" to="DifficultySelect/MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Sweet" to="." method="_set_difficulty" binds= [ 0 ]] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Sweet" to="DifficultySelect/MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Salty" to="." method="_difficulty_selected"] +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Salty" to="DifficultySelect/MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Salty" to="." method="_set_difficulty" binds= [ 1 ]] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Salty" to="DifficultySelect/MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Spicy" to="." method="_difficulty_selected"] +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Spicy" to="DifficultySelect/MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Spicy" to="." method="_set_difficulty" binds= [ 2 ]] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Spicy" to="DifficultySelect/MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Pungent" to="." method="_difficulty_selected"] +[connection signal="button_down" from="DifficultySelect/ButtonsPanel/Pungent" to="DifficultySelect/MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Pungent" to="." method="_set_difficulty" binds= [ 3 ]] +[connection signal="focus_entered" from="DifficultySelect/ButtonsPanel/Pungent" to="DifficultySelect/MenuSounds" method="play_select_sound"] +[connection signal="area_entered" from="NameEntry/Exit/DetectPlayer" to="." method="_on_Exit_area_entered"] diff --git a/menus/file_select.gd b/menus/file_select.gd new file mode 100644 index 0000000..3eed580 --- /dev/null +++ b/menus/file_select.gd @@ -0,0 +1,34 @@ +extends Node + + +export var next_scene: PackedScene +var kill_mode = false +onready var description = $Description +onready var flavor_text = $FlavorText +onready var delete_background = $DeleteBackground + +func _ready() -> void: + Fade.fade_in(Options.transition_speed_secs) + $SelectFile1.call_deferred("grab_focus") + Game.current_palette = "default" + + +func _on_file_loaded() -> void: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = next_scene.instance() + +func set_kill_mode(value): + delete_background.visible = value + kill_mode = value + if value == true: + description.text = "KILL MODE" + flavor_text.text = "Eviscerate an old friend" + else: + description.text = "Select your destiny" + flavor_text.text = "Adventure awaits" + + + +func play_confirm_sound(): + pass # Replace with function body. diff --git a/menus/file_select.tscn b/menus/file_select.tscn new file mode 100644 index 0000000..e47036a --- /dev/null +++ b/menus/file_select.tscn @@ -0,0 +1,187 @@ +[gd_scene load_steps=18 format=2] + +[ext_resource path="res://menus/file_select_panel.tscn" type="PackedScene" id=1] +[ext_resource path="res://menus/level_select_scholar.tscn" type="PackedScene" id=2] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=3] +[ext_resource path="res://ui/theme.tres" type="Theme" id=4] +[ext_resource path="res://menus/back_button.tscn" type="PackedScene" id=5] +[ext_resource path="res://graphics/hud/delete_dim.png" type="Texture" id=6] +[ext_resource path="res://graphics/hud/delete.png" type="Texture" id=7] +[ext_resource path="res://graphics/borders/skaborder.png" type="Texture" id=8] +[ext_resource path="res://graphics/hud/file_select_arrow.png" type="Texture" id=9] +[ext_resource path="res://menus/file_select.gd" type="Script" id=10] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=11] +[ext_resource path="res://menus/DeleteButton.gd" type="Script" id=12] +[ext_resource path="res://menus/main_menu.tscn" type="PackedScene" id=13] +[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=14] + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 11 ) +shader_param/color_1 = Color( 0.2, 0.294118, 1, 1 ) +shader_param/color_2 = Color( 0, 0.0352941, 0.329412, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 0, 16 ) +shader_param/cycle_alternation = Vector2( 0, 0 ) +shader_param/uv_transform = Transform2D( 1, 1, 2, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 11 ) +shader_param/color_1 = Color( 0.960784, 0.2, 0.258824, 1 ) +shader_param/color_2 = Color( 0.286275, 0.0745098, 0.12549, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 32, 1 ) +shader_param/cycle_speed = Vector2( -8, 32 ) +shader_param/cycle_alternation = Vector2( 0, 0 ) +shader_param/uv_transform = Transform2D( 1, 1.582, 1, 2, 0, 0 ) + +[sub_resource type="SpriteFrames" id=4] +animations = [ { +"frames": [ ExtResource( 7 ), ExtResource( 6 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[node name="FileSelect" type="Node"] +script = ExtResource( 10 ) +next_scene = ExtResource( 2 ) + +[node name="TextureRect2" type="TextureRect" parent="."] +modulate = Color( 0, 0.109804, 1, 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 8 ) +expand = true +stretch_mode = 2 + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 2 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="DeleteBackground" type="ColorRect" parent="."] +visible = false +material = SubResource( 3 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="Panel" parent="." instance=ExtResource( 1 )] +margin_left = 12.0 +margin_top = 48.0 +margin_right = 84.0 +margin_bottom = 136.0 + +[node name="Panel2" parent="." instance=ExtResource( 1 )] +margin_left = 92.0 +margin_top = 48.0 +margin_right = 164.0 +margin_bottom = 136.0 +number = 2 + +[node name="Panel3" parent="." instance=ExtResource( 1 )] +margin_left = 172.0 +margin_top = 48.0 +margin_right = 244.0 +margin_bottom = 136.0 +number = 3 + +[node name="SelectFile1" type="TextureButton" parent="."] +material = ExtResource( 3 ) +margin_left = 12.0 +margin_top = 138.0 +margin_right = 84.0 +margin_bottom = 146.0 +focus_neighbour_left = NodePath("../SelectFile3") +focus_neighbour_right = NodePath("../SelectFile2") +focus_neighbour_bottom = NodePath("../Back") +texture_focused = ExtResource( 9 ) +expand = true +stretch_mode = 3 + +[node name="SelectFile2" type="TextureButton" parent="."] +material = ExtResource( 3 ) +margin_left = 92.0 +margin_top = 138.0 +margin_right = 164.0 +margin_bottom = 146.0 +focus_neighbour_left = NodePath("../SelectFile1") +focus_neighbour_right = NodePath("../SelectFile3") +focus_neighbour_bottom = NodePath("../Back") +texture_focused = ExtResource( 9 ) +expand = true +stretch_mode = 3 + +[node name="SelectFile3" type="TextureButton" parent="."] +material = ExtResource( 3 ) +margin_left = 172.0 +margin_top = 138.0 +margin_right = 244.0 +margin_bottom = 146.0 +focus_neighbour_left = NodePath("../SelectFile2") +focus_neighbour_right = NodePath("../SelectFile1") +focus_neighbour_bottom = NodePath("../Back") +texture_focused = ExtResource( 9 ) +expand = true +stretch_mode = 3 + +[node name="Back" parent="." instance=ExtResource( 5 )] +margin_left = 8.0 +margin_top = 144.0 +margin_right = 60.0 +margin_bottom = 177.0 +focus_neighbour_top = NodePath("../SelectFile1") +focus_neighbour_right = NodePath("../DeleteButton") +next_scene = ExtResource( 13 ) + +[node name="Description" type="Label" parent="."] +material = ExtResource( 3 ) +margin_top = 8.0 +margin_right = 256.0 +margin_bottom = 22.0 +theme = ExtResource( 4 ) +text = "Select your destiny" +align = 1 + +[node name="DeleteButton" type="TextureButton" parent="."] +margin_left = 212.0 +margin_top = 144.0 +margin_right = 237.0 +margin_bottom = 178.0 +focus_neighbour_left = NodePath("../Back") +focus_neighbour_top = NodePath("../SelectFile1") +texture_normal = ExtResource( 7 ) +script = ExtResource( 12 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="DeleteButton"] +position = Vector2( 13, 17 ) +frames = SubResource( 4 ) + +[node name="FlavorText" type="Label" parent="."] +material = ExtResource( 3 ) +margin_left = 40.0 +margin_top = 152.0 +margin_right = 208.0 +margin_bottom = 168.0 +theme = ExtResource( 4 ) +text = "Adventure awaits" +align = 1 + +[node name="MenuSounds" parent="." instance=ExtResource( 14 )] + +[connection signal="file_loaded" from="Panel" to="." method="_on_file_loaded"] +[connection signal="file_loaded" from="Panel2" to="." method="_on_file_loaded"] +[connection signal="file_loaded" from="Panel3" to="." method="_on_file_loaded"] +[connection signal="button_down" from="SelectFile1" to="Panel" method="select"] +[connection signal="button_down" from="SelectFile1" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="SelectFile1" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="SelectFile2" to="Panel2" method="select"] +[connection signal="button_down" from="SelectFile2" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="SelectFile2" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="SelectFile3" to="Panel3" method="select"] +[connection signal="button_down" from="SelectFile3" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="SelectFile3" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Back" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Back" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="DeleteButton" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="DeleteButton" to="MenuSounds" method="play_select_sound"] diff --git a/menus/file_select_panel.gd b/menus/file_select_panel.gd new file mode 100644 index 0000000..49e29ea --- /dev/null +++ b/menus/file_select_panel.gd @@ -0,0 +1,83 @@ +extends Panel + + +signal file_loaded() + +const FileCreate = preload("res://menus/file_create.tscn") + +export var number = 1 + +var file: Save.SaveFile = null + +onready var splatter = $DeathSplatter + +func _ready(): + $FileNumber.text = "FILE%d" % number + refresh() + + +func select() -> void: + if get_parent().kill_mode == false: + # if a file exists, load and play it! + if file: + # set current file and difficulty + Save.current_file = file + Game.difficulty = file.difficulty + Game.current_palette = file.palette + # update last-played file for continue button + Options.last_file = number + Options.save_options() + # let file select scene know a file has been loaded + emit_signal("file_loaded") + # empty file, so go to file creation screen + else: + # wait for fade + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + # create new file and give it to the file create screen + var file_create = FileCreate.instance() + file_create.file = Save.SaveFile.new("user://file%d.pr" % number) + SceneManager.current_scene = file_create + else: + #Delete file + if file: + var dir = Directory.new() + dir.remove(file.file_path) + splatter.emitting = true + Audio.play_sound(Audio.a_die,Audio.ac_die) + file = null + refresh() + + +func refresh(): + # check if the file exists + if File.new().file_exists("user://file%d.pr" % number): + # load file and fill in information + file = Save.load_file("user://file%d.pr" % number) + $"%Name".text = file.name + $"%ShardCounter".text = "%02d" % file.get_total_shards() + $"%KeyCounter".text = "%03d" % file.get_total_keys() + $"%DeathCounter".text = "%04d" % file.get_total_deaths() + $"%TimeCounter".text = "%02d:%02d" % [file.play_time / 3600.0, fmod(file.play_time / 60.0, 60.0)] + $"%Difficulty".text = Game.DIFFICULTY_NAMES[file.difficulty] + var palette = load("res://graphics/player/palettes/%s.tex" % file.palette) + $"%Palette".material.set_shader_param("palette", palette) + if file.palette == "super_player": + $"%Sparkles".visible = true + else: + $"%Sparkles".visible = false + + $"%MoriMarkGameComplete".visible = false + $"%MoriMark100Complete".visible = false + $"%MoriMarkNoDeath".visible = false + if file.levels["boss3"].completed: + $"%MoriMarkGameComplete".visible = true + if file.get_total_shards() >= 72: + $"%MoriMark100Complete".visible = true + if file.get_total_deaths() <= 0: + $"%MoriMarkNoDeath".visible = true + + else: + file = null + $FileExists.visible = false + $FileDoesNotExist.visible = true diff --git a/menus/file_select_panel.tscn b/menus/file_select_panel.tscn new file mode 100644 index 0000000..181d656 --- /dev/null +++ b/menus/file_select_panel.tscn @@ -0,0 +1,186 @@ +[gd_scene load_steps=20 format=2] + +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=2] +[ext_resource path="res://objects/collectibles/key.tscn" type="PackedScene" id=3] +[ext_resource path="res://ui/theme.tres" type="Theme" id=4] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=5] +[ext_resource path="res://menus/file_select_panel.gd" type="Script" id=6] +[ext_resource path="res://graphics/hud/deaths_head.png" type="Texture" id=7] +[ext_resource path="res://graphics/player/sg_idle.png" type="Texture" id=8] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=9] +[ext_resource path="res://objects/enemy/death_particles.tscn" type="PackedScene" id=10] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=11] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=12] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=13] +[ext_resource path="res://graphics/hud/mori_mark_100_complete.png" type="Texture" id=14] +[ext_resource path="res://graphics/hud/mori_mark_game_complete.png" type="Texture" id=15] +[ext_resource path="res://graphics/hud/mori_mark_no_death.png" type="Texture" id=16] + +[sub_resource type="ShaderMaterial" id=1] +resource_local_to_scene = true +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true +shader_param/palette = ExtResource( 9 ) + +[sub_resource type="Curve" id=2] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 13 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[node name="Panel" type="Panel"] +margin_right = 72.0 +margin_bottom = 88.0 +theme = ExtResource( 4 ) +script = ExtResource( 6 ) + +[node name="FileNumber" type="Label" parent="."] +material = ExtResource( 2 ) +margin_top = -10.0 +margin_right = 72.0 +theme = ExtResource( 4 ) +text = "file1" +align = 1 + +[node name="FileExists" type="Control" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Name" type="Label" parent="FileExists"] +unique_name_in_owner = true +margin_left = 8.0 +margin_top = 4.0 +margin_right = 64.0 +margin_bottom = 14.0 +text = "SG" +align = 1 + +[node name="TimeCounter" type="Label" parent="FileExists"] +unique_name_in_owner = true +margin_left = 3.0 +margin_top = 58.0 +margin_right = 69.0 +margin_bottom = 68.0 +text = "00:00" +align = 1 + +[node name="DeathCounter" type="Label" parent="FileExists"] +unique_name_in_owner = true +margin_left = 25.0 +margin_top = 47.0 +margin_right = 56.0 +margin_bottom = 57.0 +text = "0000" + +[node name="Palette" type="TextureRect" parent="FileExists"] +unique_name_in_owner = true +material = SubResource( 1 ) +margin_left = 8.0 +margin_top = 16.0 +margin_right = 28.0 +margin_bottom = 48.0 +texture = ExtResource( 8 ) +stretch_mode = 4 + +[node name="Sparkles" type="CPUParticles2D" parent="FileExists/Palette"] +unique_name_in_owner = true +visible = false +light_mask = 0 +position = Vector2( 10, 16 ) +amount = 2 +lifetime = 2.0 +texture = ExtResource( 12 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 10 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 2 ) +color = Color( 1, 0.972549, 0.52549, 1 ) +script = ExtResource( 11 ) + +[node name="ShardCounter" type="Label" parent="FileExists"] +unique_name_in_owner = true +margin_left = 43.0 +margin_top = 27.0 +margin_right = 67.0 +margin_bottom = 37.0 +text = "00" + +[node name="KeyCounter" type="Label" parent="FileExists"] +unique_name_in_owner = true +visible = false +margin_left = 43.0 +margin_top = 33.0 +margin_right = 64.0 +margin_bottom = 43.0 +text = "000" + +[node name="Shard" parent="FileExists" instance=ExtResource( 5 )] +position = Vector2( 32, 29 ) + +[node name="Key" parent="FileExists" instance=ExtResource( 3 )] +visible = false +position = Vector2( 32, 34 ) + +[node name="DeathsHead" type="Sprite" parent="FileExists"] +position = Vector2( 21, 52 ) +texture = ExtResource( 7 ) + +[node name="Difficulty" type="Label" parent="FileExists"] +unique_name_in_owner = true +margin_left = 8.0 +margin_top = 72.0 +margin_right = 65.0 +margin_bottom = 82.0 +text = "Spicy" +align = 1 + +[node name="FileDoesNotExist" type="Control" parent="."] +visible = false + +[node name="Label" type="Label" parent="FileDoesNotExist"] +margin_left = 3.0 +margin_top = 26.0 +margin_right = 69.0 +margin_bottom = 36.0 +text = "Empty!!!" +align = 1 + +[node name="DeathSplatter" parent="." instance=ExtResource( 10 )] +position = Vector2( 36, 47 ) +amount = 64 +lifetime = 1.0 +speed_scale = 3.0 +explosiveness = 1.0 +randomness = 0.34 +initial_velocity = 100.0 +scale_amount = 2.0 +spray_ammount = 0 + +[node name="MoriMarkGameComplete" type="Sprite" parent="."] +unique_name_in_owner = true +visible = false +material = SubResource( 3 ) +position = Vector2( 61, 57 ) +texture = ExtResource( 15 ) + +[node name="MoriMark100Complete" type="Sprite" parent="."] +unique_name_in_owner = true +visible = false +material = SubResource( 3 ) +position = Vector2( 61, 57 ) +texture = ExtResource( 14 ) + +[node name="MoriMarkNoDeath" type="Sprite" parent="."] +unique_name_in_owner = true +visible = false +material = SubResource( 3 ) +position = Vector2( 61, 57 ) +texture = ExtResource( 16 ) diff --git a/menus/game_over.gd b/menus/game_over.gd new file mode 100644 index 0000000..24c85f4 --- /dev/null +++ b/menus/game_over.gd @@ -0,0 +1,26 @@ +extends CanvasLayer + +onready var retry_button = $Panel/Retry +onready var exit_button = $Panel/Exit + +# Called when the node enters the scene tree for the first time. +func _ready(): + Fade.fade_in(Options.transition_speed_secs) + get_tree().paused = true + retry_button.grab_focus() + Audio.ac_music.stream_paused = false + Audio.play_music(load("res://audio/music/74(game_over).ogg")) + +func _on_Exit_button_down(): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + get_tree().paused = false + SceneManager.current_scene = load("res://menus/level_select_scholar.tscn").instance() + + +func _on_Retry_button_down(): + get_tree().paused = true + if Game.current_level == 11: + Game.change_map(load("res://maps/boss/boss3_arena.tscn")) + else: + Game.restart_level() diff --git a/menus/game_over.tscn b/menus/game_over.tscn new file mode 100644 index 0000000..5339600 --- /dev/null +++ b/menus/game_over.tscn @@ -0,0 +1,146 @@ +[gd_scene load_steps=16 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://objects/hud/3d_text.tscn" type="PackedScene" id=2] +[ext_resource path="res://ui/theme.tres" type="Theme" id=3] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=5] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=6] +[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=7] +[ext_resource path="res://menus/game_over.gd" type="Script" id=8] +[ext_resource path="res://shaders/wibble_border.gdshader" type="Shader" id=9] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.305882, 0.305882, 0.305882, 1 ) +shader_param/color_2 = Color( 0.223529, 0.223529, 0.223529, 1 ) +shader_param/checker_size = Vector2( 16, 8 ) +shader_param/pan_speed = Vector2( 16, 0 ) +shader_param/cycle_speed = Vector2( 1, 0 ) +shader_param/cycle_alternation = Vector2( 16, 0 ) +shader_param/uv_transform = Transform2D( 1, 1, 0, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=11] +shader = ExtResource( 6 ) +shader_param/speed = Vector2( 0, 4 ) +shader_param/ammount = Vector2( 0, 1 ) +shader_param/offset = Vector2( 0, 1 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=14] +shader = ExtResource( 9 ) +shader_param/speed = Vector2( 0, 4 ) +shader_param/ammount = Vector2( 0, 1 ) +shader_param/offset = Vector2( 0, 1 ) +shader_param/delay = Vector2( 0, 0 ) +shader_param/border_color = Color( 0.219608, 0.219608, 0.219608, 1 ) +shader_param/border_corners = true + +[sub_resource type="ShaderMaterial" id=10] +shader = ExtResource( 6 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=12] +shader = ExtResource( 9 ) +shader_param/speed = Vector2( 2, 0 ) +shader_param/ammount = Vector2( 4, 0 ) +shader_param/offset = Vector2( 2, 0 ) +shader_param/delay = Vector2( 0, 0 ) +shader_param/border_color = Color( 0.219608, 0.219608, 0.219608, 1 ) +shader_param/border_corners = true + +[sub_resource type="ShaderMaterial" id=13] +shader = ExtResource( 9 ) +shader_param/speed = Vector2( 0, 0 ) +shader_param/ammount = Vector2( 0, 0 ) +shader_param/offset = Vector2( 0, 1 ) +shader_param/delay = Vector2( 0, 0 ) +shader_param/border_color = Color( 0.219608, 0.219608, 0.219608, 1 ) +shader_param/border_corners = true + +[sub_resource type="SpatialMaterial" id=9] +albedo_color = Color( 0.901961, 0.133333, 0.133333, 1 ) +metallic = 0.35 + +[node name="GameOver" type="CanvasLayer"] +pause_mode = 2 +layer = 110 +script = ExtResource( 8 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="Panel" type="Panel" parent="."] +material = SubResource( 11 ) +margin_left = 72.0 +margin_top = 96.0 +margin_right = 184.0 +margin_bottom = 136.0 +theme = ExtResource( 3 ) +__meta__ = { +"_edit_group_": true +} + +[node name="Label" type="Label" parent="Panel"] +material = SubResource( 14 ) +margin_left = 16.0 +margin_top = 8.0 +margin_right = 93.0 +margin_bottom = 44.0 +text = "RETRY LEVEL +EXIT TO MAP +" + +[node name="Retry" type="TextureButton" parent="Panel"] +material = SubResource( 10 ) +margin_left = 8.0 +margin_top = 8.0 +margin_right = 16.0 +margin_bottom = 16.0 +texture_focused = ExtResource( 5 ) + +[node name="Exit" type="TextureButton" parent="Panel"] +material = SubResource( 10 ) +margin_left = 8.0 +margin_top = 21.0 +margin_right = 16.0 +margin_bottom = 29.0 +texture_focused = ExtResource( 5 ) + +[node name="MenuSounds" parent="." instance=ExtResource( 7 )] + +[node name="Label" type="Label" parent="."] +material = SubResource( 12 ) +margin_top = 51.0 +margin_right = 256.0 +margin_bottom = 87.0 +theme = ExtResource( 3 ) +text = "In reality, the game is +only over when +it ceases to be played." +align = 1 + +[node name="Label2" type="Label" parent="."] +material = SubResource( 13 ) +margin_top = 152.0 +margin_right = 256.0 +margin_bottom = 175.0 +theme = ExtResource( 3 ) +text = "The only way to improve is to learn +from mistakes" +align = 1 + +[node name="3DText" parent="." instance=ExtResource( 2 )] +text_material = SubResource( 9 ) +anim = "game over" + +[connection signal="button_down" from="Panel/Retry" to="." method="_on_Retry_button_down"] +[connection signal="button_down" from="Panel/Retry" to="3DText" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/Retry" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Panel/Exit" to="." method="_on_Exit_button_down"] +[connection signal="button_down" from="Panel/Exit" to="3DText" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/Exit" to="MenuSounds" method="play_select_sound"] diff --git a/menus/level_select_scholar.gd b/menus/level_select_scholar.gd new file mode 100644 index 0000000..6c1c13f --- /dev/null +++ b/menus/level_select_scholar.gd @@ -0,0 +1,289 @@ +extends Control + +export var travel_time: float = 1.0 +export var can_menu: bool = true + +var selected_level: int = 0 +var made_selection: bool = false +var selected_shard: int = 0 +var tween: SceneTreeTween = null +var hop_tween: SceneTreeTween = null +var boss_shown: bool = false +var starting_level = false + +onready var level_path: Path2D = $LevelPath +onready var player_position: PathFollow2D = $"%PlayerPosition" +onready var player_sprite: Sprite = $"%PlayerSprite" +onready var back_arrow: TextureRect = $"%BackArrow" +onready var level_title: Label = $"%LevelTitle" +onready var forward_arrow: TextureRect = $"%ForwardArrow" +onready var in_cave: PathFollow2D = $"%InCave" +onready var out_cave: PathFollow2D = $"%OutCave" +onready var score_any: Label = $"%ScoreAny" +onready var time_any: Label = $"%TimeAny" +onready var score_100: Label = $"%Score100" +onready var time_100: Label = $"%Time100" +onready var boss_time: Label = $"%BossTime" +onready var filled_shards: Node2D = $"%FilledShards" +onready var shard_title: Label = $"%ShardTitle" +onready var shard_arrow: Sprite = $"%ShardArrow" +onready var animation_player: AnimationPlayer = $AnimationPlayer +onready var boss_block: TextureRect = $"%BossBlock" +onready var shards_block: HBoxContainer = $"%ShardsBlock" +onready var shards_needed: Label = $"%ShardsNeeded" +onready var world_title: Label = $"%WorldTitle" +onready var options_screen = $OptionsScreen + +const music = preload("res://audio/music/vitreous_squares.ogg") + +func _ready() -> void: + if Audio.ac_music.get_stream() != music: + Audio.play_music(music) + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + player_sprite.material.set_shader_param("palette", palette) + if Game.current_palette == "super_player": + $"%Sparkles".visible = true + $ShardCount.text = "%02d" % Save.current_file.get_total_shards() + + var save := Save.current_file + + if save.levels["boss3"].completed: + $"%Whirlpool".visible = true + $"%Whirlpool".play("default") + else: + $"%Whirlpool".visible = false + + Fade.fade_in(Options.transition_speed_secs) + # set initial offset + selected_level = Game.current_level + var target_level = level_path.get_node(LevelData.levels[selected_level].save_id) + if target_level != null: + player_position.offset = target_level.offset + _select_level(selected_level) + call_deferred("grab_focus") + +#func _input(event: InputEvent) -> void: +# # load selected map +# if Input.is_action_just_pressed("ui_accept"): +# Game.current_level = selected_level +# Game.change_map(LevelData.levels[selected_level].scene) +# elif Input.is_action_just_pressed("ui_right"): +# _select_level(int(clamp(selected_level + 1, 0, LevelData.levels.size() - 1))) +# elif Input.is_action_just_pressed("ui_left"): +# _select_level(int(clamp(selected_level - 1, 0, LevelData.levels.size() - 1))) + +#func _process(delta: float) -> void: +# # load selected map +# if Input.is_action_just_pressed("ui_accept"): +# Game.current_level = selected_level +# Game.change_map(LevelData.levels[selected_level].scene) +# elif Input.is_action_just_pressed("ui_right"): +# _select_level(int(clamp(selected_level + 1, 0, LevelData.levels.size() - 1))) +# elif Input.is_action_just_pressed("ui_left"): +# _select_level(int(clamp(selected_level - 1, 0, LevelData.levels.size() - 1))) + +func _process(delta: float) -> void: + forward_arrow.visible = true + boss_block.visible = false + shards_block.visible = false + if selected_level + 1 < LevelData.levels.size(): + var save := Save.current_file + var level: LevelEntry = LevelData.levels[selected_level + 1] + if save.get_total_shards() < level.shards_required: + forward_arrow.visible = false + boss_block.visible = false + shards_block.visible = true + shards_needed.text = str(level.shards_required) + if level.boss_required != "" and not save.levels[level.boss_required].completed: + forward_arrow.visible = false + shards_block.visible = false + boss_block.visible = true + # make SG disappear inside of cave + if player_position.offset >= in_cave.offset and player_position.offset <= out_cave.offset: + player_sprite.visible = false + else: + player_sprite.visible = true + + +func _input(event: InputEvent) -> void: +# if event.is_action_pressed("ui_cancel") and $"%MenuPopup".rect_scale.y >= 1.0: +# animation_player.play("hide_menu") + pass + +func _gui_input(event: InputEvent) -> void: + if event.is_action_pressed("ui_cancel") or event.is_action_pressed("pause") && $"%MenuPopup".visible == false: + if can_menu: + animation_player.play("show_menu") + if not made_selection: # player is walking around + if event.is_action_pressed("ui_accept"): + _update_stats() + made_selection = true + elif event.is_action_pressed("ui_right"): + var level = int(clamp(selected_level + 1, 0, LevelData.levels.size() - 1)) + if _can_travel(level): + _select_level(level) + elif event.is_action_pressed("ui_left"): + var level = int(clamp(selected_level - 1, 0, LevelData.levels.size() - 1)) + if _can_travel(level): + _select_level(level) + else: # player has selected level + if event.is_action_pressed("ui_start") or event.is_action_pressed("ui_accept"): + starting_level = true + $"%MenuPopup".rect_position.y = 9001 + Game.current_level = selected_level + Game.change_map(LevelData.levels[selected_level].scene) + elif event.is_action_pressed("ui_cancel"): + if boss_shown: + animation_player.play("hide_boss") + boss_shown = false + else: + animation_player.play("hide_stats") + made_selection = false + elif event.is_action_pressed("ui_right"): + selected_shard = posmod(selected_shard + 1, 8) + shard_title.text = LevelData.levels[selected_level].shard_titles[selected_shard] + shard_arrow.position.x = filled_shards.get_child(selected_shard).position.x + elif event.is_action_pressed("ui_left"): + selected_shard = posmod(selected_shard - 1, 8) + shard_title.text = LevelData.levels[selected_level].shard_titles[selected_shard] + shard_arrow.position.x = filled_shards.get_child(selected_shard).position.x + elif event.is_action_pressed("ui_down"): + var level = int(clamp(selected_level + 1, 0, LevelData.levels.size() - 1)) + if _can_travel(level): + _select_level(level) + _update_stats(false) + elif event.is_action_pressed("ui_up"): + var level = int(clamp(selected_level - 1, 0, LevelData.levels.size() - 1)) + if _can_travel(level): + _select_level(level) + _update_stats(false) + +func _select_level(level_id: int) -> void: + var level = LevelData.levels[level_id] + selected_level = level_id + Game.current_level = selected_level + # hide arrows at edges of leve set + if level_id == 0: + back_arrow.modulate.a = 0.0 + else: + back_arrow.modulate.a = 1.0 + if level_id == LevelData.levels.size() - 1: + forward_arrow.modulate.a = 0.0 + else: + forward_arrow.modulate.a = 1.0 + # set text + level_title.text = level.title + #set world name + if selected_level < 3: world_title.text = "Garden of love:\nremnants of nature's beauty" + if selected_level == 3: world_title.text = "Artificial life:\namalgam, stranger to the gods" + if selected_level > 3 && selected_level < 7: world_title.text = "Harsh Reality:\nHappiness through Hardship" + if selected_level == 7: world_title.text = "Dr.Intelli the Vengeful monster:\nfriend to no one, cold metal prison" + if selected_level > 7 && selected_level < 11: world_title.text = "Artificial world:\nend man-made suffering" + if selected_level == 11: world_title.text = "This is it SG...\nchange the future, we believe in you" + if selected_level > 11: world_title.text = "Great Job!\nwelcome to bonus land!" + # initiate animation + _travel_to_level(level.save_id) + +func _can_travel(index: int) -> bool: + var save := Save.current_file + var level: LevelEntry = LevelData.levels[index] + if save.get_total_shards() < level.shards_required: + return false + if level.boss_required != "": + return save.levels[level.boss_required].completed + return true + +func _travel_to_level(level_name: String) -> void: + # get path offset of target level + var target_level = level_path.get_node(level_name) + if target_level != null: + if target_level.offset < player_position.offset: + player_sprite.flip_h = true + else: + player_sprite.flip_h = false + # kill existing tweens if exist + if tween != null: + tween.kill() + if hop_tween != null: + hop_tween.kill() + player_sprite.position.y = -2.0 + + # hopping animation + hop_tween = create_tween().set_loops() + hop_tween.tween_property(player_sprite, "position:y", -4.0, 0.0) + hop_tween.tween_interval(0.1) + hop_tween.tween_property(player_sprite, "position:y", -2.0, 0.0) + hop_tween.tween_interval(0.1) + + # travel animation + tween = create_tween() + # go to target offset + tween.tween_property(player_position, "offset", target_level.offset, travel_time) + # kill other animation + tween.tween_callback(hop_tween, "kill") + tween.tween_property(player_sprite, "position:y", -2.0, 0.0) + +func _update_stats(popup: bool = true) -> void: + # fill in level panel information + var save_id = LevelData.levels[selected_level].save_id + var save_data: Save.LevelSaveData = Save.current_file.levels[save_id] + if LevelData.levels[selected_level].boss: + boss_time.text = Game.format_time(save_data.time_any) + match selected_level: + 3: + $"%PressStartBoss".text = "Press Start To Fight!" + $"%BossFlavorText".text = "Swiftest Slay" + 7: + $"%PressStartBoss".text = "Press Start To Fight!" + $"%BossFlavorText".text = "Speediest Smashing" + 11: + $"%PressStartBoss".text = "Press Start To Change The Future!" + $"%BossFlavorText".text = "Fastest Future" + if popup: + animation_player.play("show_boss") + elif not boss_shown: + $AuxPlayer.play("hide_stats") + animation_player.play("show_boss") + boss_shown = true + else: + score_any.text = "%05d" % save_data.score_any + time_any.text = Game.format_time(save_data.time_any) + score_100.text = "%05d" % save_data.score_100 + time_100.text = Game.format_time(save_data.time_100) + var shards = filled_shards.get_children() + for i in 8: + shards[i].visible = save_data.shards_collected[i] + selected_shard = 0 + shard_title.text = LevelData.levels[selected_level].shard_titles[selected_shard] + shard_arrow.position.x = filled_shards.get_child(selected_shard).position.x + if popup: + animation_player.play("show_stats") + elif boss_shown: + $AuxPlayer.play("hide_boss") + animation_player.play("show_stats") + boss_shown = false + + +func _on_StayHere_pressed() -> void: + animation_player.play("hide_exit") + + +func _on_ExitMenu_pressed() -> void: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/main_menu.tscn").instance() + + +func _on_PalettesButton_button_down() -> void: + SceneManager.current_scene = load("res://menus/palette_select.tscn").instance() + +func _on_OptionsScreen_exit(): + options_screen.visible = false + $"%OptionsButton".grab_focus() + +func _on_OptionsButton_button_down(): + options_screen.visible = true + options_screen.focus() + +func _on_ResumeButton_button_down(): + $MenuSounds.can_play = false diff --git a/menus/level_select_scholar.tscn b/menus/level_select_scholar.tscn new file mode 100644 index 0000000..d7c178b --- /dev/null +++ b/menus/level_select_scholar.tscn @@ -0,0 +1,1728 @@ +[gd_scene load_steps=56 format=2] + +[ext_resource path="res://menus/level_select_scholar.gd" type="Script" id=1] +[ext_resource path="res://graphics/level_select/world_map.png" type="Texture" id=2] +[ext_resource path="res://graphics/level_select/small_sg.png" type="Texture" id=3] +[ext_resource path="res://ui/theme.tres" type="Theme" id=4] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=5] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=6] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=7] +[ext_resource path="res://graphics/hud/deaths_head.png" type="Texture" id=8] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=9] +[ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=10] +[ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=11] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=12] +[ext_resource path="res://graphics/level_select/wave_particle.png" type="Texture" id=13] +[ext_resource path="res://graphics/hud/levelselect_arrow.png" type="Texture" id=14] +[ext_resource path="res://graphics/level_select/whirlpool.png" type="Texture" id=15] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=16] +[ext_resource path="res://shaders/recolor.tres" type="Shader" id=17] +[ext_resource path="res://objects/hud/options_screen_scholar.tscn" type="PackedScene" id=18] +[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=19] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=20] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=21] +[ext_resource path="res://graphics/hud/gamepad_buttons.png" type="Texture" id=22] +[ext_resource path="res://scripts/show_button.gd" type="Script" id=23] + +[sub_resource type="AtlasTexture" id=33] +atlas = ExtResource( 15 ) +region = Rect2( 0, 0, 48, 48 ) + +[sub_resource type="AtlasTexture" id=34] +atlas = ExtResource( 15 ) +region = Rect2( 48, 0, 48, 48 ) + +[sub_resource type="AtlasTexture" id=35] +atlas = ExtResource( 15 ) +region = Rect2( 96, 0, 48, 48 ) + +[sub_resource type="AtlasTexture" id=36] +atlas = ExtResource( 15 ) +region = Rect2( 144, 0, 48, 48 ) + +[sub_resource type="SpriteFrames" id=32] +animations = [ { +"frames": [ SubResource( 33 ), SubResource( 34 ), SubResource( 35 ), SubResource( 36 ) ], +"loop": true, +"name": "default", +"speed": 8.0 +} ] + +[sub_resource type="CanvasItemMaterial" id=9] +particles_animation = true +particles_anim_h_frames = 9 +particles_anim_v_frames = 1 +particles_anim_loop = false + +[sub_resource type="Curve2D" id=1] +_data = { +"points": PoolVector2Array( -2.9375, -8.1875, 2.9375, 8.1875, 61, 140, -4.4375, -0.0625, 4.4375, 0.0625, 78, 149, -4.15425, 1.32583, 4.15425, -1.32583, 96, 148, -1.65424, 3.52941, 1.65424, -3.52941, 112, 142, -1.88775, 1.4748, 1.88775, -1.4748, 113, 134, 0, 0, 0, 0, 119, 134, -1.08543, 0.828444, 1.08543, -0.828444, 125, 134, 2.83044, 1.16526, -2.83044, -1.16526, 125, 128, -0.794597, 4.50272, 0.794597, -4.50272, 123, 106, -4.30959, 1.47157, 4.30959, -1.47157, 130, 93, -11.05, -1.311, 11.05, 1.311, 141, 96, -1.31102, 2.24746, 1.31102, -2.24746, 155, 99, -2.22725, 4.12041, 2.22725, -4.12041, 155, 86, -4.89994, 0, 4.89994, 0, 163, 77, 0, -4.73004, 0, 4.73004, 185, 92, 0, -4.51982, 0, 4.51982, 177, 100, -3.88915, 0.630672, 3.88915, -0.630672, 185, 107, -0.630672, -4.62493, 0.630672, 4.62493, 192, 118, 1.05112, -1.99713, -1.05112, 1.99713, 190, 128, 2.6278, -0.420448, -2.6278, 0.420448, 184, 132, 1.78381, -1.78381, -1.78381, 1.78381, 175, 132, -6.30672, -0.210224, 6.30672, 0.210224, 181, 137, -0.225119, 1.75324, 0.225119, -1.75324, 204, 130, -8.92331, -2.0232, 5.373, 1.21823, 212, 119, 4.62446, -6.34857, -4.62446, 6.34857, 202, 143, 4.51982, -0.420448, -4.51982, 0.420448, 174, 154, 4.83515, 0.315336, -4.83515, -0.315336, 152, 154, 4.60818, 2.75004, -4.60818, -2.75004, 136, 149, 3.67496, 4.00905, -3.67496, -4.00905, 127, 142, 3.95539, -2.40938, -3.95539, 2.40938, 123, 128, 4.56378, -0.496063, -4.56378, 0.496063, 109, 124, 1.78583, -5.5559, -1.78583, 5.5559, 102, 131, 6.15118, -3.86929, -6.15118, 3.86929, 96, 140, 5.5559, 0.694488, -5.5559, -0.694488, 75, 142, 0, 0, 0, 0, 62, 130 ) +} + +[sub_resource type="ShaderMaterial" id=15] +shader = ExtResource( 17 ) +shader_param/palette = ExtResource( 16 ) + +[sub_resource type="Curve" id=27] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 7 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 7 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 4, 0 ) + +[sub_resource type="ShaderMaterial" id=10] +shader = ExtResource( 9 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 9 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="Animation" id=6] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("LevelStats:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("LevelStats:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ExitPopup:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("ExitPopup:rect_scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 0.011 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("MenuPopup:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("MenuPopup:rect_scale") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/6/type = "value" +tracks/6/path = NodePath(".:can_menu") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("BossCenter:rect_scale") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 0.04 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("BossCenter:visible") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=16] +resource_name = "hide_boss" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("BossCenter:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("BossCenter:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.04 ), Vector2( 0, 0.04 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:can_menu") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=11] +resource_name = "hide_exit" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("ExitPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExitPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.07 ), Vector2( 0, 0.07 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("MenuPopup/PanelContainer/VBoxContainer/Menu/MenuButton") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} +tracks/3/type = "method" +tracks/3/path = NodePath("ExitPopup") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( ), +"transitions": PoolRealArray( ), +"values": [ ] +} +tracks/4/type = "value" +tracks/4/path = NodePath(".:can_menu") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=13] +resource_name = "hide_menu" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("MenuPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("MenuPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.035 ), Vector2( 1e-05, 0.035 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath(".") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:can_menu") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=8] +resource_name = "hide_stats" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("LevelStats:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("LevelStats:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.02 ), Vector2( 0, 0.02 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:can_menu") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=17] +resource_name = "show_boss" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("BossCenter:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("BossCenter:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0.04 ), Vector2( 1, 0.04 ), Vector2( 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:can_menu") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=12] +resource_name = "show_exit" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("ExitPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExitPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0.07 ), Vector2( 1, 0.07 ), Vector2( 1, 1 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/StayHere") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:can_menu") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=14] +resource_name = "show_menu" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("MenuPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("MenuPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 0.035 ), Vector2( 1, 0.035 ), Vector2( 1, 1 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("MenuPopup/PanelContainer/VBoxContainer/Resume/ResumeButton") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:can_menu") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=7] +resource_name = "show_stats" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("LevelStats:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("LevelStats:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0.02 ), Vector2( 1, 0.02 ), Vector2( 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:can_menu") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=18] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("LevelStats:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("LevelStats:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ExitPopup:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("ExitPopup:rect_scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 0.011 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("MenuPopup:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("MenuPopup:rect_scale") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} + +[sub_resource type="Animation" id=19] +resource_name = "hide_boss" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("BossCenter:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("BossCenter:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.04 ), Vector2( 0, 0.04 ) ] +} + +[sub_resource type="Animation" id=20] +resource_name = "hide_exit" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("ExitPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExitPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.07 ), Vector2( 0, 0.07 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("MenuPopup/PanelContainer/VBoxContainer/Menu/MenuButton") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} +tracks/3/type = "method" +tracks/3/path = NodePath("ExitPopup") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( ), +"transitions": PoolRealArray( ), +"values": [ ] +} + +[sub_resource type="Animation" id=21] +resource_name = "hide_menu" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("MenuPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("MenuPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.035 ), Vector2( 1e-05, 0.035 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath(".") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} + +[sub_resource type="Animation" id=22] +resource_name = "hide_stats" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("LevelStats:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("LevelStats:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1, 0.02 ), Vector2( 0, 0.02 ) ] +} + +[sub_resource type="Animation" id=23] +resource_name = "show_boss" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("BossCenter:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("BossCenter:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0.04 ), Vector2( 1, 0.04 ), Vector2( 1, 1 ) ] +} + +[sub_resource type="Animation" id=24] +resource_name = "show_exit" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("ExitPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExitPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0.07 ), Vector2( 1, 0.07 ), Vector2( 1, 1 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/StayHere") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} + +[sub_resource type="Animation" id=25] +resource_name = "show_menu" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("MenuPopup:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("MenuPopup:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 0.035 ), Vector2( 1, 0.035 ), Vector2( 1, 1 ) ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("MenuPopup/PanelContainer/VBoxContainer/Resume/ResumeButton") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} + +[sub_resource type="Animation" id=26] +resource_name = "show_stats" +length = 0.4 +tracks/0/type = "value" +tracks/0/path = NodePath("LevelStats:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("LevelStats:rect_scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0.02 ), Vector2( 1, 0.02 ), Vector2( 1, 1 ) ] +} + +[sub_resource type="AtlasTexture" id=37] +resource_local_to_scene = true +atlas = ExtResource( 22 ) +region = Rect2( 0, 0, 12, 10 ) + +[node name="LevelSelect" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +focus_mode = 2 +script = ExtResource( 1 ) + +[node name="WorldMap" type="TextureRect" parent="."] +margin_right = 256.0 +margin_bottom = 192.0 +texture = ExtResource( 2 ) + +[node name="Whirlpool" type="AnimatedSprite" parent="."] +unique_name_in_owner = true +position = Vector2( 83, 65 ) +frames = SubResource( 32 ) + +[node name="WaveParticles" type="CPUParticles2D" parent="."] +material = SubResource( 9 ) +amount = 12 +lifetime = 1.5 +texture = ExtResource( 13 ) +emission_shape = 3 +emission_points = PoolVector2Array( 3, 3, 3, 4, 3, 5, 3, 6, 3, 7, 3, 8, 3, 9, 3, 10, 3, 11, 3, 12, 3, 13, 3, 14, 3, 15, 3, 16, 3, 17, 3, 18, 3, 19, 3, 20, 3, 21, 3, 22, 3, 23, 3, 24, 3, 25, 3, 26, 3, 27, 3, 28, 3, 29, 3, 30, 3, 31, 3, 32, 3, 33, 3, 34, 3, 35, 3, 36, 3, 37, 3, 38, 3, 39, 3, 40, 3, 41, 3, 42, 3, 43, 3, 44, 3, 45, 3, 46, 3, 47, 3, 48, 3, 49, 3, 50, 3, 51, 3, 52, 3, 53, 3, 54, 3, 55, 3, 56, 3, 57, 3, 58, 3, 59, 3, 60, 3, 61, 3, 62, 3, 63, 3, 64, 3, 65, 3, 66, 3, 67, 3, 68, 3, 69, 3, 70, 3, 71, 3, 72, 3, 73, 3, 74, 3, 75, 3, 76, 3, 77, 3, 78, 3, 79, 3, 80, 3, 81, 3, 82, 3, 83, 3, 84, 3, 85, 3, 86, 3, 87, 3, 88, 3, 89, 3, 90, 3, 91, 3, 92, 3, 93, 3, 94, 3, 95, 3, 96, 3, 97, 3, 98, 3, 99, 3, 100, 3, 101, 3, 102, 3, 103, 3, 104, 3, 105, 3, 106, 3, 107, 3, 108, 3, 109, 3, 110, 3, 111, 3, 112, 3, 113, 3, 114, 3, 115, 3, 116, 3, 117, 3, 118, 3, 119, 3, 120, 3, 121, 3, 122, 3, 123, 3, 124, 3, 125, 3, 126, 3, 127, 3, 128, 3, 129, 3, 130, 3, 131, 3, 132, 3, 133, 3, 134, 3, 135, 3, 136, 3, 137, 3, 138, 3, 139, 3, 140, 3, 141, 3, 142, 3, 143, 3, 144, 3, 145, 3, 146, 3, 147, 3, 148, 3, 149, 3, 150, 3, 151, 3, 152, 3, 153, 3, 154, 3, 155, 3, 156, 3, 157, 3, 158, 3, 159, 3, 160, 3, 161, 3, 162, 3, 163, 3, 164, 3, 165, 3, 166, 3, 167, 3, 168, 3, 169, 3, 170, 3, 171, 3, 172, 3, 173, 3, 174, 3, 175, 3, 176, 3, 177, 3, 178, 3, 179, 3, 180, 3, 181, 3, 182, 3, 183, 3, 184, 3, 185, 3, 186, 3, 187, 3, 188, 4, 3, 4, 4, 4, 5, 4, 6, 4, 7, 4, 8, 4, 9, 4, 10, 4, 11, 4, 12, 4, 13, 4, 14, 4, 15, 4, 16, 4, 17, 4, 18, 4, 19, 4, 20, 4, 21, 4, 22, 4, 23, 4, 24, 4, 25, 4, 26, 4, 27, 4, 28, 4, 29, 4, 30, 4, 31, 4, 32, 4, 33, 4, 34, 4, 35, 4, 36, 4, 37, 4, 38, 4, 39, 4, 40, 4, 41, 4, 42, 4, 43, 4, 44, 4, 45, 4, 46, 4, 47, 4, 48, 4, 49, 4, 50, 4, 51, 4, 52, 4, 53, 4, 54, 4, 55, 4, 56, 4, 57, 4, 58, 4, 59, 4, 60, 4, 61, 4, 62, 4, 63, 4, 64, 4, 65, 4, 66, 4, 67, 4, 68, 4, 69, 4, 70, 4, 71, 4, 72, 4, 73, 4, 74, 4, 75, 4, 76, 4, 77, 4, 78, 4, 79, 4, 80, 4, 81, 4, 82, 4, 83, 4, 84, 4, 85, 4, 86, 4, 87, 4, 88, 4, 89, 4, 90, 4, 91, 4, 92, 4, 93, 4, 94, 4, 95, 4, 96, 4, 97, 4, 98, 4, 99, 4, 100, 4, 101, 4, 102, 4, 103, 4, 104, 4, 105, 4, 106, 4, 107, 4, 108, 4, 109, 4, 110, 4, 111, 4, 112, 4, 113, 4, 114, 4, 115, 4, 116, 4, 117, 4, 118, 4, 119, 4, 120, 4, 121, 4, 122, 4, 123, 4, 124, 4, 125, 4, 126, 4, 127, 4, 128, 4, 129, 4, 130, 4, 131, 4, 132, 4, 133, 4, 134, 4, 135, 4, 136, 4, 137, 4, 138, 4, 139, 4, 140, 4, 141, 4, 142, 4, 143, 4, 144, 4, 145, 4, 146, 4, 147, 4, 148, 4, 149, 4, 150, 4, 151, 4, 152, 4, 153, 4, 154, 4, 155, 4, 156, 4, 157, 4, 158, 4, 159, 4, 160, 4, 161, 4, 162, 4, 163, 4, 164, 4, 165, 4, 166, 4, 167, 4, 168, 4, 169, 4, 170, 4, 171, 4, 172, 4, 173, 4, 174, 4, 175, 4, 176, 4, 177, 4, 178, 4, 179, 4, 180, 4, 181, 4, 182, 4, 183, 4, 184, 4, 185, 4, 186, 4, 187, 4, 188, 5, 3, 5, 4, 5, 5, 5, 6, 5, 7, 5, 8, 5, 9, 5, 10, 5, 11, 5, 12, 5, 13, 5, 14, 5, 15, 5, 16, 5, 17, 5, 18, 5, 19, 5, 20, 5, 21, 5, 22, 5, 23, 5, 24, 5, 25, 5, 26, 5, 27, 5, 28, 5, 29, 5, 30, 5, 31, 5, 32, 5, 33, 5, 34, 5, 35, 5, 36, 5, 37, 5, 38, 5, 39, 5, 40, 5, 41, 5, 42, 5, 43, 5, 44, 5, 45, 5, 46, 5, 47, 5, 48, 5, 49, 5, 50, 5, 51, 5, 52, 5, 53, 5, 54, 5, 55, 5, 56, 5, 57, 5, 58, 5, 59, 5, 60, 5, 61, 5, 62, 5, 63, 5, 64, 5, 65, 5, 66, 5, 67, 5, 68, 5, 69, 5, 70, 5, 71, 5, 72, 5, 73, 5, 74, 5, 75, 5, 76, 5, 77, 5, 78, 5, 79, 5, 80, 5, 81, 5, 82, 5, 83, 5, 84, 5, 85, 5, 86, 5, 87, 5, 88, 5, 89, 5, 90, 5, 91, 5, 92, 5, 93, 5, 94, 5, 95, 5, 96, 5, 97, 5, 98, 5, 99, 5, 100, 5, 101, 5, 102, 5, 103, 5, 104, 5, 105, 5, 106, 5, 107, 5, 108, 5, 109, 5, 110, 5, 111, 5, 112, 5, 113, 5, 114, 5, 115, 5, 116, 5, 117, 5, 118, 5, 119, 5, 120, 5, 121, 5, 122, 5, 123, 5, 124, 5, 125, 5, 126, 5, 127, 5, 128, 5, 129, 5, 130, 5, 131, 5, 132, 5, 133, 5, 134, 5, 135, 5, 136, 5, 137, 5, 138, 5, 139, 5, 140, 5, 141, 5, 142, 5, 143, 5, 144, 5, 145, 5, 146, 5, 147, 5, 148, 5, 149, 5, 150, 5, 151, 5, 152, 5, 153, 5, 154, 5, 155, 5, 156, 5, 157, 5, 158, 5, 159, 5, 160, 5, 161, 5, 162, 5, 163, 5, 164, 5, 165, 5, 166, 5, 167, 5, 168, 5, 169, 5, 170, 5, 171, 5, 172, 5, 173, 5, 174, 5, 175, 5, 176, 5, 177, 5, 178, 5, 179, 5, 180, 5, 181, 5, 182, 5, 183, 5, 184, 5, 185, 5, 186, 5, 187, 5, 188, 6, 3, 6, 4, 6, 5, 6, 6, 6, 7, 6, 8, 6, 9, 6, 10, 6, 11, 6, 12, 6, 13, 6, 14, 6, 15, 6, 16, 6, 17, 6, 18, 6, 19, 6, 20, 6, 21, 6, 22, 6, 23, 6, 24, 6, 25, 6, 26, 6, 27, 6, 28, 6, 29, 6, 30, 6, 31, 6, 32, 6, 33, 6, 34, 6, 35, 6, 36, 6, 37, 6, 38, 6, 39, 6, 40, 6, 41, 6, 42, 6, 43, 6, 44, 6, 45, 6, 46, 6, 47, 6, 48, 6, 49, 6, 50, 6, 51, 6, 52, 6, 53, 6, 54, 6, 55, 6, 56, 6, 57, 6, 58, 6, 59, 6, 60, 6, 61, 6, 62, 6, 63, 6, 64, 6, 65, 6, 66, 6, 67, 6, 68, 6, 69, 6, 70, 6, 71, 6, 72, 6, 73, 6, 74, 6, 75, 6, 76, 6, 77, 6, 78, 6, 79, 6, 80, 6, 81, 6, 82, 6, 83, 6, 84, 6, 85, 6, 86, 6, 87, 6, 88, 6, 89, 6, 90, 6, 91, 6, 92, 6, 93, 6, 94, 6, 95, 6, 96, 6, 97, 6, 98, 6, 99, 6, 100, 6, 101, 6, 102, 6, 103, 6, 104, 6, 105, 6, 106, 6, 107, 6, 108, 6, 109, 6, 110, 6, 111, 6, 112, 6, 113, 6, 114, 6, 115, 6, 116, 6, 117, 6, 118, 6, 119, 6, 120, 6, 121, 6, 122, 6, 123, 6, 124, 6, 125, 6, 126, 6, 127, 6, 128, 6, 129, 6, 130, 6, 131, 6, 132, 6, 133, 6, 134, 6, 135, 6, 136, 6, 137, 6, 138, 6, 139, 6, 140, 6, 141, 6, 142, 6, 143, 6, 144, 6, 145, 6, 146, 6, 147, 6, 148, 6, 149, 6, 150, 6, 151, 6, 152, 6, 153, 6, 154, 6, 155, 6, 156, 6, 157, 6, 158, 6, 159, 6, 160, 6, 161, 6, 162, 6, 163, 6, 164, 6, 165, 6, 166, 6, 167, 6, 168, 6, 169, 6, 170, 6, 171, 6, 172, 6, 173, 6, 174, 6, 175, 6, 176, 6, 177, 6, 178, 6, 179, 6, 180, 6, 181, 6, 182, 6, 183, 6, 184, 6, 185, 6, 186, 6, 187, 6, 188, 7, 3, 7, 4, 7, 5, 7, 6, 7, 7, 7, 8, 7, 9, 7, 10, 7, 11, 7, 12, 7, 13, 7, 14, 7, 15, 7, 16, 7, 17, 7, 18, 7, 19, 7, 20, 7, 21, 7, 22, 7, 23, 7, 24, 7, 25, 7, 26, 7, 27, 7, 28, 7, 29, 7, 30, 7, 31, 7, 32, 7, 33, 7, 34, 7, 35, 7, 36, 7, 37, 7, 38, 7, 39, 7, 40, 7, 41, 7, 42, 7, 43, 7, 44, 7, 45, 7, 46, 7, 47, 7, 48, 7, 49, 7, 50, 7, 51, 7, 52, 7, 53, 7, 54, 7, 55, 7, 56, 7, 57, 7, 58, 7, 59, 7, 60, 7, 61, 7, 62, 7, 63, 7, 64, 7, 65, 7, 66, 7, 67, 7, 68, 7, 69, 7, 70, 7, 71, 7, 72, 7, 73, 7, 74, 7, 75, 7, 76, 7, 77, 7, 78, 7, 79, 7, 80, 7, 81, 7, 82, 7, 83, 7, 84, 7, 85, 7, 86, 7, 87, 7, 88, 7, 89, 7, 90, 7, 91, 7, 92, 7, 93, 7, 94, 7, 95, 7, 96, 7, 97, 7, 98, 7, 99, 7, 100, 7, 101, 7, 102, 7, 103, 7, 104, 7, 105, 7, 106, 7, 107, 7, 108, 7, 109, 7, 110, 7, 111, 7, 112, 7, 113, 7, 114, 7, 115, 7, 116, 7, 117, 7, 118, 7, 119, 7, 120, 7, 121, 7, 122, 7, 123, 7, 124, 7, 125, 7, 126, 7, 127, 7, 128, 7, 129, 7, 130, 7, 131, 7, 132, 7, 133, 7, 134, 7, 135, 7, 136, 7, 137, 7, 138, 7, 139, 7, 140, 7, 141, 7, 142, 7, 143, 7, 144, 7, 145, 7, 146, 7, 147, 7, 148, 7, 149, 7, 150, 7, 151, 7, 152, 7, 153, 7, 154, 7, 155, 7, 156, 7, 157, 7, 158, 7, 159, 7, 160, 7, 161, 7, 162, 7, 163, 7, 164, 7, 165, 7, 166, 7, 167, 7, 168, 7, 169, 7, 170, 7, 171, 7, 172, 7, 173, 7, 174, 7, 175, 7, 176, 7, 177, 7, 178, 7, 179, 7, 180, 7, 181, 7, 182, 7, 183, 7, 184, 7, 185, 7, 186, 7, 187, 7, 188, 8, 3, 8, 4, 8, 5, 8, 6, 8, 7, 8, 8, 8, 9, 8, 10, 8, 11, 8, 12, 8, 13, 8, 14, 8, 15, 8, 16, 8, 17, 8, 18, 8, 19, 8, 20, 8, 21, 8, 22, 8, 23, 8, 24, 8, 25, 8, 26, 8, 27, 8, 28, 8, 29, 8, 30, 8, 31, 8, 32, 8, 33, 8, 34, 8, 35, 8, 36, 8, 37, 8, 38, 8, 39, 8, 40, 8, 41, 8, 42, 8, 43, 8, 44, 8, 45, 8, 46, 8, 47, 8, 48, 8, 49, 8, 50, 8, 51, 8, 52, 8, 53, 8, 54, 8, 55, 8, 56, 8, 57, 8, 58, 8, 59, 8, 60, 8, 61, 8, 62, 8, 63, 8, 64, 8, 65, 8, 66, 8, 67, 8, 68, 8, 69, 8, 70, 8, 71, 8, 72, 8, 73, 8, 74, 8, 75, 8, 76, 8, 77, 8, 78, 8, 79, 8, 80, 8, 81, 8, 82, 8, 83, 8, 84, 8, 85, 8, 86, 8, 87, 8, 88, 8, 89, 8, 90, 8, 91, 8, 92, 8, 93, 8, 94, 8, 95, 8, 96, 8, 97, 8, 98, 8, 99, 8, 100, 8, 101, 8, 102, 8, 103, 8, 104, 8, 105, 8, 106, 8, 107, 8, 108, 8, 109, 8, 110, 8, 111, 8, 112, 8, 113, 8, 114, 8, 115, 8, 116, 8, 117, 8, 118, 8, 119, 8, 120, 8, 121, 8, 122, 8, 123, 8, 124, 8, 125, 8, 126, 8, 127, 8, 128, 8, 129, 8, 130, 8, 131, 8, 132, 8, 133, 8, 134, 8, 135, 8, 136, 8, 137, 8, 138, 8, 139, 8, 140, 8, 141, 8, 142, 8, 143, 8, 144, 8, 145, 8, 146, 8, 147, 8, 148, 8, 154, 8, 155, 8, 156, 8, 157, 8, 158, 8, 159, 8, 160, 8, 161, 8, 162, 8, 163, 8, 164, 8, 165, 8, 166, 8, 167, 8, 168, 8, 169, 8, 170, 8, 171, 8, 172, 8, 173, 8, 174, 8, 175, 8, 176, 8, 177, 8, 178, 8, 179, 8, 180, 8, 181, 8, 182, 8, 183, 8, 184, 8, 185, 8, 186, 8, 187, 8, 188, 9, 3, 9, 4, 9, 5, 9, 6, 9, 7, 9, 8, 9, 9, 9, 10, 9, 11, 9, 12, 9, 13, 9, 14, 9, 15, 9, 16, 9, 17, 9, 18, 9, 19, 9, 20, 9, 21, 9, 22, 9, 23, 9, 24, 9, 25, 9, 26, 9, 27, 9, 28, 9, 29, 9, 30, 9, 31, 9, 32, 9, 33, 9, 34, 9, 35, 9, 36, 9, 37, 9, 38, 9, 39, 9, 40, 9, 41, 9, 42, 9, 43, 9, 44, 9, 45, 9, 46, 9, 47, 9, 48, 9, 49, 9, 50, 9, 51, 9, 52, 9, 53, 9, 54, 9, 55, 9, 56, 9, 57, 9, 58, 9, 59, 9, 60, 9, 61, 9, 62, 9, 63, 9, 64, 9, 65, 9, 66, 9, 67, 9, 68, 9, 69, 9, 70, 9, 71, 9, 72, 9, 73, 9, 74, 9, 75, 9, 76, 9, 77, 9, 78, 9, 79, 9, 80, 9, 81, 9, 82, 9, 83, 9, 84, 9, 85, 9, 86, 9, 87, 9, 88, 9, 89, 9, 90, 9, 91, 9, 92, 9, 93, 9, 94, 9, 95, 9, 96, 9, 97, 9, 98, 9, 99, 9, 100, 9, 101, 9, 102, 9, 103, 9, 104, 9, 105, 9, 106, 9, 107, 9, 108, 9, 109, 9, 110, 9, 111, 9, 112, 9, 113, 9, 114, 9, 115, 9, 116, 9, 117, 9, 118, 9, 119, 9, 120, 9, 121, 9, 122, 9, 123, 9, 124, 9, 125, 9, 126, 9, 127, 9, 128, 9, 129, 9, 130, 9, 131, 9, 132, 9, 133, 9, 134, 9, 135, 9, 136, 9, 137, 9, 138, 9, 139, 9, 140, 9, 141, 9, 142, 9, 143, 9, 144, 9, 145, 9, 146, 9, 147, 9, 162, 9, 163, 9, 164, 9, 165, 9, 166, 9, 167, 9, 168, 9, 169, 9, 170, 9, 171, 9, 172, 9, 173, 9, 174, 9, 175, 9, 176, 9, 177, 9, 178, 9, 179, 9, 180, 9, 181, 9, 182, 9, 183, 9, 184, 9, 185, 9, 186, 9, 187, 9, 188, 10, 3, 10, 4, 10, 5, 10, 6, 10, 7, 10, 8, 10, 9, 10, 10, 10, 11, 10, 12, 10, 13, 10, 14, 10, 15, 10, 16, 10, 17, 10, 18, 10, 19, 10, 20, 10, 21, 10, 22, 10, 23, 10, 24, 10, 25, 10, 26, 10, 27, 10, 28, 10, 29, 10, 30, 10, 31, 10, 32, 10, 33, 10, 34, 10, 35, 10, 36, 10, 37, 10, 38, 10, 39, 10, 40, 10, 41, 10, 42, 10, 43, 10, 44, 10, 45, 10, 46, 10, 47, 10, 48, 10, 49, 10, 50, 10, 51, 10, 52, 10, 53, 10, 54, 10, 55, 10, 56, 10, 57, 10, 58, 10, 59, 10, 60, 10, 61, 10, 62, 10, 63, 10, 64, 10, 65, 10, 66, 10, 67, 10, 68, 10, 69, 10, 70, 10, 71, 10, 72, 10, 73, 10, 74, 10, 75, 10, 76, 10, 77, 10, 78, 10, 79, 10, 80, 10, 81, 10, 82, 10, 83, 10, 84, 10, 85, 10, 86, 10, 87, 10, 88, 10, 89, 10, 90, 10, 91, 10, 92, 10, 93, 10, 94, 10, 95, 10, 96, 10, 97, 10, 98, 10, 99, 10, 100, 10, 101, 10, 102, 10, 103, 10, 104, 10, 105, 10, 106, 10, 107, 10, 108, 10, 109, 10, 110, 10, 111, 10, 112, 10, 113, 10, 114, 10, 115, 10, 116, 10, 117, 10, 118, 10, 119, 10, 120, 10, 121, 10, 122, 10, 123, 10, 124, 10, 125, 10, 126, 10, 127, 10, 128, 10, 129, 10, 130, 10, 131, 10, 132, 10, 133, 10, 134, 10, 135, 10, 136, 10, 137, 10, 138, 10, 139, 10, 140, 10, 141, 10, 142, 10, 143, 10, 144, 10, 145, 10, 146, 10, 147, 10, 162, 10, 163, 10, 164, 10, 165, 10, 166, 10, 167, 10, 168, 10, 169, 10, 170, 10, 171, 10, 172, 10, 173, 10, 174, 10, 175, 10, 176, 10, 177, 10, 178, 10, 179, 10, 180, 10, 181, 10, 182, 10, 183, 10, 184, 10, 185, 10, 186, 10, 187, 10, 188, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 11, 11, 11, 12, 11, 13, 11, 14, 11, 15, 11, 16, 11, 17, 11, 18, 11, 19, 11, 20, 11, 21, 11, 22, 11, 23, 11, 24, 11, 25, 11, 26, 11, 27, 11, 28, 11, 29, 11, 30, 11, 31, 11, 32, 11, 33, 11, 34, 11, 35, 11, 36, 11, 37, 11, 38, 11, 39, 11, 40, 11, 41, 11, 42, 11, 43, 11, 44, 11, 45, 11, 46, 11, 47, 11, 48, 11, 49, 11, 50, 11, 51, 11, 52, 11, 53, 11, 54, 11, 55, 11, 56, 11, 57, 11, 58, 11, 59, 11, 60, 11, 61, 11, 62, 11, 63, 11, 64, 11, 65, 11, 66, 11, 67, 11, 68, 11, 69, 11, 70, 11, 71, 11, 72, 11, 73, 11, 74, 11, 75, 11, 76, 11, 77, 11, 78, 11, 79, 11, 80, 11, 81, 11, 82, 11, 83, 11, 84, 11, 85, 11, 86, 11, 87, 11, 88, 11, 89, 11, 90, 11, 91, 11, 92, 11, 93, 11, 94, 11, 95, 11, 96, 11, 97, 11, 98, 11, 99, 11, 100, 11, 101, 11, 102, 11, 103, 11, 104, 11, 105, 11, 106, 11, 107, 11, 108, 11, 109, 11, 110, 11, 111, 11, 112, 11, 113, 11, 114, 11, 115, 11, 116, 11, 117, 11, 118, 11, 119, 11, 120, 11, 121, 11, 122, 11, 123, 11, 124, 11, 125, 11, 126, 11, 127, 11, 128, 11, 129, 11, 130, 11, 131, 11, 132, 11, 133, 11, 134, 11, 135, 11, 136, 11, 137, 11, 138, 11, 139, 11, 140, 11, 141, 11, 142, 11, 143, 11, 144, 11, 145, 11, 146, 11, 163, 11, 164, 11, 165, 11, 166, 11, 167, 11, 168, 11, 169, 11, 170, 11, 171, 11, 172, 11, 173, 11, 174, 11, 175, 11, 176, 11, 177, 11, 178, 11, 179, 11, 180, 11, 181, 11, 182, 11, 183, 11, 184, 11, 185, 11, 186, 11, 187, 11, 188, 12, 3, 12, 4, 12, 5, 12, 6, 12, 7, 12, 8, 12, 9, 12, 10, 12, 11, 12, 12, 12, 13, 12, 14, 12, 15, 12, 16, 12, 17, 12, 18, 12, 19, 12, 20, 12, 21, 12, 22, 12, 23, 12, 24, 12, 25, 12, 26, 12, 27, 12, 28, 12, 29, 12, 30, 12, 31, 12, 32, 12, 33, 12, 34, 12, 35, 12, 36, 12, 37, 12, 38, 12, 39, 12, 40, 12, 41, 12, 42, 12, 43, 12, 44, 12, 45, 12, 46, 12, 47, 12, 48, 12, 49, 12, 50, 12, 51, 12, 52, 12, 53, 12, 54, 12, 55, 12, 56, 12, 57, 12, 58, 12, 59, 12, 60, 12, 61, 12, 62, 12, 63, 12, 64, 12, 65, 12, 66, 12, 67, 12, 68, 12, 69, 12, 70, 12, 71, 12, 72, 12, 73, 12, 74, 12, 75, 12, 76, 12, 77, 12, 78, 12, 79, 12, 80, 12, 81, 12, 82, 12, 83, 12, 84, 12, 85, 12, 86, 12, 87, 12, 88, 12, 89, 12, 90, 12, 91, 12, 92, 12, 93, 12, 94, 12, 95, 12, 96, 12, 97, 12, 98, 12, 99, 12, 100, 12, 101, 12, 102, 12, 103, 12, 104, 12, 105, 12, 106, 12, 107, 12, 108, 12, 109, 12, 110, 12, 111, 12, 112, 12, 113, 12, 114, 12, 115, 12, 116, 12, 117, 12, 118, 12, 119, 12, 120, 12, 121, 12, 122, 12, 123, 12, 124, 12, 125, 12, 126, 12, 127, 12, 128, 12, 129, 12, 130, 12, 131, 12, 132, 12, 133, 12, 134, 12, 135, 12, 136, 12, 137, 12, 138, 12, 139, 12, 140, 12, 141, 12, 142, 12, 143, 12, 144, 12, 145, 12, 164, 12, 165, 12, 166, 12, 167, 12, 168, 12, 169, 12, 170, 12, 171, 12, 172, 12, 173, 12, 174, 12, 175, 12, 176, 12, 177, 12, 178, 12, 179, 12, 180, 12, 181, 12, 182, 12, 183, 12, 184, 12, 185, 12, 186, 12, 187, 12, 188, 13, 3, 13, 4, 13, 5, 13, 6, 13, 7, 13, 8, 13, 9, 13, 10, 13, 11, 13, 12, 13, 13, 13, 14, 13, 15, 13, 16, 13, 17, 13, 18, 13, 19, 13, 20, 13, 21, 13, 22, 13, 23, 13, 24, 13, 25, 13, 26, 13, 27, 13, 28, 13, 29, 13, 30, 13, 31, 13, 32, 13, 33, 13, 34, 13, 35, 13, 36, 13, 37, 13, 38, 13, 39, 13, 40, 13, 41, 13, 42, 13, 43, 13, 44, 13, 45, 13, 46, 13, 47, 13, 48, 13, 49, 13, 50, 13, 51, 13, 52, 13, 53, 13, 54, 13, 55, 13, 56, 13, 57, 13, 58, 13, 59, 13, 60, 13, 61, 13, 62, 13, 63, 13, 64, 13, 65, 13, 66, 13, 67, 13, 68, 13, 69, 13, 70, 13, 71, 13, 72, 13, 73, 13, 74, 13, 75, 13, 76, 13, 77, 13, 78, 13, 79, 13, 80, 13, 81, 13, 82, 13, 83, 13, 84, 13, 85, 13, 86, 13, 87, 13, 88, 13, 89, 13, 90, 13, 91, 13, 92, 13, 93, 13, 94, 13, 95, 13, 96, 13, 97, 13, 98, 13, 99, 13, 100, 13, 101, 13, 102, 13, 103, 13, 104, 13, 105, 13, 106, 13, 107, 13, 108, 13, 109, 13, 110, 13, 111, 13, 112, 13, 113, 13, 114, 13, 115, 13, 116, 13, 117, 13, 118, 13, 119, 13, 120, 13, 121, 13, 122, 13, 123, 13, 124, 13, 125, 13, 126, 13, 127, 13, 128, 13, 129, 13, 130, 13, 131, 13, 132, 13, 133, 13, 134, 13, 135, 13, 136, 13, 137, 13, 138, 13, 139, 13, 140, 13, 141, 13, 142, 13, 143, 13, 144, 13, 165, 13, 166, 13, 167, 13, 168, 13, 169, 13, 170, 13, 171, 13, 172, 13, 173, 13, 174, 13, 175, 13, 176, 13, 177, 13, 178, 13, 179, 13, 180, 13, 181, 13, 182, 13, 183, 13, 184, 13, 185, 13, 186, 13, 187, 13, 188, 14, 3, 14, 4, 14, 5, 14, 6, 14, 7, 14, 8, 14, 9, 14, 10, 14, 11, 14, 12, 14, 13, 14, 14, 14, 15, 14, 16, 14, 17, 14, 18, 14, 19, 14, 20, 14, 21, 14, 22, 14, 23, 14, 24, 14, 25, 14, 26, 14, 27, 14, 28, 14, 29, 14, 30, 14, 31, 14, 32, 14, 33, 14, 34, 14, 35, 14, 36, 14, 37, 14, 38, 14, 39, 14, 40, 14, 41, 14, 42, 14, 43, 14, 44, 14, 45, 14, 46, 14, 47, 14, 48, 14, 49, 14, 50, 14, 51, 14, 52, 14, 53, 14, 54, 14, 55, 14, 56, 14, 57, 14, 58, 14, 59, 14, 60, 14, 61, 14, 62, 14, 63, 14, 64, 14, 65, 14, 66, 14, 67, 14, 68, 14, 69, 14, 70, 14, 71, 14, 72, 14, 73, 14, 74, 14, 75, 14, 76, 14, 77, 14, 78, 14, 79, 14, 80, 14, 81, 14, 82, 14, 83, 14, 84, 14, 85, 14, 86, 14, 87, 14, 88, 14, 89, 14, 90, 14, 91, 14, 92, 14, 93, 14, 94, 14, 95, 14, 96, 14, 97, 14, 98, 14, 99, 14, 100, 14, 101, 14, 102, 14, 103, 14, 104, 14, 105, 14, 106, 14, 107, 14, 108, 14, 109, 14, 110, 14, 111, 14, 112, 14, 113, 14, 114, 14, 115, 14, 116, 14, 117, 14, 118, 14, 119, 14, 120, 14, 121, 14, 122, 14, 123, 14, 124, 14, 125, 14, 126, 14, 127, 14, 128, 14, 129, 14, 130, 14, 131, 14, 132, 14, 133, 14, 134, 14, 135, 14, 136, 14, 137, 14, 138, 14, 139, 14, 140, 14, 141, 14, 142, 14, 143, 14, 144, 14, 165, 14, 166, 14, 167, 14, 168, 14, 169, 14, 170, 14, 171, 14, 172, 14, 173, 14, 174, 14, 175, 14, 176, 14, 177, 14, 178, 14, 179, 14, 180, 14, 181, 14, 182, 14, 183, 14, 184, 14, 185, 14, 186, 14, 187, 14, 188, 15, 3, 15, 4, 15, 5, 15, 6, 15, 7, 15, 8, 15, 9, 15, 10, 15, 11, 15, 12, 15, 13, 15, 14, 15, 15, 15, 16, 15, 17, 15, 18, 15, 19, 15, 20, 15, 21, 15, 22, 15, 23, 15, 24, 15, 25, 15, 26, 15, 27, 15, 28, 15, 29, 15, 30, 15, 31, 15, 32, 15, 33, 15, 34, 15, 35, 15, 36, 15, 37, 15, 38, 15, 39, 15, 40, 15, 41, 15, 42, 15, 43, 15, 44, 15, 45, 15, 46, 15, 47, 15, 48, 15, 49, 15, 50, 15, 51, 15, 52, 15, 53, 15, 54, 15, 55, 15, 56, 15, 57, 15, 58, 15, 59, 15, 60, 15, 61, 15, 62, 15, 63, 15, 64, 15, 65, 15, 66, 15, 67, 15, 68, 15, 69, 15, 70, 15, 71, 15, 72, 15, 73, 15, 74, 15, 75, 15, 76, 15, 77, 15, 78, 15, 79, 15, 80, 15, 81, 15, 82, 15, 83, 15, 84, 15, 85, 15, 86, 15, 87, 15, 88, 15, 89, 15, 90, 15, 91, 15, 92, 15, 93, 15, 94, 15, 95, 15, 96, 15, 97, 15, 98, 15, 99, 15, 100, 15, 101, 15, 102, 15, 103, 15, 104, 15, 105, 15, 106, 15, 107, 15, 108, 15, 109, 15, 110, 15, 111, 15, 112, 15, 113, 15, 114, 15, 115, 15, 116, 15, 117, 15, 118, 15, 119, 15, 120, 15, 121, 15, 122, 15, 123, 15, 124, 15, 125, 15, 126, 15, 127, 15, 128, 15, 129, 15, 130, 15, 131, 15, 132, 15, 133, 15, 134, 15, 135, 15, 136, 15, 137, 15, 138, 15, 139, 15, 140, 15, 141, 15, 142, 15, 143, 15, 166, 15, 167, 15, 168, 15, 169, 15, 170, 15, 171, 15, 172, 15, 173, 15, 174, 15, 175, 15, 176, 15, 177, 15, 178, 15, 179, 15, 180, 15, 181, 15, 182, 15, 183, 15, 184, 15, 185, 15, 186, 15, 187, 15, 188, 16, 3, 16, 4, 16, 5, 16, 6, 16, 7, 16, 8, 16, 9, 16, 10, 16, 11, 16, 12, 16, 13, 16, 14, 16, 15, 16, 16, 16, 17, 16, 18, 16, 19, 16, 20, 16, 21, 16, 22, 16, 23, 16, 24, 16, 25, 16, 26, 16, 27, 16, 28, 16, 29, 16, 30, 16, 31, 16, 32, 16, 33, 16, 34, 16, 35, 16, 36, 16, 37, 16, 38, 16, 39, 16, 40, 16, 41, 16, 42, 16, 43, 16, 44, 16, 45, 16, 46, 16, 47, 16, 48, 16, 49, 16, 50, 16, 51, 16, 52, 16, 53, 16, 54, 16, 55, 16, 56, 16, 57, 16, 58, 16, 59, 16, 60, 16, 61, 16, 62, 16, 63, 16, 64, 16, 65, 16, 66, 16, 67, 16, 68, 16, 69, 16, 70, 16, 71, 16, 72, 16, 73, 16, 74, 16, 75, 16, 76, 16, 77, 16, 78, 16, 79, 16, 80, 16, 81, 16, 82, 16, 83, 16, 84, 16, 85, 16, 86, 16, 87, 16, 88, 16, 89, 16, 90, 16, 91, 16, 92, 16, 93, 16, 94, 16, 95, 16, 96, 16, 97, 16, 98, 16, 99, 16, 100, 16, 101, 16, 102, 16, 103, 16, 104, 16, 105, 16, 106, 16, 107, 16, 108, 16, 109, 16, 110, 16, 111, 16, 112, 16, 113, 16, 114, 16, 115, 16, 116, 16, 117, 16, 118, 16, 119, 16, 120, 16, 121, 16, 122, 16, 123, 16, 124, 16, 125, 16, 126, 16, 127, 16, 128, 16, 129, 16, 130, 16, 131, 16, 132, 16, 133, 16, 134, 16, 135, 16, 136, 16, 137, 16, 138, 16, 139, 16, 140, 16, 141, 16, 142, 16, 167, 16, 168, 16, 169, 16, 170, 16, 171, 16, 172, 16, 173, 16, 174, 16, 175, 16, 176, 16, 177, 16, 178, 16, 179, 16, 180, 16, 181, 16, 182, 16, 183, 16, 184, 16, 185, 16, 186, 16, 187, 16, 188, 17, 3, 17, 4, 17, 5, 17, 6, 17, 7, 17, 8, 17, 9, 17, 10, 17, 11, 17, 12, 17, 13, 17, 14, 17, 15, 17, 16, 17, 17, 17, 18, 17, 19, 17, 20, 17, 21, 17, 22, 17, 23, 17, 24, 17, 25, 17, 26, 17, 27, 17, 28, 17, 29, 17, 30, 17, 31, 17, 32, 17, 33, 17, 34, 17, 35, 17, 36, 17, 37, 17, 38, 17, 39, 17, 40, 17, 41, 17, 42, 17, 43, 17, 44, 17, 45, 17, 46, 17, 47, 17, 48, 17, 49, 17, 50, 17, 51, 17, 52, 17, 53, 17, 54, 17, 55, 17, 56, 17, 57, 17, 58, 17, 59, 17, 60, 17, 61, 17, 62, 17, 63, 17, 64, 17, 65, 17, 66, 17, 67, 17, 68, 17, 69, 17, 70, 17, 71, 17, 72, 17, 73, 17, 74, 17, 75, 17, 76, 17, 77, 17, 78, 17, 79, 17, 80, 17, 81, 17, 82, 17, 83, 17, 84, 17, 85, 17, 86, 17, 87, 17, 88, 17, 89, 17, 90, 17, 91, 17, 92, 17, 93, 17, 94, 17, 95, 17, 96, 17, 97, 17, 98, 17, 99, 17, 100, 17, 101, 17, 102, 17, 103, 17, 104, 17, 105, 17, 106, 17, 107, 17, 108, 17, 109, 17, 110, 17, 111, 17, 112, 17, 113, 17, 114, 17, 115, 17, 116, 17, 117, 17, 118, 17, 119, 17, 120, 17, 121, 17, 122, 17, 123, 17, 124, 17, 125, 17, 126, 17, 127, 17, 128, 17, 129, 17, 130, 17, 131, 17, 132, 17, 133, 17, 134, 17, 135, 17, 136, 17, 137, 17, 138, 17, 139, 17, 140, 17, 141, 17, 142, 17, 167, 17, 168, 17, 169, 17, 170, 17, 171, 17, 172, 17, 173, 17, 174, 17, 175, 17, 176, 17, 177, 17, 178, 17, 179, 17, 180, 17, 181, 17, 182, 17, 183, 17, 184, 17, 185, 17, 186, 17, 187, 17, 188, 18, 3, 18, 4, 18, 5, 18, 6, 18, 7, 18, 8, 18, 9, 18, 10, 18, 11, 18, 12, 18, 13, 18, 14, 18, 15, 18, 16, 18, 17, 18, 18, 18, 19, 18, 20, 18, 21, 18, 22, 18, 23, 18, 24, 18, 25, 18, 26, 18, 27, 18, 28, 18, 29, 18, 30, 18, 31, 18, 32, 18, 33, 18, 34, 18, 35, 18, 36, 18, 37, 18, 38, 18, 39, 18, 40, 18, 41, 18, 42, 18, 43, 18, 44, 18, 45, 18, 46, 18, 47, 18, 48, 18, 49, 18, 50, 18, 51, 18, 52, 18, 53, 18, 54, 18, 55, 18, 56, 18, 57, 18, 58, 18, 59, 18, 60, 18, 61, 18, 62, 18, 63, 18, 64, 18, 65, 18, 66, 18, 67, 18, 68, 18, 69, 18, 70, 18, 71, 18, 72, 18, 73, 18, 74, 18, 75, 18, 76, 18, 77, 18, 78, 18, 79, 18, 80, 18, 81, 18, 82, 18, 83, 18, 84, 18, 85, 18, 86, 18, 87, 18, 88, 18, 89, 18, 90, 18, 91, 18, 92, 18, 93, 18, 94, 18, 95, 18, 96, 18, 97, 18, 98, 18, 99, 18, 100, 18, 101, 18, 102, 18, 103, 18, 104, 18, 105, 18, 106, 18, 107, 18, 108, 18, 109, 18, 110, 18, 111, 18, 112, 18, 113, 18, 114, 18, 115, 18, 116, 18, 117, 18, 118, 18, 119, 18, 120, 18, 121, 18, 122, 18, 123, 18, 124, 18, 125, 18, 126, 18, 127, 18, 128, 18, 129, 18, 130, 18, 131, 18, 132, 18, 133, 18, 134, 18, 135, 18, 136, 18, 137, 18, 138, 18, 139, 18, 140, 18, 141, 18, 142, 18, 168, 18, 169, 18, 170, 18, 171, 18, 172, 18, 173, 18, 174, 18, 175, 18, 176, 18, 177, 18, 178, 18, 179, 18, 180, 18, 181, 18, 182, 18, 183, 18, 184, 18, 185, 18, 186, 18, 187, 18, 188, 19, 3, 19, 4, 19, 5, 19, 6, 19, 7, 19, 8, 19, 9, 19, 10, 19, 11, 19, 12, 19, 13, 19, 14, 19, 15, 19, 16, 19, 17, 19, 18, 19, 19, 19, 20, 19, 21, 19, 22, 19, 23, 19, 24, 19, 25, 19, 26, 19, 27, 19, 28, 19, 29, 19, 30, 19, 31, 19, 32, 19, 33, 19, 34, 19, 35, 19, 36, 19, 37, 19, 38, 19, 39, 19, 40, 19, 41, 19, 42, 19, 43, 19, 44, 19, 45, 19, 46, 19, 47, 19, 48, 19, 49, 19, 50, 19, 51, 19, 52, 19, 53, 19, 54, 19, 55, 19, 56, 19, 57, 19, 58, 19, 59, 19, 60, 19, 61, 19, 62, 19, 63, 19, 64, 19, 65, 19, 66, 19, 67, 19, 68, 19, 69, 19, 70, 19, 71, 19, 72, 19, 73, 19, 74, 19, 75, 19, 76, 19, 77, 19, 78, 19, 79, 19, 80, 19, 81, 19, 82, 19, 83, 19, 84, 19, 85, 19, 86, 19, 87, 19, 88, 19, 89, 19, 90, 19, 91, 19, 92, 19, 93, 19, 94, 19, 95, 19, 96, 19, 97, 19, 98, 19, 99, 19, 100, 19, 101, 19, 102, 19, 103, 19, 104, 19, 105, 19, 106, 19, 107, 19, 108, 19, 109, 19, 110, 19, 111, 19, 112, 19, 113, 19, 114, 19, 115, 19, 116, 19, 117, 19, 118, 19, 119, 19, 120, 19, 121, 19, 122, 19, 123, 19, 124, 19, 125, 19, 126, 19, 127, 19, 128, 19, 129, 19, 130, 19, 131, 19, 132, 19, 133, 19, 134, 19, 135, 19, 136, 19, 137, 19, 138, 19, 139, 19, 140, 19, 141, 19, 168, 19, 169, 19, 170, 19, 171, 19, 172, 19, 173, 19, 174, 19, 175, 19, 176, 19, 177, 19, 178, 19, 179, 19, 180, 19, 181, 19, 182, 19, 183, 19, 184, 19, 185, 19, 186, 19, 187, 19, 188, 20, 3, 20, 4, 20, 5, 20, 6, 20, 7, 20, 8, 20, 9, 20, 10, 20, 11, 20, 12, 20, 13, 20, 14, 20, 15, 20, 16, 20, 17, 20, 18, 20, 19, 20, 20, 20, 21, 20, 22, 20, 23, 20, 24, 20, 25, 20, 26, 20, 27, 20, 28, 20, 29, 20, 30, 20, 31, 20, 32, 20, 33, 20, 34, 20, 35, 20, 36, 20, 37, 20, 38, 20, 39, 20, 40, 20, 41, 20, 42, 20, 43, 20, 44, 20, 45, 20, 46, 20, 47, 20, 48, 20, 49, 20, 50, 20, 51, 20, 52, 20, 53, 20, 54, 20, 55, 20, 56, 20, 57, 20, 58, 20, 59, 20, 60, 20, 61, 20, 62, 20, 63, 20, 64, 20, 65, 20, 66, 20, 67, 20, 68, 20, 69, 20, 70, 20, 71, 20, 72, 20, 73, 20, 74, 20, 75, 20, 76, 20, 77, 20, 78, 20, 79, 20, 80, 20, 81, 20, 82, 20, 83, 20, 84, 20, 85, 20, 86, 20, 87, 20, 88, 20, 89, 20, 90, 20, 91, 20, 92, 20, 93, 20, 94, 20, 95, 20, 96, 20, 97, 20, 98, 20, 99, 20, 100, 20, 101, 20, 102, 20, 103, 20, 104, 20, 105, 20, 106, 20, 107, 20, 108, 20, 109, 20, 110, 20, 111, 20, 112, 20, 113, 20, 114, 20, 115, 20, 116, 20, 117, 20, 118, 20, 119, 20, 120, 20, 121, 20, 122, 20, 123, 20, 124, 20, 125, 20, 126, 20, 127, 20, 128, 20, 129, 20, 130, 20, 131, 20, 132, 20, 133, 20, 134, 20, 135, 20, 136, 20, 137, 20, 138, 20, 139, 20, 140, 20, 141, 20, 168, 20, 169, 20, 170, 20, 171, 20, 172, 20, 173, 20, 174, 20, 175, 20, 176, 20, 177, 20, 178, 20, 179, 20, 180, 20, 181, 20, 182, 20, 183, 20, 184, 20, 185, 20, 186, 20, 187, 20, 188, 21, 3, 21, 4, 21, 5, 21, 6, 21, 7, 21, 8, 21, 9, 21, 10, 21, 11, 21, 12, 21, 13, 21, 14, 21, 15, 21, 16, 21, 17, 21, 18, 21, 19, 21, 20, 21, 21, 21, 22, 21, 23, 21, 24, 21, 25, 21, 26, 21, 27, 21, 28, 21, 29, 21, 30, 21, 31, 21, 32, 21, 33, 21, 34, 21, 35, 21, 36, 21, 37, 21, 38, 21, 39, 21, 40, 21, 41, 21, 42, 21, 43, 21, 44, 21, 45, 21, 46, 21, 47, 21, 48, 21, 49, 21, 50, 21, 51, 21, 52, 21, 53, 21, 54, 21, 55, 21, 56, 21, 57, 21, 58, 21, 59, 21, 60, 21, 61, 21, 62, 21, 63, 21, 64, 21, 65, 21, 66, 21, 67, 21, 68, 21, 69, 21, 70, 21, 71, 21, 72, 21, 73, 21, 74, 21, 75, 21, 76, 21, 77, 21, 78, 21, 79, 21, 80, 21, 81, 21, 82, 21, 83, 21, 84, 21, 85, 21, 86, 21, 87, 21, 88, 21, 89, 21, 90, 21, 91, 21, 92, 21, 93, 21, 94, 21, 95, 21, 96, 21, 97, 21, 98, 21, 99, 21, 100, 21, 101, 21, 102, 21, 103, 21, 104, 21, 105, 21, 106, 21, 107, 21, 108, 21, 109, 21, 110, 21, 111, 21, 112, 21, 113, 21, 114, 21, 115, 21, 116, 21, 117, 21, 118, 21, 119, 21, 120, 21, 121, 21, 122, 21, 123, 21, 124, 21, 125, 21, 126, 21, 127, 21, 128, 21, 129, 21, 130, 21, 131, 21, 132, 21, 133, 21, 134, 21, 135, 21, 136, 21, 137, 21, 138, 21, 139, 21, 140, 21, 141, 21, 167, 21, 168, 21, 169, 21, 170, 21, 171, 21, 172, 21, 173, 21, 174, 21, 175, 21, 176, 21, 177, 21, 178, 21, 179, 21, 180, 21, 181, 21, 182, 21, 183, 21, 184, 21, 185, 21, 186, 21, 187, 21, 188, 22, 3, 22, 4, 22, 5, 22, 6, 22, 7, 22, 8, 22, 9, 22, 10, 22, 11, 22, 12, 22, 13, 22, 14, 22, 15, 22, 16, 22, 17, 22, 18, 22, 19, 22, 20, 22, 21, 22, 22, 22, 23, 22, 24, 22, 25, 22, 26, 22, 27, 22, 28, 22, 29, 22, 30, 22, 31, 22, 32, 22, 33, 22, 34, 22, 35, 22, 36, 22, 37, 22, 38, 22, 39, 22, 40, 22, 41, 22, 42, 22, 43, 22, 44, 22, 45, 22, 46, 22, 47, 22, 48, 22, 49, 22, 50, 22, 51, 22, 52, 22, 53, 22, 54, 22, 55, 22, 56, 22, 57, 22, 58, 22, 59, 22, 60, 22, 61, 22, 62, 22, 63, 22, 64, 22, 65, 22, 66, 22, 67, 22, 68, 22, 69, 22, 70, 22, 71, 22, 72, 22, 73, 22, 74, 22, 75, 22, 76, 22, 77, 22, 78, 22, 79, 22, 80, 22, 81, 22, 82, 22, 83, 22, 84, 22, 85, 22, 86, 22, 87, 22, 88, 22, 89, 22, 90, 22, 91, 22, 92, 22, 93, 22, 94, 22, 95, 22, 96, 22, 97, 22, 98, 22, 99, 22, 100, 22, 101, 22, 102, 22, 103, 22, 104, 22, 105, 22, 106, 22, 107, 22, 108, 22, 109, 22, 110, 22, 111, 22, 112, 22, 113, 22, 114, 22, 115, 22, 116, 22, 117, 22, 118, 22, 119, 22, 120, 22, 121, 22, 122, 22, 123, 22, 124, 22, 125, 22, 126, 22, 127, 22, 128, 22, 129, 22, 130, 22, 131, 22, 132, 22, 133, 22, 134, 22, 135, 22, 136, 22, 137, 22, 138, 22, 139, 22, 140, 22, 167, 22, 168, 22, 169, 22, 170, 22, 171, 22, 172, 22, 173, 22, 174, 22, 175, 22, 176, 22, 177, 22, 178, 22, 179, 22, 180, 22, 181, 22, 182, 22, 183, 22, 184, 22, 185, 22, 186, 22, 187, 22, 188, 23, 3, 23, 4, 23, 5, 23, 6, 23, 7, 23, 8, 23, 9, 23, 10, 23, 11, 23, 12, 23, 13, 23, 14, 23, 15, 23, 16, 23, 17, 23, 18, 23, 19, 23, 20, 23, 21, 23, 22, 23, 23, 23, 24, 23, 25, 23, 26, 23, 27, 23, 28, 23, 29, 23, 30, 23, 31, 23, 32, 23, 33, 23, 34, 23, 35, 23, 36, 23, 37, 23, 38, 23, 39, 23, 40, 23, 41, 23, 42, 23, 43, 23, 44, 23, 45, 23, 46, 23, 47, 23, 48, 23, 49, 23, 50, 23, 51, 23, 52, 23, 53, 23, 54, 23, 55, 23, 56, 23, 57, 23, 58, 23, 59, 23, 60, 23, 61, 23, 62, 23, 63, 23, 64, 23, 65, 23, 66, 23, 67, 23, 68, 23, 69, 23, 70, 23, 71, 23, 72, 23, 73, 23, 74, 23, 75, 23, 76, 23, 77, 23, 78, 23, 79, 23, 80, 23, 81, 23, 82, 23, 83, 23, 84, 23, 85, 23, 86, 23, 87, 23, 88, 23, 89, 23, 90, 23, 91, 23, 92, 23, 93, 23, 94, 23, 95, 23, 96, 23, 97, 23, 98, 23, 99, 23, 100, 23, 101, 23, 102, 23, 103, 23, 104, 23, 105, 23, 106, 23, 107, 23, 108, 23, 109, 23, 110, 23, 111, 23, 112, 23, 113, 23, 114, 23, 115, 23, 116, 23, 117, 23, 118, 23, 119, 23, 120, 23, 121, 23, 122, 23, 123, 23, 124, 23, 125, 23, 126, 23, 127, 23, 128, 23, 129, 23, 130, 23, 131, 23, 132, 23, 133, 23, 134, 23, 135, 23, 136, 23, 137, 23, 138, 23, 139, 23, 140, 23, 167, 23, 168, 23, 169, 23, 170, 23, 171, 23, 172, 23, 173, 23, 174, 23, 175, 23, 176, 23, 177, 23, 178, 23, 179, 23, 180, 23, 181, 23, 182, 23, 183, 23, 184, 23, 185, 23, 186, 23, 187, 23, 188, 24, 3, 24, 4, 24, 5, 24, 6, 24, 7, 24, 8, 24, 9, 24, 10, 24, 11, 24, 12, 24, 13, 24, 14, 24, 15, 24, 16, 24, 17, 24, 18, 24, 19, 24, 20, 24, 21, 24, 22, 24, 23, 24, 24, 24, 25, 24, 26, 24, 27, 24, 28, 24, 29, 24, 30, 24, 31, 24, 32, 24, 33, 24, 34, 24, 35, 24, 36, 24, 37, 24, 38, 24, 39, 24, 40, 24, 41, 24, 42, 24, 43, 24, 44, 24, 45, 24, 46, 24, 47, 24, 48, 24, 49, 24, 50, 24, 51, 24, 52, 24, 53, 24, 54, 24, 55, 24, 56, 24, 57, 24, 58, 24, 59, 24, 60, 24, 61, 24, 62, 24, 63, 24, 64, 24, 65, 24, 66, 24, 67, 24, 68, 24, 69, 24, 70, 24, 71, 24, 72, 24, 73, 24, 74, 24, 75, 24, 76, 24, 77, 24, 78, 24, 79, 24, 80, 24, 81, 24, 82, 24, 83, 24, 84, 24, 85, 24, 86, 24, 87, 24, 88, 24, 89, 24, 90, 24, 91, 24, 92, 24, 93, 24, 94, 24, 95, 24, 96, 24, 97, 24, 98, 24, 99, 24, 100, 24, 101, 24, 102, 24, 103, 24, 104, 24, 105, 24, 106, 24, 107, 24, 108, 24, 109, 24, 110, 24, 111, 24, 112, 24, 113, 24, 114, 24, 115, 24, 116, 24, 117, 24, 118, 24, 119, 24, 120, 24, 121, 24, 122, 24, 123, 24, 124, 24, 125, 24, 126, 24, 127, 24, 128, 24, 129, 24, 130, 24, 131, 24, 132, 24, 133, 24, 134, 24, 135, 24, 136, 24, 137, 24, 138, 24, 139, 24, 167, 24, 168, 24, 169, 24, 170, 24, 171, 24, 172, 24, 173, 24, 174, 24, 175, 24, 176, 24, 177, 24, 178, 24, 179, 24, 180, 24, 181, 24, 182, 24, 183, 24, 184, 24, 185, 24, 186, 24, 187, 24, 188, 25, 3, 25, 4, 25, 5, 25, 6, 25, 7, 25, 8, 25, 9, 25, 10, 25, 11, 25, 12, 25, 13, 25, 14, 25, 15, 25, 16, 25, 17, 25, 18, 25, 19, 25, 20, 25, 21, 25, 22, 25, 23, 25, 24, 25, 25, 25, 26, 25, 27, 25, 28, 25, 29, 25, 30, 25, 31, 25, 32, 25, 33, 25, 34, 25, 35, 25, 36, 25, 37, 25, 38, 25, 39, 25, 40, 25, 41, 25, 42, 25, 43, 25, 44, 25, 45, 25, 46, 25, 47, 25, 48, 25, 49, 25, 50, 25, 51, 25, 52, 25, 53, 25, 54, 25, 55, 25, 56, 25, 57, 25, 58, 25, 59, 25, 60, 25, 61, 25, 62, 25, 63, 25, 64, 25, 65, 25, 66, 25, 67, 25, 68, 25, 69, 25, 70, 25, 71, 25, 72, 25, 73, 25, 74, 25, 75, 25, 76, 25, 77, 25, 78, 25, 79, 25, 80, 25, 81, 25, 82, 25, 83, 25, 84, 25, 85, 25, 86, 25, 87, 25, 88, 25, 89, 25, 90, 25, 91, 25, 92, 25, 93, 25, 94, 25, 95, 25, 96, 25, 97, 25, 98, 25, 99, 25, 100, 25, 101, 25, 102, 25, 103, 25, 104, 25, 105, 25, 106, 25, 107, 25, 108, 25, 109, 25, 110, 25, 111, 25, 112, 25, 113, 25, 114, 25, 115, 25, 116, 25, 117, 25, 118, 25, 119, 25, 120, 25, 121, 25, 122, 25, 123, 25, 124, 25, 125, 25, 126, 25, 127, 25, 128, 25, 129, 25, 130, 25, 131, 25, 132, 25, 133, 25, 134, 25, 135, 25, 136, 25, 137, 25, 138, 25, 139, 25, 167, 25, 168, 25, 169, 25, 170, 25, 171, 25, 172, 25, 173, 25, 174, 25, 175, 25, 176, 25, 177, 25, 178, 25, 179, 25, 180, 25, 181, 25, 182, 25, 183, 25, 184, 25, 185, 25, 186, 25, 187, 25, 188, 26, 3, 26, 4, 26, 5, 26, 6, 26, 7, 26, 8, 26, 9, 26, 10, 26, 11, 26, 12, 26, 13, 26, 14, 26, 15, 26, 16, 26, 17, 26, 18, 26, 19, 26, 20, 26, 21, 26, 22, 26, 23, 26, 24, 26, 25, 26, 26, 26, 27, 26, 28, 26, 29, 26, 30, 26, 31, 26, 32, 26, 33, 26, 34, 26, 35, 26, 36, 26, 37, 26, 38, 26, 39, 26, 40, 26, 41, 26, 42, 26, 43, 26, 44, 26, 45, 26, 46, 26, 47, 26, 48, 26, 49, 26, 50, 26, 51, 26, 52, 26, 53, 26, 54, 26, 55, 26, 56, 26, 57, 26, 58, 26, 59, 26, 60, 26, 61, 26, 62, 26, 63, 26, 64, 26, 65, 26, 66, 26, 67, 26, 68, 26, 69, 26, 70, 26, 71, 26, 72, 26, 73, 26, 74, 26, 75, 26, 76, 26, 77, 26, 78, 26, 79, 26, 80, 26, 81, 26, 82, 26, 83, 26, 84, 26, 85, 26, 86, 26, 87, 26, 88, 26, 89, 26, 90, 26, 91, 26, 92, 26, 93, 26, 94, 26, 95, 26, 96, 26, 97, 26, 98, 26, 99, 26, 100, 26, 101, 26, 102, 26, 103, 26, 104, 26, 105, 26, 106, 26, 107, 26, 108, 26, 109, 26, 110, 26, 111, 26, 112, 26, 113, 26, 114, 26, 115, 26, 116, 26, 117, 26, 118, 26, 119, 26, 120, 26, 121, 26, 122, 26, 123, 26, 124, 26, 125, 26, 126, 26, 127, 26, 128, 26, 129, 26, 130, 26, 131, 26, 132, 26, 133, 26, 134, 26, 135, 26, 136, 26, 137, 26, 138, 26, 167, 26, 168, 26, 169, 26, 170, 26, 171, 26, 172, 26, 173, 26, 174, 26, 175, 26, 176, 26, 177, 26, 178, 26, 179, 26, 180, 26, 181, 26, 182, 26, 183, 26, 184, 26, 185, 26, 186, 26, 187, 26, 188, 27, 3, 27, 4, 27, 5, 27, 6, 27, 7, 27, 8, 27, 9, 27, 10, 27, 11, 27, 12, 27, 13, 27, 14, 27, 15, 27, 16, 27, 17, 27, 18, 27, 19, 27, 20, 27, 21, 27, 22, 27, 23, 27, 24, 27, 25, 27, 26, 27, 27, 27, 28, 27, 29, 27, 30, 27, 31, 27, 32, 27, 33, 27, 34, 27, 35, 27, 36, 27, 37, 27, 38, 27, 39, 27, 40, 27, 41, 27, 42, 27, 43, 27, 44, 27, 45, 27, 46, 27, 47, 27, 48, 27, 49, 27, 50, 27, 51, 27, 52, 27, 53, 27, 54, 27, 55, 27, 56, 27, 57, 27, 58, 27, 59, 27, 60, 27, 61, 27, 62, 27, 63, 27, 64, 27, 65, 27, 66, 27, 67, 27, 68, 27, 69, 27, 70, 27, 71, 27, 72, 27, 73, 27, 74, 27, 75, 27, 76, 27, 77, 27, 78, 27, 79, 27, 80, 27, 81, 27, 82, 27, 83, 27, 84, 27, 85, 27, 86, 27, 87, 27, 88, 27, 89, 27, 90, 27, 91, 27, 92, 27, 93, 27, 94, 27, 95, 27, 96, 27, 97, 27, 98, 27, 99, 27, 100, 27, 101, 27, 102, 27, 103, 27, 104, 27, 105, 27, 106, 27, 107, 27, 108, 27, 109, 27, 110, 27, 111, 27, 112, 27, 113, 27, 114, 27, 115, 27, 116, 27, 117, 27, 118, 27, 119, 27, 120, 27, 121, 27, 122, 27, 123, 27, 124, 27, 125, 27, 126, 27, 127, 27, 128, 27, 129, 27, 130, 27, 131, 27, 132, 27, 133, 27, 134, 27, 135, 27, 136, 27, 137, 27, 138, 27, 167, 27, 168, 27, 169, 27, 170, 27, 171, 27, 172, 27, 173, 27, 174, 27, 175, 27, 176, 27, 177, 27, 178, 27, 179, 27, 180, 27, 181, 27, 182, 27, 183, 27, 184, 27, 185, 27, 186, 27, 187, 27, 188, 28, 3, 28, 4, 28, 5, 28, 6, 28, 7, 28, 8, 28, 9, 28, 10, 28, 11, 28, 12, 28, 13, 28, 14, 28, 15, 28, 16, 28, 17, 28, 18, 28, 19, 28, 20, 28, 21, 28, 22, 28, 23, 28, 24, 28, 25, 28, 26, 28, 27, 28, 28, 28, 29, 28, 30, 28, 31, 28, 32, 28, 33, 28, 34, 28, 35, 28, 36, 28, 37, 28, 38, 28, 39, 28, 40, 28, 41, 28, 42, 28, 43, 28, 44, 28, 45, 28, 46, 28, 47, 28, 48, 28, 49, 28, 50, 28, 51, 28, 52, 28, 53, 28, 54, 28, 55, 28, 56, 28, 57, 28, 58, 28, 59, 28, 60, 28, 61, 28, 62, 28, 63, 28, 64, 28, 65, 28, 66, 28, 67, 28, 68, 28, 69, 28, 70, 28, 71, 28, 72, 28, 73, 28, 74, 28, 75, 28, 76, 28, 77, 28, 78, 28, 79, 28, 80, 28, 81, 28, 82, 28, 83, 28, 84, 28, 85, 28, 86, 28, 87, 28, 88, 28, 89, 28, 90, 28, 91, 28, 92, 28, 93, 28, 94, 28, 95, 28, 96, 28, 97, 28, 98, 28, 99, 28, 100, 28, 101, 28, 102, 28, 103, 28, 104, 28, 105, 28, 106, 28, 107, 28, 108, 28, 109, 28, 110, 28, 111, 28, 112, 28, 113, 28, 114, 28, 115, 28, 116, 28, 117, 28, 118, 28, 119, 28, 120, 28, 121, 28, 122, 28, 123, 28, 124, 28, 125, 28, 126, 28, 127, 28, 128, 28, 129, 28, 130, 28, 131, 28, 132, 28, 133, 28, 134, 28, 135, 28, 136, 28, 137, 28, 167, 28, 168, 28, 169, 28, 170, 28, 171, 28, 172, 28, 173, 28, 174, 28, 175, 28, 176, 28, 177, 28, 178, 28, 179, 28, 180, 28, 181, 28, 182, 28, 183, 28, 184, 28, 185, 28, 186, 28, 187, 28, 188, 29, 3, 29, 4, 29, 5, 29, 6, 29, 7, 29, 8, 29, 9, 29, 10, 29, 11, 29, 12, 29, 13, 29, 14, 29, 15, 29, 16, 29, 17, 29, 18, 29, 19, 29, 20, 29, 21, 29, 22, 29, 23, 29, 24, 29, 25, 29, 26, 29, 27, 29, 28, 29, 29, 29, 30, 29, 31, 29, 32, 29, 33, 29, 34, 29, 35, 29, 36, 29, 37, 29, 38, 29, 39, 29, 40, 29, 41, 29, 42, 29, 43, 29, 44, 29, 45, 29, 46, 29, 47, 29, 48, 29, 49, 29, 50, 29, 51, 29, 52, 29, 53, 29, 54, 29, 55, 29, 56, 29, 57, 29, 58, 29, 59, 29, 60, 29, 61, 29, 62, 29, 63, 29, 64, 29, 65, 29, 66, 29, 67, 29, 68, 29, 69, 29, 70, 29, 71, 29, 72, 29, 73, 29, 74, 29, 75, 29, 76, 29, 77, 29, 78, 29, 79, 29, 80, 29, 81, 29, 82, 29, 83, 29, 84, 29, 85, 29, 86, 29, 87, 29, 88, 29, 89, 29, 90, 29, 91, 29, 92, 29, 93, 29, 94, 29, 95, 29, 96, 29, 97, 29, 98, 29, 99, 29, 100, 29, 101, 29, 102, 29, 103, 29, 104, 29, 105, 29, 106, 29, 107, 29, 108, 29, 109, 29, 110, 29, 111, 29, 112, 29, 113, 29, 114, 29, 115, 29, 116, 29, 117, 29, 118, 29, 119, 29, 120, 29, 121, 29, 122, 29, 123, 29, 124, 29, 125, 29, 126, 29, 127, 29, 128, 29, 129, 29, 130, 29, 131, 29, 132, 29, 133, 29, 134, 29, 135, 29, 136, 29, 167, 29, 168, 29, 169, 29, 170, 29, 171, 29, 172, 29, 173, 29, 174, 29, 175, 29, 176, 29, 177, 29, 178, 29, 179, 29, 180, 29, 181, 29, 182, 29, 183, 29, 184, 29, 185, 29, 186, 29, 187, 29, 188, 30, 3, 30, 4, 30, 5, 30, 6, 30, 7, 30, 8, 30, 9, 30, 10, 30, 11, 30, 12, 30, 13, 30, 14, 30, 15, 30, 16, 30, 17, 30, 18, 30, 19, 30, 20, 30, 21, 30, 22, 30, 23, 30, 24, 30, 25, 30, 26, 30, 27, 30, 28, 30, 29, 30, 30, 30, 31, 30, 32, 30, 33, 30, 34, 30, 35, 30, 36, 30, 37, 30, 38, 30, 39, 30, 40, 30, 41, 30, 42, 30, 43, 30, 44, 30, 45, 30, 46, 30, 47, 30, 48, 30, 49, 30, 50, 30, 51, 30, 52, 30, 53, 30, 54, 30, 55, 30, 56, 30, 57, 30, 58, 30, 59, 30, 60, 30, 61, 30, 62, 30, 63, 30, 64, 30, 65, 30, 66, 30, 67, 30, 68, 30, 69, 30, 70, 30, 71, 30, 72, 30, 73, 30, 74, 30, 75, 30, 76, 30, 77, 30, 78, 30, 79, 30, 80, 30, 81, 30, 82, 30, 83, 30, 84, 30, 85, 30, 86, 30, 87, 30, 88, 30, 89, 30, 90, 30, 91, 30, 92, 30, 93, 30, 94, 30, 95, 30, 96, 30, 97, 30, 98, 30, 99, 30, 100, 30, 101, 30, 102, 30, 103, 30, 104, 30, 105, 30, 106, 30, 107, 30, 108, 30, 109, 30, 110, 30, 111, 30, 112, 30, 113, 30, 114, 30, 115, 30, 116, 30, 117, 30, 118, 30, 119, 30, 120, 30, 121, 30, 122, 30, 123, 30, 124, 30, 125, 30, 126, 30, 127, 30, 128, 30, 129, 30, 130, 30, 131, 30, 132, 30, 133, 30, 134, 30, 135, 30, 136, 30, 167, 30, 168, 30, 169, 30, 170, 30, 171, 30, 172, 30, 173, 30, 174, 30, 175, 30, 176, 30, 177, 30, 178, 30, 179, 30, 180, 30, 181, 30, 182, 30, 183, 30, 184, 30, 185, 30, 186, 30, 187, 30, 188, 31, 3, 31, 4, 31, 5, 31, 6, 31, 7, 31, 8, 31, 9, 31, 10, 31, 11, 31, 12, 31, 13, 31, 14, 31, 15, 31, 16, 31, 17, 31, 18, 31, 19, 31, 20, 31, 21, 31, 22, 31, 23, 31, 24, 31, 25, 31, 26, 31, 27, 31, 28, 31, 29, 31, 30, 31, 31, 31, 32, 31, 33, 31, 34, 31, 35, 31, 36, 31, 37, 31, 38, 31, 39, 31, 40, 31, 41, 31, 42, 31, 43, 31, 44, 31, 45, 31, 46, 31, 47, 31, 48, 31, 49, 31, 50, 31, 51, 31, 52, 31, 53, 31, 54, 31, 55, 31, 56, 31, 57, 31, 58, 31, 59, 31, 60, 31, 61, 31, 62, 31, 63, 31, 64, 31, 65, 31, 66, 31, 67, 31, 68, 31, 69, 31, 70, 31, 71, 31, 72, 31, 73, 31, 74, 31, 75, 31, 76, 31, 77, 31, 78, 31, 79, 31, 80, 31, 81, 31, 82, 31, 83, 31, 84, 31, 85, 31, 86, 31, 87, 31, 88, 31, 89, 31, 90, 31, 91, 31, 92, 31, 93, 31, 94, 31, 95, 31, 96, 31, 97, 31, 98, 31, 99, 31, 100, 31, 101, 31, 102, 31, 103, 31, 104, 31, 105, 31, 106, 31, 107, 31, 108, 31, 109, 31, 110, 31, 111, 31, 112, 31, 113, 31, 114, 31, 115, 31, 116, 31, 117, 31, 118, 31, 119, 31, 120, 31, 121, 31, 122, 31, 123, 31, 124, 31, 125, 31, 126, 31, 127, 31, 128, 31, 129, 31, 130, 31, 131, 31, 132, 31, 133, 31, 134, 31, 135, 31, 167, 31, 168, 31, 169, 31, 170, 31, 171, 31, 172, 31, 173, 31, 174, 31, 175, 31, 176, 31, 177, 31, 178, 31, 179, 31, 180, 31, 181, 31, 182, 31, 183, 31, 184, 31, 185, 31, 186, 31, 187, 31, 188, 32, 3, 32, 4, 32, 5, 32, 6, 32, 7, 32, 8, 32, 9, 32, 10, 32, 11, 32, 12, 32, 13, 32, 14, 32, 15, 32, 16, 32, 17, 32, 18, 32, 19, 32, 20, 32, 21, 32, 22, 32, 23, 32, 24, 32, 25, 32, 26, 32, 27, 32, 28, 32, 29, 32, 30, 32, 31, 32, 32, 32, 33, 32, 34, 32, 35, 32, 36, 32, 37, 32, 38, 32, 39, 32, 40, 32, 41, 32, 42, 32, 43, 32, 44, 32, 45, 32, 46, 32, 47, 32, 48, 32, 49, 32, 50, 32, 51, 32, 52, 32, 53, 32, 54, 32, 55, 32, 56, 32, 57, 32, 58, 32, 59, 32, 60, 32, 61, 32, 62, 32, 63, 32, 64, 32, 65, 32, 66, 32, 67, 32, 68, 32, 69, 32, 70, 32, 71, 32, 72, 32, 73, 32, 74, 32, 75, 32, 76, 32, 77, 32, 78, 32, 79, 32, 80, 32, 81, 32, 82, 32, 83, 32, 84, 32, 85, 32, 86, 32, 87, 32, 88, 32, 89, 32, 90, 32, 91, 32, 92, 32, 93, 32, 94, 32, 95, 32, 96, 32, 97, 32, 98, 32, 99, 32, 100, 32, 101, 32, 102, 32, 103, 32, 104, 32, 105, 32, 106, 32, 107, 32, 108, 32, 109, 32, 110, 32, 111, 32, 112, 32, 113, 32, 114, 32, 115, 32, 116, 32, 117, 32, 118, 32, 119, 32, 120, 32, 121, 32, 122, 32, 123, 32, 124, 32, 125, 32, 126, 32, 127, 32, 128, 32, 129, 32, 130, 32, 131, 32, 132, 32, 133, 32, 134, 32, 135, 32, 167, 32, 168, 32, 169, 32, 170, 32, 171, 32, 172, 32, 173, 32, 174, 32, 175, 32, 176, 32, 177, 32, 178, 32, 179, 32, 180, 32, 181, 32, 182, 32, 183, 32, 184, 32, 185, 32, 186, 32, 187, 32, 188, 33, 3, 33, 4, 33, 5, 33, 6, 33, 7, 33, 8, 33, 9, 33, 10, 33, 11, 33, 12, 33, 13, 33, 14, 33, 15, 33, 16, 33, 17, 33, 18, 33, 19, 33, 20, 33, 21, 33, 22, 33, 23, 33, 24, 33, 25, 33, 26, 33, 27, 33, 28, 33, 29, 33, 30, 33, 31, 33, 32, 33, 33, 33, 34, 33, 35, 33, 36, 33, 37, 33, 38, 33, 39, 33, 40, 33, 41, 33, 42, 33, 43, 33, 44, 33, 45, 33, 46, 33, 47, 33, 48, 33, 49, 33, 50, 33, 51, 33, 52, 33, 53, 33, 54, 33, 55, 33, 56, 33, 57, 33, 58, 33, 59, 33, 60, 33, 61, 33, 62, 33, 63, 33, 64, 33, 65, 33, 66, 33, 67, 33, 68, 33, 69, 33, 70, 33, 71, 33, 72, 33, 73, 33, 74, 33, 75, 33, 76, 33, 77, 33, 78, 33, 79, 33, 80, 33, 81, 33, 82, 33, 83, 33, 84, 33, 85, 33, 86, 33, 87, 33, 88, 33, 89, 33, 90, 33, 91, 33, 92, 33, 93, 33, 94, 33, 95, 33, 96, 33, 97, 33, 98, 33, 99, 33, 100, 33, 101, 33, 102, 33, 103, 33, 104, 33, 105, 33, 106, 33, 107, 33, 108, 33, 109, 33, 110, 33, 111, 33, 112, 33, 113, 33, 114, 33, 115, 33, 116, 33, 117, 33, 118, 33, 119, 33, 120, 33, 121, 33, 122, 33, 123, 33, 124, 33, 125, 33, 126, 33, 127, 33, 128, 33, 129, 33, 130, 33, 131, 33, 132, 33, 133, 33, 134, 33, 167, 33, 168, 33, 169, 33, 170, 33, 171, 33, 172, 33, 173, 33, 174, 33, 175, 33, 176, 33, 177, 33, 178, 33, 179, 33, 180, 33, 181, 33, 182, 33, 183, 33, 184, 33, 185, 33, 186, 33, 187, 33, 188, 34, 3, 34, 4, 34, 5, 34, 6, 34, 7, 34, 8, 34, 9, 34, 10, 34, 11, 34, 12, 34, 13, 34, 14, 34, 15, 34, 16, 34, 17, 34, 18, 34, 19, 34, 20, 34, 21, 34, 22, 34, 23, 34, 24, 34, 25, 34, 26, 34, 27, 34, 28, 34, 29, 34, 30, 34, 31, 34, 32, 34, 33, 34, 34, 34, 35, 34, 36, 34, 37, 34, 38, 34, 39, 34, 40, 34, 41, 34, 42, 34, 43, 34, 44, 34, 45, 34, 46, 34, 47, 34, 48, 34, 49, 34, 50, 34, 51, 34, 52, 34, 53, 34, 54, 34, 55, 34, 56, 34, 57, 34, 58, 34, 59, 34, 60, 34, 61, 34, 62, 34, 63, 34, 64, 34, 65, 34, 66, 34, 67, 34, 68, 34, 69, 34, 70, 34, 71, 34, 72, 34, 73, 34, 74, 34, 75, 34, 76, 34, 77, 34, 78, 34, 79, 34, 80, 34, 81, 34, 82, 34, 83, 34, 84, 34, 85, 34, 86, 34, 87, 34, 88, 34, 89, 34, 90, 34, 91, 34, 92, 34, 93, 34, 94, 34, 95, 34, 96, 34, 97, 34, 98, 34, 99, 34, 100, 34, 101, 34, 102, 34, 103, 34, 104, 34, 105, 34, 106, 34, 107, 34, 108, 34, 109, 34, 110, 34, 111, 34, 112, 34, 113, 34, 114, 34, 115, 34, 116, 34, 117, 34, 118, 34, 119, 34, 120, 34, 121, 34, 122, 34, 123, 34, 124, 34, 125, 34, 126, 34, 127, 34, 128, 34, 129, 34, 130, 34, 131, 34, 132, 34, 133, 34, 167, 34, 168, 34, 169, 34, 170, 34, 171, 34, 172, 34, 173, 34, 174, 34, 175, 34, 176, 34, 177, 34, 178, 34, 179, 34, 180, 34, 181, 34, 182, 34, 183, 34, 184, 34, 185, 34, 186, 34, 187, 34, 188, 35, 3, 35, 4, 35, 5, 35, 6, 35, 7, 35, 8, 35, 9, 35, 10, 35, 11, 35, 12, 35, 13, 35, 14, 35, 15, 35, 16, 35, 17, 35, 18, 35, 19, 35, 20, 35, 21, 35, 22, 35, 23, 35, 24, 35, 25, 35, 26, 35, 27, 35, 28, 35, 29, 35, 30, 35, 31, 35, 32, 35, 33, 35, 34, 35, 35, 35, 36, 35, 37, 35, 38, 35, 39, 35, 40, 35, 41, 35, 42, 35, 43, 35, 44, 35, 45, 35, 46, 35, 47, 35, 48, 35, 49, 35, 50, 35, 51, 35, 52, 35, 53, 35, 54, 35, 55, 35, 56, 35, 57, 35, 58, 35, 59, 35, 60, 35, 61, 35, 62, 35, 63, 35, 64, 35, 65, 35, 66, 35, 67, 35, 68, 35, 69, 35, 70, 35, 71, 35, 72, 35, 73, 35, 74, 35, 75, 35, 76, 35, 77, 35, 78, 35, 79, 35, 80, 35, 81, 35, 82, 35, 83, 35, 84, 35, 85, 35, 86, 35, 87, 35, 88, 35, 89, 35, 90, 35, 91, 35, 92, 35, 93, 35, 94, 35, 95, 35, 96, 35, 97, 35, 98, 35, 99, 35, 100, 35, 101, 35, 102, 35, 103, 35, 104, 35, 105, 35, 106, 35, 107, 35, 108, 35, 109, 35, 110, 35, 111, 35, 112, 35, 113, 35, 114, 35, 115, 35, 116, 35, 117, 35, 118, 35, 119, 35, 120, 35, 121, 35, 122, 35, 123, 35, 124, 35, 125, 35, 126, 35, 127, 35, 128, 35, 129, 35, 130, 35, 131, 35, 132, 35, 133, 35, 167, 35, 168, 35, 169, 35, 170, 35, 171, 35, 172, 35, 173, 35, 174, 35, 175, 35, 176, 35, 177, 35, 178, 35, 179, 35, 180, 35, 181, 35, 182, 35, 183, 35, 184, 35, 185, 35, 186, 35, 187, 35, 188, 36, 3, 36, 4, 36, 5, 36, 6, 36, 7, 36, 8, 36, 9, 36, 10, 36, 11, 36, 12, 36, 13, 36, 14, 36, 15, 36, 16, 36, 17, 36, 18, 36, 19, 36, 20, 36, 21, 36, 22, 36, 23, 36, 24, 36, 25, 36, 26, 36, 27, 36, 28, 36, 29, 36, 30, 36, 31, 36, 32, 36, 33, 36, 34, 36, 35, 36, 36, 36, 37, 36, 38, 36, 39, 36, 40, 36, 41, 36, 42, 36, 43, 36, 44, 36, 45, 36, 46, 36, 47, 36, 48, 36, 49, 36, 50, 36, 51, 36, 52, 36, 53, 36, 54, 36, 55, 36, 56, 36, 57, 36, 58, 36, 59, 36, 60, 36, 61, 36, 62, 36, 63, 36, 64, 36, 65, 36, 66, 36, 67, 36, 68, 36, 69, 36, 70, 36, 71, 36, 72, 36, 73, 36, 74, 36, 75, 36, 76, 36, 77, 36, 78, 36, 79, 36, 80, 36, 81, 36, 82, 36, 83, 36, 84, 36, 85, 36, 86, 36, 87, 36, 88, 36, 89, 36, 90, 36, 91, 36, 92, 36, 93, 36, 94, 36, 95, 36, 96, 36, 97, 36, 98, 36, 99, 36, 100, 36, 101, 36, 102, 36, 103, 36, 104, 36, 105, 36, 106, 36, 107, 36, 108, 36, 109, 36, 110, 36, 111, 36, 112, 36, 113, 36, 114, 36, 115, 36, 116, 36, 117, 36, 118, 36, 119, 36, 120, 36, 121, 36, 122, 36, 123, 36, 124, 36, 125, 36, 126, 36, 127, 36, 128, 36, 129, 36, 130, 36, 131, 36, 132, 36, 166, 36, 167, 36, 168, 36, 169, 36, 170, 36, 171, 36, 172, 36, 173, 36, 174, 36, 175, 36, 176, 36, 177, 36, 178, 36, 179, 36, 180, 36, 181, 36, 182, 36, 183, 36, 184, 36, 185, 36, 186, 36, 187, 36, 188, 37, 3, 37, 4, 37, 5, 37, 6, 37, 7, 37, 8, 37, 9, 37, 10, 37, 11, 37, 12, 37, 13, 37, 14, 37, 15, 37, 16, 37, 17, 37, 18, 37, 19, 37, 20, 37, 21, 37, 22, 37, 23, 37, 24, 37, 25, 37, 26, 37, 27, 37, 28, 37, 29, 37, 30, 37, 31, 37, 32, 37, 33, 37, 34, 37, 35, 37, 36, 37, 37, 37, 38, 37, 39, 37, 40, 37, 41, 37, 42, 37, 43, 37, 44, 37, 45, 37, 46, 37, 47, 37, 48, 37, 49, 37, 50, 37, 51, 37, 52, 37, 53, 37, 54, 37, 55, 37, 56, 37, 57, 37, 58, 37, 59, 37, 60, 37, 61, 37, 62, 37, 63, 37, 64, 37, 65, 37, 66, 37, 67, 37, 68, 37, 69, 37, 70, 37, 71, 37, 72, 37, 73, 37, 74, 37, 75, 37, 76, 37, 77, 37, 78, 37, 79, 37, 80, 37, 81, 37, 82, 37, 83, 37, 84, 37, 85, 37, 86, 37, 87, 37, 88, 37, 89, 37, 90, 37, 91, 37, 92, 37, 93, 37, 94, 37, 95, 37, 96, 37, 97, 37, 98, 37, 99, 37, 100, 37, 101, 37, 102, 37, 103, 37, 104, 37, 105, 37, 106, 37, 107, 37, 108, 37, 109, 37, 110, 37, 111, 37, 112, 37, 113, 37, 114, 37, 115, 37, 116, 37, 117, 37, 118, 37, 119, 37, 120, 37, 121, 37, 122, 37, 123, 37, 124, 37, 125, 37, 126, 37, 127, 37, 128, 37, 129, 37, 130, 37, 131, 37, 166, 37, 167, 37, 168, 37, 169, 37, 170, 37, 171, 37, 172, 37, 173, 37, 174, 37, 175, 37, 176, 37, 177, 37, 178, 37, 179, 37, 180, 37, 181, 37, 182, 37, 183, 37, 184, 37, 185, 37, 186, 37, 187, 37, 188, 38, 3, 38, 4, 38, 5, 38, 6, 38, 7, 38, 8, 38, 9, 38, 10, 38, 11, 38, 12, 38, 13, 38, 14, 38, 15, 38, 16, 38, 17, 38, 18, 38, 19, 38, 20, 38, 21, 38, 22, 38, 23, 38, 24, 38, 25, 38, 26, 38, 27, 38, 28, 38, 29, 38, 30, 38, 31, 38, 32, 38, 33, 38, 34, 38, 35, 38, 36, 38, 37, 38, 38, 38, 39, 38, 40, 38, 41, 38, 42, 38, 43, 38, 44, 38, 45, 38, 46, 38, 47, 38, 48, 38, 49, 38, 50, 38, 51, 38, 52, 38, 53, 38, 54, 38, 55, 38, 56, 38, 57, 38, 58, 38, 59, 38, 60, 38, 61, 38, 62, 38, 63, 38, 64, 38, 65, 38, 66, 38, 67, 38, 68, 38, 69, 38, 70, 38, 71, 38, 72, 38, 73, 38, 74, 38, 75, 38, 76, 38, 77, 38, 78, 38, 79, 38, 80, 38, 81, 38, 82, 38, 83, 38, 84, 38, 85, 38, 86, 38, 87, 38, 88, 38, 89, 38, 90, 38, 91, 38, 92, 38, 93, 38, 94, 38, 95, 38, 96, 38, 97, 38, 98, 38, 99, 38, 100, 38, 101, 38, 102, 38, 103, 38, 104, 38, 105, 38, 106, 38, 107, 38, 108, 38, 109, 38, 110, 38, 111, 38, 112, 38, 113, 38, 114, 38, 115, 38, 116, 38, 117, 38, 118, 38, 119, 38, 120, 38, 121, 38, 122, 38, 123, 38, 124, 38, 125, 38, 126, 38, 127, 38, 128, 38, 129, 38, 130, 38, 131, 38, 166, 38, 167, 38, 168, 38, 169, 38, 170, 38, 171, 38, 172, 38, 173, 38, 174, 38, 175, 38, 176, 38, 177, 38, 178, 38, 179, 38, 180, 38, 181, 38, 182, 38, 183, 38, 184, 38, 185, 38, 186, 38, 187, 38, 188, 39, 3, 39, 4, 39, 5, 39, 6, 39, 7, 39, 8, 39, 9, 39, 10, 39, 11, 39, 12, 39, 13, 39, 14, 39, 15, 39, 16, 39, 17, 39, 18, 39, 19, 39, 20, 39, 21, 39, 22, 39, 23, 39, 24, 39, 25, 39, 26, 39, 27, 39, 28, 39, 29, 39, 30, 39, 31, 39, 32, 39, 33, 39, 34, 39, 35, 39, 36, 39, 37, 39, 38, 39, 39, 39, 40, 39, 41, 39, 42, 39, 43, 39, 44, 39, 45, 39, 46, 39, 47, 39, 48, 39, 49, 39, 50, 39, 51, 39, 52, 39, 53, 39, 54, 39, 55, 39, 56, 39, 57, 39, 58, 39, 59, 39, 60, 39, 61, 39, 62, 39, 63, 39, 64, 39, 65, 39, 66, 39, 67, 39, 68, 39, 69, 39, 70, 39, 71, 39, 72, 39, 73, 39, 74, 39, 75, 39, 76, 39, 77, 39, 78, 39, 79, 39, 80, 39, 81, 39, 82, 39, 83, 39, 84, 39, 85, 39, 86, 39, 87, 39, 88, 39, 89, 39, 90, 39, 91, 39, 92, 39, 93, 39, 94, 39, 95, 39, 96, 39, 97, 39, 98, 39, 99, 39, 100, 39, 101, 39, 102, 39, 103, 39, 104, 39, 105, 39, 106, 39, 107, 39, 108, 39, 109, 39, 110, 39, 111, 39, 112, 39, 113, 39, 114, 39, 115, 39, 116, 39, 117, 39, 118, 39, 119, 39, 120, 39, 121, 39, 122, 39, 123, 39, 124, 39, 125, 39, 126, 39, 127, 39, 128, 39, 129, 39, 130, 39, 166, 39, 167, 39, 168, 39, 169, 39, 170, 39, 171, 39, 172, 39, 173, 39, 174, 39, 175, 39, 176, 39, 177, 39, 178, 39, 179, 39, 180, 39, 181, 39, 182, 39, 183, 39, 184, 39, 185, 39, 186, 39, 187, 39, 188, 40, 3, 40, 4, 40, 5, 40, 6, 40, 7, 40, 8, 40, 9, 40, 10, 40, 11, 40, 12, 40, 13, 40, 14, 40, 15, 40, 16, 40, 17, 40, 18, 40, 19, 40, 20, 40, 21, 40, 22, 40, 23, 40, 24, 40, 25, 40, 26, 40, 27, 40, 28, 40, 29, 40, 30, 40, 31, 40, 32, 40, 33, 40, 34, 40, 35, 40, 36, 40, 37, 40, 38, 40, 39, 40, 40, 40, 41, 40, 42, 40, 43, 40, 44, 40, 45, 40, 46, 40, 47, 40, 48, 40, 49, 40, 50, 40, 51, 40, 52, 40, 53, 40, 54, 40, 55, 40, 56, 40, 57, 40, 58, 40, 59, 40, 60, 40, 61, 40, 62, 40, 63, 40, 64, 40, 65, 40, 66, 40, 67, 40, 68, 40, 69, 40, 70, 40, 71, 40, 72, 40, 73, 40, 74, 40, 75, 40, 76, 40, 77, 40, 78, 40, 79, 40, 80, 40, 81, 40, 82, 40, 83, 40, 84, 40, 85, 40, 86, 40, 87, 40, 88, 40, 89, 40, 90, 40, 91, 40, 92, 40, 93, 40, 94, 40, 95, 40, 96, 40, 97, 40, 98, 40, 99, 40, 100, 40, 101, 40, 102, 40, 103, 40, 104, 40, 105, 40, 106, 40, 107, 40, 108, 40, 109, 40, 110, 40, 111, 40, 112, 40, 113, 40, 114, 40, 115, 40, 116, 40, 117, 40, 118, 40, 119, 40, 120, 40, 121, 40, 122, 40, 123, 40, 124, 40, 125, 40, 126, 40, 127, 40, 128, 40, 129, 40, 130, 40, 166, 40, 167, 40, 168, 40, 169, 40, 170, 40, 171, 40, 172, 40, 173, 40, 174, 40, 175, 40, 176, 40, 177, 40, 178, 40, 179, 40, 180, 40, 181, 40, 182, 40, 183, 40, 184, 40, 185, 40, 186, 40, 187, 40, 188, 41, 3, 41, 4, 41, 5, 41, 6, 41, 7, 41, 8, 41, 9, 41, 10, 41, 11, 41, 12, 41, 13, 41, 14, 41, 15, 41, 16, 41, 17, 41, 18, 41, 19, 41, 20, 41, 21, 41, 22, 41, 23, 41, 24, 41, 25, 41, 26, 41, 27, 41, 28, 41, 29, 41, 30, 41, 31, 41, 32, 41, 33, 41, 34, 41, 35, 41, 36, 41, 37, 41, 38, 41, 39, 41, 40, 41, 41, 41, 42, 41, 43, 41, 44, 41, 45, 41, 46, 41, 47, 41, 48, 41, 49, 41, 50, 41, 51, 41, 52, 41, 53, 41, 54, 41, 55, 41, 56, 41, 57, 41, 58, 41, 59, 41, 60, 41, 61, 41, 62, 41, 63, 41, 64, 41, 65, 41, 66, 41, 67, 41, 68, 41, 69, 41, 70, 41, 71, 41, 72, 41, 73, 41, 74, 41, 75, 41, 76, 41, 77, 41, 78, 41, 79, 41, 80, 41, 81, 41, 82, 41, 83, 41, 84, 41, 85, 41, 86, 41, 87, 41, 88, 41, 89, 41, 90, 41, 91, 41, 92, 41, 93, 41, 94, 41, 95, 41, 96, 41, 97, 41, 98, 41, 99, 41, 100, 41, 101, 41, 102, 41, 103, 41, 104, 41, 105, 41, 106, 41, 107, 41, 108, 41, 109, 41, 110, 41, 111, 41, 112, 41, 113, 41, 114, 41, 115, 41, 116, 41, 117, 41, 118, 41, 119, 41, 120, 41, 121, 41, 122, 41, 123, 41, 124, 41, 125, 41, 126, 41, 127, 41, 128, 41, 129, 41, 166, 41, 167, 41, 168, 41, 169, 41, 170, 41, 171, 41, 172, 41, 173, 41, 174, 41, 175, 41, 176, 41, 177, 41, 178, 41, 179, 41, 180, 41, 181, 41, 182, 41, 183, 41, 184, 41, 185, 41, 186, 41, 187, 41, 188, 42, 3, 42, 4, 42, 5, 42, 6, 42, 7, 42, 8, 42, 9, 42, 10, 42, 11, 42, 12, 42, 13, 42, 14, 42, 15, 42, 16, 42, 17, 42, 18, 42, 19, 42, 20, 42, 21, 42, 22, 42, 23, 42, 24, 42, 25, 42, 26, 42, 27, 42, 28, 42, 29, 42, 30, 42, 31, 42, 32, 42, 33, 42, 34, 42, 35, 42, 36, 42, 37, 42, 38, 42, 39, 42, 40, 42, 41, 42, 42, 42, 43, 42, 44, 42, 45, 42, 46, 42, 47, 42, 48, 42, 49, 42, 50, 42, 51, 42, 52, 42, 53, 42, 54, 42, 55, 42, 56, 42, 57, 42, 58, 42, 59, 42, 60, 42, 61, 42, 62, 42, 63, 42, 64, 42, 65, 42, 66, 42, 67, 42, 68, 42, 69, 42, 70, 42, 71, 42, 72, 42, 73, 42, 74, 42, 75, 42, 76, 42, 77, 42, 78, 42, 79, 42, 80, 42, 81, 42, 82, 42, 83, 42, 84, 42, 85, 42, 86, 42, 87, 42, 88, 42, 89, 42, 90, 42, 91, 42, 92, 42, 93, 42, 94, 42, 95, 42, 96, 42, 97, 42, 98, 42, 99, 42, 100, 42, 101, 42, 102, 42, 103, 42, 104, 42, 105, 42, 106, 42, 107, 42, 108, 42, 109, 42, 110, 42, 111, 42, 112, 42, 113, 42, 114, 42, 115, 42, 116, 42, 117, 42, 118, 42, 119, 42, 120, 42, 121, 42, 122, 42, 123, 42, 124, 42, 125, 42, 126, 42, 127, 42, 128, 42, 166, 42, 167, 42, 168, 42, 169, 42, 170, 42, 171, 42, 172, 42, 173, 42, 174, 42, 175, 42, 176, 42, 177, 42, 178, 42, 179, 42, 180, 42, 181, 42, 182, 42, 183, 42, 184, 42, 185, 42, 186, 42, 187, 42, 188, 43, 3, 43, 4, 43, 5, 43, 6, 43, 7, 43, 8, 43, 9, 43, 10, 43, 11, 43, 12, 43, 13, 43, 14, 43, 15, 43, 16, 43, 17, 43, 18, 43, 19, 43, 20, 43, 21, 43, 22, 43, 23, 43, 24, 43, 25, 43, 26, 43, 27, 43, 28, 43, 29, 43, 30, 43, 31, 43, 32, 43, 33, 43, 34, 43, 35, 43, 36, 43, 37, 43, 38, 43, 39, 43, 40, 43, 41, 43, 42, 43, 43, 43, 44, 43, 45, 43, 46, 43, 47, 43, 48, 43, 49, 43, 50, 43, 51, 43, 52, 43, 53, 43, 54, 43, 55, 43, 56, 43, 57, 43, 58, 43, 59, 43, 60, 43, 61, 43, 62, 43, 63, 43, 64, 43, 65, 43, 66, 43, 67, 43, 68, 43, 69, 43, 70, 43, 71, 43, 72, 43, 73, 43, 74, 43, 75, 43, 76, 43, 77, 43, 78, 43, 79, 43, 80, 43, 81, 43, 82, 43, 83, 43, 84, 43, 85, 43, 86, 43, 87, 43, 88, 43, 89, 43, 90, 43, 91, 43, 92, 43, 93, 43, 94, 43, 95, 43, 96, 43, 97, 43, 98, 43, 99, 43, 100, 43, 101, 43, 102, 43, 103, 43, 104, 43, 105, 43, 106, 43, 107, 43, 108, 43, 109, 43, 110, 43, 111, 43, 112, 43, 113, 43, 114, 43, 115, 43, 116, 43, 117, 43, 118, 43, 119, 43, 120, 43, 121, 43, 122, 43, 123, 43, 124, 43, 125, 43, 126, 43, 127, 43, 166, 43, 167, 43, 168, 43, 169, 43, 170, 43, 171, 43, 172, 43, 173, 43, 174, 43, 175, 43, 176, 43, 177, 43, 178, 43, 179, 43, 180, 43, 181, 43, 182, 43, 183, 43, 184, 43, 185, 43, 186, 43, 187, 43, 188, 44, 3, 44, 4, 44, 5, 44, 6, 44, 7, 44, 8, 44, 9, 44, 10, 44, 11, 44, 12, 44, 13, 44, 14, 44, 15, 44, 16, 44, 17, 44, 18, 44, 19, 44, 20, 44, 21, 44, 22, 44, 23, 44, 24, 44, 25, 44, 26, 44, 27, 44, 28, 44, 29, 44, 30, 44, 31, 44, 32, 44, 33, 44, 34, 44, 35, 44, 36, 44, 37, 44, 38, 44, 39, 44, 40, 44, 41, 44, 42, 44, 43, 44, 44, 44, 45, 44, 46, 44, 47, 44, 48, 44, 49, 44, 50, 44, 51, 44, 52, 44, 53, 44, 54, 44, 55, 44, 56, 44, 57, 44, 58, 44, 59, 44, 60, 44, 61, 44, 62, 44, 63, 44, 64, 44, 65, 44, 66, 44, 67, 44, 68, 44, 69, 44, 70, 44, 71, 44, 72, 44, 73, 44, 74, 44, 75, 44, 76, 44, 77, 44, 78, 44, 79, 44, 80, 44, 81, 44, 82, 44, 83, 44, 84, 44, 85, 44, 86, 44, 87, 44, 88, 44, 89, 44, 90, 44, 91, 44, 92, 44, 93, 44, 94, 44, 95, 44, 96, 44, 97, 44, 98, 44, 99, 44, 100, 44, 101, 44, 102, 44, 103, 44, 104, 44, 105, 44, 106, 44, 107, 44, 108, 44, 109, 44, 110, 44, 111, 44, 112, 44, 113, 44, 114, 44, 115, 44, 116, 44, 117, 44, 118, 44, 119, 44, 120, 44, 121, 44, 122, 44, 123, 44, 124, 44, 125, 44, 126, 44, 166, 44, 167, 44, 168, 44, 169, 44, 170, 44, 171, 44, 172, 44, 173, 44, 174, 44, 175, 44, 176, 44, 177, 44, 178, 44, 179, 44, 180, 44, 181, 44, 182, 44, 183, 44, 184, 44, 185, 44, 186, 44, 187, 44, 188, 45, 3, 45, 4, 45, 5, 45, 6, 45, 7, 45, 8, 45, 9, 45, 10, 45, 11, 45, 12, 45, 13, 45, 14, 45, 15, 45, 16, 45, 17, 45, 18, 45, 19, 45, 20, 45, 21, 45, 22, 45, 23, 45, 24, 45, 25, 45, 26, 45, 27, 45, 28, 45, 29, 45, 30, 45, 31, 45, 32, 45, 33, 45, 34, 45, 35, 45, 36, 45, 37, 45, 38, 45, 39, 45, 40, 45, 41, 45, 42, 45, 43, 45, 44, 45, 45, 45, 46, 45, 47, 45, 48, 45, 49, 45, 50, 45, 51, 45, 52, 45, 53, 45, 54, 45, 55, 45, 56, 45, 57, 45, 58, 45, 59, 45, 60, 45, 61, 45, 62, 45, 63, 45, 64, 45, 65, 45, 66, 45, 67, 45, 68, 45, 69, 45, 70, 45, 71, 45, 72, 45, 73, 45, 74, 45, 75, 45, 76, 45, 77, 45, 78, 45, 79, 45, 80, 45, 81, 45, 82, 45, 83, 45, 84, 45, 85, 45, 86, 45, 87, 45, 88, 45, 89, 45, 90, 45, 91, 45, 92, 45, 93, 45, 94, 45, 95, 45, 96, 45, 97, 45, 98, 45, 99, 45, 100, 45, 101, 45, 102, 45, 103, 45, 104, 45, 105, 45, 106, 45, 107, 45, 108, 45, 109, 45, 110, 45, 111, 45, 112, 45, 113, 45, 114, 45, 115, 45, 116, 45, 117, 45, 118, 45, 119, 45, 120, 45, 121, 45, 122, 45, 123, 45, 124, 45, 125, 45, 166, 45, 167, 45, 168, 45, 169, 45, 170, 45, 171, 45, 172, 45, 173, 45, 174, 45, 175, 45, 176, 45, 177, 45, 178, 45, 179, 45, 180, 45, 181, 45, 182, 45, 183, 45, 184, 45, 185, 45, 186, 45, 187, 45, 188, 46, 3, 46, 4, 46, 5, 46, 6, 46, 7, 46, 8, 46, 9, 46, 10, 46, 11, 46, 12, 46, 13, 46, 14, 46, 15, 46, 16, 46, 17, 46, 18, 46, 19, 46, 20, 46, 21, 46, 22, 46, 23, 46, 24, 46, 25, 46, 26, 46, 27, 46, 28, 46, 29, 46, 30, 46, 31, 46, 32, 46, 33, 46, 34, 46, 35, 46, 36, 46, 37, 46, 38, 46, 39, 46, 40, 46, 41, 46, 42, 46, 43, 46, 44, 46, 45, 46, 46, 46, 47, 46, 48, 46, 49, 46, 50, 46, 51, 46, 52, 46, 53, 46, 54, 46, 55, 46, 56, 46, 57, 46, 58, 46, 59, 46, 60, 46, 61, 46, 62, 46, 63, 46, 64, 46, 65, 46, 66, 46, 67, 46, 68, 46, 69, 46, 70, 46, 71, 46, 72, 46, 73, 46, 74, 46, 75, 46, 76, 46, 77, 46, 78, 46, 79, 46, 80, 46, 81, 46, 82, 46, 83, 46, 84, 46, 85, 46, 86, 46, 87, 46, 88, 46, 89, 46, 90, 46, 91, 46, 92, 46, 93, 46, 94, 46, 95, 46, 96, 46, 97, 46, 98, 46, 99, 46, 100, 46, 101, 46, 102, 46, 103, 46, 104, 46, 105, 46, 106, 46, 107, 46, 108, 46, 109, 46, 110, 46, 111, 46, 112, 46, 113, 46, 114, 46, 115, 46, 116, 46, 117, 46, 118, 46, 119, 46, 120, 46, 121, 46, 122, 46, 123, 46, 124, 46, 165, 46, 166, 46, 167, 46, 168, 46, 169, 46, 170, 46, 171, 46, 172, 46, 173, 46, 174, 46, 175, 46, 176, 46, 177, 46, 178, 46, 179, 46, 180, 46, 181, 46, 182, 46, 183, 46, 184, 46, 185, 46, 186, 46, 187, 46, 188, 47, 3, 47, 4, 47, 5, 47, 6, 47, 7, 47, 8, 47, 9, 47, 10, 47, 11, 47, 12, 47, 13, 47, 14, 47, 15, 47, 16, 47, 17, 47, 18, 47, 19, 47, 20, 47, 21, 47, 22, 47, 23, 47, 24, 47, 25, 47, 26, 47, 27, 47, 28, 47, 29, 47, 30, 47, 31, 47, 32, 47, 33, 47, 34, 47, 35, 47, 36, 47, 37, 47, 38, 47, 39, 47, 40, 47, 41, 47, 42, 47, 43, 47, 44, 47, 45, 47, 46, 47, 47, 47, 48, 47, 49, 47, 50, 47, 51, 47, 52, 47, 53, 47, 54, 47, 55, 47, 56, 47, 57, 47, 58, 47, 59, 47, 60, 47, 61, 47, 62, 47, 63, 47, 64, 47, 65, 47, 66, 47, 67, 47, 68, 47, 69, 47, 70, 47, 71, 47, 72, 47, 73, 47, 74, 47, 75, 47, 76, 47, 77, 47, 78, 47, 79, 47, 80, 47, 81, 47, 82, 47, 83, 47, 84, 47, 85, 47, 86, 47, 87, 47, 88, 47, 89, 47, 90, 47, 91, 47, 92, 47, 93, 47, 94, 47, 95, 47, 96, 47, 97, 47, 98, 47, 99, 47, 100, 47, 101, 47, 102, 47, 103, 47, 104, 47, 105, 47, 106, 47, 107, 47, 108, 47, 109, 47, 110, 47, 111, 47, 112, 47, 113, 47, 114, 47, 115, 47, 116, 47, 117, 47, 118, 47, 119, 47, 120, 47, 121, 47, 122, 47, 123, 47, 165, 47, 166, 47, 167, 47, 168, 47, 169, 47, 170, 47, 171, 47, 172, 47, 173, 47, 174, 47, 175, 47, 176, 47, 177, 47, 178, 47, 179, 47, 180, 47, 181, 47, 182, 47, 183, 47, 184, 47, 185, 47, 186, 47, 187, 47, 188, 48, 3, 48, 4, 48, 5, 48, 6, 48, 7, 48, 8, 48, 9, 48, 10, 48, 11, 48, 12, 48, 13, 48, 14, 48, 15, 48, 16, 48, 17, 48, 18, 48, 19, 48, 20, 48, 21, 48, 22, 48, 23, 48, 24, 48, 25, 48, 26, 48, 27, 48, 28, 48, 29, 48, 30, 48, 31, 48, 32, 48, 33, 48, 34, 48, 35, 48, 36, 48, 37, 48, 38, 48, 39, 48, 40, 48, 41, 48, 42, 48, 43, 48, 44, 48, 45, 48, 46, 48, 47, 48, 48, 48, 49, 48, 50, 48, 51, 48, 52, 48, 53, 48, 54, 48, 55, 48, 56, 48, 57, 48, 58, 48, 59, 48, 60, 48, 61, 48, 62, 48, 63, 48, 64, 48, 65, 48, 66, 48, 67, 48, 68, 48, 69, 48, 70, 48, 71, 48, 72, 48, 73, 48, 74, 48, 75, 48, 76, 48, 77, 48, 78, 48, 79, 48, 80, 48, 81, 48, 82, 48, 83, 48, 84, 48, 85, 48, 86, 48, 87, 48, 88, 48, 89, 48, 90, 48, 91, 48, 92, 48, 93, 48, 94, 48, 95, 48, 96, 48, 97, 48, 98, 48, 99, 48, 100, 48, 101, 48, 102, 48, 103, 48, 104, 48, 105, 48, 106, 48, 107, 48, 108, 48, 109, 48, 110, 48, 111, 48, 112, 48, 113, 48, 114, 48, 115, 48, 116, 48, 117, 48, 118, 48, 119, 48, 120, 48, 121, 48, 122, 48, 165, 48, 166, 48, 167, 48, 168, 48, 169, 48, 170, 48, 171, 48, 172, 48, 173, 48, 174, 48, 175, 48, 176, 48, 177, 48, 178, 48, 179, 48, 180, 48, 181, 48, 182, 48, 183, 48, 184, 48, 185, 48, 186, 48, 187, 48, 188, 49, 3, 49, 4, 49, 5, 49, 6, 49, 7, 49, 8, 49, 9, 49, 10, 49, 11, 49, 12, 49, 13, 49, 14, 49, 15, 49, 16, 49, 17, 49, 18, 49, 19, 49, 20, 49, 21, 49, 22, 49, 23, 49, 24, 49, 25, 49, 26, 49, 27, 49, 28, 49, 29, 49, 30, 49, 31, 49, 32, 49, 33, 49, 34, 49, 35, 49, 36, 49, 37, 49, 38, 49, 39, 49, 40, 49, 41, 49, 42, 49, 43, 49, 44, 49, 45, 49, 46, 49, 47, 49, 48, 49, 49, 49, 50, 49, 51, 49, 52, 49, 53, 49, 54, 49, 55, 49, 56, 49, 57, 49, 58, 49, 59, 49, 60, 49, 61, 49, 62, 49, 63, 49, 64, 49, 65, 49, 66, 49, 67, 49, 68, 49, 69, 49, 70, 49, 71, 49, 72, 49, 73, 49, 74, 49, 75, 49, 76, 49, 77, 49, 78, 49, 79, 49, 80, 49, 81, 49, 82, 49, 83, 49, 84, 49, 85, 49, 86, 49, 87, 49, 88, 49, 89, 49, 90, 49, 91, 49, 92, 49, 93, 49, 94, 49, 95, 49, 96, 49, 97, 49, 98, 49, 99, 49, 100, 49, 101, 49, 102, 49, 103, 49, 104, 49, 105, 49, 106, 49, 107, 49, 108, 49, 109, 49, 110, 49, 111, 49, 112, 49, 113, 49, 114, 49, 115, 49, 116, 49, 117, 49, 118, 49, 119, 49, 120, 49, 121, 49, 165, 49, 166, 49, 167, 49, 168, 49, 169, 49, 170, 49, 171, 49, 172, 49, 173, 49, 174, 49, 175, 49, 176, 49, 177, 49, 178, 49, 179, 49, 180, 49, 181, 49, 182, 49, 183, 49, 184, 49, 185, 49, 186, 49, 187, 49, 188, 50, 3, 50, 4, 50, 5, 50, 6, 50, 7, 50, 8, 50, 9, 50, 10, 50, 11, 50, 12, 50, 13, 50, 14, 50, 15, 50, 16, 50, 17, 50, 18, 50, 19, 50, 20, 50, 21, 50, 22, 50, 23, 50, 24, 50, 25, 50, 26, 50, 27, 50, 28, 50, 29, 50, 30, 50, 31, 50, 32, 50, 33, 50, 34, 50, 35, 50, 36, 50, 37, 50, 38, 50, 39, 50, 40, 50, 41, 50, 42, 50, 43, 50, 44, 50, 45, 50, 46, 50, 47, 50, 48, 50, 49, 50, 50, 50, 51, 50, 52, 50, 53, 50, 54, 50, 55, 50, 56, 50, 57, 50, 58, 50, 59, 50, 60, 50, 61, 50, 62, 50, 63, 50, 64, 50, 65, 50, 66, 50, 67, 50, 68, 50, 69, 50, 70, 50, 71, 50, 72, 50, 73, 50, 74, 50, 75, 50, 76, 50, 77, 50, 78, 50, 79, 50, 80, 50, 81, 50, 82, 50, 83, 50, 84, 50, 85, 50, 86, 50, 87, 50, 88, 50, 89, 50, 90, 50, 91, 50, 92, 50, 93, 50, 94, 50, 95, 50, 96, 50, 97, 50, 98, 50, 99, 50, 100, 50, 101, 50, 102, 50, 103, 50, 104, 50, 105, 50, 106, 50, 107, 50, 108, 50, 109, 50, 110, 50, 111, 50, 112, 50, 113, 50, 114, 50, 115, 50, 116, 50, 117, 50, 118, 50, 119, 50, 120, 50, 165, 50, 166, 50, 167, 50, 168, 50, 169, 50, 170, 50, 171, 50, 172, 50, 173, 50, 174, 50, 175, 50, 176, 50, 177, 50, 178, 50, 179, 50, 180, 50, 181, 50, 182, 50, 183, 50, 184, 50, 185, 50, 186, 50, 187, 50, 188, 51, 3, 51, 4, 51, 5, 51, 6, 51, 7, 51, 8, 51, 9, 51, 10, 51, 11, 51, 12, 51, 13, 51, 14, 51, 15, 51, 16, 51, 17, 51, 18, 51, 19, 51, 20, 51, 21, 51, 22, 51, 23, 51, 24, 51, 25, 51, 26, 51, 27, 51, 28, 51, 29, 51, 30, 51, 31, 51, 32, 51, 33, 51, 34, 51, 35, 51, 36, 51, 37, 51, 38, 51, 39, 51, 40, 51, 41, 51, 42, 51, 43, 51, 44, 51, 45, 51, 46, 51, 47, 51, 48, 51, 49, 51, 50, 51, 51, 51, 52, 51, 53, 51, 54, 51, 55, 51, 56, 51, 57, 51, 58, 51, 59, 51, 60, 51, 61, 51, 62, 51, 63, 51, 64, 51, 65, 51, 66, 51, 67, 51, 68, 51, 69, 51, 70, 51, 71, 51, 72, 51, 73, 51, 74, 51, 75, 51, 76, 51, 77, 51, 78, 51, 79, 51, 80, 51, 81, 51, 82, 51, 83, 51, 84, 51, 85, 51, 86, 51, 87, 51, 88, 51, 89, 51, 90, 51, 91, 51, 92, 51, 93, 51, 94, 51, 95, 51, 96, 51, 97, 51, 98, 51, 99, 51, 100, 51, 101, 51, 102, 51, 103, 51, 104, 51, 105, 51, 106, 51, 107, 51, 108, 51, 109, 51, 110, 51, 111, 51, 112, 51, 113, 51, 114, 51, 115, 51, 116, 51, 117, 51, 118, 51, 119, 51, 165, 51, 166, 51, 167, 51, 168, 51, 169, 51, 170, 51, 171, 51, 172, 51, 173, 51, 174, 51, 175, 51, 176, 51, 177, 51, 178, 51, 179, 51, 180, 51, 181, 51, 182, 51, 183, 51, 184, 51, 185, 51, 186, 51, 187, 51, 188, 52, 3, 52, 4, 52, 5, 52, 6, 52, 7, 52, 8, 52, 9, 52, 10, 52, 11, 52, 12, 52, 13, 52, 14, 52, 15, 52, 16, 52, 17, 52, 18, 52, 19, 52, 20, 52, 21, 52, 22, 52, 23, 52, 24, 52, 25, 52, 26, 52, 27, 52, 28, 52, 29, 52, 30, 52, 31, 52, 32, 52, 33, 52, 34, 52, 35, 52, 36, 52, 37, 52, 38, 52, 39, 52, 40, 52, 41, 52, 42, 52, 43, 52, 44, 52, 45, 52, 46, 52, 47, 52, 48, 52, 49, 52, 50, 52, 51, 52, 52, 52, 53, 52, 54, 52, 55, 52, 56, 52, 57, 52, 58, 52, 59, 52, 60, 52, 61, 52, 62, 52, 63, 52, 64, 52, 65, 52, 66, 52, 67, 52, 68, 52, 69, 52, 70, 52, 71, 52, 72, 52, 73, 52, 74, 52, 75, 52, 76, 52, 77, 52, 78, 52, 79, 52, 80, 52, 81, 52, 82, 52, 83, 52, 84, 52, 85, 52, 86, 52, 87, 52, 88, 52, 89, 52, 90, 52, 91, 52, 92, 52, 93, 52, 94, 52, 95, 52, 96, 52, 97, 52, 98, 52, 99, 52, 100, 52, 101, 52, 102, 52, 103, 52, 104, 52, 105, 52, 106, 52, 107, 52, 108, 52, 109, 52, 110, 52, 111, 52, 112, 52, 113, 52, 114, 52, 115, 52, 116, 52, 117, 52, 165, 52, 166, 52, 167, 52, 168, 52, 169, 52, 170, 52, 171, 52, 172, 52, 173, 52, 174, 52, 175, 52, 176, 52, 177, 52, 178, 52, 179, 52, 180, 52, 181, 52, 182, 52, 183, 52, 184, 52, 185, 52, 186, 52, 187, 52, 188, 53, 3, 53, 4, 53, 5, 53, 6, 53, 7, 53, 8, 53, 9, 53, 10, 53, 11, 53, 12, 53, 13, 53, 14, 53, 15, 53, 16, 53, 17, 53, 18, 53, 19, 53, 20, 53, 21, 53, 22, 53, 23, 53, 24, 53, 25, 53, 26, 53, 27, 53, 28, 53, 29, 53, 30, 53, 31, 53, 32, 53, 33, 53, 34, 53, 35, 53, 36, 53, 37, 53, 38, 53, 39, 53, 40, 53, 41, 53, 42, 53, 43, 53, 44, 53, 45, 53, 46, 53, 47, 53, 48, 53, 49, 53, 50, 53, 51, 53, 52, 53, 53, 53, 54, 53, 55, 53, 56, 53, 57, 53, 58, 53, 59, 53, 60, 53, 61, 53, 62, 53, 63, 53, 64, 53, 65, 53, 66, 53, 67, 53, 68, 53, 69, 53, 70, 53, 71, 53, 72, 53, 73, 53, 74, 53, 75, 53, 76, 53, 77, 53, 78, 53, 79, 53, 80, 53, 81, 53, 82, 53, 83, 53, 84, 53, 85, 53, 86, 53, 87, 53, 88, 53, 89, 53, 90, 53, 91, 53, 92, 53, 93, 53, 94, 53, 95, 53, 96, 53, 97, 53, 98, 53, 99, 53, 100, 53, 101, 53, 102, 53, 103, 53, 104, 53, 105, 53, 106, 53, 107, 53, 108, 53, 109, 53, 110, 53, 111, 53, 112, 53, 113, 53, 114, 53, 115, 53, 116, 53, 165, 53, 166, 53, 167, 53, 168, 53, 169, 53, 170, 53, 171, 53, 172, 53, 173, 53, 174, 53, 175, 53, 176, 53, 177, 53, 178, 53, 179, 53, 180, 53, 181, 53, 182, 53, 183, 53, 184, 53, 185, 53, 186, 53, 187, 53, 188, 54, 3, 54, 4, 54, 5, 54, 6, 54, 7, 54, 8, 54, 9, 54, 10, 54, 11, 54, 12, 54, 13, 54, 14, 54, 15, 54, 16, 54, 17, 54, 18, 54, 19, 54, 20, 54, 21, 54, 22, 54, 23, 54, 24, 54, 25, 54, 26, 54, 27, 54, 28, 54, 29, 54, 30, 54, 31, 54, 32, 54, 33, 54, 34, 54, 35, 54, 36, 54, 37, 54, 38, 54, 39, 54, 40, 54, 41, 54, 42, 54, 43, 54, 44, 54, 45, 54, 46, 54, 47, 54, 48, 54, 49, 54, 50, 54, 51, 54, 52, 54, 53, 54, 54, 54, 55, 54, 56, 54, 57, 54, 58, 54, 59, 54, 60, 54, 61, 54, 62, 54, 63, 54, 64, 54, 65, 54, 66, 54, 67, 54, 68, 54, 69, 54, 70, 54, 71, 54, 72, 54, 73, 54, 74, 54, 75, 54, 76, 54, 77, 54, 78, 54, 79, 54, 80, 54, 81, 54, 82, 54, 83, 54, 84, 54, 85, 54, 86, 54, 87, 54, 88, 54, 89, 54, 90, 54, 91, 54, 92, 54, 93, 54, 94, 54, 95, 54, 96, 54, 97, 54, 98, 54, 99, 54, 100, 54, 101, 54, 102, 54, 103, 54, 104, 54, 105, 54, 106, 54, 107, 54, 108, 54, 109, 54, 110, 54, 111, 54, 112, 54, 113, 54, 114, 54, 115, 54, 165, 54, 166, 54, 167, 54, 168, 54, 169, 54, 170, 54, 171, 54, 172, 54, 173, 54, 174, 54, 175, 54, 176, 54, 177, 54, 178, 54, 179, 54, 180, 54, 181, 54, 182, 54, 183, 54, 184, 54, 185, 54, 186, 54, 187, 54, 188, 55, 3, 55, 4, 55, 5, 55, 6, 55, 7, 55, 8, 55, 9, 55, 10, 55, 11, 55, 12, 55, 13, 55, 14, 55, 15, 55, 16, 55, 17, 55, 18, 55, 19, 55, 20, 55, 21, 55, 22, 55, 23, 55, 24, 55, 25, 55, 26, 55, 27, 55, 28, 55, 29, 55, 30, 55, 31, 55, 32, 55, 33, 55, 34, 55, 35, 55, 36, 55, 37, 55, 38, 55, 39, 55, 40, 55, 41, 55, 42, 55, 43, 55, 44, 55, 45, 55, 46, 55, 47, 55, 48, 55, 49, 55, 50, 55, 51, 55, 52, 55, 53, 55, 54, 55, 55, 55, 56, 55, 57, 55, 58, 55, 59, 55, 60, 55, 61, 55, 62, 55, 63, 55, 64, 55, 65, 55, 66, 55, 67, 55, 68, 55, 69, 55, 70, 55, 71, 55, 72, 55, 73, 55, 74, 55, 75, 55, 76, 55, 77, 55, 78, 55, 79, 55, 80, 55, 81, 55, 82, 55, 83, 55, 84, 55, 85, 55, 86, 55, 87, 55, 88, 55, 89, 55, 90, 55, 91, 55, 92, 55, 93, 55, 94, 55, 95, 55, 96, 55, 97, 55, 98, 55, 99, 55, 100, 55, 101, 55, 102, 55, 103, 55, 104, 55, 105, 55, 106, 55, 107, 55, 108, 55, 109, 55, 110, 55, 111, 55, 112, 55, 113, 55, 114, 55, 165, 55, 166, 55, 167, 55, 168, 55, 169, 55, 170, 55, 171, 55, 172, 55, 173, 55, 174, 55, 175, 55, 176, 55, 177, 55, 178, 55, 179, 55, 180, 55, 181, 55, 182, 55, 183, 55, 184, 55, 185, 55, 186, 55, 187, 55, 188, 56, 3, 56, 4, 56, 5, 56, 6, 56, 7, 56, 8, 56, 9, 56, 10, 56, 11, 56, 12, 56, 13, 56, 14, 56, 15, 56, 16, 56, 17, 56, 18, 56, 19, 56, 20, 56, 21, 56, 22, 56, 23, 56, 24, 56, 25, 56, 26, 56, 27, 56, 28, 56, 29, 56, 30, 56, 31, 56, 32, 56, 33, 56, 34, 56, 35, 56, 36, 56, 37, 56, 38, 56, 39, 56, 40, 56, 41, 56, 42, 56, 43, 56, 44, 56, 45, 56, 46, 56, 47, 56, 48, 56, 49, 56, 50, 56, 51, 56, 52, 56, 53, 56, 54, 56, 55, 56, 56, 56, 57, 56, 58, 56, 59, 56, 60, 56, 61, 56, 62, 56, 63, 56, 64, 56, 65, 56, 66, 56, 67, 56, 68, 56, 69, 56, 70, 56, 71, 56, 72, 56, 73, 56, 74, 56, 75, 56, 76, 56, 77, 56, 78, 56, 79, 56, 80, 56, 81, 56, 82, 56, 83, 56, 84, 56, 85, 56, 86, 56, 87, 56, 88, 56, 89, 56, 90, 56, 91, 56, 92, 56, 93, 56, 94, 56, 95, 56, 96, 56, 97, 56, 98, 56, 99, 56, 100, 56, 101, 56, 102, 56, 103, 56, 104, 56, 105, 56, 106, 56, 107, 56, 108, 56, 109, 56, 110, 56, 111, 56, 112, 56, 113, 56, 165, 56, 166, 56, 167, 56, 168, 56, 169, 56, 170, 56, 171, 56, 172, 56, 173, 56, 174, 56, 175, 56, 176, 56, 177, 56, 178, 56, 179, 56, 180, 56, 181, 56, 182, 56, 183, 56, 184, 56, 185, 56, 186, 56, 187, 56, 188, 57, 3, 57, 4, 57, 5, 57, 6, 57, 7, 57, 8, 57, 9, 57, 10, 57, 11, 57, 12, 57, 13, 57, 14, 57, 15, 57, 16, 57, 17, 57, 18, 57, 19, 57, 20, 57, 21, 57, 22, 57, 23, 57, 24, 57, 25, 57, 26, 57, 27, 57, 28, 57, 29, 57, 30, 57, 31, 57, 32, 57, 33, 57, 34, 57, 35, 57, 36, 57, 37, 57, 38, 57, 39, 57, 40, 57, 41, 57, 42, 57, 43, 57, 44, 57, 45, 57, 46, 57, 47, 57, 48, 57, 49, 57, 50, 57, 51, 57, 52, 57, 53, 57, 54, 57, 55, 57, 56, 57, 57, 57, 58, 57, 59, 57, 60, 57, 61, 57, 62, 57, 63, 57, 64, 57, 65, 57, 66, 57, 67, 57, 68, 57, 69, 57, 70, 57, 71, 57, 72, 57, 73, 57, 74, 57, 75, 57, 76, 57, 77, 57, 78, 57, 79, 57, 80, 57, 81, 57, 82, 57, 83, 57, 84, 57, 85, 57, 86, 57, 87, 57, 88, 57, 89, 57, 90, 57, 91, 57, 92, 57, 93, 57, 94, 57, 95, 57, 96, 57, 97, 57, 98, 57, 99, 57, 100, 57, 101, 57, 102, 57, 103, 57, 104, 57, 105, 57, 106, 57, 107, 57, 108, 57, 109, 57, 110, 57, 111, 57, 112, 57, 113, 57, 165, 57, 166, 57, 167, 57, 168, 57, 169, 57, 170, 57, 171, 57, 172, 57, 173, 57, 174, 57, 175, 57, 176, 57, 177, 57, 178, 57, 179, 57, 180, 57, 181, 57, 182, 57, 183, 57, 184, 57, 185, 57, 186, 57, 187, 57, 188, 58, 3, 58, 4, 58, 5, 58, 6, 58, 7, 58, 8, 58, 9, 58, 10, 58, 11, 58, 12, 58, 13, 58, 14, 58, 15, 58, 16, 58, 17, 58, 18, 58, 19, 58, 20, 58, 21, 58, 22, 58, 23, 58, 24, 58, 25, 58, 26, 58, 27, 58, 28, 58, 29, 58, 30, 58, 31, 58, 32, 58, 33, 58, 34, 58, 35, 58, 36, 58, 37, 58, 38, 58, 39, 58, 40, 58, 41, 58, 42, 58, 43, 58, 44, 58, 45, 58, 46, 58, 47, 58, 48, 58, 49, 58, 50, 58, 51, 58, 52, 58, 53, 58, 54, 58, 55, 58, 56, 58, 57, 58, 58, 58, 59, 58, 60, 58, 61, 58, 62, 58, 63, 58, 64, 58, 65, 58, 66, 58, 67, 58, 68, 58, 69, 58, 70, 58, 71, 58, 72, 58, 73, 58, 74, 58, 75, 58, 76, 58, 77, 58, 78, 58, 79, 58, 80, 58, 81, 58, 82, 58, 83, 58, 84, 58, 85, 58, 86, 58, 87, 58, 88, 58, 89, 58, 90, 58, 91, 58, 92, 58, 93, 58, 94, 58, 95, 58, 96, 58, 97, 58, 98, 58, 99, 58, 100, 58, 101, 58, 102, 58, 103, 58, 104, 58, 105, 58, 106, 58, 107, 58, 108, 58, 109, 58, 110, 58, 111, 58, 112, 58, 165, 58, 166, 58, 167, 58, 168, 58, 169, 58, 170, 58, 171, 58, 172, 58, 173, 58, 174, 58, 175, 58, 176, 58, 177, 58, 178, 58, 179, 58, 180, 58, 181, 58, 182, 58, 183, 58, 184, 58, 185, 58, 186, 58, 187, 58, 188, 59, 3, 59, 4, 59, 5, 59, 6, 59, 7, 59, 8, 59, 9, 59, 10, 59, 11, 59, 12, 59, 13, 59, 14, 59, 15, 59, 16, 59, 17, 59, 18, 59, 19, 59, 20, 59, 21, 59, 22, 59, 23, 59, 24, 59, 25, 59, 26, 59, 27, 59, 28, 59, 29, 59, 30, 59, 31, 59, 32, 59, 33, 59, 34, 59, 35, 59, 36, 59, 37, 59, 38, 59, 39, 59, 40, 59, 41, 59, 42, 59, 43, 59, 44, 59, 45, 59, 46, 59, 47, 59, 48, 59, 49, 59, 50, 59, 51, 59, 52, 59, 53, 59, 54, 59, 55, 59, 56, 59, 57, 59, 58, 59, 59, 59, 60, 59, 61, 59, 62, 59, 63, 59, 64, 59, 65, 59, 66, 59, 67, 59, 68, 59, 69, 59, 70, 59, 71, 59, 72, 59, 73, 59, 74, 59, 75, 59, 76, 59, 77, 59, 78, 59, 79, 59, 80, 59, 81, 59, 82, 59, 83, 59, 84, 59, 85, 59, 86, 59, 87, 59, 88, 59, 89, 59, 90, 59, 91, 59, 92, 59, 93, 59, 94, 59, 95, 59, 96, 59, 97, 59, 98, 59, 99, 59, 100, 59, 101, 59, 102, 59, 103, 59, 104, 59, 105, 59, 106, 59, 107, 59, 108, 59, 109, 59, 110, 59, 111, 59, 112, 59, 165, 59, 166, 59, 167, 59, 168, 59, 169, 59, 170, 59, 171, 59, 172, 59, 173, 59, 174, 59, 175, 59, 176, 59, 177, 59, 178, 59, 179, 59, 180, 59, 181, 59, 182, 59, 183, 59, 184, 59, 185, 59, 186, 59, 187, 59, 188, 60, 3, 60, 4, 60, 5, 60, 6, 60, 7, 60, 8, 60, 9, 60, 10, 60, 11, 60, 12, 60, 13, 60, 14, 60, 15, 60, 16, 60, 17, 60, 18, 60, 19, 60, 20, 60, 21, 60, 22, 60, 23, 60, 24, 60, 25, 60, 26, 60, 27, 60, 28, 60, 29, 60, 30, 60, 31, 60, 32, 60, 33, 60, 34, 60, 35, 60, 36, 60, 37, 60, 38, 60, 39, 60, 40, 60, 41, 60, 42, 60, 43, 60, 44, 60, 45, 60, 46, 60, 47, 60, 48, 60, 49, 60, 50, 60, 51, 60, 52, 60, 53, 60, 54, 60, 55, 60, 56, 60, 57, 60, 58, 60, 59, 60, 60, 60, 61, 60, 62, 60, 63, 60, 64, 60, 65, 60, 66, 60, 67, 60, 68, 60, 69, 60, 70, 60, 71, 60, 72, 60, 73, 60, 74, 60, 75, 60, 76, 60, 77, 60, 78, 60, 79, 60, 80, 60, 81, 60, 82, 60, 83, 60, 84, 60, 85, 60, 86, 60, 87, 60, 88, 60, 89, 60, 90, 60, 91, 60, 92, 60, 93, 60, 94, 60, 95, 60, 96, 60, 97, 60, 98, 60, 99, 60, 100, 60, 101, 60, 102, 60, 103, 60, 104, 60, 105, 60, 106, 60, 107, 60, 108, 60, 109, 60, 110, 60, 111, 60, 165, 60, 166, 60, 167, 60, 168, 60, 169, 60, 170, 60, 171, 60, 172, 60, 173, 60, 174, 60, 175, 60, 176, 60, 177, 60, 178, 60, 179, 60, 180, 60, 181, 60, 182, 60, 183, 60, 184, 60, 185, 60, 186, 60, 187, 60, 188, 61, 3, 61, 4, 61, 5, 61, 6, 61, 7, 61, 8, 61, 9, 61, 10, 61, 11, 61, 12, 61, 13, 61, 14, 61, 15, 61, 16, 61, 17, 61, 18, 61, 19, 61, 20, 61, 21, 61, 22, 61, 23, 61, 24, 61, 25, 61, 26, 61, 27, 61, 28, 61, 29, 61, 30, 61, 31, 61, 32, 61, 33, 61, 34, 61, 35, 61, 36, 61, 37, 61, 38, 61, 39, 61, 40, 61, 41, 61, 42, 61, 43, 61, 44, 61, 45, 61, 46, 61, 47, 61, 48, 61, 49, 61, 50, 61, 51, 61, 52, 61, 53, 61, 54, 61, 55, 61, 56, 61, 57, 61, 58, 61, 59, 61, 60, 61, 61, 61, 69, 61, 70, 61, 71, 61, 72, 61, 73, 61, 74, 61, 75, 61, 76, 61, 77, 61, 78, 61, 79, 61, 80, 61, 81, 61, 82, 61, 83, 61, 84, 61, 85, 61, 86, 61, 87, 61, 88, 61, 89, 61, 90, 61, 91, 61, 92, 61, 93, 61, 94, 61, 95, 61, 96, 61, 97, 61, 98, 61, 99, 61, 100, 61, 101, 61, 102, 61, 103, 61, 104, 61, 105, 61, 106, 61, 107, 61, 108, 61, 109, 61, 110, 61, 111, 61, 165, 61, 166, 61, 167, 61, 168, 61, 169, 61, 170, 61, 171, 61, 172, 61, 173, 61, 174, 61, 175, 61, 176, 61, 177, 61, 178, 61, 179, 61, 180, 61, 181, 61, 182, 61, 183, 61, 184, 61, 185, 61, 186, 61, 187, 61, 188, 62, 3, 62, 4, 62, 5, 62, 6, 62, 7, 62, 8, 62, 9, 62, 10, 62, 11, 62, 12, 62, 13, 62, 14, 62, 15, 62, 16, 62, 17, 62, 18, 62, 19, 62, 20, 62, 21, 62, 22, 62, 23, 62, 24, 62, 25, 62, 26, 62, 27, 62, 28, 62, 29, 62, 30, 62, 31, 62, 32, 62, 33, 62, 34, 62, 35, 62, 36, 62, 37, 62, 38, 62, 39, 62, 40, 62, 41, 62, 42, 62, 43, 62, 44, 62, 45, 62, 46, 62, 47, 62, 48, 62, 49, 62, 50, 62, 51, 62, 52, 62, 53, 62, 54, 62, 55, 62, 56, 62, 57, 62, 58, 62, 59, 62, 71, 62, 72, 62, 73, 62, 74, 62, 75, 62, 76, 62, 77, 62, 78, 62, 79, 62, 80, 62, 81, 62, 82, 62, 83, 62, 84, 62, 85, 62, 86, 62, 87, 62, 88, 62, 89, 62, 90, 62, 91, 62, 92, 62, 93, 62, 94, 62, 95, 62, 96, 62, 97, 62, 98, 62, 99, 62, 100, 62, 101, 62, 102, 62, 103, 62, 104, 62, 105, 62, 106, 62, 107, 62, 108, 62, 109, 62, 110, 62, 111, 62, 166, 62, 167, 62, 168, 62, 169, 62, 170, 62, 171, 62, 172, 62, 173, 62, 174, 62, 175, 62, 176, 62, 177, 62, 178, 62, 179, 62, 180, 62, 181, 62, 182, 62, 183, 62, 184, 62, 185, 62, 186, 62, 187, 62, 188, 63, 3, 63, 4, 63, 5, 63, 6, 63, 7, 63, 8, 63, 9, 63, 10, 63, 11, 63, 12, 63, 13, 63, 14, 63, 15, 63, 16, 63, 17, 63, 18, 63, 19, 63, 20, 63, 21, 63, 22, 63, 23, 63, 24, 63, 25, 63, 26, 63, 27, 63, 28, 63, 29, 63, 30, 63, 31, 63, 32, 63, 33, 63, 34, 63, 35, 63, 36, 63, 37, 63, 38, 63, 39, 63, 40, 63, 41, 63, 42, 63, 43, 63, 44, 63, 45, 63, 46, 63, 47, 63, 48, 63, 49, 63, 50, 63, 51, 63, 52, 63, 53, 63, 54, 63, 55, 63, 56, 63, 57, 63, 72, 63, 73, 63, 74, 63, 75, 63, 76, 63, 77, 63, 78, 63, 79, 63, 80, 63, 81, 63, 82, 63, 83, 63, 84, 63, 85, 63, 86, 63, 87, 63, 88, 63, 89, 63, 90, 63, 91, 63, 92, 63, 93, 63, 94, 63, 95, 63, 96, 63, 97, 63, 98, 63, 99, 63, 100, 63, 101, 63, 102, 63, 103, 63, 104, 63, 105, 63, 106, 63, 107, 63, 108, 63, 109, 63, 110, 63, 166, 63, 167, 63, 168, 63, 169, 63, 170, 63, 171, 63, 172, 63, 173, 63, 174, 63, 175, 63, 176, 63, 177, 63, 178, 63, 179, 63, 180, 63, 181, 63, 182, 63, 183, 63, 184, 63, 185, 63, 186, 63, 187, 63, 188, 64, 3, 64, 4, 64, 5, 64, 6, 64, 7, 64, 8, 64, 9, 64, 10, 64, 11, 64, 12, 64, 13, 64, 14, 64, 15, 64, 16, 64, 17, 64, 18, 64, 19, 64, 20, 64, 21, 64, 22, 64, 23, 64, 24, 64, 25, 64, 26, 64, 27, 64, 28, 64, 29, 64, 30, 64, 31, 64, 32, 64, 33, 64, 34, 64, 35, 64, 36, 64, 37, 64, 38, 64, 39, 64, 40, 64, 41, 64, 42, 64, 43, 64, 44, 64, 45, 64, 46, 64, 47, 64, 48, 64, 49, 64, 50, 64, 51, 64, 52, 64, 53, 64, 54, 64, 55, 64, 56, 64, 72, 64, 73, 64, 74, 64, 75, 64, 76, 64, 77, 64, 78, 64, 79, 64, 80, 64, 81, 64, 82, 64, 83, 64, 84, 64, 85, 64, 86, 64, 87, 64, 88, 64, 89, 64, 90, 64, 91, 64, 92, 64, 93, 64, 94, 64, 95, 64, 96, 64, 97, 64, 98, 64, 99, 64, 100, 64, 101, 64, 102, 64, 103, 64, 104, 64, 105, 64, 106, 64, 107, 64, 108, 64, 109, 64, 110, 64, 111, 64, 166, 64, 167, 64, 168, 64, 169, 64, 170, 64, 171, 64, 172, 64, 173, 64, 174, 64, 175, 64, 176, 64, 177, 64, 178, 64, 179, 64, 180, 64, 181, 64, 182, 64, 183, 64, 184, 64, 185, 64, 186, 64, 187, 64, 188, 65, 3, 65, 4, 65, 5, 65, 6, 65, 7, 65, 8, 65, 9, 65, 10, 65, 11, 65, 12, 65, 13, 65, 14, 65, 15, 65, 16, 65, 17, 65, 18, 65, 19, 65, 20, 65, 21, 65, 22, 65, 23, 65, 24, 65, 25, 65, 26, 65, 27, 65, 28, 65, 29, 65, 30, 65, 31, 65, 32, 65, 33, 65, 34, 65, 35, 65, 36, 65, 37, 65, 38, 65, 39, 65, 40, 65, 41, 65, 42, 65, 43, 65, 44, 65, 45, 65, 46, 65, 47, 65, 48, 65, 49, 65, 50, 65, 51, 65, 52, 65, 53, 65, 54, 65, 55, 65, 73, 65, 74, 65, 75, 65, 76, 65, 77, 65, 78, 65, 79, 65, 80, 65, 81, 65, 82, 65, 83, 65, 84, 65, 85, 65, 86, 65, 87, 65, 88, 65, 89, 65, 90, 65, 91, 65, 92, 65, 93, 65, 94, 65, 95, 65, 96, 65, 97, 65, 98, 65, 99, 65, 100, 65, 101, 65, 102, 65, 103, 65, 104, 65, 105, 65, 106, 65, 107, 65, 108, 65, 109, 65, 110, 65, 111, 65, 166, 65, 167, 65, 168, 65, 169, 65, 170, 65, 171, 65, 172, 65, 173, 65, 174, 65, 175, 65, 176, 65, 177, 65, 178, 65, 179, 65, 180, 65, 181, 65, 182, 65, 183, 65, 184, 65, 185, 65, 186, 65, 187, 65, 188, 66, 3, 66, 4, 66, 5, 66, 6, 66, 7, 66, 8, 66, 9, 66, 10, 66, 11, 66, 12, 66, 13, 66, 14, 66, 15, 66, 16, 66, 17, 66, 18, 66, 19, 66, 20, 66, 21, 66, 22, 66, 23, 66, 24, 66, 25, 66, 26, 66, 27, 66, 28, 66, 29, 66, 30, 66, 31, 66, 32, 66, 33, 66, 34, 66, 35, 66, 36, 66, 37, 66, 38, 66, 39, 66, 40, 66, 41, 66, 42, 66, 43, 66, 44, 66, 45, 66, 46, 66, 47, 66, 48, 66, 49, 66, 50, 66, 51, 66, 52, 66, 53, 66, 54, 66, 74, 66, 75, 66, 76, 66, 77, 66, 78, 66, 79, 66, 80, 66, 81, 66, 82, 66, 83, 66, 84, 66, 85, 66, 86, 66, 87, 66, 88, 66, 89, 66, 90, 66, 91, 66, 92, 66, 93, 66, 94, 66, 95, 66, 96, 66, 97, 66, 98, 66, 99, 66, 100, 66, 101, 66, 102, 66, 103, 66, 104, 66, 105, 66, 106, 66, 107, 66, 108, 66, 109, 66, 110, 66, 111, 66, 166, 66, 167, 66, 168, 66, 169, 66, 170, 66, 171, 66, 172, 66, 173, 66, 174, 66, 175, 66, 176, 66, 177, 66, 178, 66, 179, 66, 180, 66, 181, 66, 182, 66, 183, 66, 184, 66, 185, 66, 186, 66, 187, 66, 188, 67, 3, 67, 4, 67, 5, 67, 6, 67, 7, 67, 8, 67, 9, 67, 10, 67, 11, 67, 12, 67, 13, 67, 14, 67, 15, 67, 16, 67, 17, 67, 18, 67, 19, 67, 20, 67, 21, 67, 22, 67, 23, 67, 24, 67, 25, 67, 26, 67, 27, 67, 28, 67, 29, 67, 30, 67, 31, 67, 32, 67, 33, 67, 34, 67, 35, 67, 36, 67, 37, 67, 38, 67, 39, 67, 40, 67, 41, 67, 42, 67, 43, 67, 44, 67, 45, 67, 46, 67, 47, 67, 48, 67, 49, 67, 50, 67, 51, 67, 52, 67, 53, 67, 75, 67, 76, 67, 77, 67, 78, 67, 79, 67, 80, 67, 81, 67, 82, 67, 83, 67, 84, 67, 85, 67, 86, 67, 87, 67, 88, 67, 89, 67, 90, 67, 91, 67, 92, 67, 93, 67, 94, 67, 95, 67, 96, 67, 97, 67, 98, 67, 99, 67, 100, 67, 101, 67, 102, 67, 103, 67, 104, 67, 105, 67, 106, 67, 107, 67, 108, 67, 109, 67, 110, 67, 111, 67, 166, 67, 167, 67, 168, 67, 169, 67, 170, 67, 171, 67, 172, 67, 173, 67, 174, 67, 175, 67, 176, 67, 177, 67, 178, 67, 179, 67, 180, 67, 181, 67, 182, 67, 183, 67, 184, 67, 185, 67, 186, 67, 187, 67, 188, 68, 3, 68, 4, 68, 5, 68, 6, 68, 7, 68, 8, 68, 9, 68, 10, 68, 11, 68, 12, 68, 13, 68, 14, 68, 15, 68, 16, 68, 17, 68, 18, 68, 19, 68, 20, 68, 21, 68, 22, 68, 23, 68, 24, 68, 25, 68, 26, 68, 27, 68, 28, 68, 29, 68, 30, 68, 31, 68, 32, 68, 33, 68, 34, 68, 35, 68, 36, 68, 37, 68, 38, 68, 39, 68, 40, 68, 41, 68, 42, 68, 43, 68, 44, 68, 45, 68, 46, 68, 47, 68, 48, 68, 49, 68, 50, 68, 51, 68, 52, 68, 53, 68, 75, 68, 76, 68, 77, 68, 78, 68, 79, 68, 80, 68, 81, 68, 82, 68, 83, 68, 84, 68, 85, 68, 86, 68, 87, 68, 88, 68, 89, 68, 90, 68, 91, 68, 92, 68, 93, 68, 94, 68, 95, 68, 96, 68, 97, 68, 98, 68, 99, 68, 100, 68, 101, 68, 102, 68, 103, 68, 104, 68, 105, 68, 106, 68, 107, 68, 108, 68, 109, 68, 110, 68, 111, 68, 166, 68, 167, 68, 168, 68, 169, 68, 170, 68, 171, 68, 172, 68, 173, 68, 174, 68, 175, 68, 176, 68, 177, 68, 178, 68, 179, 68, 180, 68, 181, 68, 182, 68, 183, 68, 184, 68, 185, 68, 186, 68, 187, 68, 188, 69, 3, 69, 4, 69, 5, 69, 6, 69, 7, 69, 8, 69, 9, 69, 10, 69, 11, 69, 12, 69, 13, 69, 14, 69, 15, 69, 16, 69, 17, 69, 18, 69, 19, 69, 20, 69, 21, 69, 22, 69, 23, 69, 24, 69, 25, 69, 26, 69, 27, 69, 28, 69, 29, 69, 30, 69, 31, 69, 32, 69, 33, 69, 34, 69, 35, 69, 36, 69, 37, 69, 38, 69, 39, 69, 40, 69, 41, 69, 42, 69, 43, 69, 44, 69, 45, 69, 46, 69, 47, 69, 48, 69, 49, 69, 50, 69, 51, 69, 52, 69, 76, 69, 77, 69, 78, 69, 79, 69, 80, 69, 81, 69, 82, 69, 83, 69, 84, 69, 85, 69, 86, 69, 87, 69, 88, 69, 89, 69, 90, 69, 91, 69, 92, 69, 93, 69, 94, 69, 95, 69, 96, 69, 97, 69, 98, 69, 99, 69, 100, 69, 101, 69, 102, 69, 103, 69, 104, 69, 105, 69, 106, 69, 107, 69, 108, 69, 109, 69, 110, 69, 111, 69, 112, 69, 166, 69, 167, 69, 168, 69, 169, 69, 170, 69, 171, 69, 172, 69, 173, 69, 174, 69, 175, 69, 176, 69, 177, 69, 178, 69, 179, 69, 180, 69, 181, 69, 182, 69, 183, 69, 184, 69, 185, 69, 186, 69, 187, 69, 188, 70, 3, 70, 4, 70, 5, 70, 6, 70, 7, 70, 8, 70, 9, 70, 10, 70, 11, 70, 12, 70, 13, 70, 14, 70, 15, 70, 16, 70, 17, 70, 18, 70, 19, 70, 20, 70, 21, 70, 22, 70, 23, 70, 24, 70, 25, 70, 26, 70, 27, 70, 28, 70, 29, 70, 30, 70, 31, 70, 32, 70, 33, 70, 34, 70, 35, 70, 36, 70, 37, 70, 38, 70, 39, 70, 40, 70, 41, 70, 42, 70, 43, 70, 44, 70, 45, 70, 46, 70, 47, 70, 48, 70, 49, 70, 50, 70, 51, 70, 52, 70, 76, 70, 77, 70, 78, 70, 79, 70, 80, 70, 81, 70, 82, 70, 83, 70, 84, 70, 85, 70, 86, 70, 87, 70, 88, 70, 89, 70, 90, 70, 91, 70, 92, 70, 93, 70, 94, 70, 95, 70, 96, 70, 97, 70, 98, 70, 99, 70, 100, 70, 101, 70, 102, 70, 103, 70, 104, 70, 105, 70, 106, 70, 107, 70, 108, 70, 109, 70, 110, 70, 111, 70, 112, 70, 166, 70, 167, 70, 168, 70, 169, 70, 170, 70, 171, 70, 172, 70, 173, 70, 174, 70, 175, 70, 176, 70, 177, 70, 178, 70, 179, 70, 180, 70, 181, 70, 182, 70, 183, 70, 184, 70, 185, 70, 186, 70, 187, 70, 188, 71, 3, 71, 4, 71, 5, 71, 6, 71, 7, 71, 8, 71, 9, 71, 10, 71, 11, 71, 12, 71, 13, 71, 14, 71, 15, 71, 16, 71, 17, 71, 18, 71, 19, 71, 20, 71, 21, 71, 22, 71, 23, 71, 24, 71, 25, 71, 26, 71, 27, 71, 28, 71, 29, 71, 30, 71, 31, 71, 32, 71, 33, 71, 34, 71, 35, 71, 36, 71, 37, 71, 38, 71, 39, 71, 40, 71, 41, 71, 42, 71, 43, 71, 44, 71, 45, 71, 46, 71, 47, 71, 48, 71, 49, 71, 50, 71, 51, 71, 52, 71, 76, 71, 77, 71, 78, 71, 79, 71, 80, 71, 81, 71, 82, 71, 83, 71, 84, 71, 85, 71, 86, 71, 87, 71, 88, 71, 89, 71, 90, 71, 91, 71, 92, 71, 93, 71, 94, 71, 95, 71, 96, 71, 97, 71, 98, 71, 99, 71, 100, 71, 101, 71, 102, 71, 103, 71, 104, 71, 105, 71, 106, 71, 107, 71, 108, 71, 109, 71, 110, 71, 111, 71, 112, 71, 113, 71, 114, 71, 115, 71, 166, 71, 167, 71, 168, 71, 169, 71, 170, 71, 171, 71, 172, 71, 173, 71, 174, 71, 175, 71, 176, 71, 177, 71, 178, 71, 179, 71, 180, 71, 181, 71, 182, 71, 183, 71, 184, 71, 185, 71, 186, 71, 187, 71, 188, 72, 3, 72, 4, 72, 5, 72, 6, 72, 7, 72, 8, 72, 9, 72, 10, 72, 11, 72, 12, 72, 13, 72, 14, 72, 15, 72, 16, 72, 17, 72, 18, 72, 19, 72, 20, 72, 21, 72, 22, 72, 23, 72, 24, 72, 25, 72, 26, 72, 27, 72, 28, 72, 29, 72, 30, 72, 31, 72, 32, 72, 33, 72, 34, 72, 35, 72, 36, 72, 37, 72, 38, 72, 39, 72, 40, 72, 41, 72, 42, 72, 43, 72, 44, 72, 45, 72, 46, 72, 47, 72, 48, 72, 49, 72, 50, 72, 51, 72, 76, 72, 77, 72, 78, 72, 79, 72, 80, 72, 81, 72, 82, 72, 83, 72, 84, 72, 85, 72, 86, 72, 87, 72, 88, 72, 89, 72, 90, 72, 91, 72, 92, 72, 93, 72, 94, 72, 95, 72, 96, 72, 97, 72, 98, 72, 99, 72, 100, 72, 101, 72, 102, 72, 103, 72, 104, 72, 105, 72, 106, 72, 107, 72, 108, 72, 109, 72, 110, 72, 111, 72, 112, 72, 113, 72, 114, 72, 115, 72, 116, 72, 117, 72, 167, 72, 168, 72, 169, 72, 170, 72, 171, 72, 172, 72, 173, 72, 174, 72, 175, 72, 176, 72, 177, 72, 178, 72, 179, 72, 180, 72, 181, 72, 182, 72, 183, 72, 184, 72, 185, 72, 186, 72, 187, 72, 188, 73, 3, 73, 4, 73, 5, 73, 6, 73, 7, 73, 8, 73, 9, 73, 10, 73, 11, 73, 12, 73, 13, 73, 14, 73, 15, 73, 16, 73, 17, 73, 18, 73, 19, 73, 20, 73, 21, 73, 22, 73, 23, 73, 24, 73, 25, 73, 26, 73, 27, 73, 28, 73, 29, 73, 30, 73, 31, 73, 32, 73, 33, 73, 34, 73, 35, 73, 36, 73, 37, 73, 38, 73, 39, 73, 40, 73, 41, 73, 42, 73, 43, 73, 44, 73, 45, 73, 46, 73, 47, 73, 48, 73, 49, 73, 50, 73, 51, 73, 77, 73, 78, 73, 79, 73, 80, 73, 81, 73, 82, 73, 83, 73, 84, 73, 85, 73, 86, 73, 87, 73, 88, 73, 89, 73, 90, 73, 91, 73, 92, 73, 93, 73, 94, 73, 95, 73, 96, 73, 97, 73, 98, 73, 99, 73, 100, 73, 101, 73, 102, 73, 103, 73, 104, 73, 105, 73, 106, 73, 107, 73, 108, 73, 109, 73, 110, 73, 111, 73, 112, 73, 113, 73, 114, 73, 115, 73, 116, 73, 117, 73, 118, 73, 119, 73, 167, 73, 168, 73, 169, 73, 170, 73, 171, 73, 172, 73, 173, 73, 174, 73, 175, 73, 176, 73, 177, 73, 178, 73, 179, 73, 180, 73, 181, 73, 182, 73, 183, 73, 184, 73, 185, 73, 186, 73, 187, 73, 188, 74, 3, 74, 4, 74, 5, 74, 6, 74, 7, 74, 8, 74, 9, 74, 10, 74, 11, 74, 12, 74, 13, 74, 14, 74, 15, 74, 16, 74, 17, 74, 18, 74, 19, 74, 20, 74, 21, 74, 22, 74, 23, 74, 24, 74, 25, 74, 26, 74, 27, 74, 28, 74, 29, 74, 30, 74, 31, 74, 32, 74, 33, 74, 34, 74, 35, 74, 36, 74, 37, 74, 38, 74, 39, 74, 40, 74, 41, 74, 42, 74, 43, 74, 44, 74, 45, 74, 46, 74, 47, 74, 48, 74, 49, 74, 50, 74, 51, 74, 77, 74, 78, 74, 79, 74, 80, 74, 81, 74, 82, 74, 83, 74, 84, 74, 85, 74, 86, 74, 87, 74, 88, 74, 89, 74, 90, 74, 91, 74, 92, 74, 93, 74, 94, 74, 95, 74, 96, 74, 97, 74, 98, 74, 99, 74, 100, 74, 101, 74, 102, 74, 103, 74, 104, 74, 105, 74, 106, 74, 107, 74, 108, 74, 109, 74, 110, 74, 111, 74, 112, 74, 113, 74, 114, 74, 115, 74, 116, 74, 117, 74, 118, 74, 119, 74, 120, 74, 121, 74, 167, 74, 168, 74, 169, 74, 170, 74, 171, 74, 172, 74, 173, 74, 174, 74, 175, 74, 176, 74, 177, 74, 178, 74, 179, 74, 180, 74, 181, 74, 182, 74, 183, 74, 184, 74, 185, 74, 186, 74, 187, 74, 188, 75, 3, 75, 4, 75, 5, 75, 6, 75, 7, 75, 8, 75, 9, 75, 10, 75, 11, 75, 12, 75, 13, 75, 14, 75, 15, 75, 16, 75, 17, 75, 18, 75, 19, 75, 20, 75, 21, 75, 22, 75, 23, 75, 24, 75, 25, 75, 26, 75, 27, 75, 28, 75, 29, 75, 30, 75, 31, 75, 32, 75, 33, 75, 34, 75, 35, 75, 36, 75, 37, 75, 38, 75, 39, 75, 40, 75, 41, 75, 42, 75, 43, 75, 44, 75, 45, 75, 46, 75, 47, 75, 48, 75, 49, 75, 50, 75, 51, 75, 77, 75, 78, 75, 79, 75, 80, 75, 81, 75, 82, 75, 83, 75, 84, 75, 85, 75, 86, 75, 87, 75, 88, 75, 89, 75, 90, 75, 91, 75, 92, 75, 93, 75, 94, 75, 95, 75, 96, 75, 97, 75, 98, 75, 99, 75, 100, 75, 101, 75, 102, 75, 103, 75, 104, 75, 105, 75, 106, 75, 107, 75, 108, 75, 109, 75, 110, 75, 111, 75, 112, 75, 113, 75, 114, 75, 115, 75, 116, 75, 117, 75, 118, 75, 119, 75, 120, 75, 121, 75, 167, 75, 168, 75, 169, 75, 170, 75, 171, 75, 172, 75, 173, 75, 174, 75, 175, 75, 176, 75, 177, 75, 178, 75, 179, 75, 180, 75, 181, 75, 182, 75, 183, 75, 184, 75, 185, 75, 186, 75, 187, 75, 188, 76, 3, 76, 4, 76, 5, 76, 6, 76, 7, 76, 8, 76, 9, 76, 10, 76, 11, 76, 12, 76, 13, 76, 14, 76, 15, 76, 16, 76, 17, 76, 18, 76, 19, 76, 20, 76, 21, 76, 22, 76, 23, 76, 24, 76, 25, 76, 26, 76, 27, 76, 28, 76, 29, 76, 30, 76, 31, 76, 32, 76, 33, 76, 34, 76, 35, 76, 36, 76, 37, 76, 38, 76, 39, 76, 40, 76, 41, 76, 42, 76, 43, 76, 44, 76, 45, 76, 46, 76, 47, 76, 48, 76, 49, 76, 50, 76, 51, 76, 77, 76, 78, 76, 79, 76, 80, 76, 81, 76, 82, 76, 83, 76, 84, 76, 85, 76, 86, 76, 87, 76, 88, 76, 89, 76, 90, 76, 91, 76, 92, 76, 93, 76, 94, 76, 95, 76, 96, 76, 97, 76, 98, 76, 99, 76, 100, 76, 101, 76, 102, 76, 103, 76, 104, 76, 105, 76, 106, 76, 107, 76, 108, 76, 109, 76, 110, 76, 111, 76, 112, 76, 113, 76, 114, 76, 115, 76, 116, 76, 117, 76, 118, 76, 119, 76, 120, 76, 121, 76, 167, 76, 168, 76, 169, 76, 170, 76, 171, 76, 172, 76, 173, 76, 174, 76, 175, 76, 176, 76, 177, 76, 178, 76, 179, 76, 180, 76, 181, 76, 182, 76, 183, 76, 184, 76, 185, 76, 186, 76, 187, 76, 188, 77, 3, 77, 4, 77, 5, 77, 6, 77, 7, 77, 8, 77, 9, 77, 10, 77, 11, 77, 12, 77, 13, 77, 14, 77, 15, 77, 16, 77, 17, 77, 18, 77, 19, 77, 20, 77, 21, 77, 22, 77, 23, 77, 24, 77, 25, 77, 26, 77, 27, 77, 28, 77, 29, 77, 30, 77, 31, 77, 32, 77, 33, 77, 34, 77, 35, 77, 36, 77, 37, 77, 38, 77, 39, 77, 40, 77, 41, 77, 42, 77, 43, 77, 44, 77, 45, 77, 46, 77, 47, 77, 48, 77, 49, 77, 50, 77, 51, 77, 77, 77, 78, 77, 79, 77, 80, 77, 81, 77, 82, 77, 83, 77, 84, 77, 85, 77, 86, 77, 87, 77, 88, 77, 89, 77, 90, 77, 91, 77, 92, 77, 93, 77, 94, 77, 95, 77, 96, 77, 97, 77, 98, 77, 99, 77, 100, 77, 101, 77, 102, 77, 103, 77, 104, 77, 105, 77, 106, 77, 107, 77, 108, 77, 109, 77, 110, 77, 111, 77, 112, 77, 113, 77, 114, 77, 115, 77, 116, 77, 117, 77, 118, 77, 119, 77, 120, 77, 121, 77, 167, 77, 168, 77, 169, 77, 170, 77, 171, 77, 172, 77, 173, 77, 174, 77, 175, 77, 176, 77, 177, 77, 178, 77, 179, 77, 180, 77, 181, 77, 182, 77, 183, 77, 184, 77, 185, 77, 186, 77, 187, 77, 188, 78, 3, 78, 4, 78, 5, 78, 6, 78, 7, 78, 8, 78, 9, 78, 10, 78, 11, 78, 12, 78, 13, 78, 14, 78, 15, 78, 16, 78, 17, 78, 18, 78, 19, 78, 20, 78, 21, 78, 22, 78, 23, 78, 24, 78, 25, 78, 26, 78, 27, 78, 28, 78, 29, 78, 30, 78, 31, 78, 32, 78, 33, 78, 34, 78, 35, 78, 36, 78, 37, 78, 38, 78, 39, 78, 40, 78, 41, 78, 42, 78, 43, 78, 44, 78, 45, 78, 46, 78, 47, 78, 48, 78, 49, 78, 50, 78, 51, 78, 77, 78, 78, 78, 79, 78, 80, 78, 81, 78, 82, 78, 83, 78, 84, 78, 85, 78, 86, 78, 87, 78, 88, 78, 89, 78, 90, 78, 91, 78, 92, 78, 93, 78, 94, 78, 95, 78, 96, 78, 97, 78, 98, 78, 99, 78, 100, 78, 101, 78, 102, 78, 103, 78, 104, 78, 105, 78, 106, 78, 107, 78, 108, 78, 109, 78, 110, 78, 111, 78, 112, 78, 113, 78, 114, 78, 115, 78, 116, 78, 117, 78, 118, 78, 119, 78, 120, 78, 121, 78, 167, 78, 168, 78, 169, 78, 170, 78, 171, 78, 172, 78, 173, 78, 174, 78, 175, 78, 176, 78, 177, 78, 178, 78, 179, 78, 180, 78, 181, 78, 182, 78, 183, 78, 184, 78, 185, 78, 186, 78, 187, 78, 188, 79, 3, 79, 4, 79, 5, 79, 6, 79, 7, 79, 8, 79, 9, 79, 10, 79, 11, 79, 12, 79, 13, 79, 14, 79, 15, 79, 16, 79, 17, 79, 18, 79, 19, 79, 20, 79, 21, 79, 22, 79, 23, 79, 24, 79, 25, 79, 26, 79, 27, 79, 28, 79, 29, 79, 30, 79, 31, 79, 32, 79, 33, 79, 34, 79, 35, 79, 36, 79, 37, 79, 38, 79, 39, 79, 40, 79, 41, 79, 42, 79, 43, 79, 44, 79, 45, 79, 46, 79, 47, 79, 48, 79, 49, 79, 50, 79, 78, 79, 79, 79, 80, 79, 81, 79, 82, 79, 83, 79, 84, 79, 85, 79, 86, 79, 87, 79, 88, 79, 89, 79, 90, 79, 91, 79, 92, 79, 93, 79, 94, 79, 95, 79, 96, 79, 97, 79, 98, 79, 99, 79, 100, 79, 101, 79, 102, 79, 103, 79, 104, 79, 105, 79, 106, 79, 107, 79, 108, 79, 109, 79, 110, 79, 111, 79, 112, 79, 113, 79, 114, 79, 115, 79, 116, 79, 117, 79, 118, 79, 119, 79, 120, 79, 121, 79, 167, 79, 168, 79, 169, 79, 170, 79, 171, 79, 172, 79, 173, 79, 174, 79, 175, 79, 176, 79, 177, 79, 178, 79, 179, 79, 180, 79, 181, 79, 182, 79, 183, 79, 184, 79, 185, 79, 186, 79, 187, 79, 188, 80, 3, 80, 4, 80, 5, 80, 6, 80, 7, 80, 8, 80, 9, 80, 10, 80, 11, 80, 12, 80, 13, 80, 14, 80, 15, 80, 16, 80, 17, 80, 18, 80, 19, 80, 20, 80, 21, 80, 22, 80, 23, 80, 24, 80, 25, 80, 26, 80, 27, 80, 28, 80, 29, 80, 30, 80, 31, 80, 32, 80, 33, 80, 34, 80, 35, 80, 36, 80, 37, 80, 38, 80, 39, 80, 40, 80, 41, 80, 42, 80, 43, 80, 44, 80, 45, 80, 46, 80, 47, 80, 48, 80, 49, 80, 50, 80, 78, 80, 79, 80, 80, 80, 81, 80, 82, 80, 83, 80, 84, 80, 85, 80, 86, 80, 87, 80, 88, 80, 89, 80, 90, 80, 91, 80, 92, 80, 93, 80, 94, 80, 95, 80, 96, 80, 97, 80, 98, 80, 99, 80, 100, 80, 101, 80, 102, 80, 103, 80, 104, 80, 105, 80, 106, 80, 107, 80, 108, 80, 109, 80, 110, 80, 111, 80, 112, 80, 113, 80, 114, 80, 115, 80, 116, 80, 117, 80, 118, 80, 119, 80, 120, 80, 121, 80, 168, 80, 169, 80, 170, 80, 171, 80, 172, 80, 173, 80, 174, 80, 175, 80, 176, 80, 177, 80, 178, 80, 179, 80, 180, 80, 181, 80, 182, 80, 183, 80, 184, 80, 185, 80, 186, 80, 187, 80, 188, 81, 3, 81, 4, 81, 5, 81, 6, 81, 7, 81, 8, 81, 9, 81, 10, 81, 11, 81, 12, 81, 13, 81, 14, 81, 15, 81, 16, 81, 17, 81, 18, 81, 19, 81, 20, 81, 21, 81, 22, 81, 23, 81, 24, 81, 25, 81, 26, 81, 27, 81, 28, 81, 29, 81, 30, 81, 31, 81, 32, 81, 33, 81, 34, 81, 35, 81, 36, 81, 37, 81, 38, 81, 39, 81, 40, 81, 41, 81, 42, 81, 43, 81, 44, 81, 45, 81, 46, 81, 47, 81, 48, 81, 49, 81, 50, 81, 78, 81, 79, 81, 80, 81, 81, 81, 82, 81, 83, 81, 84, 81, 85, 81, 86, 81, 87, 81, 88, 81, 89, 81, 90, 81, 91, 81, 92, 81, 93, 81, 94, 81, 95, 81, 96, 81, 97, 81, 98, 81, 99, 81, 100, 81, 101, 81, 102, 81, 103, 81, 104, 81, 105, 81, 106, 81, 107, 81, 108, 81, 109, 81, 110, 81, 111, 81, 112, 81, 113, 81, 114, 81, 115, 81, 116, 81, 117, 81, 118, 81, 119, 81, 120, 81, 121, 81, 168, 81, 169, 81, 170, 81, 171, 81, 172, 81, 173, 81, 174, 81, 175, 81, 176, 81, 177, 81, 178, 81, 179, 81, 180, 81, 181, 81, 182, 81, 183, 81, 184, 81, 185, 81, 186, 81, 187, 81, 188, 82, 3, 82, 4, 82, 5, 82, 6, 82, 7, 82, 8, 82, 9, 82, 10, 82, 11, 82, 12, 82, 13, 82, 14, 82, 15, 82, 16, 82, 17, 82, 18, 82, 19, 82, 20, 82, 21, 82, 22, 82, 23, 82, 24, 82, 25, 82, 26, 82, 27, 82, 28, 82, 29, 82, 30, 82, 31, 82, 32, 82, 33, 82, 34, 82, 35, 82, 36, 82, 37, 82, 38, 82, 39, 82, 40, 82, 41, 82, 42, 82, 43, 82, 44, 82, 45, 82, 46, 82, 47, 82, 48, 82, 49, 82, 50, 82, 78, 82, 79, 82, 80, 82, 81, 82, 82, 82, 83, 82, 84, 82, 85, 82, 86, 82, 87, 82, 88, 82, 89, 82, 90, 82, 91, 82, 92, 82, 93, 82, 94, 82, 95, 82, 96, 82, 97, 82, 98, 82, 99, 82, 100, 82, 101, 82, 102, 82, 103, 82, 104, 82, 105, 82, 106, 82, 107, 82, 108, 82, 109, 82, 110, 82, 111, 82, 112, 82, 113, 82, 114, 82, 115, 82, 116, 82, 117, 82, 118, 82, 119, 82, 120, 82, 121, 82, 168, 82, 169, 82, 170, 82, 171, 82, 172, 82, 173, 82, 174, 82, 175, 82, 176, 82, 177, 82, 178, 82, 179, 82, 180, 82, 181, 82, 182, 82, 183, 82, 184, 82, 185, 82, 186, 82, 187, 82, 188, 83, 3, 83, 4, 83, 5, 83, 6, 83, 7, 83, 8, 83, 9, 83, 10, 83, 11, 83, 12, 83, 13, 83, 14, 83, 15, 83, 16, 83, 17, 83, 18, 83, 19, 83, 20, 83, 21, 83, 22, 83, 23, 83, 24, 83, 25, 83, 26, 83, 27, 83, 28, 83, 29, 83, 30, 83, 31, 83, 32, 83, 33, 83, 34, 83, 35, 83, 36, 83, 37, 83, 38, 83, 39, 83, 40, 83, 41, 83, 42, 83, 43, 83, 44, 83, 45, 83, 46, 83, 47, 83, 48, 83, 49, 83, 50, 83, 78, 83, 79, 83, 80, 83, 81, 83, 82, 83, 83, 83, 84, 83, 85, 83, 86, 83, 87, 83, 88, 83, 89, 83, 90, 83, 91, 83, 92, 83, 93, 83, 94, 83, 95, 83, 96, 83, 97, 83, 98, 83, 99, 83, 100, 83, 101, 83, 102, 83, 103, 83, 104, 83, 105, 83, 106, 83, 107, 83, 108, 83, 109, 83, 110, 83, 111, 83, 112, 83, 113, 83, 114, 83, 115, 83, 116, 83, 117, 83, 118, 83, 119, 83, 120, 83, 121, 83, 168, 83, 169, 83, 170, 83, 171, 83, 172, 83, 173, 83, 174, 83, 175, 83, 176, 83, 177, 83, 178, 83, 179, 83, 180, 83, 181, 83, 182, 83, 183, 83, 184, 83, 185, 83, 186, 83, 187, 83, 188, 84, 3, 84, 4, 84, 5, 84, 6, 84, 7, 84, 8, 84, 9, 84, 10, 84, 11, 84, 12, 84, 13, 84, 14, 84, 15, 84, 16, 84, 17, 84, 18, 84, 19, 84, 20, 84, 21, 84, 22, 84, 23, 84, 24, 84, 25, 84, 26, 84, 27, 84, 28, 84, 29, 84, 30, 84, 31, 84, 32, 84, 33, 84, 34, 84, 35, 84, 36, 84, 37, 84, 38, 84, 39, 84, 40, 84, 41, 84, 42, 84, 43, 84, 44, 84, 45, 84, 46, 84, 47, 84, 48, 84, 49, 84, 50, 84, 78, 84, 79, 84, 80, 84, 81, 84, 82, 84, 83, 84, 84, 84, 85, 84, 86, 84, 87, 84, 88, 84, 89, 84, 90, 84, 91, 84, 92, 84, 93, 84, 94, 84, 95, 84, 96, 84, 97, 84, 98, 84, 99, 84, 100, 84, 101, 84, 102, 84, 103, 84, 104, 84, 105, 84, 106, 84, 107, 84, 108, 84, 109, 84, 110, 84, 111, 84, 112, 84, 113, 84, 114, 84, 115, 84, 116, 84, 117, 84, 118, 84, 119, 84, 120, 84, 121, 84, 168, 84, 169, 84, 170, 84, 171, 84, 172, 84, 173, 84, 174, 84, 175, 84, 176, 84, 177, 84, 178, 84, 179, 84, 180, 84, 181, 84, 182, 84, 183, 84, 184, 84, 185, 84, 186, 84, 187, 84, 188, 85, 3, 85, 4, 85, 5, 85, 6, 85, 7, 85, 8, 85, 9, 85, 10, 85, 11, 85, 12, 85, 13, 85, 14, 85, 15, 85, 16, 85, 17, 85, 18, 85, 19, 85, 20, 85, 21, 85, 22, 85, 23, 85, 24, 85, 25, 85, 26, 85, 27, 85, 28, 85, 29, 85, 30, 85, 31, 85, 32, 85, 33, 85, 34, 85, 35, 85, 36, 85, 37, 85, 38, 85, 39, 85, 40, 85, 41, 85, 42, 85, 43, 85, 44, 85, 45, 85, 46, 85, 47, 85, 48, 85, 49, 85, 50, 85, 78, 85, 79, 85, 80, 85, 81, 85, 82, 85, 83, 85, 84, 85, 85, 85, 86, 85, 87, 85, 88, 85, 89, 85, 90, 85, 91, 85, 92, 85, 93, 85, 94, 85, 95, 85, 96, 85, 97, 85, 98, 85, 99, 85, 100, 85, 101, 85, 102, 85, 103, 85, 104, 85, 105, 85, 106, 85, 107, 85, 108, 85, 109, 85, 110, 85, 111, 85, 112, 85, 113, 85, 114, 85, 115, 85, 116, 85, 117, 85, 118, 85, 119, 85, 120, 85, 121, 85, 168, 85, 169, 85, 170, 85, 171, 85, 172, 85, 173, 85, 174, 85, 175, 85, 176, 85, 177, 85, 178, 85, 179, 85, 180, 85, 181, 85, 182, 85, 183, 85, 184, 85, 185, 85, 186, 85, 187, 85, 188, 86, 3, 86, 4, 86, 5, 86, 6, 86, 7, 86, 8, 86, 9, 86, 10, 86, 11, 86, 12, 86, 13, 86, 14, 86, 15, 86, 16, 86, 17, 86, 18, 86, 19, 86, 20, 86, 21, 86, 22, 86, 23, 86, 24, 86, 25, 86, 26, 86, 27, 86, 28, 86, 29, 86, 30, 86, 31, 86, 32, 86, 33, 86, 34, 86, 35, 86, 36, 86, 37, 86, 38, 86, 39, 86, 40, 86, 41, 86, 42, 86, 43, 86, 44, 86, 45, 86, 46, 86, 47, 86, 48, 86, 49, 86, 50, 86, 78, 86, 79, 86, 80, 86, 81, 86, 82, 86, 83, 86, 84, 86, 85, 86, 86, 86, 87, 86, 88, 86, 89, 86, 90, 86, 91, 86, 92, 86, 93, 86, 94, 86, 95, 86, 96, 86, 97, 86, 98, 86, 99, 86, 100, 86, 101, 86, 102, 86, 103, 86, 104, 86, 105, 86, 106, 86, 107, 86, 108, 86, 109, 86, 110, 86, 111, 86, 112, 86, 113, 86, 114, 86, 115, 86, 116, 86, 117, 86, 118, 86, 119, 86, 120, 86, 121, 86, 168, 86, 169, 86, 170, 86, 171, 86, 172, 86, 173, 86, 174, 86, 175, 86, 176, 86, 177, 86, 178, 86, 179, 86, 180, 86, 181, 86, 182, 86, 183, 86, 184, 86, 185, 86, 186, 86, 187, 86, 188, 87, 3, 87, 4, 87, 5, 87, 6, 87, 7, 87, 8, 87, 9, 87, 10, 87, 11, 87, 12, 87, 13, 87, 14, 87, 15, 87, 16, 87, 17, 87, 18, 87, 19, 87, 20, 87, 21, 87, 22, 87, 23, 87, 24, 87, 25, 87, 26, 87, 27, 87, 28, 87, 29, 87, 30, 87, 31, 87, 32, 87, 33, 87, 34, 87, 35, 87, 36, 87, 37, 87, 38, 87, 39, 87, 40, 87, 41, 87, 42, 87, 43, 87, 44, 87, 45, 87, 46, 87, 47, 87, 48, 87, 49, 87, 50, 87, 78, 87, 79, 87, 80, 87, 81, 87, 82, 87, 83, 87, 84, 87, 85, 87, 86, 87, 87, 87, 88, 87, 89, 87, 90, 87, 91, 87, 92, 87, 93, 87, 94, 87, 95, 87, 96, 87, 97, 87, 98, 87, 99, 87, 100, 87, 101, 87, 102, 87, 103, 87, 104, 87, 105, 87, 106, 87, 107, 87, 108, 87, 109, 87, 110, 87, 111, 87, 112, 87, 113, 87, 114, 87, 115, 87, 116, 87, 117, 87, 118, 87, 119, 87, 120, 87, 121, 87, 169, 87, 170, 87, 171, 87, 172, 87, 173, 87, 174, 87, 175, 87, 176, 87, 177, 87, 178, 87, 179, 87, 180, 87, 181, 87, 182, 87, 183, 87, 184, 87, 185, 87, 186, 87, 187, 87, 188, 88, 3, 88, 4, 88, 5, 88, 6, 88, 7, 88, 8, 88, 9, 88, 10, 88, 11, 88, 12, 88, 13, 88, 14, 88, 15, 88, 16, 88, 17, 88, 18, 88, 19, 88, 20, 88, 21, 88, 22, 88, 23, 88, 24, 88, 25, 88, 26, 88, 27, 88, 28, 88, 29, 88, 30, 88, 31, 88, 32, 88, 33, 88, 34, 88, 35, 88, 36, 88, 37, 88, 38, 88, 39, 88, 40, 88, 41, 88, 42, 88, 43, 88, 44, 88, 45, 88, 46, 88, 47, 88, 48, 88, 49, 88, 50, 88, 77, 88, 78, 88, 79, 88, 80, 88, 81, 88, 82, 88, 83, 88, 84, 88, 85, 88, 86, 88, 87, 88, 88, 88, 89, 88, 90, 88, 91, 88, 92, 88, 93, 88, 94, 88, 95, 88, 96, 88, 97, 88, 98, 88, 99, 88, 100, 88, 101, 88, 102, 88, 103, 88, 104, 88, 105, 88, 106, 88, 107, 88, 108, 88, 109, 88, 110, 88, 111, 88, 112, 88, 113, 88, 114, 88, 115, 88, 116, 88, 117, 88, 118, 88, 119, 88, 120, 88, 121, 88, 169, 88, 170, 88, 171, 88, 172, 88, 173, 88, 174, 88, 175, 88, 176, 88, 177, 88, 178, 88, 179, 88, 180, 88, 181, 88, 182, 88, 183, 88, 184, 88, 185, 88, 186, 88, 187, 88, 188, 89, 3, 89, 4, 89, 5, 89, 6, 89, 7, 89, 8, 89, 9, 89, 10, 89, 11, 89, 12, 89, 13, 89, 14, 89, 15, 89, 16, 89, 17, 89, 18, 89, 19, 89, 20, 89, 21, 89, 22, 89, 23, 89, 24, 89, 25, 89, 26, 89, 27, 89, 28, 89, 29, 89, 30, 89, 31, 89, 32, 89, 33, 89, 34, 89, 35, 89, 36, 89, 37, 89, 38, 89, 39, 89, 40, 89, 41, 89, 42, 89, 43, 89, 44, 89, 45, 89, 46, 89, 47, 89, 48, 89, 49, 89, 50, 89, 77, 89, 78, 89, 79, 89, 80, 89, 81, 89, 82, 89, 83, 89, 84, 89, 85, 89, 86, 89, 87, 89, 88, 89, 89, 89, 90, 89, 91, 89, 92, 89, 93, 89, 94, 89, 95, 89, 96, 89, 97, 89, 98, 89, 99, 89, 100, 89, 101, 89, 102, 89, 103, 89, 104, 89, 105, 89, 106, 89, 107, 89, 108, 89, 109, 89, 110, 89, 111, 89, 112, 89, 113, 89, 114, 89, 115, 89, 116, 89, 117, 89, 118, 89, 119, 89, 120, 89, 121, 89, 169, 89, 170, 89, 171, 89, 172, 89, 173, 89, 174, 89, 175, 89, 176, 89, 177, 89, 178, 89, 179, 89, 180, 89, 181, 89, 182, 89, 183, 89, 184, 89, 185, 89, 186, 89, 187, 89, 188, 90, 3, 90, 4, 90, 5, 90, 6, 90, 7, 90, 8, 90, 9, 90, 10, 90, 11, 90, 12, 90, 13, 90, 14, 90, 15, 90, 16, 90, 17, 90, 18, 90, 19, 90, 20, 90, 21, 90, 22, 90, 23, 90, 24, 90, 25, 90, 26, 90, 27, 90, 28, 90, 29, 90, 30, 90, 31, 90, 32, 90, 33, 90, 34, 90, 35, 90, 36, 90, 37, 90, 38, 90, 39, 90, 40, 90, 41, 90, 42, 90, 43, 90, 44, 90, 45, 90, 46, 90, 47, 90, 48, 90, 49, 90, 50, 90, 51, 90, 77, 90, 78, 90, 79, 90, 80, 90, 81, 90, 82, 90, 83, 90, 84, 90, 85, 90, 86, 90, 87, 90, 88, 90, 89, 90, 90, 90, 91, 90, 92, 90, 93, 90, 94, 90, 95, 90, 96, 90, 97, 90, 98, 90, 99, 90, 100, 90, 101, 90, 102, 90, 103, 90, 104, 90, 105, 90, 106, 90, 107, 90, 108, 90, 109, 90, 110, 90, 111, 90, 112, 90, 113, 90, 114, 90, 115, 90, 116, 90, 117, 90, 118, 90, 119, 90, 120, 90, 121, 90, 169, 90, 170, 90, 171, 90, 172, 90, 173, 90, 174, 90, 175, 90, 176, 90, 177, 90, 178, 90, 179, 90, 180, 90, 181, 90, 182, 90, 183, 90, 184, 90, 185, 90, 186, 90, 187, 90, 188, 91, 3, 91, 4, 91, 5, 91, 6, 91, 7, 91, 8, 91, 9, 91, 10, 91, 11, 91, 12, 91, 13, 91, 14, 91, 15, 91, 16, 91, 17, 91, 18, 91, 19, 91, 20, 91, 21, 91, 22, 91, 23, 91, 24, 91, 25, 91, 26, 91, 27, 91, 28, 91, 29, 91, 30, 91, 31, 91, 32, 91, 33, 91, 34, 91, 35, 91, 36, 91, 37, 91, 38, 91, 39, 91, 40, 91, 41, 91, 42, 91, 43, 91, 44, 91, 45, 91, 46, 91, 47, 91, 48, 91, 49, 91, 50, 91, 51, 91, 77, 91, 78, 91, 79, 91, 80, 91, 81, 91, 82, 91, 83, 91, 84, 91, 85, 91, 86, 91, 87, 91, 88, 91, 89, 91, 90, 91, 91, 91, 92, 91, 93, 91, 94, 91, 95, 91, 96, 91, 97, 91, 98, 91, 99, 91, 100, 91, 101, 91, 102, 91, 103, 91, 104, 91, 105, 91, 106, 91, 107, 91, 108, 91, 109, 91, 110, 91, 111, 91, 112, 91, 113, 91, 114, 91, 115, 91, 116, 91, 117, 91, 118, 91, 119, 91, 120, 91, 169, 91, 170, 91, 171, 91, 172, 91, 173, 91, 174, 91, 175, 91, 176, 91, 177, 91, 178, 91, 179, 91, 180, 91, 181, 91, 182, 91, 183, 91, 184, 91, 185, 91, 186, 91, 187, 91, 188, 92, 3, 92, 4, 92, 5, 92, 6, 92, 7, 92, 8, 92, 9, 92, 10, 92, 11, 92, 12, 92, 13, 92, 14, 92, 15, 92, 16, 92, 17, 92, 18, 92, 19, 92, 20, 92, 21, 92, 22, 92, 23, 92, 24, 92, 25, 92, 26, 92, 27, 92, 28, 92, 29, 92, 30, 92, 31, 92, 32, 92, 33, 92, 34, 92, 35, 92, 36, 92, 37, 92, 38, 92, 39, 92, 40, 92, 41, 92, 42, 92, 43, 92, 44, 92, 45, 92, 46, 92, 47, 92, 48, 92, 49, 92, 50, 92, 51, 92, 76, 92, 77, 92, 78, 92, 79, 92, 80, 92, 81, 92, 82, 92, 83, 92, 84, 92, 85, 92, 86, 92, 87, 92, 88, 92, 89, 92, 90, 92, 91, 92, 92, 92, 93, 92, 94, 92, 95, 92, 96, 92, 97, 92, 98, 92, 99, 92, 100, 92, 101, 92, 102, 92, 103, 92, 104, 92, 105, 92, 106, 92, 107, 92, 108, 92, 109, 92, 110, 92, 111, 92, 112, 92, 113, 92, 114, 92, 115, 92, 116, 92, 117, 92, 118, 92, 119, 92, 120, 92, 169, 92, 170, 92, 171, 92, 172, 92, 173, 92, 174, 92, 175, 92, 176, 92, 177, 92, 178, 92, 179, 92, 180, 92, 181, 92, 182, 92, 183, 92, 184, 92, 185, 92, 186, 92, 187, 92, 188, 93, 3, 93, 4, 93, 5, 93, 6, 93, 7, 93, 8, 93, 9, 93, 10, 93, 11, 93, 12, 93, 13, 93, 14, 93, 15, 93, 16, 93, 17, 93, 18, 93, 19, 93, 20, 93, 21, 93, 22, 93, 23, 93, 24, 93, 25, 93, 26, 93, 27, 93, 28, 93, 29, 93, 30, 93, 31, 93, 32, 93, 33, 93, 34, 93, 35, 93, 36, 93, 37, 93, 38, 93, 39, 93, 40, 93, 41, 93, 42, 93, 43, 93, 44, 93, 45, 93, 46, 93, 47, 93, 48, 93, 49, 93, 50, 93, 51, 93, 76, 93, 77, 93, 78, 93, 79, 93, 80, 93, 81, 93, 82, 93, 83, 93, 84, 93, 85, 93, 86, 93, 87, 93, 88, 93, 89, 93, 90, 93, 91, 93, 92, 93, 93, 93, 94, 93, 95, 93, 96, 93, 97, 93, 98, 93, 99, 93, 100, 93, 101, 93, 102, 93, 103, 93, 104, 93, 105, 93, 106, 93, 107, 93, 108, 93, 109, 93, 110, 93, 111, 93, 112, 93, 113, 93, 114, 93, 115, 93, 116, 93, 117, 93, 118, 93, 119, 93, 120, 93, 169, 93, 170, 93, 171, 93, 172, 93, 173, 93, 174, 93, 175, 93, 176, 93, 177, 93, 178, 93, 179, 93, 180, 93, 181, 93, 182, 93, 183, 93, 184, 93, 185, 93, 186, 93, 187, 93, 188, 94, 3, 94, 4, 94, 5, 94, 6, 94, 7, 94, 8, 94, 9, 94, 10, 94, 11, 94, 12, 94, 13, 94, 14, 94, 15, 94, 16, 94, 17, 94, 18, 94, 19, 94, 20, 94, 21, 94, 22, 94, 23, 94, 24, 94, 25, 94, 26, 94, 27, 94, 28, 94, 29, 94, 30, 94, 31, 94, 32, 94, 33, 94, 34, 94, 35, 94, 36, 94, 37, 94, 38, 94, 39, 94, 40, 94, 41, 94, 42, 94, 43, 94, 44, 94, 45, 94, 46, 94, 47, 94, 48, 94, 49, 94, 50, 94, 51, 94, 76, 94, 77, 94, 78, 94, 79, 94, 80, 94, 81, 94, 82, 94, 83, 94, 84, 94, 85, 94, 86, 94, 87, 94, 88, 94, 89, 94, 90, 94, 91, 94, 92, 94, 93, 94, 94, 94, 95, 94, 96, 94, 97, 94, 98, 94, 99, 94, 100, 94, 101, 94, 102, 94, 103, 94, 104, 94, 105, 94, 106, 94, 107, 94, 108, 94, 109, 94, 110, 94, 111, 94, 112, 94, 113, 94, 114, 94, 115, 94, 116, 94, 117, 94, 118, 94, 119, 94, 120, 94, 169, 94, 170, 94, 171, 94, 172, 94, 173, 94, 174, 94, 175, 94, 176, 94, 177, 94, 178, 94, 179, 94, 180, 94, 181, 94, 182, 94, 183, 94, 184, 94, 185, 94, 186, 94, 187, 94, 188, 95, 3, 95, 4, 95, 5, 95, 6, 95, 7, 95, 8, 95, 9, 95, 10, 95, 11, 95, 12, 95, 13, 95, 14, 95, 15, 95, 16, 95, 17, 95, 18, 95, 19, 95, 20, 95, 21, 95, 22, 95, 23, 95, 24, 95, 25, 95, 26, 95, 27, 95, 28, 95, 29, 95, 30, 95, 31, 95, 32, 95, 33, 95, 34, 95, 35, 95, 36, 95, 37, 95, 38, 95, 39, 95, 40, 95, 41, 95, 42, 95, 43, 95, 44, 95, 45, 95, 46, 95, 47, 95, 48, 95, 49, 95, 50, 95, 51, 95, 52, 95, 76, 95, 77, 95, 78, 95, 79, 95, 80, 95, 81, 95, 82, 95, 83, 95, 84, 95, 85, 95, 86, 95, 87, 95, 88, 95, 89, 95, 90, 95, 91, 95, 92, 95, 93, 95, 94, 95, 95, 95, 96, 95, 97, 95, 98, 95, 99, 95, 100, 95, 101, 95, 102, 95, 103, 95, 104, 95, 105, 95, 106, 95, 107, 95, 108, 95, 109, 95, 110, 95, 111, 95, 112, 95, 113, 95, 114, 95, 115, 95, 116, 95, 117, 95, 118, 95, 119, 95, 169, 95, 170, 95, 171, 95, 172, 95, 173, 95, 174, 95, 175, 95, 176, 95, 177, 95, 178, 95, 179, 95, 180, 95, 181, 95, 182, 95, 183, 95, 184, 95, 185, 95, 186, 95, 187, 95, 188, 96, 3, 96, 4, 96, 5, 96, 6, 96, 7, 96, 8, 96, 9, 96, 10, 96, 11, 96, 12, 96, 13, 96, 14, 96, 15, 96, 16, 96, 17, 96, 18, 96, 19, 96, 20, 96, 21, 96, 22, 96, 23, 96, 24, 96, 25, 96, 26, 96, 27, 96, 28, 96, 29, 96, 30, 96, 31, 96, 32, 96, 33, 96, 34, 96, 35, 96, 36, 96, 37, 96, 38, 96, 39, 96, 40, 96, 41, 96, 42, 96, 43, 96, 44, 96, 45, 96, 46, 96, 47, 96, 48, 96, 49, 96, 50, 96, 51, 96, 52, 96, 75, 96, 76, 96, 77, 96, 78, 96, 79, 96, 80, 96, 81, 96, 82, 96, 83, 96, 84, 96, 85, 96, 86, 96, 87, 96, 88, 96, 89, 96, 90, 96, 91, 96, 92, 96, 93, 96, 94, 96, 95, 96, 96, 96, 97, 96, 98, 96, 99, 96, 100, 96, 101, 96, 102, 96, 103, 96, 104, 96, 105, 96, 106, 96, 107, 96, 108, 96, 109, 96, 110, 96, 111, 96, 112, 96, 113, 96, 114, 96, 115, 96, 116, 96, 117, 96, 118, 96, 170, 96, 171, 96, 172, 96, 173, 96, 174, 96, 175, 96, 176, 96, 177, 96, 178, 96, 179, 96, 180, 96, 181, 96, 182, 96, 183, 96, 184, 96, 185, 96, 186, 96, 187, 96, 188, 97, 3, 97, 4, 97, 5, 97, 6, 97, 7, 97, 8, 97, 9, 97, 10, 97, 11, 97, 12, 97, 13, 97, 14, 97, 15, 97, 16, 97, 17, 97, 18, 97, 19, 97, 20, 97, 21, 97, 22, 97, 23, 97, 24, 97, 25, 97, 26, 97, 27, 97, 28, 97, 29, 97, 30, 97, 31, 97, 32, 97, 33, 97, 34, 97, 35, 97, 36, 97, 37, 97, 38, 97, 39, 97, 40, 97, 41, 97, 42, 97, 43, 97, 44, 97, 45, 97, 46, 97, 47, 97, 48, 97, 49, 97, 50, 97, 51, 97, 52, 97, 53, 97, 75, 97, 76, 97, 77, 97, 78, 97, 79, 97, 80, 97, 81, 97, 82, 97, 83, 97, 84, 97, 85, 97, 86, 97, 87, 97, 88, 97, 89, 97, 90, 97, 91, 97, 92, 97, 93, 97, 94, 97, 95, 97, 96, 97, 97, 97, 98, 97, 99, 97, 100, 97, 101, 97, 102, 97, 103, 97, 104, 97, 105, 97, 106, 97, 107, 97, 108, 97, 109, 97, 110, 97, 111, 97, 112, 97, 113, 97, 114, 97, 115, 97, 116, 97, 170, 97, 171, 97, 172, 97, 173, 97, 174, 97, 175, 97, 176, 97, 177, 97, 178, 97, 179, 97, 180, 97, 181, 97, 182, 97, 183, 97, 184, 97, 185, 97, 186, 97, 187, 97, 188, 98, 3, 98, 4, 98, 5, 98, 6, 98, 7, 98, 8, 98, 9, 98, 10, 98, 11, 98, 12, 98, 13, 98, 14, 98, 15, 98, 16, 98, 17, 98, 18, 98, 19, 98, 20, 98, 21, 98, 22, 98, 23, 98, 24, 98, 25, 98, 26, 98, 27, 98, 28, 98, 29, 98, 30, 98, 31, 98, 32, 98, 33, 98, 34, 98, 35, 98, 36, 98, 37, 98, 38, 98, 39, 98, 40, 98, 41, 98, 42, 98, 43, 98, 44, 98, 45, 98, 46, 98, 47, 98, 48, 98, 49, 98, 50, 98, 51, 98, 52, 98, 53, 98, 73, 98, 74, 98, 75, 98, 76, 98, 77, 98, 78, 98, 79, 98, 80, 98, 81, 98, 82, 98, 83, 98, 84, 98, 85, 98, 86, 98, 87, 98, 88, 98, 89, 98, 90, 98, 91, 98, 92, 98, 93, 98, 94, 98, 95, 98, 96, 98, 97, 98, 98, 98, 99, 98, 100, 98, 101, 98, 102, 98, 103, 98, 104, 98, 105, 98, 106, 98, 107, 98, 108, 98, 109, 98, 110, 98, 111, 98, 112, 98, 113, 98, 114, 98, 170, 98, 171, 98, 172, 98, 173, 98, 174, 98, 175, 98, 176, 98, 177, 98, 178, 98, 179, 98, 180, 98, 181, 98, 182, 98, 183, 98, 184, 98, 185, 98, 186, 98, 187, 98, 188, 99, 3, 99, 4, 99, 5, 99, 6, 99, 7, 99, 8, 99, 9, 99, 10, 99, 11, 99, 12, 99, 13, 99, 14, 99, 15, 99, 16, 99, 17, 99, 18, 99, 19, 99, 20, 99, 21, 99, 22, 99, 23, 99, 24, 99, 25, 99, 26, 99, 27, 99, 28, 99, 29, 99, 30, 99, 31, 99, 32, 99, 33, 99, 34, 99, 35, 99, 36, 99, 37, 99, 38, 99, 39, 99, 40, 99, 41, 99, 42, 99, 43, 99, 44, 99, 45, 99, 46, 99, 47, 99, 48, 99, 49, 99, 50, 99, 51, 99, 52, 99, 53, 99, 54, 99, 72, 99, 73, 99, 74, 99, 75, 99, 76, 99, 77, 99, 78, 99, 79, 99, 80, 99, 81, 99, 82, 99, 83, 99, 84, 99, 85, 99, 86, 99, 87, 99, 88, 99, 89, 99, 90, 99, 91, 99, 92, 99, 93, 99, 94, 99, 95, 99, 96, 99, 97, 99, 98, 99, 99, 99, 100, 99, 101, 99, 102, 99, 103, 99, 104, 99, 105, 99, 106, 99, 107, 99, 108, 99, 109, 99, 110, 99, 111, 99, 170, 99, 171, 99, 172, 99, 173, 99, 174, 99, 175, 99, 176, 99, 177, 99, 178, 99, 179, 99, 180, 99, 181, 99, 182, 99, 183, 99, 184, 99, 185, 99, 186, 99, 187, 99, 188, 100, 3, 100, 4, 100, 5, 100, 6, 100, 7, 100, 8, 100, 9, 100, 10, 100, 11, 100, 12, 100, 13, 100, 14, 100, 15, 100, 16, 100, 17, 100, 18, 100, 19, 100, 20, 100, 21, 100, 22, 100, 23, 100, 24, 100, 25, 100, 26, 100, 27, 100, 28, 100, 29, 100, 30, 100, 31, 100, 32, 100, 33, 100, 34, 100, 35, 100, 36, 100, 37, 100, 38, 100, 39, 100, 40, 100, 41, 100, 42, 100, 43, 100, 44, 100, 45, 100, 46, 100, 47, 100, 48, 100, 49, 100, 50, 100, 51, 100, 52, 100, 53, 100, 54, 100, 55, 100, 72, 100, 73, 100, 74, 100, 75, 100, 76, 100, 77, 100, 78, 100, 79, 100, 80, 100, 81, 100, 82, 100, 83, 100, 84, 100, 85, 100, 86, 100, 87, 100, 88, 100, 89, 100, 90, 100, 91, 100, 92, 100, 93, 100, 94, 100, 95, 100, 96, 100, 97, 100, 98, 100, 99, 100, 100, 100, 101, 100, 102, 100, 103, 100, 104, 100, 105, 100, 106, 100, 107, 100, 108, 100, 170, 100, 171, 100, 172, 100, 173, 100, 174, 100, 175, 100, 176, 100, 177, 100, 178, 100, 179, 100, 180, 100, 181, 100, 182, 100, 183, 100, 184, 100, 185, 100, 186, 100, 187, 100, 188, 101, 3, 101, 4, 101, 5, 101, 6, 101, 7, 101, 8, 101, 9, 101, 10, 101, 11, 101, 12, 101, 13, 101, 14, 101, 15, 101, 16, 101, 17, 101, 18, 101, 19, 101, 20, 101, 21, 101, 22, 101, 23, 101, 24, 101, 25, 101, 26, 101, 27, 101, 28, 101, 29, 101, 30, 101, 31, 101, 32, 101, 33, 101, 34, 101, 35, 101, 36, 101, 37, 101, 38, 101, 39, 101, 40, 101, 41, 101, 42, 101, 43, 101, 44, 101, 45, 101, 46, 101, 47, 101, 48, 101, 49, 101, 50, 101, 51, 101, 52, 101, 53, 101, 54, 101, 55, 101, 56, 101, 57, 101, 71, 101, 72, 101, 73, 101, 74, 101, 75, 101, 76, 101, 77, 101, 78, 101, 79, 101, 80, 101, 81, 101, 82, 101, 83, 101, 84, 101, 85, 101, 86, 101, 87, 101, 88, 101, 89, 101, 90, 101, 91, 101, 92, 101, 93, 101, 94, 101, 95, 101, 96, 101, 97, 101, 98, 101, 99, 101, 100, 101, 101, 101, 102, 101, 103, 101, 104, 101, 105, 101, 170, 101, 171, 101, 172, 101, 173, 101, 174, 101, 175, 101, 176, 101, 177, 101, 178, 101, 179, 101, 180, 101, 181, 101, 182, 101, 183, 101, 184, 101, 185, 101, 186, 101, 187, 101, 188, 102, 3, 102, 4, 102, 5, 102, 6, 102, 7, 102, 8, 102, 9, 102, 10, 102, 11, 102, 12, 102, 13, 102, 14, 102, 15, 102, 16, 102, 17, 102, 18, 102, 19, 102, 20, 102, 21, 102, 22, 102, 23, 102, 24, 102, 25, 102, 26, 102, 27, 102, 28, 102, 29, 102, 30, 102, 31, 102, 32, 102, 33, 102, 34, 102, 35, 102, 36, 102, 37, 102, 38, 102, 39, 102, 40, 102, 41, 102, 42, 102, 43, 102, 44, 102, 45, 102, 46, 102, 47, 102, 48, 102, 49, 102, 50, 102, 51, 102, 52, 102, 53, 102, 54, 102, 55, 102, 56, 102, 57, 102, 58, 102, 59, 102, 60, 102, 69, 102, 70, 102, 71, 102, 72, 102, 73, 102, 74, 102, 75, 102, 76, 102, 77, 102, 78, 102, 79, 102, 80, 102, 81, 102, 82, 102, 83, 102, 84, 102, 85, 102, 86, 102, 87, 102, 88, 102, 89, 102, 90, 102, 91, 102, 92, 102, 93, 102, 94, 102, 95, 102, 96, 102, 97, 102, 98, 102, 99, 102, 100, 102, 101, 102, 102, 102, 103, 102, 170, 102, 171, 102, 172, 102, 173, 102, 174, 102, 175, 102, 176, 102, 177, 102, 178, 102, 179, 102, 180, 102, 181, 102, 182, 102, 183, 102, 184, 102, 185, 102, 186, 102, 187, 102, 188, 103, 3, 103, 4, 103, 5, 103, 6, 103, 7, 103, 8, 103, 9, 103, 10, 103, 11, 103, 12, 103, 13, 103, 14, 103, 15, 103, 16, 103, 17, 103, 18, 103, 19, 103, 20, 103, 21, 103, 22, 103, 23, 103, 24, 103, 25, 103, 26, 103, 27, 103, 28, 103, 29, 103, 30, 103, 31, 103, 32, 103, 33, 103, 34, 103, 35, 103, 36, 103, 37, 103, 38, 103, 39, 103, 40, 103, 41, 103, 42, 103, 43, 103, 44, 103, 45, 103, 46, 103, 47, 103, 48, 103, 49, 103, 50, 103, 51, 103, 52, 103, 53, 103, 54, 103, 55, 103, 56, 103, 57, 103, 58, 103, 59, 103, 60, 103, 61, 103, 62, 103, 63, 103, 64, 103, 65, 103, 66, 103, 67, 103, 68, 103, 69, 103, 70, 103, 71, 103, 72, 103, 73, 103, 74, 103, 75, 103, 76, 103, 77, 103, 78, 103, 79, 103, 80, 103, 81, 103, 82, 103, 83, 103, 84, 103, 85, 103, 86, 103, 87, 103, 88, 103, 89, 103, 90, 103, 91, 103, 92, 103, 93, 103, 94, 103, 95, 103, 96, 103, 97, 103, 98, 103, 99, 103, 100, 103, 170, 103, 171, 103, 172, 103, 173, 103, 174, 103, 175, 103, 176, 103, 177, 103, 178, 103, 179, 103, 180, 103, 181, 103, 182, 103, 183, 103, 184, 103, 185, 103, 186, 103, 187, 103, 188, 104, 3, 104, 4, 104, 5, 104, 6, 104, 7, 104, 8, 104, 9, 104, 10, 104, 11, 104, 12, 104, 13, 104, 14, 104, 15, 104, 16, 104, 17, 104, 18, 104, 19, 104, 20, 104, 21, 104, 22, 104, 23, 104, 24, 104, 25, 104, 26, 104, 27, 104, 28, 104, 29, 104, 30, 104, 31, 104, 32, 104, 33, 104, 34, 104, 35, 104, 36, 104, 37, 104, 38, 104, 39, 104, 40, 104, 41, 104, 42, 104, 43, 104, 44, 104, 45, 104, 46, 104, 47, 104, 48, 104, 49, 104, 50, 104, 51, 104, 52, 104, 53, 104, 54, 104, 55, 104, 56, 104, 57, 104, 58, 104, 59, 104, 60, 104, 61, 104, 62, 104, 63, 104, 64, 104, 65, 104, 66, 104, 67, 104, 68, 104, 69, 104, 70, 104, 71, 104, 72, 104, 73, 104, 74, 104, 75, 104, 76, 104, 77, 104, 78, 104, 79, 104, 80, 104, 81, 104, 82, 104, 83, 104, 84, 104, 85, 104, 86, 104, 87, 104, 88, 104, 89, 104, 90, 104, 91, 104, 92, 104, 93, 104, 94, 104, 95, 104, 96, 104, 97, 104, 170, 104, 171, 104, 172, 104, 173, 104, 174, 104, 175, 104, 176, 104, 177, 104, 178, 104, 179, 104, 180, 104, 181, 104, 182, 104, 183, 104, 184, 104, 185, 104, 186, 104, 187, 104, 188, 105, 3, 105, 4, 105, 5, 105, 6, 105, 7, 105, 8, 105, 9, 105, 10, 105, 11, 105, 12, 105, 13, 105, 14, 105, 15, 105, 16, 105, 17, 105, 18, 105, 19, 105, 20, 105, 21, 105, 22, 105, 23, 105, 24, 105, 25, 105, 26, 105, 27, 105, 28, 105, 29, 105, 30, 105, 31, 105, 32, 105, 33, 105, 34, 105, 35, 105, 36, 105, 37, 105, 38, 105, 39, 105, 40, 105, 41, 105, 42, 105, 43, 105, 44, 105, 45, 105, 46, 105, 47, 105, 48, 105, 49, 105, 50, 105, 51, 105, 52, 105, 53, 105, 54, 105, 55, 105, 56, 105, 57, 105, 58, 105, 59, 105, 60, 105, 61, 105, 62, 105, 63, 105, 64, 105, 65, 105, 66, 105, 67, 105, 68, 105, 69, 105, 70, 105, 71, 105, 72, 105, 73, 105, 74, 105, 75, 105, 76, 105, 77, 105, 78, 105, 79, 105, 80, 105, 81, 105, 82, 105, 83, 105, 84, 105, 85, 105, 86, 105, 87, 105, 88, 105, 89, 105, 90, 105, 91, 105, 92, 105, 93, 105, 94, 105, 95, 105, 170, 105, 171, 105, 172, 105, 173, 105, 174, 105, 175, 105, 176, 105, 177, 105, 178, 105, 179, 105, 180, 105, 181, 105, 182, 105, 183, 105, 184, 105, 185, 105, 186, 105, 187, 105, 188, 106, 3, 106, 4, 106, 5, 106, 6, 106, 7, 106, 8, 106, 9, 106, 10, 106, 11, 106, 12, 106, 13, 106, 14, 106, 15, 106, 16, 106, 17, 106, 18, 106, 19, 106, 20, 106, 21, 106, 22, 106, 23, 106, 24, 106, 25, 106, 26, 106, 27, 106, 28, 106, 29, 106, 30, 106, 31, 106, 32, 106, 33, 106, 34, 106, 35, 106, 36, 106, 37, 106, 38, 106, 39, 106, 40, 106, 41, 106, 42, 106, 43, 106, 44, 106, 45, 106, 46, 106, 47, 106, 48, 106, 49, 106, 50, 106, 51, 106, 52, 106, 53, 106, 54, 106, 55, 106, 56, 106, 57, 106, 58, 106, 59, 106, 60, 106, 61, 106, 62, 106, 63, 106, 64, 106, 65, 106, 66, 106, 67, 106, 68, 106, 69, 106, 70, 106, 71, 106, 72, 106, 73, 106, 74, 106, 75, 106, 76, 106, 77, 106, 78, 106, 79, 106, 80, 106, 81, 106, 82, 106, 83, 106, 84, 106, 85, 106, 86, 106, 87, 106, 88, 106, 89, 106, 90, 106, 91, 106, 92, 106, 93, 106, 170, 106, 171, 106, 172, 106, 173, 106, 174, 106, 175, 106, 176, 106, 177, 106, 178, 106, 179, 106, 180, 106, 181, 106, 182, 106, 183, 106, 184, 106, 185, 106, 186, 106, 187, 106, 188, 107, 3, 107, 4, 107, 5, 107, 6, 107, 7, 107, 8, 107, 9, 107, 10, 107, 11, 107, 12, 107, 13, 107, 14, 107, 15, 107, 16, 107, 17, 107, 18, 107, 19, 107, 20, 107, 21, 107, 22, 107, 23, 107, 24, 107, 25, 107, 26, 107, 27, 107, 28, 107, 29, 107, 30, 107, 31, 107, 32, 107, 33, 107, 34, 107, 35, 107, 36, 107, 37, 107, 38, 107, 39, 107, 40, 107, 41, 107, 42, 107, 43, 107, 44, 107, 45, 107, 46, 107, 47, 107, 48, 107, 49, 107, 50, 107, 51, 107, 52, 107, 53, 107, 54, 107, 55, 107, 56, 107, 57, 107, 58, 107, 59, 107, 60, 107, 61, 107, 62, 107, 63, 107, 64, 107, 65, 107, 66, 107, 67, 107, 68, 107, 69, 107, 70, 107, 71, 107, 72, 107, 73, 107, 74, 107, 75, 107, 76, 107, 77, 107, 78, 107, 79, 107, 80, 107, 81, 107, 82, 107, 83, 107, 84, 107, 85, 107, 86, 107, 87, 107, 88, 107, 89, 107, 90, 107, 170, 107, 171, 107, 172, 107, 173, 107, 174, 107, 175, 107, 176, 107, 177, 107, 178, 107, 179, 107, 180, 107, 181, 107, 182, 107, 183, 107, 184, 107, 185, 107, 186, 107, 187, 107, 188, 108, 3, 108, 4, 108, 5, 108, 6, 108, 7, 108, 8, 108, 9, 108, 10, 108, 11, 108, 12, 108, 13, 108, 14, 108, 15, 108, 16, 108, 17, 108, 18, 108, 19, 108, 20, 108, 21, 108, 22, 108, 23, 108, 24, 108, 25, 108, 26, 108, 27, 108, 28, 108, 29, 108, 30, 108, 31, 108, 32, 108, 33, 108, 34, 108, 35, 108, 36, 108, 37, 108, 38, 108, 39, 108, 40, 108, 41, 108, 42, 108, 43, 108, 44, 108, 45, 108, 46, 108, 47, 108, 48, 108, 49, 108, 50, 108, 51, 108, 52, 108, 53, 108, 54, 108, 55, 108, 56, 108, 57, 108, 58, 108, 59, 108, 60, 108, 61, 108, 62, 108, 63, 108, 64, 108, 65, 108, 66, 108, 67, 108, 68, 108, 69, 108, 70, 108, 71, 108, 72, 108, 73, 108, 74, 108, 75, 108, 76, 108, 77, 108, 78, 108, 79, 108, 80, 108, 81, 108, 82, 108, 83, 108, 84, 108, 85, 108, 86, 108, 87, 108, 88, 108, 89, 108, 170, 108, 171, 108, 172, 108, 173, 108, 174, 108, 175, 108, 176, 108, 177, 108, 178, 108, 179, 108, 180, 108, 181, 108, 182, 108, 183, 108, 184, 108, 185, 108, 186, 108, 187, 108, 188, 109, 3, 109, 4, 109, 5, 109, 6, 109, 7, 109, 8, 109, 9, 109, 10, 109, 11, 109, 12, 109, 13, 109, 14, 109, 15, 109, 16, 109, 17, 109, 18, 109, 19, 109, 20, 109, 21, 109, 22, 109, 23, 109, 24, 109, 25, 109, 26, 109, 27, 109, 28, 109, 29, 109, 30, 109, 31, 109, 32, 109, 33, 109, 34, 109, 35, 109, 36, 109, 37, 109, 38, 109, 39, 109, 40, 109, 41, 109, 42, 109, 43, 109, 44, 109, 45, 109, 46, 109, 47, 109, 48, 109, 49, 109, 50, 109, 51, 109, 52, 109, 53, 109, 54, 109, 55, 109, 56, 109, 57, 109, 58, 109, 59, 109, 60, 109, 61, 109, 62, 109, 63, 109, 64, 109, 65, 109, 66, 109, 67, 109, 68, 109, 69, 109, 70, 109, 71, 109, 72, 109, 73, 109, 74, 109, 75, 109, 76, 109, 77, 109, 78, 109, 79, 109, 80, 109, 81, 109, 82, 109, 83, 109, 84, 109, 85, 109, 86, 109, 87, 109, 88, 109, 170, 109, 171, 109, 172, 109, 173, 109, 174, 109, 175, 109, 176, 109, 177, 109, 178, 109, 179, 109, 180, 109, 181, 109, 182, 109, 183, 109, 184, 109, 185, 109, 186, 109, 187, 109, 188, 110, 3, 110, 4, 110, 5, 110, 6, 110, 7, 110, 8, 110, 9, 110, 10, 110, 11, 110, 12, 110, 13, 110, 14, 110, 15, 110, 16, 110, 17, 110, 18, 110, 19, 110, 20, 110, 21, 110, 22, 110, 23, 110, 24, 110, 25, 110, 26, 110, 27, 110, 28, 110, 29, 110, 30, 110, 31, 110, 32, 110, 33, 110, 34, 110, 35, 110, 36, 110, 37, 110, 38, 110, 39, 110, 40, 110, 41, 110, 42, 110, 43, 110, 44, 110, 45, 110, 46, 110, 47, 110, 48, 110, 49, 110, 50, 110, 51, 110, 52, 110, 53, 110, 54, 110, 55, 110, 56, 110, 57, 110, 58, 110, 59, 110, 60, 110, 61, 110, 62, 110, 63, 110, 64, 110, 65, 110, 66, 110, 67, 110, 68, 110, 69, 110, 70, 110, 71, 110, 72, 110, 73, 110, 74, 110, 75, 110, 76, 110, 77, 110, 78, 110, 79, 110, 80, 110, 81, 110, 82, 110, 83, 110, 84, 110, 85, 110, 86, 110, 87, 110, 170, 110, 171, 110, 172, 110, 173, 110, 174, 110, 175, 110, 176, 110, 177, 110, 178, 110, 179, 110, 180, 110, 181, 110, 182, 110, 183, 110, 184, 110, 185, 110, 186, 110, 187, 110, 188, 111, 3, 111, 4, 111, 5, 111, 6, 111, 7, 111, 8, 111, 9, 111, 10, 111, 11, 111, 12, 111, 13, 111, 14, 111, 15, 111, 16, 111, 17, 111, 18, 111, 19, 111, 20, 111, 21, 111, 22, 111, 23, 111, 24, 111, 25, 111, 26, 111, 27, 111, 28, 111, 29, 111, 30, 111, 31, 111, 32, 111, 33, 111, 34, 111, 35, 111, 36, 111, 37, 111, 38, 111, 39, 111, 40, 111, 41, 111, 42, 111, 43, 111, 44, 111, 45, 111, 46, 111, 47, 111, 48, 111, 49, 111, 50, 111, 51, 111, 52, 111, 53, 111, 54, 111, 55, 111, 56, 111, 57, 111, 58, 111, 59, 111, 60, 111, 61, 111, 62, 111, 63, 111, 64, 111, 65, 111, 66, 111, 67, 111, 68, 111, 69, 111, 70, 111, 71, 111, 72, 111, 73, 111, 74, 111, 75, 111, 76, 111, 77, 111, 78, 111, 79, 111, 80, 111, 81, 111, 82, 111, 83, 111, 84, 111, 85, 111, 170, 111, 171, 111, 172, 111, 173, 111, 174, 111, 175, 111, 176, 111, 177, 111, 178, 111, 179, 111, 180, 111, 181, 111, 182, 111, 183, 111, 184, 111, 185, 111, 186, 111, 187, 111, 188, 112, 3, 112, 4, 112, 5, 112, 6, 112, 7, 112, 8, 112, 9, 112, 10, 112, 11, 112, 12, 112, 13, 112, 14, 112, 15, 112, 16, 112, 17, 112, 18, 112, 19, 112, 20, 112, 21, 112, 22, 112, 23, 112, 24, 112, 25, 112, 26, 112, 27, 112, 28, 112, 29, 112, 30, 112, 31, 112, 32, 112, 33, 112, 34, 112, 35, 112, 36, 112, 37, 112, 38, 112, 39, 112, 40, 112, 41, 112, 42, 112, 43, 112, 44, 112, 45, 112, 46, 112, 47, 112, 48, 112, 49, 112, 50, 112, 51, 112, 52, 112, 53, 112, 54, 112, 55, 112, 56, 112, 57, 112, 58, 112, 59, 112, 60, 112, 61, 112, 62, 112, 63, 112, 64, 112, 65, 112, 66, 112, 67, 112, 68, 112, 69, 112, 70, 112, 71, 112, 72, 112, 73, 112, 74, 112, 75, 112, 76, 112, 77, 112, 78, 112, 79, 112, 80, 112, 81, 112, 82, 112, 83, 112, 84, 112, 170, 112, 171, 112, 172, 112, 173, 112, 174, 112, 175, 112, 176, 112, 177, 112, 178, 112, 179, 112, 180, 112, 181, 112, 182, 112, 183, 112, 184, 112, 185, 112, 186, 112, 187, 112, 188, 113, 3, 113, 4, 113, 5, 113, 6, 113, 7, 113, 8, 113, 9, 113, 10, 113, 11, 113, 12, 113, 13, 113, 14, 113, 15, 113, 16, 113, 17, 113, 18, 113, 19, 113, 20, 113, 21, 113, 22, 113, 23, 113, 24, 113, 25, 113, 26, 113, 27, 113, 28, 113, 29, 113, 30, 113, 31, 113, 32, 113, 33, 113, 34, 113, 35, 113, 36, 113, 37, 113, 38, 113, 39, 113, 40, 113, 41, 113, 42, 113, 43, 113, 44, 113, 45, 113, 46, 113, 47, 113, 48, 113, 49, 113, 50, 113, 51, 113, 52, 113, 53, 113, 54, 113, 55, 113, 56, 113, 57, 113, 58, 113, 59, 113, 60, 113, 61, 113, 62, 113, 63, 113, 64, 113, 65, 113, 66, 113, 67, 113, 68, 113, 69, 113, 70, 113, 71, 113, 72, 113, 73, 113, 74, 113, 75, 113, 76, 113, 77, 113, 78, 113, 79, 113, 80, 113, 81, 113, 82, 113, 83, 113, 170, 113, 171, 113, 172, 113, 173, 113, 174, 113, 175, 113, 176, 113, 177, 113, 178, 113, 179, 113, 180, 113, 181, 113, 182, 113, 183, 113, 184, 113, 185, 113, 186, 113, 187, 113, 188, 114, 3, 114, 4, 114, 5, 114, 6, 114, 7, 114, 8, 114, 9, 114, 10, 114, 11, 114, 12, 114, 13, 114, 14, 114, 15, 114, 16, 114, 17, 114, 18, 114, 19, 114, 20, 114, 21, 114, 22, 114, 23, 114, 24, 114, 25, 114, 26, 114, 27, 114, 28, 114, 29, 114, 30, 114, 31, 114, 32, 114, 33, 114, 34, 114, 35, 114, 36, 114, 37, 114, 38, 114, 39, 114, 40, 114, 41, 114, 42, 114, 43, 114, 44, 114, 45, 114, 46, 114, 47, 114, 48, 114, 49, 114, 50, 114, 51, 114, 52, 114, 53, 114, 54, 114, 55, 114, 56, 114, 57, 114, 58, 114, 59, 114, 60, 114, 61, 114, 62, 114, 63, 114, 64, 114, 65, 114, 66, 114, 67, 114, 68, 114, 69, 114, 70, 114, 71, 114, 72, 114, 73, 114, 74, 114, 75, 114, 76, 114, 77, 114, 78, 114, 79, 114, 80, 114, 81, 114, 82, 114, 170, 114, 171, 114, 172, 114, 173, 114, 174, 114, 175, 114, 176, 114, 177, 114, 178, 114, 179, 114, 180, 114, 181, 114, 182, 114, 183, 114, 184, 114, 185, 114, 186, 114, 187, 114, 188, 115, 3, 115, 4, 115, 5, 115, 6, 115, 7, 115, 8, 115, 9, 115, 10, 115, 11, 115, 12, 115, 13, 115, 14, 115, 15, 115, 16, 115, 17, 115, 18, 115, 19, 115, 20, 115, 21, 115, 22, 115, 23, 115, 24, 115, 25, 115, 26, 115, 27, 115, 28, 115, 29, 115, 30, 115, 31, 115, 32, 115, 33, 115, 34, 115, 35, 115, 36, 115, 37, 115, 38, 115, 39, 115, 40, 115, 41, 115, 42, 115, 43, 115, 44, 115, 45, 115, 46, 115, 47, 115, 48, 115, 49, 115, 50, 115, 51, 115, 52, 115, 53, 115, 54, 115, 55, 115, 56, 115, 57, 115, 58, 115, 59, 115, 60, 115, 61, 115, 62, 115, 63, 115, 64, 115, 65, 115, 66, 115, 67, 115, 68, 115, 69, 115, 70, 115, 71, 115, 72, 115, 73, 115, 74, 115, 75, 115, 76, 115, 77, 115, 78, 115, 79, 115, 80, 115, 81, 115, 170, 115, 171, 115, 172, 115, 173, 115, 174, 115, 175, 115, 176, 115, 177, 115, 178, 115, 179, 115, 180, 115, 181, 115, 182, 115, 183, 115, 184, 115, 185, 115, 186, 115, 187, 115, 188, 116, 3, 116, 4, 116, 5, 116, 6, 116, 7, 116, 8, 116, 9, 116, 10, 116, 11, 116, 12, 116, 13, 116, 14, 116, 15, 116, 16, 116, 17, 116, 18, 116, 19, 116, 20, 116, 21, 116, 22, 116, 23, 116, 24, 116, 25, 116, 26, 116, 27, 116, 28, 116, 29, 116, 30, 116, 31, 116, 32, 116, 33, 116, 34, 116, 35, 116, 36, 116, 37, 116, 38, 116, 39, 116, 40, 116, 41, 116, 42, 116, 43, 116, 44, 116, 45, 116, 46, 116, 47, 116, 48, 116, 49, 116, 50, 116, 51, 116, 52, 116, 53, 116, 54, 116, 55, 116, 56, 116, 57, 116, 58, 116, 59, 116, 60, 116, 61, 116, 62, 116, 63, 116, 64, 116, 65, 116, 66, 116, 67, 116, 68, 116, 69, 116, 70, 116, 71, 116, 72, 116, 73, 116, 74, 116, 75, 116, 76, 116, 77, 116, 78, 116, 79, 116, 170, 116, 171, 116, 172, 116, 173, 116, 174, 116, 175, 116, 176, 116, 177, 116, 178, 116, 179, 116, 180, 116, 181, 116, 182, 116, 183, 116, 184, 116, 185, 116, 186, 116, 187, 116, 188, 117, 3, 117, 4, 117, 5, 117, 6, 117, 7, 117, 8, 117, 9, 117, 10, 117, 11, 117, 12, 117, 13, 117, 14, 117, 15, 117, 16, 117, 17, 117, 18, 117, 19, 117, 20, 117, 21, 117, 22, 117, 23, 117, 24, 117, 25, 117, 26, 117, 27, 117, 28, 117, 29, 117, 30, 117, 31, 117, 32, 117, 33, 117, 34, 117, 35, 117, 36, 117, 37, 117, 38, 117, 39, 117, 40, 117, 41, 117, 42, 117, 43, 117, 44, 117, 45, 117, 46, 117, 47, 117, 48, 117, 49, 117, 50, 117, 51, 117, 52, 117, 53, 117, 54, 117, 55, 117, 56, 117, 57, 117, 58, 117, 59, 117, 60, 117, 61, 117, 62, 117, 63, 117, 64, 117, 65, 117, 66, 117, 67, 117, 68, 117, 69, 117, 70, 117, 71, 117, 72, 117, 73, 117, 74, 117, 75, 117, 76, 117, 77, 117, 78, 117, 170, 117, 171, 117, 172, 117, 173, 117, 174, 117, 175, 117, 176, 117, 177, 117, 178, 117, 179, 117, 180, 117, 181, 117, 182, 117, 183, 117, 184, 117, 185, 117, 186, 117, 187, 117, 188, 118, 3, 118, 4, 118, 5, 118, 6, 118, 7, 118, 8, 118, 9, 118, 10, 118, 11, 118, 12, 118, 13, 118, 14, 118, 15, 118, 16, 118, 17, 118, 18, 118, 19, 118, 20, 118, 21, 118, 22, 118, 23, 118, 24, 118, 25, 118, 26, 118, 27, 118, 28, 118, 29, 118, 30, 118, 31, 118, 32, 118, 33, 118, 34, 118, 35, 118, 36, 118, 37, 118, 38, 118, 39, 118, 40, 118, 41, 118, 42, 118, 43, 118, 44, 118, 45, 118, 46, 118, 47, 118, 48, 118, 49, 118, 50, 118, 51, 118, 52, 118, 53, 118, 54, 118, 55, 118, 56, 118, 57, 118, 58, 118, 59, 118, 60, 118, 61, 118, 62, 118, 63, 118, 64, 118, 65, 118, 66, 118, 67, 118, 68, 118, 69, 118, 70, 118, 71, 118, 72, 118, 73, 118, 74, 118, 75, 118, 76, 118, 77, 118, 170, 118, 171, 118, 172, 118, 173, 118, 174, 118, 175, 118, 176, 118, 177, 118, 178, 118, 179, 118, 180, 118, 181, 118, 182, 118, 183, 118, 184, 118, 185, 118, 186, 118, 187, 118, 188, 119, 3, 119, 4, 119, 5, 119, 6, 119, 7, 119, 8, 119, 9, 119, 10, 119, 11, 119, 12, 119, 13, 119, 14, 119, 15, 119, 16, 119, 17, 119, 18, 119, 19, 119, 20, 119, 21, 119, 22, 119, 23, 119, 24, 119, 25, 119, 26, 119, 27, 119, 28, 119, 29, 119, 30, 119, 31, 119, 32, 119, 33, 119, 34, 119, 35, 119, 36, 119, 37, 119, 38, 119, 39, 119, 40, 119, 41, 119, 42, 119, 43, 119, 44, 119, 45, 119, 46, 119, 47, 119, 48, 119, 49, 119, 50, 119, 51, 119, 52, 119, 53, 119, 54, 119, 55, 119, 56, 119, 57, 119, 58, 119, 59, 119, 60, 119, 61, 119, 62, 119, 63, 119, 64, 119, 65, 119, 66, 119, 67, 119, 68, 119, 69, 119, 70, 119, 71, 119, 72, 119, 73, 119, 74, 119, 75, 119, 76, 119, 77, 119, 170, 119, 171, 119, 172, 119, 173, 119, 174, 119, 175, 119, 176, 119, 177, 119, 178, 119, 179, 119, 180, 119, 181, 119, 182, 119, 183, 119, 184, 119, 185, 119, 186, 119, 187, 119, 188, 120, 3, 120, 4, 120, 5, 120, 6, 120, 7, 120, 8, 120, 9, 120, 10, 120, 11, 120, 12, 120, 13, 120, 14, 120, 15, 120, 16, 120, 17, 120, 18, 120, 19, 120, 20, 120, 21, 120, 22, 120, 23, 120, 24, 120, 25, 120, 26, 120, 27, 120, 28, 120, 29, 120, 30, 120, 31, 120, 32, 120, 33, 120, 34, 120, 35, 120, 36, 120, 37, 120, 38, 120, 39, 120, 40, 120, 41, 120, 42, 120, 43, 120, 44, 120, 45, 120, 46, 120, 47, 120, 48, 120, 49, 120, 50, 120, 51, 120, 52, 120, 53, 120, 54, 120, 55, 120, 56, 120, 57, 120, 58, 120, 59, 120, 60, 120, 61, 120, 62, 120, 63, 120, 64, 120, 65, 120, 66, 120, 67, 120, 68, 120, 69, 120, 70, 120, 71, 120, 72, 120, 73, 120, 74, 120, 75, 120, 76, 120, 170, 120, 171, 120, 172, 120, 173, 120, 174, 120, 175, 120, 176, 120, 177, 120, 178, 120, 179, 120, 180, 120, 181, 120, 182, 120, 183, 120, 184, 120, 185, 120, 186, 120, 187, 120, 188, 121, 3, 121, 4, 121, 5, 121, 6, 121, 7, 121, 8, 121, 9, 121, 10, 121, 11, 121, 12, 121, 13, 121, 14, 121, 15, 121, 16, 121, 17, 121, 18, 121, 19, 121, 20, 121, 21, 121, 22, 121, 23, 121, 24, 121, 25, 121, 26, 121, 27, 121, 28, 121, 29, 121, 30, 121, 31, 121, 32, 121, 33, 121, 34, 121, 35, 121, 36, 121, 37, 121, 38, 121, 39, 121, 40, 121, 41, 121, 42, 121, 43, 121, 44, 121, 45, 121, 46, 121, 47, 121, 48, 121, 49, 121, 50, 121, 51, 121, 52, 121, 53, 121, 54, 121, 55, 121, 56, 121, 57, 121, 58, 121, 59, 121, 60, 121, 61, 121, 62, 121, 63, 121, 64, 121, 65, 121, 66, 121, 67, 121, 68, 121, 69, 121, 70, 121, 71, 121, 72, 121, 73, 121, 74, 121, 75, 121, 170, 121, 171, 121, 172, 121, 173, 121, 174, 121, 175, 121, 176, 121, 177, 121, 178, 121, 179, 121, 180, 121, 181, 121, 182, 121, 183, 121, 184, 121, 185, 121, 186, 121, 187, 121, 188, 122, 3, 122, 4, 122, 5, 122, 6, 122, 7, 122, 8, 122, 9, 122, 10, 122, 11, 122, 12, 122, 13, 122, 14, 122, 15, 122, 16, 122, 17, 122, 18, 122, 19, 122, 20, 122, 21, 122, 22, 122, 23, 122, 24, 122, 25, 122, 26, 122, 27, 122, 28, 122, 29, 122, 30, 122, 31, 122, 32, 122, 33, 122, 34, 122, 35, 122, 36, 122, 37, 122, 38, 122, 39, 122, 40, 122, 41, 122, 42, 122, 43, 122, 44, 122, 45, 122, 46, 122, 47, 122, 48, 122, 49, 122, 50, 122, 51, 122, 52, 122, 53, 122, 54, 122, 55, 122, 56, 122, 57, 122, 58, 122, 59, 122, 60, 122, 61, 122, 62, 122, 63, 122, 64, 122, 65, 122, 66, 122, 67, 122, 68, 122, 69, 122, 70, 122, 71, 122, 72, 122, 73, 122, 74, 122, 75, 122, 171, 122, 172, 122, 173, 122, 174, 122, 175, 122, 176, 122, 177, 122, 178, 122, 179, 122, 180, 122, 181, 122, 182, 122, 183, 122, 184, 122, 185, 122, 186, 122, 187, 122, 188, 123, 3, 123, 4, 123, 5, 123, 6, 123, 7, 123, 8, 123, 9, 123, 10, 123, 11, 123, 12, 123, 13, 123, 14, 123, 15, 123, 16, 123, 17, 123, 18, 123, 19, 123, 20, 123, 21, 123, 22, 123, 23, 123, 24, 123, 25, 123, 26, 123, 27, 123, 28, 123, 29, 123, 30, 123, 31, 123, 32, 123, 33, 123, 34, 123, 35, 123, 36, 123, 37, 123, 38, 123, 39, 123, 40, 123, 41, 123, 42, 123, 43, 123, 44, 123, 45, 123, 46, 123, 47, 123, 48, 123, 49, 123, 50, 123, 51, 123, 52, 123, 53, 123, 54, 123, 55, 123, 56, 123, 57, 123, 58, 123, 59, 123, 60, 123, 61, 123, 62, 123, 63, 123, 64, 123, 65, 123, 66, 123, 67, 123, 68, 123, 69, 123, 70, 123, 71, 123, 72, 123, 73, 123, 74, 123, 171, 123, 172, 123, 173, 123, 174, 123, 175, 123, 176, 123, 177, 123, 178, 123, 179, 123, 180, 123, 181, 123, 182, 123, 183, 123, 184, 123, 185, 123, 186, 123, 187, 123, 188, 124, 3, 124, 4, 124, 5, 124, 6, 124, 7, 124, 8, 124, 9, 124, 10, 124, 11, 124, 12, 124, 13, 124, 14, 124, 15, 124, 16, 124, 17, 124, 18, 124, 19, 124, 20, 124, 21, 124, 22, 124, 23, 124, 24, 124, 25, 124, 26, 124, 27, 124, 28, 124, 29, 124, 30, 124, 31, 124, 32, 124, 33, 124, 34, 124, 35, 124, 36, 124, 37, 124, 38, 124, 39, 124, 40, 124, 41, 124, 42, 124, 43, 124, 44, 124, 45, 124, 46, 124, 47, 124, 48, 124, 49, 124, 50, 124, 51, 124, 52, 124, 53, 124, 54, 124, 55, 124, 56, 124, 57, 124, 58, 124, 59, 124, 60, 124, 61, 124, 62, 124, 63, 124, 64, 124, 65, 124, 66, 124, 67, 124, 68, 124, 69, 124, 70, 124, 71, 124, 72, 124, 73, 124, 74, 124, 171, 124, 172, 124, 173, 124, 174, 124, 175, 124, 176, 124, 177, 124, 178, 124, 179, 124, 180, 124, 181, 124, 182, 124, 183, 124, 184, 124, 185, 124, 186, 124, 187, 124, 188, 125, 3, 125, 4, 125, 5, 125, 6, 125, 7, 125, 8, 125, 9, 125, 10, 125, 11, 125, 12, 125, 13, 125, 14, 125, 15, 125, 16, 125, 17, 125, 18, 125, 19, 125, 20, 125, 21, 125, 22, 125, 23, 125, 24, 125, 25, 125, 26, 125, 27, 125, 28, 125, 29, 125, 30, 125, 31, 125, 32, 125, 33, 125, 34, 125, 35, 125, 36, 125, 37, 125, 38, 125, 39, 125, 40, 125, 41, 125, 42, 125, 43, 125, 44, 125, 45, 125, 46, 125, 47, 125, 48, 125, 49, 125, 50, 125, 51, 125, 52, 125, 53, 125, 54, 125, 55, 125, 56, 125, 57, 125, 58, 125, 59, 125, 60, 125, 61, 125, 62, 125, 63, 125, 64, 125, 65, 125, 66, 125, 67, 125, 68, 125, 69, 125, 70, 125, 71, 125, 72, 125, 73, 125, 74, 125, 171, 125, 172, 125, 173, 125, 174, 125, 175, 125, 176, 125, 177, 125, 178, 125, 179, 125, 180, 125, 181, 125, 182, 125, 183, 125, 184, 125, 185, 125, 186, 125, 187, 125, 188, 126, 3, 126, 4, 126, 5, 126, 6, 126, 7, 126, 8, 126, 9, 126, 10, 126, 11, 126, 12, 126, 13, 126, 14, 126, 15, 126, 16, 126, 17, 126, 18, 126, 19, 126, 20, 126, 21, 126, 22, 126, 23, 126, 24, 126, 25, 126, 26, 126, 27, 126, 28, 126, 29, 126, 30, 126, 31, 126, 32, 126, 33, 126, 34, 126, 35, 126, 36, 126, 37, 126, 38, 126, 39, 126, 40, 126, 41, 126, 42, 126, 43, 126, 44, 126, 45, 126, 46, 126, 47, 126, 48, 126, 49, 126, 50, 126, 51, 126, 52, 126, 53, 126, 54, 126, 55, 126, 56, 126, 57, 126, 58, 126, 59, 126, 60, 126, 61, 126, 62, 126, 63, 126, 64, 126, 65, 126, 66, 126, 67, 126, 68, 126, 69, 126, 70, 126, 71, 126, 72, 126, 73, 126, 171, 126, 172, 126, 173, 126, 174, 126, 175, 126, 176, 126, 177, 126, 178, 126, 179, 126, 180, 126, 181, 126, 182, 126, 183, 126, 184, 126, 185, 126, 186, 126, 187, 126, 188, 127, 3, 127, 4, 127, 5, 127, 6, 127, 7, 127, 8, 127, 9, 127, 10, 127, 11, 127, 12, 127, 13, 127, 14, 127, 15, 127, 16, 127, 17, 127, 18, 127, 19, 127, 20, 127, 21, 127, 22, 127, 23, 127, 24, 127, 25, 127, 26, 127, 27, 127, 28, 127, 29, 127, 30, 127, 31, 127, 32, 127, 33, 127, 34, 127, 35, 127, 36, 127, 37, 127, 38, 127, 39, 127, 40, 127, 41, 127, 42, 127, 43, 127, 44, 127, 45, 127, 46, 127, 47, 127, 48, 127, 49, 127, 50, 127, 51, 127, 52, 127, 53, 127, 54, 127, 55, 127, 56, 127, 57, 127, 58, 127, 59, 127, 60, 127, 61, 127, 62, 127, 63, 127, 64, 127, 65, 127, 66, 127, 67, 127, 68, 127, 69, 127, 70, 127, 71, 127, 72, 127, 73, 127, 171, 127, 172, 127, 173, 127, 174, 127, 175, 127, 176, 127, 177, 127, 178, 127, 179, 127, 180, 127, 181, 127, 182, 127, 183, 127, 184, 127, 185, 127, 186, 127, 187, 127, 188, 128, 3, 128, 4, 128, 5, 128, 6, 128, 7, 128, 8, 128, 9, 128, 10, 128, 11, 128, 12, 128, 13, 128, 14, 128, 15, 128, 16, 128, 17, 128, 18, 128, 19, 128, 20, 128, 21, 128, 22, 128, 23, 128, 24, 128, 25, 128, 26, 128, 27, 128, 28, 128, 29, 128, 30, 128, 31, 128, 32, 128, 33, 128, 34, 128, 35, 128, 36, 128, 37, 128, 38, 128, 39, 128, 40, 128, 41, 128, 42, 128, 43, 128, 44, 128, 45, 128, 46, 128, 47, 128, 48, 128, 49, 128, 50, 128, 51, 128, 52, 128, 53, 128, 54, 128, 55, 128, 56, 128, 57, 128, 58, 128, 59, 128, 60, 128, 61, 128, 62, 128, 63, 128, 64, 128, 65, 128, 66, 128, 67, 128, 68, 128, 69, 128, 70, 128, 71, 128, 72, 128, 73, 128, 171, 128, 172, 128, 173, 128, 174, 128, 175, 128, 176, 128, 177, 128, 178, 128, 179, 128, 180, 128, 181, 128, 182, 128, 183, 128, 184, 128, 185, 128, 186, 128, 187, 128, 188, 129, 3, 129, 4, 129, 5, 129, 6, 129, 7, 129, 8, 129, 9, 129, 10, 129, 11, 129, 12, 129, 13, 129, 14, 129, 15, 129, 16, 129, 17, 129, 18, 129, 19, 129, 20, 129, 21, 129, 22, 129, 23, 129, 24, 129, 25, 129, 26, 129, 27, 129, 28, 129, 29, 129, 30, 129, 31, 129, 32, 129, 33, 129, 34, 129, 35, 129, 36, 129, 37, 129, 38, 129, 39, 129, 40, 129, 41, 129, 42, 129, 43, 129, 44, 129, 45, 129, 46, 129, 47, 129, 48, 129, 49, 129, 50, 129, 51, 129, 52, 129, 53, 129, 54, 129, 55, 129, 56, 129, 57, 129, 58, 129, 59, 129, 60, 129, 61, 129, 62, 129, 63, 129, 64, 129, 65, 129, 66, 129, 67, 129, 68, 129, 69, 129, 70, 129, 71, 129, 72, 129, 171, 129, 172, 129, 173, 129, 174, 129, 175, 129, 176, 129, 177, 129, 178, 129, 179, 129, 180, 129, 181, 129, 182, 129, 183, 129, 184, 129, 185, 129, 186, 129, 187, 129, 188, 130, 3, 130, 4, 130, 5, 130, 6, 130, 7, 130, 8, 130, 9, 130, 10, 130, 11, 130, 12, 130, 13, 130, 14, 130, 15, 130, 16, 130, 17, 130, 18, 130, 19, 130, 20, 130, 21, 130, 22, 130, 23, 130, 24, 130, 25, 130, 26, 130, 27, 130, 28, 130, 29, 130, 30, 130, 31, 130, 32, 130, 33, 130, 34, 130, 35, 130, 36, 130, 37, 130, 38, 130, 39, 130, 40, 130, 41, 130, 42, 130, 43, 130, 44, 130, 45, 130, 46, 130, 47, 130, 48, 130, 49, 130, 50, 130, 51, 130, 52, 130, 53, 130, 54, 130, 55, 130, 56, 130, 57, 130, 58, 130, 59, 130, 60, 130, 61, 130, 62, 130, 63, 130, 64, 130, 65, 130, 66, 130, 67, 130, 68, 130, 69, 130, 70, 130, 71, 130, 72, 130, 171, 130, 172, 130, 173, 130, 174, 130, 175, 130, 176, 130, 177, 130, 178, 130, 179, 130, 180, 130, 181, 130, 182, 130, 183, 130, 184, 130, 185, 130, 186, 130, 187, 130, 188, 131, 3, 131, 4, 131, 5, 131, 6, 131, 7, 131, 8, 131, 9, 131, 10, 131, 11, 131, 12, 131, 13, 131, 14, 131, 15, 131, 16, 131, 17, 131, 18, 131, 19, 131, 20, 131, 21, 131, 22, 131, 23, 131, 24, 131, 25, 131, 26, 131, 27, 131, 28, 131, 29, 131, 30, 131, 31, 131, 32, 131, 33, 131, 34, 131, 35, 131, 36, 131, 37, 131, 38, 131, 39, 131, 40, 131, 41, 131, 42, 131, 43, 131, 44, 131, 45, 131, 46, 131, 47, 131, 48, 131, 49, 131, 50, 131, 51, 131, 52, 131, 53, 131, 54, 131, 55, 131, 56, 131, 57, 131, 58, 131, 59, 131, 60, 131, 61, 131, 62, 131, 63, 131, 64, 131, 65, 131, 66, 131, 67, 131, 68, 131, 69, 131, 70, 131, 71, 131, 171, 131, 172, 131, 173, 131, 174, 131, 175, 131, 176, 131, 177, 131, 178, 131, 179, 131, 180, 131, 181, 131, 182, 131, 183, 131, 184, 131, 185, 131, 186, 131, 187, 131, 188, 132, 3, 132, 4, 132, 5, 132, 6, 132, 7, 132, 8, 132, 9, 132, 10, 132, 11, 132, 12, 132, 13, 132, 14, 132, 15, 132, 16, 132, 17, 132, 18, 132, 19, 132, 20, 132, 21, 132, 22, 132, 23, 132, 24, 132, 25, 132, 26, 132, 27, 132, 28, 132, 29, 132, 30, 132, 31, 132, 32, 132, 33, 132, 34, 132, 35, 132, 36, 132, 37, 132, 38, 132, 39, 132, 40, 132, 41, 132, 42, 132, 43, 132, 44, 132, 45, 132, 46, 132, 47, 132, 48, 132, 49, 132, 50, 132, 51, 132, 52, 132, 53, 132, 54, 132, 55, 132, 56, 132, 57, 132, 58, 132, 59, 132, 60, 132, 61, 132, 62, 132, 63, 132, 64, 132, 65, 132, 66, 132, 67, 132, 68, 132, 69, 132, 70, 132, 171, 132, 172, 132, 173, 132, 174, 132, 175, 132, 176, 132, 177, 132, 178, 132, 179, 132, 180, 132, 181, 132, 182, 132, 183, 132, 184, 132, 185, 132, 186, 132, 187, 132, 188, 133, 3, 133, 4, 133, 5, 133, 6, 133, 7, 133, 8, 133, 9, 133, 10, 133, 11, 133, 12, 133, 13, 133, 14, 133, 15, 133, 16, 133, 17, 133, 18, 133, 19, 133, 20, 133, 21, 133, 22, 133, 23, 133, 24, 133, 25, 133, 26, 133, 27, 133, 28, 133, 29, 133, 30, 133, 31, 133, 32, 133, 33, 133, 34, 133, 35, 133, 36, 133, 37, 133, 38, 133, 39, 133, 40, 133, 41, 133, 42, 133, 43, 133, 44, 133, 45, 133, 46, 133, 47, 133, 48, 133, 49, 133, 50, 133, 51, 133, 52, 133, 53, 133, 54, 133, 55, 133, 56, 133, 57, 133, 58, 133, 59, 133, 60, 133, 61, 133, 62, 133, 63, 133, 64, 133, 65, 133, 66, 133, 67, 133, 68, 133, 69, 133, 70, 133, 171, 133, 172, 133, 173, 133, 174, 133, 175, 133, 176, 133, 177, 133, 178, 133, 179, 133, 180, 133, 181, 133, 182, 133, 183, 133, 184, 133, 185, 133, 186, 133, 187, 133, 188, 134, 3, 134, 4, 134, 5, 134, 6, 134, 7, 134, 8, 134, 9, 134, 10, 134, 11, 134, 12, 134, 13, 134, 14, 134, 15, 134, 16, 134, 17, 134, 18, 134, 19, 134, 20, 134, 21, 134, 22, 134, 23, 134, 24, 134, 25, 134, 26, 134, 27, 134, 28, 134, 29, 134, 30, 134, 31, 134, 32, 134, 33, 134, 34, 134, 35, 134, 36, 134, 37, 134, 38, 134, 39, 134, 40, 134, 41, 134, 42, 134, 43, 134, 44, 134, 45, 134, 46, 134, 47, 134, 48, 134, 49, 134, 50, 134, 51, 134, 52, 134, 53, 134, 54, 134, 55, 134, 56, 134, 57, 134, 58, 134, 59, 134, 60, 134, 61, 134, 62, 134, 63, 134, 64, 134, 65, 134, 66, 134, 67, 134, 68, 134, 69, 134, 171, 134, 172, 134, 173, 134, 174, 134, 175, 134, 176, 134, 177, 134, 178, 134, 179, 134, 180, 134, 181, 134, 182, 134, 183, 134, 184, 134, 185, 134, 186, 134, 187, 134, 188, 135, 3, 135, 4, 135, 5, 135, 6, 135, 7, 135, 8, 135, 9, 135, 10, 135, 11, 135, 12, 135, 13, 135, 14, 135, 15, 135, 16, 135, 17, 135, 18, 135, 19, 135, 20, 135, 21, 135, 22, 135, 23, 135, 24, 135, 25, 135, 26, 135, 27, 135, 28, 135, 29, 135, 30, 135, 31, 135, 32, 135, 33, 135, 34, 135, 35, 135, 36, 135, 37, 135, 38, 135, 39, 135, 40, 135, 41, 135, 42, 135, 43, 135, 44, 135, 45, 135, 46, 135, 47, 135, 48, 135, 49, 135, 50, 135, 51, 135, 52, 135, 53, 135, 54, 135, 55, 135, 56, 135, 57, 135, 58, 135, 59, 135, 60, 135, 61, 135, 62, 135, 63, 135, 64, 135, 65, 135, 66, 135, 67, 135, 68, 135, 171, 135, 172, 135, 173, 135, 174, 135, 175, 135, 176, 135, 177, 135, 178, 135, 179, 135, 180, 135, 181, 135, 182, 135, 183, 135, 184, 135, 185, 135, 186, 135, 187, 135, 188, 136, 3, 136, 4, 136, 5, 136, 6, 136, 7, 136, 8, 136, 9, 136, 10, 136, 11, 136, 12, 136, 13, 136, 14, 136, 15, 136, 16, 136, 17, 136, 18, 136, 19, 136, 20, 136, 21, 136, 22, 136, 23, 136, 24, 136, 25, 136, 26, 136, 27, 136, 28, 136, 29, 136, 30, 136, 31, 136, 32, 136, 33, 136, 34, 136, 35, 136, 36, 136, 37, 136, 38, 136, 39, 136, 40, 136, 41, 136, 42, 136, 43, 136, 44, 136, 45, 136, 46, 136, 47, 136, 48, 136, 49, 136, 50, 136, 51, 136, 52, 136, 53, 136, 54, 136, 55, 136, 56, 136, 57, 136, 58, 136, 59, 136, 60, 136, 61, 136, 62, 136, 63, 136, 64, 136, 65, 136, 66, 136, 67, 136, 171, 136, 172, 136, 173, 136, 174, 136, 175, 136, 176, 136, 177, 136, 178, 136, 179, 136, 180, 136, 181, 136, 182, 136, 183, 136, 184, 136, 185, 136, 186, 136, 187, 136, 188, 137, 3, 137, 4, 137, 5, 137, 6, 137, 7, 137, 8, 137, 9, 137, 10, 137, 11, 137, 12, 137, 13, 137, 14, 137, 15, 137, 16, 137, 17, 137, 18, 137, 19, 137, 20, 137, 21, 137, 22, 137, 23, 137, 24, 137, 25, 137, 26, 137, 27, 137, 28, 137, 29, 137, 30, 137, 31, 137, 32, 137, 33, 137, 34, 137, 35, 137, 36, 137, 37, 137, 38, 137, 39, 137, 40, 137, 41, 137, 42, 137, 43, 137, 44, 137, 45, 137, 46, 137, 47, 137, 48, 137, 49, 137, 50, 137, 51, 137, 52, 137, 53, 137, 54, 137, 55, 137, 56, 137, 57, 137, 58, 137, 59, 137, 60, 137, 61, 137, 62, 137, 63, 137, 64, 137, 65, 137, 66, 137, 171, 137, 172, 137, 173, 137, 174, 137, 175, 137, 176, 137, 177, 137, 178, 137, 179, 137, 180, 137, 181, 137, 182, 137, 183, 137, 184, 137, 185, 137, 186, 137, 187, 137, 188, 138, 3, 138, 4, 138, 5, 138, 6, 138, 7, 138, 8, 138, 9, 138, 10, 138, 11, 138, 12, 138, 13, 138, 14, 138, 15, 138, 16, 138, 17, 138, 18, 138, 19, 138, 20, 138, 21, 138, 22, 138, 23, 138, 24, 138, 25, 138, 26, 138, 27, 138, 28, 138, 29, 138, 30, 138, 31, 138, 32, 138, 33, 138, 34, 138, 35, 138, 36, 138, 37, 138, 38, 138, 39, 138, 40, 138, 41, 138, 42, 138, 43, 138, 44, 138, 45, 138, 46, 138, 47, 138, 48, 138, 49, 138, 50, 138, 51, 138, 52, 138, 53, 138, 54, 138, 55, 138, 56, 138, 57, 138, 58, 138, 59, 138, 60, 138, 61, 138, 62, 138, 63, 138, 64, 138, 65, 138, 66, 138, 171, 138, 172, 138, 173, 138, 174, 138, 175, 138, 176, 138, 177, 138, 178, 138, 179, 138, 180, 138, 181, 138, 182, 138, 183, 138, 184, 138, 185, 138, 186, 138, 187, 138, 188, 139, 3, 139, 4, 139, 5, 139, 6, 139, 7, 139, 8, 139, 9, 139, 10, 139, 11, 139, 12, 139, 13, 139, 14, 139, 15, 139, 16, 139, 17, 139, 18, 139, 19, 139, 20, 139, 21, 139, 22, 139, 23, 139, 24, 139, 25, 139, 26, 139, 27, 139, 28, 139, 29, 139, 30, 139, 31, 139, 32, 139, 33, 139, 34, 139, 35, 139, 36, 139, 37, 139, 38, 139, 39, 139, 40, 139, 41, 139, 42, 139, 43, 139, 44, 139, 45, 139, 46, 139, 47, 139, 48, 139, 49, 139, 50, 139, 51, 139, 52, 139, 53, 139, 54, 139, 55, 139, 56, 139, 57, 139, 58, 139, 59, 139, 60, 139, 61, 139, 62, 139, 63, 139, 64, 139, 65, 139, 171, 139, 172, 139, 173, 139, 174, 139, 175, 139, 176, 139, 177, 139, 178, 139, 179, 139, 180, 139, 181, 139, 182, 139, 183, 139, 184, 139, 185, 139, 186, 139, 187, 139, 188, 140, 3, 140, 4, 140, 5, 140, 6, 140, 7, 140, 8, 140, 9, 140, 10, 140, 11, 140, 12, 140, 13, 140, 14, 140, 15, 140, 16, 140, 17, 140, 18, 140, 19, 140, 20, 140, 21, 140, 22, 140, 23, 140, 24, 140, 25, 140, 26, 140, 27, 140, 28, 140, 29, 140, 30, 140, 31, 140, 32, 140, 33, 140, 34, 140, 35, 140, 36, 140, 37, 140, 38, 140, 39, 140, 40, 140, 41, 140, 42, 140, 43, 140, 44, 140, 45, 140, 46, 140, 47, 140, 48, 140, 49, 140, 50, 140, 51, 140, 52, 140, 53, 140, 54, 140, 55, 140, 56, 140, 57, 140, 58, 140, 59, 140, 60, 140, 61, 140, 62, 140, 63, 140, 64, 140, 171, 140, 172, 140, 173, 140, 174, 140, 175, 140, 176, 140, 177, 140, 178, 140, 179, 140, 180, 140, 181, 140, 182, 140, 183, 140, 184, 140, 185, 140, 186, 140, 187, 140, 188, 141, 3, 141, 4, 141, 5, 141, 6, 141, 7, 141, 8, 141, 9, 141, 10, 141, 11, 141, 12, 141, 13, 141, 14, 141, 15, 141, 16, 141, 17, 141, 18, 141, 19, 141, 20, 141, 21, 141, 22, 141, 23, 141, 24, 141, 25, 141, 26, 141, 27, 141, 28, 141, 29, 141, 30, 141, 31, 141, 32, 141, 33, 141, 34, 141, 35, 141, 36, 141, 37, 141, 38, 141, 39, 141, 40, 141, 41, 141, 42, 141, 43, 141, 44, 141, 45, 141, 46, 141, 47, 141, 48, 141, 49, 141, 50, 141, 51, 141, 52, 141, 53, 141, 54, 141, 55, 141, 56, 141, 57, 141, 58, 141, 59, 141, 60, 141, 61, 141, 62, 141, 63, 141, 171, 141, 172, 141, 173, 141, 174, 141, 175, 141, 176, 141, 177, 141, 178, 141, 179, 141, 180, 141, 181, 141, 182, 141, 183, 141, 184, 141, 185, 141, 186, 141, 187, 141, 188, 142, 3, 142, 4, 142, 5, 142, 6, 142, 7, 142, 8, 142, 9, 142, 10, 142, 11, 142, 12, 142, 13, 142, 14, 142, 15, 142, 16, 142, 17, 142, 18, 142, 19, 142, 20, 142, 21, 142, 22, 142, 23, 142, 24, 142, 25, 142, 26, 142, 27, 142, 28, 142, 29, 142, 30, 142, 31, 142, 32, 142, 33, 142, 34, 142, 35, 142, 36, 142, 37, 142, 38, 142, 39, 142, 40, 142, 41, 142, 42, 142, 43, 142, 44, 142, 45, 142, 46, 142, 47, 142, 48, 142, 49, 142, 50, 142, 51, 142, 52, 142, 53, 142, 54, 142, 55, 142, 56, 142, 57, 142, 58, 142, 59, 142, 60, 142, 61, 142, 62, 142, 171, 142, 172, 142, 173, 142, 174, 142, 175, 142, 176, 142, 177, 142, 178, 142, 179, 142, 180, 142, 181, 142, 182, 142, 183, 142, 184, 142, 185, 142, 186, 142, 187, 142, 188, 143, 3, 143, 4, 143, 5, 143, 6, 143, 7, 143, 8, 143, 9, 143, 10, 143, 11, 143, 12, 143, 13, 143, 14, 143, 15, 143, 16, 143, 17, 143, 18, 143, 19, 143, 20, 143, 21, 143, 22, 143, 23, 143, 24, 143, 25, 143, 26, 143, 27, 143, 28, 143, 29, 143, 30, 143, 31, 143, 32, 143, 33, 143, 34, 143, 35, 143, 36, 143, 37, 143, 38, 143, 39, 143, 40, 143, 41, 143, 42, 143, 43, 143, 44, 143, 45, 143, 46, 143, 47, 143, 48, 143, 49, 143, 50, 143, 51, 143, 52, 143, 53, 143, 54, 143, 55, 143, 56, 143, 57, 143, 58, 143, 59, 143, 60, 143, 61, 143, 171, 143, 172, 143, 173, 143, 174, 143, 175, 143, 176, 143, 177, 143, 178, 143, 179, 143, 180, 143, 181, 143, 182, 143, 183, 143, 184, 143, 185, 143, 186, 143, 187, 143, 188, 144, 3, 144, 4, 144, 5, 144, 6, 144, 7, 144, 8, 144, 9, 144, 10, 144, 11, 144, 12, 144, 13, 144, 14, 144, 15, 144, 16, 144, 17, 144, 18, 144, 19, 144, 20, 144, 21, 144, 22, 144, 23, 144, 24, 144, 25, 144, 26, 144, 27, 144, 28, 144, 29, 144, 30, 144, 31, 144, 32, 144, 33, 144, 34, 144, 35, 144, 36, 144, 37, 144, 38, 144, 39, 144, 40, 144, 41, 144, 42, 144, 43, 144, 44, 144, 45, 144, 46, 144, 47, 144, 48, 144, 49, 144, 50, 144, 51, 144, 52, 144, 53, 144, 54, 144, 55, 144, 56, 144, 57, 144, 58, 144, 59, 144, 60, 144, 171, 144, 172, 144, 173, 144, 174, 144, 175, 144, 176, 144, 177, 144, 178, 144, 179, 144, 180, 144, 181, 144, 182, 144, 183, 144, 184, 144, 185, 144, 186, 144, 187, 144, 188, 145, 3, 145, 4, 145, 5, 145, 6, 145, 7, 145, 8, 145, 9, 145, 10, 145, 11, 145, 12, 145, 13, 145, 14, 145, 15, 145, 16, 145, 17, 145, 18, 145, 19, 145, 20, 145, 21, 145, 22, 145, 23, 145, 24, 145, 25, 145, 26, 145, 27, 145, 28, 145, 29, 145, 30, 145, 31, 145, 32, 145, 33, 145, 34, 145, 35, 145, 36, 145, 37, 145, 38, 145, 39, 145, 40, 145, 41, 145, 42, 145, 43, 145, 44, 145, 45, 145, 46, 145, 47, 145, 48, 145, 49, 145, 50, 145, 51, 145, 52, 145, 53, 145, 54, 145, 55, 145, 56, 145, 57, 145, 58, 145, 59, 145, 171, 145, 172, 145, 173, 145, 174, 145, 175, 145, 176, 145, 177, 145, 178, 145, 179, 145, 180, 145, 181, 145, 182, 145, 183, 145, 184, 145, 185, 145, 186, 145, 187, 145, 188, 146, 3, 146, 4, 146, 5, 146, 6, 146, 7, 146, 8, 146, 9, 146, 10, 146, 11, 146, 12, 146, 13, 146, 14, 146, 15, 146, 16, 146, 17, 146, 18, 146, 19, 146, 20, 146, 21, 146, 22, 146, 23, 146, 24, 146, 25, 146, 26, 146, 27, 146, 28, 146, 29, 146, 30, 146, 31, 146, 32, 146, 33, 146, 34, 146, 35, 146, 36, 146, 37, 146, 38, 146, 39, 146, 40, 146, 41, 146, 42, 146, 43, 146, 44, 146, 45, 146, 46, 146, 47, 146, 48, 146, 49, 146, 50, 146, 51, 146, 52, 146, 53, 146, 54, 146, 55, 146, 56, 146, 57, 146, 58, 146, 171, 146, 172, 146, 173, 146, 174, 146, 175, 146, 176, 146, 177, 146, 178, 146, 179, 146, 180, 146, 181, 146, 182, 146, 183, 146, 184, 146, 185, 146, 186, 146, 187, 146, 188, 147, 3, 147, 4, 147, 5, 147, 6, 147, 7, 147, 8, 147, 9, 147, 10, 147, 11, 147, 12, 147, 13, 147, 14, 147, 15, 147, 16, 147, 17, 147, 18, 147, 19, 147, 20, 147, 21, 147, 22, 147, 23, 147, 24, 147, 25, 147, 26, 147, 27, 147, 28, 147, 29, 147, 30, 147, 31, 147, 32, 147, 33, 147, 34, 147, 35, 147, 36, 147, 37, 147, 38, 147, 39, 147, 40, 147, 41, 147, 42, 147, 43, 147, 44, 147, 45, 147, 46, 147, 47, 147, 48, 147, 49, 147, 50, 147, 51, 147, 52, 147, 53, 147, 54, 147, 55, 147, 56, 147, 171, 147, 172, 147, 173, 147, 174, 147, 175, 147, 176, 147, 177, 147, 178, 147, 179, 147, 180, 147, 181, 147, 182, 147, 183, 147, 184, 147, 185, 147, 186, 147, 187, 147, 188, 148, 3, 148, 4, 148, 5, 148, 6, 148, 7, 148, 8, 148, 9, 148, 10, 148, 11, 148, 12, 148, 13, 148, 14, 148, 15, 148, 16, 148, 17, 148, 18, 148, 19, 148, 20, 148, 21, 148, 22, 148, 23, 148, 24, 148, 25, 148, 26, 148, 27, 148, 28, 148, 29, 148, 30, 148, 31, 148, 32, 148, 33, 148, 34, 148, 35, 148, 36, 148, 37, 148, 38, 148, 39, 148, 40, 148, 41, 148, 42, 148, 43, 148, 44, 148, 45, 148, 46, 148, 47, 148, 48, 148, 49, 148, 50, 148, 51, 148, 52, 148, 53, 148, 171, 148, 172, 148, 173, 148, 174, 148, 175, 148, 176, 148, 177, 148, 178, 148, 179, 148, 180, 148, 181, 148, 182, 148, 183, 148, 184, 148, 185, 148, 186, 148, 187, 148, 188, 149, 3, 149, 4, 149, 5, 149, 6, 149, 7, 149, 8, 149, 9, 149, 10, 149, 11, 149, 12, 149, 13, 149, 14, 149, 15, 149, 16, 149, 17, 149, 18, 149, 19, 149, 20, 149, 21, 149, 22, 149, 23, 149, 24, 149, 25, 149, 26, 149, 27, 149, 28, 149, 29, 149, 30, 149, 31, 149, 32, 149, 33, 149, 34, 149, 35, 149, 36, 149, 37, 149, 38, 149, 39, 149, 40, 149, 41, 149, 42, 149, 43, 149, 44, 149, 45, 149, 46, 149, 47, 149, 48, 149, 49, 149, 50, 149, 171, 149, 172, 149, 173, 149, 174, 149, 175, 149, 176, 149, 177, 149, 178, 149, 179, 149, 180, 149, 181, 149, 182, 149, 183, 149, 184, 149, 185, 149, 186, 149, 187, 149, 188, 150, 3, 150, 4, 150, 5, 150, 6, 150, 7, 150, 8, 150, 9, 150, 10, 150, 11, 150, 12, 150, 13, 150, 14, 150, 15, 150, 16, 150, 17, 150, 18, 150, 19, 150, 20, 150, 21, 150, 22, 150, 23, 150, 24, 150, 25, 150, 26, 150, 27, 150, 28, 150, 29, 150, 30, 150, 31, 150, 32, 150, 33, 150, 34, 150, 35, 150, 36, 150, 37, 150, 38, 150, 39, 150, 40, 150, 41, 150, 42, 150, 43, 150, 44, 150, 45, 150, 46, 150, 47, 150, 171, 150, 172, 150, 173, 150, 174, 150, 175, 150, 176, 150, 177, 150, 178, 150, 179, 150, 180, 150, 181, 150, 182, 150, 183, 150, 184, 150, 185, 150, 186, 150, 187, 150, 188, 151, 3, 151, 4, 151, 5, 151, 6, 151, 7, 151, 8, 151, 9, 151, 10, 151, 11, 151, 12, 151, 13, 151, 14, 151, 15, 151, 16, 151, 17, 151, 18, 151, 19, 151, 20, 151, 21, 151, 22, 151, 23, 151, 24, 151, 25, 151, 26, 151, 27, 151, 28, 151, 29, 151, 30, 151, 31, 151, 32, 151, 33, 151, 34, 151, 35, 151, 36, 151, 37, 151, 38, 151, 39, 151, 40, 151, 41, 151, 42, 151, 43, 151, 44, 151, 45, 151, 46, 151, 171, 151, 172, 151, 173, 151, 174, 151, 175, 151, 176, 151, 177, 151, 178, 151, 179, 151, 180, 151, 181, 151, 182, 151, 183, 151, 184, 151, 185, 151, 186, 151, 187, 151, 188, 152, 3, 152, 4, 152, 5, 152, 6, 152, 7, 152, 8, 152, 9, 152, 10, 152, 11, 152, 12, 152, 13, 152, 14, 152, 15, 152, 16, 152, 17, 152, 18, 152, 19, 152, 20, 152, 21, 152, 22, 152, 23, 152, 24, 152, 25, 152, 26, 152, 27, 152, 28, 152, 29, 152, 30, 152, 31, 152, 32, 152, 33, 152, 34, 152, 35, 152, 36, 152, 37, 152, 38, 152, 39, 152, 40, 152, 41, 152, 42, 152, 43, 152, 44, 152, 45, 152, 46, 152, 171, 152, 172, 152, 173, 152, 174, 152, 175, 152, 176, 152, 177, 152, 178, 152, 179, 152, 180, 152, 181, 152, 182, 152, 183, 152, 184, 152, 185, 152, 186, 152, 187, 152, 188, 153, 3, 153, 4, 153, 5, 153, 6, 153, 7, 153, 8, 153, 9, 153, 10, 153, 11, 153, 12, 153, 13, 153, 14, 153, 15, 153, 16, 153, 17, 153, 18, 153, 19, 153, 20, 153, 21, 153, 22, 153, 23, 153, 24, 153, 25, 153, 26, 153, 27, 153, 28, 153, 29, 153, 30, 153, 31, 153, 32, 153, 33, 153, 34, 153, 35, 153, 36, 153, 37, 153, 38, 153, 39, 153, 40, 153, 41, 153, 42, 153, 43, 153, 44, 153, 45, 153, 171, 153, 172, 153, 173, 153, 174, 153, 175, 153, 176, 153, 177, 153, 178, 153, 179, 153, 180, 153, 181, 153, 182, 153, 183, 153, 184, 153, 185, 153, 186, 153, 187, 153, 188, 154, 3, 154, 4, 154, 5, 154, 6, 154, 7, 154, 8, 154, 9, 154, 10, 154, 11, 154, 12, 154, 13, 154, 14, 154, 15, 154, 16, 154, 17, 154, 18, 154, 19, 154, 20, 154, 21, 154, 22, 154, 23, 154, 24, 154, 25, 154, 26, 154, 27, 154, 28, 154, 29, 154, 30, 154, 31, 154, 32, 154, 33, 154, 34, 154, 35, 154, 36, 154, 37, 154, 38, 154, 39, 154, 40, 154, 41, 154, 42, 154, 43, 154, 44, 154, 45, 154, 171, 154, 172, 154, 173, 154, 174, 154, 175, 154, 176, 154, 177, 154, 178, 154, 179, 154, 180, 154, 181, 154, 182, 154, 183, 154, 184, 154, 185, 154, 186, 154, 187, 154, 188, 155, 3, 155, 4, 155, 5, 155, 6, 155, 7, 155, 8, 155, 9, 155, 10, 155, 11, 155, 12, 155, 13, 155, 14, 155, 15, 155, 16, 155, 17, 155, 18, 155, 19, 155, 20, 155, 21, 155, 22, 155, 23, 155, 24, 155, 25, 155, 26, 155, 27, 155, 28, 155, 29, 155, 30, 155, 31, 155, 32, 155, 33, 155, 34, 155, 35, 155, 36, 155, 37, 155, 38, 155, 39, 155, 40, 155, 41, 155, 42, 155, 43, 155, 44, 155, 45, 155, 171, 155, 172, 155, 173, 155, 174, 155, 175, 155, 176, 155, 177, 155, 178, 155, 179, 155, 180, 155, 181, 155, 182, 155, 183, 155, 184, 155, 185, 155, 186, 155, 187, 155, 188, 156, 3, 156, 4, 156, 5, 156, 6, 156, 7, 156, 8, 156, 9, 156, 10, 156, 11, 156, 12, 156, 13, 156, 14, 156, 15, 156, 16, 156, 17, 156, 18, 156, 19, 156, 20, 156, 21, 156, 22, 156, 23, 156, 24, 156, 25, 156, 26, 156, 27, 156, 28, 156, 29, 156, 30, 156, 31, 156, 32, 156, 33, 156, 34, 156, 35, 156, 36, 156, 37, 156, 38, 156, 39, 156, 40, 156, 41, 156, 42, 156, 43, 156, 44, 156, 45, 156, 171, 156, 172, 156, 173, 156, 174, 156, 175, 156, 176, 156, 177, 156, 178, 156, 179, 156, 180, 156, 181, 156, 182, 156, 183, 156, 184, 156, 185, 156, 186, 156, 187, 156, 188, 157, 3, 157, 4, 157, 5, 157, 6, 157, 7, 157, 8, 157, 9, 157, 10, 157, 11, 157, 12, 157, 13, 157, 14, 157, 15, 157, 16, 157, 17, 157, 18, 157, 19, 157, 20, 157, 21, 157, 22, 157, 23, 157, 24, 157, 25, 157, 26, 157, 27, 157, 28, 157, 29, 157, 30, 157, 31, 157, 32, 157, 33, 157, 34, 157, 35, 157, 36, 157, 37, 157, 38, 157, 39, 157, 40, 157, 41, 157, 42, 157, 43, 157, 44, 157, 171, 157, 172, 157, 173, 157, 174, 157, 175, 157, 176, 157, 177, 157, 178, 157, 179, 157, 180, 157, 181, 157, 182, 157, 183, 157, 184, 157, 185, 157, 186, 157, 187, 157, 188, 158, 3, 158, 4, 158, 5, 158, 6, 158, 7, 158, 8, 158, 9, 158, 10, 158, 11, 158, 12, 158, 13, 158, 14, 158, 15, 158, 16, 158, 17, 158, 18, 158, 19, 158, 20, 158, 21, 158, 22, 158, 23, 158, 24, 158, 25, 158, 26, 158, 27, 158, 28, 158, 29, 158, 30, 158, 31, 158, 32, 158, 33, 158, 34, 158, 35, 158, 36, 158, 37, 158, 38, 158, 39, 158, 40, 158, 41, 158, 42, 158, 43, 158, 44, 158, 171, 158, 172, 158, 173, 158, 174, 158, 175, 158, 176, 158, 177, 158, 178, 158, 179, 158, 180, 158, 181, 158, 182, 158, 183, 158, 184, 158, 185, 158, 186, 158, 187, 158, 188, 159, 3, 159, 4, 159, 5, 159, 6, 159, 7, 159, 8, 159, 9, 159, 10, 159, 11, 159, 12, 159, 13, 159, 14, 159, 15, 159, 16, 159, 17, 159, 18, 159, 19, 159, 20, 159, 21, 159, 22, 159, 23, 159, 24, 159, 25, 159, 26, 159, 27, 159, 28, 159, 29, 159, 30, 159, 31, 159, 32, 159, 33, 159, 34, 159, 35, 159, 36, 159, 37, 159, 38, 159, 39, 159, 40, 159, 41, 159, 42, 159, 43, 159, 44, 159, 171, 159, 172, 159, 173, 159, 174, 159, 175, 159, 176, 159, 177, 159, 178, 159, 179, 159, 180, 159, 181, 159, 182, 159, 183, 159, 184, 159, 185, 159, 186, 159, 187, 159, 188, 160, 3, 160, 4, 160, 5, 160, 6, 160, 7, 160, 8, 160, 9, 160, 10, 160, 11, 160, 12, 160, 13, 160, 14, 160, 15, 160, 16, 160, 17, 160, 18, 160, 19, 160, 20, 160, 21, 160, 22, 160, 23, 160, 24, 160, 25, 160, 26, 160, 27, 160, 28, 160, 29, 160, 30, 160, 31, 160, 32, 160, 33, 160, 34, 160, 35, 160, 36, 160, 37, 160, 38, 160, 39, 160, 40, 160, 41, 160, 42, 160, 43, 160, 44, 160, 45, 160, 171, 160, 172, 160, 173, 160, 174, 160, 175, 160, 176, 160, 177, 160, 178, 160, 179, 160, 180, 160, 181, 160, 182, 160, 183, 160, 184, 160, 185, 160, 186, 160, 187, 160, 188, 161, 3, 161, 4, 161, 5, 161, 6, 161, 7, 161, 8, 161, 9, 161, 10, 161, 11, 161, 12, 161, 13, 161, 14, 161, 15, 161, 16, 161, 17, 161, 18, 161, 19, 161, 20, 161, 21, 161, 22, 161, 23, 161, 24, 161, 25, 161, 26, 161, 27, 161, 28, 161, 29, 161, 30, 161, 31, 161, 32, 161, 33, 161, 34, 161, 35, 161, 36, 161, 37, 161, 38, 161, 39, 161, 40, 161, 41, 161, 42, 161, 43, 161, 44, 161, 45, 161, 171, 161, 172, 161, 173, 161, 174, 161, 175, 161, 176, 161, 177, 161, 178, 161, 179, 161, 180, 161, 181, 161, 182, 161, 183, 161, 184, 161, 185, 161, 186, 161, 187, 161, 188, 162, 3, 162, 4, 162, 5, 162, 6, 162, 7, 162, 8, 162, 9, 162, 10, 162, 11, 162, 12, 162, 13, 162, 14, 162, 15, 162, 16, 162, 17, 162, 18, 162, 19, 162, 20, 162, 21, 162, 22, 162, 23, 162, 24, 162, 25, 162, 26, 162, 27, 162, 28, 162, 29, 162, 30, 162, 31, 162, 32, 162, 33, 162, 34, 162, 35, 162, 36, 162, 37, 162, 38, 162, 39, 162, 40, 162, 41, 162, 42, 162, 43, 162, 44, 162, 45, 162, 171, 162, 172, 162, 173, 162, 174, 162, 175, 162, 176, 162, 177, 162, 178, 162, 179, 162, 180, 162, 181, 162, 182, 162, 183, 162, 184, 162, 185, 162, 186, 162, 187, 162, 188, 163, 3, 163, 4, 163, 5, 163, 6, 163, 7, 163, 8, 163, 9, 163, 10, 163, 11, 163, 12, 163, 13, 163, 14, 163, 15, 163, 16, 163, 17, 163, 18, 163, 19, 163, 20, 163, 21, 163, 22, 163, 23, 163, 24, 163, 25, 163, 26, 163, 27, 163, 28, 163, 29, 163, 30, 163, 31, 163, 32, 163, 33, 163, 34, 163, 35, 163, 36, 163, 37, 163, 38, 163, 39, 163, 40, 163, 41, 163, 42, 163, 43, 163, 44, 163, 45, 163, 171, 163, 172, 163, 173, 163, 174, 163, 175, 163, 176, 163, 177, 163, 178, 163, 179, 163, 180, 163, 181, 163, 182, 163, 183, 163, 184, 163, 185, 163, 186, 163, 187, 163, 188, 164, 3, 164, 4, 164, 5, 164, 6, 164, 7, 164, 8, 164, 9, 164, 10, 164, 11, 164, 12, 164, 13, 164, 14, 164, 15, 164, 16, 164, 17, 164, 18, 164, 19, 164, 20, 164, 21, 164, 22, 164, 23, 164, 24, 164, 25, 164, 26, 164, 27, 164, 28, 164, 29, 164, 30, 164, 31, 164, 32, 164, 33, 164, 34, 164, 35, 164, 36, 164, 37, 164, 38, 164, 39, 164, 40, 164, 41, 164, 42, 164, 43, 164, 44, 164, 45, 164, 171, 164, 172, 164, 173, 164, 174, 164, 175, 164, 176, 164, 177, 164, 178, 164, 179, 164, 180, 164, 181, 164, 182, 164, 183, 164, 184, 164, 185, 164, 186, 164, 187, 164, 188, 165, 3, 165, 4, 165, 5, 165, 6, 165, 7, 165, 8, 165, 9, 165, 10, 165, 11, 165, 12, 165, 13, 165, 14, 165, 15, 165, 16, 165, 17, 165, 18, 165, 19, 165, 20, 165, 21, 165, 22, 165, 23, 165, 24, 165, 25, 165, 26, 165, 27, 165, 28, 165, 29, 165, 30, 165, 31, 165, 32, 165, 33, 165, 34, 165, 35, 165, 36, 165, 37, 165, 38, 165, 39, 165, 40, 165, 41, 165, 42, 165, 43, 165, 44, 165, 45, 165, 171, 165, 172, 165, 173, 165, 174, 165, 175, 165, 176, 165, 177, 165, 178, 165, 179, 165, 180, 165, 181, 165, 182, 165, 183, 165, 184, 165, 185, 165, 186, 165, 187, 165, 188, 166, 3, 166, 4, 166, 5, 166, 6, 166, 7, 166, 8, 166, 9, 166, 10, 166, 11, 166, 12, 166, 13, 166, 14, 166, 15, 166, 16, 166, 17, 166, 18, 166, 19, 166, 20, 166, 21, 166, 22, 166, 23, 166, 24, 166, 25, 166, 26, 166, 27, 166, 28, 166, 29, 166, 30, 166, 31, 166, 32, 166, 33, 166, 34, 166, 35, 166, 36, 166, 37, 166, 38, 166, 39, 166, 40, 166, 41, 166, 42, 166, 43, 166, 44, 166, 45, 166, 171, 166, 172, 166, 173, 166, 174, 166, 175, 166, 176, 166, 177, 166, 178, 166, 179, 166, 180, 166, 181, 166, 182, 166, 183, 166, 184, 166, 185, 166, 186, 166, 187, 166, 188, 167, 3, 167, 4, 167, 5, 167, 6, 167, 7, 167, 8, 167, 9, 167, 10, 167, 11, 167, 12, 167, 13, 167, 14, 167, 15, 167, 16, 167, 17, 167, 18, 167, 19, 167, 20, 167, 21, 167, 22, 167, 23, 167, 24, 167, 25, 167, 26, 167, 27, 167, 28, 167, 29, 167, 30, 167, 31, 167, 32, 167, 33, 167, 34, 167, 35, 167, 36, 167, 37, 167, 38, 167, 39, 167, 40, 167, 41, 167, 42, 167, 43, 167, 44, 167, 45, 167, 46, 167, 171, 167, 172, 167, 173, 167, 174, 167, 175, 167, 176, 167, 177, 167, 178, 167, 179, 167, 180, 167, 181, 167, 182, 167, 183, 167, 184, 167, 185, 167, 186, 167, 187, 167, 188, 168, 3, 168, 4, 168, 5, 168, 6, 168, 7, 168, 8, 168, 9, 168, 10, 168, 11, 168, 12, 168, 13, 168, 14, 168, 15, 168, 16, 168, 17, 168, 18, 168, 19, 168, 20, 168, 21, 168, 22, 168, 23, 168, 24, 168, 25, 168, 26, 168, 27, 168, 28, 168, 29, 168, 30, 168, 31, 168, 32, 168, 33, 168, 34, 168, 35, 168, 36, 168, 37, 168, 38, 168, 39, 168, 40, 168, 41, 168, 42, 168, 43, 168, 44, 168, 45, 168, 46, 168, 47, 168, 171, 168, 172, 168, 173, 168, 174, 168, 175, 168, 176, 168, 177, 168, 178, 168, 179, 168, 180, 168, 181, 168, 182, 168, 183, 168, 184, 168, 185, 168, 186, 168, 187, 168, 188, 169, 3, 169, 4, 169, 5, 169, 6, 169, 7, 169, 8, 169, 9, 169, 10, 169, 11, 169, 12, 169, 13, 169, 14, 169, 15, 169, 16, 169, 17, 169, 18, 169, 19, 169, 20, 169, 21, 169, 22, 169, 23, 169, 24, 169, 25, 169, 26, 169, 27, 169, 28, 169, 29, 169, 30, 169, 31, 169, 32, 169, 33, 169, 34, 169, 35, 169, 36, 169, 37, 169, 38, 169, 39, 169, 40, 169, 41, 169, 42, 169, 43, 169, 44, 169, 45, 169, 46, 169, 47, 169, 48, 169, 171, 169, 172, 169, 173, 169, 174, 169, 175, 169, 176, 169, 177, 169, 178, 169, 179, 169, 180, 169, 181, 169, 182, 169, 183, 169, 184, 169, 185, 169, 186, 169, 187, 169, 188, 170, 3, 170, 4, 170, 5, 170, 6, 170, 7, 170, 8, 170, 9, 170, 10, 170, 11, 170, 12, 170, 13, 170, 14, 170, 15, 170, 16, 170, 17, 170, 18, 170, 19, 170, 20, 170, 21, 170, 22, 170, 23, 170, 24, 170, 25, 170, 26, 170, 27, 170, 28, 170, 29, 170, 30, 170, 31, 170, 32, 170, 33, 170, 34, 170, 35, 170, 36, 170, 37, 170, 38, 170, 39, 170, 40, 170, 41, 170, 42, 170, 43, 170, 44, 170, 45, 170, 46, 170, 47, 170, 48, 170, 171, 170, 172, 170, 173, 170, 174, 170, 175, 170, 176, 170, 177, 170, 178, 170, 179, 170, 180, 170, 181, 170, 182, 170, 183, 170, 184, 170, 185, 170, 186, 170, 187, 170, 188, 171, 3, 171, 4, 171, 5, 171, 6, 171, 7, 171, 8, 171, 9, 171, 10, 171, 11, 171, 12, 171, 13, 171, 14, 171, 15, 171, 16, 171, 17, 171, 18, 171, 19, 171, 20, 171, 21, 171, 22, 171, 23, 171, 24, 171, 25, 171, 26, 171, 27, 171, 28, 171, 29, 171, 30, 171, 31, 171, 32, 171, 33, 171, 34, 171, 35, 171, 36, 171, 37, 171, 38, 171, 39, 171, 40, 171, 41, 171, 42, 171, 43, 171, 44, 171, 45, 171, 46, 171, 47, 171, 48, 171, 49, 171, 171, 171, 172, 171, 173, 171, 174, 171, 175, 171, 176, 171, 177, 171, 178, 171, 179, 171, 180, 171, 181, 171, 182, 171, 183, 171, 184, 171, 185, 171, 186, 171, 187, 171, 188, 172, 3, 172, 4, 172, 5, 172, 6, 172, 7, 172, 8, 172, 9, 172, 10, 172, 11, 172, 12, 172, 13, 172, 14, 172, 15, 172, 16, 172, 17, 172, 18, 172, 19, 172, 20, 172, 21, 172, 22, 172, 23, 172, 24, 172, 25, 172, 26, 172, 27, 172, 28, 172, 29, 172, 30, 172, 31, 172, 32, 172, 33, 172, 34, 172, 35, 172, 36, 172, 37, 172, 38, 172, 39, 172, 40, 172, 41, 172, 42, 172, 43, 172, 44, 172, 45, 172, 46, 172, 47, 172, 48, 172, 49, 172, 50, 172, 171, 172, 172, 172, 173, 172, 174, 172, 175, 172, 176, 172, 177, 172, 178, 172, 179, 172, 180, 172, 181, 172, 182, 172, 183, 172, 184, 172, 185, 172, 186, 172, 187, 172, 188, 173, 3, 173, 4, 173, 5, 173, 6, 173, 7, 173, 8, 173, 9, 173, 10, 173, 11, 173, 12, 173, 13, 173, 14, 173, 15, 173, 16, 173, 17, 173, 18, 173, 19, 173, 20, 173, 21, 173, 22, 173, 23, 173, 24, 173, 25, 173, 26, 173, 27, 173, 28, 173, 29, 173, 30, 173, 31, 173, 32, 173, 33, 173, 34, 173, 35, 173, 36, 173, 37, 173, 38, 173, 39, 173, 40, 173, 41, 173, 42, 173, 43, 173, 44, 173, 45, 173, 46, 173, 47, 173, 48, 173, 49, 173, 50, 173, 51, 173, 171, 173, 172, 173, 173, 173, 174, 173, 175, 173, 176, 173, 177, 173, 178, 173, 179, 173, 180, 173, 181, 173, 182, 173, 183, 173, 184, 173, 185, 173, 186, 173, 187, 173, 188, 174, 3, 174, 4, 174, 5, 174, 6, 174, 7, 174, 8, 174, 9, 174, 10, 174, 11, 174, 12, 174, 13, 174, 14, 174, 15, 174, 16, 174, 17, 174, 18, 174, 19, 174, 20, 174, 21, 174, 22, 174, 23, 174, 24, 174, 25, 174, 26, 174, 27, 174, 28, 174, 29, 174, 30, 174, 31, 174, 32, 174, 33, 174, 34, 174, 35, 174, 36, 174, 37, 174, 38, 174, 39, 174, 40, 174, 41, 174, 42, 174, 43, 174, 44, 174, 45, 174, 46, 174, 47, 174, 48, 174, 49, 174, 50, 174, 51, 174, 52, 174, 171, 174, 172, 174, 173, 174, 174, 174, 175, 174, 176, 174, 177, 174, 178, 174, 179, 174, 180, 174, 181, 174, 182, 174, 183, 174, 184, 174, 185, 174, 186, 174, 187, 174, 188, 175, 3, 175, 4, 175, 5, 175, 6, 175, 7, 175, 8, 175, 9, 175, 10, 175, 11, 175, 12, 175, 13, 175, 14, 175, 15, 175, 16, 175, 17, 175, 18, 175, 19, 175, 20, 175, 21, 175, 22, 175, 23, 175, 24, 175, 25, 175, 26, 175, 27, 175, 28, 175, 29, 175, 30, 175, 31, 175, 32, 175, 33, 175, 34, 175, 35, 175, 36, 175, 37, 175, 38, 175, 39, 175, 40, 175, 41, 175, 42, 175, 43, 175, 44, 175, 45, 175, 46, 175, 47, 175, 48, 175, 49, 175, 50, 175, 51, 175, 52, 175, 171, 175, 172, 175, 173, 175, 174, 175, 175, 175, 176, 175, 177, 175, 178, 175, 179, 175, 180, 175, 181, 175, 182, 175, 183, 175, 184, 175, 185, 175, 186, 175, 187, 175, 188, 176, 3, 176, 4, 176, 5, 176, 6, 176, 7, 176, 8, 176, 9, 176, 10, 176, 11, 176, 12, 176, 13, 176, 14, 176, 15, 176, 16, 176, 17, 176, 18, 176, 19, 176, 20, 176, 21, 176, 22, 176, 23, 176, 24, 176, 25, 176, 26, 176, 27, 176, 28, 176, 29, 176, 30, 176, 31, 176, 32, 176, 33, 176, 34, 176, 35, 176, 36, 176, 37, 176, 38, 176, 39, 176, 40, 176, 41, 176, 42, 176, 43, 176, 44, 176, 45, 176, 46, 176, 47, 176, 48, 176, 49, 176, 50, 176, 51, 176, 52, 176, 53, 176, 171, 176, 172, 176, 173, 176, 174, 176, 175, 176, 176, 176, 177, 176, 178, 176, 179, 176, 180, 176, 181, 176, 182, 176, 183, 176, 184, 176, 185, 176, 186, 176, 187, 176, 188, 177, 3, 177, 4, 177, 5, 177, 6, 177, 7, 177, 8, 177, 9, 177, 10, 177, 11, 177, 12, 177, 13, 177, 14, 177, 15, 177, 16, 177, 17, 177, 18, 177, 19, 177, 20, 177, 21, 177, 22, 177, 23, 177, 24, 177, 25, 177, 26, 177, 27, 177, 28, 177, 29, 177, 30, 177, 31, 177, 32, 177, 33, 177, 34, 177, 35, 177, 36, 177, 37, 177, 38, 177, 39, 177, 40, 177, 41, 177, 42, 177, 43, 177, 44, 177, 45, 177, 46, 177, 47, 177, 48, 177, 49, 177, 50, 177, 51, 177, 52, 177, 53, 177, 54, 177, 171, 177, 172, 177, 173, 177, 174, 177, 175, 177, 176, 177, 177, 177, 178, 177, 179, 177, 180, 177, 181, 177, 182, 177, 183, 177, 184, 177, 185, 177, 186, 177, 187, 177, 188, 178, 3, 178, 4, 178, 5, 178, 6, 178, 7, 178, 8, 178, 9, 178, 10, 178, 11, 178, 12, 178, 13, 178, 14, 178, 15, 178, 16, 178, 17, 178, 18, 178, 19, 178, 20, 178, 21, 178, 22, 178, 23, 178, 24, 178, 25, 178, 26, 178, 27, 178, 28, 178, 29, 178, 30, 178, 31, 178, 32, 178, 33, 178, 34, 178, 35, 178, 36, 178, 37, 178, 38, 178, 39, 178, 40, 178, 41, 178, 42, 178, 43, 178, 44, 178, 45, 178, 46, 178, 47, 178, 48, 178, 49, 178, 50, 178, 51, 178, 52, 178, 53, 178, 54, 178, 171, 178, 172, 178, 173, 178, 174, 178, 175, 178, 176, 178, 177, 178, 178, 178, 179, 178, 180, 178, 181, 178, 182, 178, 183, 178, 184, 178, 185, 178, 186, 178, 187, 178, 188, 179, 3, 179, 4, 179, 5, 179, 6, 179, 7, 179, 8, 179, 9, 179, 10, 179, 11, 179, 12, 179, 13, 179, 14, 179, 15, 179, 16, 179, 17, 179, 18, 179, 19, 179, 20, 179, 21, 179, 22, 179, 23, 179, 24, 179, 25, 179, 26, 179, 27, 179, 28, 179, 29, 179, 30, 179, 31, 179, 32, 179, 33, 179, 34, 179, 35, 179, 36, 179, 37, 179, 38, 179, 39, 179, 40, 179, 41, 179, 42, 179, 43, 179, 44, 179, 45, 179, 46, 179, 47, 179, 48, 179, 49, 179, 50, 179, 51, 179, 52, 179, 53, 179, 54, 179, 171, 179, 172, 179, 173, 179, 174, 179, 175, 179, 176, 179, 177, 179, 178, 179, 179, 179, 180, 179, 181, 179, 182, 179, 183, 179, 184, 179, 185, 179, 186, 179, 187, 179, 188, 180, 3, 180, 4, 180, 5, 180, 6, 180, 7, 180, 8, 180, 9, 180, 10, 180, 11, 180, 12, 180, 13, 180, 14, 180, 15, 180, 16, 180, 17, 180, 18, 180, 19, 180, 20, 180, 21, 180, 22, 180, 23, 180, 24, 180, 25, 180, 26, 180, 27, 180, 28, 180, 29, 180, 30, 180, 31, 180, 32, 180, 33, 180, 34, 180, 35, 180, 36, 180, 37, 180, 38, 180, 39, 180, 40, 180, 41, 180, 42, 180, 43, 180, 44, 180, 45, 180, 46, 180, 47, 180, 48, 180, 49, 180, 50, 180, 51, 180, 52, 180, 53, 180, 54, 180, 171, 180, 172, 180, 173, 180, 174, 180, 175, 180, 176, 180, 177, 180, 178, 180, 179, 180, 180, 180, 181, 180, 182, 180, 183, 180, 184, 180, 185, 180, 186, 180, 187, 180, 188, 181, 3, 181, 4, 181, 5, 181, 6, 181, 7, 181, 8, 181, 9, 181, 10, 181, 11, 181, 12, 181, 13, 181, 14, 181, 15, 181, 16, 181, 17, 181, 18, 181, 19, 181, 20, 181, 21, 181, 22, 181, 23, 181, 24, 181, 25, 181, 26, 181, 27, 181, 28, 181, 29, 181, 30, 181, 31, 181, 32, 181, 33, 181, 34, 181, 35, 181, 36, 181, 37, 181, 38, 181, 39, 181, 40, 181, 41, 181, 42, 181, 43, 181, 44, 181, 45, 181, 46, 181, 47, 181, 48, 181, 49, 181, 50, 181, 51, 181, 52, 181, 53, 181, 54, 181, 171, 181, 172, 181, 173, 181, 174, 181, 175, 181, 176, 181, 177, 181, 178, 181, 179, 181, 180, 181, 181, 181, 182, 181, 183, 181, 184, 181, 185, 181, 186, 181, 187, 181, 188, 182, 3, 182, 4, 182, 5, 182, 6, 182, 7, 182, 8, 182, 9, 182, 10, 182, 11, 182, 12, 182, 13, 182, 14, 182, 15, 182, 16, 182, 17, 182, 18, 182, 19, 182, 20, 182, 21, 182, 22, 182, 23, 182, 24, 182, 25, 182, 26, 182, 27, 182, 28, 182, 29, 182, 30, 182, 31, 182, 32, 182, 33, 182, 34, 182, 35, 182, 36, 182, 37, 182, 38, 182, 39, 182, 40, 182, 41, 182, 42, 182, 43, 182, 44, 182, 45, 182, 46, 182, 47, 182, 48, 182, 49, 182, 50, 182, 51, 182, 52, 182, 53, 182, 54, 182, 171, 182, 172, 182, 173, 182, 174, 182, 175, 182, 176, 182, 177, 182, 178, 182, 179, 182, 180, 182, 181, 182, 182, 182, 183, 182, 184, 182, 185, 182, 186, 182, 187, 182, 188, 183, 3, 183, 4, 183, 5, 183, 6, 183, 7, 183, 8, 183, 9, 183, 10, 183, 11, 183, 12, 183, 13, 183, 14, 183, 15, 183, 16, 183, 17, 183, 18, 183, 19, 183, 20, 183, 21, 183, 22, 183, 23, 183, 24, 183, 25, 183, 26, 183, 27, 183, 28, 183, 29, 183, 30, 183, 31, 183, 32, 183, 33, 183, 34, 183, 35, 183, 36, 183, 37, 183, 38, 183, 39, 183, 40, 183, 41, 183, 42, 183, 43, 183, 44, 183, 45, 183, 46, 183, 47, 183, 48, 183, 49, 183, 50, 183, 51, 183, 52, 183, 53, 183, 54, 183, 171, 183, 172, 183, 173, 183, 174, 183, 175, 183, 176, 183, 177, 183, 178, 183, 179, 183, 180, 183, 181, 183, 182, 183, 183, 183, 184, 183, 185, 183, 186, 183, 187, 183, 188, 184, 3, 184, 4, 184, 5, 184, 6, 184, 7, 184, 8, 184, 9, 184, 10, 184, 11, 184, 12, 184, 13, 184, 14, 184, 15, 184, 16, 184, 17, 184, 18, 184, 19, 184, 20, 184, 21, 184, 22, 184, 23, 184, 24, 184, 25, 184, 26, 184, 27, 184, 28, 184, 29, 184, 30, 184, 31, 184, 32, 184, 33, 184, 34, 184, 35, 184, 36, 184, 37, 184, 38, 184, 39, 184, 40, 184, 41, 184, 42, 184, 43, 184, 44, 184, 45, 184, 46, 184, 47, 184, 48, 184, 49, 184, 50, 184, 51, 184, 52, 184, 53, 184, 54, 184, 171, 184, 172, 184, 173, 184, 174, 184, 175, 184, 176, 184, 177, 184, 178, 184, 179, 184, 180, 184, 181, 184, 182, 184, 183, 184, 184, 184, 185, 184, 186, 184, 187, 184, 188, 185, 3, 185, 4, 185, 5, 185, 6, 185, 7, 185, 8, 185, 9, 185, 10, 185, 11, 185, 12, 185, 13, 185, 14, 185, 15, 185, 16, 185, 17, 185, 18, 185, 19, 185, 20, 185, 21, 185, 22, 185, 23, 185, 24, 185, 25, 185, 26, 185, 27, 185, 28, 185, 29, 185, 30, 185, 31, 185, 32, 185, 33, 185, 34, 185, 35, 185, 36, 185, 37, 185, 38, 185, 39, 185, 40, 185, 41, 185, 42, 185, 43, 185, 44, 185, 45, 185, 46, 185, 47, 185, 48, 185, 49, 185, 50, 185, 51, 185, 52, 185, 53, 185, 54, 185, 171, 185, 172, 185, 173, 185, 174, 185, 175, 185, 176, 185, 177, 185, 178, 185, 179, 185, 180, 185, 181, 185, 182, 185, 183, 185, 184, 185, 185, 185, 186, 185, 187, 185, 188, 186, 3, 186, 4, 186, 5, 186, 6, 186, 7, 186, 8, 186, 9, 186, 10, 186, 11, 186, 12, 186, 13, 186, 14, 186, 15, 186, 16, 186, 17, 186, 18, 186, 19, 186, 20, 186, 21, 186, 22, 186, 23, 186, 24, 186, 25, 186, 26, 186, 27, 186, 28, 186, 29, 186, 30, 186, 31, 186, 32, 186, 33, 186, 34, 186, 35, 186, 36, 186, 37, 186, 38, 186, 39, 186, 40, 186, 41, 186, 42, 186, 43, 186, 44, 186, 45, 186, 46, 186, 47, 186, 48, 186, 49, 186, 50, 186, 51, 186, 52, 186, 53, 186, 54, 186, 171, 186, 172, 186, 173, 186, 174, 186, 175, 186, 176, 186, 177, 186, 178, 186, 179, 186, 180, 186, 181, 186, 182, 186, 183, 186, 184, 186, 185, 186, 186, 186, 187, 186, 188, 187, 3, 187, 4, 187, 5, 187, 6, 187, 7, 187, 8, 187, 9, 187, 10, 187, 11, 187, 12, 187, 13, 187, 14, 187, 15, 187, 16, 187, 17, 187, 18, 187, 19, 187, 20, 187, 21, 187, 22, 187, 23, 187, 24, 187, 25, 187, 26, 187, 27, 187, 28, 187, 29, 187, 30, 187, 31, 187, 32, 187, 33, 187, 34, 187, 35, 187, 36, 187, 37, 187, 38, 187, 39, 187, 40, 187, 41, 187, 42, 187, 43, 187, 44, 187, 45, 187, 46, 187, 47, 187, 48, 187, 49, 187, 50, 187, 51, 187, 52, 187, 53, 187, 54, 187, 171, 187, 172, 187, 173, 187, 174, 187, 175, 187, 176, 187, 177, 187, 178, 187, 179, 187, 180, 187, 181, 187, 182, 187, 183, 187, 184, 187, 185, 187, 186, 187, 187, 187, 188, 188, 3, 188, 4, 188, 5, 188, 6, 188, 7, 188, 8, 188, 9, 188, 10, 188, 11, 188, 12, 188, 13, 188, 14, 188, 15, 188, 16, 188, 17, 188, 18, 188, 19, 188, 20, 188, 21, 188, 22, 188, 23, 188, 24, 188, 25, 188, 26, 188, 27, 188, 28, 188, 29, 188, 30, 188, 31, 188, 32, 188, 33, 188, 34, 188, 35, 188, 36, 188, 37, 188, 38, 188, 39, 188, 40, 188, 41, 188, 42, 188, 43, 188, 44, 188, 45, 188, 46, 188, 47, 188, 48, 188, 49, 188, 50, 188, 51, 188, 52, 188, 53, 188, 54, 188, 171, 188, 172, 188, 173, 188, 174, 188, 175, 188, 176, 188, 177, 188, 178, 188, 179, 188, 180, 188, 181, 188, 182, 188, 183, 188, 184, 188, 185, 188, 186, 188, 187, 188, 188, 189, 3, 189, 4, 189, 5, 189, 6, 189, 7, 189, 8, 189, 9, 189, 10, 189, 11, 189, 12, 189, 13, 189, 14, 189, 15, 189, 16, 189, 17, 189, 18, 189, 19, 189, 20, 189, 21, 189, 22, 189, 23, 189, 24, 189, 25, 189, 26, 189, 27, 189, 28, 189, 29, 189, 30, 189, 31, 189, 32, 189, 33, 189, 34, 189, 35, 189, 36, 189, 37, 189, 38, 189, 39, 189, 40, 189, 41, 189, 42, 189, 43, 189, 44, 189, 45, 189, 46, 189, 47, 189, 48, 189, 49, 189, 50, 189, 51, 189, 52, 189, 53, 189, 54, 189, 55, 189, 171, 189, 172, 189, 173, 189, 174, 189, 175, 189, 176, 189, 177, 189, 178, 189, 179, 189, 180, 189, 181, 189, 182, 189, 183, 189, 184, 189, 185, 189, 186, 189, 187, 189, 188, 190, 3, 190, 4, 190, 5, 190, 6, 190, 7, 190, 8, 190, 9, 190, 10, 190, 11, 190, 12, 190, 13, 190, 14, 190, 15, 190, 16, 190, 17, 190, 18, 190, 19, 190, 20, 190, 21, 190, 22, 190, 23, 190, 24, 190, 25, 190, 26, 190, 27, 190, 28, 190, 29, 190, 30, 190, 31, 190, 32, 190, 33, 190, 34, 190, 35, 190, 36, 190, 37, 190, 38, 190, 39, 190, 40, 190, 41, 190, 42, 190, 43, 190, 44, 190, 45, 190, 46, 190, 47, 190, 48, 190, 49, 190, 50, 190, 51, 190, 52, 190, 53, 190, 54, 190, 55, 190, 171, 190, 172, 190, 173, 190, 174, 190, 175, 190, 176, 190, 177, 190, 178, 190, 179, 190, 180, 190, 181, 190, 182, 190, 183, 190, 184, 190, 185, 190, 186, 190, 187, 190, 188, 191, 3, 191, 4, 191, 5, 191, 6, 191, 7, 191, 8, 191, 9, 191, 10, 191, 11, 191, 12, 191, 13, 191, 14, 191, 15, 191, 16, 191, 17, 191, 18, 191, 19, 191, 20, 191, 21, 191, 22, 191, 23, 191, 24, 191, 25, 191, 26, 191, 27, 191, 28, 191, 29, 191, 30, 191, 31, 191, 32, 191, 33, 191, 34, 191, 35, 191, 36, 191, 37, 191, 38, 191, 39, 191, 40, 191, 41, 191, 42, 191, 43, 191, 44, 191, 45, 191, 46, 191, 47, 191, 48, 191, 49, 191, 50, 191, 51, 191, 52, 191, 53, 191, 54, 191, 55, 191, 171, 191, 172, 191, 173, 191, 174, 191, 175, 191, 176, 191, 177, 191, 178, 191, 179, 191, 180, 191, 181, 191, 182, 191, 183, 191, 184, 191, 185, 191, 186, 191, 187, 191, 188, 192, 3, 192, 4, 192, 5, 192, 6, 192, 7, 192, 8, 192, 9, 192, 10, 192, 11, 192, 12, 192, 13, 192, 14, 192, 15, 192, 16, 192, 17, 192, 18, 192, 19, 192, 20, 192, 21, 192, 22, 192, 23, 192, 24, 192, 25, 192, 26, 192, 27, 192, 28, 192, 29, 192, 30, 192, 31, 192, 32, 192, 33, 192, 34, 192, 35, 192, 36, 192, 37, 192, 38, 192, 39, 192, 40, 192, 41, 192, 42, 192, 43, 192, 44, 192, 45, 192, 46, 192, 47, 192, 48, 192, 49, 192, 50, 192, 51, 192, 52, 192, 53, 192, 54, 192, 55, 192, 171, 192, 172, 192, 173, 192, 174, 192, 175, 192, 176, 192, 177, 192, 178, 192, 179, 192, 180, 192, 181, 192, 182, 192, 183, 192, 184, 192, 185, 192, 186, 192, 187, 192, 188, 193, 3, 193, 4, 193, 5, 193, 6, 193, 7, 193, 8, 193, 9, 193, 10, 193, 11, 193, 12, 193, 13, 193, 14, 193, 15, 193, 16, 193, 17, 193, 18, 193, 19, 193, 20, 193, 21, 193, 22, 193, 23, 193, 24, 193, 25, 193, 26, 193, 27, 193, 28, 193, 29, 193, 30, 193, 31, 193, 32, 193, 33, 193, 34, 193, 35, 193, 36, 193, 37, 193, 38, 193, 39, 193, 40, 193, 41, 193, 42, 193, 43, 193, 44, 193, 45, 193, 46, 193, 47, 193, 48, 193, 49, 193, 50, 193, 51, 193, 52, 193, 53, 193, 54, 193, 55, 193, 171, 193, 172, 193, 173, 193, 174, 193, 175, 193, 176, 193, 177, 193, 178, 193, 179, 193, 180, 193, 181, 193, 182, 193, 183, 193, 184, 193, 185, 193, 186, 193, 187, 193, 188, 194, 3, 194, 4, 194, 5, 194, 6, 194, 7, 194, 8, 194, 9, 194, 10, 194, 11, 194, 12, 194, 13, 194, 14, 194, 15, 194, 16, 194, 17, 194, 18, 194, 19, 194, 20, 194, 21, 194, 22, 194, 23, 194, 24, 194, 25, 194, 26, 194, 27, 194, 28, 194, 29, 194, 30, 194, 31, 194, 32, 194, 33, 194, 34, 194, 35, 194, 36, 194, 37, 194, 38, 194, 39, 194, 40, 194, 41, 194, 42, 194, 43, 194, 44, 194, 45, 194, 46, 194, 47, 194, 48, 194, 49, 194, 50, 194, 51, 194, 52, 194, 53, 194, 54, 194, 55, 194, 56, 194, 171, 194, 172, 194, 173, 194, 174, 194, 175, 194, 176, 194, 177, 194, 178, 194, 179, 194, 180, 194, 181, 194, 182, 194, 183, 194, 184, 194, 185, 194, 186, 194, 187, 194, 188, 195, 3, 195, 4, 195, 5, 195, 6, 195, 7, 195, 8, 195, 9, 195, 10, 195, 11, 195, 12, 195, 13, 195, 14, 195, 15, 195, 16, 195, 17, 195, 18, 195, 19, 195, 20, 195, 21, 195, 22, 195, 23, 195, 24, 195, 25, 195, 26, 195, 27, 195, 28, 195, 29, 195, 30, 195, 31, 195, 32, 195, 33, 195, 34, 195, 35, 195, 36, 195, 37, 195, 38, 195, 39, 195, 40, 195, 41, 195, 42, 195, 43, 195, 44, 195, 45, 195, 46, 195, 47, 195, 48, 195, 49, 195, 50, 195, 51, 195, 52, 195, 53, 195, 54, 195, 55, 195, 56, 195, 171, 195, 172, 195, 173, 195, 174, 195, 175, 195, 176, 195, 177, 195, 178, 195, 179, 195, 180, 195, 181, 195, 182, 195, 183, 195, 184, 195, 185, 195, 186, 195, 187, 195, 188, 196, 3, 196, 4, 196, 5, 196, 6, 196, 7, 196, 8, 196, 9, 196, 10, 196, 11, 196, 12, 196, 13, 196, 14, 196, 15, 196, 16, 196, 17, 196, 18, 196, 19, 196, 20, 196, 21, 196, 22, 196, 23, 196, 24, 196, 25, 196, 26, 196, 27, 196, 28, 196, 29, 196, 30, 196, 31, 196, 32, 196, 33, 196, 34, 196, 35, 196, 36, 196, 37, 196, 38, 196, 39, 196, 40, 196, 41, 196, 42, 196, 43, 196, 44, 196, 45, 196, 46, 196, 47, 196, 48, 196, 49, 196, 50, 196, 51, 196, 52, 196, 53, 196, 54, 196, 55, 196, 56, 196, 171, 196, 172, 196, 173, 196, 174, 196, 175, 196, 176, 196, 177, 196, 178, 196, 179, 196, 180, 196, 181, 196, 182, 196, 183, 196, 184, 196, 185, 196, 186, 196, 187, 196, 188, 197, 3, 197, 4, 197, 5, 197, 6, 197, 7, 197, 8, 197, 9, 197, 10, 197, 11, 197, 12, 197, 13, 197, 14, 197, 15, 197, 16, 197, 17, 197, 18, 197, 19, 197, 20, 197, 21, 197, 22, 197, 23, 197, 24, 197, 25, 197, 26, 197, 27, 197, 28, 197, 29, 197, 30, 197, 31, 197, 32, 197, 33, 197, 34, 197, 35, 197, 36, 197, 37, 197, 38, 197, 39, 197, 40, 197, 41, 197, 42, 197, 43, 197, 44, 197, 45, 197, 46, 197, 47, 197, 48, 197, 49, 197, 50, 197, 51, 197, 52, 197, 53, 197, 54, 197, 55, 197, 56, 197, 171, 197, 172, 197, 173, 197, 174, 197, 175, 197, 176, 197, 177, 197, 178, 197, 179, 197, 180, 197, 181, 197, 182, 197, 183, 197, 184, 197, 185, 197, 186, 197, 187, 197, 188, 198, 3, 198, 4, 198, 5, 198, 6, 198, 7, 198, 8, 198, 9, 198, 10, 198, 11, 198, 12, 198, 13, 198, 14, 198, 15, 198, 16, 198, 17, 198, 18, 198, 19, 198, 20, 198, 21, 198, 22, 198, 23, 198, 24, 198, 25, 198, 26, 198, 27, 198, 28, 198, 29, 198, 30, 198, 31, 198, 32, 198, 33, 198, 34, 198, 35, 198, 36, 198, 37, 198, 38, 198, 39, 198, 40, 198, 41, 198, 42, 198, 43, 198, 44, 198, 45, 198, 46, 198, 47, 198, 48, 198, 49, 198, 50, 198, 51, 198, 52, 198, 53, 198, 54, 198, 55, 198, 56, 198, 57, 198, 170, 198, 171, 198, 172, 198, 173, 198, 174, 198, 175, 198, 176, 198, 177, 198, 178, 198, 179, 198, 180, 198, 181, 198, 182, 198, 183, 198, 184, 198, 185, 198, 186, 198, 187, 198, 188, 199, 3, 199, 4, 199, 5, 199, 6, 199, 7, 199, 8, 199, 9, 199, 10, 199, 11, 199, 12, 199, 13, 199, 14, 199, 15, 199, 16, 199, 17, 199, 18, 199, 19, 199, 20, 199, 21, 199, 22, 199, 23, 199, 24, 199, 25, 199, 26, 199, 27, 199, 28, 199, 29, 199, 30, 199, 31, 199, 32, 199, 33, 199, 34, 199, 35, 199, 36, 199, 37, 199, 38, 199, 39, 199, 40, 199, 41, 199, 42, 199, 43, 199, 44, 199, 45, 199, 46, 199, 47, 199, 48, 199, 49, 199, 50, 199, 51, 199, 52, 199, 53, 199, 54, 199, 55, 199, 56, 199, 57, 199, 58, 199, 59, 199, 60, 199, 170, 199, 171, 199, 172, 199, 173, 199, 174, 199, 175, 199, 176, 199, 177, 199, 178, 199, 179, 199, 180, 199, 181, 199, 182, 199, 183, 199, 184, 199, 185, 199, 186, 199, 187, 199, 188, 200, 3, 200, 4, 200, 5, 200, 6, 200, 7, 200, 8, 200, 9, 200, 10, 200, 11, 200, 12, 200, 13, 200, 14, 200, 15, 200, 16, 200, 17, 200, 18, 200, 19, 200, 20, 200, 21, 200, 22, 200, 23, 200, 24, 200, 25, 200, 26, 200, 27, 200, 28, 200, 29, 200, 30, 200, 31, 200, 32, 200, 33, 200, 34, 200, 35, 200, 36, 200, 37, 200, 38, 200, 39, 200, 40, 200, 41, 200, 42, 200, 43, 200, 44, 200, 45, 200, 46, 200, 47, 200, 48, 200, 49, 200, 50, 200, 51, 200, 52, 200, 53, 200, 54, 200, 55, 200, 56, 200, 57, 200, 58, 200, 59, 200, 60, 200, 61, 200, 62, 200, 63, 200, 170, 200, 171, 200, 172, 200, 173, 200, 174, 200, 175, 200, 176, 200, 177, 200, 178, 200, 179, 200, 180, 200, 181, 200, 182, 200, 183, 200, 184, 200, 185, 200, 186, 200, 187, 200, 188, 201, 3, 201, 4, 201, 5, 201, 6, 201, 7, 201, 8, 201, 9, 201, 10, 201, 11, 201, 12, 201, 13, 201, 14, 201, 15, 201, 16, 201, 17, 201, 18, 201, 19, 201, 20, 201, 21, 201, 22, 201, 23, 201, 24, 201, 25, 201, 26, 201, 27, 201, 28, 201, 29, 201, 30, 201, 31, 201, 32, 201, 33, 201, 34, 201, 35, 201, 36, 201, 37, 201, 38, 201, 39, 201, 40, 201, 41, 201, 42, 201, 43, 201, 44, 201, 45, 201, 46, 201, 47, 201, 48, 201, 49, 201, 50, 201, 51, 201, 52, 201, 53, 201, 54, 201, 55, 201, 56, 201, 57, 201, 58, 201, 59, 201, 60, 201, 61, 201, 62, 201, 63, 201, 64, 201, 65, 201, 66, 201, 170, 201, 171, 201, 172, 201, 173, 201, 174, 201, 175, 201, 176, 201, 177, 201, 178, 201, 179, 201, 180, 201, 181, 201, 182, 201, 183, 201, 184, 201, 185, 201, 186, 201, 187, 201, 188, 202, 3, 202, 4, 202, 5, 202, 6, 202, 7, 202, 8, 202, 9, 202, 10, 202, 11, 202, 12, 202, 13, 202, 14, 202, 15, 202, 16, 202, 17, 202, 18, 202, 19, 202, 20, 202, 21, 202, 22, 202, 23, 202, 24, 202, 25, 202, 26, 202, 27, 202, 28, 202, 29, 202, 30, 202, 31, 202, 32, 202, 33, 202, 34, 202, 35, 202, 36, 202, 37, 202, 38, 202, 39, 202, 40, 202, 41, 202, 42, 202, 43, 202, 44, 202, 45, 202, 46, 202, 47, 202, 48, 202, 49, 202, 50, 202, 51, 202, 52, 202, 53, 202, 54, 202, 55, 202, 56, 202, 57, 202, 58, 202, 59, 202, 60, 202, 61, 202, 62, 202, 63, 202, 64, 202, 65, 202, 66, 202, 67, 202, 68, 202, 69, 202, 70, 202, 170, 202, 171, 202, 172, 202, 173, 202, 174, 202, 175, 202, 176, 202, 177, 202, 178, 202, 179, 202, 180, 202, 181, 202, 182, 202, 183, 202, 184, 202, 185, 202, 186, 202, 187, 202, 188, 203, 3, 203, 4, 203, 5, 203, 6, 203, 7, 203, 8, 203, 9, 203, 10, 203, 11, 203, 12, 203, 13, 203, 14, 203, 15, 203, 16, 203, 17, 203, 18, 203, 19, 203, 20, 203, 21, 203, 22, 203, 23, 203, 24, 203, 25, 203, 26, 203, 27, 203, 28, 203, 29, 203, 30, 203, 31, 203, 32, 203, 33, 203, 34, 203, 35, 203, 36, 203, 37, 203, 38, 203, 39, 203, 40, 203, 41, 203, 42, 203, 43, 203, 44, 203, 45, 203, 46, 203, 47, 203, 48, 203, 49, 203, 50, 203, 51, 203, 52, 203, 53, 203, 54, 203, 55, 203, 56, 203, 57, 203, 58, 203, 59, 203, 60, 203, 61, 203, 62, 203, 63, 203, 64, 203, 65, 203, 66, 203, 67, 203, 68, 203, 69, 203, 70, 203, 71, 203, 72, 203, 73, 203, 74, 203, 75, 203, 170, 203, 171, 203, 172, 203, 173, 203, 174, 203, 175, 203, 176, 203, 177, 203, 178, 203, 179, 203, 180, 203, 181, 203, 182, 203, 183, 203, 184, 203, 185, 203, 186, 203, 187, 203, 188, 204, 3, 204, 4, 204, 5, 204, 6, 204, 7, 204, 8, 204, 9, 204, 10, 204, 11, 204, 12, 204, 13, 204, 14, 204, 15, 204, 16, 204, 17, 204, 18, 204, 19, 204, 20, 204, 21, 204, 22, 204, 23, 204, 24, 204, 25, 204, 26, 204, 27, 204, 28, 204, 29, 204, 30, 204, 31, 204, 32, 204, 33, 204, 34, 204, 35, 204, 36, 204, 37, 204, 38, 204, 39, 204, 40, 204, 41, 204, 42, 204, 43, 204, 44, 204, 45, 204, 46, 204, 47, 204, 48, 204, 49, 204, 50, 204, 51, 204, 52, 204, 53, 204, 54, 204, 55, 204, 56, 204, 57, 204, 58, 204, 59, 204, 60, 204, 61, 204, 62, 204, 63, 204, 64, 204, 65, 204, 66, 204, 67, 204, 68, 204, 69, 204, 70, 204, 71, 204, 72, 204, 73, 204, 74, 204, 75, 204, 76, 204, 77, 204, 78, 204, 79, 204, 170, 204, 171, 204, 172, 204, 173, 204, 174, 204, 175, 204, 176, 204, 177, 204, 178, 204, 179, 204, 180, 204, 181, 204, 182, 204, 183, 204, 184, 204, 185, 204, 186, 204, 187, 204, 188, 205, 3, 205, 4, 205, 5, 205, 6, 205, 7, 205, 8, 205, 9, 205, 10, 205, 11, 205, 12, 205, 13, 205, 14, 205, 15, 205, 16, 205, 17, 205, 18, 205, 19, 205, 20, 205, 21, 205, 22, 205, 23, 205, 24, 205, 25, 205, 26, 205, 27, 205, 28, 205, 29, 205, 30, 205, 31, 205, 32, 205, 33, 205, 34, 205, 35, 205, 36, 205, 37, 205, 38, 205, 39, 205, 40, 205, 41, 205, 42, 205, 43, 205, 44, 205, 45, 205, 46, 205, 47, 205, 48, 205, 49, 205, 50, 205, 51, 205, 52, 205, 53, 205, 54, 205, 55, 205, 56, 205, 57, 205, 58, 205, 59, 205, 60, 205, 61, 205, 62, 205, 63, 205, 64, 205, 65, 205, 66, 205, 67, 205, 68, 205, 69, 205, 70, 205, 71, 205, 72, 205, 73, 205, 74, 205, 75, 205, 76, 205, 77, 205, 78, 205, 79, 205, 80, 205, 81, 205, 82, 205, 83, 205, 84, 205, 85, 205, 86, 205, 87, 205, 170, 205, 171, 205, 172, 205, 173, 205, 174, 205, 175, 205, 176, 205, 177, 205, 178, 205, 179, 205, 180, 205, 181, 205, 182, 205, 183, 205, 184, 205, 185, 205, 186, 205, 187, 205, 188, 206, 3, 206, 4, 206, 5, 206, 6, 206, 7, 206, 8, 206, 9, 206, 10, 206, 11, 206, 12, 206, 13, 206, 14, 206, 15, 206, 16, 206, 17, 206, 18, 206, 19, 206, 20, 206, 21, 206, 22, 206, 23, 206, 24, 206, 25, 206, 26, 206, 27, 206, 28, 206, 29, 206, 30, 206, 31, 206, 32, 206, 33, 206, 34, 206, 35, 206, 36, 206, 37, 206, 38, 206, 39, 206, 40, 206, 41, 206, 42, 206, 43, 206, 44, 206, 45, 206, 46, 206, 47, 206, 48, 206, 49, 206, 50, 206, 51, 206, 52, 206, 53, 206, 54, 206, 55, 206, 56, 206, 57, 206, 58, 206, 59, 206, 60, 206, 61, 206, 62, 206, 63, 206, 64, 206, 65, 206, 66, 206, 67, 206, 68, 206, 69, 206, 70, 206, 71, 206, 72, 206, 73, 206, 74, 206, 75, 206, 76, 206, 77, 206, 78, 206, 79, 206, 80, 206, 81, 206, 82, 206, 83, 206, 84, 206, 85, 206, 86, 206, 87, 206, 88, 206, 89, 206, 170, 206, 171, 206, 172, 206, 173, 206, 174, 206, 175, 206, 176, 206, 177, 206, 178, 206, 179, 206, 180, 206, 181, 206, 182, 206, 183, 206, 184, 206, 185, 206, 186, 206, 187, 206, 188, 207, 3, 207, 4, 207, 5, 207, 6, 207, 7, 207, 8, 207, 9, 207, 10, 207, 11, 207, 12, 207, 13, 207, 14, 207, 15, 207, 16, 207, 17, 207, 18, 207, 19, 207, 20, 207, 21, 207, 22, 207, 23, 207, 24, 207, 25, 207, 26, 207, 27, 207, 28, 207, 29, 207, 30, 207, 31, 207, 32, 207, 33, 207, 34, 207, 35, 207, 36, 207, 37, 207, 38, 207, 39, 207, 40, 207, 41, 207, 42, 207, 43, 207, 44, 207, 45, 207, 46, 207, 47, 207, 48, 207, 49, 207, 50, 207, 51, 207, 52, 207, 53, 207, 54, 207, 55, 207, 56, 207, 57, 207, 58, 207, 59, 207, 60, 207, 61, 207, 62, 207, 63, 207, 64, 207, 65, 207, 66, 207, 67, 207, 68, 207, 69, 207, 70, 207, 71, 207, 72, 207, 73, 207, 74, 207, 75, 207, 76, 207, 77, 207, 78, 207, 79, 207, 80, 207, 81, 207, 82, 207, 83, 207, 84, 207, 85, 207, 86, 207, 87, 207, 88, 207, 89, 207, 90, 207, 170, 207, 171, 207, 172, 207, 173, 207, 174, 207, 175, 207, 176, 207, 177, 207, 178, 207, 179, 207, 180, 207, 181, 207, 182, 207, 183, 207, 184, 207, 185, 207, 186, 207, 187, 207, 188, 208, 3, 208, 4, 208, 5, 208, 6, 208, 7, 208, 8, 208, 9, 208, 10, 208, 11, 208, 12, 208, 13, 208, 14, 208, 15, 208, 16, 208, 17, 208, 18, 208, 19, 208, 20, 208, 21, 208, 22, 208, 23, 208, 24, 208, 25, 208, 26, 208, 27, 208, 28, 208, 29, 208, 30, 208, 31, 208, 32, 208, 33, 208, 34, 208, 35, 208, 36, 208, 37, 208, 38, 208, 39, 208, 40, 208, 41, 208, 42, 208, 43, 208, 44, 208, 45, 208, 46, 208, 47, 208, 48, 208, 49, 208, 50, 208, 51, 208, 52, 208, 53, 208, 54, 208, 55, 208, 56, 208, 57, 208, 58, 208, 59, 208, 60, 208, 61, 208, 62, 208, 63, 208, 64, 208, 65, 208, 66, 208, 67, 208, 68, 208, 69, 208, 70, 208, 71, 208, 72, 208, 73, 208, 74, 208, 75, 208, 76, 208, 77, 208, 78, 208, 79, 208, 80, 208, 81, 208, 82, 208, 83, 208, 84, 208, 85, 208, 86, 208, 87, 208, 88, 208, 89, 208, 90, 208, 91, 208, 170, 208, 171, 208, 172, 208, 173, 208, 174, 208, 175, 208, 176, 208, 177, 208, 178, 208, 179, 208, 180, 208, 181, 208, 182, 208, 183, 208, 184, 208, 185, 208, 186, 208, 187, 208, 188, 209, 3, 209, 4, 209, 5, 209, 6, 209, 7, 209, 8, 209, 9, 209, 10, 209, 11, 209, 12, 209, 13, 209, 14, 209, 15, 209, 16, 209, 17, 209, 18, 209, 19, 209, 20, 209, 21, 209, 22, 209, 23, 209, 24, 209, 25, 209, 26, 209, 27, 209, 28, 209, 29, 209, 30, 209, 31, 209, 32, 209, 33, 209, 34, 209, 35, 209, 36, 209, 37, 209, 38, 209, 39, 209, 40, 209, 41, 209, 42, 209, 43, 209, 44, 209, 45, 209, 46, 209, 47, 209, 48, 209, 49, 209, 50, 209, 51, 209, 52, 209, 53, 209, 54, 209, 55, 209, 56, 209, 57, 209, 58, 209, 59, 209, 60, 209, 61, 209, 62, 209, 63, 209, 64, 209, 65, 209, 66, 209, 67, 209, 68, 209, 69, 209, 70, 209, 71, 209, 72, 209, 73, 209, 74, 209, 75, 209, 76, 209, 77, 209, 78, 209, 79, 209, 80, 209, 81, 209, 82, 209, 83, 209, 84, 209, 85, 209, 86, 209, 87, 209, 88, 209, 89, 209, 90, 209, 91, 209, 169, 209, 170, 209, 171, 209, 172, 209, 173, 209, 174, 209, 175, 209, 176, 209, 177, 209, 178, 209, 179, 209, 180, 209, 181, 209, 182, 209, 183, 209, 184, 209, 185, 209, 186, 209, 187, 209, 188, 210, 3, 210, 4, 210, 5, 210, 6, 210, 7, 210, 8, 210, 9, 210, 10, 210, 11, 210, 12, 210, 13, 210, 14, 210, 15, 210, 16, 210, 17, 210, 18, 210, 19, 210, 20, 210, 21, 210, 22, 210, 23, 210, 24, 210, 25, 210, 26, 210, 27, 210, 28, 210, 29, 210, 30, 210, 31, 210, 32, 210, 33, 210, 34, 210, 35, 210, 36, 210, 37, 210, 38, 210, 39, 210, 40, 210, 41, 210, 42, 210, 43, 210, 44, 210, 45, 210, 46, 210, 47, 210, 48, 210, 49, 210, 50, 210, 51, 210, 52, 210, 53, 210, 54, 210, 55, 210, 56, 210, 57, 210, 58, 210, 59, 210, 60, 210, 61, 210, 62, 210, 63, 210, 64, 210, 65, 210, 66, 210, 67, 210, 68, 210, 69, 210, 70, 210, 71, 210, 72, 210, 73, 210, 74, 210, 75, 210, 76, 210, 77, 210, 78, 210, 79, 210, 80, 210, 81, 210, 82, 210, 83, 210, 84, 210, 85, 210, 86, 210, 87, 210, 88, 210, 89, 210, 90, 210, 91, 210, 92, 210, 169, 210, 170, 210, 171, 210, 172, 210, 173, 210, 174, 210, 175, 210, 176, 210, 177, 210, 178, 210, 179, 210, 180, 210, 181, 210, 182, 210, 183, 210, 184, 210, 185, 210, 186, 210, 187, 210, 188, 211, 3, 211, 4, 211, 5, 211, 6, 211, 7, 211, 8, 211, 9, 211, 10, 211, 11, 211, 12, 211, 13, 211, 14, 211, 15, 211, 16, 211, 17, 211, 18, 211, 19, 211, 20, 211, 21, 211, 22, 211, 23, 211, 24, 211, 25, 211, 26, 211, 27, 211, 28, 211, 29, 211, 30, 211, 31, 211, 32, 211, 33, 211, 34, 211, 35, 211, 36, 211, 37, 211, 38, 211, 39, 211, 40, 211, 41, 211, 42, 211, 43, 211, 44, 211, 45, 211, 46, 211, 47, 211, 48, 211, 49, 211, 50, 211, 51, 211, 52, 211, 53, 211, 54, 211, 55, 211, 56, 211, 57, 211, 58, 211, 59, 211, 60, 211, 61, 211, 62, 211, 63, 211, 64, 211, 65, 211, 66, 211, 67, 211, 68, 211, 69, 211, 70, 211, 71, 211, 72, 211, 73, 211, 74, 211, 75, 211, 76, 211, 77, 211, 78, 211, 79, 211, 80, 211, 81, 211, 82, 211, 83, 211, 84, 211, 85, 211, 86, 211, 87, 211, 88, 211, 89, 211, 90, 211, 91, 211, 92, 211, 93, 211, 169, 211, 170, 211, 171, 211, 172, 211, 173, 211, 174, 211, 175, 211, 176, 211, 177, 211, 178, 211, 179, 211, 180, 211, 181, 211, 182, 211, 183, 211, 184, 211, 185, 211, 186, 211, 187, 211, 188, 212, 3, 212, 4, 212, 5, 212, 6, 212, 7, 212, 8, 212, 9, 212, 10, 212, 11, 212, 12, 212, 13, 212, 14, 212, 15, 212, 16, 212, 17, 212, 18, 212, 19, 212, 20, 212, 21, 212, 22, 212, 23, 212, 24, 212, 25, 212, 26, 212, 27, 212, 28, 212, 29, 212, 30, 212, 31, 212, 32, 212, 33, 212, 34, 212, 35, 212, 36, 212, 37, 212, 38, 212, 39, 212, 40, 212, 41, 212, 42, 212, 43, 212, 44, 212, 45, 212, 46, 212, 47, 212, 48, 212, 49, 212, 50, 212, 51, 212, 52, 212, 53, 212, 54, 212, 55, 212, 56, 212, 57, 212, 58, 212, 59, 212, 60, 212, 61, 212, 62, 212, 63, 212, 64, 212, 65, 212, 66, 212, 67, 212, 68, 212, 69, 212, 70, 212, 71, 212, 72, 212, 73, 212, 74, 212, 75, 212, 76, 212, 77, 212, 78, 212, 79, 212, 80, 212, 81, 212, 82, 212, 83, 212, 84, 212, 85, 212, 86, 212, 87, 212, 88, 212, 89, 212, 90, 212, 91, 212, 92, 212, 93, 212, 94, 212, 169, 212, 170, 212, 171, 212, 172, 212, 173, 212, 174, 212, 175, 212, 176, 212, 177, 212, 178, 212, 179, 212, 180, 212, 181, 212, 182, 212, 183, 212, 184, 212, 185, 212, 186, 212, 187, 212, 188, 213, 3, 213, 4, 213, 5, 213, 6, 213, 7, 213, 8, 213, 9, 213, 10, 213, 11, 213, 12, 213, 13, 213, 14, 213, 15, 213, 16, 213, 17, 213, 18, 213, 19, 213, 20, 213, 21, 213, 22, 213, 23, 213, 24, 213, 25, 213, 26, 213, 27, 213, 28, 213, 29, 213, 30, 213, 31, 213, 32, 213, 33, 213, 34, 213, 35, 213, 36, 213, 37, 213, 38, 213, 39, 213, 40, 213, 41, 213, 42, 213, 43, 213, 44, 213, 45, 213, 46, 213, 47, 213, 48, 213, 49, 213, 50, 213, 51, 213, 52, 213, 53, 213, 54, 213, 55, 213, 56, 213, 57, 213, 58, 213, 59, 213, 60, 213, 61, 213, 62, 213, 63, 213, 64, 213, 65, 213, 66, 213, 67, 213, 68, 213, 69, 213, 70, 213, 71, 213, 72, 213, 73, 213, 74, 213, 75, 213, 76, 213, 77, 213, 78, 213, 79, 213, 80, 213, 81, 213, 82, 213, 83, 213, 84, 213, 85, 213, 86, 213, 87, 213, 88, 213, 89, 213, 90, 213, 91, 213, 92, 213, 93, 213, 94, 213, 95, 213, 169, 213, 170, 213, 171, 213, 172, 213, 173, 213, 174, 213, 175, 213, 176, 213, 177, 213, 178, 213, 179, 213, 180, 213, 181, 213, 182, 213, 183, 213, 184, 213, 185, 213, 186, 213, 187, 213, 188, 214, 3, 214, 4, 214, 5, 214, 6, 214, 7, 214, 8, 214, 9, 214, 10, 214, 11, 214, 12, 214, 13, 214, 14, 214, 15, 214, 16, 214, 17, 214, 18, 214, 19, 214, 20, 214, 21, 214, 22, 214, 23, 214, 24, 214, 25, 214, 26, 214, 27, 214, 28, 214, 29, 214, 30, 214, 31, 214, 32, 214, 33, 214, 34, 214, 35, 214, 36, 214, 37, 214, 38, 214, 39, 214, 40, 214, 41, 214, 42, 214, 43, 214, 44, 214, 45, 214, 46, 214, 47, 214, 48, 214, 49, 214, 50, 214, 51, 214, 52, 214, 53, 214, 54, 214, 55, 214, 56, 214, 57, 214, 58, 214, 59, 214, 60, 214, 61, 214, 62, 214, 63, 214, 64, 214, 65, 214, 66, 214, 67, 214, 68, 214, 69, 214, 70, 214, 71, 214, 72, 214, 73, 214, 74, 214, 75, 214, 76, 214, 77, 214, 78, 214, 79, 214, 80, 214, 81, 214, 82, 214, 83, 214, 84, 214, 85, 214, 86, 214, 87, 214, 88, 214, 89, 214, 90, 214, 91, 214, 92, 214, 93, 214, 94, 214, 95, 214, 169, 214, 170, 214, 171, 214, 172, 214, 173, 214, 174, 214, 175, 214, 176, 214, 177, 214, 178, 214, 179, 214, 180, 214, 181, 214, 182, 214, 183, 214, 184, 214, 185, 214, 186, 214, 187, 214, 188, 215, 3, 215, 4, 215, 5, 215, 6, 215, 7, 215, 8, 215, 9, 215, 10, 215, 11, 215, 12, 215, 13, 215, 14, 215, 15, 215, 16, 215, 17, 215, 18, 215, 19, 215, 20, 215, 21, 215, 22, 215, 23, 215, 24, 215, 25, 215, 26, 215, 27, 215, 28, 215, 29, 215, 30, 215, 31, 215, 32, 215, 33, 215, 34, 215, 35, 215, 36, 215, 37, 215, 38, 215, 39, 215, 40, 215, 41, 215, 42, 215, 43, 215, 44, 215, 45, 215, 46, 215, 47, 215, 48, 215, 49, 215, 50, 215, 51, 215, 52, 215, 53, 215, 54, 215, 55, 215, 56, 215, 57, 215, 58, 215, 59, 215, 60, 215, 61, 215, 62, 215, 63, 215, 64, 215, 65, 215, 66, 215, 67, 215, 68, 215, 69, 215, 70, 215, 71, 215, 72, 215, 73, 215, 74, 215, 75, 215, 76, 215, 77, 215, 78, 215, 79, 215, 80, 215, 81, 215, 82, 215, 83, 215, 84, 215, 85, 215, 86, 215, 87, 215, 88, 215, 89, 215, 90, 215, 91, 215, 92, 215, 93, 215, 94, 215, 95, 215, 96, 215, 169, 215, 170, 215, 171, 215, 172, 215, 173, 215, 174, 215, 175, 215, 176, 215, 177, 215, 178, 215, 179, 215, 180, 215, 181, 215, 182, 215, 183, 215, 184, 215, 185, 215, 186, 215, 187, 215, 188, 216, 3, 216, 4, 216, 5, 216, 6, 216, 7, 216, 8, 216, 9, 216, 10, 216, 11, 216, 12, 216, 13, 216, 14, 216, 15, 216, 16, 216, 17, 216, 18, 216, 19, 216, 20, 216, 21, 216, 22, 216, 23, 216, 24, 216, 25, 216, 26, 216, 27, 216, 28, 216, 29, 216, 30, 216, 31, 216, 32, 216, 33, 216, 34, 216, 35, 216, 36, 216, 37, 216, 38, 216, 39, 216, 40, 216, 41, 216, 42, 216, 43, 216, 44, 216, 45, 216, 46, 216, 47, 216, 48, 216, 49, 216, 50, 216, 51, 216, 52, 216, 53, 216, 54, 216, 55, 216, 56, 216, 57, 216, 58, 216, 59, 216, 60, 216, 61, 216, 62, 216, 63, 216, 64, 216, 65, 216, 66, 216, 67, 216, 68, 216, 69, 216, 70, 216, 71, 216, 72, 216, 73, 216, 74, 216, 75, 216, 76, 216, 77, 216, 78, 216, 79, 216, 80, 216, 81, 216, 82, 216, 83, 216, 84, 216, 85, 216, 86, 216, 87, 216, 88, 216, 89, 216, 90, 216, 91, 216, 92, 216, 93, 216, 94, 216, 95, 216, 96, 216, 97, 216, 169, 216, 170, 216, 171, 216, 172, 216, 173, 216, 174, 216, 175, 216, 176, 216, 177, 216, 178, 216, 179, 216, 180, 216, 181, 216, 182, 216, 183, 216, 184, 216, 185, 216, 186, 216, 187, 216, 188, 217, 3, 217, 4, 217, 5, 217, 6, 217, 7, 217, 8, 217, 9, 217, 10, 217, 11, 217, 12, 217, 13, 217, 14, 217, 15, 217, 16, 217, 17, 217, 18, 217, 19, 217, 20, 217, 21, 217, 22, 217, 23, 217, 24, 217, 25, 217, 26, 217, 27, 217, 28, 217, 29, 217, 30, 217, 31, 217, 32, 217, 33, 217, 34, 217, 35, 217, 36, 217, 37, 217, 38, 217, 39, 217, 40, 217, 41, 217, 42, 217, 43, 217, 44, 217, 45, 217, 46, 217, 47, 217, 48, 217, 49, 217, 50, 217, 51, 217, 52, 217, 53, 217, 54, 217, 55, 217, 56, 217, 57, 217, 58, 217, 59, 217, 60, 217, 61, 217, 62, 217, 63, 217, 64, 217, 65, 217, 66, 217, 67, 217, 68, 217, 69, 217, 70, 217, 71, 217, 72, 217, 73, 217, 74, 217, 75, 217, 76, 217, 77, 217, 78, 217, 79, 217, 80, 217, 81, 217, 82, 217, 83, 217, 84, 217, 85, 217, 86, 217, 87, 217, 88, 217, 89, 217, 90, 217, 91, 217, 92, 217, 93, 217, 94, 217, 95, 217, 96, 217, 97, 217, 169, 217, 170, 217, 171, 217, 172, 217, 173, 217, 174, 217, 175, 217, 176, 217, 177, 217, 178, 217, 179, 217, 180, 217, 181, 217, 182, 217, 183, 217, 184, 217, 185, 217, 186, 217, 187, 217, 188, 218, 3, 218, 4, 218, 5, 218, 6, 218, 7, 218, 8, 218, 9, 218, 10, 218, 11, 218, 12, 218, 13, 218, 14, 218, 15, 218, 16, 218, 17, 218, 18, 218, 19, 218, 20, 218, 21, 218, 22, 218, 23, 218, 24, 218, 25, 218, 26, 218, 27, 218, 28, 218, 29, 218, 30, 218, 31, 218, 32, 218, 33, 218, 34, 218, 35, 218, 36, 218, 37, 218, 38, 218, 39, 218, 40, 218, 41, 218, 42, 218, 43, 218, 44, 218, 45, 218, 46, 218, 47, 218, 48, 218, 49, 218, 50, 218, 51, 218, 52, 218, 53, 218, 54, 218, 55, 218, 56, 218, 57, 218, 58, 218, 59, 218, 60, 218, 61, 218, 62, 218, 63, 218, 64, 218, 65, 218, 66, 218, 67, 218, 68, 218, 69, 218, 70, 218, 71, 218, 72, 218, 73, 218, 74, 218, 75, 218, 76, 218, 77, 218, 78, 218, 79, 218, 80, 218, 81, 218, 82, 218, 83, 218, 84, 218, 85, 218, 86, 218, 87, 218, 88, 218, 89, 218, 90, 218, 91, 218, 92, 218, 93, 218, 94, 218, 95, 218, 96, 218, 97, 218, 98, 218, 169, 218, 170, 218, 171, 218, 172, 218, 173, 218, 174, 218, 175, 218, 176, 218, 177, 218, 178, 218, 179, 218, 180, 218, 181, 218, 182, 218, 183, 218, 184, 218, 185, 218, 186, 218, 187, 218, 188, 219, 3, 219, 4, 219, 5, 219, 6, 219, 7, 219, 8, 219, 9, 219, 10, 219, 11, 219, 12, 219, 13, 219, 14, 219, 15, 219, 16, 219, 17, 219, 18, 219, 19, 219, 20, 219, 21, 219, 22, 219, 23, 219, 24, 219, 25, 219, 26, 219, 27, 219, 28, 219, 29, 219, 30, 219, 31, 219, 32, 219, 33, 219, 34, 219, 35, 219, 36, 219, 37, 219, 38, 219, 39, 219, 40, 219, 41, 219, 42, 219, 43, 219, 44, 219, 45, 219, 46, 219, 47, 219, 48, 219, 49, 219, 50, 219, 51, 219, 52, 219, 53, 219, 54, 219, 55, 219, 56, 219, 57, 219, 58, 219, 59, 219, 60, 219, 61, 219, 62, 219, 63, 219, 64, 219, 65, 219, 66, 219, 67, 219, 68, 219, 69, 219, 70, 219, 71, 219, 72, 219, 73, 219, 74, 219, 75, 219, 76, 219, 77, 219, 78, 219, 79, 219, 80, 219, 81, 219, 82, 219, 83, 219, 84, 219, 85, 219, 86, 219, 87, 219, 88, 219, 89, 219, 90, 219, 91, 219, 92, 219, 93, 219, 94, 219, 95, 219, 96, 219, 97, 219, 98, 219, 99, 219, 168, 219, 169, 219, 170, 219, 171, 219, 172, 219, 173, 219, 174, 219, 175, 219, 176, 219, 177, 219, 178, 219, 179, 219, 180, 219, 181, 219, 182, 219, 183, 219, 184, 219, 185, 219, 186, 219, 187, 219, 188, 220, 3, 220, 4, 220, 5, 220, 6, 220, 7, 220, 8, 220, 9, 220, 10, 220, 11, 220, 12, 220, 13, 220, 14, 220, 15, 220, 16, 220, 17, 220, 18, 220, 19, 220, 20, 220, 21, 220, 22, 220, 23, 220, 24, 220, 25, 220, 26, 220, 27, 220, 28, 220, 29, 220, 30, 220, 31, 220, 32, 220, 33, 220, 34, 220, 35, 220, 36, 220, 37, 220, 38, 220, 39, 220, 40, 220, 41, 220, 42, 220, 43, 220, 44, 220, 45, 220, 46, 220, 47, 220, 48, 220, 49, 220, 50, 220, 51, 220, 52, 220, 53, 220, 54, 220, 55, 220, 56, 220, 57, 220, 58, 220, 59, 220, 60, 220, 61, 220, 62, 220, 63, 220, 64, 220, 65, 220, 66, 220, 67, 220, 68, 220, 69, 220, 70, 220, 71, 220, 72, 220, 73, 220, 74, 220, 75, 220, 76, 220, 77, 220, 78, 220, 79, 220, 80, 220, 81, 220, 82, 220, 83, 220, 84, 220, 85, 220, 86, 220, 87, 220, 88, 220, 89, 220, 90, 220, 91, 220, 92, 220, 93, 220, 94, 220, 95, 220, 96, 220, 97, 220, 98, 220, 99, 220, 168, 220, 169, 220, 170, 220, 171, 220, 172, 220, 173, 220, 174, 220, 175, 220, 176, 220, 177, 220, 178, 220, 179, 220, 180, 220, 181, 220, 182, 220, 183, 220, 184, 220, 185, 220, 186, 220, 187, 220, 188, 221, 3, 221, 4, 221, 5, 221, 6, 221, 7, 221, 8, 221, 9, 221, 10, 221, 11, 221, 12, 221, 13, 221, 14, 221, 15, 221, 16, 221, 17, 221, 18, 221, 19, 221, 20, 221, 21, 221, 22, 221, 23, 221, 24, 221, 25, 221, 26, 221, 27, 221, 28, 221, 29, 221, 30, 221, 31, 221, 32, 221, 33, 221, 34, 221, 35, 221, 36, 221, 37, 221, 38, 221, 39, 221, 40, 221, 41, 221, 42, 221, 43, 221, 44, 221, 45, 221, 46, 221, 47, 221, 48, 221, 49, 221, 50, 221, 51, 221, 52, 221, 53, 221, 54, 221, 55, 221, 56, 221, 57, 221, 58, 221, 59, 221, 60, 221, 61, 221, 62, 221, 63, 221, 64, 221, 65, 221, 66, 221, 67, 221, 68, 221, 69, 221, 70, 221, 71, 221, 72, 221, 73, 221, 74, 221, 75, 221, 76, 221, 77, 221, 78, 221, 79, 221, 80, 221, 81, 221, 82, 221, 83, 221, 84, 221, 85, 221, 86, 221, 87, 221, 88, 221, 89, 221, 90, 221, 91, 221, 92, 221, 93, 221, 94, 221, 95, 221, 96, 221, 97, 221, 98, 221, 99, 221, 100, 221, 168, 221, 169, 221, 170, 221, 171, 221, 172, 221, 173, 221, 174, 221, 175, 221, 176, 221, 177, 221, 178, 221, 179, 221, 180, 221, 181, 221, 182, 221, 183, 221, 184, 221, 185, 221, 186, 221, 187, 221, 188, 222, 3, 222, 4, 222, 5, 222, 6, 222, 7, 222, 8, 222, 9, 222, 10, 222, 11, 222, 12, 222, 13, 222, 14, 222, 15, 222, 16, 222, 17, 222, 18, 222, 19, 222, 20, 222, 21, 222, 22, 222, 23, 222, 24, 222, 25, 222, 26, 222, 27, 222, 28, 222, 29, 222, 30, 222, 31, 222, 32, 222, 33, 222, 34, 222, 35, 222, 36, 222, 37, 222, 38, 222, 39, 222, 40, 222, 41, 222, 42, 222, 43, 222, 44, 222, 45, 222, 46, 222, 47, 222, 48, 222, 49, 222, 50, 222, 51, 222, 52, 222, 53, 222, 54, 222, 55, 222, 56, 222, 57, 222, 58, 222, 59, 222, 60, 222, 61, 222, 62, 222, 63, 222, 64, 222, 65, 222, 66, 222, 67, 222, 68, 222, 69, 222, 70, 222, 71, 222, 72, 222, 73, 222, 74, 222, 75, 222, 76, 222, 77, 222, 78, 222, 79, 222, 80, 222, 81, 222, 82, 222, 83, 222, 84, 222, 85, 222, 86, 222, 87, 222, 88, 222, 89, 222, 90, 222, 91, 222, 92, 222, 93, 222, 94, 222, 95, 222, 96, 222, 97, 222, 98, 222, 99, 222, 100, 222, 101, 222, 168, 222, 169, 222, 170, 222, 171, 222, 172, 222, 173, 222, 174, 222, 175, 222, 176, 222, 177, 222, 178, 222, 179, 222, 180, 222, 181, 222, 182, 222, 183, 222, 184, 222, 185, 222, 186, 222, 187, 222, 188, 223, 3, 223, 4, 223, 5, 223, 6, 223, 7, 223, 8, 223, 9, 223, 10, 223, 11, 223, 12, 223, 13, 223, 14, 223, 15, 223, 16, 223, 17, 223, 18, 223, 19, 223, 20, 223, 21, 223, 22, 223, 23, 223, 24, 223, 25, 223, 26, 223, 27, 223, 28, 223, 29, 223, 30, 223, 31, 223, 32, 223, 33, 223, 34, 223, 35, 223, 36, 223, 37, 223, 38, 223, 39, 223, 40, 223, 41, 223, 42, 223, 43, 223, 44, 223, 45, 223, 46, 223, 47, 223, 48, 223, 49, 223, 50, 223, 51, 223, 52, 223, 53, 223, 54, 223, 55, 223, 56, 223, 57, 223, 58, 223, 59, 223, 60, 223, 61, 223, 62, 223, 63, 223, 64, 223, 65, 223, 66, 223, 67, 223, 68, 223, 69, 223, 70, 223, 71, 223, 72, 223, 73, 223, 74, 223, 75, 223, 76, 223, 77, 223, 78, 223, 79, 223, 80, 223, 81, 223, 82, 223, 83, 223, 84, 223, 85, 223, 86, 223, 87, 223, 88, 223, 89, 223, 90, 223, 91, 223, 92, 223, 93, 223, 94, 223, 95, 223, 96, 223, 97, 223, 98, 223, 99, 223, 100, 223, 101, 223, 168, 223, 169, 223, 170, 223, 171, 223, 172, 223, 173, 223, 174, 223, 175, 223, 176, 223, 177, 223, 178, 223, 179, 223, 180, 223, 181, 223, 182, 223, 183, 223, 184, 223, 185, 223, 186, 223, 187, 223, 188, 224, 3, 224, 4, 224, 5, 224, 6, 224, 7, 224, 8, 224, 9, 224, 10, 224, 11, 224, 12, 224, 13, 224, 14, 224, 15, 224, 16, 224, 17, 224, 18, 224, 19, 224, 20, 224, 21, 224, 22, 224, 23, 224, 24, 224, 25, 224, 26, 224, 27, 224, 28, 224, 29, 224, 30, 224, 31, 224, 32, 224, 33, 224, 34, 224, 35, 224, 36, 224, 37, 224, 38, 224, 39, 224, 40, 224, 41, 224, 42, 224, 43, 224, 44, 224, 45, 224, 46, 224, 47, 224, 48, 224, 49, 224, 50, 224, 51, 224, 52, 224, 53, 224, 54, 224, 55, 224, 56, 224, 57, 224, 58, 224, 59, 224, 60, 224, 61, 224, 62, 224, 63, 224, 64, 224, 65, 224, 66, 224, 67, 224, 68, 224, 69, 224, 70, 224, 71, 224, 72, 224, 73, 224, 74, 224, 75, 224, 76, 224, 77, 224, 78, 224, 79, 224, 80, 224, 81, 224, 82, 224, 83, 224, 84, 224, 85, 224, 86, 224, 87, 224, 88, 224, 89, 224, 90, 224, 91, 224, 92, 224, 93, 224, 94, 224, 95, 224, 96, 224, 97, 224, 98, 224, 99, 224, 100, 224, 101, 224, 102, 224, 168, 224, 169, 224, 170, 224, 171, 224, 172, 224, 173, 224, 174, 224, 175, 224, 176, 224, 177, 224, 178, 224, 179, 224, 180, 224, 181, 224, 182, 224, 183, 224, 184, 224, 185, 224, 186, 224, 187, 224, 188, 225, 3, 225, 4, 225, 5, 225, 6, 225, 7, 225, 8, 225, 9, 225, 10, 225, 11, 225, 12, 225, 13, 225, 14, 225, 15, 225, 16, 225, 17, 225, 18, 225, 19, 225, 20, 225, 21, 225, 22, 225, 23, 225, 24, 225, 25, 225, 26, 225, 27, 225, 28, 225, 29, 225, 30, 225, 31, 225, 32, 225, 33, 225, 34, 225, 35, 225, 36, 225, 37, 225, 38, 225, 39, 225, 40, 225, 41, 225, 42, 225, 43, 225, 44, 225, 45, 225, 46, 225, 47, 225, 48, 225, 49, 225, 50, 225, 51, 225, 52, 225, 53, 225, 54, 225, 55, 225, 56, 225, 57, 225, 58, 225, 59, 225, 60, 225, 61, 225, 62, 225, 63, 225, 64, 225, 65, 225, 66, 225, 67, 225, 68, 225, 69, 225, 70, 225, 71, 225, 72, 225, 73, 225, 74, 225, 75, 225, 76, 225, 77, 225, 78, 225, 79, 225, 80, 225, 81, 225, 82, 225, 83, 225, 84, 225, 85, 225, 86, 225, 87, 225, 88, 225, 89, 225, 90, 225, 91, 225, 92, 225, 93, 225, 94, 225, 95, 225, 96, 225, 97, 225, 98, 225, 99, 225, 100, 225, 101, 225, 102, 225, 103, 225, 124, 225, 125, 225, 126, 225, 127, 225, 168, 225, 169, 225, 170, 225, 171, 225, 172, 225, 173, 225, 174, 225, 175, 225, 176, 225, 177, 225, 178, 225, 179, 225, 180, 225, 181, 225, 182, 225, 183, 225, 184, 225, 185, 225, 186, 225, 187, 225, 188, 226, 3, 226, 4, 226, 5, 226, 6, 226, 7, 226, 8, 226, 9, 226, 10, 226, 11, 226, 12, 226, 13, 226, 14, 226, 15, 226, 16, 226, 17, 226, 18, 226, 19, 226, 20, 226, 21, 226, 22, 226, 23, 226, 24, 226, 25, 226, 26, 226, 27, 226, 28, 226, 29, 226, 30, 226, 31, 226, 32, 226, 33, 226, 34, 226, 35, 226, 36, 226, 37, 226, 38, 226, 39, 226, 40, 226, 41, 226, 42, 226, 43, 226, 44, 226, 45, 226, 46, 226, 47, 226, 48, 226, 49, 226, 50, 226, 51, 226, 52, 226, 53, 226, 54, 226, 55, 226, 56, 226, 57, 226, 58, 226, 59, 226, 60, 226, 61, 226, 62, 226, 63, 226, 64, 226, 65, 226, 66, 226, 67, 226, 68, 226, 69, 226, 70, 226, 71, 226, 72, 226, 73, 226, 74, 226, 75, 226, 76, 226, 77, 226, 78, 226, 79, 226, 80, 226, 81, 226, 82, 226, 83, 226, 84, 226, 85, 226, 86, 226, 87, 226, 88, 226, 89, 226, 90, 226, 91, 226, 92, 226, 93, 226, 94, 226, 95, 226, 96, 226, 97, 226, 98, 226, 99, 226, 100, 226, 101, 226, 102, 226, 103, 226, 104, 226, 105, 226, 106, 226, 118, 226, 119, 226, 120, 226, 121, 226, 122, 226, 123, 226, 124, 226, 125, 226, 126, 226, 127, 226, 128, 226, 129, 226, 167, 226, 168, 226, 169, 226, 170, 226, 171, 226, 172, 226, 173, 226, 174, 226, 175, 226, 176, 226, 177, 226, 178, 226, 179, 226, 180, 226, 181, 226, 182, 226, 183, 226, 184, 226, 185, 226, 186, 226, 187, 226, 188, 227, 3, 227, 4, 227, 5, 227, 6, 227, 7, 227, 8, 227, 9, 227, 10, 227, 11, 227, 12, 227, 13, 227, 14, 227, 15, 227, 16, 227, 17, 227, 18, 227, 19, 227, 20, 227, 21, 227, 22, 227, 23, 227, 24, 227, 25, 227, 26, 227, 27, 227, 28, 227, 29, 227, 30, 227, 31, 227, 32, 227, 33, 227, 34, 227, 35, 227, 36, 227, 37, 227, 38, 227, 39, 227, 40, 227, 41, 227, 42, 227, 43, 227, 44, 227, 45, 227, 46, 227, 47, 227, 48, 227, 49, 227, 50, 227, 51, 227, 52, 227, 53, 227, 54, 227, 55, 227, 56, 227, 57, 227, 58, 227, 59, 227, 60, 227, 61, 227, 62, 227, 63, 227, 64, 227, 65, 227, 66, 227, 67, 227, 68, 227, 69, 227, 70, 227, 71, 227, 72, 227, 73, 227, 74, 227, 75, 227, 76, 227, 77, 227, 78, 227, 79, 227, 80, 227, 81, 227, 82, 227, 83, 227, 84, 227, 85, 227, 86, 227, 87, 227, 88, 227, 89, 227, 90, 227, 91, 227, 92, 227, 93, 227, 94, 227, 95, 227, 96, 227, 97, 227, 98, 227, 99, 227, 100, 227, 101, 227, 102, 227, 103, 227, 104, 227, 105, 227, 106, 227, 107, 227, 108, 227, 109, 227, 115, 227, 116, 227, 117, 227, 118, 227, 119, 227, 120, 227, 121, 227, 122, 227, 123, 227, 124, 227, 125, 227, 126, 227, 127, 227, 128, 227, 129, 227, 130, 227, 131, 227, 167, 227, 168, 227, 169, 227, 170, 227, 171, 227, 172, 227, 173, 227, 174, 227, 175, 227, 176, 227, 177, 227, 178, 227, 179, 227, 180, 227, 181, 227, 182, 227, 183, 227, 184, 227, 185, 227, 186, 227, 187, 227, 188, 228, 3, 228, 4, 228, 5, 228, 6, 228, 7, 228, 8, 228, 9, 228, 10, 228, 11, 228, 12, 228, 13, 228, 14, 228, 15, 228, 16, 228, 17, 228, 18, 228, 19, 228, 20, 228, 21, 228, 22, 228, 23, 228, 24, 228, 25, 228, 26, 228, 27, 228, 28, 228, 29, 228, 30, 228, 31, 228, 32, 228, 33, 228, 34, 228, 35, 228, 36, 228, 37, 228, 38, 228, 39, 228, 40, 228, 41, 228, 42, 228, 43, 228, 44, 228, 45, 228, 46, 228, 47, 228, 48, 228, 49, 228, 50, 228, 51, 228, 52, 228, 53, 228, 54, 228, 55, 228, 56, 228, 57, 228, 58, 228, 59, 228, 60, 228, 61, 228, 62, 228, 63, 228, 64, 228, 65, 228, 66, 228, 67, 228, 68, 228, 69, 228, 70, 228, 71, 228, 72, 228, 73, 228, 74, 228, 75, 228, 76, 228, 77, 228, 78, 228, 79, 228, 80, 228, 81, 228, 82, 228, 83, 228, 84, 228, 85, 228, 86, 228, 87, 228, 88, 228, 89, 228, 90, 228, 91, 228, 92, 228, 93, 228, 94, 228, 95, 228, 96, 228, 97, 228, 98, 228, 99, 228, 100, 228, 101, 228, 102, 228, 103, 228, 104, 228, 105, 228, 106, 228, 107, 228, 108, 228, 109, 228, 110, 228, 111, 228, 112, 228, 113, 228, 114, 228, 115, 228, 116, 228, 117, 228, 118, 228, 119, 228, 120, 228, 121, 228, 122, 228, 123, 228, 124, 228, 125, 228, 126, 228, 127, 228, 128, 228, 129, 228, 130, 228, 131, 228, 132, 228, 133, 228, 166, 228, 167, 228, 168, 228, 169, 228, 170, 228, 171, 228, 172, 228, 173, 228, 174, 228, 175, 228, 176, 228, 177, 228, 178, 228, 179, 228, 180, 228, 181, 228, 182, 228, 183, 228, 184, 228, 185, 228, 186, 228, 187, 228, 188, 229, 3, 229, 4, 229, 5, 229, 6, 229, 7, 229, 8, 229, 9, 229, 10, 229, 11, 229, 12, 229, 13, 229, 14, 229, 15, 229, 16, 229, 17, 229, 18, 229, 19, 229, 20, 229, 21, 229, 22, 229, 23, 229, 24, 229, 25, 229, 26, 229, 27, 229, 28, 229, 29, 229, 30, 229, 31, 229, 32, 229, 33, 229, 34, 229, 35, 229, 36, 229, 37, 229, 38, 229, 39, 229, 40, 229, 41, 229, 42, 229, 43, 229, 44, 229, 45, 229, 46, 229, 47, 229, 48, 229, 49, 229, 50, 229, 51, 229, 52, 229, 53, 229, 54, 229, 55, 229, 56, 229, 57, 229, 58, 229, 59, 229, 60, 229, 61, 229, 62, 229, 63, 229, 64, 229, 65, 229, 66, 229, 67, 229, 68, 229, 69, 229, 70, 229, 71, 229, 72, 229, 73, 229, 74, 229, 75, 229, 76, 229, 77, 229, 78, 229, 79, 229, 80, 229, 81, 229, 82, 229, 83, 229, 84, 229, 85, 229, 86, 229, 87, 229, 88, 229, 89, 229, 90, 229, 91, 229, 92, 229, 93, 229, 94, 229, 95, 229, 96, 229, 97, 229, 98, 229, 99, 229, 100, 229, 101, 229, 102, 229, 103, 229, 104, 229, 105, 229, 106, 229, 107, 229, 108, 229, 109, 229, 110, 229, 111, 229, 112, 229, 113, 229, 114, 229, 115, 229, 116, 229, 117, 229, 118, 229, 119, 229, 120, 229, 121, 229, 122, 229, 123, 229, 124, 229, 125, 229, 126, 229, 127, 229, 128, 229, 129, 229, 130, 229, 131, 229, 132, 229, 133, 229, 134, 229, 135, 229, 166, 229, 167, 229, 168, 229, 169, 229, 170, 229, 171, 229, 172, 229, 173, 229, 174, 229, 175, 229, 176, 229, 177, 229, 178, 229, 179, 229, 180, 229, 181, 229, 182, 229, 183, 229, 184, 229, 185, 229, 186, 229, 187, 229, 188, 230, 3, 230, 4, 230, 5, 230, 6, 230, 7, 230, 8, 230, 9, 230, 10, 230, 11, 230, 12, 230, 13, 230, 14, 230, 15, 230, 16, 230, 17, 230, 18, 230, 19, 230, 20, 230, 21, 230, 22, 230, 23, 230, 24, 230, 25, 230, 26, 230, 27, 230, 28, 230, 29, 230, 30, 230, 31, 230, 32, 230, 33, 230, 34, 230, 35, 230, 36, 230, 37, 230, 38, 230, 39, 230, 40, 230, 41, 230, 42, 230, 43, 230, 44, 230, 45, 230, 46, 230, 47, 230, 48, 230, 49, 230, 50, 230, 51, 230, 52, 230, 53, 230, 54, 230, 55, 230, 56, 230, 57, 230, 58, 230, 59, 230, 60, 230, 61, 230, 62, 230, 63, 230, 64, 230, 65, 230, 66, 230, 67, 230, 68, 230, 69, 230, 70, 230, 71, 230, 72, 230, 73, 230, 74, 230, 75, 230, 76, 230, 77, 230, 78, 230, 79, 230, 80, 230, 81, 230, 82, 230, 83, 230, 84, 230, 85, 230, 86, 230, 87, 230, 88, 230, 89, 230, 90, 230, 91, 230, 92, 230, 93, 230, 94, 230, 95, 230, 96, 230, 97, 230, 98, 230, 99, 230, 100, 230, 101, 230, 102, 230, 103, 230, 104, 230, 105, 230, 106, 230, 107, 230, 108, 230, 109, 230, 110, 230, 111, 230, 112, 230, 113, 230, 114, 230, 115, 230, 116, 230, 117, 230, 118, 230, 119, 230, 120, 230, 121, 230, 122, 230, 123, 230, 124, 230, 125, 230, 126, 230, 127, 230, 128, 230, 129, 230, 130, 230, 131, 230, 132, 230, 133, 230, 134, 230, 135, 230, 136, 230, 137, 230, 165, 230, 166, 230, 167, 230, 168, 230, 169, 230, 170, 230, 171, 230, 172, 230, 173, 230, 174, 230, 175, 230, 176, 230, 177, 230, 178, 230, 179, 230, 180, 230, 181, 230, 182, 230, 183, 230, 184, 230, 185, 230, 186, 230, 187, 230, 188, 231, 3, 231, 4, 231, 5, 231, 6, 231, 7, 231, 8, 231, 9, 231, 10, 231, 11, 231, 12, 231, 13, 231, 14, 231, 15, 231, 16, 231, 17, 231, 18, 231, 19, 231, 20, 231, 21, 231, 22, 231, 23, 231, 24, 231, 25, 231, 26, 231, 27, 231, 28, 231, 29, 231, 30, 231, 31, 231, 32, 231, 33, 231, 34, 231, 35, 231, 36, 231, 37, 231, 38, 231, 39, 231, 40, 231, 41, 231, 42, 231, 43, 231, 44, 231, 45, 231, 46, 231, 47, 231, 48, 231, 49, 231, 50, 231, 51, 231, 52, 231, 53, 231, 54, 231, 55, 231, 56, 231, 57, 231, 58, 231, 59, 231, 60, 231, 61, 231, 62, 231, 63, 231, 64, 231, 65, 231, 66, 231, 67, 231, 68, 231, 69, 231, 70, 231, 71, 231, 72, 231, 73, 231, 74, 231, 75, 231, 76, 231, 77, 231, 78, 231, 79, 231, 80, 231, 81, 231, 82, 231, 83, 231, 84, 231, 85, 231, 86, 231, 87, 231, 88, 231, 89, 231, 90, 231, 91, 231, 92, 231, 93, 231, 94, 231, 95, 231, 96, 231, 97, 231, 98, 231, 99, 231, 100, 231, 101, 231, 102, 231, 103, 231, 104, 231, 105, 231, 106, 231, 107, 231, 108, 231, 109, 231, 110, 231, 111, 231, 112, 231, 113, 231, 114, 231, 115, 231, 116, 231, 117, 231, 118, 231, 119, 231, 120, 231, 121, 231, 122, 231, 123, 231, 124, 231, 125, 231, 126, 231, 127, 231, 128, 231, 129, 231, 130, 231, 131, 231, 132, 231, 133, 231, 134, 231, 135, 231, 136, 231, 137, 231, 138, 231, 139, 231, 164, 231, 165, 231, 166, 231, 167, 231, 168, 231, 169, 231, 170, 231, 171, 231, 172, 231, 173, 231, 174, 231, 175, 231, 176, 231, 177, 231, 178, 231, 179, 231, 180, 231, 181, 231, 182, 231, 183, 231, 184, 231, 185, 231, 186, 231, 187, 231, 188, 232, 3, 232, 4, 232, 5, 232, 6, 232, 7, 232, 8, 232, 9, 232, 10, 232, 11, 232, 12, 232, 13, 232, 14, 232, 15, 232, 16, 232, 17, 232, 18, 232, 19, 232, 20, 232, 21, 232, 22, 232, 23, 232, 24, 232, 25, 232, 26, 232, 27, 232, 28, 232, 29, 232, 30, 232, 31, 232, 32, 232, 33, 232, 34, 232, 35, 232, 36, 232, 37, 232, 38, 232, 39, 232, 40, 232, 41, 232, 42, 232, 43, 232, 44, 232, 45, 232, 46, 232, 47, 232, 48, 232, 49, 232, 50, 232, 51, 232, 52, 232, 53, 232, 54, 232, 55, 232, 56, 232, 57, 232, 58, 232, 59, 232, 60, 232, 61, 232, 62, 232, 63, 232, 64, 232, 65, 232, 66, 232, 67, 232, 68, 232, 69, 232, 70, 232, 71, 232, 72, 232, 73, 232, 74, 232, 75, 232, 76, 232, 77, 232, 78, 232, 79, 232, 80, 232, 81, 232, 82, 232, 83, 232, 84, 232, 85, 232, 86, 232, 87, 232, 88, 232, 89, 232, 90, 232, 91, 232, 92, 232, 93, 232, 94, 232, 95, 232, 96, 232, 97, 232, 98, 232, 99, 232, 100, 232, 101, 232, 102, 232, 103, 232, 104, 232, 105, 232, 106, 232, 107, 232, 108, 232, 109, 232, 110, 232, 111, 232, 112, 232, 113, 232, 114, 232, 115, 232, 116, 232, 117, 232, 118, 232, 119, 232, 120, 232, 121, 232, 122, 232, 123, 232, 124, 232, 125, 232, 126, 232, 127, 232, 128, 232, 129, 232, 130, 232, 131, 232, 132, 232, 133, 232, 134, 232, 135, 232, 136, 232, 137, 232, 138, 232, 139, 232, 140, 232, 141, 232, 142, 232, 164, 232, 165, 232, 166, 232, 167, 232, 168, 232, 169, 232, 170, 232, 171, 232, 172, 232, 173, 232, 174, 232, 175, 232, 176, 232, 177, 232, 178, 232, 179, 232, 180, 232, 181, 232, 182, 232, 183, 232, 184, 232, 185, 232, 186, 232, 187, 232, 188, 233, 3, 233, 4, 233, 5, 233, 6, 233, 7, 233, 8, 233, 9, 233, 10, 233, 11, 233, 12, 233, 13, 233, 14, 233, 15, 233, 16, 233, 17, 233, 18, 233, 19, 233, 20, 233, 21, 233, 22, 233, 23, 233, 24, 233, 25, 233, 26, 233, 27, 233, 28, 233, 29, 233, 30, 233, 31, 233, 32, 233, 33, 233, 34, 233, 35, 233, 36, 233, 37, 233, 38, 233, 39, 233, 40, 233, 41, 233, 42, 233, 43, 233, 44, 233, 45, 233, 46, 233, 47, 233, 48, 233, 49, 233, 50, 233, 51, 233, 52, 233, 53, 233, 54, 233, 55, 233, 56, 233, 57, 233, 58, 233, 59, 233, 60, 233, 61, 233, 62, 233, 63, 233, 64, 233, 65, 233, 66, 233, 67, 233, 68, 233, 69, 233, 70, 233, 71, 233, 72, 233, 73, 233, 74, 233, 75, 233, 76, 233, 77, 233, 78, 233, 79, 233, 80, 233, 81, 233, 82, 233, 83, 233, 84, 233, 85, 233, 86, 233, 87, 233, 88, 233, 89, 233, 90, 233, 91, 233, 92, 233, 93, 233, 94, 233, 95, 233, 96, 233, 97, 233, 98, 233, 99, 233, 100, 233, 101, 233, 102, 233, 103, 233, 104, 233, 105, 233, 106, 233, 107, 233, 108, 233, 109, 233, 110, 233, 111, 233, 112, 233, 113, 233, 114, 233, 115, 233, 116, 233, 117, 233, 118, 233, 119, 233, 120, 233, 121, 233, 122, 233, 123, 233, 124, 233, 125, 233, 126, 233, 127, 233, 128, 233, 129, 233, 130, 233, 131, 233, 132, 233, 133, 233, 134, 233, 135, 233, 136, 233, 137, 233, 138, 233, 139, 233, 140, 233, 141, 233, 142, 233, 143, 233, 144, 233, 145, 233, 163, 233, 164, 233, 165, 233, 166, 233, 167, 233, 168, 233, 169, 233, 170, 233, 171, 233, 172, 233, 173, 233, 174, 233, 175, 233, 176, 233, 177, 233, 178, 233, 179, 233, 180, 233, 181, 233, 182, 233, 183, 233, 184, 233, 185, 233, 186, 233, 187, 233, 188, 234, 3, 234, 4, 234, 5, 234, 6, 234, 7, 234, 8, 234, 9, 234, 10, 234, 11, 234, 12, 234, 13, 234, 14, 234, 15, 234, 16, 234, 17, 234, 18, 234, 19, 234, 20, 234, 21, 234, 22, 234, 23, 234, 24, 234, 25, 234, 26, 234, 27, 234, 28, 234, 29, 234, 30, 234, 31, 234, 32, 234, 33, 234, 34, 234, 35, 234, 36, 234, 37, 234, 38, 234, 39, 234, 40, 234, 41, 234, 42, 234, 43, 234, 44, 234, 45, 234, 46, 234, 47, 234, 48, 234, 49, 234, 50, 234, 51, 234, 52, 234, 53, 234, 54, 234, 55, 234, 56, 234, 57, 234, 58, 234, 59, 234, 60, 234, 61, 234, 62, 234, 63, 234, 64, 234, 65, 234, 66, 234, 67, 234, 68, 234, 69, 234, 70, 234, 71, 234, 72, 234, 73, 234, 74, 234, 75, 234, 76, 234, 77, 234, 78, 234, 79, 234, 80, 234, 81, 234, 82, 234, 83, 234, 84, 234, 85, 234, 86, 234, 87, 234, 88, 234, 89, 234, 90, 234, 91, 234, 92, 234, 93, 234, 94, 234, 95, 234, 96, 234, 97, 234, 98, 234, 99, 234, 100, 234, 101, 234, 102, 234, 103, 234, 104, 234, 105, 234, 106, 234, 107, 234, 108, 234, 109, 234, 110, 234, 111, 234, 112, 234, 113, 234, 114, 234, 115, 234, 116, 234, 117, 234, 118, 234, 119, 234, 120, 234, 121, 234, 122, 234, 123, 234, 124, 234, 125, 234, 126, 234, 127, 234, 128, 234, 129, 234, 130, 234, 131, 234, 132, 234, 133, 234, 134, 234, 135, 234, 136, 234, 137, 234, 138, 234, 139, 234, 140, 234, 141, 234, 142, 234, 143, 234, 144, 234, 145, 234, 146, 234, 147, 234, 148, 234, 160, 234, 161, 234, 162, 234, 163, 234, 164, 234, 165, 234, 166, 234, 167, 234, 168, 234, 169, 234, 170, 234, 171, 234, 172, 234, 173, 234, 174, 234, 175, 234, 176, 234, 177, 234, 178, 234, 179, 234, 180, 234, 181, 234, 182, 234, 183, 234, 184, 234, 185, 234, 186, 234, 187, 234, 188, 235, 3, 235, 4, 235, 5, 235, 6, 235, 7, 235, 8, 235, 9, 235, 10, 235, 11, 235, 12, 235, 13, 235, 14, 235, 15, 235, 16, 235, 17, 235, 18, 235, 19, 235, 20, 235, 21, 235, 22, 235, 23, 235, 24, 235, 25, 235, 26, 235, 27, 235, 28, 235, 29, 235, 30, 235, 31, 235, 32, 235, 33, 235, 34, 235, 35, 235, 36, 235, 37, 235, 38, 235, 39, 235, 40, 235, 41, 235, 42, 235, 43, 235, 44, 235, 45, 235, 46, 235, 47, 235, 48, 235, 49, 235, 50, 235, 51, 235, 52, 235, 53, 235, 54, 235, 55, 235, 56, 235, 57, 235, 58, 235, 59, 235, 60, 235, 61, 235, 62, 235, 63, 235, 64, 235, 65, 235, 66, 235, 67, 235, 68, 235, 69, 235, 70, 235, 71, 235, 72, 235, 73, 235, 74, 235, 75, 235, 76, 235, 77, 235, 78, 235, 79, 235, 80, 235, 81, 235, 82, 235, 83, 235, 84, 235, 85, 235, 86, 235, 87, 235, 88, 235, 89, 235, 90, 235, 91, 235, 92, 235, 93, 235, 94, 235, 95, 235, 96, 235, 97, 235, 98, 235, 99, 235, 100, 235, 101, 235, 102, 235, 103, 235, 104, 235, 105, 235, 106, 235, 107, 235, 108, 235, 109, 235, 110, 235, 111, 235, 112, 235, 113, 235, 114, 235, 115, 235, 116, 235, 117, 235, 118, 235, 119, 235, 120, 235, 121, 235, 122, 235, 123, 235, 124, 235, 125, 235, 126, 235, 127, 235, 128, 235, 129, 235, 130, 235, 131, 235, 132, 235, 133, 235, 134, 235, 135, 235, 136, 235, 137, 235, 138, 235, 139, 235, 140, 235, 141, 235, 142, 235, 143, 235, 144, 235, 145, 235, 146, 235, 147, 235, 148, 235, 149, 235, 150, 235, 151, 235, 152, 235, 153, 235, 154, 235, 155, 235, 156, 235, 157, 235, 158, 235, 159, 235, 160, 235, 161, 235, 162, 235, 163, 235, 164, 235, 165, 235, 166, 235, 167, 235, 168, 235, 169, 235, 170, 235, 171, 235, 172, 235, 173, 235, 174, 235, 175, 235, 176, 235, 177, 235, 178, 235, 179, 235, 180, 235, 181, 235, 182, 235, 183, 235, 184, 235, 185, 235, 186, 235, 187, 235, 188, 236, 3, 236, 4, 236, 5, 236, 6, 236, 7, 236, 8, 236, 9, 236, 10, 236, 11, 236, 12, 236, 13, 236, 14, 236, 15, 236, 16, 236, 17, 236, 18, 236, 19, 236, 20, 236, 21, 236, 22, 236, 23, 236, 24, 236, 25, 236, 26, 236, 27, 236, 28, 236, 29, 236, 30, 236, 31, 236, 32, 236, 33, 236, 34, 236, 35, 236, 36, 236, 37, 236, 38, 236, 39, 236, 40, 236, 41, 236, 42, 236, 43, 236, 44, 236, 45, 236, 46, 236, 47, 236, 48, 236, 49, 236, 50, 236, 51, 236, 52, 236, 53, 236, 54, 236, 55, 236, 56, 236, 57, 236, 58, 236, 59, 236, 60, 236, 61, 236, 62, 236, 63, 236, 64, 236, 65, 236, 66, 236, 67, 236, 68, 236, 69, 236, 70, 236, 71, 236, 72, 236, 73, 236, 74, 236, 75, 236, 76, 236, 77, 236, 78, 236, 79, 236, 80, 236, 81, 236, 82, 236, 83, 236, 84, 236, 85, 236, 86, 236, 87, 236, 88, 236, 89, 236, 90, 236, 91, 236, 92, 236, 93, 236, 94, 236, 95, 236, 96, 236, 97, 236, 98, 236, 99, 236, 100, 236, 101, 236, 102, 236, 103, 236, 104, 236, 105, 236, 106, 236, 107, 236, 108, 236, 109, 236, 110, 236, 111, 236, 112, 236, 113, 236, 114, 236, 115, 236, 116, 236, 117, 236, 118, 236, 119, 236, 120, 236, 121, 236, 122, 236, 123, 236, 124, 236, 125, 236, 126, 236, 127, 236, 128, 236, 129, 236, 130, 236, 131, 236, 132, 236, 133, 236, 134, 236, 135, 236, 136, 236, 137, 236, 138, 236, 139, 236, 140, 236, 141, 236, 142, 236, 143, 236, 144, 236, 145, 236, 146, 236, 147, 236, 148, 236, 149, 236, 150, 236, 151, 236, 152, 236, 153, 236, 154, 236, 155, 236, 156, 236, 157, 236, 158, 236, 159, 236, 160, 236, 161, 236, 162, 236, 163, 236, 164, 236, 165, 236, 166, 236, 167, 236, 168, 236, 169, 236, 170, 236, 171, 236, 172, 236, 173, 236, 174, 236, 175, 236, 176, 236, 177, 236, 178, 236, 179, 236, 180, 236, 181, 236, 182, 236, 183, 236, 184, 236, 185, 236, 186, 236, 187, 236, 188, 237, 3, 237, 4, 237, 5, 237, 6, 237, 7, 237, 8, 237, 9, 237, 10, 237, 11, 237, 12, 237, 13, 237, 14, 237, 15, 237, 16, 237, 17, 237, 18, 237, 19, 237, 20, 237, 21, 237, 22, 237, 23, 237, 24, 237, 25, 237, 26, 237, 27, 237, 28, 237, 29, 237, 30, 237, 31, 237, 32, 237, 33, 237, 34, 237, 35, 237, 36, 237, 37, 237, 38, 237, 39, 237, 40, 237, 41, 237, 42, 237, 43, 237, 44, 237, 45, 237, 46, 237, 47, 237, 48, 237, 49, 237, 50, 237, 51, 237, 52, 237, 53, 237, 54, 237, 55, 237, 56, 237, 57, 237, 58, 237, 59, 237, 60, 237, 61, 237, 62, 237, 63, 237, 64, 237, 65, 237, 66, 237, 67, 237, 68, 237, 69, 237, 70, 237, 71, 237, 72, 237, 73, 237, 74, 237, 75, 237, 76, 237, 77, 237, 78, 237, 79, 237, 80, 237, 81, 237, 82, 237, 83, 237, 84, 237, 85, 237, 86, 237, 87, 237, 88, 237, 89, 237, 90, 237, 91, 237, 92, 237, 93, 237, 94, 237, 95, 237, 96, 237, 97, 237, 98, 237, 99, 237, 100, 237, 101, 237, 102, 237, 103, 237, 104, 237, 105, 237, 106, 237, 107, 237, 108, 237, 109, 237, 110, 237, 111, 237, 112, 237, 113, 237, 114, 237, 115, 237, 116, 237, 117, 237, 118, 237, 119, 237, 120, 237, 121, 237, 122, 237, 123, 237, 124, 237, 125, 237, 126, 237, 127, 237, 128, 237, 129, 237, 130, 237, 131, 237, 132, 237, 133, 237, 134, 237, 135, 237, 136, 237, 137, 237, 138, 237, 139, 237, 140, 237, 141, 237, 142, 237, 143, 237, 144, 237, 145, 237, 146, 237, 147, 237, 148, 237, 149, 237, 150, 237, 151, 237, 152, 237, 153, 237, 154, 237, 155, 237, 156, 237, 157, 237, 158, 237, 159, 237, 160, 237, 161, 237, 162, 237, 163, 237, 164, 237, 165, 237, 166, 237, 167, 237, 168, 237, 169, 237, 170, 237, 171, 237, 172, 237, 173, 237, 174, 237, 175, 237, 176, 237, 177, 237, 178, 237, 179, 237, 180, 237, 181, 237, 182, 237, 183, 237, 184, 237, 185, 237, 186, 237, 187, 237, 188, 238, 3, 238, 4, 238, 5, 238, 6, 238, 7, 238, 8, 238, 9, 238, 10, 238, 11, 238, 12, 238, 13, 238, 14, 238, 15, 238, 16, 238, 17, 238, 18, 238, 19, 238, 20, 238, 21, 238, 22, 238, 23, 238, 24, 238, 25, 238, 26, 238, 27, 238, 28, 238, 29, 238, 30, 238, 31, 238, 32, 238, 33, 238, 34, 238, 35, 238, 36, 238, 37, 238, 38, 238, 39, 238, 40, 238, 41, 238, 42, 238, 43, 238, 44, 238, 45, 238, 46, 238, 47, 238, 48, 238, 49, 238, 50, 238, 51, 238, 52, 238, 53, 238, 54, 238, 55, 238, 56, 238, 57, 238, 58, 238, 59, 238, 60, 238, 61, 238, 62, 238, 63, 238, 64, 238, 65, 238, 66, 238, 67, 238, 68, 238, 69, 238, 70, 238, 71, 238, 72, 238, 73, 238, 74, 238, 75, 238, 76, 238, 77, 238, 78, 238, 79, 238, 80, 238, 81, 238, 82, 238, 83, 238, 84, 238, 85, 238, 86, 238, 87, 238, 88, 238, 89, 238, 90, 238, 91, 238, 92, 238, 93, 238, 94, 238, 95, 238, 96, 238, 97, 238, 98, 238, 99, 238, 100, 238, 101, 238, 102, 238, 103, 238, 104, 238, 105, 238, 106, 238, 107, 238, 108, 238, 109, 238, 110, 238, 111, 238, 112, 238, 113, 238, 114, 238, 115, 238, 116, 238, 117, 238, 118, 238, 119, 238, 120, 238, 121, 238, 122, 238, 123, 238, 124, 238, 125, 238, 126, 238, 127, 238, 128, 238, 129, 238, 130, 238, 131, 238, 132, 238, 133, 238, 134, 238, 135, 238, 136, 238, 137, 238, 138, 238, 139, 238, 140, 238, 141, 238, 142, 238, 143, 238, 144, 238, 145, 238, 146, 238, 147, 238, 148, 238, 149, 238, 150, 238, 151, 238, 152, 238, 153, 238, 154, 238, 155, 238, 156, 238, 157, 238, 158, 238, 159, 238, 160, 238, 161, 238, 162, 238, 163, 238, 164, 238, 165, 238, 166, 238, 167, 238, 168, 238, 169, 238, 170, 238, 171, 238, 172, 238, 173, 238, 174, 238, 175, 238, 176, 238, 177, 238, 178, 238, 179, 238, 180, 238, 181, 238, 182, 238, 183, 238, 184, 238, 185, 238, 186, 238, 187, 238, 188, 239, 3, 239, 4, 239, 5, 239, 6, 239, 7, 239, 8, 239, 9, 239, 10, 239, 11, 239, 12, 239, 13, 239, 14, 239, 15, 239, 16, 239, 17, 239, 18, 239, 19, 239, 20, 239, 21, 239, 22, 239, 23, 239, 24, 239, 25, 239, 26, 239, 27, 239, 28, 239, 29, 239, 30, 239, 31, 239, 32, 239, 33, 239, 34, 239, 35, 239, 36, 239, 37, 239, 38, 239, 39, 239, 40, 239, 41, 239, 42, 239, 43, 239, 44, 239, 45, 239, 46, 239, 47, 239, 48, 239, 49, 239, 50, 239, 51, 239, 52, 239, 53, 239, 54, 239, 55, 239, 56, 239, 57, 239, 58, 239, 59, 239, 60, 239, 61, 239, 62, 239, 63, 239, 64, 239, 65, 239, 66, 239, 67, 239, 68, 239, 69, 239, 70, 239, 71, 239, 72, 239, 73, 239, 74, 239, 75, 239, 76, 239, 77, 239, 78, 239, 79, 239, 80, 239, 81, 239, 82, 239, 83, 239, 84, 239, 85, 239, 86, 239, 87, 239, 88, 239, 89, 239, 90, 239, 91, 239, 92, 239, 93, 239, 94, 239, 95, 239, 96, 239, 97, 239, 98, 239, 99, 239, 100, 239, 101, 239, 102, 239, 103, 239, 104, 239, 105, 239, 106, 239, 107, 239, 108, 239, 109, 239, 110, 239, 111, 239, 112, 239, 113, 239, 114, 239, 115, 239, 116, 239, 117, 239, 118, 239, 119, 239, 120, 239, 121, 239, 122, 239, 123, 239, 124, 239, 125, 239, 126, 239, 127, 239, 128, 239, 129, 239, 130, 239, 131, 239, 132, 239, 133, 239, 134, 239, 135, 239, 136, 239, 137, 239, 138, 239, 139, 239, 140, 239, 141, 239, 142, 239, 143, 239, 144, 239, 145, 239, 146, 239, 147, 239, 148, 239, 149, 239, 150, 239, 151, 239, 152, 239, 153, 239, 154, 239, 155, 239, 156, 239, 157, 239, 158, 239, 159, 239, 160, 239, 161, 239, 162, 239, 163, 239, 164, 239, 165, 239, 166, 239, 167, 239, 168, 239, 169, 239, 170, 239, 171, 239, 172, 239, 173, 239, 174, 239, 175, 239, 176, 239, 177, 239, 178, 239, 179, 239, 180, 239, 181, 239, 182, 239, 183, 239, 184, 239, 185, 239, 186, 239, 187, 239, 188, 240, 3, 240, 4, 240, 5, 240, 6, 240, 7, 240, 8, 240, 9, 240, 10, 240, 11, 240, 12, 240, 13, 240, 14, 240, 15, 240, 16, 240, 17, 240, 18, 240, 19, 240, 20, 240, 21, 240, 22, 240, 23, 240, 24, 240, 25, 240, 26, 240, 27, 240, 28, 240, 29, 240, 30, 240, 31, 240, 32, 240, 33, 240, 34, 240, 35, 240, 36, 240, 37, 240, 38, 240, 39, 240, 40, 240, 41, 240, 42, 240, 43, 240, 44, 240, 45, 240, 46, 240, 47, 240, 48, 240, 49, 240, 50, 240, 51, 240, 52, 240, 53, 240, 54, 240, 55, 240, 56, 240, 57, 240, 58, 240, 59, 240, 60, 240, 61, 240, 62, 240, 63, 240, 64, 240, 65, 240, 66, 240, 67, 240, 68, 240, 69, 240, 70, 240, 71, 240, 72, 240, 73, 240, 74, 240, 75, 240, 76, 240, 77, 240, 78, 240, 79, 240, 80, 240, 81, 240, 82, 240, 83, 240, 84, 240, 85, 240, 86, 240, 87, 240, 88, 240, 89, 240, 90, 240, 91, 240, 92, 240, 93, 240, 94, 240, 95, 240, 96, 240, 97, 240, 98, 240, 99, 240, 100, 240, 101, 240, 102, 240, 103, 240, 104, 240, 105, 240, 106, 240, 107, 240, 108, 240, 109, 240, 110, 240, 111, 240, 112, 240, 113, 240, 114, 240, 115, 240, 116, 240, 117, 240, 118, 240, 119, 240, 120, 240, 121, 240, 122, 240, 123, 240, 124, 240, 125, 240, 126, 240, 127, 240, 128, 240, 129, 240, 130, 240, 131, 240, 132, 240, 133, 240, 134, 240, 135, 240, 136, 240, 137, 240, 138, 240, 139, 240, 140, 240, 141, 240, 142, 240, 143, 240, 144, 240, 145, 240, 146, 240, 147, 240, 148, 240, 149, 240, 150, 240, 151, 240, 152, 240, 153, 240, 154, 240, 155, 240, 156, 240, 157, 240, 158, 240, 159, 240, 160, 240, 161, 240, 162, 240, 163, 240, 164, 240, 165, 240, 166, 240, 167, 240, 168, 240, 169, 240, 170, 240, 171, 240, 172, 240, 173, 240, 174, 240, 175, 240, 176, 240, 177, 240, 178, 240, 179, 240, 180, 240, 181, 240, 182, 240, 183, 240, 184, 240, 185, 240, 186, 240, 187, 240, 188, 241, 3, 241, 4, 241, 5, 241, 6, 241, 7, 241, 8, 241, 9, 241, 10, 241, 11, 241, 12, 241, 13, 241, 14, 241, 15, 241, 16, 241, 17, 241, 18, 241, 19, 241, 20, 241, 21, 241, 22, 241, 23, 241, 24, 241, 25, 241, 26, 241, 27, 241, 28, 241, 29, 241, 30, 241, 31, 241, 32, 241, 33, 241, 34, 241, 35, 241, 36, 241, 37, 241, 38, 241, 39, 241, 40, 241, 41, 241, 42, 241, 43, 241, 44, 241, 45, 241, 46, 241, 47, 241, 48, 241, 49, 241, 50, 241, 51, 241, 52, 241, 53, 241, 54, 241, 55, 241, 56, 241, 57, 241, 58, 241, 59, 241, 60, 241, 61, 241, 62, 241, 63, 241, 64, 241, 65, 241, 66, 241, 67, 241, 68, 241, 69, 241, 70, 241, 71, 241, 72, 241, 73, 241, 74, 241, 75, 241, 76, 241, 77, 241, 78, 241, 79, 241, 80, 241, 81, 241, 82, 241, 83, 241, 84, 241, 85, 241, 86, 241, 87, 241, 88, 241, 89, 241, 90, 241, 91, 241, 92, 241, 93, 241, 94, 241, 95, 241, 96, 241, 97, 241, 98, 241, 99, 241, 100, 241, 101, 241, 102, 241, 103, 241, 104, 241, 105, 241, 106, 241, 107, 241, 108, 241, 109, 241, 110, 241, 111, 241, 112, 241, 113, 241, 114, 241, 115, 241, 116, 241, 117, 241, 118, 241, 119, 241, 120, 241, 121, 241, 122, 241, 123, 241, 124, 241, 125, 241, 126, 241, 127, 241, 128, 241, 129, 241, 130, 241, 131, 241, 132, 241, 133, 241, 134, 241, 135, 241, 136, 241, 137, 241, 138, 241, 139, 241, 140, 241, 141, 241, 142, 241, 143, 241, 144, 241, 145, 241, 146, 241, 147, 241, 148, 241, 149, 241, 150, 241, 151, 241, 152, 241, 153, 241, 154, 241, 155, 241, 156, 241, 157, 241, 158, 241, 159, 241, 160, 241, 161, 241, 162, 241, 163, 241, 164, 241, 165, 241, 166, 241, 167, 241, 168, 241, 169, 241, 170, 241, 171, 241, 172, 241, 173, 241, 174, 241, 175, 241, 176, 241, 177, 241, 178, 241, 179, 241, 180, 241, 181, 241, 182, 241, 183, 241, 184, 241, 185, 241, 186, 241, 187, 241, 188, 242, 3, 242, 4, 242, 5, 242, 6, 242, 7, 242, 8, 242, 9, 242, 10, 242, 11, 242, 12, 242, 13, 242, 14, 242, 15, 242, 16, 242, 17, 242, 18, 242, 19, 242, 20, 242, 21, 242, 22, 242, 23, 242, 24, 242, 25, 242, 26, 242, 27, 242, 28, 242, 29, 242, 30, 242, 31, 242, 32, 242, 33, 242, 34, 242, 35, 242, 36, 242, 37, 242, 38, 242, 39, 242, 40, 242, 41, 242, 42, 242, 43, 242, 44, 242, 45, 242, 46, 242, 47, 242, 48, 242, 49, 242, 50, 242, 51, 242, 52, 242, 53, 242, 54, 242, 55, 242, 56, 242, 57, 242, 58, 242, 59, 242, 60, 242, 61, 242, 62, 242, 63, 242, 64, 242, 65, 242, 66, 242, 67, 242, 68, 242, 69, 242, 70, 242, 71, 242, 72, 242, 73, 242, 74, 242, 75, 242, 76, 242, 77, 242, 78, 242, 79, 242, 80, 242, 81, 242, 82, 242, 83, 242, 84, 242, 85, 242, 86, 242, 87, 242, 88, 242, 89, 242, 90, 242, 91, 242, 92, 242, 93, 242, 94, 242, 95, 242, 96, 242, 97, 242, 98, 242, 99, 242, 100, 242, 101, 242, 102, 242, 103, 242, 104, 242, 105, 242, 106, 242, 107, 242, 108, 242, 109, 242, 110, 242, 111, 242, 112, 242, 113, 242, 114, 242, 115, 242, 116, 242, 117, 242, 118, 242, 119, 242, 120, 242, 121, 242, 122, 242, 123, 242, 124, 242, 125, 242, 126, 242, 127, 242, 128, 242, 129, 242, 130, 242, 131, 242, 132, 242, 133, 242, 134, 242, 135, 242, 136, 242, 137, 242, 138, 242, 139, 242, 140, 242, 141, 242, 142, 242, 143, 242, 144, 242, 145, 242, 146, 242, 147, 242, 148, 242, 149, 242, 150, 242, 151, 242, 152, 242, 153, 242, 154, 242, 155, 242, 156, 242, 157, 242, 158, 242, 159, 242, 160, 242, 161, 242, 162, 242, 163, 242, 164, 242, 165, 242, 166, 242, 167, 242, 168, 242, 169, 242, 170, 242, 171, 242, 172, 242, 173, 242, 174, 242, 175, 242, 176, 242, 177, 242, 178, 242, 179, 242, 180, 242, 181, 242, 182, 242, 183, 242, 184, 242, 185, 242, 186, 242, 187, 242, 188, 243, 3, 243, 4, 243, 5, 243, 6, 243, 7, 243, 8, 243, 9, 243, 10, 243, 11, 243, 12, 243, 13, 243, 14, 243, 15, 243, 16, 243, 17, 243, 18, 243, 19, 243, 20, 243, 21, 243, 22, 243, 23, 243, 24, 243, 25, 243, 26, 243, 27, 243, 28, 243, 29, 243, 30, 243, 31, 243, 32, 243, 33, 243, 34, 243, 35, 243, 36, 243, 37, 243, 38, 243, 39, 243, 40, 243, 41, 243, 42, 243, 43, 243, 44, 243, 45, 243, 46, 243, 47, 243, 48, 243, 49, 243, 50, 243, 51, 243, 52, 243, 53, 243, 54, 243, 55, 243, 56, 243, 57, 243, 58, 243, 59, 243, 60, 243, 61, 243, 62, 243, 63, 243, 64, 243, 65, 243, 66, 243, 67, 243, 68, 243, 69, 243, 70, 243, 71, 243, 72, 243, 73, 243, 74, 243, 75, 243, 76, 243, 77, 243, 78, 243, 79, 243, 80, 243, 81, 243, 82, 243, 83, 243, 84, 243, 85, 243, 86, 243, 87, 243, 88, 243, 89, 243, 90, 243, 91, 243, 92, 243, 93, 243, 94, 243, 95, 243, 96, 243, 97, 243, 98, 243, 99, 243, 100, 243, 101, 243, 102, 243, 103, 243, 104, 243, 105, 243, 106, 243, 107, 243, 108, 243, 109, 243, 110, 243, 111, 243, 112, 243, 113, 243, 114, 243, 115, 243, 116, 243, 117, 243, 118, 243, 119, 243, 120, 243, 121, 243, 122, 243, 123, 243, 124, 243, 125, 243, 126, 243, 127, 243, 128, 243, 129, 243, 130, 243, 131, 243, 132, 243, 133, 243, 134, 243, 135, 243, 136, 243, 137, 243, 138, 243, 139, 243, 140, 243, 141, 243, 142, 243, 143, 243, 144, 243, 145, 243, 146, 243, 147, 243, 148, 243, 149, 243, 150, 243, 151, 243, 152, 243, 153, 243, 154, 243, 155, 243, 156, 243, 157, 243, 158, 243, 159, 243, 160, 243, 161, 243, 162, 243, 163, 243, 164, 243, 165, 243, 166, 243, 167, 243, 168, 243, 169, 243, 170, 243, 171, 243, 172, 243, 173, 243, 174, 243, 175, 243, 176, 243, 177, 243, 178, 243, 179, 243, 180, 243, 181, 243, 182, 243, 183, 243, 184, 243, 185, 243, 186, 243, 187, 243, 188, 244, 3, 244, 4, 244, 5, 244, 6, 244, 7, 244, 8, 244, 9, 244, 10, 244, 11, 244, 12, 244, 13, 244, 14, 244, 15, 244, 16, 244, 17, 244, 18, 244, 19, 244, 20, 244, 21, 244, 22, 244, 23, 244, 24, 244, 25, 244, 26, 244, 27, 244, 28, 244, 29, 244, 30, 244, 31, 244, 32, 244, 33, 244, 34, 244, 35, 244, 36, 244, 37, 244, 38, 244, 39, 244, 40, 244, 41, 244, 42, 244, 43, 244, 44, 244, 45, 244, 46, 244, 47, 244, 48, 244, 49, 244, 50, 244, 51, 244, 52, 244, 53, 244, 54, 244, 55, 244, 56, 244, 57, 244, 58, 244, 59, 244, 60, 244, 61, 244, 62, 244, 63, 244, 64, 244, 65, 244, 66, 244, 67, 244, 68, 244, 69, 244, 70, 244, 71, 244, 72, 244, 73, 244, 74, 244, 75, 244, 76, 244, 77, 244, 78, 244, 79, 244, 80, 244, 81, 244, 82, 244, 83, 244, 84, 244, 85, 244, 86, 244, 87, 244, 88, 244, 89, 244, 90, 244, 91, 244, 92, 244, 93, 244, 94, 244, 95, 244, 96, 244, 97, 244, 98, 244, 99, 244, 100, 244, 101, 244, 102, 244, 103, 244, 104, 244, 105, 244, 106, 244, 107, 244, 108, 244, 109, 244, 110, 244, 111, 244, 112, 244, 113, 244, 114, 244, 115, 244, 116, 244, 117, 244, 118, 244, 119, 244, 120, 244, 121, 244, 122, 244, 123, 244, 124, 244, 125, 244, 126, 244, 127, 244, 128, 244, 129, 244, 130, 244, 131, 244, 132, 244, 133, 244, 134, 244, 135, 244, 136, 244, 137, 244, 138, 244, 139, 244, 140, 244, 141, 244, 142, 244, 143, 244, 144, 244, 145, 244, 146, 244, 147, 244, 148, 244, 149, 244, 150, 244, 151, 244, 152, 244, 153, 244, 154, 244, 155, 244, 156, 244, 157, 244, 158, 244, 159, 244, 160, 244, 161, 244, 162, 244, 163, 244, 164, 244, 165, 244, 166, 244, 167, 244, 168, 244, 169, 244, 170, 244, 171, 244, 172, 244, 173, 244, 174, 244, 175, 244, 176, 244, 177, 244, 178, 244, 179, 244, 180, 244, 181, 244, 182, 244, 183, 244, 184, 244, 185, 244, 186, 244, 187, 244, 188, 245, 3, 245, 4, 245, 5, 245, 6, 245, 7, 245, 8, 245, 9, 245, 10, 245, 11, 245, 12, 245, 13, 245, 14, 245, 15, 245, 16, 245, 17, 245, 18, 245, 19, 245, 20, 245, 21, 245, 22, 245, 23, 245, 24, 245, 25, 245, 26, 245, 27, 245, 28, 245, 29, 245, 30, 245, 31, 245, 32, 245, 33, 245, 34, 245, 35, 245, 36, 245, 37, 245, 38, 245, 39, 245, 40, 245, 41, 245, 42, 245, 43, 245, 44, 245, 45, 245, 46, 245, 47, 245, 48, 245, 49, 245, 50, 245, 51, 245, 52, 245, 53, 245, 54, 245, 55, 245, 56, 245, 57, 245, 58, 245, 59, 245, 60, 245, 61, 245, 62, 245, 63, 245, 64, 245, 65, 245, 66, 245, 67, 245, 68, 245, 69, 245, 70, 245, 71, 245, 72, 245, 73, 245, 74, 245, 75, 245, 76, 245, 77, 245, 78, 245, 79, 245, 80, 245, 81, 245, 82, 245, 83, 245, 84, 245, 85, 245, 86, 245, 87, 245, 88, 245, 89, 245, 90, 245, 91, 245, 92, 245, 93, 245, 94, 245, 95, 245, 96, 245, 97, 245, 98, 245, 99, 245, 100, 245, 101, 245, 102, 245, 103, 245, 104, 245, 105, 245, 106, 245, 107, 245, 108, 245, 109, 245, 110, 245, 111, 245, 112, 245, 113, 245, 114, 245, 115, 245, 116, 245, 117, 245, 118, 245, 119, 245, 120, 245, 121, 245, 122, 245, 123, 245, 124, 245, 125, 245, 126, 245, 127, 245, 128, 245, 129, 245, 130, 245, 131, 245, 132, 245, 133, 245, 134, 245, 135, 245, 136, 245, 137, 245, 138, 245, 139, 245, 140, 245, 141, 245, 142, 245, 143, 245, 144, 245, 145, 245, 146, 245, 147, 245, 148, 245, 149, 245, 150, 245, 151, 245, 152, 245, 153, 245, 154, 245, 155, 245, 156, 245, 157, 245, 158, 245, 159, 245, 160, 245, 161, 245, 162, 245, 163, 245, 164, 245, 165, 245, 166, 245, 167, 245, 168, 245, 169, 245, 170, 245, 171, 245, 172, 245, 173, 245, 174, 245, 175, 245, 176, 245, 177, 245, 178, 245, 179, 245, 180, 245, 181, 245, 182, 245, 183, 245, 184, 245, 185, 245, 186, 245, 187, 245, 188, 246, 3, 246, 4, 246, 5, 246, 6, 246, 7, 246, 8, 246, 9, 246, 10, 246, 11, 246, 12, 246, 13, 246, 14, 246, 15, 246, 16, 246, 17, 246, 18, 246, 19, 246, 20, 246, 21, 246, 22, 246, 23, 246, 24, 246, 25, 246, 26, 246, 27, 246, 28, 246, 29, 246, 30, 246, 31, 246, 32, 246, 33, 246, 34, 246, 35, 246, 36, 246, 37, 246, 38, 246, 39, 246, 40, 246, 41, 246, 42, 246, 43, 246, 44, 246, 45, 246, 46, 246, 47, 246, 48, 246, 49, 246, 50, 246, 51, 246, 52, 246, 53, 246, 54, 246, 55, 246, 56, 246, 57, 246, 58, 246, 59, 246, 60, 246, 61, 246, 62, 246, 63, 246, 64, 246, 65, 246, 66, 246, 67, 246, 68, 246, 69, 246, 70, 246, 71, 246, 72, 246, 73, 246, 74, 246, 75, 246, 76, 246, 77, 246, 78, 246, 79, 246, 80, 246, 81, 246, 82, 246, 83, 246, 84, 246, 85, 246, 86, 246, 87, 246, 88, 246, 89, 246, 90, 246, 91, 246, 92, 246, 93, 246, 94, 246, 95, 246, 96, 246, 97, 246, 98, 246, 99, 246, 100, 246, 101, 246, 102, 246, 103, 246, 104, 246, 105, 246, 106, 246, 107, 246, 108, 246, 109, 246, 110, 246, 111, 246, 112, 246, 113, 246, 114, 246, 115, 246, 116, 246, 117, 246, 118, 246, 119, 246, 120, 246, 121, 246, 122, 246, 123, 246, 124, 246, 125, 246, 126, 246, 127, 246, 128, 246, 129, 246, 130, 246, 131, 246, 132, 246, 133, 246, 134, 246, 135, 246, 136, 246, 137, 246, 138, 246, 139, 246, 140, 246, 141, 246, 142, 246, 143, 246, 144, 246, 145, 246, 146, 246, 147, 246, 148, 246, 149, 246, 150, 246, 151, 246, 152, 246, 153, 246, 154, 246, 155, 246, 156, 246, 157, 246, 158, 246, 159, 246, 160, 246, 161, 246, 162, 246, 163, 246, 164, 246, 165, 246, 166, 246, 167, 246, 168, 246, 169, 246, 170, 246, 171, 246, 172, 246, 173, 246, 174, 246, 175, 246, 176, 246, 177, 246, 178, 246, 179, 246, 180, 246, 181, 246, 182, 246, 183, 246, 184, 246, 185, 246, 186, 246, 187, 246, 188, 247, 3, 247, 4, 247, 5, 247, 6, 247, 7, 247, 8, 247, 9, 247, 10, 247, 11, 247, 12, 247, 13, 247, 14, 247, 15, 247, 16, 247, 17, 247, 18, 247, 19, 247, 20, 247, 21, 247, 22, 247, 23, 247, 24, 247, 25, 247, 26, 247, 27, 247, 28, 247, 29, 247, 30, 247, 31, 247, 32, 247, 33, 247, 34, 247, 35, 247, 36, 247, 37, 247, 38, 247, 39, 247, 40, 247, 41, 247, 42, 247, 43, 247, 44, 247, 45, 247, 46, 247, 47, 247, 48, 247, 49, 247, 50, 247, 51, 247, 52, 247, 53, 247, 54, 247, 55, 247, 56, 247, 57, 247, 58, 247, 59, 247, 60, 247, 61, 247, 62, 247, 63, 247, 64, 247, 65, 247, 66, 247, 67, 247, 68, 247, 69, 247, 70, 247, 71, 247, 72, 247, 73, 247, 74, 247, 75, 247, 76, 247, 77, 247, 78, 247, 79, 247, 80, 247, 81, 247, 82, 247, 83, 247, 84, 247, 85, 247, 86, 247, 87, 247, 88, 247, 89, 247, 90, 247, 91, 247, 92, 247, 93, 247, 94, 247, 95, 247, 96, 247, 97, 247, 98, 247, 99, 247, 100, 247, 101, 247, 102, 247, 103, 247, 104, 247, 105, 247, 106, 247, 107, 247, 108, 247, 109, 247, 110, 247, 111, 247, 112, 247, 113, 247, 114, 247, 115, 247, 116, 247, 117, 247, 118, 247, 119, 247, 120, 247, 121, 247, 122, 247, 123, 247, 124, 247, 125, 247, 126, 247, 127, 247, 128, 247, 129, 247, 130, 247, 131, 247, 132, 247, 133, 247, 134, 247, 135, 247, 136, 247, 137, 247, 138, 247, 139, 247, 140, 247, 141, 247, 142, 247, 143, 247, 144, 247, 145, 247, 146, 247, 147, 247, 148, 247, 149, 247, 150, 247, 151, 247, 152, 247, 153, 247, 154, 247, 155, 247, 156, 247, 157, 247, 158, 247, 159, 247, 160, 247, 161, 247, 162, 247, 163, 247, 164, 247, 165, 247, 166, 247, 167, 247, 168, 247, 169, 247, 170, 247, 171, 247, 172, 247, 173, 247, 174, 247, 175, 247, 176, 247, 177, 247, 178, 247, 179, 247, 180, 247, 181, 247, 182, 247, 183, 247, 184, 247, 185, 247, 186, 247, 187, 247, 188, 248, 3, 248, 4, 248, 5, 248, 6, 248, 7, 248, 8, 248, 9, 248, 10, 248, 11, 248, 12, 248, 13, 248, 14, 248, 15, 248, 16, 248, 17, 248, 18, 248, 19, 248, 20, 248, 21, 248, 22, 248, 23, 248, 24, 248, 25, 248, 26, 248, 27, 248, 28, 248, 29, 248, 30, 248, 31, 248, 32, 248, 33, 248, 34, 248, 35, 248, 36, 248, 37, 248, 38, 248, 39, 248, 40, 248, 41, 248, 42, 248, 43, 248, 44, 248, 45, 248, 46, 248, 47, 248, 48, 248, 49, 248, 50, 248, 51, 248, 52, 248, 53, 248, 54, 248, 55, 248, 56, 248, 57, 248, 58, 248, 59, 248, 60, 248, 61, 248, 62, 248, 63, 248, 64, 248, 65, 248, 66, 248, 67, 248, 68, 248, 69, 248, 70, 248, 71, 248, 72, 248, 73, 248, 74, 248, 75, 248, 76, 248, 77, 248, 78, 248, 79, 248, 80, 248, 81, 248, 82, 248, 83, 248, 84, 248, 85, 248, 86, 248, 87, 248, 88, 248, 89, 248, 90, 248, 91, 248, 92, 248, 93, 248, 94, 248, 95, 248, 96, 248, 97, 248, 98, 248, 99, 248, 100, 248, 101, 248, 102, 248, 103, 248, 104, 248, 105, 248, 106, 248, 107, 248, 108, 248, 109, 248, 110, 248, 111, 248, 112, 248, 113, 248, 114, 248, 115, 248, 116, 248, 117, 248, 118, 248, 119, 248, 120, 248, 121, 248, 122, 248, 123, 248, 124, 248, 125, 248, 126, 248, 127, 248, 128, 248, 129, 248, 130, 248, 131, 248, 132, 248, 133, 248, 134, 248, 135, 248, 136, 248, 137, 248, 138, 248, 139, 248, 140, 248, 141, 248, 142, 248, 143, 248, 144, 248, 145, 248, 146, 248, 147, 248, 148, 248, 149, 248, 150, 248, 151, 248, 152, 248, 153, 248, 154, 248, 155, 248, 156, 248, 157, 248, 158, 248, 159, 248, 160, 248, 161, 248, 162, 248, 163, 248, 164, 248, 165, 248, 166, 248, 167, 248, 168, 248, 169, 248, 170, 248, 171, 248, 172, 248, 173, 248, 174, 248, 175, 248, 176, 248, 177, 248, 178, 248, 179, 248, 180, 248, 181, 248, 182, 248, 183, 248, 184, 248, 185, 248, 186, 248, 187, 248, 188, 249, 3, 249, 4, 249, 5, 249, 6, 249, 7, 249, 8, 249, 9, 249, 10, 249, 11, 249, 12, 249, 13, 249, 14, 249, 15, 249, 16, 249, 17, 249, 18, 249, 19, 249, 20, 249, 21, 249, 22, 249, 23, 249, 24, 249, 25, 249, 26, 249, 27, 249, 28, 249, 29, 249, 30, 249, 31, 249, 32, 249, 33, 249, 34, 249, 35, 249, 36, 249, 37, 249, 38, 249, 39, 249, 40, 249, 41, 249, 42, 249, 43, 249, 44, 249, 45, 249, 46, 249, 47, 249, 48, 249, 49, 249, 50, 249, 51, 249, 52, 249, 53, 249, 54, 249, 55, 249, 56, 249, 57, 249, 58, 249, 59, 249, 60, 249, 61, 249, 62, 249, 63, 249, 64, 249, 65, 249, 66, 249, 67, 249, 68, 249, 69, 249, 70, 249, 71, 249, 72, 249, 73, 249, 74, 249, 75, 249, 76, 249, 77, 249, 78, 249, 79, 249, 80, 249, 81, 249, 82, 249, 83, 249, 84, 249, 85, 249, 86, 249, 87, 249, 88, 249, 89, 249, 90, 249, 91, 249, 92, 249, 93, 249, 94, 249, 95, 249, 96, 249, 97, 249, 98, 249, 99, 249, 100, 249, 101, 249, 102, 249, 103, 249, 104, 249, 105, 249, 106, 249, 107, 249, 108, 249, 109, 249, 110, 249, 111, 249, 112, 249, 113, 249, 114, 249, 115, 249, 116, 249, 117, 249, 118, 249, 119, 249, 120, 249, 121, 249, 122, 249, 123, 249, 124, 249, 125, 249, 126, 249, 127, 249, 128, 249, 129, 249, 130, 249, 131, 249, 132, 249, 133, 249, 134, 249, 135, 249, 136, 249, 137, 249, 138, 249, 139, 249, 140, 249, 141, 249, 142, 249, 143, 249, 144, 249, 145, 249, 146, 249, 147, 249, 148, 249, 149, 249, 150, 249, 151, 249, 152, 249, 153, 249, 154, 249, 155, 249, 156, 249, 157, 249, 158, 249, 159, 249, 160, 249, 161, 249, 162, 249, 163, 249, 164, 249, 165, 249, 166, 249, 167, 249, 168, 249, 169, 249, 170, 249, 171, 249, 172, 249, 173, 249, 174, 249, 175, 249, 176, 249, 177, 249, 178, 249, 179, 249, 180, 249, 181, 249, 182, 249, 183, 249, 184, 249, 185, 249, 186, 249, 187, 249, 188, 250, 3, 250, 4, 250, 5, 250, 6, 250, 7, 250, 8, 250, 9, 250, 10, 250, 11, 250, 12, 250, 13, 250, 14, 250, 15, 250, 16, 250, 17, 250, 18, 250, 19, 250, 20, 250, 21, 250, 22, 250, 23, 250, 24, 250, 25, 250, 26, 250, 27, 250, 28, 250, 29, 250, 30, 250, 31, 250, 32, 250, 33, 250, 34, 250, 35, 250, 36, 250, 37, 250, 38, 250, 39, 250, 40, 250, 41, 250, 42, 250, 43, 250, 44, 250, 45, 250, 46, 250, 47, 250, 48, 250, 49, 250, 50, 250, 51, 250, 52, 250, 53, 250, 54, 250, 55, 250, 56, 250, 57, 250, 58, 250, 59, 250, 60, 250, 61, 250, 62, 250, 63, 250, 64, 250, 65, 250, 66, 250, 67, 250, 68, 250, 69, 250, 70, 250, 71, 250, 72, 250, 73, 250, 74, 250, 75, 250, 76, 250, 77, 250, 78, 250, 79, 250, 80, 250, 81, 250, 82, 250, 83, 250, 84, 250, 85, 250, 86, 250, 87, 250, 88, 250, 89, 250, 90, 250, 91, 250, 92, 250, 93, 250, 94, 250, 95, 250, 96, 250, 97, 250, 98, 250, 99, 250, 100, 250, 101, 250, 102, 250, 103, 250, 104, 250, 105, 250, 106, 250, 107, 250, 108, 250, 109, 250, 110, 250, 111, 250, 112, 250, 113, 250, 114, 250, 115, 250, 116, 250, 117, 250, 118, 250, 119, 250, 120, 250, 121, 250, 122, 250, 123, 250, 124, 250, 125, 250, 126, 250, 127, 250, 128, 250, 129, 250, 130, 250, 131, 250, 132, 250, 133, 250, 134, 250, 135, 250, 136, 250, 137, 250, 138, 250, 139, 250, 140, 250, 141, 250, 142, 250, 143, 250, 144, 250, 145, 250, 146, 250, 147, 250, 148, 250, 149, 250, 150, 250, 151, 250, 152, 250, 153, 250, 154, 250, 155, 250, 156, 250, 157, 250, 158, 250, 159, 250, 160, 250, 161, 250, 162, 250, 163, 250, 164, 250, 165, 250, 166, 250, 167, 250, 168, 250, 169, 250, 170, 250, 171, 250, 172, 250, 173, 250, 174, 250, 175, 250, 176, 250, 177, 250, 178, 250, 179, 250, 180, 250, 181, 250, 182, 250, 183, 250, 184, 250, 185, 250, 186, 250, 187, 250, 188, 251, 3, 251, 4, 251, 5, 251, 6, 251, 7, 251, 8, 251, 9, 251, 10, 251, 11, 251, 12, 251, 13, 251, 14, 251, 15, 251, 16, 251, 17, 251, 18, 251, 19, 251, 20, 251, 21, 251, 22, 251, 23, 251, 24, 251, 25, 251, 26, 251, 27, 251, 28, 251, 29, 251, 30, 251, 31, 251, 32, 251, 33, 251, 34, 251, 35, 251, 36, 251, 37, 251, 38, 251, 39, 251, 40, 251, 41, 251, 42, 251, 43, 251, 44, 251, 45, 251, 46, 251, 47, 251, 48, 251, 49, 251, 50, 251, 51, 251, 52, 251, 53, 251, 54, 251, 55, 251, 56, 251, 57, 251, 58, 251, 59, 251, 60, 251, 61, 251, 62, 251, 63, 251, 64, 251, 65, 251, 66, 251, 67, 251, 68, 251, 69, 251, 70, 251, 71, 251, 72, 251, 73, 251, 74, 251, 75, 251, 76, 251, 77, 251, 78, 251, 79, 251, 80, 251, 81, 251, 82, 251, 83, 251, 84, 251, 85, 251, 86, 251, 87, 251, 88, 251, 89, 251, 90, 251, 91, 251, 92, 251, 93, 251, 94, 251, 95, 251, 96, 251, 97, 251, 98, 251, 99, 251, 100, 251, 101, 251, 102, 251, 103, 251, 104, 251, 105, 251, 106, 251, 107, 251, 108, 251, 109, 251, 110, 251, 111, 251, 112, 251, 113, 251, 114, 251, 115, 251, 116, 251, 117, 251, 118, 251, 119, 251, 120, 251, 121, 251, 122, 251, 123, 251, 124, 251, 125, 251, 126, 251, 127, 251, 128, 251, 129, 251, 130, 251, 131, 251, 132, 251, 133, 251, 134, 251, 135, 251, 136, 251, 137, 251, 138, 251, 139, 251, 140, 251, 141, 251, 142, 251, 143, 251, 144, 251, 145, 251, 146, 251, 147, 251, 148, 251, 149, 251, 150, 251, 151, 251, 152, 251, 153, 251, 154, 251, 155, 251, 156, 251, 157, 251, 158, 251, 159, 251, 160, 251, 161, 251, 162, 251, 163, 251, 164, 251, 165, 251, 166, 251, 167, 251, 168, 251, 169, 251, 170, 251, 171, 251, 172, 251, 173, 251, 174, 251, 175, 251, 176, 251, 177, 251, 178, 251, 179, 251, 180, 251, 181, 251, 182, 251, 183, 251, 184, 251, 185, 251, 186, 251, 187, 251, 188, 252, 3, 252, 4, 252, 5, 252, 6, 252, 7, 252, 8, 252, 9, 252, 10, 252, 11, 252, 12, 252, 13, 252, 14, 252, 15, 252, 16, 252, 17, 252, 18, 252, 19, 252, 20, 252, 21, 252, 22, 252, 23, 252, 24, 252, 25, 252, 26, 252, 27, 252, 28, 252, 29, 252, 30, 252, 31, 252, 32, 252, 33, 252, 34, 252, 35, 252, 36, 252, 37, 252, 38, 252, 39, 252, 40, 252, 41, 252, 42, 252, 43, 252, 44, 252, 45, 252, 46, 252, 47, 252, 48, 252, 49, 252, 50, 252, 51, 252, 52, 252, 53, 252, 54, 252, 55, 252, 56, 252, 57, 252, 58, 252, 59, 252, 60, 252, 61, 252, 62, 252, 63, 252, 64, 252, 65, 252, 66, 252, 67, 252, 68, 252, 69, 252, 70, 252, 71, 252, 72, 252, 73, 252, 74, 252, 75, 252, 76, 252, 77, 252, 78, 252, 79, 252, 80, 252, 81, 252, 82, 252, 83, 252, 84, 252, 85, 252, 86, 252, 87, 252, 88, 252, 89, 252, 90, 252, 91, 252, 92, 252, 93, 252, 94, 252, 95, 252, 96, 252, 97, 252, 98, 252, 99, 252, 100, 252, 101, 252, 102, 252, 103, 252, 104, 252, 105, 252, 106, 252, 107, 252, 108, 252, 109, 252, 110, 252, 111, 252, 112, 252, 113, 252, 114, 252, 115, 252, 116, 252, 117, 252, 118, 252, 119, 252, 120, 252, 121, 252, 122, 252, 123, 252, 124, 252, 125, 252, 126, 252, 127, 252, 128, 252, 129, 252, 130, 252, 131, 252, 132, 252, 133, 252, 134, 252, 135, 252, 136, 252, 137, 252, 138, 252, 139, 252, 140, 252, 141, 252, 142, 252, 143, 252, 144, 252, 145, 252, 146, 252, 147, 252, 148, 252, 149, 252, 150, 252, 151, 252, 152, 252, 153, 252, 154, 252, 155, 252, 156, 252, 157, 252, 158, 252, 159, 252, 160, 252, 161, 252, 162, 252, 163, 252, 164, 252, 165, 252, 166, 252, 167, 252, 168, 252, 169, 252, 170, 252, 171, 252, 172, 252, 173, 252, 174, 252, 175, 252, 176, 252, 177, 252, 178, 252, 179, 252, 180, 252, 181, 252, 182, 252, 183, 252, 184, 252, 185, 252, 186, 252, 187, 252, 188 ) +emission_colors = PoolColorArray( ) +gravity = Vector2( 0, 0 ) +anim_speed = 1.0 + +[node name="LevelPath" type="Path2D" parent="."] +curve = SubResource( 1 ) + +[node name="PlayerPosition" type="PathFollow2D" parent="LevelPath"] +unique_name_in_owner = true +position = Vector2( 61, 140 ) +rotate = false + +[node name="PlayerSprite" type="Sprite" parent="LevelPath/PlayerPosition"] +unique_name_in_owner = true +material = SubResource( 15 ) +position = Vector2( 0, -2 ) +texture = ExtResource( 3 ) + +[node name="Sparkles" type="CPUParticles2D" parent="LevelPath/PlayerPosition/PlayerSprite"] +unique_name_in_owner = true +visible = false +light_mask = 0 +amount = 1 +lifetime = 2.0 +texture = ExtResource( 21 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 27 ) +color = Color( 0.996078, 1, 0.760784, 1 ) +script = ExtResource( 20 ) + +[node name="hills" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 61, 140 ) +rotation = 1.04814 + +[node name="canopy" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 89.5314, 148.93 ) +rotation = -0.105869 +offset = 32.0 + +[node name="mountain" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 111.481, 142.765 ) +rotation = -1.37064 +offset = 55.0 + +[node name="boss1" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 118.615, 133.912 ) +rotation = 0.140896 +offset = 69.0 + +[node name="cave" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 126.41, 129.495 ) +rotation = -2.19952 +offset = 80.0 + +[node name="InCave" type="PathFollow2D" parent="LevelPath"] +unique_name_in_owner = true +position = Vector2( 124.058, 126.26 ) +rotation = -1.85459 +offset = 84.0 + +[node name="OutCave" type="PathFollow2D" parent="LevelPath"] +unique_name_in_owner = true +position = Vector2( 139.8, 95.8421 ) +rotation = 0.144373 +offset = 130.0 + +[node name="abyss" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 154.261, 99.6526 ) +rotation = -1.39342 +offset = 145.0 + +[node name="graveyard" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 167.42, 78.1565 ) +rotation = 0.453406 +offset = 176.0 + +[node name="boss2" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 183.719, 89.5131 ) +rotation = 1.31674 +offset = 196.0 + +[node name="station" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 180.067, 105.7 ) +rotation = 0.382192 +offset = 217.0 + +[node name="rust" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 179.452, 131.298 ) +rotation = 2.56727 +offset = 258.0 + +[node name="lab" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 203.036, 129.879 ) +rotation = -1.21855 +offset = 293.0 + +[node name="boss3" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 210.977, 118.729 ) +rotation = 0.787923 +offset = 308.0 + +[node name="beta_cave" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 123.406, 129.056 ) +rotation = -2.90295 +offset = 432.0 + +[node name="beta_hills" type="PathFollow2D" parent="LevelPath"] +position = Vector2( 64.0566, 132.854 ) +rotation = -2.19526 +offset = 505.0 + +[node name="WorldTitle" type="Label" parent="."] +unique_name_in_owner = true +material = ExtResource( 6 ) +margin_left = -26.0 +margin_top = 164.0 +margin_right = 282.0 +margin_bottom = 187.0 +theme = ExtResource( 4 ) +text = "This is it sg. +change the future, we believe in you" +align = 1 +valign = 1 + +[node name="CurrentLevel" type="HBoxContainer" parent="."] +anchor_right = 1.0 +margin_bottom = 16.0 +theme = ExtResource( 4 ) +alignment = 1 + +[node name="BackArrow" type="TextureRect" parent="CurrentLevel"] +unique_name_in_owner = true +material = SubResource( 2 ) +margin_left = 58.0 +margin_top = 4.0 +margin_right = 64.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 5 ) +flip_h = true + +[node name="LevelTitle" type="Label" parent="CurrentLevel"] +unique_name_in_owner = true +material = ExtResource( 6 ) +margin_left = 68.0 +margin_top = 3.0 +margin_right = 159.0 +margin_bottom = 13.0 +theme = ExtResource( 4 ) +text = "Verdant Hills" +align = 1 +valign = 1 + +[node name="ForwardArrow" type="TextureRect" parent="CurrentLevel"] +unique_name_in_owner = true +visible = false +material = SubResource( 3 ) +margin_left = 164.0 +margin_top = 4.0 +margin_right = 170.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 5 ) + +[node name="BossBlock" type="TextureRect" parent="CurrentLevel"] +unique_name_in_owner = true +visible = false +margin_left = 169.0 +margin_top = 4.0 +margin_right = 176.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 8 ) + +[node name="ShardsBlock" type="HBoxContainer" parent="CurrentLevel"] +unique_name_in_owner = true +margin_left = 163.0 +margin_right = 198.0 +margin_bottom = 16.0 +custom_constants/separation = 2 + +[node name="ForwardArrow" type="TextureRect" parent="CurrentLevel/ShardsBlock"] +modulate = Color( 0.690196, 0.690196, 0.690196, 1 ) +margin_top = 4.0 +margin_right = 6.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 5 ) + +[node name="Icon" type="TextureRect" parent="CurrentLevel/ShardsBlock"] +material = SubResource( 10 ) +margin_left = 8.0 +margin_top = 2.0 +margin_right = 19.0 +margin_bottom = 13.0 +size_flags_vertical = 4 +texture = ExtResource( 10 ) + +[node name="ShardsNeeded" type="Label" parent="CurrentLevel/ShardsBlock"] +unique_name_in_owner = true +modulate = Color( 0.933333, 0.247059, 0.247059, 1 ) +margin_left = 21.0 +margin_top = 3.0 +margin_right = 35.0 +margin_bottom = 13.0 +custom_fonts/font = ExtResource( 12 ) +text = "15" + +[node name="LevelStats" type="Panel" parent="."] +visible = false +margin_left = 40.0 +margin_top = 45.0 +margin_right = 216.0 +margin_bottom = 147.0 +grow_horizontal = 2 +grow_vertical = 2 +rect_min_size = Vector2( 176, 102 ) +rect_pivot_offset = Vector2( 88, 51 ) +theme = ExtResource( 4 ) + +[node name="HighScoreLabel" type="Label" parent="LevelStats"] +material = ExtResource( 6 ) +margin_left = 16.0 +margin_top = 16.0 +margin_right = 160.0 +margin_bottom = 26.0 +theme = ExtResource( 4 ) +text = "High SCORE:" +align = 1 + +[node name="PressStart" type="Label" parent="LevelStats"] +material = ExtResource( 6 ) +margin_left = 16.0 +margin_top = -13.0 +margin_right = 160.0 +margin_bottom = -3.0 +theme = ExtResource( 4 ) +text = "press start to play!" +align = 1 + +[node name="Any" type="Label" parent="LevelStats"] +material = ExtResource( 6 ) +margin_left = 39.0 +margin_top = 27.0 +margin_right = 67.0 +margin_bottom = 37.0 +theme = ExtResource( 4 ) +text = "any%" +align = 1 + +[node name="ScoreAny" type="Label" parent="LevelStats/Any"] +unique_name_in_owner = true +use_parent_material = true +margin_top = 13.0 +margin_right = 28.0 +margin_bottom = 23.0 +text = "0000" + +[node name="TimeAny" type="Label" parent="LevelStats/Any"] +unique_name_in_owner = true +use_parent_material = true +margin_left = -11.0 +margin_top = 26.0 +margin_right = 38.0 +margin_bottom = 36.0 +text = "0:00.00" + +[node name="100" type="Label" parent="LevelStats"] +material = ExtResource( 6 ) +margin_left = 102.0 +margin_top = 27.0 +margin_right = 130.0 +margin_bottom = 37.0 +theme = ExtResource( 4 ) +text = "100%" +align = 1 + +[node name="Score100" type="Label" parent="LevelStats/100"] +unique_name_in_owner = true +use_parent_material = true +margin_top = 13.0 +margin_right = 28.0 +margin_bottom = 23.0 +text = "0000" + +[node name="Time100" type="Label" parent="LevelStats/100"] +unique_name_in_owner = true +use_parent_material = true +margin_left = -11.0 +margin_top = 26.0 +margin_right = 38.0 +margin_bottom = 36.0 +text = "0:00.00" + +[node name="ShardTitle" type="Label" parent="LevelStats"] +unique_name_in_owner = true +material = ExtResource( 6 ) +margin_left = 3.0 +margin_top = 89.0 +margin_right = 173.0 +margin_bottom = 99.0 +theme = ExtResource( 4 ) +text = "AAAAAAAAAAAAAAAAAAAAAAAA" +align = 1 + +[node name="EmptyShards" type="Node2D" parent="LevelStats"] +position = Vector2( -40, -35 ) + +[node name="EmptyShard1" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 76, 118 ) +texture = ExtResource( 10 ) + +[node name="EmptyShard2" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 91, 118 ) +texture = ExtResource( 10 ) + +[node name="EmptyShard3" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 106, 118 ) +texture = ExtResource( 10 ) + +[node name="EmptyShard4" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 121, 118 ) +texture = ExtResource( 10 ) + +[node name="EmptyShard5" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 136, 118 ) +texture = ExtResource( 10 ) + +[node name="EmptyShard6" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 151, 118 ) +texture = ExtResource( 10 ) + +[node name="EmptyShard7" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 166, 118 ) +texture = ExtResource( 10 ) + +[node name="EmptyShard8" type="Sprite" parent="LevelStats/EmptyShards"] +modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 181, 118 ) +texture = ExtResource( 10 ) + +[node name="FilledShards" type="Node2D" parent="LevelStats"] +unique_name_in_owner = true + +[node name="Shard1" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 31, 80 ) + +[node name="Shard2" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 46, 80 ) + +[node name="Shard3" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 61, 80 ) + +[node name="Shard4" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 76, 80 ) + +[node name="Shard5" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 91, 80 ) + +[node name="Shard6" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 106, 80 ) + +[node name="Shard7" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 121, 80 ) + +[node name="Shard8" parent="LevelStats/FilledShards" instance=ExtResource( 11 )] +visible = false +position = Vector2( 136, 80 ) + +[node name="ShardArrow" type="Sprite" parent="LevelStats"] +unique_name_in_owner = true +position = Vector2( 31, 71 ) +texture = ExtResource( 14 ) +offset = Vector2( 5, 0 ) + +[node name="BossCenter" type="Control" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_scale = Vector2( 1e-05, 0.04 ) +rect_pivot_offset = Vector2( 128, 96 ) + +[node name="PressStartBoss" type="Label" parent="BossCenter"] +unique_name_in_owner = true +material = ExtResource( 6 ) +margin_top = 56.0 +margin_right = 256.0 +margin_bottom = 66.0 +theme = ExtResource( 4 ) +text = "press start to fight!" +align = 1 + +[node name="BossTimeBox" type="Panel" parent="BossCenter"] +margin_left = 48.0 +margin_top = 72.0 +margin_right = 200.0 +margin_bottom = 122.0 +grow_horizontal = 2 +grow_vertical = 2 +rect_min_size = Vector2( 120, 50 ) +rect_pivot_offset = Vector2( 88, 51 ) +theme = ExtResource( 4 ) + +[node name="VBoxContainer" type="VBoxContainer" parent="BossCenter/BossTimeBox"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 8.0 +margin_top = 8.0 +margin_right = -8.0 +margin_bottom = -8.0 +alignment = 1 + +[node name="BossFlavorText" type="Label" parent="BossCenter/BossTimeBox/VBoxContainer"] +unique_name_in_owner = true +material = ExtResource( 6 ) +margin_top = 5.0 +margin_right = 136.0 +margin_bottom = 15.0 +theme = ExtResource( 4 ) +text = "speediest smashing" +align = 1 + +[node name="BossTime" type="Label" parent="BossCenter/BossTimeBox/VBoxContainer"] +unique_name_in_owner = true +material = ExtResource( 6 ) +margin_top = 19.0 +margin_right = 136.0 +margin_bottom = 29.0 +text = "0:00.00" +align = 1 + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 6 ) +anims/hide_boss = SubResource( 16 ) +anims/hide_exit = SubResource( 11 ) +anims/hide_menu = SubResource( 13 ) +anims/hide_stats = SubResource( 8 ) +anims/show_boss = SubResource( 17 ) +anims/show_exit = SubResource( 12 ) +anims/show_menu = SubResource( 14 ) +anims/show_stats = SubResource( 7 ) + +[node name="AuxPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 18 ) +anims/hide_boss = SubResource( 19 ) +anims/hide_exit = SubResource( 20 ) +anims/hide_menu = SubResource( 21 ) +anims/hide_stats = SubResource( 22 ) +anims/show_boss = SubResource( 23 ) +anims/show_exit = SubResource( 24 ) +anims/show_menu = SubResource( 25 ) +anims/show_stats = SubResource( 26 ) + +[node name="ShardCount" type="Label" parent="."] +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -238.0 +margin_top = -189.0 +margin_right = -224.0 +margin_bottom = -179.0 +theme = ExtResource( 4 ) +custom_fonts/font = ExtResource( 12 ) +text = "72" + +[node name="MenuIndicator" type="HBoxContainer" parent="."] +margin_left = 3.0 +margin_top = 23.0 +margin_right = 47.0 +margin_bottom = 33.0 +custom_constants/separation = 2 +script = ExtResource( 23 ) +action = "ui_cancel" + +[node name="Label" type="Label" parent="MenuIndicator"] +margin_right = 35.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 12 ) +text = "Menu:" + +[node name="KeyboardButton" type="Label" parent="MenuIndicator"] +margin_left = 37.0 +margin_right = 44.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 12 ) +text = "X" + +[node name="GamepadButton" type="TextureRect" parent="MenuIndicator"] +visible = false +margin_left = 46.0 +margin_right = 58.0 +margin_bottom = 10.0 +size_flags_vertical = 4 +texture = SubResource( 37 ) + +[node name="Shard" parent="." instance=ExtResource( 11 )] +position = Vector2( 4, 5 ) + +[node name="MenuPopup" type="CenterContainer" parent="."] +unique_name_in_owner = true +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_pivot_offset = Vector2( 128, 96 ) +theme = ExtResource( 4 ) + +[node name="PanelContainer" type="PanelContainer" parent="MenuPopup"] +margin_left = 64.0 +margin_top = 93.0 +margin_right = 192.0 +margin_bottom = 99.0 +rect_min_size = Vector2( 128, 0 ) + +[node name="VBoxContainer" type="VBoxContainer" parent="MenuPopup/PanelContainer"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 125.0 +margin_bottom = 55.0 + +[node name="Resume" type="HBoxContainer" parent="MenuPopup/PanelContainer/VBoxContainer"] +margin_right = 122.0 +margin_bottom = 10.0 +custom_constants/separation = 0 +alignment = 1 + +[node name="ResumeButton" type="TextureButton" parent="MenuPopup/PanelContainer/VBoxContainer/Resume"] +unique_name_in_owner = true +margin_left = 32.0 +margin_right = 40.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) +button_mask = 0 +texture_focused = ExtResource( 5 ) +expand = true +stretch_mode = 3 + +[node name="Label" type="Label" parent="MenuPopup/PanelContainer/VBoxContainer/Resume"] +margin_left = 40.0 +margin_right = 82.0 +margin_bottom = 10.0 +text = "resume" + +[node name="Spacer" type="Control" parent="MenuPopup/PanelContainer/VBoxContainer/Resume"] +margin_left = 82.0 +margin_right = 90.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) + +[node name="Palettes" type="HBoxContainer" parent="MenuPopup/PanelContainer/VBoxContainer"] +margin_top = 14.0 +margin_right = 122.0 +margin_bottom = 24.0 +custom_constants/separation = 0 +alignment = 1 + +[node name="PalettesButton" type="TextureButton" parent="MenuPopup/PanelContainer/VBoxContainer/Palettes"] +margin_left = 25.0 +margin_right = 33.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) +button_mask = 0 +texture_focused = ExtResource( 5 ) +expand = true +stretch_mode = 3 + +[node name="Label" type="Label" parent="MenuPopup/PanelContainer/VBoxContainer/Palettes"] +margin_left = 33.0 +margin_right = 89.0 +margin_bottom = 10.0 +text = "palettes" + +[node name="Spacer" type="Control" parent="MenuPopup/PanelContainer/VBoxContainer/Palettes"] +margin_left = 89.0 +margin_right = 97.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) + +[node name="OptionsButton" type="HBoxContainer" parent="MenuPopup/PanelContainer/VBoxContainer"] +margin_top = 28.0 +margin_right = 122.0 +margin_bottom = 38.0 +custom_constants/separation = 0 +alignment = 1 + +[node name="OptionsButton" type="TextureButton" parent="MenuPopup/PanelContainer/VBoxContainer/OptionsButton"] +unique_name_in_owner = true +margin_left = 28.0 +margin_right = 36.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) +button_mask = 0 +texture_focused = ExtResource( 5 ) +expand = true +stretch_mode = 3 + +[node name="Label" type="Label" parent="MenuPopup/PanelContainer/VBoxContainer/OptionsButton"] +margin_left = 36.0 +margin_right = 85.0 +margin_bottom = 10.0 +text = "OPTIONS" + +[node name="Spacer" type="Control" parent="MenuPopup/PanelContainer/VBoxContainer/OptionsButton"] +margin_left = 85.0 +margin_right = 93.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) + +[node name="Menu" type="HBoxContainer" parent="MenuPopup/PanelContainer/VBoxContainer"] +margin_top = 42.0 +margin_right = 122.0 +margin_bottom = 52.0 +rect_pivot_offset = Vector2( -140, -37 ) +custom_constants/separation = 0 +alignment = 1 + +[node name="MenuButton" type="TextureButton" parent="MenuPopup/PanelContainer/VBoxContainer/Menu"] +margin_left = 21.0 +margin_right = 29.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) +button_mask = 0 +texture_focused = ExtResource( 5 ) +expand = true +stretch_mode = 3 + +[node name="Label" type="Label" parent="MenuPopup/PanelContainer/VBoxContainer/Menu"] +margin_left = 29.0 +margin_right = 92.0 +margin_bottom = 10.0 +text = "main menu" + +[node name="Spacer" type="Control" parent="MenuPopup/PanelContainer/VBoxContainer/Menu"] +margin_left = 92.0 +margin_right = 100.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 8, 8 ) + +[node name="ExitPopup" type="CenterContainer" parent="."] +unique_name_in_owner = true +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_scale = Vector2( 1e-05, 0.011 ) +rect_pivot_offset = Vector2( 128, 96 ) +theme = ExtResource( 4 ) + +[node name="PanelContainer" type="PanelContainer" parent="ExitPopup"] +margin_left = 125.0 +margin_top = 93.0 +margin_right = 131.0 +margin_bottom = 99.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="ExitPopup/PanelContainer"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 108.0 +margin_bottom = 27.0 + +[node name="Label" type="Label" parent="ExitPopup/PanelContainer/VBoxContainer"] +margin_right = 105.0 +margin_bottom = 10.0 +text = "Return to menu?" +align = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="ExitPopup/PanelContainer/VBoxContainer"] +margin_top = 14.0 +margin_right = 105.0 +margin_bottom = 24.0 +custom_constants/separation = 8 +alignment = 1 + +[node name="StayHere" type="Button" parent="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +margin_right = 48.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath(".") +focus_neighbour_bottom = NodePath(".") +size_flags_horizontal = 3 +text = "NO" + +[node name="ExitMenu" type="Button" parent="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer"] +margin_left = 56.0 +margin_right = 105.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath(".") +focus_neighbour_bottom = NodePath(".") +size_flags_horizontal = 3 +text = "YES" + +[node name="OptionsScreen" parent="." instance=ExtResource( 18 )] +visible = false + +[node name="MenuSounds" parent="." instance=ExtResource( 19 )] +unique_name_in_owner = true + +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/Resume/ResumeButton" to="." method="_on_ResumeButton_button_down"] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/Resume/ResumeButton" to="AnimationPlayer" method="play" binds= [ "hide_menu" ]] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/Resume/ResumeButton" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="MenuPopup/PanelContainer/VBoxContainer/Resume/ResumeButton" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/Palettes/PalettesButton" to="." method="_on_PalettesButton_button_down"] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/Palettes/PalettesButton" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="MenuPopup/PanelContainer/VBoxContainer/Palettes/PalettesButton" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/OptionsButton/OptionsButton" to="." method="_on_OptionsButton_button_down"] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/OptionsButton/OptionsButton" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="MenuPopup/PanelContainer/VBoxContainer/OptionsButton/OptionsButton" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/Menu/MenuButton" to="AnimationPlayer" method="play" binds= [ "show_exit" ]] +[connection signal="button_down" from="MenuPopup/PanelContainer/VBoxContainer/Menu/MenuButton" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="MenuPopup/PanelContainer/VBoxContainer/Menu/MenuButton" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/StayHere" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/StayHere" to="MenuSounds" method="play_select_sound"] +[connection signal="pressed" from="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/StayHere" to="." method="_on_StayHere_pressed"] +[connection signal="button_down" from="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/ExitMenu" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/ExitMenu" to="MenuSounds" method="play_select_sound"] +[connection signal="pressed" from="ExitPopup/PanelContainer/VBoxContainer/HBoxContainer/ExitMenu" to="." method="_on_ExitMenu_pressed"] +[connection signal="exit" from="OptionsScreen" to="." method="_on_OptionsScreen_exit"] diff --git a/menus/main_menu.gd b/menus/main_menu.gd new file mode 100644 index 0000000..d62e9bb --- /dev/null +++ b/menus/main_menu.gd @@ -0,0 +1,71 @@ +class_name MainMenu +extends Node + +onready var continue_button = $Panel/Continue + +func _ready(): + Game.marathon_mode = false + Fade.fade_in(Options.transition_speed_secs) + #Grey out continue if no save files + SpeedrunTimer.visible = false + SpeedrunTimer.timer_running = false + yield(get_tree(),"idle_frame") + if Save.current_file and not Save.current_file.debug: + $Panel/Continue.grab_focus() + else: + $Panel/Body/GreyedContinue.visible = true + continue_button.visible = false + $Panel/FileSelect.grab_focus() + if Game.last_mm_button != null: + get_node(Game.last_mm_button).grab_focus() + else: + $Panel/FileSelect.grab_focus() + +func _on_Continue_button_down(): + Game.last_mm_button = "Panel/Continue" + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/level_select_scholar.tscn").instance() + + +func _on_FileSelect_button_down(): + Game.last_mm_button = @"Panel/FileSelect" + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/file_select.tscn").instance() + + +func _on_Exit_button_down(): + Game.last_mm_button = @"Panel/FileSelect" + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + get_tree().quit() + + +func _on_SoundTest_button_down(): + Game.last_mm_button = @"Panel/SoundTest" + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/sound_test.tscn").instance() + + + +func _on_HighScores_button_down() -> void: + Game.last_mm_button = @"Panel/HighScores" + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/scoreboards_scholar.tscn").instance() + + +func _on_Options_button_down() -> void: + Game.last_mm_button = @"Panel/Options" + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/options_menu.tscn").instance() + + +func _on_MarathonMode_button_down() -> void: + Game.last_mm_button = @"Panel/MarathonMode" + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/marathon_start.tscn").instance() diff --git a/menus/main_menu.tscn b/menus/main_menu.tscn new file mode 100644 index 0000000..a12ec4f --- /dev/null +++ b/menus/main_menu.tscn @@ -0,0 +1,266 @@ +[gd_scene load_steps=15 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=2] +[ext_resource path="res://graphics/hud/sg_menu.png" type="Texture" id=3] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=4] +[ext_resource path="res://menus/main_menu.gd" type="Script" id=5] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=6] +[ext_resource path="res://graphics/hud/sg_menu_blink.png" type="Texture" id=7] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=8] +[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=9] + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 6 ) +shader_param/color_1 = Color( 1, 0.835294, 0.619608, 1 ) +shader_param/color_2 = Color( 1, 0.478431, 0.219608, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 12, 0 ) +shader_param/cycle_alternation = Vector2( 0, 0 ) +shader_param/uv_transform = Transform( 1, -2, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 6 ) +shader_param/color_1 = Color( 0.62, 0.797333, 1, 1 ) +shader_param/color_2 = Color( 0.22, 0.428, 1, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 24, 0 ) +shader_param/cycle_alternation = Vector2( 0, 0 ) +shader_param/uv_transform = Transform( 1, 1, 0, 2, 1, 0, 0, 0, 1, 0, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=6] +shader = ExtResource( 2 ) +shader_param/speed = Vector2( 0, 4 ) +shader_param/ammount = Vector2( 0, 1 ) +shader_param/offset = Vector2( 0, 1 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 2 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="Animation" id=5] +resource_name = "blink" +length = 5.0 +loop = true +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("SG/Eyes:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 4.3, 4.55 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("SG/Eyes:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 4.3, 4.35, 4.4, 4.45, 4.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 1, 0 ] +} + +[node name="MainMenu" type="Node"] +script = ExtResource( 5 ) + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 2 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 136.0 + +[node name="Background2" type="ColorRect" parent="."] +material = SubResource( 3 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_bottom = -56.0 + +[node name="SG" type="TextureRect" parent="."] +margin_left = 176.0 +margin_top = 40.0 +margin_right = 242.0 +margin_bottom = 187.0 +texture = ExtResource( 3 ) + +[node name="Eyes" type="Sprite" parent="SG"] +visible = false +position = Vector2( 33, 38 ) +texture = ExtResource( 7 ) +hframes = 3 + +[node name="Panel" type="Panel" parent="."] +material = SubResource( 6 ) +margin_left = 16.0 +margin_top = 32.0 +margin_right = 136.0 +margin_bottom = 120.0 +theme = ExtResource( 1 ) + +[node name="Body" type="Label" parent="Panel"] +material = SubResource( 6 ) +margin_left = 16.0 +margin_top = 8.0 +margin_right = 112.0 +margin_bottom = 80.0 +text = "file select +marathon mode +options +high scores +sound test +exit" + +[node name="GreyedContinue" type="Label" parent="Panel/Body"] +visible = false +material = SubResource( 6 ) +margin_top = 9001.0 +margin_right = 56.0 +margin_bottom = 9011.0 +custom_colors/font_color = Color( 0.690196, 0.690196, 0.690196, 1 ) +text = "Continue" + +[node name="Continue" type="TextureButton" parent="Panel"] +visible = false +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 9.0 +margin_right = 16.0 +margin_bottom = 17.0 +focus_neighbour_top = NodePath("../Exit") +focus_neighbour_bottom = NodePath("../FileSelect") +texture_focused = ExtResource( 4 ) + +[node name="FileSelect" type="TextureButton" parent="Panel"] +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 9.0 +margin_right = 16.0 +margin_bottom = 17.0 +focus_neighbour_top = NodePath("../Exit") +focus_neighbour_bottom = NodePath("../MarathonMode") +texture_focused = ExtResource( 4 ) + +[node name="MarathonMode" type="TextureButton" parent="Panel"] +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 22.0 +margin_right = 16.0 +margin_bottom = 30.0 +focus_neighbour_top = NodePath("../FileSelect") +focus_neighbour_bottom = NodePath("../Options") +texture_focused = ExtResource( 4 ) + +[node name="Augmentations" type="TextureButton" parent="Panel"] +visible = false +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 48.0 +margin_right = 16.0 +margin_bottom = 56.0 +focus_neighbour_top = NodePath("../MarathonMode") +focus_neighbour_bottom = NodePath("../Options") +texture_focused = ExtResource( 4 ) + +[node name="Options" type="TextureButton" parent="Panel"] +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 35.0 +margin_right = 16.0 +margin_bottom = 43.0 +focus_neighbour_top = NodePath("../MarathonMode") +focus_neighbour_bottom = NodePath("../HighScores") +texture_focused = ExtResource( 4 ) + +[node name="HighScores" type="TextureButton" parent="Panel"] +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 48.0 +margin_right = 16.0 +margin_bottom = 56.0 +focus_neighbour_top = NodePath("../Options") +focus_neighbour_bottom = NodePath("../SoundTest") +texture_focused = ExtResource( 4 ) + +[node name="SoundTest" type="TextureButton" parent="Panel"] +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 61.0 +margin_right = 16.0 +margin_bottom = 69.0 +focus_neighbour_top = NodePath("../HighScores") +focus_neighbour_bottom = NodePath("../Exit") +texture_focused = ExtResource( 4 ) + +[node name="Exit" type="TextureButton" parent="Panel"] +material = SubResource( 4 ) +margin_left = 8.0 +margin_top = 74.0 +margin_right = 16.0 +margin_bottom = 82.0 +focus_neighbour_top = NodePath("../SoundTest") +focus_neighbour_bottom = NodePath("../FileSelect") +texture_focused = ExtResource( 4 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "blink" +anims/blink = SubResource( 5 ) + +[node name="Label" type="Label" parent="."] +material = ExtResource( 8 ) +margin_left = 8.0 +margin_top = 140.0 +margin_right = 183.0 +margin_bottom = 189.0 +theme = ExtResource( 1 ) +text = "REvolution - +The forceful overthrow of +a social order in favor +of a new future" + +[node name="Label2" type="Label" parent="."] +material = ExtResource( 8 ) +margin_left = 8.0 +margin_top = 8.0 +margin_right = 218.0 +margin_bottom = 57.0 +theme = ExtResource( 1 ) +text = "Welcome to the future... 2083!" +align = 1 + +[node name="MenuSounds" parent="." instance=ExtResource( 9 )] + +[connection signal="button_down" from="Panel/Continue" to="." method="_on_Continue_button_down"] +[connection signal="button_down" from="Panel/Continue" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/Continue" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Panel/FileSelect" to="." method="_on_FileSelect_button_down"] +[connection signal="button_down" from="Panel/FileSelect" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/FileSelect" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Panel/MarathonMode" to="." method="_on_MarathonMode_button_down"] +[connection signal="button_down" from="Panel/MarathonMode" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/MarathonMode" to="MenuSounds" method="play_select_sound"] +[connection signal="focus_entered" from="Panel/Augmentations" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Panel/Options" to="." method="_on_Options_button_down"] +[connection signal="button_down" from="Panel/Options" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/Options" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Panel/HighScores" to="." method="_on_HighScores_button_down"] +[connection signal="button_down" from="Panel/HighScores" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/HighScores" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Panel/SoundTest" to="." method="_on_SoundTest_button_down"] +[connection signal="button_down" from="Panel/SoundTest" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/SoundTest" to="MenuSounds" method="play_select_sound"] +[connection signal="button_down" from="Panel/Exit" to="." method="_on_Exit_button_down"] +[connection signal="button_down" from="Panel/Exit" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Panel/Exit" to="MenuSounds" method="play_select_sound"] diff --git a/menus/marathon_results.gd b/menus/marathon_results.gd new file mode 100644 index 0000000..272d492 --- /dev/null +++ b/menus/marathon_results.gd @@ -0,0 +1,19 @@ +extends Control + + +onready var score: Label = $"%Score" +onready var shards: Label = $"%Shards" + + +func _ready() -> void: + Audio.play_music(load("res://audio/music/rumble_revolution_demo.ogg")) + score.text = score.text % Game.marathon_score + shards.text = shards.text % Game.marathon_shards + $"%Deaths".text = $"%Deaths".text % Game.marathon_deaths + Fade.fade_in() + + +func _input(event: InputEvent) -> void: + if Input.is_action_just_pressed("ui_accept"): + Fade.fade_out(Options.transition_speed_secs) + Game.change_map(load("res://menus/marathon_start.tscn")) diff --git a/menus/marathon_results.tscn b/menus/marathon_results.tscn new file mode 100644 index 0000000..b3be597 --- /dev/null +++ b/menus/marathon_results.tscn @@ -0,0 +1,99 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://menus/marathon_results.gd" type="Script" id=3] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=4] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 1, 0.709804, 0.380392, 1 ) +shader_param/color_2 = Color( 0.345098, 0.945098, 0.905882, 1 ) +shader_param/checker_size = Vector2( 24, 24 ) +shader_param/pan_speed = Vector2( 8, 12 ) +shader_param/cycle_speed = Vector2( 4, 4 ) +shader_param/cycle_alternation = Vector2( 4, 4 ) +shader_param/uv_transform = Transform2D( 1, 0, 1, 1, 0, 0 ) + +[node name="MarathonResults" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 2 ) +script = ExtResource( 3 ) + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Victory" type="Label" parent="."] +material = ExtResource( 4 ) +margin_top = 24.0 +margin_right = 256.0 +margin_bottom = 47.0 +text = "Game is over, when will another +day's adventure begin?" +align = 1 + +[node name="Victory2" type="Label" parent="."] +material = ExtResource( 4 ) +margin_top = 144.0 +margin_right = 256.0 +margin_bottom = 180.0 +text = "No matter what happens you +will always remain a triumphant +hero, too." +align = 1 + +[node name="PanelContainer" type="PanelContainer" parent="."] +margin_left = 68.0 +margin_top = 64.0 +margin_right = 188.0 +margin_bottom = 134.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 117.0 +margin_bottom = 67.0 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"] +material = ExtResource( 4 ) +margin_right = 114.0 +margin_bottom = 10.0 +text = "Good Job!" +align = 1 +valign = 1 + +[node name="Score" type="Label" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +material = ExtResource( 4 ) +margin_top = 16.0 +margin_right = 114.0 +margin_bottom = 26.0 +size_flags_vertical = 6 +text = "Score: %05d" +align = 1 +valign = 1 + +[node name="Shards" type="Label" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +material = ExtResource( 4 ) +margin_top = 34.0 +margin_right = 114.0 +margin_bottom = 44.0 +size_flags_vertical = 6 +text = "got %d shards!" +align = 1 +valign = 1 + +[node name="Deaths" type="Label" parent="PanelContainer/VBoxContainer"] +unique_name_in_owner = true +material = ExtResource( 4 ) +margin_top = 52.0 +margin_right = 114.0 +margin_bottom = 62.0 +size_flags_vertical = 6 +text = "Died %d times." +align = 1 +valign = 1 diff --git a/menus/marathon_select_lives.gd b/menus/marathon_select_lives.gd new file mode 100644 index 0000000..0ae291d --- /dev/null +++ b/menus/marathon_select_lives.gd @@ -0,0 +1,89 @@ +extends Button + + +const INFINITY_SIGIL := "▬↨" + + +var delay := 1.0 +var cooldown := 0.0 + + +onready var back_arrow: TextureRect = $"../BackArrow" +onready var next_arrow: TextureRect = $"../NextArrow" + + +func _ready() -> void: + _update_display() + + +func _process(delta: float) -> void: + if not has_focus(): + return + if Input.is_action_pressed("ui_left"): + if cooldown <= 0.0: + cooldown = delay + delay *= 0.5 + if Game.use_lives: + Game.marathon_lives -= 1 + if Game.marathon_lives < 0: + Game.use_lives = false + cooldown = INF + else: + Game.use_lives = true + Game.marathon_lives = 999 + cooldown -= delta + _update_display() + elif Input.is_action_pressed("ui_right"): + if cooldown <= 0.0: + cooldown = delay + delay *= 0.5 + if Game.use_lives: + Game.marathon_lives += 1 + if Game.marathon_lives > 999: + Game.use_lives = false + cooldown = INF + else: + Game.use_lives = true + Game.marathon_lives = 0 + cooldown -= delta + _update_display() + else: + cooldown = 0.0 + delay = 1.0 + + +func _update_display() -> void: + if Game.use_lives: + text = "%03d" % Game.marathon_lives + else: + text = INFINITY_SIGIL + + +#func _gui_input(event: InputEvent) -> void: +# if event.is_action_pressed("ui_left"): +# if Game.use_lives: +# Game.marathon_lives -= 1 +# if Game.marathon_lives < 0: +# Game.use_lives = false +# else: +# Game.use_lives = true +# Game.marathon_lives = 999 +# if event.is_action_pressed("ui_right"): +# if Game.use_lives: +# Game.marathon_lives += 1 +# if Game.marathon_lives > 999: +# Game.use_lives = false +# else: +# Game.use_lives = true +# Game.marathon_lives = 0 +# _update_display() + + +func _on_focus_entered() -> void: + back_arrow.visible = true + next_arrow.visible = true + + +func _on_focus_exited() -> void: + back_arrow.visible = false + next_arrow.visible = false diff --git a/menus/marathon_start.gd b/menus/marathon_start.gd new file mode 100644 index 0000000..38e86ad --- /dev/null +++ b/menus/marathon_start.gd @@ -0,0 +1,48 @@ +extends Control + + +const DISABLED_COLOR := Color(0xb0b0b0ff) + + +onready var difficulty_buttons := [ + $"%BeginnerButton", + $"%AdvancedButton", + $"%AdvancedButton", + $"%ProfessionalButton", +] + + +func _ready() -> void: + Fade.fade_in(0.4) + yield(get_tree(), "idle_frame") + difficulty_buttons[Game.difficulty].grab_focus() + + +func _input(event: InputEvent) -> void: + if Input.is_action_just_pressed("ui_accept") or Input.is_action_just_pressed("pause"): + Game.marathon_mode = true + Game.lives = Game.marathon_lives + Game.marathon_score = 0 + Game.marathon_shards = 0 + Game.marathon_deaths = 0 + Game.current_level = LevelData.marathon_start + Game.change_map(LevelData.levels[Game.current_level].scene) + elif Input.is_action_just_pressed("ui_cancel"): + Game.marathon_mode = false + Game.current_level = 0 + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(load("res://menus/main_menu.tscn").instance()) + + +func _set_difficulty(difficulty: int) -> void: + var use_lives := Game.use_lives + Game.difficulty = difficulty + Game.use_lives = use_lives + for b in difficulty_buttons: + b.get_parent().modulate = DISABLED_COLOR + difficulty_buttons[difficulty].get_parent().modulate = Color.white + + +func _on_DifficultySelect_focus_entered() -> void: + difficulty_buttons[Game.difficulty].grab_focus() diff --git a/menus/marathon_start.tscn b/menus/marathon_start.tscn new file mode 100644 index 0000000..60eeda7 --- /dev/null +++ b/menus/marathon_start.tscn @@ -0,0 +1,253 @@ +[gd_scene load_steps=13 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://menus/marathon_start.gd" type="Script" id=3] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=5] +[ext_resource path="res://graphics/hud/file_select_arrow.png" type="Texture" id=6] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=7] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=8] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=9] +[ext_resource path="res://menus/marathon_select_lives.gd" type="Script" id=10] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.815686, 0.917647, 0.462745, 1 ) +shader_param/color_2 = Color( 0.152941, 0.772549, 0.356863, 1 ) +shader_param/checker_size = Vector2( 24, 24 ) +shader_param/pan_speed = Vector2( 8, 12 ) +shader_param/cycle_speed = Vector2( 4, 4 ) +shader_param/cycle_alternation = Vector2( 4, 4 ) +shader_param/uv_transform = Transform2D( 1, 0, 1, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 8 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 8 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 4, 0 ) + +[node name="MarathonStart" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 2 ) +script = ExtResource( 3 ) + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="PressStart" type="Label" parent="."] +material = ExtResource( 5 ) +anchor_right = 1.0 +margin_top = 160.0 +margin_bottom = 182.0 +theme = ExtResource( 2 ) +text = "Press start to begin" +align = 1 +valign = 1 + +[node name="FlavorText" type="Label" parent="."] +material = ExtResource( 5 ) +anchor_right = 1.0 +margin_top = 8.0 +margin_bottom = 31.0 +theme = ExtResource( 2 ) +text = "Begin your adventure... +in revolution 2083 world" +align = 1 +valign = 1 + +[node name="DifficultySelect" type="PanelContainer" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -112.0 +margin_top = -48.0 +margin_right = 112.0 +focus_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="DifficultySelect"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 221.0 +margin_bottom = 45.0 + +[node name="DiffcultySelect" type="Label" parent="DifficultySelect/VBoxContainer"] +material = ExtResource( 5 ) +margin_right = 218.0 +margin_bottom = 14.0 +rect_min_size = Vector2( 0, 14 ) +text = "difficulty select:" +align = 1 +valign = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="DifficultySelect/VBoxContainer"] +margin_top = 18.0 +margin_right = 218.0 +margin_bottom = 42.0 +custom_constants/separation = 8 +alignment = 1 + +[node name="Beginner" type="VBoxContainer" parent="DifficultySelect/VBoxContainer/HBoxContainer"] +margin_left = 3.0 +margin_right = 59.0 +margin_bottom = 24.0 +custom_constants/separation = 2 + +[node name="Label" type="Label" parent="DifficultySelect/VBoxContainer/HBoxContainer/Beginner"] +margin_right = 56.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 7 ) +text = "Beginner" + +[node name="BeginnerButton" type="TextureButton" parent="DifficultySelect/VBoxContainer/HBoxContainer/Beginner"] +unique_name_in_owner = true +material = ExtResource( 5 ) +margin_left = 28.0 +margin_top = 12.0 +margin_right = 28.0 +margin_bottom = 24.0 +rect_min_size = Vector2( 0, 12 ) +focus_neighbour_right = NodePath("../../Advanced/AdvancedButton") +size_flags_horizontal = 4 +texture_focused = ExtResource( 6 ) +expand = true +stretch_mode = 3 + +[node name="Advanced" type="VBoxContainer" parent="DifficultySelect/VBoxContainer/HBoxContainer"] +margin_left = 67.0 +margin_right = 123.0 +margin_bottom = 24.0 +custom_constants/separation = 2 + +[node name="Label" type="Label" parent="DifficultySelect/VBoxContainer/HBoxContainer/Advanced"] +margin_right = 56.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 7 ) +text = "Advanced" + +[node name="AdvancedButton" type="TextureButton" parent="DifficultySelect/VBoxContainer/HBoxContainer/Advanced"] +unique_name_in_owner = true +material = ExtResource( 5 ) +margin_left = 28.0 +margin_top = 12.0 +margin_right = 28.0 +margin_bottom = 24.0 +rect_min_size = Vector2( 0, 12 ) +focus_neighbour_left = NodePath("../../Beginner/BeginnerButton") +focus_neighbour_right = NodePath("../../Professional/ProfessionalButton") +size_flags_horizontal = 4 +texture_focused = ExtResource( 6 ) +expand = true +stretch_mode = 3 + +[node name="Professional" type="VBoxContainer" parent="DifficultySelect/VBoxContainer/HBoxContainer"] +margin_left = 131.0 +margin_right = 215.0 +margin_bottom = 24.0 +custom_constants/separation = 2 + +[node name="Label" type="Label" parent="DifficultySelect/VBoxContainer/HBoxContainer/Professional"] +margin_right = 84.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 7 ) +text = "Professional" + +[node name="ProfessionalButton" type="TextureButton" parent="DifficultySelect/VBoxContainer/HBoxContainer/Professional"] +unique_name_in_owner = true +material = ExtResource( 5 ) +margin_left = 42.0 +margin_top = 12.0 +margin_right = 42.0 +margin_bottom = 24.0 +rect_min_size = Vector2( 0, 12 ) +focus_neighbour_left = NodePath("../../Advanced/AdvancedButton") +size_flags_horizontal = 4 +texture_focused = ExtResource( 6 ) +expand = true +stretch_mode = 3 + +[node name="LivesSelect" type="PanelContainer" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -66.0 +margin_top = 7.0 +margin_right = 66.0 +margin_bottom = 39.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="LivesSelect"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 129.0 +margin_bottom = 29.0 +custom_constants/separation = 0 + +[node name="Label" type="Label" parent="LivesSelect/VBoxContainer"] +material = ExtResource( 5 ) +margin_right = 126.0 +margin_bottom = 14.0 +rect_min_size = Vector2( 0, 14 ) +text = "number of lives:" +align = 1 +valign = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="LivesSelect/VBoxContainer"] +margin_top = 14.0 +margin_right = 126.0 +margin_bottom = 26.0 +rect_min_size = Vector2( 0, 12 ) +size_flags_horizontal = 3 +alignment = 1 + +[node name="BackArrow" type="TextureRect" parent="LivesSelect/VBoxContainer/HBoxContainer"] +visible = false +material = SubResource( 2 ) +margin_left = 51.0 +margin_top = 2.0 +margin_right = 57.0 +margin_bottom = 10.0 +size_flags_vertical = 4 +texture = ExtResource( 9 ) +flip_h = true + +[node name="SelectLives" type="Button" parent="LivesSelect/VBoxContainer/HBoxContainer"] +margin_left = 56.0 +margin_right = 70.0 +margin_bottom = 12.0 +focus_neighbour_left = NodePath(".") +focus_neighbour_top = NodePath("../../../../DifficultySelect") +focus_neighbour_right = NodePath(".") +theme = ExtResource( 2 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_fonts/font = ExtResource( 7 ) +text = "▬↨" +script = ExtResource( 10 ) + +[node name="NextArrow" type="TextureRect" parent="LivesSelect/VBoxContainer/HBoxContainer"] +visible = false +material = SubResource( 3 ) +margin_left = 69.0 +margin_top = 2.0 +margin_right = 75.0 +margin_bottom = 10.0 +size_flags_vertical = 4 +texture = ExtResource( 9 ) + +[connection signal="focus_entered" from="DifficultySelect" to="." method="_on_DifficultySelect_focus_entered"] +[connection signal="focus_entered" from="DifficultySelect/VBoxContainer/HBoxContainer/Beginner/BeginnerButton" to="." method="_set_difficulty" binds= [ 0 ]] +[connection signal="focus_entered" from="DifficultySelect/VBoxContainer/HBoxContainer/Advanced/AdvancedButton" to="." method="_set_difficulty" binds= [ 2 ]] +[connection signal="focus_entered" from="DifficultySelect/VBoxContainer/HBoxContainer/Professional/ProfessionalButton" to="." method="_set_difficulty" binds= [ 3 ]] +[connection signal="focus_entered" from="LivesSelect/VBoxContainer/HBoxContainer/SelectLives" to="LivesSelect/VBoxContainer/HBoxContainer/SelectLives" method="_on_focus_entered"] +[connection signal="focus_exited" from="LivesSelect/VBoxContainer/HBoxContainer/SelectLives" to="LivesSelect/VBoxContainer/HBoxContainer/SelectLives" method="_on_focus_exited"] diff --git a/menus/music_select.gd b/menus/music_select.gd new file mode 100644 index 0000000..d181cf3 --- /dev/null +++ b/menus/music_select.gd @@ -0,0 +1,21 @@ +extends TextureButton + +export (Array, String) var titles +export (Array, AudioStream) var songs +var current_selection = 0 +onready var body = $MusicLabel/Label + +func _ready(): + call_deferred("grab_focus") + +func _gui_input(event): + if Input.is_action_just_pressed("ui_left"): + current_selection -= 1 + if Input.is_action_just_pressed("ui_right"): + current_selection += 1 + if Input.is_action_just_pressed("ui_accept"): + Audio.play_sound(songs[current_selection],Audio.ac_music) + current_selection = posmod(current_selection,songs.size()) + body.text = titles[current_selection] + + diff --git a/menus/newgrounds_login.gd b/menus/newgrounds_login.gd new file mode 100644 index 0000000..3ded771 --- /dev/null +++ b/menus/newgrounds_login.gd @@ -0,0 +1,43 @@ +extends Control + +onready var tab_container: TabContainer = $"%TabContainer" + +func _ready() -> void: + visible = false + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + visible = true + yield(get_tree(), "idle_frame") + grab_focus() + Fade.fade_in(Options.transition_speed_secs) + if not Ngio.keys_loaded: + tab_container.current_tab = 2 + return + if Ngio.session.user == null and not Ngio.session.passport_url.empty(): + var passport_url = Ngio.session.passport_url + # try to open in browser + OS.shell_open(passport_url) + # try to copy to clipboard + OS.clipboard = passport_url + if OS.has_clipboard(): + $"%Clipboard".modulate.a = 1.0 + _await_result() + elif Ngio.session.user != null: + tab_container.current_tab = 1 + else: + tab_container.current_tab = 2 + +func _gui_input(event: InputEvent) -> void: + if event.is_action_pressed("ui_cancel"): + if tab_container.current_tab == 0: + Ngio.request_execute("App.endSession") + queue_free() + elif event.is_action_pressed("ui_accept") and tab_container.current_tab != 0: + queue_free() + +func _await_result() -> void: + var success = yield(Ngio.passport_check(), "completed") + if success: + tab_container.current_tab = 1 + else: + tab_container.current_tab = 2 diff --git a/menus/newgrounds_login.tscn b/menus/newgrounds_login.tscn new file mode 100644 index 0000000..b6e5a1e --- /dev/null +++ b/menus/newgrounds_login.tscn @@ -0,0 +1,95 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://menus/newgrounds_login.gd" type="Script" id=2] +[ext_resource path="res://ui/theme.tres" type="Theme" id=3] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=4] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 1, 0.709804, 0.054902, 1 ) +shader_param/color_2 = Color( 1, 0.945098, 0.478431, 1 ) +shader_param/checker_size = Vector2( 24, 12 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 8, -8 ) +shader_param/cycle_alternation = Vector2( 0, 1 ) +shader_param/uv_transform = Transform2D( 1, 1, 1, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 5 ) +shader_param/speed = Vector2( 8, 4 ) +shader_param/ammount = Vector2( 12, 24 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[node name="NewgroundsLogin" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +focus_mode = 2 +script = ExtResource( 2 ) + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="CenterContainer" type="CenterContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 3 ) + +[node name="TabContainer" type="TabContainer" parent="CenterContainer"] +unique_name_in_owner = true +margin_left = 23.0 +margin_top = 43.0 +margin_right = 233.0 +margin_bottom = 148.0 +tabs_visible = false + +[node name="Loading" type="VBoxContainer" parent="CenterContainer/TabContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_pivot_offset = Vector2( -174, -77 ) + +[node name="Label" type="Label" parent="CenterContainer/TabContainer/Loading"] +margin_right = 210.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 4 ) +text = "Log into newgrounds in browser" +align = 1 + +[node name="LoadingGraphic" type="Label" parent="CenterContainer/TabContainer/Loading"] +material = SubResource( 2 ) +margin_top = 14.0 +margin_right = 210.0 +margin_bottom = 78.0 +rect_min_size = Vector2( 0, 64 ) +text = "§" +align = 1 +valign = 1 + +[node name="Clipboard" type="Label" parent="CenterContainer/TabContainer/Loading"] +unique_name_in_owner = true +modulate = Color( 1, 1, 1, 0 ) +margin_top = 82.0 +margin_right = 210.0 +margin_bottom = 105.0 +custom_fonts/font = ExtResource( 4 ) +text = "If browser didn't open, +url copied to clipboard" +align = 1 + +[node name="Success" type="Label" parent="CenterContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +custom_fonts/font = ExtResource( 4 ) +text = "Success!" + +[node name="Failure" type="Label" parent="CenterContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +custom_fonts/font = ExtResource( 4 ) +text = "Failure :(" diff --git a/menus/options_menu.gd b/menus/options_menu.gd new file mode 100644 index 0000000..e340998 --- /dev/null +++ b/menus/options_menu.gd @@ -0,0 +1,14 @@ +extends Control + + +func _ready() -> void: + Fade.fade_in(Options.transition_speed_secs) + yield(Fade, "fade_finished") + $OptionsScreen.focus() + + + +func _on_OptionsScreen_exit() -> void: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/main_menu.tscn").instance() diff --git a/menus/options_menu.tscn b/menus/options_menu.tscn new file mode 100644 index 0000000..e23196f --- /dev/null +++ b/menus/options_menu.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://objects/hud/options_screen_scholar.tscn" type="PackedScene" id=1] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=2] +[ext_resource path="res://menus/options_menu.gd" type="Script" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) +shader_param/color_1 = Color( 1, 0.709804, 0.984314, 1 ) +shader_param/color_2 = Color( 1, 0.423529, 0.4, 1 ) +shader_param/checker_size = Vector2( 12, 12 ) +shader_param/pan_speed = Vector2( 0, 16 ) +shader_param/cycle_speed = Vector2( 4, -4 ) +shader_param/cycle_alternation = Vector2( 2, 0 ) +shader_param/uv_transform = Transform2D( 1, 1, 0, 1, 0, 0 ) + +[node name="OptionsMenu" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 3 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="OptionsScreen" parent="." instance=ExtResource( 1 )] + +[connection signal="exit" from="OptionsScreen" to="." method="_on_OptionsScreen_exit"] diff --git a/menus/palette_select.gd b/menus/palette_select.gd new file mode 100644 index 0000000..7772326 --- /dev/null +++ b/menus/palette_select.gd @@ -0,0 +1,54 @@ +extends Control + + +export (Array, String) var titles: Array +export (Array, Texture) var palettes: Array +export var previous_screen: PackedScene +onready var menu_sounds = $MenuSounds + +var current_palette: int = 0 + + +onready var sg: AnimatedSprite = $SG + + +func _ready() -> void: + menu_sounds.can_play = true + assert(titles.size() == palettes.size(), "titles and palettes arrays are not same size") + + if Save.current_file.is_super_player(): + palettes.append(preload("res://graphics/player/palettes/super_player.tex")) + titles.append("Super Player") + + for i in palettes.size(): + var id = palettes[i].resource_path.get_file().get_basename() + if id == Save.current_file.palette: + current_palette = i + break + + sg.material.set_shader_param("palette", palettes[current_palette]) + $"%PaletteTitle".text = titles[current_palette] + + +func _input(event: InputEvent) -> void: + if event.is_action_pressed("ui_cancel"): + SceneManager.current_scene = previous_screen.instance() + menu_sounds.play_select_sound() + return + elif event.is_action_pressed("ui_left"): + current_palette -= 1 + menu_sounds.play_select_sound() + elif event.is_action_pressed("ui_right"): + current_palette += 1 + menu_sounds.play_select_sound() + + current_palette = posmod(current_palette, palettes.size()) + sg.material.set_shader_param("palette", palettes[current_palette]) + $"%PaletteTitle".text = titles[current_palette] + Game.current_palette = palettes[current_palette].resource_path.get_file().get_basename() + if Game.current_palette == "super_player": + $"%Sparkles".visible = true + else: + $"%Sparkles".visible = false + Save.current_file.palette = Game.current_palette + Save.current_file.save_to_file() diff --git a/menus/palette_select.tscn b/menus/palette_select.tscn new file mode 100644 index 0000000..b6ffa39 --- /dev/null +++ b/menus/palette_select.tscn @@ -0,0 +1,245 @@ +[gd_scene load_steps=53 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://menus/palette_select.gd" type="Script" id=3] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=4] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=5] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=6] +[ext_resource path="res://graphics/player/palettes/gravitational_redshift.tex" type="Texture" id=7] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=8] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=9] +[ext_resource path="res://graphics/player/sg.png" type="Texture" id=10] +[ext_resource path="res://graphics/player/palettes/strawberry.tex" type="Texture" id=11] +[ext_resource path="res://graphics/player/palettes/lasertag.tex" type="Texture" id=12] +[ext_resource path="res://graphics/player/palettes/trans_pride.tex" type="Texture" id=13] +[ext_resource path="res://graphics/player/palettes/supersonic.tex" type="Texture" id=14] +[ext_resource path="res://menus/level_select_scholar.tscn" type="PackedScene" id=15] +[ext_resource path="res://graphics/player/palettes/superman.tex" type="Texture" id=16] +[ext_resource path="res://graphics/player/palettes/msx.tex" type="Texture" id=17] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=18] +[ext_resource path="res://graphics/player/palettes/elaine.tex" type="Texture" id=19] +[ext_resource path="res://graphics/player/palettes/mibibli.tex" type="Texture" id=20] +[ext_resource path="res://graphics/player/palettes/crocodibli.tex" type="Texture" id=21] +[ext_resource path="res://graphics/player/palettes/ice_mountain.tex" type="Texture" id=22] +[ext_resource path="res://graphics/player/palettes/wavebird.tex" type="Texture" id=23] +[ext_resource path="res://graphics/player/palettes/sms.tex" type="Texture" id=24] +[ext_resource path="res://graphics/player/palettes/telstar.tex" type="Texture" id=25] +[ext_resource path="res://graphics/player/palettes/protector.tex" type="Texture" id=26] +[ext_resource path="res://graphics/player/palettes/cyber_city.tex" type="Texture" id=27] +[ext_resource path="res://graphics/player/palettes/cave_dweller.tex" type="Texture" id=28] +[ext_resource path="res://graphics/player/palettes/doggy.tex" type="Texture" id=29] +[ext_resource path="res://graphics/player/palettes/gayboy.tex" type="Texture" id=30] +[ext_resource path="res://graphics/player/palettes/bnw.tex" type="Texture" id=31] +[ext_resource path="res://graphics/player/palettes/marza.tex" type="Texture" id=32] +[ext_resource path="res://graphics/player/palettes/unknown_friend.tex" type="Texture" id=33] +[ext_resource path="res://graphics/player/palettes/seegee.tex" type="Texture" id=34] +[ext_resource path="res://graphics/player/palettes/nightrunner.tex" type="Texture" id=35] +[ext_resource path="res://graphics/player/palettes/typhoon.tex" type="Texture" id=36] +[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=37] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=38] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=39] +[ext_resource path="res://graphics/player/palettes/lucas.tex" type="Texture" id=40] +[ext_resource path="res://graphics/player/palettes/blanc.tex" type="Texture" id=41] +[ext_resource path="res://graphics/player/palettes/noir.tex" type="Texture" id=42] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.717647, 0.717647, 0.717647, 1 ) +shader_param/color_2 = Color( 0.360784, 0.360784, 0.360784, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 8, 8 ) +shader_param/cycle_alternation = Vector2( 0, 1 ) +shader_param/uv_transform = Transform2D( 0.5, -0.5, 0.5, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 4 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true +shader_param/palette = ExtResource( 18 ) + +[sub_resource type="AtlasTexture" id=5] +atlas = ExtResource( 10 ) +region = Rect2( 0, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 10 ) +region = Rect2( 32, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=7] +atlas = ExtResource( 10 ) +region = Rect2( 64, 32, 32, 32 ) + +[sub_resource type="AtlasTexture" id=8] +atlas = ExtResource( 10 ) +region = Rect2( 96, 32, 32, 32 ) + +[sub_resource type="SpriteFrames" id=9] +animations = [ { +"frames": [ SubResource( 5 ), SubResource( 6 ), SubResource( 7 ), SubResource( 8 ) ], +"loop": true, +"name": "default", +"speed": 10.0 +} ] + +[sub_resource type="Curve" id=10] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 8 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 8 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 4, 0 ) + +[node name="PaletteSelect" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 2 ) +script = ExtResource( 3 ) +titles = [ "Default", "Lasertag", "Strawberry", "Ms. X", "Trans Pride", "SuperSonic", "Unknown Friend", "Marza", "Nightrunner", "Seegee", "Elaine", "May Gaman", "Albert", "Lucas", "Superman", "Redshift", "Cave Dweller", "wavebird", "ice mountain", "cyber city", "sms", "protector", "telstar", "Doggy!", "gayboy", "bnw", "Blanc", "Noir", "Typhoon" ] +palettes = [ ExtResource( 18 ), ExtResource( 12 ), ExtResource( 11 ), ExtResource( 17 ), ExtResource( 13 ), ExtResource( 14 ), ExtResource( 33 ), ExtResource( 32 ), ExtResource( 35 ), ExtResource( 34 ), ExtResource( 19 ), ExtResource( 20 ), ExtResource( 21 ), ExtResource( 40 ), ExtResource( 16 ), ExtResource( 7 ), ExtResource( 28 ), ExtResource( 23 ), ExtResource( 22 ), ExtResource( 27 ), ExtResource( 24 ), ExtResource( 26 ), ExtResource( 25 ), ExtResource( 29 ), ExtResource( 30 ), ExtResource( 31 ), ExtResource( 41 ), ExtResource( 42 ), ExtResource( 36 ) ] +previous_screen = ExtResource( 15 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="ChooseYourColors" type="Label" parent="."] +anchor_right = 1.0 +margin_bottom = 16.0 +custom_fonts/font = ExtResource( 5 ) +text = "Choose your palette" +align = 1 +valign = 1 + +[node name="FlavorTextParagraph" type="Label" parent="."] +anchor_right = 1.0 +margin_top = 24.0 +margin_bottom = 40.0 +custom_fonts/font = ExtResource( 5 ) +text = "Heroes from other timelines may +aid in your journey, many are +waiting to help save the future." +align = 1 +valign = 1 + +[node name="InfiniteSGs" type="Label" parent="."] +anchor_right = 1.0 +margin_left = 16.0 +margin_top = 128.0 +margin_right = -168.0 +margin_bottom = 164.0 +custom_fonts/font = ExtResource( 5 ) +text = "There are +infinite +sgs" +align = 1 +valign = 1 + +[node name="InfiniteSGs2" type="Label" parent="."] +anchor_right = 1.0 +margin_left = 176.0 +margin_top = 128.0 +margin_right = -16.0 +margin_bottom = 164.0 +custom_fonts/font = ExtResource( 5 ) +text = "but also +infinite +famis" +align = 1 +valign = 1 + +[node name="SG" type="AnimatedSprite" parent="."] +material = SubResource( 2 ) +position = Vector2( 128, 128 ) +scale = Vector2( 3, 3 ) +frames = SubResource( 9 ) +frame = 1 +playing = true + +[node name="Sparkles" type="CPUParticles2D" parent="SG"] +unique_name_in_owner = true +light_mask = 0 +position = Vector2( 0, 6.33333 ) +amount = 2 +lifetime = 2.0 +texture = ExtResource( 39 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 10 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 10 ) +color = Color( 1, 0.972549, 0.52549, 1 ) +script = ExtResource( 38 ) + +[node name="CenterContainer" type="CenterContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 8.0 +margin_bottom = -24.0 +__meta__ = { +"_edit_lock_": true +} + +[node name="PanelContainer" type="PanelContainer" parent="CenterContainer"] +margin_left = 60.0 +margin_top = 63.0 +margin_right = 195.0 +margin_bottom = 96.0 +rect_min_size = Vector2( 135, 33 ) + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/PanelContainer"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 132.0 +margin_bottom = 30.0 +theme = ExtResource( 2 ) +alignment = 1 + +[node name="BackArrow" type="TextureRect" parent="CenterContainer/PanelContainer/HBoxContainer"] +unique_name_in_owner = true +material = SubResource( 3 ) +margin_left = 30.0 +margin_top = 9.0 +margin_right = 36.0 +margin_bottom = 17.0 +size_flags_vertical = 4 +texture = ExtResource( 9 ) +flip_h = true + +[node name="PaletteTitle" type="Label" parent="CenterContainer/PanelContainer/HBoxContainer"] +unique_name_in_owner = true +material = ExtResource( 6 ) +margin_left = 40.0 +margin_top = 8.0 +margin_right = 89.0 +margin_bottom = 18.0 +theme = ExtResource( 2 ) +text = "Default" +align = 1 +valign = 1 + +[node name="ForwardArrow" type="TextureRect" parent="CenterContainer/PanelContainer/HBoxContainer"] +unique_name_in_owner = true +material = SubResource( 4 ) +margin_left = 93.0 +margin_top = 9.0 +margin_right = 99.0 +margin_bottom = 17.0 +size_flags_vertical = 4 +texture = ExtResource( 9 ) + +[node name="MenuSounds" parent="." instance=ExtResource( 37 )] diff --git a/menus/results.gd b/menus/results.gd new file mode 100644 index 0000000..c52e4ec --- /dev/null +++ b/menus/results.gd @@ -0,0 +1,117 @@ +extends Node + +const Text3D = preload("res://objects/hud/3d_text.tscn") +const LevelSelect := preload("res://menus/level_select_scholar.tscn") + +onready var shards: Node2D = $ShardsAndBonuses/Shards +onready var score = $Score +onready var time = $Time +onready var animation_player = $AnimationPlayer +#Score bonuses +onready var collection_bonus_score = $ShardsAndBonuses/Bonuses/CollectionBonus/CollectionBonusScore +onready var time_bonus_score = $ShardsAndBonuses/Bonuses/TimeBonus/TimeBonusScore +onready var life_bonus_score = $ShardsAndBonuses/Bonuses/LifeBonus/LifeBonusScore +onready var arrow_bonus_score = $ShardsAndBonuses/Bonuses/ArrowBonus/ArrowBonusScore +onready var perfect_bonus_score = $ShardsAndBonuses/Bonuses/PerfectBonus/PerfectBonusScore + +var text_3d = null + + +func _notification(what: int) -> void: + match what: + NOTIFICATION_WM_FOCUS_OUT: + $AnimationPlayer.playback_active = false + NOTIFICATION_WM_FOCUS_IN: + $AnimationPlayer.playback_active = true + + +func _ready() -> void: + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + $"%ArrowBonus".material.set_shader_param("palette", palette) + # easy indicator + if Game.difficulty == Game.Difficulty.SWEET: + $EasyIndicator.visible = true + else: + $EasyIndicator.visible = false + #preload final score + text_3d = Text3D.instance() + text_3d.anim = "final score" + yield(get_tree(), "idle_frame") + self.add_child(text_3d) + text_3d.animation_player.set_speed_scale(0) + Fade.fade_in(Options.transition_speed_secs) + # fill in shard names + var level: LevelEntry = LevelData.levels[Game.current_level] + for i in 5: + var shard = shards.get_child(i) + shard.get_node("Title").text = level.shard_titles[i] + score.text = str("SCORE:") + "%05d" % Game.score + time.text = str("TIME: ") + Game.format_time(Game.time) + #Determine score bonuses + collection_bonus_score.text = str("+") + str(Game.collection_bonus) + time_bonus_score.text = str("+") + str(Game.time_bonus) + life_bonus_score.text = str("+") + str(Game.life_bonus) + arrow_bonus_score.text = str("+") + str(Game.arrows_bonus) + perfect_bonus_score.text = str("+") + str(Game.perfect_bonus) + +func _physics_process(delta: float) -> void: + if Input.is_action_just_released("ui_accept"): + animation_player.set_speed_scale(4) + + +func show_final_score(): + animation_player.set_speed_scale(2) + text_3d.animation_player.set_speed_scale(1) + + +func _on_AnimationPlayer_animation_finished(anim_name): + match anim_name: + "results": + if Game.marathon_mode: + Game.current_level += 1 + if Game.current_level > LevelData.marathon_end: + yield(get_tree().create_timer(6.0), "timeout") + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(load("res://menus/marathon_results.tscn").instance()) + else: + Game.change_map(LevelData.levels[Game.current_level].scene) + elif Game.final_score > Game.old_high_score: + animation_player.play("high_score") + else: + yield(get_tree().create_timer(6.0), "timeout") + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(LevelSelect.instance()) + "high_score": + if not Debug.is_cheating and not ScoreBoard.server_host.empty(): + animation_player.play("submit_score_popup") + else: + yield(get_tree().create_timer(5.0), "timeout") + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(LevelSelect.instance()) + + +func _on_YesSubmit_button_down() -> void: + $"%YesSubmit".release_focus() + animation_player.play("submit") + + var save_id = LevelData.levels[Game.current_level].save_id + var entry = ScoreBoard.ScoreEntry.new(Game.final_score, int(Game.time * 1000.0), Game.difficulty) + var submitted = yield(ScoreBoard.submit_score(save_id, entry), "completed") + if ScoreBoard.errored or not submitted: + animation_player.play("try_again") + else: + animation_player.play("success") + + +func _on_NoSubmit_button_down() -> void: + $"%NoSubmit".release_focus() + _next_screen() + + +func _next_screen() -> void: + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(LevelSelect.instance()) diff --git a/menus/results.tscn b/menus/results.tscn new file mode 100644 index 0000000..6187708 --- /dev/null +++ b/menus/results.tscn @@ -0,0 +1,1232 @@ +[gd_scene load_steps=36 format=2] + +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=2] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/hud/results.png" type="Texture" id=4] +[ext_resource path="res://graphics/hud/perfect_bonus.png" type="Texture" id=5] +[ext_resource path="res://graphics/player/arrow.png" type="Texture" id=6] +[ext_resource path="res://ui/arrow_figure_8.tres" type="Material" id=7] +[ext_resource path="res://graphics/hud/final_score.png" type="Texture" id=8] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=9] +[ext_resource path="res://ui/theme.tres" type="Theme" id=10] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=11] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=12] +[ext_resource path="res://menus/results.gd" type="Script" id=13] +[ext_resource path="res://menus/results_icon.tscn" type="PackedScene" id=14] +[ext_resource path="res://graphics/hud/high_score.png" type="Texture" id=15] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=16] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=17] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=18] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=19] +[ext_resource path="res://graphics/hud/scores/sweet.png" type="Texture" id=20] + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 2 ) +shader_param/color_1 = Color( 1, 0.513726, 0, 1 ) +shader_param/color_2 = Color( 0.701961, 0.305882, 0.901961, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 12, 0 ) +shader_param/cycle_speed = Vector2( 12, 0 ) +shader_param/cycle_alternation = Vector2( 2, 0 ) +shader_param/uv_transform = Transform2D( 1, 1, 0, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=7] +shader = ExtResource( 11 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false +shader_param/palette = ExtResource( 12 ) + +[sub_resource type="ShaderMaterial" id=8] +shader = ExtResource( 3 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="Curve" id=11] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=17] +interpolation_mode = 2 +offsets = PoolRealArray( 0, 0.734694, 1 ) +colors = PoolColorArray( 0.576471, 0.980392, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 ) + +[sub_resource type="ShaderMaterial" id=14] +resource_local_to_scene = true +shader = ExtResource( 1 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 24, 12 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=13] +shader = ExtResource( 1 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=6] +shader = ExtResource( 1 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 9, 8 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="Animation" id=10] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ShardsAndBonuses:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ShardsAndBonuses/Bonuses/CollectionBonus/CollectionBonusScore:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ShardsAndBonuses/Bonuses/TimeBonus/TimeBonusScore:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("ShardsAndBonuses/Bonuses/LifeBonus/LifeBonusScore:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("ShardsAndBonuses/Bonuses/ArrowBonus/ArrowBonusScore:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("ShardsAndBonuses/Bonuses/PerfectBonus/PerfectBonusScore:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("ShardsAndBonuses/FinalScore:visible") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("ShardsAndBonuses/HighScore:visible") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("ShardsAndBonuses/FinalScore:scale") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("ShardsAndBonuses/HighScore:scale") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("CenterContainer/SubmitScore:visible") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("CenterContainer/SubmitScore:rect_scale") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("CenterContainer/LoadingGraphic:visible") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("CenterContainer/LoadingGraphic:rect_scale") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("CenterContainer/LoadingGraphic:material:shader_param/ammount") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 24, 12 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("CenterContainer/SubmitScore:modulate") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("CenterContainer/SubmitScore/Label:text") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "submit score?" ] +} + +[sub_resource type="Animation" id=19] +resource_name = "high_score" +tracks/0/type = "value" +tracks/0/path = NodePath("ShardsAndBonuses:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -512, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ShardsAndBonuses/FinalScore:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ShardsAndBonuses/HighScore:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("ShardsAndBonuses/FinalScore:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1e-05, 1 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("ShardsAndBonuses/HighScore:scale") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.3, 0.6 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1e-05, 1 ), Vector2( 1, 1 ) ] +} + +[sub_resource type="Animation" id=4] +resource_name = "results" +length = 18.0 +step = 1.0 +tracks/0/type = "method" +tracks/0/path = NodePath("ShardsAndBonuses/Shards/ResultsIcon") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 1 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/1/type = "method" +tracks/1/path = NodePath("ShardsAndBonuses/Shards/ResultsIcon2") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 2 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/2/type = "method" +tracks/2/path = NodePath("ShardsAndBonuses/Shards/ResultsIcon3") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 3 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/3/type = "method" +tracks/3/path = NodePath("ShardsAndBonuses/Shards/ResultsIcon4") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 4 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/4/type = "method" +tracks/4/path = NodePath("ShardsAndBonuses/Shards/ResultsIcon5") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("ShardsAndBonuses:position") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 7, 8, 15, 16 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( -256, 0 ), Vector2( -256, 0 ), Vector2( -512, 0 ) ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("ShardsAndBonuses/Bonuses/CollectionBonus/CollectionBonusScore:visible") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( -2, 9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("ShardsAndBonuses/Bonuses/TimeBonus/TimeBonusScore:visible") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( -2, 10 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("ShardsAndBonuses/Bonuses/LifeBonus/LifeBonusScore:visible") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( -2, 11 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("ShardsAndBonuses/Bonuses/ArrowBonus/ArrowBonusScore:visible") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( -2, 12 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("ShardsAndBonuses/Bonuses/PerfectBonus/PerfectBonusScore:visible") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( -2, 13 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/11/type = "method" +tracks/11/path = NodePath("ShardsAndBonuses/Bonuses/CollectionBonus") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 9 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/12/type = "method" +tracks/12/path = NodePath("ShardsAndBonuses/Bonuses/TimeBonus") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 10 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/13/type = "method" +tracks/13/path = NodePath("ShardsAndBonuses/Bonuses/LifeBonus") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 11 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "collect" +} ] +} +tracks/14/type = "method" +tracks/14/path = NodePath(".") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 17 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "show_final_score" +} ] +} + +[sub_resource type="Animation" id=15] +resource_name = "submit" +length = 0.3 +tracks/0/type = "value" +tracks/0/path = NodePath("CenterContainer/SubmitScore:rect_scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1e-05, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CenterContainer/SubmitScore:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("CenterContainer/LoadingGraphic:material:shader_param/ammount") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 24, 12 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("CenterContainer/LoadingGraphic:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=12] +resource_name = "submit_score_popup" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath("ShardsAndBonuses:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -512, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CenterContainer/SubmitScore:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("CenterContainer/SubmitScore:rect_scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 1 ), Vector2( 1, 1 ) ] +} +tracks/3/type = "method" +tracks/3/path = NodePath("CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer/YesSubmit") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("CenterContainer/SubmitScore:modulate") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("CenterContainer/LoadingGraphic:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("CenterContainer/SubmitScore/Label:text") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "submit score?" ] +} + +[sub_resource type="Animation" id=18] +resource_name = "success" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath("CenterContainer/LoadingGraphic:material:shader_param/ammount") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 24, 12 ), Vector2( 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CenterContainer/CollectedParticles:emitting") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0.3 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("CenterContainer/LoadingGraphic:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("CenterContainer/SubmitScore:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/4/type = "method" +tracks/4/path = NodePath(".") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 1.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "_next_screen" +} ] +} + +[sub_resource type="Animation" id=16] +resource_name = "try_again" +length = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("CenterContainer/SubmitScore:rect_scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 1 ), Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CenterContainer/SubmitScore:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("CenterContainer/LoadingGraphic:material:shader_param/ammount") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.1, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 24, 12 ), Vector2( 24, 12 ), Vector2( 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("CenterContainer/LoadingGraphic:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("CenterContainer/SubmitScore/Label:text") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "failed. try again?" ] +} +tracks/5/type = "method" +tracks/5/path = NodePath("CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer/YesSubmit") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "grab_focus" +} ] +} + +[node name="Results" type="Node"] +script = ExtResource( 13 ) + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 5 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_lock_": true +} + +[node name="ShardsAndBonuses" type="Node2D" parent="."] + +[node name="Shards" type="Node2D" parent="ShardsAndBonuses"] + +[node name="ResultsIcon" parent="ShardsAndBonuses/Shards" instance=ExtResource( 14 )] +position = Vector2( 24, 32 ) + +[node name="Title" type="Label" parent="ShardsAndBonuses/Shards/ResultsIcon"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -5.0 +margin_right = 176.0 +margin_bottom = 9.0 +theme = ExtResource( 10 ) +text = "AAAAAAAAAAAAAAAAAAAAAAAA" + +[node name="ResultsIcon2" parent="ShardsAndBonuses/Shards" instance=ExtResource( 14 )] +position = Vector2( 24, 64 ) +number = 1 + +[node name="Title" type="Label" parent="ShardsAndBonuses/Shards/ResultsIcon2"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -5.0 +margin_right = 176.0 +margin_bottom = 9.0 +theme = ExtResource( 10 ) +text = "AAAAAAAAAAAAAAAAAAAAAAAA" + +[node name="ResultsIcon3" parent="ShardsAndBonuses/Shards" instance=ExtResource( 14 )] +position = Vector2( 24, 96 ) +number = 2 + +[node name="Title" type="Label" parent="ShardsAndBonuses/Shards/ResultsIcon3"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -5.0 +margin_right = 176.0 +margin_bottom = 9.0 +theme = ExtResource( 10 ) +text = "AAAAAAAAAAAAAAAAAAAAAAAA" + +[node name="ResultsIcon4" parent="ShardsAndBonuses/Shards" instance=ExtResource( 14 )] +position = Vector2( 24, 128 ) +number = 3 + +[node name="Title" type="Label" parent="ShardsAndBonuses/Shards/ResultsIcon4"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -5.0 +margin_right = 176.0 +margin_bottom = 9.0 +theme = ExtResource( 10 ) +text = "AAAAAAAAAAAAAAAAAAAAAAAA" + +[node name="ResultsIcon5" parent="ShardsAndBonuses/Shards" instance=ExtResource( 14 )] +position = Vector2( 24, 160 ) +number = 4 + +[node name="Title" type="Label" parent="ShardsAndBonuses/Shards/ResultsIcon5"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -5.0 +margin_right = 176.0 +margin_bottom = 9.0 +theme = ExtResource( 10 ) +text = "AAAAAAAAAAAAAAAAAAAAAAAA" + +[node name="Bonuses" type="Node2D" parent="ShardsAndBonuses"] +position = Vector2( 256, 8 ) + +[node name="CollectionBonus" parent="ShardsAndBonuses/Bonuses" instance=ExtResource( 14 )] +position = Vector2( 24, 24 ) +number = 5 + +[node name="CollectionBonusText" type="Label" parent="ShardsAndBonuses/Bonuses/CollectionBonus"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -6.0 +margin_right = 176.0 +margin_bottom = 8.0 +theme = ExtResource( 10 ) +text = "Collection Bonus" + +[node name="CollectionBonusScore" type="Label" parent="ShardsAndBonuses/Bonuses/CollectionBonus"] +visible = false +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = 8.0 +margin_right = 176.0 +margin_bottom = 22.0 +theme = ExtResource( 10 ) +text = "+500" + +[node name="TimeBonus" parent="ShardsAndBonuses/Bonuses" instance=ExtResource( 14 )] +position = Vector2( 24, 56 ) +number = 6 + +[node name="TimeBonusText" type="Label" parent="ShardsAndBonuses/Bonuses/TimeBonus"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -6.0 +margin_right = 176.0 +margin_bottom = 8.0 +theme = ExtResource( 10 ) +text = "Time Bonus" + +[node name="TimeBonusScore" type="Label" parent="ShardsAndBonuses/Bonuses/TimeBonus"] +visible = false +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = 8.0 +margin_right = 176.0 +margin_bottom = 22.0 +theme = ExtResource( 10 ) +text = "+500" + +[node name="LifeBonus" parent="ShardsAndBonuses/Bonuses" instance=ExtResource( 14 )] +position = Vector2( 24, 88 ) +number = 7 + +[node name="LifeBonusText" type="Label" parent="ShardsAndBonuses/Bonuses/LifeBonus"] +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = -6.0 +margin_right = 176.0 +margin_bottom = 8.0 +theme = ExtResource( 10 ) +text = "Life Bonus" + +[node name="LifeBonusScore" type="Label" parent="ShardsAndBonuses/Bonuses/LifeBonus"] +visible = false +material = ExtResource( 9 ) +margin_left = 8.0 +margin_top = 8.0 +margin_right = 176.0 +margin_bottom = 22.0 +theme = ExtResource( 10 ) +text = "+500" + +[node name="ArrowBonus" type="Sprite" parent="ShardsAndBonuses/Bonuses"] +unique_name_in_owner = true +material = SubResource( 7 ) +position = Vector2( 24, 120 ) +rotation = -1.5708 +texture = ExtResource( 6 ) + +[node name="ArrowBonusText" type="Label" parent="ShardsAndBonuses/Bonuses/ArrowBonus"] +material = ExtResource( 9 ) +margin_left = 4.0 +margin_top = 7.0 +margin_right = 172.0 +margin_bottom = 21.0 +rect_rotation = 90.0 +theme = ExtResource( 10 ) +text = "Arrow Bonus" + +[node name="ArrowBonusScore" type="Label" parent="ShardsAndBonuses/Bonuses/ArrowBonus"] +visible = false +material = ExtResource( 9 ) +margin_left = -10.0 +margin_top = 7.0 +margin_right = 158.0 +margin_bottom = 21.0 +rect_rotation = 90.0 +theme = ExtResource( 10 ) +text = "+500" + +[node name="PerfectBonus" type="Sprite" parent="ShardsAndBonuses/Bonuses"] +material = SubResource( 8 ) +position = Vector2( 24, 152 ) +texture = ExtResource( 5 ) + +[node name="PerfectBonusText" type="Label" parent="ShardsAndBonuses/Bonuses/PerfectBonus"] +material = ExtResource( 9 ) +margin_left = 7.0 +margin_top = -5.0 +margin_right = 175.0 +margin_bottom = 9.0 +theme = ExtResource( 10 ) +text = "Perfect Bonus" + +[node name="PerfectBonusScore" type="Label" parent="ShardsAndBonuses/Bonuses/PerfectBonus"] +visible = false +material = ExtResource( 9 ) +margin_left = 7.0 +margin_top = 9.0 +margin_right = 175.0 +margin_bottom = 23.0 +theme = ExtResource( 10 ) +text = "+500" + +[node name="FinalScore" type="Sprite" parent="ShardsAndBonuses"] +material = ExtResource( 7 ) +position = Vector2( 640, 40 ) +texture = ExtResource( 8 ) + +[node name="HighScore" type="Sprite" parent="ShardsAndBonuses"] +visible = false +material = ExtResource( 7 ) +position = Vector2( 640, 40 ) +texture = ExtResource( 15 ) + +[node name="Sparkles" type="CPUParticles2D" parent="ShardsAndBonuses/HighScore"] +light_mask = 0 +amount = 4 +lifetime = 2.0 +texture = ExtResource( 16 ) +emission_shape = 2 +emission_rect_extents = Vector2( 48, 8 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 11 ) +color = Color( 0.72549, 0.956863, 1, 1 ) +script = ExtResource( 17 ) + +[node name="Score" type="Label" parent="."] +material = ExtResource( 9 ) +margin_top = 8.0 +margin_right = 256.0 +margin_bottom = 22.0 +theme = ExtResource( 10 ) +text = "Score: 0000000" +align = 1 + +[node name="EasyIndicator" type="TextureRect" parent="."] +margin_left = 61.0 +margin_top = 7.0 +margin_right = 73.0 +margin_bottom = 19.0 +texture = ExtResource( 20 ) + +[node name="Time" type="Label" parent="."] +material = ExtResource( 9 ) +margin_top = 178.0 +margin_right = 256.0 +margin_bottom = 192.0 +theme = ExtResource( 10 ) +text = "Time: " +align = 1 + +[node name="CenterContainer" type="CenterContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = 77.0 +theme = ExtResource( 10 ) + +[node name="CollectedParticles" type="CPUParticles2D" parent="CenterContainer"] +pause_mode = 2 +position = Vector2( 127, 56 ) +emitting = false +amount = 64 +one_shot = true +explosiveness = 1.0 +local_coords = false +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 150 ) +initial_velocity = 250.0 +initial_velocity_random = 0.9 +damping = 2.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_random = 1.0 +color_ramp = SubResource( 17 ) + +[node name="LoadingGraphic" type="Label" parent="CenterContainer"] +unique_name_in_owner = true +visible = false +material = SubResource( 14 ) +margin_left = 124.0 +margin_top = 52.0 +margin_right = 131.0 +margin_bottom = 62.0 +text = "§" +align = 1 +valign = 1 + +[node name="SubmitScore" type="VBoxContainer" parent="CenterContainer"] +unique_name_in_owner = true +visible = false +margin_left = 82.0 +margin_top = 39.0 +margin_right = 173.0 +margin_bottom = 75.0 +rect_pivot_offset = Vector2( 45.5, 18 ) +theme = ExtResource( 10 ) + +[node name="Label" type="Label" parent="CenterContainer/SubmitScore"] +margin_right = 91.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 19 ) +text = "submit score?" + +[node name="YesNoPrompt" type="PanelContainer" parent="CenterContainer/SubmitScore"] +margin_left = 1.0 +margin_top = 14.0 +margin_right = 90.0 +margin_bottom = 36.0 +size_flags_horizontal = 4 + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/SubmitScore/YesNoPrompt"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 86.0 +margin_bottom = 19.0 +rect_min_size = Vector2( 0, 16 ) +rect_pivot_offset = Vector2( -174, -69 ) +custom_constants/separation = 0 +alignment = 1 + +[node name="YesSubmit" type="TextureButton" parent="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +unique_name_in_owner = true +material = SubResource( 13 ) +margin_top = 4.0 +margin_right = 12.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 12, 8 ) +focus_neighbour_right = NodePath("../NoSubmit") +size_flags_vertical = 4 +texture_focused = ExtResource( 18 ) +expand = true +stretch_mode = 3 + +[node name="YesLabel" type="Label" parent="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 12.0 +margin_top = 3.0 +margin_right = 33.0 +margin_bottom = 13.0 +text = "Yes" + +[node name="Spacer" type="Control" parent="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 33.0 +margin_right = 45.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 12, 0 ) + +[node name="NoSubmit" type="TextureButton" parent="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +unique_name_in_owner = true +material = SubResource( 13 ) +margin_left = 45.0 +margin_top = 4.0 +margin_right = 57.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 12, 8 ) +focus_neighbour_left = NodePath("../YesSubmit") +size_flags_vertical = 4 +texture_focused = ExtResource( 18 ) +expand = true +stretch_mode = 3 + +[node name="NoLabel" type="Label" parent="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 57.0 +margin_top = 3.0 +margin_right = 71.0 +margin_bottom = 13.0 +text = "No" + +[node name="Spacer2" type="Control" parent="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 71.0 +margin_right = 83.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 12, 0 ) + +[node name="Results" type="Sprite" parent="."] +material = SubResource( 6 ) +position = Vector2( 232, 80 ) +texture = ExtResource( 4 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "results" +playback_speed = 2.0 +anims/RESET = SubResource( 10 ) +anims/high_score = SubResource( 19 ) +anims/results = SubResource( 4 ) +anims/submit = SubResource( 15 ) +anims/submit_score_popup = SubResource( 12 ) +anims/success = SubResource( 18 ) +anims/try_again = SubResource( 16 ) + +[connection signal="button_down" from="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer/YesSubmit" to="." method="_on_YesSubmit_button_down"] +[connection signal="button_down" from="CenterContainer/SubmitScore/YesNoPrompt/HBoxContainer/NoSubmit" to="." method="_on_NoSubmit_button_down"] +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] diff --git a/menus/results_icon.gd b/menus/results_icon.gd new file mode 100644 index 0000000..1169655 --- /dev/null +++ b/menus/results_icon.gd @@ -0,0 +1,13 @@ +extends Node2D + +onready var anims = $AnimationPlayer +export var number = 0 + + +func collect() -> void: + if Game.shards_collected[number] == true: + anims.play("collect") + Audio.play_sound(Audio.a_shard_results,Audio.ac_collectible) + else: + anims.play("fail") + Audio.play_sound(Audio.a_fail_shard,Audio.ac_collectible) diff --git a/menus/results_icon.tscn b/menus/results_icon.tscn new file mode 100644 index 0000000..f73a102 --- /dev/null +++ b/menus/results_icon.tscn @@ -0,0 +1,186 @@ +[gd_scene load_steps=12 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=2] +[ext_resource path="res://menus/results_icon.gd" type="Script" id=3] +[ext_resource path="res://graphics/hud/missed_shard.png" type="Texture" id=4] + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="Animation" id=6] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Filled:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CollectedParticles:emitting") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("FailX:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("FailX:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=3] +resource_name = "collect" +tracks/0/type = "value" +tracks/0/path = NodePath("Filled:scale") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.2, 0.4, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 1, 1 ), Vector2( 1.25, 1.25 ), Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CollectedParticles:emitting") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=9] +resource_name = "fail" +tracks/0/type = "value" +tracks/0/path = NodePath("FailX:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 360.0 ] +} +tracks/1/type = "bezier" +tracks/1/path = NodePath("FailX:scale:x") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"points": PoolRealArray( 1e-05, -0.25, 0, 0.25, 0, 1, 0, -0.504449, 0.25, 0 ), +"times": PoolRealArray( 0, 0.5 ) +} +tracks/2/type = "bezier" +tracks/2/path = NodePath("FailX:scale:y") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"points": PoolRealArray( 1e-05, -0.25, 0, 0.25, 0, 1, 0, -0.504449, 0.25, 0 ), +"times": PoolRealArray( 0, 0.5 ) +} + +[sub_resource type="Gradient" id=7] +interpolation_mode = 2 +offsets = PoolRealArray( 0, 0.734694, 1 ) +colors = PoolColorArray( 0.576471, 0.980392, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 ) + +[sub_resource type="ShaderMaterial" id=8] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[node name="ResultsIcon" type="Node2D"] +self_modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 4 ) +script = ExtResource( 3 ) + +[node name="Empty" type="Sprite" parent="."] +self_modulate = Color( 0, 0, 0, 1 ) +material = SubResource( 5 ) +position = Vector2( 1, 1 ) +texture = ExtResource( 2 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 6 ) +anims/collect = SubResource( 3 ) +anims/fail = SubResource( 9 ) + +[node name="CollectedParticles" type="CPUParticles2D" parent="."] +pause_mode = 2 +emitting = false +amount = 64 +one_shot = true +explosiveness = 1.0 +local_coords = false +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 150 ) +initial_velocity = 250.0 +initial_velocity_random = 0.9 +damping = 2.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_random = 1.0 +color_ramp = SubResource( 7 ) + +[node name="Filled" type="Sprite" parent="."] +material = SubResource( 8 ) +scale = Vector2( 1e-05, 1e-05 ) +texture = ExtResource( 2 ) +offset = Vector2( 1, 1 ) + +[node name="FailX" type="Sprite" parent="."] +position = Vector2( 1, 1 ) +scale = Vector2( 1e-05, 1e-05 ) +texture = ExtResource( 4 ) diff --git a/menus/rev83_intro.gd b/menus/rev83_intro.gd new file mode 100644 index 0000000..52003ae --- /dev/null +++ b/menus/rev83_intro.gd @@ -0,0 +1,13 @@ +extends Node2D + +onready var label = $TextBlock/Label + +func _ready(): + Fade.fade_in(Options.transition_speed_secs) + label.text = label.text % str(Save.current_file.name) + +func _input(event): + if Input.is_action_just_pressed("ui_accept"): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/intro_story.tscn").instance() diff --git a/menus/rev83_intro.tscn b/menus/rev83_intro.tscn new file mode 100644 index 0000000..da7a629 --- /dev/null +++ b/menus/rev83_intro.tscn @@ -0,0 +1,132 @@ +[gd_scene load_steps=9 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=3] +[ext_resource path="res://audio/sounds/talking.ogg" type="AudioStream" id=4] +[ext_resource path="res://menus/rev83_intro.gd" type="Script" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.3542, 0.4235, 0.77, 1 ) +shader_param/color_2 = Color( 0.0912, 0.76, 0.403307, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 8, 10 ) +shader_param/cycle_speed = Vector2( 0, 2 ) +shader_param/cycle_alternation = Vector2( -5, 18 ) +shader_param/uv_transform = Transform2D( 1, 0, -1, 1, 0, 0 ) + +[sub_resource type="Animation" id=3] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("TextBlock:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 144, 104 ) ] +} + +[sub_resource type="Animation" id=2] +resource_name = "type" +length = 5.0 +tracks/0/type = "value" +tracks/0/path = NodePath("TextBlock/Label:percent_visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 1.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextBlock:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 256, 192 ), Vector2( 144, 104 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("TextBlock:scale") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 1, 1 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("TextBlock:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 360.0 ] +} + +[node name="Rev83Intro" type="Node2D"] +script = ExtResource( 5 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="TextBlock" type="Node2D" parent="."] +position = Vector2( 144, 104 ) +rotation = 6.28319 + +[node name="Label" type="Label" parent="TextBlock"] +material = ExtResource( 3 ) +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -136.5 +margin_top = -96.0 +margin_right = 136.5 +margin_bottom = 96.0 +theme = ExtResource( 2 ) +text = "Hello %s, + +I am computer code given \"life\", +you can call me Revolution 2083. +Do you want to play a game with me? +This game may at times seem +one-sided in my favor, +but it's actually in your favor... +I'm the only one that can +truly lose, you can keep trying and +dying until you win, but I can't. + +The game is only over +when you give up." + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "type" +anims/RESET = SubResource( 3 ) +anims/type = SubResource( 2 ) + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 4 ) +volume_db = -10.0 +autoplay = true diff --git a/menus/score_entry.gd b/menus/score_entry.gd new file mode 100644 index 0000000..89927e3 --- /dev/null +++ b/menus/score_entry.gd @@ -0,0 +1,47 @@ +tool +extends HBoxContainer + +const DIFFICULTY_ICONS = [ + preload("res://graphics/hud/scores/sweet.png"), + preload("res://graphics/hud/scores/salty.png"), + preload("res://graphics/hud/scores/spicy.png"), + preload("res://graphics/hud/scores/pungent.png"), +] + +export var place: int = 0 setget _set_place +export var player: String = "Username" setget _set_player +export var score: int = 0 setget _set_score +export var time: float = 0.0 setget _set_time +export(int, "Sweet", "Salty", "Spicy", "Pungent") var difficulty: int = 0 setget _set_difficulty + +func _ready() -> void: + _set_place(place) + _set_player(player) + _set_score(score) + _set_time(time) + _set_difficulty(difficulty) + +func _set_place(value: int) -> void: + place = value + if is_inside_tree(): + $Place.text = "%d" % place + +func _set_player(value: String) -> void: + player = value.substr(0, 10) + if is_inside_tree(): + $Player.text = player + +func _set_score(value: int) -> void: + score = value + if is_inside_tree(): + $Score.text = "%05d" % score + +func _set_time(value: float) -> void: + time = value + if is_inside_tree(): + $Time.text = Game.format_time(time) + +func _set_difficulty(value: int) -> void: + difficulty = value + if is_inside_tree(): + $Difficulty.texture = DIFFICULTY_ICONS[difficulty] diff --git a/menus/score_entry.tscn b/menus/score_entry.tscn new file mode 100644 index 0000000..26aaa66 --- /dev/null +++ b/menus/score_entry.tscn @@ -0,0 +1,60 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://menus/score_entry.gd" type="Script" id=2] +[ext_resource path="res://graphics/hud/scores/sweet.png" type="Texture" id=3] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=4] + +[node name="ScoreEntry" type="HBoxContainer"] +margin_right = 228.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 0, 12 ) +theme = ExtResource( 1 ) +custom_constants/separation = 8 +script = ExtResource( 2 ) +player = "coolplayer" + +[node name="Place" type="Label" parent="."] +margin_top = 1.0 +margin_right = 16.0 +margin_bottom = 11.0 +rect_min_size = Vector2( 16, 0 ) +custom_fonts/font = ExtResource( 4 ) +text = "0" +align = 1 + +[node name="Player" type="Label" parent="."] +margin_left = 24.0 +margin_top = 1.0 +margin_right = 94.0 +margin_bottom = 11.0 +rect_min_size = Vector2( 70, 0 ) +custom_fonts/font = ExtResource( 4 ) +text = "coolplayer" +align = 1 + +[node name="Score" type="Label" parent="."] +margin_left = 102.0 +margin_top = 1.0 +margin_right = 137.0 +margin_bottom = 11.0 +rect_min_size = Vector2( 35, 0 ) +custom_fonts/font = ExtResource( 4 ) +text = "00000" +align = 2 + +[node name="Time" type="Label" parent="."] +margin_left = 145.0 +margin_top = 1.0 +margin_right = 201.0 +margin_bottom = 11.0 +rect_min_size = Vector2( 56, 0 ) +custom_fonts/font = ExtResource( 4 ) +text = "--:--.--" +align = 2 + +[node name="Difficulty" type="TextureRect" parent="."] +margin_left = 209.0 +margin_right = 221.0 +margin_bottom = 12.0 +texture = ExtResource( 3 ) diff --git a/menus/scoreboards.gd b/menus/scoreboards.gd new file mode 100644 index 0000000..ead6d13 --- /dev/null +++ b/menus/scoreboards.gd @@ -0,0 +1,205 @@ +extends Node + + +enum Completion {ANY, FULL} +enum ScoreType {SCORE, TIME} + + +const COMPLETION_NAMES = ["Any%", "100%"] +const SCORE_TYPE_NAMES = ["Scores", "Times"] + + +var selected_level: int = 0 +var selected_difficulty: int = Game.Difficulty.SPICY +var selected_completion: int = Completion.ANY +var selected_type: int = ScoreType.SCORE + +var _scoreboard_id: int = -1 +var _scoreboard_tag: String = "spicy-any%" +var _page: int = 0 + + +onready var level_title: Button = $"%LevelTitle" +onready var back_arrow: TextureRect = $"%BackArrow" +onready var next_arrow: TextureRect = $"%NextArrow" +onready var difficulty: Button = $"%Difficulty" +onready var completion: Button = $"%Completion" +onready var type: Button = $"%Type" +onready var scores: VBoxContainer = $"%Scores" +onready var scoreboard_tabs: TabContainer = $"%ScoreboardTabs" +onready var prev_board: TextureRect = $"%PrevBoard" +onready var next_board: TextureRect = $"%NextBoard" + + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + Fade.fade_in(Options.transition_speed_secs) + yield(get_tree(), "idle_frame") + level_title.text = LevelData.levels[selected_level].title + level_title.grab_focus() + match selected_type: + ScoreType.SCORE: + _scoreboard_id = LevelData.levels[selected_level].scores_id + ScoreType.TIME: + _scoreboard_id = LevelData.levels[selected_level].times_id + if Time.get_ticks_msec() > 5000: + reload_scores() + + +func _input(event: InputEvent) -> void: + if event.is_action_pressed("ui_cancel"): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = preload("res://menus/main_menu.tscn").instance() + + +# reload scores from newgrounds +func reload_scores() -> void: + _set_tag() + scoreboard_tabs.current_tab = 1 + # attempt the thing + if _scoreboard_id >= 0 and Ngio.keys_loaded: + var response = yield(Ngio.request_execute("ScoreBoard.getScores", { + id = _scoreboard_id, + limit = scores.get_child_count(), + skip = _page * 8, + period = "A", + tag = _scoreboard_tag, + }), "completed") + if Ngio.has_result(response) and response.result.data.success: + var retrieved_scores = response.result.data.scores + for i in scores.get_child_count(): + var score_entry = scores.get_child(i) + score_entry.place = _page * 8 + i + 1 + if i < retrieved_scores.size(): + var score = retrieved_scores[i] + score_entry.user = score.user.name + if score_entry.user.length() > 16: + score_entry.user = score_entry.substr(0, 16) + "..." + match selected_type: + ScoreType.SCORE: + score_entry.score = "%05d" % score.value + ScoreType.TIME: + score_entry.score = Game.format_time(float(score.value) / 1000.0) + else: + score_entry.user = "--------" + match selected_type: + ScoreType.SCORE: + score_entry.score = "-----" + ScoreType.TIME: + score_entry.score = "--:--.--" + scoreboard_tabs.current_tab = 0 + return + scoreboard_tabs.current_tab = 2 + +# set tag from selected difficulty and completion +func _set_tag() -> void: + match selected_difficulty: + Game.Difficulty.SWEET: + _scoreboard_tag = "sweet" + Game.Difficulty.SALTY: + _scoreboard_tag = "salty" + Game.Difficulty.SPICY: + _scoreboard_tag = "spicy" + Game.Difficulty.PUNGENT: + _scoreboard_tag = "pungent" + if selected_type == ScoreType.TIME: + match selected_completion: + Completion.ANY: + _scoreboard_tag += "-any%" + Completion.FULL: + _scoreboard_tag += "-100%" + +# show arrows when level is focused +func _on_LevelTitle_focus_entered() -> void: + back_arrow.visible = true + next_arrow.visible = true + +# hide arrows when level not focused +func _on_LevelTitle_focus_exited() -> void: + back_arrow.visible = false + next_arrow.visible = false + +# detect left and right presses when level is focused +func _on_LevelTitle_gui_input(event: InputEvent) -> void: + if scoreboard_tabs.current_tab == 1: # do nothing if already loading + return + if event.is_action_pressed("ui_left"): + selected_level = posmod(selected_level - 1, LevelData.levels.size()) + while LevelData.levels[selected_level].boss: + selected_level = posmod(selected_level - 1, LevelData.levels.size()) + level_title.text = LevelData.levels[selected_level].title + match selected_type: + ScoreType.SCORE: + _scoreboard_id = LevelData.levels[selected_level].scores_id + ScoreType.TIME: + _scoreboard_id = LevelData.levels[selected_level].times_id + _page = 0 + reload_scores() + elif event.is_action_pressed("ui_right"): + selected_level = posmod(selected_level + 1, LevelData.levels.size()) + while LevelData.levels[selected_level].boss: + selected_level = posmod(selected_level + 1, LevelData.levels.size()) + level_title.text = LevelData.levels[selected_level].title + match selected_type: + ScoreType.SCORE: + _scoreboard_id = LevelData.levels[selected_level].scores_id + ScoreType.TIME: + _scoreboard_id = LevelData.levels[selected_level].times_id + _page = 0 + reload_scores() + +# difficulty selector +func _on_Difficulty_pressed() -> void: + if scoreboard_tabs.current_tab == 1: # do nothing if already loading + return + selected_difficulty = posmod(selected_difficulty + 1, 4) + difficulty.text = Game.DIFFICULTY_NAMES[selected_difficulty] + _page = 0 + reload_scores() + +# completion amount selector +func _on_Completion_pressed() -> void: + if scoreboard_tabs.current_tab == 1: # do nothing if already loading + return + selected_completion = posmod(selected_completion + 1, 2) + completion.text = COMPLETION_NAMES[selected_completion] + _page = 0 + reload_scores() + +# score type selector +func _on_Type_pressed() -> void: + if scoreboard_tabs.current_tab == 1: # do nothing if already loading + return + selected_type = posmod(selected_type + 1, 2) + match selected_type: + ScoreType.SCORE: + _scoreboard_id = LevelData.levels[selected_level].scores_id + completion.visible = false + ScoreType.TIME: + _scoreboard_id = LevelData.levels[selected_level].times_id + completion.visible = true + type.text = SCORE_TYPE_NAMES[selected_type] + _page = 0 + reload_scores() + + +func _on_Scoreboard_focus_entered() -> void: + prev_board.visible = true + next_board.visible = true + + +func _on_Scoreboard_focus_exited() -> void: + prev_board.visible = false + next_board.visible = false + + +func _on_Scoreboard_gui_input(event: InputEvent) -> void: + if event.is_action_pressed("ui_left"): + _page -= 1 + if _page <= 0: + _page = 0 + reload_scores() + elif event.is_action_pressed("ui_right"): + _page += 1 + reload_scores() diff --git a/menus/scoreboards.tscn b/menus/scoreboards.tscn new file mode 100644 index 0000000..2993ef3 --- /dev/null +++ b/menus/scoreboards.tscn @@ -0,0 +1,335 @@ +[gd_scene load_steps=12 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://menus/scoreboards.gd" type="Script" id=2] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=4] +[ext_resource path="res://ui/theme.tres" type="Theme" id=5] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=6] +[ext_resource path="res://menus/score_entry.tscn" type="PackedScene" id=7] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=8] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.615686, 0.670588, 0.984314, 1 ) +shader_param/color_2 = Color( 1, 0.709804, 0.984314, 1 ) +shader_param/checker_size = Vector2( 24, 12 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 8, -8 ) +shader_param/cycle_alternation = Vector2( 0, 1 ) +shader_param/uv_transform = Transform2D( 1, 0, 1, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 4, 0 ) + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 8, 4 ) +shader_param/ammount = Vector2( 12, 24 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[node name="Scoreboards" type="Node"] +script = ExtResource( 2 ) + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="BoardsScreen" type="VBoxContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 5 ) +custom_constants/separation = 0 + +[node name="SelectLevel" type="HBoxContainer" parent="BoardsScreen"] +margin_right = 256.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 0, 16 ) +alignment = 1 + +[node name="BackArrow" type="TextureRect" parent="BoardsScreen/SelectLevel"] +unique_name_in_owner = true +material = SubResource( 2 ) +margin_left = 72.0 +margin_top = 4.0 +margin_right = 78.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) +flip_h = true + +[node name="LevelTitle" type="Button" parent="BoardsScreen/SelectLevel"] +unique_name_in_owner = true +margin_left = 82.0 +margin_top = 3.0 +margin_right = 173.0 +margin_bottom = 13.0 +focus_neighbour_bottom = NodePath("../../SelectScoreType/Type") +size_flags_vertical = 4 +theme = ExtResource( 5 ) +custom_colors/font_color_focus = Color( 1, 0.968627, 0.709804, 1 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_fonts/font = ExtResource( 8 ) +text = "Verdant Hills" + +[node name="NextArrow" type="TextureRect" parent="BoardsScreen/SelectLevel"] +unique_name_in_owner = true +material = SubResource( 3 ) +margin_left = 177.0 +margin_top = 4.0 +margin_right = 183.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) + +[node name="SelectScoreType" type="HBoxContainer" parent="BoardsScreen"] +margin_top = 16.0 +margin_right = 256.0 +margin_bottom = 32.0 +rect_min_size = Vector2( 0, 16 ) +alignment = 1 + +[node name="Difficulty" type="Button" parent="BoardsScreen/SelectScoreType"] +unique_name_in_owner = true +margin_left = 52.0 +margin_top = 3.0 +margin_right = 100.0 +margin_bottom = 13.0 +rect_min_size = Vector2( 48, 0 ) +focus_neighbour_right = NodePath("../Type") +focus_neighbour_bottom = NodePath("../../Scoreboard") +size_flags_vertical = 4 +theme = ExtResource( 5 ) +custom_colors/font_color_focus = Color( 1, 0.968627, 0.709804, 1 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_fonts/font = ExtResource( 8 ) +text = "Spicy" + +[node name="Type" type="Button" parent="BoardsScreen/SelectScoreType"] +unique_name_in_owner = true +margin_left = 104.0 +margin_top = 3.0 +margin_right = 152.0 +margin_bottom = 13.0 +rect_min_size = Vector2( 48, 0 ) +focus_neighbour_left = NodePath("../Difficulty") +focus_neighbour_right = NodePath("../SpaceReserve/Completion") +focus_neighbour_bottom = NodePath("../../Scoreboard") +size_flags_vertical = 4 +theme = ExtResource( 5 ) +custom_colors/font_color_focus = Color( 1, 0.968627, 0.709804, 1 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_fonts/font = ExtResource( 8 ) +text = "Scores" + +[node name="SpaceReserve" type="Control" parent="BoardsScreen/SelectScoreType"] +margin_left = 156.0 +margin_top = 8.0 +margin_right = 204.0 +margin_bottom = 8.0 +rect_min_size = Vector2( 48, 0 ) +size_flags_vertical = 4 + +[node name="Completion" type="Button" parent="BoardsScreen/SelectScoreType/SpaceReserve"] +unique_name_in_owner = true +visible = false +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -24.0 +margin_top = -5.0 +margin_right = 24.0 +margin_bottom = 5.0 +rect_min_size = Vector2( 48, 0 ) +focus_neighbour_left = NodePath("../../Type") +focus_neighbour_bottom = NodePath("../../../Scoreboard") +theme = ExtResource( 5 ) +custom_colors/font_color_focus = Color( 1, 0.968627, 0.709804, 1 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_fonts/font = ExtResource( 8 ) +text = "Any%" +icon_align = 1 + +[node name="Scoreboard" type="HBoxContainer" parent="BoardsScreen"] +margin_top = 32.0 +margin_right = 256.0 +margin_bottom = 192.0 +focus_neighbour_top = NodePath("../SelectScoreType/Type") +focus_mode = 2 +size_flags_vertical = 3 +alignment = 1 + +[node name="PrevBoard" type="TextureRect" parent="BoardsScreen/Scoreboard"] +unique_name_in_owner = true +material = SubResource( 2 ) +margin_left = 6.0 +margin_top = 76.0 +margin_right = 12.0 +margin_bottom = 84.0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) +flip_h = true + +[node name="PanelContainer" type="PanelContainer" parent="BoardsScreen/Scoreboard"] +margin_left = 16.0 +margin_right = 240.0 +margin_bottom = 144.0 +rect_min_size = Vector2( 224, 144 ) +size_flags_horizontal = 4 +size_flags_vertical = 0 + +[node name="MarginContainer" type="MarginContainer" parent="BoardsScreen/Scoreboard/PanelContainer"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 221.0 +margin_bottom = 141.0 +custom_constants/margin_right = 4 +custom_constants/margin_top = 4 +custom_constants/margin_left = 4 +custom_constants/margin_bottom = 4 + +[node name="VBoxContainer" type="VBoxContainer" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 214.0 +margin_bottom = 134.0 + +[node name="Header" type="HBoxContainer" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer"] +margin_right = 210.0 +margin_bottom = 10.0 +custom_constants/separation = 8 + +[node name="Place" type="Label" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/Header"] +margin_right = 21.0 +margin_bottom = 10.0 +text = " # " + +[node name="User" type="Label" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/Header"] +margin_left = 29.0 +margin_right = 167.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "User" + +[node name="Score" type="Label" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/Header"] +margin_left = 175.0 +margin_right = 210.0 +margin_bottom = 10.0 +text = "score" +align = 2 + +[node name="HSeparator" type="HSeparator" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer"] +margin_top = 14.0 +margin_right = 210.0 +margin_bottom = 18.0 + +[node name="ScoreboardTabs" type="TabContainer" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +margin_top = 22.0 +margin_right = 210.0 +margin_bottom = 130.0 +size_flags_vertical = 3 +tabs_visible = false + +[node name="Scores" type="VBoxContainer" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs"] +unique_name_in_owner = true +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="ScoreEntry1" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +place = 1 + +[node name="ScoreEntry2" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 14.0 +margin_bottom = 24.0 +place = 2 + +[node name="ScoreEntry3" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 28.0 +margin_bottom = 38.0 +place = 3 + +[node name="ScoreEntry4" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 42.0 +margin_bottom = 52.0 +place = 4 + +[node name="ScoreEntry5" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 56.0 +margin_bottom = 66.0 +place = 5 + +[node name="ScoreEntry6" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 70.0 +margin_bottom = 80.0 +place = 6 + +[node name="ScoreEntry7" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 84.0 +margin_bottom = 94.0 +place = 7 + +[node name="ScoreEntry8" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 98.0 +margin_bottom = 108.0 +place = 8 + +[node name="LoadingIndicator" type="CenterContainer" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/LoadingIndicator"] +material = SubResource( 4 ) +margin_left = 101.0 +margin_top = 49.0 +margin_right = 108.0 +margin_bottom = 59.0 +text = "§" + +[node name="FailedIndicator" type="CenterContainer" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="BoardsScreen/Scoreboard/PanelContainer/MarginContainer/VBoxContainer/ScoreboardTabs/FailedIndicator"] +margin_left = 56.0 +margin_top = 49.0 +margin_right = 154.0 +margin_bottom = 59.0 +text = "Failed to load" + +[node name="NextBoard" type="TextureRect" parent="BoardsScreen/Scoreboard"] +unique_name_in_owner = true +material = SubResource( 3 ) +margin_left = 244.0 +margin_top = 76.0 +margin_right = 250.0 +margin_bottom = 84.0 +size_flags_horizontal = 0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) + +[connection signal="focus_entered" from="BoardsScreen/SelectLevel/LevelTitle" to="." method="_on_LevelTitle_focus_entered"] +[connection signal="focus_exited" from="BoardsScreen/SelectLevel/LevelTitle" to="." method="_on_LevelTitle_focus_exited"] +[connection signal="gui_input" from="BoardsScreen/SelectLevel/LevelTitle" to="." method="_on_LevelTitle_gui_input"] +[connection signal="pressed" from="BoardsScreen/SelectScoreType/Difficulty" to="." method="_on_Difficulty_pressed"] +[connection signal="pressed" from="BoardsScreen/SelectScoreType/Type" to="." method="_on_Type_pressed"] +[connection signal="pressed" from="BoardsScreen/SelectScoreType/SpaceReserve/Completion" to="." method="_on_Completion_pressed"] +[connection signal="focus_entered" from="BoardsScreen/Scoreboard" to="." method="_on_Scoreboard_focus_entered"] +[connection signal="focus_exited" from="BoardsScreen/Scoreboard" to="." method="_on_Scoreboard_focus_exited"] +[connection signal="gui_input" from="BoardsScreen/Scoreboard" to="." method="_on_Scoreboard_gui_input"] diff --git a/menus/scoreboards_scholar.gd b/menus/scoreboards_scholar.gd new file mode 100644 index 0000000..9377f82 --- /dev/null +++ b/menus/scoreboards_scholar.gd @@ -0,0 +1,113 @@ +extends Node + + +const PAGE_SIZE: int = 8 + + +var loaded_scores: Dictionary = {} +var selected_level: int = 0 +var _page: int = 0 + + +onready var scores: VBoxContainer = $"%Scores" +onready var level_title: Button = $"%LevelTitle" + + +func _ready() -> void: + yield(_refresh_scores(), "completed") + Fade.fade_in(Options.transition_speed_secs) + + +func _input(event: InputEvent) -> void: + if event.is_action_pressed("ui_right"): + selected_level = posmod(selected_level + 1, LevelData.levels.size()) + while not LevelData.levels[selected_level].has_scoreboard: + selected_level = posmod(selected_level + 1, LevelData.levels.size()) + _refresh_scores() + elif event.is_action_pressed("ui_left"): + selected_level = posmod(selected_level - 1, LevelData.levels.size()) + while not LevelData.levels[selected_level].has_scoreboard: + selected_level = posmod(selected_level - 1, LevelData.levels.size()) + _refresh_scores() + elif event.is_action_pressed("ui_down"): + _page += 1 + _refresh_scores() + elif event.is_action_pressed("ui_up"): + _page = int(max(_page - 1, 0)) + _refresh_scores() + elif event.is_action_pressed("ui_cancel"): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = preload("res://menus/main_menu.tscn").instance() + + +func _refresh_scores() -> void: + level_title.text = LevelData.levels[selected_level].title + + var level = LevelData.levels[selected_level].save_id + if not level in loaded_scores: + yield(_load_scores(level), "completed") + + if ScoreBoard.errored: + push_error("Scoreboard could not be loaded.") + + var entries = loaded_scores.get(level, {}) + + while _page * PAGE_SIZE > entries.size(): + _page -= 1 + + var offset = _page * PAGE_SIZE + + $"%PrevScores".visible = _page > 0 + $"%NextScores".visible = entries.size() - offset > PAGE_SIZE + + for i in 8: + var entry_node = scores.get_node("ScoreEntry%d" % i) + if i >= entries.size() - offset: + entry_node.visible = false + else: + var player = entries.keys()[offset + i] + var entry = entries[player] + entry_node.visible = true + entry_node.place = offset + i + 1 + entry_node.player = player + entry_node.score = entry.score + entry_node.time = float(entry.time) * 0.001 # convert from ms + entry_node.difficulty = entry.difficulty + + +func _load_scores(level: String) -> void: + loaded_scores[level] = {} + + if ScoreBoard.server_host.empty(): + yield(get_tree(), "idle_frame") + return + + var result: Dictionary = yield(ScoreBoard.get_scores(level), "completed") + if ScoreBoard.errored: + #TODO: failure indication + return + + var players = result.keys().duplicate() + _sorting_dict = result + players.sort_custom(self, "_sort_scores") + + for p in players: + loaded_scores[level][p] = result[p] + + +var _sorting_dict: Dictionary = {} +func _sort_scores(a, b) -> bool: + var score_a = _sorting_dict[a] + var score_b = _sorting_dict[b] + + if score_b.score < score_a.score: + return true + elif score_b.score == score_a.score: + if score_b.difficulty < score_a.difficulty: + return true + elif score_b.difficulty == score_a.difficulty: + if score_b.time > score_a.time: + return true + + return false diff --git a/menus/scoreboards_scholar.tscn b/menus/scoreboards_scholar.tscn new file mode 100644 index 0000000..ca8f960 --- /dev/null +++ b/menus/scoreboards_scholar.tscn @@ -0,0 +1,320 @@ +[gd_scene load_steps=16 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://menus/scoreboards_scholar.gd" type="Script" id=2] +[ext_resource path="res://graphics/hud/arrow_down.png" type="Texture" id=3] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=4] +[ext_resource path="res://ui/theme.tres" type="Theme" id=5] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=6] +[ext_resource path="res://menus/score_entry.tscn" type="PackedScene" id=7] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=8] +[ext_resource path="res://graphics/hud/arrow_up.png" type="Texture" id=9] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.615686, 0.670588, 0.984314, 1 ) +shader_param/color_2 = Color( 1, 0.709804, 0.984314, 1 ) +shader_param/checker_size = Vector2( 24, 12 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 8, -8 ) +shader_param/cycle_alternation = Vector2( 0, 1 ) +shader_param/uv_transform = Transform2D( 1, 0, 1, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 4, 0 ) + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 0, 4 ) +shader_param/ammount = Vector2( 0, 2 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=6] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 0, 4 ) +shader_param/ammount = Vector2( 0, 2 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 4 ) + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 8, 4 ) +shader_param/ammount = Vector2( 12, 24 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[node name="Scoreboards" type="Node"] +script = ExtResource( 2 ) + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="BoardsScreen" type="VBoxContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 5 ) +custom_constants/separation = 0 + +[node name="SelectLevel" type="HBoxContainer" parent="BoardsScreen"] +margin_right = 256.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 0, 16 ) +alignment = 1 + +[node name="BackArrow" type="TextureRect" parent="BoardsScreen/SelectLevel"] +unique_name_in_owner = true +material = SubResource( 2 ) +margin_left = 72.0 +margin_top = 4.0 +margin_right = 78.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) +flip_h = true + +[node name="LevelTitle" type="Button" parent="BoardsScreen/SelectLevel"] +unique_name_in_owner = true +margin_left = 82.0 +margin_top = 3.0 +margin_right = 173.0 +margin_bottom = 13.0 +size_flags_vertical = 4 +theme = ExtResource( 5 ) +custom_colors/font_color_focus = Color( 1, 0.968627, 0.709804, 1 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_fonts/font = ExtResource( 8 ) +text = "Verdant Hills" + +[node name="NextArrow" type="TextureRect" parent="BoardsScreen/SelectLevel"] +unique_name_in_owner = true +material = SubResource( 3 ) +margin_left = 177.0 +margin_top = 4.0 +margin_right = 183.0 +margin_bottom = 12.0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) + +[node name="Scoreboard" type="HBoxContainer" parent="BoardsScreen"] +margin_top = 16.0 +margin_right = 256.0 +margin_bottom = 192.0 +focus_mode = 2 +size_flags_vertical = 3 +alignment = 1 + +[node name="PrevBoard" type="TextureRect" parent="BoardsScreen/Scoreboard"] +unique_name_in_owner = true +visible = false +material = SubResource( 2 ) +margin_top = 84.0 +margin_right = 6.0 +margin_bottom = 92.0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) +flip_h = true + +[node name="MarginContainer" type="MarginContainer" parent="BoardsScreen/Scoreboard"] +margin_left = 10.0 +margin_right = 246.0 +margin_bottom = 176.0 +custom_constants/margin_right = 4 +custom_constants/margin_top = 4 +custom_constants/margin_left = 4 +custom_constants/margin_bottom = 4 + +[node name="VBoxContainer" type="VBoxContainer" parent="BoardsScreen/Scoreboard/MarginContainer"] +margin_left = 4.0 +margin_top = 4.0 +margin_right = 232.0 +margin_bottom = 172.0 + +[node name="Header" type="HBoxContainer" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer"] +margin_right = 228.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 228, 10 ) +custom_constants/separation = 8 + +[node name="Place" type="Label" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/Header"] +margin_right = 16.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 16, 0 ) +custom_fonts/font = ExtResource( 8 ) +text = "#" +align = 1 + +[node name="Player" type="Label" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/Header"] +margin_left = 24.0 +margin_right = 94.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 70, 0 ) +custom_fonts/font = ExtResource( 8 ) +text = "Player" +align = 1 +clip_text = true + +[node name="Score" type="Label" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/Header"] +margin_left = 102.0 +margin_right = 137.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 35, 0 ) +custom_fonts/font = ExtResource( 8 ) +text = "score" +align = 2 + +[node name="Time" type="Label" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/Header"] +margin_left = 145.0 +margin_right = 201.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 56, 0 ) +custom_fonts/font = ExtResource( 8 ) +text = "time" +align = 1 + +[node name="Control" type="Control" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/Header"] +margin_left = 209.0 +margin_right = 221.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 12, 0 ) + +[node name="HSeparator" type="HSeparator" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer"] +margin_top = 14.0 +margin_right = 228.0 +margin_bottom = 15.0 +custom_constants/separation = 1 + +[node name="ScoreboardTabs" type="Control" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +margin_top = 19.0 +margin_right = 228.0 +margin_bottom = 168.0 +size_flags_vertical = 3 + +[node name="Scores" type="VBoxContainer" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs"] +unique_name_in_owner = true +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="PrevScores" type="TextureRect" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores"] +unique_name_in_owner = true +visible = false +material = SubResource( 5 ) +margin_left = 110.0 +margin_right = 118.0 +margin_bottom = 8.0 +rect_pivot_offset = Vector2( 3, 4 ) +size_flags_horizontal = 4 +size_flags_vertical = 4 +texture = ExtResource( 9 ) + +[node name="ScoreEntry0" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +place = 1 + +[node name="ScoreEntry1" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 16.0 +margin_bottom = 28.0 +place = 2 + +[node name="ScoreEntry2" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 32.0 +margin_bottom = 44.0 +place = 3 + +[node name="ScoreEntry3" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 48.0 +margin_bottom = 60.0 +place = 4 + +[node name="ScoreEntry4" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 64.0 +margin_bottom = 76.0 +place = 5 + +[node name="ScoreEntry5" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 80.0 +margin_bottom = 92.0 +place = 6 + +[node name="ScoreEntry6" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 96.0 +margin_bottom = 108.0 +place = 7 + +[node name="ScoreEntry7" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores" instance=ExtResource( 7 )] +margin_top = 112.0 +margin_bottom = 124.0 +place = 8 + +[node name="NextScores" type="TextureRect" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/Scores"] +unique_name_in_owner = true +visible = false +material = SubResource( 6 ) +margin_left = 110.0 +margin_top = 128.0 +margin_right = 118.0 +margin_bottom = 136.0 +rect_pivot_offset = Vector2( 3, 4 ) +size_flags_horizontal = 4 +size_flags_vertical = 4 +texture = ExtResource( 3 ) + +[node name="LoadingIndicator" type="CenterContainer" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/LoadingIndicator"] +material = SubResource( 4 ) +margin_left = 110.0 +margin_top = 69.0 +margin_right = 117.0 +margin_bottom = 79.0 +text = "§" + +[node name="FailedIndicator" type="CenterContainer" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="BoardsScreen/Scoreboard/MarginContainer/VBoxContainer/ScoreboardTabs/FailedIndicator"] +margin_left = 65.0 +margin_top = 69.0 +margin_right = 163.0 +margin_bottom = 79.0 +text = "Failed to load" + +[node name="PanelContainer" type="PanelContainer" parent="BoardsScreen/Scoreboard"] +visible = false +margin_left = 250.0 +margin_right = 474.0 +margin_bottom = 144.0 +rect_min_size = Vector2( 224, 144 ) +size_flags_horizontal = 4 +size_flags_vertical = 0 + +[node name="NextBoard" type="TextureRect" parent="BoardsScreen/Scoreboard"] +unique_name_in_owner = true +visible = false +material = SubResource( 3 ) +margin_left = 250.0 +margin_top = 84.0 +margin_right = 256.0 +margin_bottom = 92.0 +size_flags_horizontal = 0 +size_flags_vertical = 4 +texture = ExtResource( 6 ) diff --git a/menus/shard_results.tscn b/menus/shard_results.tscn new file mode 100644 index 0000000..9fda7d7 --- /dev/null +++ b/menus/shard_results.tscn @@ -0,0 +1,102 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="Animation" id=3] +resource_name = "Collect" +step = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.15, 0.3, 0.375, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 1, 1 ), Vector2( 1.3, 1.3 ), Vector2( 1, 1 ), Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("CollectedParticle:emitting") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=4] +resource_name = "Miss" +tracks/0/type = "value" +tracks/0/path = NodePath(".:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Gradient" id=2] +interpolation_mode = 2 +offsets = PoolRealArray( 0, 0.734694, 1 ) +colors = PoolColorArray( 0.576471, 0.980392, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 ) + +[node name="Shard" type="Node2D"] + +[node name="Sprite" type="Sprite" parent="."] +material = SubResource( 1 ) +position = Vector2( 1, 1 ) +scale = Vector2( 1e-05, 1e-05 ) +texture = ExtResource( 3 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "Miss" +anims/Collect = SubResource( 3 ) +anims/Miss = SubResource( 4 ) + +[node name="CollectedParticle" type="CPUParticles2D" parent="."] +pause_mode = 2 +emitting = false +amount = 64 +one_shot = true +explosiveness = 1.0 +local_coords = false +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 150 ) +initial_velocity = 250.0 +initial_velocity_random = 0.9 +damping = 2.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_random = 1.0 +color_ramp = SubResource( 2 ) diff --git a/menus/sockbug.gd b/menus/sockbug.gd new file mode 100644 index 0000000..727cf7e --- /dev/null +++ b/menus/sockbug.gd @@ -0,0 +1,15 @@ +extends AnimatedSprite + +export var speed = Vector2(100,0) + +# Called when the node enters the scene tree for the first time. +func _physics_process(delta): + position += speed * delta + if position.x > 300: + position.x = 0 + if position.x < 0: + position.x = 300 + if position.y > 252: + position.y = 0 + if position.y < 0: + position.y = 252 diff --git a/menus/sound_select.gd b/menus/sound_select.gd new file mode 100644 index 0000000..41b79d5 --- /dev/null +++ b/menus/sound_select.gd @@ -0,0 +1,45 @@ +tool +extends TextureButton + +export (Array, String) var titles +export (Array, AudioStream) var sounds +export (Array, Dictionary) var categories setget set_categories +var current_selection = 0 +onready var body = $SoundLabel/Label +onready var category = $SoundLabel/Category + +func _ready(): + if Engine.editor_hint and categories.empty(): + categories = [SoundCategory.new()] + +func _gui_input(event): + if Input.is_action_just_pressed("ui_left"): + current_selection -= 1 + elif Input.is_action_just_pressed("ui_right"): + current_selection += 1 + elif Input.is_action_just_pressed("ui_accept"): + Audio.play_sound(sounds[current_selection],Audio.ac_collectible) + elif Input.is_action_just_pressed("ui_cancel"): + Audio.ac_music.stop() + current_selection = posmod(current_selection,sounds.size()) + body.text = titles[current_selection] +# for c in categories: +# if current_selection >= c.index: +# category.text = c.name +# category.add_color_override("font_color", c.color) + + +class SoundCategory extends Resource: + export var starting_index: int = 0 + export var title: String = "" + export var color: Color = Color.white + +func set_categories(value: Array) -> void: + categories = value + for i in categories.size(): + if !categories[i]: + categories[i] = { + index = 0, + name = "", + color = Color.white, + } diff --git a/menus/sound_test.gd b/menus/sound_test.gd new file mode 100644 index 0000000..99a3e05 --- /dev/null +++ b/menus/sound_test.gd @@ -0,0 +1,4 @@ +extends Control + +func _ready(): + Fade.fade_in(Options.transition_speed_secs) diff --git a/menus/sound_test.tscn b/menus/sound_test.tscn new file mode 100644 index 0000000..740a33d --- /dev/null +++ b/menus/sound_test.tscn @@ -0,0 +1,335 @@ +[gd_scene load_steps=135 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=2] +[ext_resource path="res://graphics/hud/listen_to_the_future.png" type="Texture" id=3] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=4] +[ext_resource path="res://ui/theme.tres" type="Theme" id=5] +[ext_resource path="res://audio/sounds/key.ogg" type="AudioStream" id=6] +[ext_resource path="res://audio/sounds/select.ogg" type="AudioStream" id=7] +[ext_resource path="res://audio/sounds/land.ogg" type="AudioStream" id=8] +[ext_resource path="res://audio/sounds/arrow_collect.ogg" type="AudioStream" id=9] +[ext_resource path="res://audio/sounds/confirm.ogg" type="AudioStream" id=10] +[ext_resource path="res://graphics/hud/sound_test_title.png" type="Texture" id=11] +[ext_resource path="res://graphics/player/sg_headphones.png" type="Texture" id=12] +[ext_resource path="res://menus/music_select.gd" type="Script" id=13] +[ext_resource path="res://audio/music/rumble_loop.ogg" type="AudioStream" id=14] +[ext_resource path="res://audio/music/pause.ogg" type="AudioStream" id=15] +[ext_resource path="res://menus/sound_select.gd" type="Script" id=16] +[ext_resource path="res://audio/music/burnt_out.ogg" type="AudioStream" id=17] +[ext_resource path="res://audio/music/dusk_park.ogg" type="AudioStream" id=18] +[ext_resource path="res://audio/music/klystron_vip.ogg" type="AudioStream" id=19] +[ext_resource path="res://audio/music/cryokiller.ogg" type="AudioStream" id=20] +[ext_resource path="res://audio/music/spine_v2.ogg" type="AudioStream" id=21] +[ext_resource path="res://audio/music/klystron.ogg" type="AudioStream" id=22] +[ext_resource path="res://audio/music/precision_parasite.ogg" type="AudioStream" id=23] +[ext_resource path="res://audio/sounds/bubble.ogg" type="AudioStream" id=24] +[ext_resource path="res://audio/sounds/jump.ogg" type="AudioStream" id=25] +[ext_resource path="res://menus/sound_test.gd" type="Script" id=26] +[ext_resource path="res://graphics/hud/sound_test_arrow.png" type="Texture" id=27] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=28] +[ext_resource path="res://audio/sounds/button.ogg" type="AudioStream" id=29] +[ext_resource path="res://audio/sounds/die.ogg" type="AudioStream" id=30] +[ext_resource path="res://audio/sounds/scrump_die.ogg" type="AudioStream" id=31] +[ext_resource path="res://audio/sounds/shoot_arrow.ogg" type="AudioStream" id=32] +[ext_resource path="res://audio/sounds/die_skeleton.ogg" type="AudioStream" id=33] +[ext_resource path="res://audio/sounds/double_jump.ogg" type="AudioStream" id=34] +[ext_resource path="res://audio/sounds/gover.ogg" type="AudioStream" id=35] +[ext_resource path="res://audio/sounds/explosion.ogg" type="AudioStream" id=36] +[ext_resource path="res://audio/sounds/scrump_hurt.ogg" type="AudioStream" id=37] +[ext_resource path="res://audio/sounds/shell.ogg" type="AudioStream" id=38] +[ext_resource path="res://audio/sounds/bullet_barrage.ogg" type="AudioStream" id=39] +[ext_resource path="res://audio/sounds/gun_cock.ogg" type="AudioStream" id=40] +[ext_resource path="res://audio/sounds/a_bmilc.ogg" type="AudioStream" id=41] +[ext_resource path="res://audio/sounds/a_climb.ogg" type="AudioStream" id=42] +[ext_resource path="res://audio/sounds/star.ogg" type="AudioStream" id=43] +[ext_resource path="res://audio/music/moon_trail.ogg" type="AudioStream" id=44] +[ext_resource path="res://menus/main_menu.tscn" type="PackedScene" id=45] +[ext_resource path="res://menus/back_button.tscn" type="PackedScene" id=46] +[ext_resource path="res://audio/sounds/mech_hurt_2.ogg" type="AudioStream" id=47] +[ext_resource path="res://audio/sounds/explosion_small.ogg" type="AudioStream" id=48] +[ext_resource path="res://audio/sounds/mech_hurt_3.ogg" type="AudioStream" id=49] +[ext_resource path="res://audio/sounds/mech_hurt_1.ogg" type="AudioStream" id=50] +[ext_resource path="res://audio/sounds/scrump_shot.ogg" type="AudioStream" id=51] +[ext_resource path="res://audio/sounds/rainbow_laser.ogg" type="AudioStream" id=52] +[ext_resource path="res://audio/sounds/fami_transform.ogg" type="AudioStream" id=53] +[ext_resource path="res://audio/sounds/copsquash.ogg" type="AudioStream" id=54] +[ext_resource path="res://audio/sounds/ominous.ogg" type="AudioStream" id=55] +[ext_resource path="res://audio/sounds/cop_splat.ogg" type="AudioStream" id=56] +[ext_resource path="res://audio/sounds/shard_expel.ogg" type="AudioStream" id=57] +[ext_resource path="res://audio/sounds/absorb_shard.ogg" type="AudioStream" id=58] +[ext_resource path="res://audio/sounds/famira.ogg" type="AudioStream" id=59] +[ext_resource path="res://audio/sounds/great_job_haze.ogg" type="AudioStream" id=60] +[ext_resource path="res://audio/sounds/fail_shard.ogg" type="AudioStream" id=61] +[ext_resource path="res://audio/sounds/good_job_haze.ogg" type="AudioStream" id=62] +[ext_resource path="res://audio/sounds/msx_die.ogg" type="AudioStream" id=63] +[ext_resource path="res://audio/sounds/famira_die.ogg" type="AudioStream" id=64] +[ext_resource path="res://audio/sounds/final_score.ogg" type="AudioStream" id=65] +[ext_resource path="res://audio/sounds/shard_results.ogg" type="AudioStream" id=66] +[ext_resource path="res://audio/sounds/msx_here_take_this.wav" type="AudioStream" id=67] +[ext_resource path="res://audio/sounds/msx_help_me_get_outta_here.ogg" type="AudioStream" id=68] +[ext_resource path="res://audio/sounds/msx_come_here.ogg" type="AudioStream" id=69] +[ext_resource path="res://audio/sounds/msx_fuck.ogg" type="AudioStream" id=70] +[ext_resource path="res://audio/sounds/msx_shit.ogg" type="AudioStream" id=71] +[ext_resource path="res://audio/sounds/fami_fire.ogg" type="AudioStream" id=72] +[ext_resource path="res://audio/sounds/fami_voice.ogg" type="AudioStream" id=73] +[ext_resource path="res://audio/sounds/revolution2083_haze.ogg" type="AudioStream" id=74] +[ext_resource path="res://audio/sounds/se_g2.ogg" type="AudioStream" id=75] +[ext_resource path="res://audio/sounds/victory_haze.ogg" type="AudioStream" id=76] +[ext_resource path="res://audio/sounds/2600_charge.ogg" type="AudioStream" id=77] +[ext_resource path="res://audio/sounds/sword.ogg" type="AudioStream" id=78] +[ext_resource path="res://audio/sounds/spaghetti.ogg" type="AudioStream" id=79] +[ext_resource path="res://audio/sounds/mkey.ogg" type="AudioStream" id=80] +[ext_resource path="res://audio/sounds/fami_grumble.ogg" type="AudioStream" id=81] +[ext_resource path="res://audio/sounds/vulcan.ogg" type="AudioStream" id=82] +[ext_resource path="res://audio/sounds/laser_ready.ogg" type="AudioStream" id=83] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=84] +[ext_resource path="res://audio/sounds/collapse_block_fall.ogg" type="AudioStream" id=85] +[ext_resource path="res://audio/sounds/mech_walk_1.ogg" type="AudioStream" id=86] +[ext_resource path="res://audio/sounds/a_egg_collect.ogg" type="AudioStream" id=87] +[ext_resource path="res://audio/sounds/mech_creak.ogg" type="AudioStream" id=88] +[ext_resource path="res://audio/sounds/mech_unduck.ogg" type="AudioStream" id=89] +[ext_resource path="res://audio/sounds/mech_duck.ogg" type="AudioStream" id=90] +[ext_resource path="res://audio/sounds/resolve.ogg" type="AudioStream" id=91] +[ext_resource path="res://audio/sounds/talking.ogg" type="AudioStream" id=92] +[ext_resource path="res://audio/sounds/mech_walk.ogg" type="AudioStream" id=93] +[ext_resource path="res://audio/sounds/mech_walk_2.ogg" type="AudioStream" id=94] +[ext_resource path="res://audio/sounds/critical_heat.ogg" type="AudioStream" id=95] +[ext_resource path="res://audio/sounds/good_job_ivy.ogg" type="AudioStream" id=96] +[ext_resource path="res://audio/sounds/good_job_dog.ogg" type="AudioStream" id=97] +[ext_resource path="res://audio/music/mitten.ogg" type="AudioStream" id=98] +[ext_resource path="res://audio/sounds/great_job_dog.ogg" type="AudioStream" id=99] +[ext_resource path="res://audio/sounds/great_job_ivy.ogg" type="AudioStream" id=100] +[ext_resource path="res://audio/sounds/msx_goddammit.ogg" type="AudioStream" id=102] +[ext_resource path="res://audio/sounds/msx_fucking_cop.ogg" type="AudioStream" id=103] +[ext_resource path="res://audio/sounds/msx_motherfucker.ogg" type="AudioStream" id=104] +[ext_resource path="res://audio/sounds/revolution2083.ogg" type="AudioStream" id=105] +[ext_resource path="res://audio/music/sleet.ogg" type="AudioStream" id=106] +[ext_resource path="res://audio/sounds/revolution2083_dog.ogg" type="AudioStream" id=107] +[ext_resource path="res://audio/sounds/revolution2083_ivy.ogg" type="AudioStream" id=108] +[ext_resource path="res://audio/music/vitreous_squares.ogg" type="AudioStream" id=109] +[ext_resource path="res://audio/sounds/victory_ivy.ogg" type="AudioStream" id=110] +[ext_resource path="res://audio/sounds/good_job.ogg" type="AudioStream" id=111] +[ext_resource path="res://audio/sounds/victory_dog.ogg" type="AudioStream" id=112] +[ext_resource path="res://audio/sounds/teleport.ogg" type="AudioStream" id=113] +[ext_resource path="res://audio/sounds/shard_float.ogg" type="AudioStream" id=114] +[ext_resource path="res://audio/sounds/intro_voiceover.ogg" type="AudioStream" id=115] +[ext_resource path="res://audio/sounds/cop_shoot.ogg" type="AudioStream" id=116] +[ext_resource path="res://audio/sounds/splash.ogg" type="AudioStream" id=117] +[ext_resource path="res://audio/sounds/zap_wip.ogg" type="AudioStream" id=118] +[ext_resource path="res://audio/music/intro.ogg" type="AudioStream" id=119] +[ext_resource path="res://audio/music/BBBBBBBB.ogg" type="AudioStream" id=120] +[ext_resource path="res://audio/music/the_dirt_under_the_meadow.ogg" type="AudioStream" id=121] +[ext_resource path="res://audio/music/empty_motel.ogg" type="AudioStream" id=122] +[ext_resource path="res://audio/music/rumble_revolution.ogg" type="AudioStream" id=123] +[ext_resource path="res://audio/music/rumble_revolution_intro.ogg" type="AudioStream" id=124] +[ext_resource path="res://audio/music/rev83-wondering-now-short.ogg" type="AudioStream" id=125] +[ext_resource path="res://audio/music/74(game_over).ogg" type="AudioStream" id=126] +[ext_resource path="res://audio/sounds/victory_nobonus.ogg" type="AudioStream" id=127] +[ext_resource path="res://audio/sounds/shard_get.ogg" type="AudioStream" id=128] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.501961, 1, 0.929412, 1 ) +shader_param/color_2 = Color( 0, 0.713726, 0.631373, 1 ) +shader_param/checker_size = Vector2( 32, 32 ) +shader_param/pan_speed = Vector2( 12, 0 ) +shader_param/cycle_speed = Vector2( 9, 0 ) +shader_param/cycle_alternation = Vector2( 2, 1 ) +shader_param/uv_transform = Transform2D( 0, 3, 3, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=12] +shader = ExtResource( 2 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=13] +atlas = ExtResource( 12 ) +region = Rect2( 0, 0, 20, 20 ) + +[sub_resource type="AtlasTexture" id=14] +atlas = ExtResource( 12 ) +region = Rect2( 20, 0, 20, 20 ) + +[sub_resource type="SpriteFrames" id=15] +animations = [ { +"frames": [ SubResource( 13 ), SubResource( 14 ) ], +"loop": true, +"name": "default", +"speed": 5.0 +} ] + +[sub_resource type="ShaderMaterial" id=18] +shader = ExtResource( 28 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=19] +shader = ExtResource( 28 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[node name="SoundTest" type="Control"] +script = ExtResource( 26 ) + +[node name="ColorRect" type="ColorRect" parent="."] +material = SubResource( 1 ) +margin_right = 256.0 +margin_bottom = 192.0 +__meta__ = { +"_edit_lock_": true +} + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 83, 19 ) +texture = ExtResource( 11 ) + +[node name="AnimatedSprite2" type="AnimatedSprite" parent="."] +material = SubResource( 12 ) +position = Vector2( 72, 152 ) +scale = Vector2( 2, 2 ) +frames = SubResource( 15 ) +playing = true + +[node name="AnimatedSprite3" type="AnimatedSprite" parent="."] +material = SubResource( 12 ) +position = Vector2( 112, 152 ) +scale = Vector2( 2, 2 ) +frames = SubResource( 15 ) +playing = true + +[node name="AnimatedSprite4" type="AnimatedSprite" parent="."] +material = SubResource( 12 ) +position = Vector2( 152, 152 ) +scale = Vector2( 2, 2 ) +frames = SubResource( 15 ) +playing = true + +[node name="AnimatedSprite5" type="AnimatedSprite" parent="."] +material = SubResource( 12 ) +position = Vector2( 192, 152 ) +scale = Vector2( 2, 2 ) +frames = SubResource( 15 ) +playing = true + +[node name="Music" type="TextureButton" parent="."] +material = SubResource( 18 ) +margin_left = 38.0 +margin_top = 64.0 +margin_right = 46.0 +margin_bottom = 73.0 +texture_focused = ExtResource( 27 ) +script = ExtResource( 13 ) +titles = [ "Mute", "Vitreous Squares", "Intro", "Rumble", "Dusk Park", "Burnt Out", "Klystron", "Sleet", "Moon Trail 2023", "Precision Parasite", "klystron vip", "Spine_v2", "Cryokiller", "Mitten", "Dirt Under The Meadow", "Rumble Revolution pt1", "Rumble Revolution", "Empty Motel", "You're Wondering Now", "74 (Game Over)", "Pause", "BBBBBBBB" ] +songs = [ null, ExtResource( 109 ), ExtResource( 119 ), ExtResource( 14 ), ExtResource( 18 ), ExtResource( 17 ), ExtResource( 22 ), ExtResource( 106 ), ExtResource( 44 ), ExtResource( 23 ), ExtResource( 19 ), ExtResource( 21 ), ExtResource( 20 ), ExtResource( 98 ), ExtResource( 121 ), ExtResource( 124 ), ExtResource( 123 ), ExtResource( 122 ), ExtResource( 125 ), ExtResource( 126 ), ExtResource( 15 ), ExtResource( 120 ) ] + +[node name="MusicLabel" type="Label" parent="Music"] +material = ExtResource( 4 ) +margin_left = 10.0 +margin_top = -19.0 +margin_right = 82.0 +margin_bottom = 11.0 +theme = ExtResource( 5 ) +text = "Music" + +[node name="Panel" type="Panel" parent="Music/MusicLabel"] +margin_top = 11.0 +margin_right = 160.0 +margin_bottom = 35.0 +rect_pivot_offset = Vector2( -136, -16 ) +theme = ExtResource( 5 ) + +[node name="Label" type="Label" parent="Music/MusicLabel"] +material = ExtResource( 4 ) +margin_left = 8.0 +margin_top = 14.0 +margin_right = 152.0 +margin_bottom = 32.0 +text = "Mute" +align = 1 +valign = 1 + +[node name="Sound" type="TextureButton" parent="."] +material = SubResource( 19 ) +margin_left = 38.0 +margin_top = 112.0 +margin_right = 45.0 +margin_bottom = 121.0 +focus_neighbour_top = NodePath("../Music") +texture_focused = ExtResource( 27 ) +script = ExtResource( 16 ) +titles = [ "Select", "Confirm", "Jump", "Double Jump", "Land", "Climb", "Bmilc", "Shoot", "Die", "Sploosh", "Bzaap", "Teleport", "Gover", "Key Get", "Arrow Get", "Star Get", "Skeleton Die", "Scrump Shoot", "Scrump Hurt", "Scrump Die", "Bubble Get", "Big Explosion", "Collapse", "Glass Break", "Bullet Barrage", "Laser Charge", "Rainbow Laser", "Mech Hurt 1", "Mech Hurt 2", "Mech Hurt 3", "Small Explosion", "Bullet Casing", "Button Click", "Ominous", "GunCock", "Shards Expelled", "Shards Absorbed", "Shard Float", "Fami Transform", "Scope Squish", "Scope Splat", "Famira Roar", "2083 Shoot", "Laser Ready", "Famira Breath", "Critical Heat", "Famira Die", "Collected Shard", "Missed Shard", "Final Score", "Revolution 2083", "Shard Get", "Good Job!", "Great Job!", "Victory", "Wonderful!", "Come Here", "Help Me", "Agh!", "Fuck!", "Shit...", "Take This", "Fami's Grand Plan", "Debug M", "Spaghetti", "Sword", "Egg Collect", "Talking", "Fami Grumble", "Segz", "Mech Creak", "Mech Step 1", "Mech Step 2", "Mech Walking", "Mech Duck", "Mech Unduck", "Resolve", "Robolution 2083", "Scarletution 2083", "Dogolution 2083", "Classic Good Job", "Good Job - Scarlett", "Good Job - Dog", "Great Job - Scarlett", "Great Job - Dog", "Classic Wonderful", "Wonderful - Scarlett", "Wonderful - Dog", "Fucking Cop...", "Goddammit...", "Motherfucker...", "Intro Voiceover" ] +sounds = [ ExtResource( 7 ), ExtResource( 10 ), ExtResource( 25 ), ExtResource( 34 ), ExtResource( 8 ), ExtResource( 42 ), ExtResource( 41 ), ExtResource( 32 ), ExtResource( 30 ), ExtResource( 117 ), ExtResource( 118 ), ExtResource( 113 ), ExtResource( 35 ), ExtResource( 6 ), ExtResource( 9 ), ExtResource( 43 ), ExtResource( 33 ), ExtResource( 51 ), ExtResource( 37 ), ExtResource( 31 ), ExtResource( 24 ), ExtResource( 36 ), ExtResource( 85 ), ExtResource( 116 ), ExtResource( 39 ), ExtResource( 77 ), ExtResource( 52 ), ExtResource( 50 ), ExtResource( 47 ), ExtResource( 49 ), ExtResource( 48 ), ExtResource( 38 ), ExtResource( 29 ), ExtResource( 55 ), ExtResource( 40 ), ExtResource( 57 ), ExtResource( 58 ), ExtResource( 114 ), ExtResource( 53 ), ExtResource( 54 ), ExtResource( 56 ), ExtResource( 59 ), ExtResource( 82 ), ExtResource( 83 ), ExtResource( 72 ), ExtResource( 95 ), ExtResource( 64 ), ExtResource( 66 ), ExtResource( 61 ), ExtResource( 65 ), ExtResource( 74 ), ExtResource( 128 ), ExtResource( 62 ), ExtResource( 60 ), ExtResource( 127 ), ExtResource( 76 ), ExtResource( 69 ), ExtResource( 68 ), ExtResource( 63 ), ExtResource( 70 ), ExtResource( 71 ), ExtResource( 67 ), ExtResource( 73 ), ExtResource( 80 ), ExtResource( 79 ), ExtResource( 78 ), ExtResource( 87 ), ExtResource( 92 ), ExtResource( 81 ), ExtResource( 75 ), ExtResource( 88 ), ExtResource( 86 ), ExtResource( 94 ), ExtResource( 93 ), ExtResource( 90 ), ExtResource( 89 ), ExtResource( 91 ), ExtResource( 105 ), ExtResource( 108 ), ExtResource( 107 ), ExtResource( 111 ), ExtResource( 96 ), ExtResource( 97 ), ExtResource( 100 ), ExtResource( 99 ), ExtResource( 110 ), ExtResource( 127 ), ExtResource( 112 ), ExtResource( 103 ), ExtResource( 102 ), ExtResource( 104 ), ExtResource( 115 ) ] +categories = [ { +"color": Color( 0.690196, 0.690196, 0.690196, 1 ), +"index": 0, +"name": "Menu" +}, { +"color": Color( 1, 0.423529, 0.4, 1 ), +"index": 2, +"name": "player" +}, { +"color": Color( 1, 0.631373, 0.4, 1 ), +"index": 13, +"name": "collectibles" +} ] + +[node name="SoundLabel" type="Label" parent="Sound"] +material = ExtResource( 4 ) +margin_left = 10.0 +margin_top = -19.0 +margin_right = 82.0 +margin_bottom = 11.0 +theme = ExtResource( 5 ) +text = "Sound" + +[node name="Panel2" type="Panel" parent="Sound/SoundLabel"] +margin_top = 11.0 +margin_right = 160.0 +margin_bottom = 35.0 +rect_pivot_offset = Vector2( -136, -16 ) +theme = ExtResource( 5 ) + +[node name="Label" type="Label" parent="Sound/SoundLabel"] +material = ExtResource( 4 ) +margin_left = 8.0 +margin_top = 11.0 +margin_right = 152.0 +margin_bottom = 35.0 +text = "Select" +align = 1 +valign = 1 + +[node name="Category" type="Label" parent="Sound/SoundLabel"] +visible = false +margin_left = 42.0 +margin_right = 160.0 +margin_bottom = 10.0 +custom_colors/font_color = Color( 1, 1, 1, 1 ) +custom_fonts/font = ExtResource( 84 ) +text = "menu" +align = 2 + +[node name="Label" type="Label" parent="."] +material = ExtResource( 4 ) +margin_top = 180.0 +margin_right = 256.0 +margin_bottom = 194.0 +theme = ExtResource( 5 ) +text = "X - Play Z - Stop" +align = 1 + +[node name="Button" parent="." instance=ExtResource( 46 )] +margin_left = 8.0 +margin_top = 144.0 +margin_right = 60.0 +margin_bottom = 177.0 +next_scene = ExtResource( 45 ) + +[node name="ListenToTheFuture" type="Sprite" parent="."] +position = Vector2( 248, 96 ) +texture = ExtResource( 3 ) diff --git a/menus/splash_screen.gd b/menus/splash_screen.gd new file mode 100644 index 0000000..16dc3b3 --- /dev/null +++ b/menus/splash_screen.gd @@ -0,0 +1,38 @@ +extends Control + +export var next_screen: PackedScene + +var skipping: bool = false + +onready var team_sg: TextureRect = $TeamSG +onready var godot: TextureRect = $Godot + +func _ready() -> void: + yield(get_tree().create_timer(0.5), "timeout") + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + team_sg.visible = true + Fade.fade_in(Options.transition_speed_secs) + yield(Fade, "fade_finished") + yield(get_tree().create_timer(1.0), "timeout") + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + yield(get_tree().create_timer(0.5), "timeout") + godot.visible = true + Fade.fade_in(Options.transition_speed_secs) + yield(Fade, "fade_finished") + yield(get_tree().create_timer(1.0), "timeout") + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + _next_screen() + +func _input(event: InputEvent) -> void: + if Input.is_action_just_pressed("ui_accept"): + skipping = true + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + _next_screen() + free() + +func _next_screen() -> void: + SceneManager.current_scene = next_screen.instance() diff --git a/menus/splash_screen.tscn b/menus/splash_screen.tscn new file mode 100644 index 0000000..1f632ec --- /dev/null +++ b/menus/splash_screen.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://graphics/hud/team_sg_splash.png" type="Texture" id=1] +[ext_resource path="res://menus/splash_screen.gd" type="Script" id=2] +[ext_resource path="res://graphics/hud/godot_splash.png" type="Texture" id=3] +[ext_resource path="res://menus/title_screen.tscn" type="PackedScene" id=4] + +[node name="SplashScreen" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 2 ) +next_screen = ExtResource( 4 ) + +[node name="ColorRect" type="ColorRect" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color( 0, 0, 0, 1 ) + +[node name="TeamSG" type="TextureRect" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 1 ) + +[node name="Godot" type="TextureRect" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 3 ) diff --git a/menus/submit_score.gd b/menus/submit_score.gd new file mode 100644 index 0000000..5a9464d --- /dev/null +++ b/menus/submit_score.gd @@ -0,0 +1,98 @@ +extends Node + + +const NewgroundsLogin := preload("res://menus/newgrounds_login.tscn") +const LevelSelect := preload("res://menus/level_select_scholar.tscn") + + +var _scoreboard_id: int = -1 +var _scoreboard_tag: String = "" +var _score_value: int = -1 + + +onready var tab_container: TabContainer = $"%TabContainer" + + +func _ready() -> void: + yield(get_tree(), "idle_frame") + $"%YesScore".grab_focus() + Fade.fade_in(Options.transition_speed_secs) + + +func _on_YesScore_pressed() -> void: + _scoreboard_id = LevelData.levels[Game.current_level].scores_id + _score_value = Game.final_score + _set_tag(false) + tab_container.current_tab = 2 + if yield(_submit(), "completed"): + tab_container.current_tab = 3 + else: + tab_container.current_tab = 4 + yield(get_tree().create_timer(1.0), "timeout") + tab_container.current_tab = 1 + $"%YesTime".grab_focus() + + +func _on_NoScore_pressed() -> void: + tab_container.current_tab = 1 + $"%YesTime".grab_focus() + + +func _on_YesTime_pressed() -> void: + _scoreboard_id = LevelData.levels[Game.current_level].times_id + _score_value = int(Game.time * 1000.0) + _set_tag(true) + tab_container.current_tab = 2 + if yield(_submit(), "completed"): + tab_container.current_tab = 3 + else: + tab_container.current_tab = 4 + yield(get_tree().create_timer(1.0), "timeout") + _next_screen() + + +func _on_NoTime_pressed() -> void: + _next_screen() + + +func _next_screen() -> void: + Game.clear_collectibles() + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.change_scene(LevelSelect.instance()) + + +func _set_tag(include_completion: bool = false) -> void: + match Game.difficulty: + Game.Difficulty.SWEET: + _scoreboard_tag = "sweet" + Game.Difficulty.SALTY: + _scoreboard_tag = "salty" + Game.Difficulty.SPICY: + _scoreboard_tag = "spicy" + Game.Difficulty.PUNGENT: + _scoreboard_tag = "pungent" + if include_completion: + if Game.keys >= 50 and Game.shards >= 5: + _scoreboard_tag += "-100%" + else: + _scoreboard_tag += "-any%" + + +# returns true if the score was successfully submitted +func _submit() -> bool: + if Ngio.session.user == null: + var login_screen = NewgroundsLogin.instance() + add_child(login_screen) + yield(login_screen, "tree_exited") + if Ngio.session.user == null: + return false + var response = yield(Ngio.request_execute("ScoreBoard.postScore", { + id = _scoreboard_id, + tag = _scoreboard_tag, + value = _score_value, + }), "completed") + if Ngio.has_result(response): + if response.result.data.success: + return true + return false diff --git a/menus/submit_score.tscn b/menus/submit_score.tscn new file mode 100644 index 0000000..7c8ca2e --- /dev/null +++ b/menus/submit_score.tscn @@ -0,0 +1,229 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://menus/submit_score.gd" type="Script" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=4] +[ext_resource path="res://ui/2ndpuberty_scholar_outline.fnt" type="BitmapFont" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 3 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 3 ) +shader_param/speed = Vector2( 8, 4 ) +shader_param/ammount = Vector2( 12, 24 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[node name="SubmitScore" type="Node"] +script = ExtResource( 1 ) + +[node name="ColorRect" type="ColorRect" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color( 0, 0, 0, 1 ) + +[node name="CenterContainer" type="CenterContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 2 ) + +[node name="TabContainer" type="TabContainer" parent="CenterContainer"] +unique_name_in_owner = true +margin_left = 82.0 +margin_top = 78.0 +margin_right = 173.0 +margin_bottom = 114.0 +tabs_visible = false + +[node name="SubmitScore" type="VBoxContainer" parent="CenterContainer/TabContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="CenterContainer/TabContainer/SubmitScore"] +margin_right = 91.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 5 ) +text = "submit score?" + +[node name="YesNoPrompt" type="PanelContainer" parent="CenterContainer/TabContainer/SubmitScore"] +margin_left = 1.0 +margin_top = 14.0 +margin_right = 90.0 +margin_bottom = 36.0 +size_flags_horizontal = 4 + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/TabContainer/SubmitScore/YesNoPrompt"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 86.0 +margin_bottom = 19.0 +rect_min_size = Vector2( 0, 16 ) +rect_pivot_offset = Vector2( -174, -69 ) +custom_constants/separation = 0 +alignment = 1 + +[node name="YesScore" type="TextureButton" parent="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +unique_name_in_owner = true +material = SubResource( 1 ) +margin_top = 4.0 +margin_right = 12.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 12, 8 ) +focus_neighbour_right = NodePath("../NoScore") +size_flags_vertical = 4 +texture_focused = ExtResource( 4 ) +expand = true +stretch_mode = 3 + +[node name="YesLabel" type="Label" parent="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 12.0 +margin_top = 3.0 +margin_right = 33.0 +margin_bottom = 13.0 +text = "Yes" + +[node name="Spacer" type="Control" parent="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 33.0 +margin_right = 45.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 12, 0 ) + +[node name="NoScore" type="TextureButton" parent="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +material = SubResource( 1 ) +margin_left = 45.0 +margin_top = 4.0 +margin_right = 57.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 12, 8 ) +focus_neighbour_left = NodePath("../YesScore") +size_flags_vertical = 4 +texture_focused = ExtResource( 4 ) +expand = true +stretch_mode = 3 + +[node name="NoLabel" type="Label" parent="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 57.0 +margin_top = 3.0 +margin_right = 71.0 +margin_bottom = 13.0 +text = "No" + +[node name="Spacer2" type="Control" parent="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer"] +margin_left = 71.0 +margin_right = 83.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 12, 0 ) + +[node name="SubmitTime" type="VBoxContainer" parent="CenterContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Label" type="Label" parent="CenterContainer/TabContainer/SubmitTime"] +margin_right = 89.0 +margin_bottom = 10.0 +custom_fonts/font = ExtResource( 5 ) +text = "submit time?" + +[node name="YesNoPrompt" type="PanelContainer" parent="CenterContainer/TabContainer/SubmitTime"] +margin_top = 14.0 +margin_right = 89.0 +margin_bottom = 36.0 +size_flags_horizontal = 4 + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/TabContainer/SubmitTime/YesNoPrompt"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 86.0 +margin_bottom = 19.0 +rect_min_size = Vector2( 0, 16 ) +rect_pivot_offset = Vector2( -174, -69 ) +custom_constants/separation = 0 +alignment = 1 + +[node name="YesTime" type="TextureButton" parent="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer"] +unique_name_in_owner = true +material = SubResource( 1 ) +margin_top = 4.0 +margin_right = 12.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 12, 8 ) +focus_neighbour_right = NodePath("../NoTime") +size_flags_vertical = 4 +texture_focused = ExtResource( 4 ) +expand = true +stretch_mode = 3 + +[node name="YesLabel" type="Label" parent="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer"] +margin_left = 12.0 +margin_top = 3.0 +margin_right = 33.0 +margin_bottom = 13.0 +text = "Yes" + +[node name="Spacer" type="Control" parent="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer"] +margin_left = 33.0 +margin_right = 45.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 12, 0 ) + +[node name="NoTime" type="TextureButton" parent="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer"] +material = SubResource( 1 ) +margin_left = 45.0 +margin_top = 4.0 +margin_right = 57.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 12, 8 ) +focus_neighbour_left = NodePath("../YesTime") +size_flags_vertical = 4 +texture_focused = ExtResource( 4 ) +expand = true +stretch_mode = 3 + +[node name="NoLabel" type="Label" parent="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer"] +margin_left = 57.0 +margin_top = 3.0 +margin_right = 71.0 +margin_bottom = 13.0 +text = "No" + +[node name="Spacer2" type="Control" parent="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer"] +margin_left = 71.0 +margin_right = 83.0 +margin_bottom = 16.0 +rect_min_size = Vector2( 12, 0 ) + +[node name="LoadingGraphic" type="Label" parent="CenterContainer/TabContainer"] +visible = false +material = SubResource( 2 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_min_size = Vector2( 0, 64 ) +text = "§" +align = 1 +valign = 1 + +[node name="Success" type="Label" parent="CenterContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +custom_fonts/font = ExtResource( 5 ) +text = "success!" + +[node name="Failure" type="Label" parent="CenterContainer/TabContainer"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +custom_fonts/font = ExtResource( 5 ) +text = "failture :(" + +[connection signal="pressed" from="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer/YesScore" to="." method="_on_YesScore_pressed"] +[connection signal="pressed" from="CenterContainer/TabContainer/SubmitScore/YesNoPrompt/HBoxContainer/NoScore" to="." method="_on_NoScore_pressed"] +[connection signal="pressed" from="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer/YesTime" to="." method="_on_YesTime_pressed"] +[connection signal="pressed" from="CenterContainer/TabContainer/SubmitTime/YesNoPrompt/HBoxContainer/NoTime" to="." method="_on_NoTime_pressed"] diff --git a/menus/title_screen.gd b/menus/title_screen.gd new file mode 100644 index 0000000..b78588e --- /dev/null +++ b/menus/title_screen.gd @@ -0,0 +1,42 @@ +extends Node + +const robo_voice = preload("res://audio/sounds/revolution2083.ogg") +const penny_voice = preload("res://audio/sounds/revolution2083_penny.ogg") +const haze_voice = preload("res://audio/sounds/revolution2083_haze.ogg") +const ivy_voice = preload("res://audio/sounds/revolution2083_ivy.ogg") +const dog_voice = preload("res://audio/sounds/revolution2083_dog.ogg") +onready var audio = $AudioStreamPlayer +export var next_menu: PackedScene +var has_started = false +onready var revolution_2083_robot = preload("res://audio/sounds/revolution2083.ogg") +onready var revolution_2083_penny = preload("res://audio/sounds/revolution2083_penny.ogg") +onready var revolution_2083_haze = preload("res://audio/sounds/revolution2083_haze.ogg") +onready var revolution_2083_ivy = preload("res://audio/sounds/revolution2083_ivy.ogg") + +func _input(event): + if Input.is_action_just_pressed("start") && !has_started: + Audio.play_sound(Audio.a_star,Audio.ac_collectible) + var r = 40 + if r > 0 && r < 31: audio.stream = penny_voice + if r >= 30 && r < 61: audio.stream = haze_voice + if r >= 60 && r < 91: audio.stream = ivy_voice + if r >= 90: audio.stream = dog_voice + if r == 0: audio.stream = robo_voice + audio.play() + $AnimationPlayer.play("activate") + has_started = true + +func _ready(): + Fade.fade_in(Options.transition_speed_secs) + var time = OS.get_time() + if time.hour >= 18 or time.hour < 6: + $Night.visible = true + else: + $Day.visible = true + Audio.play_music(load("res://audio/music/vitreous_squares.ogg")) + + +func _on_AudioStreamPlayer_finished(): + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + SceneManager.current_scene = next_menu.instance() diff --git a/menus/title_screen.tscn b/menus/title_screen.tscn new file mode 100644 index 0000000..57d919d --- /dev/null +++ b/menus/title_screen.tscn @@ -0,0 +1,194 @@ +[gd_scene load_steps=19 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=3] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=4] +[ext_resource path="res://menus/title_screen.gd" type="Script" id=5] +[ext_resource path="res://menus/main_menu.tscn" type="PackedScene" id=6] +[ext_resource path="res://graphics/hud/logo.png" type="Texture" id=7] +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=8] +[ext_resource path="res://graphics/backgrounds/sun_and_clouds.png" type="Texture" id=9] +[ext_resource path="res://graphics/particles/smoke.png" type="Texture" id=10] +[ext_resource path="res://shaders/color_noise.gdshader" type="Shader" id=11] +[ext_resource path="res://graphics/backgrounds/moon.png" type="Texture" id=12] +[ext_resource path="res://graphics/hud/title_credits.png" type="Texture" id=13] + +[sub_resource type="ShaderMaterial" id=7] +shader = ExtResource( 8 ) +shader_param/color_1 = Color( 0.121569, 0.454902, 1, 1 ) +shader_param/color_2 = Color( 0.113725, 0.321569, 0.466667, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 6, 3 ) +shader_param/cycle_alternation = Vector2( 6, 3 ) +shader_param/uv_transform = Transform2D( 0, 1, 1, 0, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 8 ) +shader_param/color_1 = Color( 0.662745, 0.647059, 0.819608, 1 ) +shader_param/color_2 = Color( 0.12549, 0.133333, 0.227451, 1 ) +shader_param/checker_size = Vector2( 16, 16 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 6, 3 ) +shader_param/cycle_alternation = Vector2( 6, 3 ) +shader_param/uv_transform = Transform2D( 0, 1, 1, 0, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 11 ) +shader_param/animate_noise = true +shader_param/noise_intensity = 1.0 +shader_param/fps = 60.0 + +[sub_resource type="Curve" id=4] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.130639, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.348684, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="Animation" id=9] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Label:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Logo:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} + +[sub_resource type="Animation" id=10] +resource_name = "activate" +tracks/0/type = "value" +tracks/0/path = NodePath("Label:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Logo:scale") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.5, 0.8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ), Vector2( 1.25, 1.25 ), Vector2( 1, 1 ) ] +} + +[sub_resource type="Animation" id=6] +resource_name = "blink" +length = 0.6 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Label:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + +[node name="TitleScreen" type="Node"] +script = ExtResource( 5 ) +next_menu = ExtResource( 6 ) + +[node name="Day" type="Node2D" parent="."] + +[node name="ColorRect" type="ColorRect" parent="Day"] +material = SubResource( 7 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="Sprite" type="Sprite" parent="Day"] +position = Vector2( 128, 96 ) +texture = ExtResource( 9 ) + +[node name="Night" type="Node2D" parent="."] +visible = false + +[node name="ColorRect2" type="ColorRect" parent="Night"] +material = SubResource( 3 ) +margin_right = 256.0 +margin_bottom = 192.0 + +[node name="ColorRect" type="ColorRect" parent="Night"] +material = SubResource( 5 ) +margin_right = 256.0 +margin_bottom = 192.0 +color = Color( 1, 1, 1, 0.392157 ) + +[node name="Sprite" type="Sprite" parent="Night"] +position = Vector2( 296, 96 ) +texture = ExtResource( 12 ) + +[node name="SmokeParticles" type="CPUParticles2D" parent="."] +position = Vector2( 40, 192 ) +amount = 512 +lifetime = 10.0 +preprocess = 10.0 +speed_scale = 2.0 +texture = ExtResource( 10 ) +direction = Vector2( 0, -1 ) +gravity = Vector2( 0, -5 ) +initial_velocity = 15.0 +initial_velocity_random = 1.0 +angular_velocity = 180.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 3.0 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 4 ) +color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) + +[node name="Logo" type="Sprite" parent="."] +position = Vector2( 128, 96 ) +texture = ExtResource( 7 ) + +[node name="Label" type="Label" parent="."] +material = ExtResource( 4 ) +margin_top = 136.0 +margin_right = 256.0 +margin_bottom = 159.0 +theme = ExtResource( 3 ) +text = "Press start!" +align = 1 + +[node name="TitleCredits" type="Sprite" parent="."] +position = Vector2( 128, 96 ) +texture = ExtResource( 13 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "blink" +anims/RESET = SubResource( 9 ) +anims/activate = SubResource( 10 ) +anims/blink = SubResource( 6 ) + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +volume_db = -7.866 + +[connection signal="finished" from="AudioStreamPlayer" to="." method="_on_AudioStreamPlayer_finished"] diff --git a/objects/Camera2D.tscn b/objects/Camera2D.tscn index 593286a..560267f 100644 --- a/objects/Camera2D.tscn +++ b/objects/Camera2D.tscn @@ -1,9 +1,19 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://objects/camera.gd" type="Script" id=1] +[ext_resource path="res://objects/hud/off_level_indicator.tscn" type="PackedScene" id=2] +[ext_resource path="res://objects/hud/msx_off_level_indicator.tscn" type="PackedScene" id=3] [node name="Camera2D" type="Camera2D"] offset = Vector2( 128, 96 ) current = true smoothing_speed = 8.0 script = ExtResource( 1 ) + +[node name="OffLevelIndicator" parent="." instance=ExtResource( 2 )] +visible = false +position = Vector2( 0, 12 ) + +[node name="MsxOffLevelIndicator" parent="." instance=ExtResource( 3 )] +visible = false +position = Vector2( 16, 32 ) diff --git a/objects/camera.gd b/objects/camera.gd index dbf6afc..73704bf 100644 --- a/objects/camera.gd +++ b/objects/camera.gd @@ -2,28 +2,60 @@ extends Camera2D onready var player = get_tree().get_nodes_in_group("player").front() onready var last_sector = Game.get_sector(player.global_position + Vector2(0.0, -5.0)) +onready var off_level_indicator = $OffLevelIndicator +onready var msx_off_level_indicator = $MsxOffLevelIndicator #Scroll direction export var scroll_h = true export var scroll_v = false export var respawn_h = true +var msx = null +var msx_exists = false func _ready(): set_as_toplevel(true) Game.current_sector = last_sector + yield(get_tree(), "idle_frame") + if get_tree().get_nodes_in_group("msx").size() > 0: + msx = get_tree().get_nodes_in_group("msx").pop_front() + msx_exists = true func _process(delta): # use pop_front() instead of [0] so that will not crash without player if not is_instance_valid(player): player = get_tree().get_nodes_in_group("player").pop_front() else: - var current_sector = Game.get_sector(player.global_position + Vector2(0.0, -10.0)) + var current_sector = Game.get_sector(player.global_position + Vector2(0.0, -5.0)) if scroll_h && current_sector.x != last_sector.x: - position.x = current_sector.x * Game.resolution.x + position.x = current_sector.x * Game.RESOLUTION.x if respawn_h: - var offset = Vector2(8.0 * sign(current_sector.x - last_sector.x), 0.0) + # TODO: decide whether to use offset with horizontal respawn +# var offset = Vector2(8.0 * sign(current_sector.x - last_sector.x), 0.0) Game.respawn_point = player.global_position last_sector.x = current_sector.x if scroll_v && current_sector.y != last_sector.y: - position.y = current_sector.y * Game.resolution.y + position.y = current_sector.y * Game.RESOLUTION.y last_sector.y = current_sector.y Game.current_sector = last_sector + #Off level indicator + if player.global_position.y - global_position.y <= 16.0: + off_level_indicator.visible = true + off_level_indicator.global_position.x = player.global_position.x + else: + off_level_indicator.visible = false + #Ms.X off level indicator + if msx_exists: + if is_instance_valid(msx) and msx.get_parent().is_free: + msx_off_level_indicator.visible = true + var msx_sector = Game.get_sector(msx.global_position) + if msx_sector == current_sector: + msx_off_level_indicator.anims.play("onscreen") + if msx_sector < current_sector: + msx_off_level_indicator.position.y = msx.global_position.y + msx_off_level_indicator.position.x = 16 + msx_off_level_indicator.anims.play("left") + if msx_sector > current_sector: + msx_off_level_indicator.position.y = msx.global_position.y + msx_off_level_indicator.position.x = 240 + msx_off_level_indicator.anims.play("right") + else: + msx_off_level_indicator.visible = false diff --git a/objects/collectibles/arrow.gd b/objects/collectibles/arrow.gd index b89a206..edca381 100644 --- a/objects/collectibles/arrow.gd +++ b/objects/collectibles/arrow.gd @@ -1,8 +1,14 @@ extends Node2D + export var value = 1 +func _ready() -> void: + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + $Sprite.material.set_shader_param("palette", palette) + + func _on_Area2D_body_entered(body: Node) -> void: #Collect if body.is_in_group("player"): diff --git a/objects/collectibles/arrow.tscn b/objects/collectibles/arrow.tscn index d34f054..d55c601 100644 --- a/objects/collectibles/arrow.tscn +++ b/objects/collectibles/arrow.tscn @@ -1,13 +1,15 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=7 format=2] -[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] [ext_resource path="res://objects/collectibles/arrow.gd" type="Script" id=2] [ext_resource path="res://graphics/player/arrow.png" type="Texture" id=3] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=4] [sub_resource type="ShaderMaterial" id=7] shader = ExtResource( 1 ) shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = false +shader_param/palette = ExtResource( 4 ) [sub_resource type="RectangleShape2D" id=6] extents = Vector2( 4, 4 ) diff --git a/objects/collectibles/key.gd b/objects/collectibles/key.gd index 08fccfb..e4ad5e1 100644 --- a/objects/collectibles/key.gd +++ b/objects/collectibles/key.gd @@ -1,6 +1,14 @@ extends Node2D -export var value = 1 +const SEMITONE := 1.05946 +const TIMEOUT := 1000 +const MAX_PITCH := 2.0 + +const STATIC = { + pitch = -1.0, + timeout = -1, +} + func _ready(): #Sync all coinframes @@ -10,7 +18,15 @@ func _ready(): func _on_Area2D_body_entered(body: Node) -> void: #Collect if body.is_in_group("player"): - Game.keys += value + Game.keys += 1 Game.score += 5 - Audio.play_sound(Audio.a_gold,Audio.ac_collectible) + # pitch increase + if Time.get_ticks_msec() < STATIC.timeout: + STATIC.pitch = min(STATIC.pitch + 1.0, MAX_PITCH) + else: + STATIC.pitch = -1.0 + STATIC.timeout = Time.get_ticks_msec() + TIMEOUT + Audio.play_sound(Audio.a_key,Audio.ac_collectible, pow(SEMITONE, STATIC.pitch)) + if Game._get_shards() >= 5 && Game.keys == 50: + Audio.great_job() queue_free() diff --git a/objects/collectibles/key.tscn b/objects/collectibles/key.tscn index bd99d3b..41cc04b 100644 --- a/objects/collectibles/key.tscn +++ b/objects/collectibles/key.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=17 format=2] +[gd_scene load_steps=20 format=2] [ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] [ext_resource path="res://graphics/collectibles/key.png" type="Texture" id=2] [ext_resource path="res://graphics/collectibles/30385.png" type="Texture" id=3] [ext_resource path="res://objects/collectibles/key.gd" type="Script" id=4] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=5] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=6] [sub_resource type="ShaderMaterial" id=7] shader = ExtResource( 1 ) @@ -62,7 +64,11 @@ animations = [ { [sub_resource type="RectangleShape2D" id=6] extents = Vector2( 4, 4 ) +[sub_resource type="Curve" id=17] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + [node name="Key" type="Node2D" groups=["gold"]] +pause_mode = 2 script = ExtResource( 4 ) [node name="AnimatedSprite" type="AnimatedSprite" parent="."] @@ -70,7 +76,6 @@ material = SubResource( 7 ) position = Vector2( 0, -1 ) frames = SubResource( 5 ) animation = "key" -frame = 1 playing = true centered = false @@ -84,4 +89,21 @@ monitorable = false position = Vector2( 4, 4 ) shape = SubResource( 6 ) +[node name="Sparkles" type="CPUParticles2D" parent="."] +light_mask = 0 +position = Vector2( 4.5, 4 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 5 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 17 ) +color = Color( 0.996078, 1, 0.760784, 1 ) +script = ExtResource( 6 ) + [connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"] diff --git a/objects/collectibles/shard.gd b/objects/collectibles/shard.gd index 294d384..cdf963d 100644 --- a/objects/collectibles/shard.gd +++ b/objects/collectibles/shard.gd @@ -1,16 +1,22 @@ extends Node2D -export var value = 1 +signal collected(shard_number) + export var number = 0 #Used for saving which specific shards collected func _ready(): + var hud = get_tree().get_nodes_in_group("hud").pop_back() + if hud != null: + connect("collected",hud,"shard_popup") $AnimationPlayer.play("glow") func _on_Area2D_body_entered(body): #Collect if body.is_in_group("player"): + emit_signal("collected",number) Audio.play_shard_sound() Game.score += 500 - Game.shards += value Game.shards_collected[number] = true + if Game._get_shards() >= 5 && Game.keys == 50: + Audio.great_job() queue_free() diff --git a/objects/collectibles/shard.tscn b/objects/collectibles/shard.tscn index 1644dcf..6550926 100644 --- a/objects/collectibles/shard.tscn +++ b/objects/collectibles/shard.tscn @@ -1,8 +1,10 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=11 format=2] [ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] [ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=2] [ext_resource path="res://objects/collectibles/shard.gd" type="Script" id=3] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=4] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=5] [sub_resource type="ShaderMaterial" id=7] shader = ExtResource( 1 ) @@ -12,6 +14,21 @@ shader_param/border_corners = false [sub_resource type="RectangleShape2D" id=6] extents = Vector2( 3.5, 3.5 ) +[sub_resource type="Animation" id=18] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} + [sub_resource type="Animation" id=8] resource_name = "glow" length = 0.8 @@ -26,14 +43,18 @@ tracks/0/keys = { "times": PoolRealArray( 0, 0.4, 0.8 ), "transitions": PoolRealArray( 1, 1, 1 ), "update": 0, -"values": [ Color( 0.329412, 0.360784, 0.847059, 1 ), Color( 1, 1, 1, 1 ), Color( 0.329412, 0.360784, 0.847059, 1 ) ] +"values": [ Color( 0.766, 0.73, 1, 1 ), Color( 1.1, 1.1, 1.1, 1 ), Color( 0.766, 0.73, 1, 1 ) ] } +[sub_resource type="Curve" id=17] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + [node name="Shard" type="Node2D"] +pause_mode = 2 script = ExtResource( 3 ) [node name="Sprite" type="Sprite" parent="."] -modulate = Color( 0.861621, 0.868095, 0.96844, 1 ) +light_mask = 0 material = SubResource( 7 ) position = Vector2( 5, 3 ) texture = ExtResource( 2 ) @@ -43,10 +64,29 @@ collision_layer = 0 collision_mask = 128 [node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +visible = false position = Vector2( 4.5, 2.5 ) shape = SubResource( 6 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 18 ) anims/glow = SubResource( 8 ) +[node name="Sparkles" type="CPUParticles2D" parent="."] +light_mask = 0 +position = Vector2( 4.5, 2.5 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 4 ) +emission_shape = 2 +emission_rect_extents = Vector2( 5, 5 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 17 ) +color = Color( 0.72549, 0.956863, 1, 1 ) +script = ExtResource( 5 ) + [connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"] diff --git a/objects/collectibles/star.gd b/objects/collectibles/star.gd index e075c98..322d6fe 100644 --- a/objects/collectibles/star.gd +++ b/objects/collectibles/star.gd @@ -13,6 +13,7 @@ const COLORS = [ export(StarColor) var color setget _set_color export var value = 1 +export (Array, Color) var particle_colors := [] onready var sprite = $AnimatedSprite func _ready(): @@ -21,21 +22,23 @@ func _ready(): #Change color _set_color(color) -func _set_color(value): - color = value +func _set_color(new_color): + color = new_color if is_inside_tree(): sprite.material.set_shader_param("palette", COLORS[color]) + $Sparkles.color = particle_colors[color] func _on_Area2D_body_entered(body): #Collect if body.is_in_group("player"): Audio.play_sound(Audio.a_star,Audio.ac_collectible) Game.score += 100 - Game.stars[color] = true + Game.stars_collected[color] = true #5 Star reward - if Game.stars[0] && Game.stars[1] && Game.stars[2] && Game.stars[3] && Game.stars[4]: + if Game.stars == 5: Audio.play_shard_sound() - Game.shards += 1 Game.shards_collected[4] = true + if Game._get_shards() >= 5 && Game.keys == 50: + Audio.great_job() Game.score += 500 queue_free() diff --git a/objects/collectibles/star.tscn b/objects/collectibles/star.tscn index 0834655..625ed61 100644 --- a/objects/collectibles/star.tscn +++ b/objects/collectibles/star.tscn @@ -1,9 +1,11 @@ -[gd_scene load_steps=14 format=2] +[gd_scene load_steps=17 format=2] [ext_resource path="res://graphics/collectibles/pal_star_red.png" type="Texture" id=1] [ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=2] [ext_resource path="res://objects/collectibles/star.gd" type="Script" id=3] [ext_resource path="res://graphics/collectibles/star.png" type="Texture" id=4] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=5] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=6] [sub_resource type="ShaderMaterial" id=10] resource_local_to_scene = true @@ -47,14 +49,20 @@ animations = [ { [sub_resource type="RectangleShape2D" id=9] extents = Vector2( 4, 4 ) +[sub_resource type="Curve" id=17] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + [node name="Star" type="Node2D"] +pause_mode = 2 script = ExtResource( 3 ) +particle_colors = [ Color( 1, 0.741176, 0.709804, 1 ), Color( 1, 0.968627, 0.709804, 1 ), Color( 0.709804, 1, 0.74902, 1 ), Color( 0.709804, 0.752941, 1, 1 ), Color( 1, 0.709804, 0.984314, 1 ) ] [node name="AnimatedSprite" type="AnimatedSprite" parent="."] +light_mask = 0 material = SubResource( 10 ) position = Vector2( -1, -3 ) frames = SubResource( 8 ) -frame = 2 +frame = 1 playing = true centered = false @@ -67,4 +75,21 @@ visible = false position = Vector2( 4, 4 ) shape = SubResource( 9 ) +[node name="Sparkles" type="CPUParticles2D" parent="."] +light_mask = 0 +position = Vector2( 4.5, 4 ) +amount = 1 +lifetime = 2.0 +texture = ExtResource( 5 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 17 ) +color = Color( 1, 0.741176, 0.709804, 1 ) +script = ExtResource( 6 ) + [connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"] diff --git a/objects/enemy/2083_bullet.gd b/objects/enemy/2083_bullet.gd new file mode 100644 index 0000000..c5ecdc0 --- /dev/null +++ b/objects/enemy/2083_bullet.gd @@ -0,0 +1,22 @@ +extends Area2D + +const SmallExplosion = preload("res://objects/enemy/boss/2600_small_explosion.tscn") + +export var direction: Vector2 = Vector2.LEFT +export var speed: float = 50.0 +export var damage: float = 0.0 +onready var sprite = $AnimatedSprite +var lifetime = 0 + +func _physics_process(delta: float) -> void: + position += direction * speed * delta + lifetime += 1 + if lifetime < 10: + var r = rand_range(0,5) + sprite.position.y += sin(Game.time * 20) + +func _exit_tree() -> void: + var explosion = SmallExplosion.instance() + explosion.quiet = true + explosion.position = position + get_parent().add_child(explosion) diff --git a/objects/enemy/2083_bullet.tscn b/objects/enemy/2083_bullet.tscn new file mode 100644 index 0000000..29c3750 --- /dev/null +++ b/objects/enemy/2083_bullet.tscn @@ -0,0 +1,41 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://graphics/enemy/stg_bullet.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/2083_bullet.gd" type="Script" id=2] + +[sub_resource type="RectangleShape2D" id=5] +extents = Vector2( 3, 3 ) + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 6, 6 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 1 ) +region = Rect2( 6, 0, 6, 6 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 1 ) +region = Rect2( 12, 0, 6, 6 ) + +[sub_resource type="SpriteFrames" id=4] +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ) ], +"loop": true, +"name": "default", +"speed": 15.0 +} ] + +[node name="2083Bullet" type="Area2D" groups=["hurt_famira"]] +collision_layer = 128 +collision_mask = 128 +monitoring = false +script = ExtResource( 2 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 5 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +frames = SubResource( 4 ) +frame = 2 +playing = true diff --git a/objects/enemy/2600_bullet.gd b/objects/enemy/2600_bullet.gd new file mode 100644 index 0000000..f282180 --- /dev/null +++ b/objects/enemy/2600_bullet.gd @@ -0,0 +1,7 @@ +extends "res://objects/enemy/enemy.gd" + +export var direction: Vector2 = Vector2.LEFT +export var speed: float = 50 + +func _physics_process(delta): + position += direction * speed * delta diff --git a/objects/enemy/2600_bullet.tscn b/objects/enemy/2600_bullet.tscn new file mode 100644 index 0000000..de18a9c --- /dev/null +++ b/objects/enemy/2600_bullet.tscn @@ -0,0 +1,42 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://graphics/enemy/stg_bullet.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/2600_bullet.gd" type="Script" id=2] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 6, 6 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 1 ) +region = Rect2( 6, 0, 6, 6 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 1 ) +region = Rect2( 12, 0, 6, 6 ) + +[sub_resource type="SpriteFrames" id=4] +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ) ], +"loop": true, +"name": "default", +"speed": 15.0 +} ] + +[sub_resource type="RectangleShape2D" id=5] +extents = Vector2( 3, 3 ) + +[node name="2600Bullet" type="Node2D"] +script = ExtResource( 2 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +frames = SubResource( 4 ) +frame = 2 +playing = true + +[node name="Hitbox" type="Area2D" parent="." groups=["arrow"]] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +shape = SubResource( 5 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/artificial_soul.gd b/objects/enemy/artificial_soul.gd index e5a5ee7..e6c2fe2 100644 --- a/objects/enemy/artificial_soul.gd +++ b/objects/enemy/artificial_soul.gd @@ -13,11 +13,11 @@ onready var remote_transform: RemoteTransform2D = $Pivot/RemoteTransform func _ready() -> void: pivot.rotation = initial_angle * 0.785398 # TAU / 8.0 + remote_transform.position.x = radius * 8.0 if Engine.editor_hint: return - #Easy mode - if Game.is_easy_mode: - speed *= Game.easy_mode_speed_factor + # adjust to difficulty + speed *= Game.enemy_speed_factor func _physics_process(delta: float) -> void: if Engine.editor_hint: diff --git a/objects/enemy/boss/2600.gd b/objects/enemy/boss/2600.gd new file mode 100644 index 0000000..58c2483 --- /dev/null +++ b/objects/enemy/boss/2600.gd @@ -0,0 +1,86 @@ +extends "res://objects/enemy/enemy.gd" + +signal entered_phase(phase) + +const Bullet = preload("res://objects/enemy/2600_bullet.tscn") +const SmallExplosion = preload("res://objects/enemy/boss/2600_small_explosion.tscn") +const IntelliHead = preload("res://objects/enemy/boss/intelli_head.tscn") + +export var shot_speed: float = 50 +export var fire_rate: float = 1 +export var can_shoot: bool = false +export var explosion_rect: Rect2 +export var make_explosions: bool = true + +var hp: int = 3 + +onready var bullet_positions = $"%BulletPositions" +onready var shoot_timer = $ShootTimer +onready var anims = $AnimationPlayer +onready var head_sprite = $"%Head" + + +func _on_ShootTimer_timeout(): + if can_shoot: shoot() + +func shoot(): + Audio.play_sound(Audio.a_bullet_barrage,Audio.ac_boss) + for pos in bullet_positions.get_children(): + var bullet = Bullet.instance() + bullet.global_position = pos.global_position + bullet.direction = Vector2.LEFT.rotated(pos.rotation) + bullet.speed = shot_speed + get_parent().add_child(bullet) + shoot_timer.wait_time = fire_rate + +func _play_laser_sound(play: bool): + if play: + Audio.play_sound(Audio.a_rainbow_laser,Audio.ac_boss) + else: + Audio.ac_boss.playing = false + +func _play_charge_sound(play: bool): + if play: + Audio.play_sound(Audio.a_2600_charge,Audio.ac_boss) + else: + Audio.ac_boss.playing = false + + +func _spawn_explosions() -> void: + var head = IntelliHead.instance() + head.global_position = $"%IntelliHeadPos".global_position + get_parent().add_child(head) + while make_explosions: + yield(get_tree().create_timer(randf() * 0.5, false), "timeout") + var explosion = SmallExplosion.instance() + explosion.position = Vector2( + rand_range(explosion_rect.position.x, explosion_rect.end.x), + rand_range(explosion_rect.position.y, explosion_rect.end.y) + ) + add_child(explosion) + +func die(): + hp -= 1 + if hp > 0: + anims.play("Beam") + match hp: + 2: + Game.instance_node(preload("res://objects/enemy/boss/collapse_blocks.tscn"),0,0,get_parent()) + emit_signal("entered_phase", 2) + head_sprite.texture = preload("res://graphics/enemy/boss/stg_2600/head_cracked.png") + 1: + shot_speed = 70 + $"%GlassShape".queue_free() + $"%GlassBreakParticles".emitting = true + emit_signal("entered_phase", 3) + head_sprite.texture = preload("res://graphics/enemy/boss/stg_2600/head_broken.png") + 0: + anims.play("die") + Audio.play_sound(Audio.a_die, Audio.ac_die) + yield(anims, "animation_finished") + emit_signal("entered_phase", 4) + + +func _on_animation_finished(anim_name: String) -> void: + if anim_name == "Beam": + anims.play("stomping") diff --git a/objects/enemy/boss/2600.tscn b/objects/enemy/boss/2600.tscn new file mode 100644 index 0000000..eaf3db8 --- /dev/null +++ b/objects/enemy/boss/2600.tscn @@ -0,0 +1,1127 @@ +[gd_scene load_steps=37 format=2] + +[ext_resource path="res://objects/enemy/boss/2600.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/boss/stg_2600/tailpipes.png" type="Texture" id=2] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/enemy/boss/stg_2600/beam.png" type="Texture" id=4] +[ext_resource path="res://graphics/npc/intelli_idle.png" type="Texture" id=5] +[ext_resource path="res://graphics/enemy/boss/stg_2600/head_intact.png" type="Texture" id=6] +[ext_resource path="res://graphics/enemy/boss/stg_2600/bolt_large.png" type="Texture" id=7] +[ext_resource path="res://graphics/enemy/boss/stg_2600/bolt_medium.png" type="Texture" id=8] +[ext_resource path="res://graphics/enemy/boss/stg_2600/leg.png" type="Texture" id=9] +[ext_resource path="res://scripts/sprite_ext.gd" type="Script" id=10] +[ext_resource path="res://shaders/scale3x.gdshader" type="Shader" id=11] +[ext_resource path="res://graphics/enemy/boss/stg_2600/foot.png" type="Texture" id=12] +[ext_resource path="res://graphics/enemy/boss/stg_2600/beam_gradient.png" type="Texture" id=13] +[ext_resource path="res://shaders/beam_cycle.gdshader" type="Shader" id=14] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=15] +[ext_resource path="res://graphics/particles/smoke.png" type="Texture" id=16] +[ext_resource path="res://shaders/fade.gdshader" type="Shader" id=17] +[ext_resource path="res://graphics/fade_patterns/stg_explosion.png" type="Texture" id=18] +[ext_resource path="res://graphics/particles/glass_shard.png" type="Texture" id=19] + +[sub_resource type="ShaderMaterial" id=11] +shader = ExtResource( 3 ) +shader_param/speed = Vector2( 16, 32 ) +shader_param/ammount = Vector2( 0.6, 0.6 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="Curve" id=12] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.130639, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.348684, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=10] +shader = ExtResource( 14 ) +shader_param/cycle_speed = 1.0 +shader_param/gradient = ExtResource( 13 ) + +[sub_resource type="RectangleShape2D" id=6] +extents = Vector2( 128, 8 ) + +[sub_resource type="Curve" id=13] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.803571, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="Curve" id=21] +_data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.937702, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), -25.1918, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=8] +shader = ExtResource( 11 ) +shader_param/pixel_scale = 1.0 + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 20.5, 15.5 ) + +[sub_resource type="RectangleShape2D" id=19] +extents = Vector2( 5.5, 5.5 ) + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 23, 13 ) + +[sub_resource type="ShaderMaterial" id=20] +resource_local_to_scene = true +shader = ExtResource( 17 ) +shader_param/color = Color( 1, 1, 1, 1 ) +shader_param/smooth_mode = true +shader_param/reverse = true +shader_param/opacity = 0.0 + +[sub_resource type="Animation" id=17] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ExplosionRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExplosionRect:material:shader_param/reverse") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ExplosionRect:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} + +[sub_resource type="Animation" id=18] +resource_name = "explode" +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("ExplosionRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 1.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExplosionRect:modulate") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0.833333 ), Color( 1, 1, 1, 0.666667 ), Color( 1, 1, 1, 0.5 ), Color( 1, 1, 1, 0.333333 ), Color( 1, 1, 1, 0.166667 ), Color( 1, 1, 1, 0 ) ] +} + +[sub_resource type="Animation" id=4] +resource_name = "Beam" +length = 4.0 +tracks/0/type = "value" +tracks/0/path = NodePath(".:can_shoot") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 3.7 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/1/type = "method" +tracks/1/path = NodePath(".") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 1.6, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"values": [ { +"args": [ true ], +"method": "_play_charge_sound" +}, { +"args": [ true ], +"method": "_play_laser_sound" +}, { +"args": [ false ], +"method": "_play_laser_sound" +} ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/Head/Beam:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 1.5, 1.6, 3.3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1e-05 ), Vector2( 1, 1e-05 ), Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1, 1e-05 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/Head/InternalBeam:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 1.3, 1.5, 3.3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 1 ), Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1, 1e-05 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/Head/Beam/Hitbox/BeamShape:disabled") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 1.6, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ true, false, true ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/Head:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 1.3, 1.6, 3.3, 3.4, 3.7 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 15.0, 15.0, -15.0, -15.0, 0.0 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/Head/BeamChargeParticles:emitting") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 1.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -25.1199, -25.1199 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 51.0254, 51.0254 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -26.8344, -26.8344 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -25.1199, -25.1199 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 51.0254, 51.0254 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -26.8344, -26.8344 ] +} + +[sub_resource type="Animation" id=5] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath(".:can_shoot") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Axle/Head/Beam:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1e-05 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/Head/InternalBeam:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 1 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/Head/Beam/Hitbox/BeamShape:disabled") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/Head:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/Head/Beam:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/Head/BeamChargeParticles:emitting") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Axle:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 66, 78 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Axle/Head/Intelli:visible") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/16/type = "value" +tracks/16/path = NodePath(".:make_explosions") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Axle:visible") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hitbox:monitoring") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hitbox:monitorable") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} + +[sub_resource type="Animation" id=15] +resource_name = "die" +length = 3.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Axle:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ), Vector2( 67, 78 ), Vector2( 65, 78 ) ] +} +tracks/1/type = "method" +tracks/1/path = NodePath(".") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "_spawn_explosions" +} ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/Head/Intelli:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:can_shoot") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/4/type = "animation" +tracks/4/path = NodePath("BigExplosion/ExplosionAnimation") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"clips": PoolStringArray( "explode" ), +"times": PoolRealArray( 2 ) +} +tracks/5/type = "value" +tracks/5/path = NodePath(".:make_explosions") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle:visible") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 2.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hitbox:monitoring") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 2.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hitbox:monitorable") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 2.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + +[sub_resource type="Animation" id=14] +resource_name = "stomping" +length = 5.0 +loop = true +tracks/0/type = "bezier" +tracks/0/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"points": PoolRealArray( -25.1199, -0.25, 0, 0, -2.10696, -33.4027, -0.7, 0.0638618, 0.25, 0, -33.4027, -0.25, 0, 0.25, 0, -25.1199, 0, -0.968742, 0, -2.10696 ), +"times": PoolRealArray( 0, 1.2, 1.5, 1.8 ) +} +tracks/1/type = "bezier" +tracks/1/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"points": PoolRealArray( 51.0254, -0.25, 0, 0, 6.18464, 84.1092, -0.5, 0.233734, 0.25, 0, 84.1092, -0.25, 0, 0.25, 0, 51.0254, 0, 5.17889, 0, 6.18464 ), +"times": PoolRealArray( 0, 1.2, 1.5, 1.8 ) +} +tracks/2/type = "bezier" +tracks/2/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"points": PoolRealArray( -26.8344, -0.25, 0, 0, -5.79777, -51.6355, -0.6, 0.20406, 0.25, 0, -51.6355, -0.25, 0, 0.25, 0, -26.8344, 0, -5.58774, 0, -5.79777 ), +"times": PoolRealArray( 0, 1.2, 1.5, 1.8 ) +} +tracks/3/type = "bezier" +tracks/3/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"points": PoolRealArray( -25.1199, -0.25, 0, 0.25, 0, -25.1199, -0.25, 0, 0, -2.10696, -33.4027, -0.7, 0.0638618, 0.25, 0, -33.4027, -0.25, 0, 0.25, 0, -25.1199, 0, -0.968742, 0, -2.10696 ), +"times": PoolRealArray( 0, 2.5, 3.7, 4, 4.3 ) +} +tracks/4/type = "bezier" +tracks/4/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"points": PoolRealArray( 51.0254, -0.25, 0, 0.25, 0, 51.0254, -0.25, 0, 0, 6.18464, 84.1092, -0.5, 0.233734, 0.25, 0, 84.1092, -0.25, 0, 0.25, 0, 51.0254, 0, 5.17889, 0, 6.18464 ), +"times": PoolRealArray( 0, 2.5, 3.7, 4, 4.3 ) +} +tracks/5/type = "bezier" +tracks/5/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"points": PoolRealArray( -26.8344, -0.25, 0, 0.25, 0, -26.8344, -0.25, 0, 0, -5.79777, -51.6355, -0.6, 0.20406, 0.25, 0, -51.6355, -0.25, 0, 0.25, 0, -26.8344, 0, -5.58774, 0, -5.79777 ), +"times": PoolRealArray( 0, 2.5, 3.7, 4, 4.3 ) +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[node name="2600" type="Node2D"] +script = ExtResource( 1 ) +can_shoot = true +explosion_rect = Rect2( 8, 16, 84, 64 ) + +[node name="Axle" type="Node2D" parent="."] +position = Vector2( 66, 78 ) + +[node name="JointBack" type="Sprite" parent="Axle"] +modulate = Color( 0.75, 0.75, 0.75, 1 ) +position = Vector2( -10, -4 ) +z_index = -1 +texture = ExtResource( 7 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="LegBack" type="Sprite" parent="Axle/JointBack"] +show_behind_parent = true +rotation = -0.468349 +texture = ExtResource( 9 ) +offset = Vector2( 0, 18 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 36 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="KneeBack" type="Node2D" parent="Axle/JointBack/LegBack"] +position = Vector2( 0, 36 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="ShinBack" type="Sprite" parent="Axle/JointBack/LegBack/KneeBack"] +rotation = 0.890561 +texture = ExtResource( 9 ) +offset = Vector2( 0, 24 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 48 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="FootBack" type="Sprite" parent="Axle/JointBack/LegBack/KneeBack/ShinBack"] +position = Vector2( 0.00983047, 47.8521 ) +rotation = -0.438425 +texture = ExtResource( 12 ) +offset = Vector2( -11.6527, 2.61113 ) +script = ExtResource( 10 ) +__meta__ = { +"_edit_bone_": true +} +rotation_lock = 0.0 + +[node name="Endpoint" type="Position2D" parent="Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack"] +position = Vector2( -17, 0 ) +__meta__ = { +"_edit_bone_": true, +"_gizmo_extents_": 4.0 +} + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack"] +position = Vector2( -8.99999, 5 ) +remote_path = NodePath("../../../../../../../Hitbox/FootShapeBack") + +[node name="KneeBack" type="Sprite" parent="Axle/JointBack/LegBack/KneeBack"] +texture = ExtResource( 8 ) +hframes = 8 +script = ExtResource( 10 ) +fps = 4.0 +rotation_lock = 0.0 + +[node name="Head" type="Sprite" parent="Axle"] +unique_name_in_owner = true +position = Vector2( 0, -4 ) +texture = ExtResource( 6 ) +offset = Vector2( -13, -25 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="End" type="Position2D" parent="Axle/Head"] +position = Vector2( -20, -28 ) +__meta__ = { +"_edit_bone_": true, +"_gizmo_extents_": 4.0 +} + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Axle/Head"] +position = Vector2( -18, -10 ) +remote_path = NodePath("../../../Hitbox/HeadShape") + +[node name="CannonBG" type="ColorRect" parent="Axle/Head"] +show_behind_parent = true +margin_left = -64.0 +margin_top = -18.0 +margin_right = -32.0 +margin_bottom = -2.0 +color = Color( 0.266667, 0.266667, 0.305882, 1 ) + +[node name="Tailpipes" type="Sprite" parent="Axle/Head"] +show_behind_parent = true +material = SubResource( 11 ) +position = Vector2( 21, -36 ) +texture = ExtResource( 2 ) + +[node name="SmokeParticles" type="CPUParticles2D" parent="Axle/Head/Tailpipes"] +position = Vector2( 10, -10 ) +amount = 12 +texture = ExtResource( 16 ) +direction = Vector2( 1.25, -1 ) +spread = 0.0 +gravity = Vector2( 0, -30 ) +initial_velocity = 20.0 +initial_velocity_random = 1.0 +angular_velocity = 180.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 12 ) +color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) + +[node name="SmokeParticles2" type="CPUParticles2D" parent="Axle/Head/Tailpipes"] +position = Vector2( 8, 0 ) +amount = 12 +texture = ExtResource( 16 ) +direction = Vector2( 1.25, -1 ) +spread = 0.0 +gravity = Vector2( 0, -30 ) +initial_velocity = 20.0 +initial_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 12 ) +color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) + +[node name="SmokeParticles3" type="CPUParticles2D" parent="Axle/Head/Tailpipes"] +position = Vector2( 5, -9 ) +amount = 12 +texture = ExtResource( 16 ) +direction = Vector2( 1.25, -1 ) +spread = 0.0 +gravity = Vector2( 0, -30 ) +initial_velocity = 20.0 +initial_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 12 ) +color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) + +[node name="Intelli" type="Sprite" parent="Axle/Head"] +show_behind_parent = true +position = Vector2( -37, -32 ) +texture = ExtResource( 5 ) +flip_h = true + +[node name="IntelliHeadPos" type="Position2D" parent="Axle/Head/Intelli"] +unique_name_in_owner = true +position = Vector2( 0, -4 ) + +[node name="Beam" type="Sprite" parent="Axle/Head"] +show_behind_parent = true +material = SubResource( 10 ) +position = Vector2( -58, -10 ) +scale = Vector2( 1, 1e-05 ) +texture = ExtResource( 4 ) +offset = Vector2( -128, 0 ) +region_enabled = true +region_rect = Rect2( 0, 0, 256, 16 ) + +[node name="Hitbox" type="Area2D" parent="Axle/Head/Beam" groups=["blocks arrow", "enemy_hitbox"]] + +[node name="BeamShape" type="CollisionShape2D" parent="Axle/Head/Beam/Hitbox"] +position = Vector2( -128, 0 ) +shape = SubResource( 6 ) +disabled = true + +[node name="InternalBeam" type="Sprite" parent="Axle/Head"] +show_behind_parent = true +material = SubResource( 10 ) +position = Vector2( -33, -10 ) +scale = Vector2( 1e-05, 1 ) +texture = ExtResource( 4 ) +offset = Vector2( -12, 0 ) +region_enabled = true +region_rect = Rect2( 0, 0, 24, 16 ) + +[node name="BeamChargeParticles" type="CPUParticles2D" parent="Axle/Head"] +show_behind_parent = true +material = SubResource( 10 ) +position = Vector2( -62, -10 ) +scale = Vector2( 1, 0.987022 ) +emitting = false +amount = 12 +lifetime = 1.5 +speed_scale = 3.0 +texture = ExtResource( 15 ) +emission_shape = 3 +emission_points = PoolVector2Array( -32, 0, -28, -12, -28, 12, -24, -16, -24, 16, -30, -8, -30, 8, -32, -4, -32, 4 ) +emission_colors = PoolColorArray( ) +gravity = Vector2( 0, 0 ) +radial_accel = -32.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 0.5 +scale_amount_curve = SubResource( 13 ) + +[node name="GlassBreakParticles" type="CPUParticles2D" parent="Axle/Head"] +unique_name_in_owner = true +position = Vector2( -35, -39 ) +emitting = false +amount = 24 +lifetime = 3.0 +one_shot = true +explosiveness = 0.95 +randomness = 0.5 +lifetime_randomness = 0.5 +texture = ExtResource( 19 ) +emission_shape = 2 +emission_rect_extents = Vector2( 16, 12 ) +direction = Vector2( 0, -1 ) +spread = 90.0 +gravity = Vector2( 0, 80 ) +initial_velocity = 80.0 +initial_velocity_random = 0.25 +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.25 +scale_amount_random = 0.5 +scale_amount_curve = SubResource( 21 ) + +[node name="JointFront" type="Sprite" parent="Axle"] +position = Vector2( 11, -4 ) +texture = ExtResource( 7 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="LegFront" type="Sprite" parent="Axle/JointFront"] +show_behind_parent = true +rotation = -0.468349 +texture = ExtResource( 9 ) +offset = Vector2( 0, 18 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 36 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="ShinFront" type="Sprite" parent="Axle/JointFront/LegFront"] +material = SubResource( 8 ) +position = Vector2( 3.8147e-06, 36 ) +rotation = 0.890561 +texture = ExtResource( 9 ) +offset = Vector2( 0, 24 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 48 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="FootFront" type="Sprite" parent="Axle/JointFront/LegFront/ShinFront"] +position = Vector2( 0.00983047, 47.8521 ) +rotation = -0.438425 +texture = ExtResource( 12 ) +offset = Vector2( -11.6527, 2.61113 ) +script = ExtResource( 10 ) +__meta__ = { +"_edit_bone_": true +} +rotation_lock = 0.0 + +[node name="Endpoint" type="Position2D" parent="Axle/JointFront/LegFront/ShinFront/FootFront"] +position = Vector2( -17, 0 ) +__meta__ = { +"_edit_bone_": true, +"_gizmo_extents_": 4.0 +} + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Axle/JointFront/LegFront/ShinFront/FootFront"] +position = Vector2( -8.99999, 5 ) +remote_path = NodePath("../../../../../../Hitbox/FootShapeFront") + +[node name="KneeFront" type="Sprite" parent="Axle/JointFront/LegFront"] +position = Vector2( 3.8147e-06, 36 ) +texture = ExtResource( 8 ) +hframes = 8 +script = ExtResource( 10 ) +fps = 4.0 +rotation_lock = 0.0 + +[node name="BulletPositions" type="Node2D" parent="."] +unique_name_in_owner = true +position = Vector2( -153, -24 ) + +[node name="Position1" type="Position2D" parent="BulletPositions"] +position = Vector2( 152, 80 ) + +[node name="Position2" type="Position2D" parent="BulletPositions"] +position = Vector2( 152, 88 ) +rotation = -0.436332 + +[node name="Position3" type="Position2D" parent="BulletPositions"] +position = Vector2( 152, 96 ) +rotation = -0.872665 + +[node name="ShootTimer" type="Timer" parent="."] +unique_name_in_owner = true +autostart = true + +[node name="WeakSpot" type="Area2D" parent="." groups=["boss_weakspot", "enemy_hitbox"]] +position = Vector2( 1, 0 ) + +[node name="GlassShape" type="CollisionShape2D" parent="WeakSpot"] +unique_name_in_owner = true +position = Vector2( 26.5, 32.5 ) +shape = SubResource( 1 ) + +[node name="IntelliShape" type="CollisionShape2D" parent="WeakSpot"] +position = Vector2( 27.5, 37.5 ) +shape = SubResource( 19 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["blocks_arrow", "enemy_hitbox"]] +position = Vector2( 1, 0 ) + +[node name="HeadShape" type="CollisionPolygon2D" parent="Hitbox"] +position = Vector2( 47, 64 ) +polygon = PoolVector2Array( -1, -48, 25, -48, 37, -36, 47, 8, 39, 17, -42, 17, -47, 6, -47, -6, -42, -17, -1, -17 ) + +[node name="FootShapeFront" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 63.7333, 154.923 ) +rotation = -0.0162131 +scale = Vector2( 1, 1 ) +shape = SubResource( 3 ) + +[node name="FootShapeBack" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 42.7333, 154.923 ) +rotation = -0.0162131 +scale = Vector2( 1, 1 ) +shape = SubResource( 3 ) +disabled = true + +[node name="BigExplosion" type="CanvasLayer" parent="."] +layer = 101 + +[node name="ExplosionRect" type="TextureRect" parent="BigExplosion"] +material = SubResource( 20 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 18 ) + +[node name="ExplosionAnimation" type="AnimationPlayer" parent="BigExplosion"] +anims/RESET = SubResource( 17 ) +anims/explode = SubResource( 18 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "stomping" +playback_default_blend_time = 0.5 +anims/Beam = SubResource( 4 ) +anims/RESET = SubResource( 5 ) +anims/die = SubResource( 15 ) +anims/stomping = SubResource( 14 ) + +[connection signal="area_entered" from="Axle/Head/Beam/Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="timeout" from="ShootTimer" to="." method="_on_ShootTimer_timeout"] +[connection signal="area_entered" from="WeakSpot" to="." method="_on_WeakSpot_area_entered"] +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_finished"] diff --git a/objects/enemy/boss/2600_die.tscn b/objects/enemy/boss/2600_die.tscn new file mode 100644 index 0000000..ebb7cb5 --- /dev/null +++ b/objects/enemy/boss/2600_die.tscn @@ -0,0 +1,181 @@ +[gd_scene load_steps=11 format=2] + +[ext_resource path="res://scripts/launch_rigid.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/boss/stg_2600/head_broken.png" type="Texture" id=2] +[ext_resource path="res://graphics/enemy/boss/stg_2600/bolt_large.png" type="Texture" id=3] +[ext_resource path="res://graphics/enemy/boss/stg_2600/leg.png" type="Texture" id=6] +[ext_resource path="res://graphics/enemy/boss/stg_2600/foot.png" type="Texture" id=7] +[ext_resource path="res://graphics/enemy/boss/stg_2600/tailpipes.png" type="Texture" id=8] +[ext_resource path="res://graphics/enemy/boss/stg_2600/bolt_medium.png" type="Texture" id=10] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 5.98485, 17.9739 ) + +[sub_resource type="RectangleShape2D" id=2] +extents = Vector2( 5.78793, 21.068 ) + +[sub_resource type="CircleShape2D" id=3] +radius = 12.0 + +[node name="2600Die" type="Node2D"] + +[node name="LegR" type="RigidBody2D" parent="."] +position = Vector2( 61, 85 ) +rotation = -0.436332 +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="LegR"] +texture = ExtResource( 6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 36 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="LegR"] +position = Vector2( 0.221909, 0.014267 ) +shape = SubResource( 1 ) + +[node name="LargeBoltR" type="RigidBody2D" parent="."] +position = Vector2( 56, 74 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="LargeBoltR"] +position = Vector2( -0.400002, 0.400002 ) +texture = ExtResource( 3 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="LargeBoltR"] +position = Vector2( -77.4, -73.6 ) +polygon = PoolVector2Array( 86, 60, 68, 60, 61, 73, 68, 88, 86, 88, 93, 75 ) + +[node name="Leg2R" type="RigidBody2D" parent="."] +position = Vector2( 61, 128 ) +rotation = 0.418879 +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="Leg2R"] +texture = ExtResource( 6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 42 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Leg2R"] +position = Vector2( 0, 0.0500336 ) +shape = SubResource( 2 ) + +[node name="SmallBoltR" type="RigidBody2D" parent="."] +position = Vector2( 71, 107 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="SmallBoltR"] +texture = ExtResource( 10 ) +region_enabled = true +region_rect = Rect2( 0, 0, 24, 24 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="SmallBoltR"] +shape = SubResource( 3 ) + +[node name="Head" type="RigidBody2D" parent="."] +position = Vector2( 46, 46 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Tailpipe" type="Sprite" parent="Head"] +position = Vector2( 41, -8 ) +texture = ExtResource( 8 ) + +[node name="Head" type="Sprite" parent="Head"] +position = Vector2( 7, 3 ) +texture = ExtResource( 2 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="Head"] +polygon = PoolVector2Array( 2, -29, -17, -29, -26, -25, -32, -19, -34, -16, -35, -14, -37, -10, -38, -7, -39, -2, -39, 1, -40, 2, -42, 4, -43, 8, -44, 12, -44, 24, -43, 29, -41, 33, -40, 35, 40, 35, 49, 26, 49, 22, 48, 18, 46, 10, 44, 2, 43, -2, 41, -10, 40, -14, 39, -18, 27, -30, 2, -30 ) + +[node name="LegL" type="RigidBody2D" parent="."] +position = Vector2( 82, 85 ) +rotation = -0.436332 +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="LegL"] +texture = ExtResource( 6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 36 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="LegL"] +position = Vector2( 0.221909, 0.014267 ) +shape = SubResource( 1 ) + +[node name="LargeBoltL" type="RigidBody2D" parent="."] +position = Vector2( 77, 74 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="LargeBoltL"] +position = Vector2( -0.400002, 0.400002 ) +texture = ExtResource( 3 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="LargeBoltL"] +position = Vector2( -77.4, -73.6 ) +polygon = PoolVector2Array( 86, 60, 68, 60, 61, 73, 68, 88, 86, 88, 93, 75 ) + +[node name="Leg2L" type="RigidBody2D" parent="."] +position = Vector2( 81, 130 ) +rotation = 0.418879 +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="Leg2L"] +texture = ExtResource( 6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 42 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Leg2L"] +position = Vector2( 0, 0.0500336 ) +shape = SubResource( 2 ) + +[node name="SmallBoltL" type="RigidBody2D" parent="."] +position = Vector2( 92, 107 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="SmallBoltL"] +texture = ExtResource( 10 ) +region_enabled = true +region_rect = Rect2( 0, 0, 24, 24 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="SmallBoltL"] +shape = SubResource( 3 ) + +[node name="FootR" type="RigidBody2D" parent="."] +position = Vector2( 39, 152 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="FootR"] +texture = ExtResource( 7 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="FootR"] +polygon = PoolVector2Array( -2, -10, -20, 0, -20, 16, 26, 16, 26, -10, 21, -10, 18, -7, 16, -8, 14, -9, 8, -9, 5, -7, 3, -10 ) + +[node name="FootL" type="RigidBody2D" parent="."] +position = Vector2( 60, 152 ) +script = ExtResource( 1 ) +impulse_min = 0 +impulse_max = 0 + +[node name="Sprite" type="Sprite" parent="FootL"] +texture = ExtResource( 7 ) + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="FootL"] +polygon = PoolVector2Array( -2, -10, -20, 0, -20, 16, 26, 16, 26, -10, 21, -10, 18, -7, 16, -8, 14, -9, 8, -9, 5, -7, 3, -10 ) diff --git a/objects/enemy/boss/2600_explosion.tscn b/objects/enemy/boss/2600_explosion.tscn new file mode 100644 index 0000000..1ab0b80 --- /dev/null +++ b/objects/enemy/boss/2600_explosion.tscn @@ -0,0 +1,92 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://shaders/fade.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/fade_patterns/stg_explosion.png" type="Texture" id=2] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color = Color( 1, 1, 1, 1 ) +shader_param/smooth_mode = true +shader_param/reverse = true +shader_param/opacity = 0.0 + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ExplosionRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExplosionRect:material:shader_param/reverse") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ExplosionRect:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} + +[sub_resource type="Animation" id=3] +resource_name = "explode" +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("ExplosionRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 1.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExplosionRect:modulate") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0.833333 ), Color( 1, 1, 1, 0.666667 ), Color( 1, 1, 1, 0.5 ), Color( 1, 1, 1, 0.333333 ), Color( 1, 1, 1, 0.166667 ), Color( 1, 1, 1, 0 ) ] +} + +[node name="2600Explosion" type="CanvasLayer"] +layer = 101 + +[node name="ExplosionRect" type="TextureRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 2 ) + +[node name="ExplosionAnimation" type="AnimationPlayer" parent="."] +autoplay = "explode" +anims/RESET = SubResource( 2 ) +anims/explode = SubResource( 3 ) diff --git a/objects/enemy/boss/2600_small_explosion.gd b/objects/enemy/boss/2600_small_explosion.gd new file mode 100644 index 0000000..ba072e2 --- /dev/null +++ b/objects/enemy/boss/2600_small_explosion.gd @@ -0,0 +1,16 @@ +extends Node2D + +var quiet = false + +func _ready() -> void: + if quiet: + Audio.play_sound(Audio.a_explosion,Audio.ac_small_explosion) + else: + Audio.play_sound(Audio.a_explosion,Audio.ac_die) + var sprite: AnimatedSprite = get_child(randi() % get_child_count()) + sprite.visible = true + sprite.play() + + +func _on_animation_finished() -> void: + queue_free() diff --git a/objects/enemy/boss/2600_small_explosion.tscn b/objects/enemy/boss/2600_small_explosion.tscn new file mode 100644 index 0000000..5e3af58 --- /dev/null +++ b/objects/enemy/boss/2600_small_explosion.tscn @@ -0,0 +1,86 @@ +[gd_scene load_steps=18 format=2] + +[ext_resource path="res://objects/enemy/boss/2600_small_explosion.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/explosion_small.png" type="Texture" id=2] +[ext_resource path="res://graphics/enemy/explosion.png" type="Texture" id=3] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 2 ) +region = Rect2( 16, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 2 ) +region = Rect2( 32, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 2 ) +region = Rect2( 48, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=5] +atlas = ExtResource( 2 ) +region = Rect2( 64, 0, 16, 16 ) + +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 2 ) +region = Rect2( 80, 0, 16, 16 ) + +[sub_resource type="SpriteFrames" id=14] +animations = [ { +"frames": [ SubResource( 1 ), SubResource( 2 ), SubResource( 3 ), SubResource( 4 ), SubResource( 5 ), SubResource( 6 ) ], +"loop": false, +"name": "explode", +"speed": 20.0 +} ] + +[sub_resource type="AtlasTexture" id=8] +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=9] +atlas = ExtResource( 3 ) +region = Rect2( 64, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=10] +atlas = ExtResource( 3 ) +region = Rect2( 128, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=11] +atlas = ExtResource( 3 ) +region = Rect2( 192, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=12] +atlas = ExtResource( 3 ) +region = Rect2( 256, 0, 64, 64 ) + +[sub_resource type="AtlasTexture" id=13] +atlas = ExtResource( 3 ) +region = Rect2( 320, 0, 64, 64 ) + +[sub_resource type="SpriteFrames" id=15] +animations = [ { +"frames": [ SubResource( 8 ), SubResource( 9 ), SubResource( 10 ), SubResource( 11 ), SubResource( 12 ), SubResource( 13 ) ], +"loop": false, +"name": "explode", +"speed": 10.0 +} ] + +[node name="2600Explosion" type="Node2D"] +z_index = 50 +script = ExtResource( 1 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +visible = false +frames = SubResource( 14 ) +animation = "explode" + +[node name="AnimatedSprite2" type="AnimatedSprite" parent="."] +visible = false +frames = SubResource( 15 ) +animation = "explode" + +[connection signal="animation_finished" from="AnimatedSprite" to="." method="_on_animation_finished"] +[connection signal="animation_finished" from="AnimatedSprite2" to="." method="_on_animation_finished"] diff --git a/objects/enemy/boss/collapse_blocks.tscn b/objects/enemy/boss/collapse_blocks.tscn new file mode 100644 index 0000000..78edf94 --- /dev/null +++ b/objects/enemy/boss/collapse_blocks.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/environment/collapse_block/collapse_block.tscn" type="PackedScene" id=1] +[ext_resource path="res://audio/sounds/collapse_block_fall.ogg" type="AudioStream" id=2] + +[sub_resource type="PhysicsMaterial" id=2] +bounce = 0.07 + +[node name="CollapseBlocks" type="Node2D"] + +[node name="CollapseBlock" parent="." instance=ExtResource( 1 )] +position = Vector2( 16, 72 ) +physics_material_override = SubResource( 2 ) + +[node name="CollapseBlock2" parent="." instance=ExtResource( 1 )] +position = Vector2( 24, 72 ) +physics_material_override = SubResource( 2 ) + +[node name="CollapseBlock3" parent="." instance=ExtResource( 1 )] +position = Vector2( 32, 72 ) +physics_material_override = SubResource( 2 ) + +[node name="CollapseBlock4" parent="." instance=ExtResource( 1 )] +position = Vector2( 72, 72 ) +physics_material_override = SubResource( 2 ) + +[node name="CollapseBlock5" parent="." instance=ExtResource( 1 )] +position = Vector2( 64, 72 ) +physics_material_override = SubResource( 2 ) + +[node name="CollapseBlock9" parent="." instance=ExtResource( 1 )] +position = Vector2( 56, 72 ) +physics_material_override = SubResource( 2 ) + +[node name="CollapseBlock7" parent="." instance=ExtResource( 1 )] +position = Vector2( 64, 104 ) +physics_material_override = SubResource( 2 ) + +[node name="CollapseBlock8" parent="." instance=ExtResource( 1 )] +position = Vector2( 72, 104 ) +physics_material_override = SubResource( 2 ) + +[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 2 ) +volume_db = -8.0 +autoplay = true diff --git a/objects/enemy/boss/fami_transform.material b/objects/enemy/boss/fami_transform.material new file mode 100644 index 0000000..89da501 Binary files /dev/null and b/objects/enemy/boss/fami_transform.material differ diff --git a/objects/enemy/boss/famira.gd b/objects/enemy/boss/famira.gd new file mode 100644 index 0000000..7e00812 --- /dev/null +++ b/objects/enemy/boss/famira.gd @@ -0,0 +1,153 @@ +extends Node2D + + +signal died() +signal health_changed(amount) + + +const DeathParticles = preload("res://objects/enemy/death_particles_famira.tscn") + + +export var push_speed: float = 30.0 +export var chase_speed: float = 65.0 +export var breath_dps: float = 14.25 +export var breath_knockback: float = 16.0 +export var punch_damage: float = 5.25 +export var punch_knockback: float = 40.0 +export var hurting: bool = false +export var hp: float = 100.0 +export var sg2083_beam_dps: float = 10.0 +export var sg2083_path: NodePath +export var defense: float = 0.45 +export var credits: bool = false + + +onready var animation_player: AnimationPlayer = $"%AnimationPlayer" +onready var state_chart: StateChart = $StateChart +onready var in_range_cast: RayCast2D = $InRangeCast +onready var out_range_cast: RayCast2D = $OutRangeCast +onready var shoot_range_cast: RayCast2D = $ShootRangeCast +onready var grumble = $Grumble + +func _ready(): + if credits: animation_player.play("roar") + +func _physics_process(delta: float) -> void: + if !credits: + var sg2083 := get_node(sg2083_path) + if sg2083 and sg2083.state == 0: + state_chart.set_guard_property("player_dead", true) + state_chart.send_event("player_dead") + else: + state_chart.set_guard_property("player_dead", false) + if not out_range_cast.is_colliding(): + state_chart.send_event("out_of_range") + elif in_range_cast.is_colliding(): + state_chart.send_event("in_range") + if fmod(Game.time, 15.0) == 0.0: + Audio.play_sound(Audio.a_grumble,Audio.ac_boss) + + +func start_push() -> void: + state_chart.send_event("start_push") + + +func stop_push() -> void: + state_chart.send_event("stop_push") + + +func hurt(amount: float) -> void: + if hp <= 0.0: + return + hp -= amount * defense + hp = max(hp, 0.0) + emit_signal("health_changed", hp) + if hp <= 0.0: + state_chart.send_event("die") + emit_signal("died") + + +func _attack() -> void: + var sg2083 := get_node(sg2083_path) + if sg2083.has_method("hurt"): + var r = RandomNumberGenerator.new() + r.randomize() + var snd = r.randi_range(0,2) + match snd: + 0: + Audio.play_sound(Audio.a_mech_hurt_1,Audio.ac_die) + 1: + Audio.play_sound(Audio.a_mech_hurt_2,Audio.ac_die) + 2: + Audio.play_sound(Audio.a_mech_hurt_3,Audio.ac_die) + sg2083.hurt(punch_damage) + sg2083.knock_back(punch_knockback) + + +func _on_Roar_state_entered() -> void: + + animation_player.play("roar", 0.25) + + +func _roar() -> void: + if credits == false: + Audio.play_sound(Audio.a_famira, Audio.ac_boss) + + +func _on_Chasing_state_entered() -> void: + animation_player.play("chasing", 0.25) + + +func _on_Punching_state_entered() -> void: + animation_player.play("punching", 0.25) + + +func _on_PunchCooldown_state_entered() -> void: + animation_player.play("RESET", 0.5) + + +func _on_Shooting_state_entered() -> void: + animation_player.play("shooting") + + +func _on_PushedBack_state_entered() -> void: + animation_player.play("pushed", 0.25) + + +func _on_Dying_state_entered() -> void: + Game.save_boss() + animation_player.play("die", 0.25) + Audio.play_sound(Audio.a_famira_die, Audio.ac_boss) + var tween = $Tween + tween.interpolate_property(Audio.ac_music, "volume_db", + Audio.ac_music.volume_db, -99, 16, + Tween.TRANS_LINEAR, Tween.EASE_IN_OUT) + tween.start() + + + +func _on_Chasing_state_physics_processing(delta) -> void: + position.x -= chase_speed * delta + + +func _on_PushedBack_state_physics_processing(delta) -> void: + hurt(sg2083_beam_dps * delta) + position.x += push_speed * delta + + +func _on_Shooting_state_physics_processing(delta) -> void: + if hurting and shoot_range_cast.is_colliding(): + var sg2083 := get_node(sg2083_path) + if sg2083.has_method("hurt"): + var distance := shoot_range_cast.to_local(shoot_range_cast.get_collision_point()).x + var weight := inverse_lerp(shoot_range_cast.cast_to.x, 0.0, distance) + if !Audio.ac_climb.is_playing() && sg2083.state != sg2083.State.DUCK: + Audio.play_sound(Audio.a_critical_heat,Audio.ac_climb) + sg2083.hurt(breath_dps * weight * delta, true) + sg2083.knock_back(breath_knockback * weight * delta, true) + + +func _on_Hitbox_area_entered(area: Area2D) -> void: + if area.is_in_group("hurt_famira"): + hurt(area.damage) + area.queue_free() diff --git a/objects/enemy/boss/famira.tscn b/objects/enemy/boss/famira.tscn new file mode 100644 index 0000000..2a97a65 --- /dev/null +++ b/objects/enemy/boss/famira.tscn @@ -0,0 +1,4833 @@ +[gd_scene load_steps=65 format=2] + +[ext_resource path="res://objects/enemy/boss/famira.gd" type="Script" id=1] +[ext_resource path="res://shaders/scale3x.gdshader" type="Shader" id=2] +[ext_resource path="res://addons/godot_state_charts/state_chart.gd" type="Script" id=3] +[ext_resource path="res://addons/godot_state_charts/compound_state.gd" type="Script" id=4] +[ext_resource path="res://addons/godot_state_charts/atomic_state.gd" type="Script" id=5] +[ext_resource path="res://addons/godot_state_charts/transition.gd" type="Script" id=6] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/eye.png" type="Texture" id=7] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/headlower.png" type="Texture" id=8] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/headupper.png" type="Texture" id=9] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/brain2.png" type="Texture" id=10] +[ext_resource path="res://graphics/enemy/boss/scrump_gore/tentacle4.png" type="Texture" id=11] +[ext_resource path="res://scripts/ball_snake.gd" type="Script" id=12] +[ext_resource path="res://graphics/enemy/antlion_body.png" type="Texture" id=13] +[ext_resource path="res://graphics/enemy/tentacle.png" type="Texture" id=14] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=15] +[ext_resource path="res://graphics/enemy/antlion_body_border.png" type="Texture" id=16] +[ext_resource path="res://objects/enemy/boss/fami_transform.material" type="Material" id=17] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=18] +[ext_resource path="res://graphics/collectibles/shard.png" type="Texture" id=19] +[ext_resource path="res://graphics/enemy/boss/famira_dissolve.png" type="Texture" id=20] +[ext_resource path="res://graphics/enemy/boss/fami_parts/leg.png" type="Texture" id=21] +[ext_resource path="res://graphics/enemy/boss/fami_parts/body.png" type="Texture" id=22] +[ext_resource path="res://graphics/enemy/boss/fami_parts/head_back.png" type="Texture" id=23] +[ext_resource path="res://graphics/enemy/boss/fami_parts/head_lower.png" type="Texture" id=24] +[ext_resource path="res://graphics/enemy/boss/fami_parts/head_upper.png" type="Texture" id=25] +[ext_resource path="res://graphics/enemy/boss/fami_parts/mouth_tendril.png" type="Texture" id=26] +[ext_resource path="res://audio/sounds/fami_fire.ogg" type="AudioStream" id=27] +[ext_resource path="res://graphics/enemy/boss/famira_fire.png" type="Texture" id=28] +[ext_resource path="res://graphics/enemy/boss/fami_parts/leg_lower.png" type="Texture" id=29] +[ext_resource path="res://graphics/enemy/boss/fami_parts/hand.png" type="Texture" id=30] +[ext_resource path="res://graphics/enemy/boss/fami_parts/arm_segment.png" type="Texture" id=31] +[ext_resource path="res://graphics/enemy/boss/fami_parts/foot.png" type="Texture" id=32] +[ext_resource path="res://graphics/enemy/boss/fami_parts/arm_segment_border.png" type="Texture" id=33] +[ext_resource path="res://graphics/enemy/boss/fami_parts/head_upper_glow_mask.png" type="Texture" id=34] +[ext_resource path="res://graphics/enemy/boss/fami_parts/body_glow_mask.png" type="Texture" id=35] +[ext_resource path="res://graphics/enemy/boss/fami_parts/head_back_glow_mask.png" type="Texture" id=36] +[ext_resource path="res://shaders/elecricity_no_blood.tres" type="Shader" id=37] + +[sub_resource type="RectangleShape2D" id=11] +extents = Vector2( 28, 64 ) + +[sub_resource type="ShaderMaterial" id=18] +shader = ExtResource( 18 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="Curve" id=19] +_data = [ Vector2( 0, 0 ), 0.0, 12.4999, 0, 0, Vector2( 0.21317, 1 ), 2.06228, 0.0, 0, 0, Vector2( 0.722098, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), -7.91544, 0.0, 0, 0 ] + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -119.87 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:initial_velocity") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 230.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Body/Neck/BreathParticles:lifetime") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 2.0 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("..:hurting") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip:scale") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath(".:material:shader_param/background_color") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath(".:material:shader_param/arc_color") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ) ] +} +tracks/20/type = "value" +tracks/20/path = NodePath(".:scale") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("../DissolveMask:position") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -63, -322 ) ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("../ShardParticles:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 4, -165 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("../ShardParticles:emitting") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("../DissolveParticles:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 4, -8 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("../DissolveParticles:emitting") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("../DissolveParticles:emission_rect_extents") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 24, 0 ) ] +} + +[sub_resource type="Animation" id=4] +resource_name = "chasing" +length = 0.4 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -26.9991, 26.9994 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( -35.9992, -7.99675 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 2 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -0.657538, 20.1267, -0.657538, -31.2638 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 2 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -0.657538, -17.623, -0.657538, 23.7159 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -119.87, -80.0395 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=12] +resource_name = "die" +length = 11.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -41.0008, -18.9997 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 37.9987, -18.9981 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -109.576 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 28.215 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.5991, -9.59989 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -23.1788 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 38.5195 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 2 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 7, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ), Vector2( 4, 39 ), Vector2( 12, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("../DissolveMask:position") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -28, -300 ), Vector2( 58, -84 ) ] +} +tracks/14/type = "value" +tracks/14/path = NodePath(".:material:shader_param/arc_color") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 2, 8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ), Color( 0.345098, 0.74902, 0.878431, 1 ), Color( 0.345098, 0.74902, 0.878431, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath(".:material:shader_param/background_color") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 2, 8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ), Color( 0.396078, 1, 1, 1 ), Color( 0.396078, 1, 1, 1 ) ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("../ShardParticles:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -197 ), Vector2( 4, 19 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("../ShardParticles:emitting") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0.2, 7 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("../DissolveParticles:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -197 ), Vector2( 4, 19 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("../DissolveParticles:emitting") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 7.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("../DissolveParticles:emission_rect_extents") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 1.8, 2.2, 2.8, 3.2, 3.4, 4, 5.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 24, 0 ), Vector2( 24, 0 ), Vector2( 48, 0 ), Vector2( 48, 0 ), Vector2( 16, 0 ), Vector2( 64, 0 ), Vector2( 24, 0 ), Vector2( 16, 0 ) ] +} + +[sub_resource type="Animation" id=17] +resource_name = "grow" +length = 3.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -119.87 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:initial_velocity") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 230.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Body/Neck/BreathParticles:lifetime") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 2.0 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("..:hurting") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/16/type = "value" +tracks/16/path = NodePath(".:material:shader_param/background_color") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 2, 3 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 1 ), Color( 0.396078, 1, 1, 1 ), Color( 0.396078, 1, 1, 0 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath(".:material:shader_param/arc_color") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 2, 3 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 1 ), Color( 0.345098, 0.74902, 0.878431, 1 ), Color( 0.345098, 0.74902, 0.878431, 0 ) ] +} +tracks/18/type = "value" +tracks/18/path = NodePath(".:scale") +tracks/18/interp = 2 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 1e-05 ), Vector2( 1, 1 ) ] +} +tracks/19/type = "method" +tracks/19/path = NodePath("../StateChart") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 2.9 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "transformed" ], +"method": "send_event" +} ] +} + +[sub_resource type="Animation" id=5] +resource_name = "punching" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.3, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -12.999, -17.0009 ), Vector2( -65.0015, -0.996742 ), Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5, 0.7, 0.8, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( -31.9996, 22.0018 ), Vector2( -14.9986, -8.9978 ), Vector2( -72.9994, 19.0063 ), Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 55.2621, 47.7735, 55.2621, 47.7735, 55.2621, 47.7735, 55.2621, 47.7735, 55.2621, 47.7735, 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.2, 0.3, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -102.737, -102.737, -102.737, -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.5, 0.7, 0.8, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -119.87, -119.87, -73.1186, -96.9535, -119.87 ] +} +tracks/11/type = "method" +tracks/11/path = NodePath("..") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0.3, 0.8 ), +"transitions": PoolRealArray( 1, 1 ), +"values": [ { +"args": [ ], +"method": "_attack" +}, { +"args": [ ], +"method": "_attack" +} ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0.6 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=6] +resource_name = "pushed" +length = 0.2 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -11.0004, -12 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -16.001, -9.99852 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -104.392 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -37.6956 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 32.9738 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -21.0393, -8.75184 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -49.0541 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -49.6616 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 2 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 12, 53 ), Vector2( 4, 53 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0.2 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("..:hurting") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=3] +resource_name = "roar" +length = 1.5 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -41.0008, -18.9997 ), Vector2( -41.0008, -18.9997 ), Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( 37.9987, -18.9981 ), Vector2( 37.9987, -18.9981 ), Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -137.823, -109.576, -109.576, -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 55.2621, 28.215, 28.215, 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.8929, -8.09683 ), Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -102.737, -23.1788, -23.1788, -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -122.256, 38.5195, 38.5195, -122.256 ] +} +tracks/11/type = "method" +tracks/11/path = NodePath("../StateChart") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 1.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "roar_done" ], +"method": "send_event" +} ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0.6 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/14/type = "method" +tracks/14/path = NodePath("..") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "_roar" +} ] +} + +[sub_resource type="Animation" id=7] +resource_name = "shooting" +length = 3.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 89.3425, 112.803, 112.803, 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -51.8512, 24.5478 ), Vector2( -51.8512, 24.5478 ), Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( -11.3985, 19.1772 ), Vector2( -11.3985, 19.1772 ), Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -137.823, -139.456, -139.456, -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 55.2621, 22.2965, 22.2965, 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 2 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 45.9167, 45.9167, 45.9167, 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -0.657538 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 2 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ), Vector2( -25.8929, -8.09683 ), Vector2( -25.8929, -8.09683 ), Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -102.737, -109.655, -109.655, -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -119.87, -131.542, -131.542, -119.87 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.4, 2.7 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/13/type = "method" +tracks/13/path = NodePath("../StateChart") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 3 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "shoot_done" ], +"method": "send_event" +} ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("..:hurting") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.6, 2.8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) +shader_param/pixel_scale = 1.0 + +[sub_resource type="Curve" id=8] +_data = [ Vector2( 0, 0.5 ), 0.0, 0.890696, 0, 0, Vector2( 0.814474, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), -13.2988, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=9] +offsets = PoolRealArray( 0, 0.163743, 0.432749, 0.596491, 0.853801, 1 ) +colors = PoolColorArray( 0.859375, 1, 0.974457, 1, 0.425781, 0.650085, 1, 1, 0.858946, 0.258824, 0.909804, 1, 0.925781, 0, 0.520752, 1, 0, 0, 0, 1, 0, 0, 0, 1 ) + +[sub_resource type="Animation" id=20] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 22.2642 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 34.9602 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -119.87 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:initial_velocity") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 230.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Body/Neck/BreathParticles:lifetime") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 2.0 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("..:hurting") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip:scale") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath(".:material:shader_param/background_color") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath(".:material:shader_param/arc_color") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ) ] +} +tracks/20/type = "value" +tracks/20/path = NodePath(".:scale") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("../DissolveMask:position") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -63, -322 ) ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("../ShardParticles:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 4, -165 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("../ShardParticles:emitting") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("../DissolveParticles:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 4, -8 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("../DissolveParticles:emitting") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("../DissolveParticles:emission_rect_extents") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 24, 0 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -35.4461 ] +} +tracks/28/type = "value" +tracks/28/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/28/interp = 1 +tracks/28/loop_wrap = true +tracks/28/imported = false +tracks/28/enabled = true +tracks/28/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -40.649 ] +} +tracks/29/type = "value" +tracks/29/path = NodePath("Hip/LegBack/LegBackLower/FootBack/Sprite:rotation_degrees") +tracks/29/interp = 1 +tracks/29/loop_wrap = true +tracks/29/imported = false +tracks/29/enabled = true +tracks/29/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 1.7669 ] +} +tracks/30/type = "value" +tracks/30/path = NodePath("Hip/LegFront/LegFrontLower/FootBack/Sprite:rotation_degrees") +tracks/30/interp = 1 +tracks/30/loop_wrap = true +tracks/30/imported = false +tracks/30/enabled = true +tracks/30/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 7.19214 ] +} +tracks/31/type = "value" +tracks/31/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/31/interp = 1 +tracks/31/loop_wrap = true +tracks/31/imported = false +tracks/31/enabled = true +tracks/31/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 4.12537 ] +} +tracks/32/type = "value" +tracks/32/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/32/interp = 1 +tracks/32/loop_wrap = true +tracks/32/imported = false +tracks/32/enabled = true +tracks/32/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 6.06945 ] +} +tracks/33/type = "value" +tracks/33/path = NodePath("Hip/Body/Neck/NeckSprite/NeckGlow:modulate") +tracks/33/interp = 1 +tracks/33/loop_wrap = true +tracks/33/imported = false +tracks/33/enabled = true +tracks/33/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ) ] +} +tracks/34/type = "value" +tracks/34/path = NodePath("Hip/Body/BodySprite/BodyGlow:modulate") +tracks/34/interp = 1 +tracks/34/loop_wrap = true +tracks/34/imported = false +tracks/34/enabled = true +tracks/34/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ) ] +} +tracks/35/type = "value" +tracks/35/path = NodePath("Hip/Body/Neck/Headupper/HeadUpperSprite/HeadGlow:modulate") +tracks/35/interp = 1 +tracks/35/loop_wrap = true +tracks/35/imported = false +tracks/35/enabled = true +tracks/35/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ) ] +} + +[sub_resource type="Animation" id=21] +resource_name = "chasing" +length = 0.4 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -26.9991, 26.9994 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( -35.9992, -7.99675 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 2 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 32.3015, 44.3723, 41.3636, 17.8021 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 2 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 44.6147, 26.0416, 5.78129, 37.7545 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -119.87, -80.0395 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 8, 44 ), Vector2( 8, 38 ), Vector2( 8, 44 ), Vector2( 8, 38 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -63.8771, -45.6187, -53.8034, -71.6519 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -61.1199, -75.5622, -49.6529, -36.7481 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 21.9642, 21.9642, 1.92975, 11.947 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 17.7387, 17.7387, 45.0376, 31.3882 ] +} + +[sub_resource type="Animation" id=22] +resource_name = "die" +length = 8.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -41.0008, -18.9997 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 37.9987, -18.9981 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -109.576 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 28.215 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 32.3323 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.3821 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.5991, -9.59989 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -23.1788 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 38.5195 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 2 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.8, 6.9, 7, 7.1, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9, 8 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ), Vector2( -4, 45 ), Vector2( 4, 45 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("../DissolveMask:position") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -28, -300 ), Vector2( 58, -84 ) ] +} +tracks/14/type = "value" +tracks/14/path = NodePath(".:material:shader_param/arc_color") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 2, 8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 0 ), Color( 0.345098, 0.74902, 0.878431, 1 ), Color( 0.345098, 0.74902, 0.878431, 1 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath(".:material:shader_param/background_color") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 2, 8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 0 ), Color( 0.396078, 1, 1, 1 ), Color( 0.396078, 1, 1, 1 ) ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("../ShardParticles:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -197 ), Vector2( 4, 19 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("../ShardParticles:emitting") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0.2, 7 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("../DissolveParticles:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 8 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 4, -197 ), Vector2( 4, 19 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("../DissolveParticles:emitting") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0, 7.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("../DissolveParticles:emission_rect_extents") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 1.8, 2.2, 2.8, 3.2, 3.4, 4, 5.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 24, 0 ), Vector2( 24, 0 ), Vector2( 48, 0 ), Vector2( 48, 0 ), Vector2( 16, 0 ), Vector2( 64, 0 ), Vector2( 24, 0 ), Vector2( 16, 0 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -63.39 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -63.3081 ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 10.1577 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 23.868 ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Hip/Body/BodySprite/BodyGlow:visible") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Hip/Body/Neck/NeckSprite/NeckGlow:visible") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Hip/Body/Neck/Headupper/HeadUpperSprite/HeadGlow:visible") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=23] +resource_name = "grow" +length = 3.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 22.2642 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 34.9602 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -119.87 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:initial_velocity") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 230.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/Body/Neck/BreathParticles:lifetime") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 2.0 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("..:hurting") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/16/type = "value" +tracks/16/path = NodePath(".:material:shader_param/background_color") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 2, 3 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.396078, 1, 1, 1 ), Color( 0.396078, 1, 1, 1 ), Color( 0.396078, 1, 1, 0 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath(".:material:shader_param/arc_color") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 2, 3 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Color( 0.345098, 0.74902, 0.878431, 1 ), Color( 0.345098, 0.74902, 0.878431, 1 ), Color( 0.345098, 0.74902, 0.878431, 0 ) ] +} +tracks/18/type = "value" +tracks/18/path = NodePath(".:scale") +tracks/18/interp = 2 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 1e-05 ), Vector2( 1, 1 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -35.4461 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -40.649 ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 6.06945 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip:rotation_degrees") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 4.12537 ] +} + +[sub_resource type="Animation" id=24] +resource_name = "punching" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2, 0.3, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -12.999, -17.0009 ), Vector2( -65.0015, -0.996742 ), Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5, 0.7, 0.8, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( -31.9996, 22.0018 ), Vector2( -14.9986, -8.9978 ), Vector2( -72.9994, 19.0063 ), Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 55.2621, 47.7735, 55.2621, 47.7735, 55.2621, 47.7735, 55.2621, 47.7735, 55.2621, 47.7735, 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 22.2642 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 34.9602 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.2, 0.3, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -102.737, -102.737, -102.737, -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.5, 0.7, 0.8, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -119.87, -119.87, -73.1186, -96.9535, -119.87 ] +} +tracks/11/type = "method" +tracks/11/path = NodePath("..") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0.3, 0.8 ), +"transitions": PoolRealArray( 1, 1 ), +"values": [ { +"args": [ ], +"method": "_attack" +}, { +"args": [ ], +"method": "_attack" +} ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0.6 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -35.4461 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -40.649 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 5.718 ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 3.9058 ] +} + +[sub_resource type="Animation" id=25] +resource_name = "pushed" +length = 0.2 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -11.0004, -12 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -16.001, -9.99852 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -104.392 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 44.8764 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 55.9632 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -21.0393, -8.75184 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -49.0541 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -49.6616 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 2 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 12, 53 ), Vector2( 4, 53 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0.2 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("..:hurting") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -86.6408 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -85.4956 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 28.1131 ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 32.6704 ] +} + +[sub_resource type="Animation" id=26] +resource_name = "roar" +length = 1.5 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -41.0008, -18.9997 ), Vector2( -41.0008, -18.9997 ), Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( 37.9987, -18.9981 ), Vector2( 37.9987, -18.9981 ), Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -137.823, -109.576, -109.576, -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 55.2621, 28.215, 28.215, 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 22.2642 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 34.9602 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.5991, -9.59989 ), Vector2( -26.129, -5.68796 ), Vector2( -25.8929, -8.09683 ), Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -102.737, -23.1788, -23.1788, -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.1, 1.1, 1.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -122.256, 38.5195, 38.5195, -122.256 ] +} +tracks/11/type = "method" +tracks/11/path = NodePath("../StateChart") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 1.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "roar_done" ], +"method": "send_event" +} ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0.6 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/14/type = "method" +tracks/14/path = NodePath("..") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0.1 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "_roar" +} ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -35.4461 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -40.649 ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 5.96071 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 3.82105 ] +} + +[sub_resource type="Animation" id=27] +resource_name = "shooting" +length = 3.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Hip/Body:rotation_degrees") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 89.3425, 112.803, 112.803, 89.3425 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hip/Body/BackArm/HandBack:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -34, 6 ), Vector2( -51.8512, 24.5478 ), Vector2( -51.8512, 24.5478 ), Vector2( -34, 6 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hip/Body/FrontArm/HandFront:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -31.9996, 22.0018 ), Vector2( -11.3985, 19.1772 ), Vector2( -11.3985, 19.1772 ), Vector2( -31.9996, 22.0018 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Hip/Body/Neck:rotation_degrees") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -137.823, -139.456, -139.456, -137.823 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Hip/Body/Neck/Headlower:rotation_degrees") +tracks/4/interp = 2 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 55.2621, 22.2965, 22.2965, 55.2621 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Hip/Body/Neck/Headupper:rotation_degrees") +tracks/5/interp = 2 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 45.9167, 45.9167, 45.9167, 45.9167 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hip/LegFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 22.2642 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Hip/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 34.9602 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Hip/Body/Neck:position") +tracks/8/interp = 2 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -25.8929, -8.09683 ), Vector2( -31.8378, -8.41777 ), Vector2( -31.8378, -8.41777 ), Vector2( -25.8929, -8.09683 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Hip/Body/BackArm/HandBack:rotation_degrees") +tracks/9/interp = 2 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -102.737, -109.655, -109.655, -102.737 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hip/Body/FrontArm/HandFront:rotation_degrees") +tracks/10/interp = 2 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.4, 2.7, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -119.87, -131.542, -131.542, -119.87 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Hip:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 8, 39 ) ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Hip/Body/Neck/BreathParticles:emitting") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.4, 2.7 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/13/type = "method" +tracks/13/path = NodePath("../StateChart") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 3 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "shoot_done" ], +"method": "send_event" +} ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("..:hurting") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.6, 2.8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Hip/LegFront/LegFrontLower:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -35.4461 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Hip/LegBack/LegBackLower:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -40.649 ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("../Fire:playing") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0, 0.3, 2.8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Hip/LegBack/LegBackLower/FootBack:rotation_degrees") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 3.82105 ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Hip/LegFront/LegFrontLower/FootBack:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 5.96071 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Hip/Body/Neck/NeckSprite/NeckGlow:modulate") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0, 0.4, 2.8, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Hip/Body/BodySprite/BodyGlow:modulate") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0, 0.4, 2.8, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Hip/Body/Neck/Headupper/HeadUpperSprite/HeadGlow:modulate") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0, 0.4, 2.8, 3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ) ] +} + +[sub_resource type="ShaderMaterial" id=28] +resource_local_to_scene = true +shader = ExtResource( 37 ) +shader_param/arc_speed = 1.5 +shader_param/arc_fps = 60.0 +shader_param/arc_scale = 8.0 +shader_param/arc_threshold = 0.2 +shader_param/arc_color = Color( 0.345098, 0.74902, 0.878431, 1 ) +shader_param/gamma = 1.0 +shader_param/flash_rate = 3.0 +shader_param/flash_intensity = 0.0 +shader_param/background_color = Color( 0.396078, 1, 1, 1 ) + +[sub_resource type="CapsuleShape2D" id=13] +radius = 24.0 +height = 16.0 + +[sub_resource type="CapsuleShape2D" id=14] +radius = 17.2705 +height = 33.3754 + +[sub_resource type="CapsuleShape2D" id=15] +radius = 16.0 +height = 55.8645 + +[sub_resource type="CapsuleShape2D" id=16] +radius = 16.0 +height = 55.8645 + +[node name="Famira" type="Node2D"] +script = ExtResource( 1 ) +__meta__ = { +"_edit_horizontal_guides_": [ -211.0 ], +"_edit_vertical_guides_": [ ] +} + +[node name="Collision" type="KinematicBody2D" parent="."] +collision_layer = 4 +collision_mask = 128 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Collision"] +position = Vector2( 12, -64 ) +shape = SubResource( 11 ) + +[node name="ShardParticles" type="CPUParticles2D" parent="."] +material = SubResource( 18 ) +position = Vector2( 4, -165 ) +emitting = false +amount = 48 +lifetime = 4.0 +local_coords = false +texture = ExtResource( 19 ) +emission_shape = 2 +emission_rect_extents = Vector2( 16, 0 ) +direction = Vector2( 0, -2 ) +spread = 60.0 +gravity = Vector2( 0, 24 ) +initial_velocity = 250.0 +initial_velocity_random = 0.35 +linear_accel = -30.19 + +[node name="DissolveParticles" type="CPUParticles2D" parent="."] +material = ExtResource( 17 ) +position = Vector2( 4, -8 ) +z_index = -20 +emitting = false +amount = 16 +local_coords = false +texture = ExtResource( 15 ) +emission_shape = 2 +emission_rect_extents = Vector2( 24, 0 ) +direction = Vector2( 0, -1 ) +gravity = Vector2( 0, 0 ) +initial_velocity = 1.0 +linear_accel = 48.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_curve = SubResource( 19 ) +color = Color( 0.968627, 0.839216, 0.152941, 1 ) + +[node name="DissolveMask" type="Light2D" parent="."] +position = Vector2( -63, -322 ) +texture = ExtResource( 20 ) +mode = 3 +range_item_cull_mask = 32 + +[node name="ChickenMan" type="Node2D" parent="."] +visible = false +light_mask = 33 +material = ExtResource( 17 ) +position = Vector2( 0, -96 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="ChickenMan"] +anims/RESET = SubResource( 2 ) +anims/chasing = SubResource( 4 ) +anims/die = SubResource( 12 ) +anims/grow = SubResource( 17 ) +anims/punching = SubResource( 5 ) +anims/pushed = SubResource( 6 ) +anims/roar = SubResource( 3 ) +anims/shooting = SubResource( 7 ) + +[node name="Hip" type="Node2D" parent="ChickenMan"] +light_mask = 33 +use_parent_material = true +position = Vector2( 8, 39 ) + +[node name="LegBack" type="Sprite" parent="ChickenMan/Hip"] +light_mask = 33 +use_parent_material = true +position = Vector2( -9.49483, 5.9499 ) +rotation = -0.0114762 +scale = Vector2( 2.33905, 2.82204 ) +texture = ExtResource( 11 ) +offset = Vector2( -7.02542, -13.2616 ) + +[node name="Body" type="Sprite" parent="ChickenMan/Hip"] +light_mask = 33 +use_parent_material = true +position = Vector2( -1, 1 ) +rotation = 1.55932 +scale = Vector2( 2.33213, 2.33905 ) +texture = ExtResource( 9 ) +offset = Vector2( -14.8861, -10.6454 ) +flip_v = true + +[node name="HitboxTransform" type="RemoteTransform2D" parent="ChickenMan/Hip/Body"] +light_mask = 33 +position = Vector2( -10.255, -0.546865 ) +rotation = -1.57079 +remote_path = NodePath("../../../../Hitbox/Body") +update_scale = false + +[node name="BackArm" type="Node2D" parent="ChickenMan/Hip/Body"] +light_mask = 33 +use_parent_material = true +position = Vector2( -15.0905, 7.09585 ) +rotation = -1.55929 +scale = Vector2( 0.427524, 0.428792 ) +z_index = -2 +script = ExtResource( 12 ) +texture = ExtResource( 13 ) +segments = 4 +target = NodePath("HandBack") + +[node name="HandBack" type="Sprite" parent="ChickenMan/Hip/Body/BackArm"] +light_mask = 33 +material = SubResource( 1 ) +use_parent_material = true +position = Vector2( -34, 6 ) +rotation = -1.7931 +texture = ExtResource( 14 ) +offset = Vector2( 0, -6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 16, 12 ) + +[node name="BackArmBorder" type="Node2D" parent="ChickenMan/Hip/Body/BackArm"] +show_behind_parent = true +light_mask = 33 +use_parent_material = true +script = ExtResource( 12 ) +texture = ExtResource( 16 ) +segments = 4 +target = NodePath("../HandBack") + +[node name="FrontArm" type="Node2D" parent="ChickenMan/Hip/Body"] +light_mask = 33 +use_parent_material = true +position = Vector2( -15.3626, -6.5891 ) +rotation = -1.55929 +scale = Vector2( 0.427524, 0.428792 ) +z_index = 2 +script = ExtResource( 12 ) +texture = ExtResource( 13 ) +segments = 4 +target = NodePath("HandFront") + +[node name="HandFront" type="Sprite" parent="ChickenMan/Hip/Body/FrontArm"] +light_mask = 33 +material = SubResource( 1 ) +use_parent_material = true +position = Vector2( -31.9996, 22.0018 ) +rotation = -2.09213 +texture = ExtResource( 14 ) +offset = Vector2( 0, -6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 16, 12 ) + +[node name="FrontArmBorder" type="Node2D" parent="ChickenMan/Hip/Body/FrontArm"] +show_behind_parent = true +light_mask = 33 +use_parent_material = true +script = ExtResource( 12 ) +texture = ExtResource( 16 ) +segments = 4 +target = NodePath("../HandFront") + +[node name="Neck" type="Sprite" parent="ChickenMan/Hip/Body"] +show_behind_parent = true +light_mask = 33 +use_parent_material = true +position = Vector2( -25.8929, -8.09683 ) +rotation = -2.40547 +scale = Vector2( 1.3366, 1.4288 ) +z_index = 1 +texture = ExtResource( 10 ) +offset = Vector2( -12.5338, -3.19571 ) + +[node name="HitboxTransform" type="RemoteTransform2D" parent="ChickenMan/Hip/Body/Neck"] +light_mask = 33 +position = Vector2( 7.47667, -8.4856 ) +rotation = -2.96856 +remote_path = NodePath("../../../../../Hitbox/Brain") +update_scale = false + +[node name="BreathParticles" type="CPUParticles2D" parent="ChickenMan/Hip/Body/Neck"] +light_mask = 33 +position = Vector2( 2.97876, -8.17331 ) +rotation = 0.437951 +scale = Vector2( 0.724233, 0.497597 ) +z_index = -1 +emitting = false +amount = 80 +lifetime = 2.0 +lifetime_randomness = 0.5 +local_coords = false +draw_order = 1 +texture = ExtResource( 15 ) +emission_shape = 2 +emission_rect_extents = Vector2( 0, 0 ) +direction = Vector2( -1, 0 ) +spread = 5.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 230.0 +initial_velocity_random = 0.25 +angular_velocity = 360.0 +angular_velocity_random = 1.0 +tangential_accel = 100.0 +tangential_accel_random = 1.0 +damping = 350.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 4.0 +scale_amount_random = 0.5 +scale_amount_curve = SubResource( 8 ) +color_ramp = SubResource( 9 ) + +[node name="Headlower" type="Sprite" parent="ChickenMan/Hip/Body/Neck"] +light_mask = 33 +use_parent_material = true +position = Vector2( 6.09458, -5.24508 ) +rotation = 0.964506 +scale = Vector2( 0.72205, 0.726798 ) +z_index = 1 +texture = ExtResource( 8 ) +offset = Vector2( -23.6288, 1.97347 ) + +[node name="HitboxTransform" type="RemoteTransform2D" parent="ChickenMan/Hip/Body/Neck/Headlower"] +light_mask = 33 +position = Vector2( -15.6932, 6.83872 ) +rotation = -4.70641 +remote_path = NodePath("../../../../../../Hitbox/LowerJaw") +update_scale = false + +[node name="Headupper" type="Sprite" parent="ChickenMan/Hip/Body/Neck"] +light_mask = 33 +use_parent_material = true +position = Vector2( 6.70938, -6.04151 ) +rotation = 0.801398 +scale = Vector2( 0.72205, 0.49751 ) +z_index = 1 +texture = ExtResource( 9 ) +offset = Vector2( -21.4816, 1.20875 ) + +[node name="HitboxTransform" type="RemoteTransform2D" parent="ChickenMan/Hip/Body/Neck/Headupper"] +light_mask = 33 +position = Vector2( -15.711, -8.80663 ) +rotation = -1.57994 +remote_path = NodePath("../../../../../../Hitbox/UpperJaw") +update_scale = false + +[node name="Eye" type="Sprite" parent="ChickenMan/Hip/Body/Neck/Headupper"] +light_mask = 33 +use_parent_material = true +position = Vector2( -22.5774, -9.61752 ) +texture = ExtResource( 7 ) +offset = Vector2( 20.9715, 12.1291 ) + +[node name="LegFront" type="Sprite" parent="ChickenMan/Hip"] +light_mask = 33 +use_parent_material = true +position = Vector2( 12.9916, 6.2433 ) +rotation = -0.0114762 +scale = Vector2( 2.33905, 2.82204 ) +texture = ExtResource( 11 ) +offset = Vector2( -6.66188, -13.4386 ) + +[node name="Graphics" type="Node2D" parent="."] +light_mask = 33 +material = ExtResource( 17 ) +position = Vector2( 0, -96 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Graphics"] +unique_name_in_owner = true +anims/RESET = SubResource( 20 ) +anims/chasing = SubResource( 21 ) +anims/die = SubResource( 22 ) +anims/grow = SubResource( 23 ) +anims/punching = SubResource( 24 ) +anims/pushed = SubResource( 25 ) +anims/roar = SubResource( 26 ) +anims/shooting = SubResource( 27 ) + +[node name="Hip" type="Node2D" parent="Graphics"] +light_mask = 33 +use_parent_material = true +position = Vector2( 8, 39 ) + +[node name="LegBack" type="Node2D" parent="Graphics/Hip"] +light_mask = 33 +use_parent_material = true +position = Vector2( -15, -9 ) +rotation = 0.610171 + +[node name="LegSprite" type="Sprite" parent="Graphics/Hip/LegBack"] +light_mask = 33 +use_parent_material = true +texture = ExtResource( 21 ) + +[node name="LegBackLower" type="Node2D" parent="Graphics/Hip/LegBack"] +use_parent_material = true +position = Vector2( 0.540121, 33.0107 ) +rotation = -0.709459 + +[node name="LegBackSprite" type="Sprite" parent="Graphics/Hip/LegBack/LegBackLower"] +light_mask = 33 +use_parent_material = true +z_index = -1 +texture = ExtResource( 29 ) + +[node name="FootBack" type="Node2D" parent="Graphics/Hip/LegBack/LegBackLower"] +use_parent_material = true +position = Vector2( 1.51298, 29.934 ) +rotation = 0.0720013 + +[node name="Sprite" type="Sprite" parent="Graphics/Hip/LegBack/LegBackLower/FootBack"] +light_mask = 33 +use_parent_material = true +position = Vector2( 0.00275612, -0.0820584 ) +rotation = 0.0308382 +texture = ExtResource( 32 ) +offset = Vector2( -7.25486, 7.03402 ) + +[node name="Body" type="Node2D" parent="Graphics/Hip"] +light_mask = 33 +use_parent_material = true +position = Vector2( -1, 1 ) +rotation = 1.55932 +scale = Vector2( 2.33213, 2.33905 ) + +[node name="BodySprite" type="Sprite" parent="Graphics/Hip/Body"] +light_mask = 33 +use_parent_material = true +position = Vector2( -15.5869, -11.0406 ) +scale = Vector2( 0.427524, 0.428792 ) +texture = ExtResource( 22 ) +offset = Vector2( 32, 0 ) + +[node name="BodyGlow" type="Sprite" parent="Graphics/Hip/Body/BodySprite"] +visible = false +modulate = Color( 1, 1, 1, 0 ) +material = SubResource( 28 ) +texture = ExtResource( 35 ) +offset = Vector2( 32, 0 ) + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Graphics/Hip/Body"] +light_mask = 33 +position = Vector2( -10.255, -0.546865 ) +rotation = -1.57079 +remote_path = NodePath("../../../../Hitbox/Body") +update_scale = false + +[node name="BackArm" type="Node2D" parent="Graphics/Hip/Body"] +light_mask = 33 +use_parent_material = true +position = Vector2( -20.2307, 6.609 ) +rotation = -1.55929 +scale = Vector2( 0.427524, 0.428792 ) +z_index = -2 +script = ExtResource( 12 ) +texture = ExtResource( 31 ) +segments = 6 +target = NodePath("HandBack") + +[node name="HandBack" type="Sprite" parent="Graphics/Hip/Body/BackArm"] +light_mask = 33 +material = SubResource( 1 ) +use_parent_material = true +position = Vector2( -34, 6 ) +rotation = -1.7931 +texture = ExtResource( 30 ) +offset = Vector2( 0, -6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 16, 16 ) + +[node name="BackArmBorder" type="Node2D" parent="Graphics/Hip/Body/BackArm"] +show_behind_parent = true +light_mask = 33 +use_parent_material = true +script = ExtResource( 12 ) +texture = ExtResource( 33 ) +segments = 6 +target = NodePath("../HandBack") + +[node name="FrontArm" type="Node2D" parent="Graphics/Hip/Body"] +light_mask = 33 +use_parent_material = true +position = Vector2( -20.4922, -7.93076 ) +rotation = -1.55929 +scale = Vector2( 0.427524, 0.428792 ) +z_index = 2 +script = ExtResource( 12 ) +texture = ExtResource( 31 ) +segments = 6 +target = NodePath("HandFront") + +[node name="HandFront" type="Sprite" parent="Graphics/Hip/Body/FrontArm"] +light_mask = 33 +material = SubResource( 1 ) +use_parent_material = true +position = Vector2( -31.9996, 22.0018 ) +rotation = -2.09213 +texture = ExtResource( 30 ) +offset = Vector2( 0, -6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 16, 16 ) + +[node name="FrontArmBorder" type="Node2D" parent="Graphics/Hip/Body/FrontArm"] +show_behind_parent = true +light_mask = 33 +use_parent_material = true +script = ExtResource( 12 ) +texture = ExtResource( 33 ) +segments = 6 +target = NodePath("../HandFront") + +[node name="Neck" type="Node2D" parent="Graphics/Hip/Body"] +show_behind_parent = true +light_mask = 33 +use_parent_material = true +position = Vector2( -25.8929, -8.09683 ) +rotation = -2.40547 +scale = Vector2( 1.3366, 1.4288 ) +z_index = 1 + +[node name="NeckSprite" type="Sprite" parent="Graphics/Hip/Body/Neck"] +light_mask = 33 +use_parent_material = true +rotation = 0.898541 +scale = Vector2( 0.308458, 0.311881 ) +z_index = -2 +texture = ExtResource( 23 ) + +[node name="NeckGlow" type="Sprite" parent="Graphics/Hip/Body/Neck/NeckSprite"] +visible = false +modulate = Color( 1, 1, 1, 0 ) +material = SubResource( 28 ) +texture = ExtResource( 36 ) + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Graphics/Hip/Body/Neck"] +light_mask = 33 +position = Vector2( 7.47667, -8.4856 ) +rotation = -2.96856 +remote_path = NodePath("../../../../../Hitbox/Brain") +update_scale = false + +[node name="BreathParticles" type="CPUParticles2D" parent="Graphics/Hip/Body/Neck"] +light_mask = 33 +position = Vector2( 2.97876, -8.17331 ) +rotation = 0.437951 +scale = Vector2( 0.724233, 0.497597 ) +z_index = -1 +emitting = false +amount = 80 +lifetime = 2.0 +lifetime_randomness = 0.5 +local_coords = false +draw_order = 1 +texture = ExtResource( 28 ) +emission_shape = 2 +emission_rect_extents = Vector2( 0, 0 ) +direction = Vector2( -1, 0 ) +spread = 5.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 230.0 +initial_velocity_random = 0.25 +angular_velocity = 360.0 +angular_velocity_random = 1.0 +tangential_accel = 100.0 +tangential_accel_random = 1.0 +damping = 350.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 4.0 +scale_amount_random = 0.5 +scale_amount_curve = SubResource( 8 ) +color_ramp = SubResource( 9 ) + +[node name="Headlower" type="Node2D" parent="Graphics/Hip/Body/Neck"] +light_mask = 33 +use_parent_material = true +position = Vector2( 6.09458, -5.24508 ) +rotation = 0.964506 +scale = Vector2( 0.72205, 0.726798 ) +z_index = 1 + +[node name="HeadLowerSprite" type="Sprite" parent="Graphics/Hip/Body/Neck/Headlower"] +light_mask = 33 +use_parent_material = true +position = Vector2( -24.4207, 1.14932 ) +scale = Vector2( 0.427134, 0.429136 ) +texture = ExtResource( 24 ) + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Graphics/Hip/Body/Neck/Headlower"] +light_mask = 33 +position = Vector2( -15.6932, 6.83872 ) +rotation = 1.57678 +remote_path = NodePath("../../../../../../Hitbox/LowerJaw") +update_scale = false + +[node name="TendrilEnd1" type="Node2D" parent="Graphics/Hip/Body/Neck/Headlower"] +position = Vector2( -30.5343, 9.51069 ) + +[node name="TendrilEnd2" type="Node2D" parent="Graphics/Hip/Body/Neck/Headlower"] +position = Vector2( -25.9981, 10.4675 ) + +[node name="TendrilEnd3" type="Node2D" parent="Graphics/Hip/Body/Neck/Headlower"] +position = Vector2( -22.5259, 9.9095 ) + +[node name="TendrilEnd4" type="Node2D" parent="Graphics/Hip/Body/Neck/Headlower"] +position = Vector2( -17.1706, 10.3132 ) + +[node name="Headupper" type="Node2D" parent="Graphics/Hip/Body/Neck"] +light_mask = 33 +use_parent_material = true +position = Vector2( 6.70938, -6.04151 ) +rotation = 0.801398 +scale = Vector2( 0.72205, 0.49751 ) +z_index = 1 + +[node name="HeadUpperSprite" type="Sprite" parent="Graphics/Hip/Body/Neck/Headupper"] +light_mask = 33 +use_parent_material = true +position = Vector2( -21.2833, 1.46694 ) +scale = Vector2( 0.427229, 0.625891 ) +texture = ExtResource( 25 ) +centered = false +offset = Vector2( -45, -72 ) + +[node name="HeadGlow" type="Sprite" parent="Graphics/Hip/Body/Neck/Headupper/HeadUpperSprite"] +visible = false +modulate = Color( 1, 1, 1, 0 ) +material = SubResource( 28 ) +texture = ExtResource( 34 ) +centered = false +offset = Vector2( -45, -72 ) + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Graphics/Hip/Body/Neck/Headupper"] +light_mask = 33 +position = Vector2( -15.711, -8.80663 ) +rotation = -1.57994 +remote_path = NodePath("../../../../../../Hitbox/UpperJaw") +update_scale = false + +[node name="MouthTendril1" type="Node2D" parent="Graphics/Hip/Body/Neck/Headupper"] +light_mask = 33 +use_parent_material = true +position = Vector2( -31.9772, -4.35265 ) +scale = Vector2( 0.214, 0.626 ) +z_index = -4 +script = ExtResource( 12 ) +texture = ExtResource( 26 ) +segments = 10 +target = NodePath("../../Headlower/TendrilEnd1") + +[node name="MouthTendril2" type="Node2D" parent="Graphics/Hip/Body/Neck/Headupper"] +light_mask = 33 +use_parent_material = true +position = Vector2( -28.5394, -4.15707 ) +scale = Vector2( 0.214, 0.626 ) +z_index = -4 +script = ExtResource( 12 ) +texture = ExtResource( 26 ) +segments = 10 +target = NodePath("../../Headlower/TendrilEnd2") + +[node name="MouthTendril3" type="Node2D" parent="Graphics/Hip/Body/Neck/Headupper"] +light_mask = 33 +use_parent_material = true +position = Vector2( -24.8826, -4.80403 ) +scale = Vector2( 0.214, 0.626 ) +z_index = -4 +script = ExtResource( 12 ) +texture = ExtResource( 26 ) +segments = 10 +target = NodePath("../../Headlower/TendrilEnd3") + +[node name="MouthTendril4" type="Node2D" parent="Graphics/Hip/Body/Neck/Headupper"] +light_mask = 33 +use_parent_material = true +position = Vector2( -20.0951, -4.9203 ) +scale = Vector2( 0.214, 0.626 ) +z_index = -4 +script = ExtResource( 12 ) +texture = ExtResource( 26 ) +segments = 10 +target = NodePath("../../Headlower/TendrilEnd4") + +[node name="LegFront" type="Node2D" parent="Graphics/Hip"] +light_mask = 33 +use_parent_material = true +position = Vector2( 12, -8 ) +rotation = 0.388584 +z_index = 1 + +[node name="LegSprite" type="Sprite" parent="Graphics/Hip/LegFront"] +light_mask = 33 +use_parent_material = true +texture = ExtResource( 21 ) + +[node name="LegFrontLower" type="Node2D" parent="Graphics/Hip/LegFront"] +use_parent_material = true +position = Vector2( -0.355755, 30.998 ) +rotation = -0.618651 + +[node name="Sprite" type="Sprite" parent="Graphics/Hip/LegFront/LegFrontLower"] +light_mask = 33 +use_parent_material = true +z_index = -1 +texture = ExtResource( 29 ) + +[node name="FootBack" type="Node2D" parent="Graphics/Hip/LegFront/LegFrontLower"] +use_parent_material = true +position = Vector2( 1.51297, 29.934 ) +rotation = 0.105932 + +[node name="Sprite" type="Sprite" parent="Graphics/Hip/LegFront/LegFrontLower/FootBack"] +light_mask = 33 +use_parent_material = true +position = Vector2( 0.110806, 0.250104 ) +rotation = 0.125527 +texture = ExtResource( 32 ) +offset = Vector2( -7.36291, 6.70186 ) + +[node name="Hitbox" type="Area2D" parent="."] +position = Vector2( 8, -56 ) +collision_layer = 128 +collision_mask = 128 +monitorable = false + +[node name="Body" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 0.00459766, -23.9291 ) +rotation = -0.0114701 +shape = SubResource( 13 ) + +[node name="Brain" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 11.5069, -96.7914 ) +rotation = 2.48158 +z_index = 100 +shape = SubResource( 14 ) + +[node name="LowerJaw" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( -21.3083, -76.1164 ) +rotation = 1.66395 +z_index = 100 +shape = SubResource( 15 ) + +[node name="UpperJaw" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( -21.8184, -103.259 ) +rotation = -1.66239 +z_index = 100 +shape = SubResource( 16 ) + +[node name="StateChart" type="Node" parent="."] +script = ExtResource( 3 ) + +[node name="Root" type="Node" parent="StateChart"] +script = ExtResource( 4 ) +initial_state = NodePath("Growing") + +[node name="On StartPush" type="Node" parent="StateChart/Root"] +script = ExtResource( 6 ) +to = NodePath("../PushedBack") +event = "start_push" + +[node name="On PlayerDead" type="Node" parent="StateChart/Root"] +script = ExtResource( 6 ) +to = NodePath("../Roar") +event = "player_dead" + +[node name="On Die" type="Node" parent="StateChart/Root"] +script = ExtResource( 6 ) +to = NodePath("../Dying") +event = "die" + +[node name="Growing" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="On Transformed" type="Node" parent="StateChart/Root/Growing"] +script = ExtResource( 6 ) +to = NodePath("../../Roar") +event = "transformed" + +[node name="Roar" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="On RoarDone" type="Node" parent="StateChart/Root/Roar"] +script = ExtResource( 6 ) +to = NodePath("../../Chasing") +event = "roar_done" +guard_expression = "not player_dead" + +[node name="Chasing" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="On Cooldown" type="Node" parent="StateChart/Root/Chasing"] +script = ExtResource( 6 ) +to = NodePath("../../Shooting") +delay = 2.0 + +[node name="On InRange" type="Node" parent="StateChart/Root/Chasing"] +script = ExtResource( 6 ) +to = NodePath("../../Punching") +event = "in_range" + +[node name="Punching" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="On OutOfRange" type="Node" parent="StateChart/Root/Punching"] +script = ExtResource( 6 ) +to = NodePath("../../Roar") +event = "out_of_range" + +[node name="PunchCooldown" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="On Cooldown" type="Node" parent="StateChart/Root/PunchCooldown"] +script = ExtResource( 6 ) +to = NodePath("../../Roar") +delay = 0.5 + +[node name="Shooting" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="On ShootDone" type="Node" parent="StateChart/Root/Shooting"] +script = ExtResource( 6 ) +to = NodePath("../../Chasing") +event = "shoot_done" + +[node name="PushedBack" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="On StopPush" type="Node" parent="StateChart/Root/PushedBack"] +script = ExtResource( 6 ) +to = NodePath("../../Roar") +event = "stop_push" + +[node name="Dying" type="Node" parent="StateChart/Root"] +script = ExtResource( 5 ) + +[node name="InRangeCast" type="RayCast2D" parent="."] +position = Vector2( 0, -64 ) +enabled = true +cast_to = Vector2( -48, 0 ) +collision_mask = 4 +collide_with_areas = true +collide_with_bodies = false + +[node name="OutRangeCast" type="RayCast2D" parent="."] +position = Vector2( 0, -72 ) +enabled = true +cast_to = Vector2( -64, 0 ) +collision_mask = 4 +collide_with_areas = true +collide_with_bodies = false + +[node name="ShootRangeCast" type="RayCast2D" parent="."] +position = Vector2( 0, -80 ) +enabled = true +cast_to = Vector2( -192, 0 ) +collision_mask = 4 +collide_with_areas = true +collide_with_bodies = false + +[node name="Grumble" type="AudioStreamPlayer" parent="."] + +[node name="Fire" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 27 ) +volume_db = -10.0 + +[node name="Tween" type="Tween" parent="."] + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="body_entered" from="Hitbox" to="." method="_on_Hitbox_body_entered"] +[connection signal="state_entered" from="StateChart/Root/Roar" to="." method="_on_Roar_state_entered" flags=3] +[connection signal="state_entered" from="StateChart/Root/Chasing" to="." method="_on_Chasing_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Chasing" to="." method="_on_Chasing_state_physics_processing"] +[connection signal="state_entered" from="StateChart/Root/Punching" to="." method="_on_Punching_state_entered"] +[connection signal="state_entered" from="StateChart/Root/PunchCooldown" to="." method="_on_PunchCooldown_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Shooting" to="." method="_on_Shooting_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Shooting" to="." method="_on_Shooting_state_physics_processing"] +[connection signal="state_entered" from="StateChart/Root/PushedBack" to="." method="_on_PushedBack_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/PushedBack" to="." method="_on_PushedBack_state_physics_processing"] +[connection signal="state_entered" from="StateChart/Root/Dying" to="." method="_on_Dying_state_entered"] diff --git a/objects/enemy/boss/intelli_head.tscn b/objects/enemy/boss/intelli_head.tscn new file mode 100644 index 0000000..ed77b03 --- /dev/null +++ b/objects/enemy/boss/intelli_head.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://graphics/npc/intelli_head.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/constant_bleed.tscn" type="PackedScene" id=2] + +[sub_resource type="PhysicsMaterial" id=17] +bounce = 0.5 + +[sub_resource type="CircleShape2D" id=16] +radius = 5.0 + +[node name="IntelliHead" type="RigidBody2D"] +position = Vector2( 0, -4 ) +mass = 2.0 +physics_material_override = SubResource( 17 ) +linear_velocity = Vector2( -80, -80 ) + +[node name="DeathSplatter" parent="." instance=ExtResource( 2 )] +position = Vector2( -1, 5 ) +emission_shape = 0 +direction = Vector2( 0, 1 ) +spread = 60.0 + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) +flip_h = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 16 ) diff --git a/objects/enemy/boss/scrump.gd b/objects/enemy/boss/scrump.gd index bb5498c..90901a1 100644 --- a/objects/enemy/boss/scrump.gd +++ b/objects/enemy/boss/scrump.gd @@ -12,22 +12,26 @@ export var phase3_speed = 150 onready var shoot_timer = $ShootTimer onready var shootpoint = $Position2D onready var blood_position = $BloodPosition +onready var shoot_sound = $ShootSound onready var map = get_owner() const Projectile = preload("res://objects/enemy/boss/scrump_projectile.tscn") const Gore = preload("res://objects/enemy/boss/scrump_gore.tscn") func _ready(): + if Debug.sus_monster == true: sus_monster() seed(hash("HEROMARK2")) - #Easy mode - if Game.is_easy_mode: - arrow_speed *= Game.easy_mode_speed_factor - shoot_time /= Game.easy_mode_speed_factor - speed *= Game.easy_mode_speed_factor - phase2_speed *= Game.easy_mode_speed_factor - phase3_speed *= Game.easy_mode_speed_factor + # adjust to difficulty + arrow_speed *= Game.enemy_speed_factor + shoot_time /= Game.enemy_speed_factor + speed *= Game.enemy_speed_factor + phase2_speed *= Game.enemy_speed_factor + phase3_speed *= Game.enemy_speed_factor func shoot(): + var r = rand_range(0.8,1.2) + shoot_sound.pitch_scale = r + shoot_sound.play() Game.instance_node(Projectile,shootpoint.global_position.x,stepify(shootpoint.global_position.y,8),map) func _on_ShootTimer_timeout(): @@ -36,7 +40,7 @@ func _on_ShootTimer_timeout(): func die(): hp -= 1 - Audio.play_sound(Audio.a_boss_hurt,Audio.ac_boss) + Audio.play_sound(Audio.a_scrump_hurt,Audio.ac_boss) match hp: 2: emit_signal("entered_phase", 2) @@ -59,3 +63,7 @@ func die(): death_particles.amount = 64 death_particles.lifetime = 0.45 get_parent().add_child(death_particles) + +func sus_monster(): + $Sus.visible = true + $Sprite.visible = false diff --git a/objects/enemy/boss/scrump.tscn b/objects/enemy/boss/scrump.tscn index 196fea5..ccffb1a 100644 --- a/objects/enemy/boss/scrump.tscn +++ b/objects/enemy/boss/scrump.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=11 format=2] [ext_resource path="res://objects/enemy/boss/scrump.gd" type="Script" id=1] -[ext_resource path="res://audio/sounds/gover.wav" type="AudioStream" id=2] -[ext_resource path="res://audio/sounds/die.wav" type="AudioStream" id=3] -[ext_resource path="res://graphics/enemy/boss/scrump.png" type="Texture" id=4] +[ext_resource path="res://audio/sounds/gover.ogg" type="AudioStream" id=2] +[ext_resource path="res://audio/sounds/die.ogg" type="AudioStream" id=3] +[ext_resource path="res://graphics/enemy/boss/the_scrump.png" type="Texture" id=4] +[ext_resource path="res://audio/sounds/scrump_shot.ogg" type="AudioStream" id=5] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 5.5, 9.5 ) @@ -11,10 +12,25 @@ extents = Vector2( 5.5, 9.5 ) [sub_resource type="RectangleShape2D" id=2] extents = Vector2( 20, 27 ) -[node name="Boss1" type="Node2D"] +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 4 ) +region = Rect2( 0, 0, 55, 64 ) + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 4 ) +region = Rect2( 55, 0, 55, 64 ) + +[sub_resource type="SpriteFrames" id=5] +animations = [ { +"frames": [ SubResource( 3 ), SubResource( 4 ) ], +"loop": true, +"name": "default", +"speed": 10.0 +} ] + +[node name="TheScrump" type="Node2D" groups=["scrump"]] script = ExtResource( 1 ) move_direction = 1 -flip_sprite = false phase2_speed = 75 phase3_speed = 100 @@ -72,14 +88,10 @@ autostart = true [node name="Position2D" type="Position2D" parent="."] position = Vector2( 14, 29 ) -[node name="ArrowSpawnTimer" type="Timer" parent="."] -wait_time = 5.0 -one_shot = true -autostart = true - -[node name="Sprite" type="Sprite" parent="."] +[node name="Sprite" type="AnimatedSprite" parent="."] position = Vector2( 26, 27 ) -texture = ExtResource( 4 ) +frames = SubResource( 5 ) +playing = true [node name="BloodPosition" type="Position2D" parent="."] position = Vector2( 0, 14 ) @@ -90,6 +102,9 @@ stream = ExtResource( 3 ) [node name="DeathSound" type="AudioStreamPlayer" parent="."] stream = ExtResource( 2 ) +[node name="ShootSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 5 ) +volume_db = -8.0 + [connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] [connection signal="timeout" from="ShootTimer" to="." method="_on_ShootTimer_timeout"] -[connection signal="timeout" from="ArrowSpawnTimer" to="." method="_on_ArrowSpawnTimer_timeout"] diff --git a/objects/enemy/boss/scrump_gore.tscn b/objects/enemy/boss/scrump_gore.tscn index b732a30..576d0bd 100644 --- a/objects/enemy/boss/scrump_gore.tscn +++ b/objects/enemy/boss/scrump_gore.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=35 format=2] +[gd_scene load_steps=37 format=2] [ext_resource path="res://objects/enemy/constant_bleed.tscn" type="PackedScene" id=1] [ext_resource path="res://graphics/enemy/boss/scrump_gore/tentacle5.png" type="Texture" id=2] @@ -16,10 +16,15 @@ [ext_resource path="res://graphics/enemy/boss/scrump_gore/tentacle4.png" type="Texture" id=14] [ext_resource path="res://graphics/enemy/boss/scrump_gore/tentacle2.png" type="Texture" id=15] [ext_resource path="res://scripts/launch_rigid.gd" type="Script" id=16] +[ext_resource path="res://shaders/scale3x.gdshader" type="Shader" id=17] [sub_resource type="PhysicsMaterial" id=21] bounce = 0.3 +[sub_resource type="ShaderMaterial" id=22] +shader = ExtResource( 17 ) +shader_param/pixel_scale = 1.0 + [sub_resource type="CapsuleShape2D" id=17] radius = 7.26425 height = 4.59118 @@ -37,7 +42,7 @@ radius = 2.66902 height = 10.9959 [sub_resource type="PhysicsMaterial" id=4] -bounce = 1.0 +bounce = 0.9 [sub_resource type="CircleShape2D" id=3] radius = 6.0 @@ -91,6 +96,7 @@ height = 14.0 physics_material_override = SubResource( 21 ) [node name="Sprite" type="Sprite" parent="Brain1"] +material = SubResource( 22 ) position = Vector2( 27, 27 ) texture = ExtResource( 9 ) @@ -115,6 +121,7 @@ position = Vector2( 48, 11 ) position = Vector2( 37, 29 ) [node name="Sprite2" type="Sprite" parent="Brain2"] +material = SubResource( 22 ) position = Vector2( 27, 27 ) texture = ExtResource( 12 ) @@ -133,6 +140,7 @@ position = Vector2( 44, 7 ) position = Vector2( 32, 25 ) [node name="Sprite3" type="Sprite" parent="Brain3"] +material = SubResource( 22 ) position = Vector2( 27, 27 ) texture = ExtResource( 11 ) @@ -148,6 +156,7 @@ physics_material_override = SubResource( 21 ) position = Vector2( 49, 23 ) [node name="Sprite3" type="Sprite" parent="Brain4"] +material = SubResource( 22 ) position = Vector2( 27, 27 ) texture = ExtResource( 4 ) @@ -157,18 +166,19 @@ rotation = 0.294044 shape = SubResource( 20 ) [node name="Eye" type="RigidBody2D" parent="."] +position = Vector2( 5, 15 ) physics_material_override = SubResource( 4 ) script = ExtResource( 16 ) [node name="DeathSplatter" parent="Eye" instance=ExtResource( 1 )] -position = Vector2( 6, 9 ) +position = Vector2( 1, -6 ) [node name="Sprite" type="Sprite" parent="Eye"] -position = Vector2( 26, 27 ) +material = SubResource( 22 ) +position = Vector2( 21, 12 ) texture = ExtResource( 6 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="Eye"] -position = Vector2( 5, 15 ) shape = SubResource( 3 ) [node name="Eyestalk" type="RigidBody2D" parent="."] @@ -182,6 +192,7 @@ position = Vector2( 6, 8 ) position = Vector2( 25, 5 ) [node name="Sprite" type="Sprite" parent="Eyestalk"] +material = SubResource( 22 ) position = Vector2( 26, 27 ) texture = ExtResource( 5 ) @@ -217,6 +228,7 @@ position = Vector2( 42, 26 ) position = Vector2( 33, 28 ) [node name="Sprite" type="Sprite" parent="UpperHead"] +material = SubResource( 22 ) position = Vector2( 26, 27 ) texture = ExtResource( 13 ) @@ -248,6 +260,7 @@ position = Vector2( 35, 37 ) position = Vector2( 44, 37 ) [node name="Sprite" type="Sprite" parent="LowerHead"] +material = SubResource( 22 ) position = Vector2( 26, 27 ) texture = ExtResource( 10 ) @@ -264,6 +277,7 @@ script = ExtResource( 16 ) position = Vector2( 19, 37 ) [node name="Sprite" type="Sprite" parent="Tentacle1"] +material = SubResource( 22 ) position = Vector2( 26, 27 ) texture = ExtResource( 3 ) @@ -280,6 +294,7 @@ script = ExtResource( 16 ) position = Vector2( 23, 38 ) [node name="Sprite" type="Sprite" parent="Tentacle2"] +material = SubResource( 22 ) position = Vector2( 26, 27 ) texture = ExtResource( 15 ) @@ -296,6 +311,7 @@ script = ExtResource( 16 ) position = Vector2( 27, 38 ) [node name="Sprite" type="Sprite" parent="Tentacle3"] +material = SubResource( 22 ) position = Vector2( 26, 27 ) texture = ExtResource( 7 ) @@ -311,6 +327,7 @@ script = ExtResource( 16 ) position = Vector2( 33, 38 ) [node name="Sprite" type="Sprite" parent="Tentacle4"] +material = SubResource( 22 ) position = Vector2( 26, 27 ) texture = ExtResource( 14 ) @@ -326,6 +343,7 @@ script = ExtResource( 16 ) position = Vector2( 38, 38 ) [node name="Sprite" type="Sprite" parent="Tentacle5"] +material = SubResource( 22 ) position = Vector2( 26, 27 ) texture = ExtResource( 2 ) @@ -341,6 +359,7 @@ script = ExtResource( 16 ) position = Vector2( 43, 38 ) [node name="Sprite" type="Sprite" parent="Tentacle6"] +material = SubResource( 22 ) position = Vector2( 26, 27 ) texture = ExtResource( 8 ) diff --git a/objects/enemy/boss/scrump_projectile.gd b/objects/enemy/boss/scrump_projectile.gd index 98b4e00..6c45fd9 100644 --- a/objects/enemy/boss/scrump_projectile.gd +++ b/objects/enemy/boss/scrump_projectile.gd @@ -1,5 +1,26 @@ extends "res://objects/enemy/enemy.gd" -func _physics_process(delta): - position.x -= 80 * delta +var speed: float = 80.0 + + +func _physics_process(delta: float) -> void: + position.x -= speed * delta + +func _on_Hitbox_area_entered(area: Node) -> void: + ._on_Hitbox_area_entered(area) + if area.is_in_group("player_hitbox"): + _stop() + + +func _on_Hitbox_body_entered(body: Node) -> void: + if body is TileMap: + _stop() + + +func _stop() -> void: + speed = 0.0 + $Hitbox.queue_free() + for child in $Particles.get_children(): + if child is CPUParticles2D: + child.emitting = false diff --git a/objects/enemy/boss/scrump_projectile.tscn b/objects/enemy/boss/scrump_projectile.tscn index a2765ca..d2524cf 100644 --- a/objects/enemy/boss/scrump_projectile.tscn +++ b/objects/enemy/boss/scrump_projectile.tscn @@ -12,14 +12,16 @@ _data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] _data = [ Vector2( 0, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] [sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 4, 3 ) +extents = Vector2( 3, 3 ) [node name="Boss1Projectile" type="Node2D"] z_index = -1 script = ExtResource( 4 ) -[node name="GooTrail" type="CPUParticles2D" parent="."] +[node name="Particles" type="Node2D" parent="."] position = Vector2( 0, 4 ) + +[node name="GooTrail" type="CPUParticles2D" parent="Particles"] z_index = -1 local_coords = false texture = ExtResource( 2 ) @@ -33,8 +35,7 @@ angle_random = 1.0 scale_amount = 0.5 scale_amount_curve = SubResource( 2 ) -[node name="GooBackground" type="CPUParticles2D" parent="."] -position = Vector2( 0, 4 ) +[node name="GooBackground" type="CPUParticles2D" parent="Particles"] amount = 16 texture = ExtResource( 1 ) emission_shape = 2 @@ -49,8 +50,7 @@ angle_random = 1.0 scale_amount = 0.8 scale_amount_curve = SubResource( 3 ) -[node name="GooBackgroundFall" type="CPUParticles2D" parent="."] -position = Vector2( 0, 4 ) +[node name="GooBackgroundFall" type="CPUParticles2D" parent="Particles"] amount = 16 preprocess = 1.0 texture = ExtResource( 1 ) @@ -66,8 +66,7 @@ angle_random = 1.0 scale_amount = 0.8 scale_amount_curve = SubResource( 3 ) -[node name="GooForeground" type="CPUParticles2D" parent="."] -position = Vector2( 0, 4 ) +[node name="GooForeground" type="CPUParticles2D" parent="Particles"] lifetime = 0.5 preprocess = 0.5 texture = ExtResource( 3 ) @@ -90,3 +89,4 @@ position = Vector2( 0, 4 ) shape = SubResource( 1 ) [connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="body_entered" from="Hitbox" to="." method="_on_Hitbox_body_entered"] diff --git a/objects/enemy/boss/sg2083.gd b/objects/enemy/boss/sg2083.gd new file mode 100644 index 0000000..d76304e --- /dev/null +++ b/objects/enemy/boss/sg2083.gd @@ -0,0 +1,178 @@ +extends KinematicBody2D + + +signal died() +signal health_changed(amount) +signal energy_changed(amount,laser_energy) + + +enum State {DEAD, STAND, FORWARD, BACK, DUCK, BEAM, INACTIVE} + +const Bullet = preload("res://objects/enemy/2083_bullet.tscn") +const SmallExplosion = preload("res://objects/enemy/boss/2600_small_explosion.tscn") + + +export var hp: float = 100.0 +export var max_energy: float = 100.0 +export var energy_recovery: float = 5.0 +export var shot_speed: float = 50.0 +export var move_speed: float = 30.0 +export var safe_from_breath: bool = false +export var make_explosions: bool = false +export var bullet_damage: float = 0.2 +export var bullet_energy: float = 0.0 +export var beam_energy: float = 75.0 +export var duck_energy: float = 0.15 +export var explosion_rect: Rect2 +export var famira_path: NodePath + + +var state: int = State.STAND +var knockback: float = 0.0 +var energy: float = max_energy + + +onready var bullet_positions = $"%BulletPositions" +onready var anims: AnimationPlayer = $"%AnimationPlayer" +onready var head_sprite = $"%Head" + + +func _physics_process(delta: float) -> void: + match state: + State.DEAD: + return + State.INACTIVE: + return + State.STAND: + if sign(Input.get_axis("move_up", "move_down") + get_stick_input(JOY_AXIS_1)) == 1 and energy >= duck_energy: + state = State.DUCK + anims.play("Duck") + elif Input.is_action_pressed("move_right"): + state = State.FORWARD + anims.play("Walk") + elif Input.is_action_pressed("move_left"): + state = State.BACK + anims.play("Walk", -1.0, -1.0, true) + State.DUCK: + if (!Input.is_action_pressed("move_down") && get_stick_input(JOY_AXIS_1) != 1) and anims.current_animation.empty(): + anims.play("UnDuck") + energy -= duck_energy + + State.FORWARD: + move_and_slide(Vector2(move_speed, 0.0)) + State.BACK: + move_and_slide(Vector2(-move_speed, 0.0)) + move_and_slide(Vector2(-knockback, 0.0)) + knockback *= pow(0.1, delta) + set_energy(energy + energy_recovery * delta) + + +func _input(event: InputEvent) -> void: + if state == State.DEAD or state == State.INACTIVE: + return + if event.is_action_pressed("shoot") and (state == State.STAND or state == State.FORWARD or state == State.BACK) and energy >= bullet_energy: + shoot() + if event.is_action_pressed("jump") and state == State.STAND and energy >= beam_energy: + beam() + +func get_stick_input(axis): + var inp = Input.get_joy_axis(0,axis) + if abs(inp) >= 0.5: + return sign(inp) + else: + return 0 + +func set_energy(value: float) -> void: + energy = clamp(value, 0.0, max_energy) + emit_signal("energy_changed", energy, beam_energy) + +func land(duck: bool) -> void: + if duck: + anims.play("Duck") + else: + anims.play("UnDuck") + + +func shoot() -> void: + set_energy(energy - bullet_energy) + Audio.play_sound(Audio.a_vulcan,Audio.ac_mech_shoot) + for pos in bullet_positions.get_children(): + var bullet = Bullet.instance() + bullet.global_position = pos.global_position + bullet.direction = Vector2.LEFT.rotated(pos.rotation) + bullet.speed = shot_speed + bullet.damage = bullet_damage + get_parent().add_child(bullet) + + +func beam() -> void: + state = State.BEAM + var tween = create_tween() + tween.tween_method(self, "set_energy", energy, energy - beam_energy, 0.9) + anims.play("Beam") + + +func hurt(amount: float, can_duck: bool = false) -> void: + if can_duck and state == State.DUCK: + return + hp -= amount + emit_signal("health_changed", hp) + if state != State.DEAD and hp <= 0.0: + state = State.DEAD + emit_signal("died") + anims.play("die") + + +func knock_back(amount: float, can_duck: bool = false) -> void: + if can_duck and state == State.DUCK: + return + knockback += amount + + +func _play_laser_sound(play: bool): + var famira = get_node(famira_path) + if play: + if famira.has_method("start_push"): + famira.start_push() + Audio.play_sound(Audio.a_rainbow_laser,Audio.ac_collectible) + else: + if famira.has_method("stop_push"): + famira.stop_push() + Audio.ac_collectible.playing = false + + +func _play_charge_sound(play: bool): + if play: + Audio.play_sound(Audio.a_2600_charge,Audio.ac_collectible) + else: + Audio.ac_collectible.playing = false + + +func _spawn_explosions() -> void: + while make_explosions: + yield(get_tree().create_timer(randf() * 0.5, false), "timeout") + var explosion = SmallExplosion.instance() + explosion.position = Vector2( + rand_range(explosion_rect.position.x, explosion_rect.end.x), + rand_range(explosion_rect.position.y, explosion_rect.end.y) + ) + add_child(explosion) + + +func _on_animation_finished(anim_name: String) -> void: + if state == State.INACTIVE: + return + match anim_name: + "UnDuck": + state = State.STAND + "Walk": + if state == State.FORWARD and Input.is_action_pressed("move_right"): + anims.play("Walk") + elif state == State.BACK and Input.is_action_pressed("move_left"): + anims.play("Walk", -1.0, -1.0, true) + else: + state = State.STAND + "Beam": + state = State.STAND + "die": + Game.change_map(load("res://menus/game_over.tscn")) diff --git a/objects/enemy/boss/sg2083.tscn b/objects/enemy/boss/sg2083.tscn new file mode 100644 index 0000000..fa76448 --- /dev/null +++ b/objects/enemy/boss/sg2083.tscn @@ -0,0 +1,2265 @@ +[gd_scene load_steps=40 format=2] + +[ext_resource path="res://shaders/color_noise.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/enemy/boss/stg_2600/tailpipes.png" type="Texture" id=2] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/enemy/boss/stg_2600/beam.png" type="Texture" id=4] +[ext_resource path="res://graphics/npc/intelli_idle.png" type="Texture" id=5] +[ext_resource path="res://graphics/enemy/boss/stg_2600/sg_2083.png" type="Texture" id=6] +[ext_resource path="res://graphics/enemy/boss/stg_2600/bolt_large.png" type="Texture" id=7] +[ext_resource path="res://graphics/enemy/boss/stg_2600/bolt_medium.png" type="Texture" id=8] +[ext_resource path="res://graphics/enemy/boss/stg_2600/leg.png" type="Texture" id=9] +[ext_resource path="res://scripts/sprite_ext.gd" type="Script" id=10] +[ext_resource path="res://shaders/scale3x.gdshader" type="Shader" id=11] +[ext_resource path="res://graphics/enemy/boss/stg_2600/foot.png" type="Texture" id=12] +[ext_resource path="res://graphics/enemy/boss/stg_2600/beam_gradient.png" type="Texture" id=13] +[ext_resource path="res://shaders/beam_cycle.gdshader" type="Shader" id=14] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=15] +[ext_resource path="res://graphics/particles/smoke.png" type="Texture" id=16] +[ext_resource path="res://shaders/fade.gdshader" type="Shader" id=17] +[ext_resource path="res://graphics/fade_patterns/stg_explosion.png" type="Texture" id=18] +[ext_resource path="res://objects/enemy/boss/sg2083.gd" type="Script" id=19] + +[sub_resource type="RectangleShape2D" id=27] +extents = Vector2( 44, 76 ) + +[sub_resource type="Animation" id=4] +resource_name = "Beam" +length = 4.0 +tracks/0/type = "method" +tracks/0/path = NodePath(".") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"values": [ { +"args": [ true ], +"method": "_play_charge_sound" +}, { +"args": [ true ], +"method": "_play_laser_sound" +}, { +"args": [ false ], +"method": "_play_laser_sound" +} ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Axle/Head/Beam:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.9, 1, 3.3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 1e-05 ), Vector2( 1, 1e-05 ), Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1, 1e-05 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/Head/InternalBeam:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.7, 3.3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 1 ), Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1, 1e-05 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/Head/Beam/Hitbox/BeamShape:disabled") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 1, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ true, false, true ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/Head/BeamChargeParticles:emitting") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -25.1199, -25.1199 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 51.0254, 51.0254 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -26.8344, -26.8344 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -25.1199, -25.1199 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 51.0254, 51.0254 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0.5, 4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -26.8344, -26.8344 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/Head/Beam:visible") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.9, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} + +[sub_resource type="Animation" id=21] +resource_name = "Duck" +length = 0.2 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Axle:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 42, 78 ), Vector2( 42, 87.5 ), Vector2( 42, 97 ), Vector2( 42, 106.5 ), Vector2( 42, 116 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Axle:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ), Vector2( 0.00786438, 47.8817 ), Vector2( 0.005, 47.75 ), Vector2( 0.00294914, 47.9556 ), Vector2( 0, 48 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -25.1199, -42.8239, -52.6 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/JointFront/LegFront/ShinFront:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 51.0254, 71.6413, 96.9236, 110.502, 128.135 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointFront/LegFront:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -26.8344, -38.9649, -54.4339, -63.1815, -75.4293 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ), Vector2( 0.00589828, 47.9113 ), Vector2( 0, 47.75 ), Vector2( 0.004, 48 ), Vector2( 0.01, 48 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -25.1199, -42.6063, -52.8 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 51.0254, -5939.68, -82.9, 2.5, 128.421 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/JointBack/LegBack/KneeBack:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 36 ), Vector2( 0, 36 ), Vector2( 0, 36 ), Vector2( 0, 36 ), Vector2( 0, 36 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 6012.0, 180.0, 108.0, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Axle/JointBack/LegBack:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -26.8344, -39.4117, -54.688, -63.5339, -76.1645 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath(".:safe_from_breath") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 0.15 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} + +[sub_resource type="Animation" id=5] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Axle/Head/Beam:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1e-05 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Axle/Head/InternalBeam:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/Head/Beam/Hitbox/BeamShape:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/Head:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/Head/Beam:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/Head/BeamChargeParticles:emitting") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Axle:position") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 42, 78 ) ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Axle/Head/Intelli:visible") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Axle:visible") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:position") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ) ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Axle:rotation_degrees") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Axle/JointFront/LegFront/ShinFront:position") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 3.8147e-06, 36 ) ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Axle/JointFront/LegFront:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:position") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Axle/JointBack/LegBack/KneeBack:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 36 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Axle/JointBack/LegBack:position") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Axle/JointFront:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 11, -4 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Axle/JointFront:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath(".:make_explosions") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} + +[sub_resource type="Animation" id=24] +resource_name = "UnDuck" +length = 0.2 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Axle:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 42, 116 ), Vector2( 42, 106.5 ), Vector2( 42, 97 ), Vector2( 42, 87.5 ), Vector2( 42, 78 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Axle:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 48 ), Vector2( 0.00294914, 47.9556 ), Vector2( 0.005, 47.75 ), Vector2( 0.00786438, 47.8817 ), Vector2( 0.00983047, 47.8521 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -52.5731, -42.8239, -25.1199 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/JointFront/LegFront/ShinFront:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ), Vector2( 3.8147e-06, 36 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 129.974, 110.502, 96.9236, 71.6413, 51.0254 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointFront/LegFront:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -77.3026, -63.1815, -54.4339, -38.9649, -26.8344 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0.01, 48 ), Vector2( 0.004, 48 ), Vector2( 0, 47.75 ), Vector2( 0.00589828, 47.9113 ), Vector2( 0.00983047, 47.8521 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -52.1914, -42.6063, -25.1199 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 130.023, 2.5, -82.9, -5939.68, 51.0254 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/JointBack/LegBack/KneeBack:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 36 ), Vector2( 0, 36 ), Vector2( 0, 36 ), Vector2( 0, 36 ), Vector2( 0, 36 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 108.0, 180.0, 6012.0, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Axle/JointBack/LegBack:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, 0 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -77.4075, -63.5339, -54.688, -39.4117, -26.8344 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath(".:safe_from_breath") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0.05 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("UnDuck:playing") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=25] +resource_name = "Walk" +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Axle:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 42, 78 ), Vector2( 42, 72 ), Vector2( 42, 78 ), Vector2( 42, 72 ), Vector2( 42, 78 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Axle:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0, 0.0, 0.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -25.1199, -43.1593, -34.7251, -0.87926, -25.1199 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 51.0254, 60.0, 37.1965, -18.9988, 51.0254 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -26.8344, -13.4621, -3.40035, 19.2038, -26.8344 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -25.1199, -4.6348, -6.27576, -43.6, -25.1199 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 51.0254, 23.4, 43.8, 74.0, 51.0254 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.25, 0.5, 0.75, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -26.8344, -19.6257, -38.4223, -36.3773, -26.8344 ] +} + +[sub_resource type="Animation" id=15] +resource_name = "die" +length = 3.0 +tracks/0/type = "value" +tracks/0/path = NodePath("Axle:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ), Vector2( 43, 78 ), Vector2( 41, 78 ) ] +} +tracks/1/type = "method" +tracks/1/path = NodePath(".") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "_spawn_explosions" +} ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/Head/Intelli:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/3/type = "animation" +tracks/3/path = NodePath("BigExplosion/ExplosionAnimation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"clips": PoolStringArray( "explode" ), +"times": PoolRealArray( 2 ) +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 2.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath(".:make_explosions") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointBack:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -10, -4 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointBack:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointBack/LegBack:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointBack/LegBack/KneeBack:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 36 ) ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Axle/JointFront:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 11, -4 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Axle/JointFront:rotation_degrees") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Axle/JointFront/LegFront:position") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Axle/JointFront/LegFront/ShinFront:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 3.8147e-06, 36 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Axle/KneeBack:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 6.25088, 28.1233 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Axle/KneeBack:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -8.65142e-06 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath("Axle/KneeFront:position") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 27.2509, 28.1233 ) ] +} +tracks/27/type = "value" +tracks/27/path = NodePath("Axle/KneeFront:rotation_degrees") +tracks/27/interp = 1 +tracks/27/loop_wrap = true +tracks/27/imported = false +tracks/27/enabled = true +tracks/27/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -8.65142e-06 ] +} + +[sub_resource type="Animation" id=28] +resource_name = "force idle" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Axle/Head/Beam:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1e-05 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Axle/Head/InternalBeam:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Axle/Head/Beam/Hitbox/BeamShape:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Axle/Head:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Axle/Head/Beam:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Axle/Head/BeamChargeParticles:emitting") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -25.1199 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 51.0254 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ -26.8344 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Axle:position") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 42, 78 ) ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Axle/Head/Intelli:visible") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Axle:visible") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ) ] +} +tracks/17/type = "value" +tracks/17/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:position") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0.00983047, 47.8521 ) ] +} +tracks/18/type = "value" +tracks/18/path = NodePath("Axle:rotation_degrees") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/19/type = "value" +tracks/19/path = NodePath("Axle/JointFront/LegFront/ShinFront:position") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 3.8147e-06, 36 ) ] +} +tracks/20/type = "value" +tracks/20/path = NodePath("Axle/JointFront/LegFront:position") +tracks/20/interp = 1 +tracks/20/loop_wrap = true +tracks/20/imported = false +tracks/20/enabled = true +tracks/20/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/21/type = "value" +tracks/21/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:position") +tracks/21/interp = 1 +tracks/21/loop_wrap = true +tracks/21/imported = false +tracks/21/enabled = true +tracks/21/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/22/type = "value" +tracks/22/path = NodePath("Axle/JointBack/LegBack/KneeBack:position") +tracks/22/interp = 1 +tracks/22/loop_wrap = true +tracks/22/imported = false +tracks/22/enabled = true +tracks/22/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 36 ) ] +} +tracks/23/type = "value" +tracks/23/path = NodePath("Axle/JointBack/LegBack:position") +tracks/23/interp = 1 +tracks/23/loop_wrap = true +tracks/23/imported = false +tracks/23/enabled = true +tracks/23/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/24/type = "value" +tracks/24/path = NodePath("Axle/JointFront:position") +tracks/24/interp = 1 +tracks/24/loop_wrap = true +tracks/24/imported = false +tracks/24/enabled = true +tracks/24/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 11, -4 ) ] +} +tracks/25/type = "value" +tracks/25/path = NodePath("Axle/JointFront:rotation_degrees") +tracks/25/interp = 1 +tracks/25/loop_wrap = true +tracks/25/imported = false +tracks/25/enabled = true +tracks/25/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/26/type = "value" +tracks/26/path = NodePath(".:make_explosions") +tracks/26/interp = 1 +tracks/26/loop_wrap = true +tracks/26/imported = false +tracks/26/enabled = true +tracks/26/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} + +[sub_resource type="Animation" id=14] +resource_name = "stomping" +length = 5.0 +loop = true +tracks/0/type = "bezier" +tracks/0/path = NodePath("Axle/JointFront/LegFront/ShinFront/FootFront:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"points": PoolRealArray( -25.1199, -0.25, 0, 0, -2.10696, -33.4027, -0.7, 0.0638618, 0.25, 0, -33.4027, -0.25, 0, 0.25, 0, -25.1199, 0, -0.968742, 0, -2.10696 ), +"times": PoolRealArray( 0, 1.2, 1.5, 1.8 ) +} +tracks/1/type = "bezier" +tracks/1/path = NodePath("Axle/JointFront/LegFront/ShinFront:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"points": PoolRealArray( 51.0254, -0.25, 0, 0, 6.18464, 84.1092, -0.5, 0.233734, 0.25, 0, 84.1092, -0.25, 0, 0.25, 0, 51.0254, 0, 5.17889, 0, 6.18464 ), +"times": PoolRealArray( 0, 1.2, 1.5, 1.8 ) +} +tracks/2/type = "bezier" +tracks/2/path = NodePath("Axle/JointFront/LegFront:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"points": PoolRealArray( -26.8344, -0.25, 0, 0, -5.79777, -51.6355, -0.6, 0.20406, 0.25, 0, -51.6355, -0.25, 0, 0.25, 0, -26.8344, 0, -5.58774, 0, -5.79777 ), +"times": PoolRealArray( 0, 1.2, 1.5, 1.8 ) +} +tracks/3/type = "bezier" +tracks/3/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"points": PoolRealArray( -25.1199, -0.25, 0, 0.25, 0, -25.1199, -0.25, 0, 0, -2.10696, -33.4027, -0.7, 0.0638618, 0.25, 0, -33.4027, -0.25, 0, 0.25, 0, -25.1199, 0, -0.968742, 0, -2.10696 ), +"times": PoolRealArray( 0, 2.5, 3.7, 4, 4.3 ) +} +tracks/4/type = "bezier" +tracks/4/path = NodePath("Axle/JointBack/LegBack/KneeBack/ShinBack:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"points": PoolRealArray( 51.0254, -0.25, 0, 0.25, 0, 51.0254, -0.25, 0, 0, 6.18464, 84.1092, -0.5, 0.233734, 0.25, 0, 84.1092, -0.25, 0, 0.25, 0, 51.0254, 0, 5.17889, 0, 6.18464 ), +"times": PoolRealArray( 0, 2.5, 3.7, 4, 4.3 ) +} +tracks/5/type = "bezier" +tracks/5/path = NodePath("Axle/JointBack/LegBack:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"points": PoolRealArray( -26.8344, -0.25, 0, 0.25, 0, -26.8344, -0.25, 0, 0, -5.79777, -51.6355, -0.6, 0.20406, 0.25, 0, -51.6355, -0.25, 0, 0.25, 0, -26.8344, 0, -5.58774, 0, -5.79777 ), +"times": PoolRealArray( 0, 2.5, 3.7, 4, 4.3 ) +} +tracks/6/type = "value" +tracks/6/path = NodePath("Axle/JointBack/LegBack/KneeBack:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="ShaderMaterial" id=11] +shader = ExtResource( 3 ) +shader_param/speed = Vector2( 16, 32 ) +shader_param/ammount = Vector2( 0.6, 0.6 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="Curve" id=12] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.130639, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.348684, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=10] +shader = ExtResource( 14 ) +shader_param/cycle_speed = 1.0 +shader_param/gradient = ExtResource( 13 ) + +[sub_resource type="RectangleShape2D" id=6] +extents = Vector2( 128, 8 ) + +[sub_resource type="Curve" id=13] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.803571, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=22] +shader = ExtResource( 1 ) +shader_param/animate_noise = true +shader_param/noise_intensity = 1.0 +shader_param/fps = 60.0 + +[sub_resource type="ShaderMaterial" id=8] +shader = ExtResource( 11 ) +shader_param/pixel_scale = 1.0 + +[sub_resource type="ShaderMaterial" id=20] +resource_local_to_scene = true +shader = ExtResource( 17 ) +shader_param/color = Color( 1, 1, 1, 1 ) +shader_param/smooth_mode = true +shader_param/reverse = true +shader_param/opacity = 0.0 + +[sub_resource type="Animation" id=17] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ExplosionRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExplosionRect:material:shader_param/reverse") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ExplosionRect:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ) ] +} + +[sub_resource type="Animation" id=18] +resource_name = "explode" +length = 0.7 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("ExplosionRect:material:shader_param/opacity") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 1.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ExplosionRect:modulate") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0.833333 ), Color( 1, 1, 1, 0.666667 ), Color( 1, 1, 1, 0.5 ), Color( 1, 1, 1, 0.333333 ), Color( 1, 1, 1, 0.166667 ), Color( 1, 1, 1, 0 ) ] +} + +[sub_resource type="SegmentShape2D" id=26] +a = Vector2( 4, -76 ) +b = Vector2( 4, 76 ) + +[node name="2083" type="KinematicBody2D"] +collision_mask = 5 +script = ExtResource( 19 ) +explosion_rect = Rect2( 24, 16, 88, 64 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2( 60, 92 ) +shape = SubResource( 27 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +unique_name_in_owner = true +anims/Beam = SubResource( 4 ) +anims/Duck = SubResource( 21 ) +anims/RESET = SubResource( 5 ) +anims/UnDuck = SubResource( 24 ) +anims/Walk = SubResource( 25 ) +anims/die = SubResource( 15 ) +"anims/force idle" = SubResource( 28 ) +anims/stomping = SubResource( 14 ) + +[node name="Axle" type="Node2D" parent="."] +position = Vector2( 42, 78 ) +scale = Vector2( -1, 1 ) + +[node name="JointBack" type="Sprite" parent="Axle"] +modulate = Color( 0.74902, 0.74902, 0.74902, 1 ) +position = Vector2( -10, -4 ) +z_index = -1 +texture = ExtResource( 7 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="LegBack" type="Sprite" parent="Axle/JointBack"] +show_behind_parent = true +rotation = -0.468349 +texture = ExtResource( 9 ) +offset = Vector2( 0, 18 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 36 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="KneeBack" type="Node2D" parent="Axle/JointBack/LegBack"] +position = Vector2( 0, 36 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="ShinBack" type="Sprite" parent="Axle/JointBack/LegBack/KneeBack"] +rotation = 0.890561 +texture = ExtResource( 9 ) +offset = Vector2( 0, 24 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 48 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="FootBack" type="Sprite" parent="Axle/JointBack/LegBack/KneeBack/ShinBack"] +position = Vector2( 0.00983047, 47.8521 ) +rotation = -0.438425 +texture = ExtResource( 12 ) +offset = Vector2( -11.6527, 2.61113 ) +script = ExtResource( 10 ) +__meta__ = { +"_edit_bone_": true +} +rotation_lock = nan + +[node name="Endpoint" type="Position2D" parent="Axle/JointBack/LegBack/KneeBack/ShinBack/FootBack"] +position = Vector2( -17, 0 ) +__meta__ = { +"_edit_bone_": true, +"_gizmo_extents_": 4.0 +} + +[node name="KneeGraphic" type="RemoteTransform2D" parent="Axle/JointBack/LegBack/KneeBack"] +remote_path = NodePath("../../../../KneeBack") +update_rotation = false +update_scale = false + +[node name="Head" type="Sprite" parent="Axle"] +unique_name_in_owner = true +position = Vector2( 0, -4 ) +z_index = 5 +texture = ExtResource( 6 ) +offset = Vector2( -13, -25 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="End" type="Position2D" parent="Axle/Head"] +position = Vector2( -20, -28 ) +__meta__ = { +"_edit_bone_": true, +"_gizmo_extents_": 4.0 +} + +[node name="HitboxTransform" type="RemoteTransform2D" parent="Axle/Head"] +position = Vector2( -18, -10 ) + +[node name="CannonBG" type="ColorRect" parent="Axle/Head"] +show_behind_parent = true +margin_left = -64.0 +margin_top = -18.0 +margin_right = -32.0 +margin_bottom = -2.0 +color = Color( 0.266667, 0.266667, 0.305882, 1 ) + +[node name="Tailpipes" type="Sprite" parent="Axle/Head"] +visible = false +show_behind_parent = true +material = SubResource( 11 ) +position = Vector2( 21, -36 ) +texture = ExtResource( 2 ) + +[node name="SmokeParticles" type="CPUParticles2D" parent="Axle/Head/Tailpipes"] +position = Vector2( 10, -10 ) +amount = 12 +texture = ExtResource( 16 ) +direction = Vector2( 1.25, -1 ) +spread = 0.0 +gravity = Vector2( 0, -30 ) +initial_velocity = 20.0 +initial_velocity_random = 1.0 +angular_velocity = 180.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 12 ) +color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) + +[node name="SmokeParticles2" type="CPUParticles2D" parent="Axle/Head/Tailpipes"] +position = Vector2( 8, 0 ) +amount = 12 +texture = ExtResource( 16 ) +direction = Vector2( 1.25, -1 ) +spread = 0.0 +gravity = Vector2( 0, -30 ) +initial_velocity = 20.0 +initial_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 12 ) +color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) + +[node name="SmokeParticles3" type="CPUParticles2D" parent="Axle/Head/Tailpipes"] +position = Vector2( 5, -9 ) +amount = 12 +texture = ExtResource( 16 ) +direction = Vector2( 1.25, -1 ) +spread = 0.0 +gravity = Vector2( 0, -30 ) +initial_velocity = 20.0 +initial_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 12 ) +color = Color( 0.0666667, 0.0666667, 0.0666667, 1 ) + +[node name="Intelli" type="Sprite" parent="Axle/Head"] +show_behind_parent = true +position = Vector2( -37, -32 ) +texture = ExtResource( 5 ) +flip_h = true + +[node name="IntelliHeadPos" type="Position2D" parent="Axle/Head/Intelli"] +unique_name_in_owner = true +position = Vector2( 0, -4 ) + +[node name="Beam" type="Sprite" parent="Axle/Head"] +visible = false +show_behind_parent = true +material = SubResource( 10 ) +position = Vector2( -58, -10 ) +scale = Vector2( 1, 1e-05 ) +texture = ExtResource( 4 ) +offset = Vector2( -128, 0 ) +region_enabled = true +region_rect = Rect2( 0, 0, 256, 16 ) + +[node name="Hitbox" type="Area2D" parent="Axle/Head/Beam" groups=["blocks arrow", "enemy_hitbox"]] + +[node name="BeamShape" type="CollisionShape2D" parent="Axle/Head/Beam/Hitbox"] +position = Vector2( -128, 0 ) +z_index = 10 +shape = SubResource( 6 ) +disabled = true + +[node name="InternalBeam" type="Sprite" parent="Axle/Head"] +show_behind_parent = true +material = SubResource( 10 ) +position = Vector2( -33, -10 ) +scale = Vector2( 1e-05, 1 ) +texture = ExtResource( 4 ) +offset = Vector2( -12, 0 ) +region_enabled = true +region_rect = Rect2( 0, 0, 24, 16 ) + +[node name="BeamChargeParticles" type="CPUParticles2D" parent="Axle/Head"] +show_behind_parent = true +material = SubResource( 10 ) +position = Vector2( -62, -10 ) +scale = Vector2( 1, 0.987022 ) +emitting = false +amount = 12 +lifetime = 1.5 +speed_scale = 3.0 +texture = ExtResource( 15 ) +emission_shape = 3 +emission_points = PoolVector2Array( -32, 0, -28, -12, -28, 12, -24, -16, -24, 16, -30, -8, -30, 8, -32, -4, -32, 4 ) +emission_colors = PoolColorArray( ) +gravity = Vector2( 0, 0 ) +radial_accel = -32.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 0.5 +scale_amount_curve = SubResource( 13 ) + +[node name="Static" type="ColorRect" parent="Axle/Head"] +material = SubResource( 22 ) +margin_left = -28.0 +margin_top = -15.0 +margin_right = -14.0 +margin_bottom = -4.0 + +[node name="BulletPositions" type="Node2D" parent="Axle/Head"] +unique_name_in_owner = true +position = Vector2( -61, -18 ) +rotation = 3.14159 +scale = Vector2( 1, -1 ) + +[node name="Position1" type="Position2D" parent="Axle/Head/BulletPositions"] +position = Vector2( 6.08833, 2.28882e-05 ) +rotation = 2.87979 + +[node name="Position2" type="Position2D" parent="Axle/Head/BulletPositions"] +position = Vector2( 6.08832, 8.00003 ) +rotation = 3.14159 + +[node name="Position3" type="Position2D" parent="Axle/Head/BulletPositions"] +position = Vector2( 6.08832, 16 ) +rotation = 3.40339 + +[node name="JointFront" type="Sprite" parent="Axle"] +position = Vector2( 11, -4 ) +z_index = 5 +texture = ExtResource( 7 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="LegFront" type="Sprite" parent="Axle/JointFront"] +show_behind_parent = true +rotation = -0.468349 +texture = ExtResource( 9 ) +offset = Vector2( 0, 18 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 36 ) +__meta__ = { +"_edit_bone_": true, +"_edit_ik_": true +} + +[node name="ShinFront" type="Sprite" parent="Axle/JointFront/LegFront"] +material = SubResource( 8 ) +position = Vector2( 3.8147e-06, 36 ) +rotation = 0.890561 +texture = ExtResource( 9 ) +offset = Vector2( 0, 24 ) +region_enabled = true +region_rect = Rect2( 0, 0, 12, 48 ) +__meta__ = { +"_edit_bone_": true +} + +[node name="FootFront" type="Sprite" parent="Axle/JointFront/LegFront/ShinFront"] +position = Vector2( 0.00983047, 47.8521 ) +rotation = -0.438425 +texture = ExtResource( 12 ) +offset = Vector2( -11.6527, 2.61113 ) +script = ExtResource( 10 ) +__meta__ = { +"_edit_bone_": true +} +rotation_lock = nan + +[node name="Endpoint" type="Position2D" parent="Axle/JointFront/LegFront/ShinFront/FootFront"] +position = Vector2( -17, 0 ) +__meta__ = { +"_edit_bone_": true, +"_gizmo_extents_": 4.0 +} + +[node name="KneeGraphic" type="RemoteTransform2D" parent="Axle/JointFront/LegFront"] +position = Vector2( 7.62939e-06, 36 ) +remote_path = NodePath("../../../KneeFront") +update_rotation = false +update_scale = false + +[node name="KneeBack" type="Sprite" parent="Axle"] +modulate = Color( 0.74902, 0.74902, 0.74902, 1 ) +position = Vector2( 6.25089, 28.1233 ) +scale = Vector2( 1, -1 ) +z_index = -1 +texture = ExtResource( 8 ) +hframes = 8 +script = ExtResource( 10 ) +fps = 4.0 +ping_pong = true +rotation_lock = 0.0 + +[node name="KneeFront" type="Sprite" parent="Axle"] +position = Vector2( 27.2509, 28.1233 ) +z_index = 5 +texture = ExtResource( 8 ) +hframes = 8 +script = ExtResource( 10 ) +fps = 4.0 +rotation_lock = 0.0 + +[node name="BigExplosion" type="CanvasLayer" parent="."] +layer = 101 + +[node name="ExplosionRect" type="TextureRect" parent="BigExplosion"] +material = SubResource( 20 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 18 ) +flip_h = true +__meta__ = { +"_edit_lock_": true +} + +[node name="ExplosionAnimation" type="AnimationPlayer" parent="BigExplosion"] +anims/RESET = SubResource( 17 ) +anims/explode = SubResource( 18 ) + +[node name="DetectionBox" type="Area2D" parent="."] +collision_layer = 4 +collision_mask = 0 +monitoring = false + +[node name="CollisionShape2D" type="CollisionShape2D" parent="DetectionBox"] +position = Vector2( 100, 92 ) +shape = SubResource( 26 ) + +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_animation_finished"] diff --git a/objects/enemy/bullet_casing.gd b/objects/enemy/bullet_casing.gd new file mode 100644 index 0000000..ea7236f --- /dev/null +++ b/objects/enemy/bullet_casing.gd @@ -0,0 +1,12 @@ +extends RigidBody2D + + +var has_played_sound = false + + + +func _on_BoneParticle_body_entered(body): + if !has_played_sound: + Audio.play_sound(Audio.a_bullet_casing, Audio.ac_climb) + has_played_sound = true + diff --git a/objects/enemy/bullet_casing.tscn b/objects/enemy/bullet_casing.tscn index 40007dd..32239f0 100644 --- a/objects/enemy/bullet_casing.tscn +++ b/objects/enemy/bullet_casing.tscn @@ -1,16 +1,20 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=5 format=2] [ext_resource path="res://graphics/particles/bullet_casing.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/bullet_casing.gd" type="Script" id=2] [sub_resource type="PhysicsMaterial" id=4] -bounce = 0.75 +bounce = 0.5 [sub_resource type="RectangleShape2D" id=3] extents = Vector2( 1, 1.5 ) [node name="BoneParticle" type="RigidBody2D"] -collision_layer = 16 +collision_layer = 17 physics_material_override = SubResource( 4 ) +contacts_reported = 1 +contact_monitor = true +script = ExtResource( 2 ) [node name="Sprite" type="Sprite" parent="."] texture = ExtResource( 1 ) @@ -21,3 +25,6 @@ shape = SubResource( 3 ) __meta__ = { "_edit_group_": true } + +[connection signal="body_entered" from="." to="." method="_on_BoneParticle_body_entered"] +[connection signal="body_shape_entered" from="." to="." method="_on_BoneParticle_body_shape_entered"] diff --git a/objects/enemy/cop.gd b/objects/enemy/cop.gd index 71bd07e..47e0f9d 100644 --- a/objects/enemy/cop.gd +++ b/objects/enemy/cop.gd @@ -60,7 +60,7 @@ func _physics_process(delta): collider.get_parent().die() # play sound - Audio.play_sound(Audio.a_die_robot, Audio.ac_boss) + Audio.play_sound(Audio.a_explosion, Audio.ac_boss) # muzzle flash muzzle_flash.emitting = true diff --git a/objects/enemy/death_particles.gd b/objects/enemy/death_particles.gd new file mode 100644 index 0000000..24d7af4 --- /dev/null +++ b/objects/enemy/death_particles.gd @@ -0,0 +1,22 @@ +extends CPUParticles2D + + +const BloodSpray := preload("res://objects/environment/blood/blood_spray.tscn") + + +export var spray_ammount: int = 16 +export var spray_velocity: float = 80 +export var autoplay: bool = false +export var spray_scale: float = 1.0 + + +func _ready() -> void: + if autoplay: + emitting = true + yield(get_tree(), "idle_frame") + for i in spray_ammount: + var spray = BloodSpray.instance() + spray.global_position = global_position + spray.velocity = Vector2(randf() * spray_velocity, 0.0).rotated(randf() * TAU) + spray.scale = Vector2(spray_scale, spray_scale) + get_parent().add_child(spray) diff --git a/objects/enemy/death_particles.tscn b/objects/enemy/death_particles.tscn index 4dc4e64..1c620e2 100644 --- a/objects/enemy/death_particles.tscn +++ b/objects/enemy/death_particles.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://graphics/particles/blood.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/death_particles.gd" type="Script" id=2] [sub_resource type="Curve" id=43] _data = [ Vector2( 0, 1 ), 0.0, -0.113537, 0, 0, Vector2( 1, 0 ), -3.35032, 0.0, 0, 0 ] @@ -26,3 +27,4 @@ angle_random = 1.0 scale_amount = 0.5 scale_amount_random = 1.0 scale_amount_curve = SubResource( 43 ) +script = ExtResource( 2 ) diff --git a/objects/enemy/death_particles_big.gd b/objects/enemy/death_particles_big.gd new file mode 100644 index 0000000..f9e15c7 --- /dev/null +++ b/objects/enemy/death_particles_big.gd @@ -0,0 +1,20 @@ +extends CPUParticles2D + + +const BloodSpray := preload("res://objects/environment/blood/blood_spray_big.tscn") + + +export var spray_ammount: int = 1 +export var spray_velocity: float = 120 +export var autoplay: bool = false + + +func _ready() -> void: + if autoplay: + emitting = true + yield(get_tree(), "idle_frame") + for i in spray_ammount: + var spray = BloodSpray.instance() + spray.global_position = global_position + spray.velocity = Vector2(randf() * spray_velocity, 0.0).rotated(randf() * (TAU / 45)) + get_parent().add_child(spray) diff --git a/objects/enemy/death_particles_big.tscn b/objects/enemy/death_particles_big.tscn new file mode 100644 index 0000000..035dc72 --- /dev/null +++ b/objects/enemy/death_particles_big.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/particles/blood.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/death_particles_big.gd" type="Script" id=2] + +[sub_resource type="Curve" id=43] +_data = [ Vector2( 0, 1 ), 0.0, -0.113537, 0, 0, Vector2( 1, 0 ), -3.35032, 0.0, 0, 0 ] + +[node name="DeathSplatter" type="CPUParticles2D"] +emitting = false +amount = 32 +lifetime = 0.3 +one_shot = true +explosiveness = 0.9 +local_coords = false +texture = ExtResource( 1 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 50 ) +initial_velocity = 60.0 +initial_velocity_random = 0.9 +damping = 2.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 43 ) +script = ExtResource( 2 ) diff --git a/objects/enemy/death_particles_famira.gd b/objects/enemy/death_particles_famira.gd new file mode 100644 index 0000000..e250c94 --- /dev/null +++ b/objects/enemy/death_particles_famira.gd @@ -0,0 +1,23 @@ +extends CPUParticles2D + + +const BloodSpray := preload("res://objects/environment/blood/blood_spray.tscn") + + +export var spray_ammount: int = 16 +export var spray_velocity: float = 80 +export var autoplay: bool = false +export var spray_scale: float = 1.0 + + +func _ready() -> void: + if autoplay: + emitting = true + yield(get_tree(), "idle_frame") + for i in spray_ammount: + var spray = BloodSpray.instance() + spray.global_position = global_position + spray.velocity = Vector2(randf() * spray_velocity, 0.0).rotated(randf() * TAU) + spray.scale = Vector2(spray_scale, spray_scale) + spray.color = Color(0x9ccd67ff) + get_parent().add_child(spray) diff --git a/objects/enemy/death_particles_famira.tscn b/objects/enemy/death_particles_famira.tscn new file mode 100644 index 0000000..a6efa46 --- /dev/null +++ b/objects/enemy/death_particles_famira.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/particles/blood.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/death_particles_famira.gd" type="Script" id=2] + +[sub_resource type="Curve" id=43] +_data = [ Vector2( 0, 1 ), 0.0, -0.113537, 0, 0, Vector2( 1, 0 ), -3.35032, 0.0, 0, 0 ] + +[node name="DeathSplatter" type="CPUParticles2D"] +emitting = false +amount = 32 +lifetime = 0.3 +one_shot = true +explosiveness = 0.9 +local_coords = false +texture = ExtResource( 1 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 4 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 50 ) +initial_velocity = 60.0 +initial_velocity_random = 0.9 +damping = 2.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_random = 1.0 +scale_amount_curve = SubResource( 43 ) +script = ExtResource( 2 ) diff --git a/objects/enemy/eel.gd b/objects/enemy/eel.gd new file mode 100644 index 0000000..86d19ee --- /dev/null +++ b/objects/enemy/eel.gd @@ -0,0 +1,90 @@ +extends "res://objects/enemy/enemy.gd" + + +# distance between segments +const SEGMENT_LENGTH: float = 4.0 + +# number of segments +export var segments: int = 8 +# speed eel travels +export var speed: float = 32.0 +# how far eel travels along path for complete wave +export var wave_length: float = 0.0 +# intensity in pixels of eel wave animation +export var wave_amplitude: float = 0.0 + +var _segments: Array + +onready var head: PathFollow2D = $Head +onready var tail: PathFollow2D = $Tail + + +func _ready() -> void: + # get nodes + var first_segment: PathFollow2D = $Segment + var first_segment_shape: CollisionShape2D = $"%SegmentShape" + # initialize segments array + _segments = [] + _segments.resize(segments) + # loop for number of segments needed + for i in segments: + # create and add new segment instance + var new_segment = first_segment.duplicate() + add_child(new_segment) + _segments[i] = new_segment + # add new shape to hitbox + var new_segment_shape = first_segment_shape.duplicate() + $Hitbox.add_child(new_segment_shape) + # link segment's remote transform to its collision shape + var new_shape_transform = new_segment.get_node("ShapeTransform") + new_shape_transform.remote_path = new_shape_transform.get_path_to(new_segment_shape) + # free template segment + first_segment.queue_free() + first_segment_shape.queue_free() + + +func _physics_process(delta: float) -> void: + # move along path + head.offset += speed * delta + # position segments accordingly + _offset_segments() + # waving animation + _wave_segments() + + +func _offset_segments() -> void: + # put tail at end + tail.offset = head.offset - SEGMENT_LENGTH * float(segments + 1) + # loop through segments + for i in _segments.size(): + # set segment position based on index and length + _segments[i].offset = head.offset - SEGMENT_LENGTH * float(i + 1) + + +func _wave_segments() -> void: + # save the effort of looping if nothing will come of it + if wave_length == 0.0 and wave_amplitude == 0.0: + return + for child in get_children(): + # only affect childent that are pathfollows + var segment = child as PathFollow2D + if segment: + # multiply by tau to use pixels as unit + segment.v_offset = sin(segment.offset * TAU / wave_length) * wave_amplitude + + +func die() -> void: + # instance death particles for every segment + for segment in _segments: + # instance particles for this segment + var death_particles = DeathParticles.instance() + # TODO: something is wrong here, particles to not show up in correct position + death_particles.global_transform = segment.global_transform + # tone them down a little per-segment + death_particles.amount /= 4 + death_particles.initial_velocity /= 2.0 + # emit + death_particles.emitting = true + # detach from self + get_parent().add_child(death_particles) + .die() diff --git a/objects/enemy/eel.tscn b/objects/enemy/eel.tscn new file mode 100644 index 0000000..f4afb0a --- /dev/null +++ b/objects/enemy/eel.tscn @@ -0,0 +1,115 @@ +[gd_scene load_steps=13 format=2] + +[ext_resource path="res://objects/enemy/eel.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/eel_head.png" type="Texture" id=2] +[ext_resource path="res://graphics/enemy/eel_body.png" type="Texture" id=3] +[ext_resource path="res://graphics/enemy/eel_tail.png" type="Texture" id=4] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=6] + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 2, 2 ) + +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 4.5, 2 ) + +[sub_resource type="RectangleShape2D" id=9] +extents = Vector2( 2, 2 ) + +[sub_resource type="AtlasTexture" id=10] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 14, 12 ) + +[sub_resource type="AtlasTexture" id=11] +atlas = ExtResource( 2 ) +region = Rect2( 14, 0, 14, 12 ) + +[sub_resource type="SpriteFrames" id=12] +animations = [ { +"frames": [ SubResource( 10 ), SubResource( 11 ) ], +"loop": true, +"name": "chomp", +"speed": 8.0 +} ] + +[sub_resource type="ShaderMaterial" id=6] +shader = ExtResource( 6 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[node name="Eel" type="Path2D" groups=["enemy"]] +curve = null +script = ExtResource( 1 ) +segments = 2 + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] +position = Vector2( 4, 0 ) +z_index = 2 + +[node name="TailShape" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( -4, 0 ) +shape = SubResource( 8 ) + +[node name="HeadShape" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( -1.5, 0 ) +shape = SubResource( 7 ) + +[node name="SegmentShape" type="CollisionShape2D" parent="Hitbox"] +unique_name_in_owner = true +position = Vector2( -4, 0 ) +shape = SubResource( 9 ) + +[node name="Head" type="PathFollow2D" parent="." groups=["eel_segment"]] +offset = 8.0 +cubic_interp = false +lookahead = 0.001 + +[node name="Sprite" type="AnimatedSprite" parent="Head"] +position = Vector2( 4, 0 ) +z_index = 1 +frames = SubResource( 12 ) +animation = "chomp" +playing = true + +[node name="Border" type="AnimatedSprite" parent="Head/Sprite"] +material = SubResource( 6 ) +frames = SubResource( 12 ) +animation = "chomp" +playing = true + +[node name="ShapeTransform" type="RemoteTransform2D" parent="Head"] +position = Vector2( 2.5, 0 ) +remote_path = NodePath("../../Hitbox/HeadShape") + +[node name="Tail" type="PathFollow2D" parent="."] +cubic_interp = false +lookahead = 0.001 + +[node name="Sprite" type="Sprite" parent="Tail"] +position = Vector2( -2, 0 ) +z_index = 1 +texture = ExtResource( 4 ) + +[node name="Border" type="Sprite" parent="Tail/Sprite"] +material = SubResource( 6 ) +texture = ExtResource( 4 ) + +[node name="ShapeTransform" type="RemoteTransform2D" parent="Tail"] +remote_path = NodePath("../../Hitbox/TailShape") + +[node name="Segment" type="PathFollow2D" parent="."] +offset = 4.0 +cubic_interp = false +lookahead = 0.001 + +[node name="Sprite" type="Sprite" parent="Segment"] +z_index = 1 +texture = ExtResource( 3 ) + +[node name="Border" type="Sprite" parent="Segment/Sprite"] +material = SubResource( 6 ) +texture = ExtResource( 3 ) + +[node name="ShapeTransform" type="RemoteTransform2D" parent="Segment"] +remote_path = NodePath("../../Hitbox/SegmentShape") + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/enemy.gd b/objects/enemy/enemy.gd index b2042e9..db51571 100644 --- a/objects/enemy/enemy.gd +++ b/objects/enemy/enemy.gd @@ -18,10 +18,9 @@ signal died() #export var can_be_killed_by_arrow = true #export var can_be_squashed = true -export var score_for_killing = 0 export var blood = true -export var death_sound: AudioStream = preload("res://audio/sounds/die.wav") +export var death_sound: AudioStream = preload("res://audio/sounds/die.ogg") var death_blood_offset = Vector2.ZERO func _on_Hitbox_area_entered(area): @@ -37,6 +36,5 @@ func die(): get_parent().add_child(death_particles) Audio.play_sound(death_sound, Audio.ac_die) - Game.score += score_for_killing emit_signal("died") queue_free() diff --git a/objects/enemy/enemy_arrow.tscn b/objects/enemy/enemy_arrow.tscn index 398b4ba..87f9239 100644 --- a/objects/enemy/enemy_arrow.tscn +++ b/objects/enemy/enemy_arrow.tscn @@ -1,14 +1,17 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=10 format=2] -[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] [ext_resource path="res://graphics/player/arrow.png" type="Texture" id=2] [ext_resource path="res://objects/player/arrow_projectile.gd" type="Script" id=3] [ext_resource path="res://graphics/particles/dust.png" type="Texture" id=4] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=5] [sub_resource type="ShaderMaterial" id=1] +resource_local_to_scene = true shader = ExtResource( 1 ) shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = false +shader_param/palette = ExtResource( 5 ) [sub_resource type="Curve" id=3] _data = [ Vector2( 0, 1 ), 0.0, -0.139481, 0, 0, Vector2( 1, 0 ), -2.82064, 0.0, 0, 0 ] @@ -47,6 +50,7 @@ scale_amount_random = 0.25 scale_amount_curve = SubResource( 3 ) [node name="Hitbox" type="Area2D" parent="." groups=["arrow"]] +collision_layer = 4 collision_mask = 5 [node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] diff --git a/objects/enemy/enemy_jump.gd b/objects/enemy/enemy_jump.gd index 35b39bc..74fbc89 100644 --- a/objects/enemy/enemy_jump.gd +++ b/objects/enemy/enemy_jump.gd @@ -12,10 +12,9 @@ onready var sprite = $Sprite func _ready(): anims.play("idle") - #Easy mode - if Game.is_easy_mode: - speed *= Game.easy_mode_speed_factor - anims.playback_speed *= Game.easy_mode_speed_factor + # adjust to difficulty + speed *= Game.enemy_speed_factor + anims.playback_speed *= Game.enemy_speed_factor func _physics_process(delta): if anims.current_animation == "jump": diff --git a/objects/enemy/enemy_move_diagonal.gd b/objects/enemy/enemy_move_diagonal.gd index a289010..e718565 100644 --- a/objects/enemy/enemy_move_diagonal.gd +++ b/objects/enemy/enemy_move_diagonal.gd @@ -12,14 +12,14 @@ export(int, "/", "\\") var move_direction onready var startpos = position func _ready(): - death_sound = Audio.a_die_robot + death_sound = Audio.a_explosion up_boundary *= 8 down_boundary *= 8 #Move in direction selected if move_direction == 0: direction = Vector2(1,-1) - #Speed - speed *= Game.easy_mode_speed_factor + # adjust to difficulty + speed *= Game.enemy_speed_factor func _physics_process(delta): #Move diff --git a/objects/enemy/enemy_move_sidesideupdown.gd b/objects/enemy/enemy_move_sidesideupdown.gd index 365c157..86cec17 100644 --- a/objects/enemy/enemy_move_sidesideupdown.gd +++ b/objects/enemy/enemy_move_sidesideupdown.gd @@ -21,9 +21,8 @@ func _ready(): return left_up_boundary *= 8 right_down_boundary *= 8 - #Easy mode - if Game.is_easy_mode == true: - speed = speed * Game.easy_mode_speed_factor + # adjust to difficulty + speed *= Game.enemy_speed_factor func _physics_process(delta): if Engine.editor_hint: diff --git a/objects/enemy/enemy_speedup_in_range.gd b/objects/enemy/enemy_speedup_in_range.gd index 6541c08..6fb0ebc 100644 --- a/objects/enemy/enemy_speedup_in_range.gd +++ b/objects/enemy/enemy_speedup_in_range.gd @@ -20,11 +20,10 @@ var speed = 50 var go_fast = false func _ready(): - #Easy mode - if Game.is_easy_mode: - speed *= Game.easy_mode_speed_factor - slower_speed *= Game.easy_mode_speed_factor - faster_speed *= Game.easy_mode_speed_factor + # adjust to difficulty + speed *= Game.enemy_speed_factor + slower_speed *= Game.enemy_speed_factor + faster_speed *= Game.enemy_speed_factor func _physics_process(delta): if move_direction == 0: diff --git a/objects/enemy/explosion.gd b/objects/enemy/explosion.gd index b357993..c233713 100644 --- a/objects/enemy/explosion.gd +++ b/objects/enemy/explosion.gd @@ -2,7 +2,7 @@ extends "res://objects/enemy/enemy.gd" func _ready(): $AnimatedSprite.play("explode") - Audio.play_sound(Audio.a_die_robot,Audio.ac_die) + Audio.play_sound(Audio.a_explosion,Audio.ac_boss) func _on_animation_finished(): queue_free() diff --git a/objects/enemy/explosion.tscn b/objects/enemy/explosion.tscn index 0b81cad..8362a16 100644 --- a/objects/enemy/explosion.tscn +++ b/objects/enemy/explosion.tscn @@ -39,6 +39,7 @@ animations = [ { extents = Vector2( 24, 24 ) [node name="Explosion" type="Node2D"] +pause_mode = 2 script = ExtResource( 1 ) blood = false diff --git a/objects/enemy/fish.tscn b/objects/enemy/fish.tscn new file mode 100644 index 0000000..876e086 --- /dev/null +++ b/objects/enemy/fish.tscn @@ -0,0 +1,87 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://graphics/enemy/fish.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/enemy_move_sidesideupdown.gd" type="Script" id=3] + +[sub_resource type="AtlasTexture" id=6] +atlas = ExtResource( 1 ) +region = Rect2( 0, 0, 11, 10 ) + +[sub_resource type="AtlasTexture" id=7] +atlas = ExtResource( 1 ) +region = Rect2( 11, 0, 11, 10 ) + +[sub_resource type="AtlasTexture" id=10] +atlas = ExtResource( 1 ) +region = Rect2( 22, 0, 11, 10 ) + +[sub_resource type="SpriteFrames" id=4] +animations = [ { +"frames": [ SubResource( 6 ), SubResource( 7 ), SubResource( 6 ), SubResource( 10 ) ], +"loop": true, +"name": "default", +"speed": 7.0 +} ] + +[sub_resource type="RectangleShape2D" id=5] +extents = Vector2( 4, 4 ) + +[sub_resource type="Animation" id=8] +resource_name = "glow" +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("AnimatedSprite:modulate") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1, 2 ), +"transitions": PoolRealArray( 0.5, 4, 1 ), +"update": 0, +"values": [ Color( 1.5, 1.5, 1.5, 1 ), Color( 0.8, 0.8, 0.8, 1 ), Color( 1.5, 1.5, 1.5, 1 ) ] +} + +[sub_resource type="Animation" id=9] +resource_name = "bob" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("AnimatedSprite:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 6 ), Vector2( 0, 2 ), Vector2( 0, 6 ) ] +} + +[node name="Fish" type="Node2D" groups=["enemy"]] +script = ExtResource( 3 ) +node_to_flip = NodePath("AnimatedSprite") + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +modulate = Color( 0.8, 0.8, 0.8, 1 ) +light_mask = 0 +frames = SubResource( 4 ) +frame = 2 +playing = true + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 0, 4 ) +shape = SubResource( 5 ) + +[node name="GlowAnim" type="AnimationPlayer" parent="."] +autoplay = "glow" +anims/glow = SubResource( 8 ) + +[node name="BobAnim" type="AnimationPlayer" parent="."] +autoplay = "bob" +anims/bob = SubResource( 9 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/hellarcher.tscn b/objects/enemy/hellarcher.tscn index 2200f3b..11a6095 100644 --- a/objects/enemy/hellarcher.tscn +++ b/objects/enemy/hellarcher.tscn @@ -105,7 +105,7 @@ material = SubResource( 18 ) position = Vector2( 5, -2 ) texture = ExtResource( 2 ) region_enabled = true -region_rect = Rect2( 0, 0, 19, 20 ) +region_rect = Rect2( 133, 0, 19, 20 ) [node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] position = Vector2( 5, -2 ) diff --git a/objects/enemy/laser_wall.gd b/objects/enemy/laser_wall.gd index a214f34..931bfae 100644 --- a/objects/enemy/laser_wall.gd +++ b/objects/enemy/laser_wall.gd @@ -12,10 +12,9 @@ onready var sparks = $SparkParticles func _ready(): yield(get_tree().create_timer(delay, false), "timeout") _disable_laser() - #Easy mode - if Game.is_easy_mode: - off_time /= Game.easy_mode_speed_factor - on_time /= Game.easy_mode_speed_factor + # adjust to difficulty + off_time /= Game.enemy_speed_factor + on_time /= Game.enemy_speed_factor func _physics_process(delta): if cast.is_colliding(): @@ -32,7 +31,6 @@ func _physics_process(delta): sparks.emitting = false func switch_action(): - Console.print("Disable laser") cast.enabled = false off_time = INF on_time = 0 diff --git a/objects/enemy/mine.tscn b/objects/enemy/mine.tscn index 2957c57..e458781 100644 --- a/objects/enemy/mine.tscn +++ b/objects/enemy/mine.tscn @@ -1,11 +1,13 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=8 format=2] [ext_resource path="res://objects/enemy/mine.gd" type="Script" id=1] [ext_resource path="res://graphics/enemy/mine.png" type="Texture" id=2] [ext_resource path="res://graphics/enemy/chain.png" type="Texture" id=3] +[sub_resource type="ShaderMaterial" id=4] + [sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 8, 8 ) +extents = Vector2( 7, 7.5 ) [sub_resource type="Animation" id=2] length = 0.001 @@ -77,6 +79,7 @@ position = Vector2( 8, 8 ) cast_to = Vector2( 0, 192 ) [node name="Chain" type="Line2D" parent="."] +material = SubResource( 4 ) position = Vector2( 0, 8 ) points = PoolVector2Array( 8, 0, 8, 16 ) width = 4.0 @@ -91,10 +94,10 @@ position = Vector2( 8, 8 ) texture = ExtResource( 2 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 0, 0.5 ) shape = SubResource( 1 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] -autoplay = "sway" anims/RESET = SubResource( 2 ) anims/sway = SubResource( 3 ) diff --git a/objects/enemy/robot_die.gd b/objects/enemy/robot_die.gd index 611d5cc..ff779ad 100644 --- a/objects/enemy/robot_die.gd +++ b/objects/enemy/robot_die.gd @@ -1,9 +1,23 @@ extends Node2D -func _ready(): +const BloodSpray := preload("res://objects/environment/blood/blood_spray.tscn") + + +export var spray_color := Color(0x20223aff) +export var spray_ammount: int = 16 +export var spray_velocity: float = 80 + + +func _ready() -> void: $AnimatedSprite.playing = true - + for i in spray_ammount: + var spray = BloodSpray.instance() + spray.color = spray_color + spray.global_position = global_position + spray.velocity = Vector2(randf() * spray_velocity, 0.0).rotated(randf() * TAU) + get_parent().add_child(spray) + func _on_AnimatedSprite_animation_finished(): $AnimatedSprite.queue_free() diff --git a/objects/enemy/roboturret.gd b/objects/enemy/roboturret.gd index 4fcb76d..bef4570 100644 --- a/objects/enemy/roboturret.gd +++ b/objects/enemy/roboturret.gd @@ -8,36 +8,40 @@ onready var timer = $Timer onready var anims = $AnimationPlayer onready var shootpos = $ShootPos onready var raycast = $RayCast2D +onready var muzzle_flash = $MuzzleFlashParticles const ArrowProjectile = preload("res://objects/enemy/roboturret_proj.tscn") +const Death = preload("res://objects/enemy/roboturret_die.tscn") func _ready(): - death_sound = Audio.a_die_robot - #Easy Mode - if Game.is_easy_mode: - shoot_time /= Game.easy_mode_speed_factor - arrow_speed *= Game.easy_mode_speed_factor + timer.start(shoot_time) + death_sound = Audio.a_explosion + # adjust to difficulty + shoot_time /= Game.enemy_speed_factor + arrow_speed *= Game.enemy_speed_factor func _physics_process(delta): if raycast.is_colliding(): - if sign(shootpos.position.x) == -1: - anims.play("turn right") - else: - anims.play("turn left") - #Do not charge up offscreen - if Game.get_sector(position) != Game.current_sector: timer.start() + if raycast.get_collider().is_in_group("player_hitbox"): + if sign(shootpos.position.x) == -1: + anims.play("turn right") + else: + anims.play("turn left") func spawn_bullet(): + muzzle_flash.emitting = true var arrow = ArrowProjectile.instance() arrow.global_position = global_position + (shootpos.position * scale) arrow.direction = sign(shootpos.position.x) * scale.x arrow.target_group = "player_hitbox" arrow.speed = arrow_speed Game.get_map().add_child(arrow) - timer.start(shoot_time) func die(): .die() - Game.instance_node(load("res://objects/enemy/roboturret_die.tscn"), position.x, position.y, get_parent()) + var death = Death.instance() + death.spray_color = Color(0xffbe42ff) + death.global_position = global_position + get_parent().add_child(death) func _on_Timer_timeout(): if !anims.is_playing(): spawn_bullet() diff --git a/objects/enemy/roboturret.tscn b/objects/enemy/roboturret.tscn index deb7d32..6d0d60f 100644 --- a/objects/enemy/roboturret.tscn +++ b/objects/enemy/roboturret.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=11 format=2] +[gd_scene load_steps=14 format=2] [ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] [ext_resource path="res://graphics/enemy/roboturret.png" type="Texture" id=2] [ext_resource path="res://objects/enemy/roboturret.gd" type="Script" id=3] [ext_resource path="res://graphics/enemy/tin_eye.png" type="Texture" id=4] +[ext_resource path="res://graphics/particles/muzzle_flash.png" type="Texture" id=5] [sub_resource type="ShaderMaterial" id=1] shader = ExtResource( 1 ) @@ -22,7 +23,31 @@ tracks/0/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, -"values": [ Vector2( -9, 2 ) ] +"values": [ Vector2( -9, 3 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("MuzzleFlashParticles:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 240.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("MuzzleFlashParticles:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -7, 3 ) ] } [sub_resource type="Animation" id=3] @@ -50,7 +75,7 @@ tracks/1/keys = { "times": PoolRealArray( 0, 0.4 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, -"values": [ Vector2( 9, 3 ), Vector2( -9, 3 ) ] +"values": [ Vector2( 15, 3 ), Vector2( -9, 3 ) ] } tracks/2/type = "value" tracks/2/path = NodePath("RayCast2D:cast_to") @@ -64,6 +89,30 @@ tracks/2/keys = { "update": 1, "values": [ Vector2( -48, 0 ), Vector2( 48, 0 ) ] } +tracks/3/type = "value" +tracks/3/path = NodePath("MuzzleFlashParticles:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 60.0, 240.0 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("MuzzleFlashParticles:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( 13, 3 ), Vector2( -7, 3 ) ] +} [sub_resource type="Animation" id=4] resource_name = "turn right" @@ -90,7 +139,7 @@ tracks/1/keys = { "times": PoolRealArray( 0, 0.4 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, -"values": [ Vector2( -9, 3 ), Vector2( 9, 3 ) ] +"values": [ Vector2( -9, 3 ), Vector2( 15, 3 ) ] } tracks/2/type = "value" tracks/2/path = NodePath("RayCast2D:cast_to") @@ -104,9 +153,33 @@ tracks/2/keys = { "update": 1, "values": [ Vector2( 48, 0 ), Vector2( -48, 0 ) ] } +tracks/3/type = "value" +tracks/3/path = NodePath("MuzzleFlashParticles:position") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -7, 3 ), Vector2( 13, 3 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("MuzzleFlashParticles:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.4 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 240.0, 60.0 ] +} [sub_resource type="RectangleShape2D" id=5] -extents = Vector2( 4, 4 ) +extents = Vector2( 2, 3 ) [sub_resource type="Animation" id=6] resource_name = "eye hue" @@ -124,9 +197,17 @@ tracks/0/keys = { "values": [ Color( 0.560784, 1, 0.560784, 1 ), Color( 1, 0.56, 0.567333, 1 ), Color( 0.560784, 1, 0.560784, 1 ) ] } +[sub_resource type="Curve" id=7] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.5, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=8] +interpolation_mode = 2 +offsets = PoolRealArray( 0.20339, 0.432203 ) +colors = PoolColorArray( 1, 1, 1, 1, 1, 1, 0.290196, 1 ) + [node name="Roboturret" type="Node2D" groups=["enemy"]] script = ExtResource( 3 ) -score_for_killing = 100 +blood = false [node name="Sprite" type="Sprite" parent="."] material = SubResource( 1 ) @@ -136,12 +217,12 @@ hframes = 5 region_rect = Rect2( 20, 0, 20, 16 ) [node name="Eye" type="Sprite" parent="."] -modulate = Color( 0.560784, 1, 0.560784, 1 ) +modulate = Color( 0.912157, 0.648, 0.566023, 1 ) position = Vector2( 3, 3 ) texture = ExtResource( 4 ) [node name="ShootPos" type="Position2D" parent="."] -position = Vector2( -9, 2 ) +position = Vector2( -9, 3 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] playback_speed = 0.75 @@ -150,24 +231,41 @@ anims/RESET = SubResource( 2 ) "anims/turn right" = SubResource( 4 ) [node name="Timer" type="Timer" parent="."] -autostart = true [node name="RayCast2D" type="RayCast2D" parent="."] position = Vector2( 3, 3 ) enabled = true cast_to = Vector2( 48, 0 ) -collision_mask = 8 +collision_mask = 10 collide_with_areas = true [node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] [node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] -position = Vector2( 4, 4 ) +position = Vector2( 3, 5 ) shape = SubResource( 5 ) [node name="EyeAnim" type="AnimationPlayer" parent="."] autoplay = "eye hue" "anims/eye hue" = SubResource( 6 ) +[node name="MuzzleFlashParticles" type="CPUParticles2D" parent="."] +pause_mode = 2 +unique_name_in_owner = true +position = Vector2( -7, 3 ) +rotation = 4.18879 +emitting = false +amount = 6 +lifetime = 0.1 +one_shot = true +explosiveness = 0.75 +draw_order = 1 +texture = ExtResource( 5 ) +gravity = Vector2( 0, 0 ) +angle = 120.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 7 ) +color_ramp = SubResource( 8 ) + [connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"] [connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/roboturret_proj.tscn b/objects/enemy/roboturret_proj.tscn index 4d7c3a8..eb04445 100644 --- a/objects/enemy/roboturret_proj.tscn +++ b/objects/enemy/roboturret_proj.tscn @@ -1,25 +1,76 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=9 format=2] -[ext_resource path="res://objects/enemy/enemy_arrow.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=1] [ext_resource path="res://graphics/enemy/roboturret_projectile.png" type="Texture" id=2] +[ext_resource path="res://objects/player/arrow_projectile.gd" type="Script" id=3] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=4] + +[sub_resource type="ShaderMaterial" id=7] +shader = ExtResource( 4 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="Curve" id=3] +_data = [ Vector2( 0, 1 ), 0.0, -0.139481, 0, 0, Vector2( 1, 0 ), -2.82064, 0.0, 0, 0 ] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 3.5, 1 ) -[node name="BulletBall" instance=ExtResource( 1 )] -light_mask = 0 +[sub_resource type="Curve" id=6] +_data = [ Vector2( 0, 1 ), 0.0, -1.45746, 0, 0, Vector2( 1, 0 ), 0.00323196, 0.0, 0, 0 ] -[node name="Sprite" parent="." index="0"] +[node name="BulletBall" type="Node2D"] +light_mask = 0 +script = ExtResource( 3 ) +target_group = "player_hitbox" + +[node name="Sprite" type="Sprite" parent="."] +material = SubResource( 7 ) +z_index = -1 texture = ExtResource( 2 ) -[node name="DustParticles" parent="." index="1"] +[node name="DustParticles" type="CPUParticles2D" parent="."] +show_behind_parent = true position = Vector2( -2, 0 ) -amount = 8 +z_index = -1 +local_coords = false +texture = ExtResource( 1 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 8.0 +initial_velocity_random = 0.18 +damping = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.25 +scale_amount_random = 0.25 +scale_amount_curve = SubResource( 3 ) -[node name="Hitbox" parent="." index="2"] +[node name="Hitbox" type="Area2D" parent="." groups=["arrow"]] collision_layer = 4 -collision_mask = 1 -[node name="CollisionShape2D" parent="Hitbox" index="0"] +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] position = Vector2( -0.5, 0 ) shape = SubResource( 1 ) + +[node name="SparkParticles" type="CPUParticles2D" parent="."] +position = Vector2( 4, 0 ) +emitting = false +amount = 16 +lifetime = 0.5 +one_shot = true +explosiveness = 1.0 +texture = ExtResource( 1 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 30.0 +initial_velocity_random = 0.5 +damping = 50.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.3 +scale_amount_curve = SubResource( 6 ) +color = Color( 1, 1, 0.290196, 1 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="body_entered" from="Hitbox" to="." method="_on_Hitbox_body_entered"] diff --git a/objects/enemy/rolling_fiend.gd b/objects/enemy/rolling_fiend.gd index 37860eb..a0c88b0 100644 --- a/objects/enemy/rolling_fiend.gd +++ b/objects/enemy/rolling_fiend.gd @@ -1,44 +1,64 @@ extends "res://objects/enemy/enemy.gd" +## the floor directions a fiend can be attached to const DIRS = [Vector2.DOWN, Vector2.RIGHT, Vector2.UP, Vector2.LEFT] export var move_speed: float = 50.0 export var clockwise: bool = false +## keep options for shape query around because they will mostly stay the same onready var floor_test = Physics2DShapeQueryParameters.new() onready var test_shape = $FloorTestShape +## index of the current floor direction var floor_direction: int = 0 +## builds up movement so that fractional movement carries on var movement_accumulator: float = 0.0 func _ready(): # scale animation to move speed $AnimatedSprite.speed_scale = inverse_lerp(0.0, 50.0, move_speed) + # flip if going backwards if clockwise: $AnimatedSprite.flip_h = true + # fill in shape query parameters that stay the same floor_test.set_shape(test_shape.shape) floor_test.collision_layer = 1 + # loop through possible directions to find which one should start on for i in DIRS.size(): if is_on_surface(DIRS[i]): floor_direction = i break - #Easy mode - if Game.is_easy_mode: - move_speed *= Game.easy_mode_speed_factor + # adjust to difficulty + move_speed *= Game.enemy_speed_factor func _physics_process(delta): + # add to accumulator movement_accumulator += move_speed * delta + # move one pixel at a time until out of integer movment while movement_accumulator >= 1.0: + # check next direction for wall if clockwise, else previous var offset = 1 if clockwise else -1 + # movement dir should be the next direction from the floor direction var move_dir = posmod(floor_direction + offset, DIRS.size()) + # check if gone off edge if !is_on_surface(DIRS[floor_direction]): + # change to next floor direction floor_direction = posmod(floor_direction - offset, DIRS.size()) + # check if collided with wall elif is_on_surface(DIRS[move_dir]): + # new floor direction is where wall is floor_direction = move_dir + # move along new floor direction position += DIRS[posmod(floor_direction + offset, DIRS.size())] + # 1 pixel of movement spent from accumulator movement_accumulator -= 1.0 +## tests if there is a floor 1 pixel in the direction tested func is_on_surface(dir): + # get the physics space state var space_state = get_world_2d().direct_space_state + # set position to test box at, moved 1 pixel in the direction tested floor_test.transform = test_shape.global_transform.translated(dir) - return space_state.collide_shape(floor_test, 1).size() > 0 + # collide_shape returns array of collisions, if not empy there is a floor there + return not space_state.collide_shape(floor_test, 1).empty() diff --git a/objects/enemy/rolling_saw.tscn b/objects/enemy/rolling_saw.tscn index 3dab984..cee4f76 100644 --- a/objects/enemy/rolling_saw.tscn +++ b/objects/enemy/rolling_saw.tscn @@ -34,7 +34,7 @@ extents = Vector2( 4, 3.75 ) [node name="RollingSaw" type="Node2D" groups=["enemy"]] script = ExtResource( 3 ) score_for_killing = 40 -move_speed = 50.0 +blood = false [node name="AnimatedSprite" type="AnimatedSprite" parent="."] material = SubResource( 5 ) diff --git a/objects/enemy/scope.tscn b/objects/enemy/scope.tscn new file mode 100644 index 0000000..7f9ef94 --- /dev/null +++ b/objects/enemy/scope.tscn @@ -0,0 +1,148 @@ +[gd_scene load_steps=19 format=2] + +[ext_resource path="res://objects/enemy/cop.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/cop/scope_idle.png" type="Texture" id=2] +[ext_resource path="res://graphics/enemy/cop/scope_walk.png" type="Texture" id=3] +[ext_resource path="res://graphics/enemy/cop/scope_shoot.png" type="Texture" id=4] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=5] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=6] +[ext_resource path="res://graphics/particles/muzzle_flash.png" type="Texture" id=7] + +[sub_resource type="ShaderMaterial" id=7] +shader = ExtResource( 5 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=13] +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=14] +atlas = ExtResource( 3 ) +region = Rect2( 20, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=15] +atlas = ExtResource( 3 ) +region = Rect2( 40, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=16] +atlas = ExtResource( 3 ) +region = Rect2( 60, 0, 20, 21 ) + +[sub_resource type="SpriteFrames" id=6] +animations = [ { +"frames": [ ExtResource( 2 ) ], +"loop": false, +"name": "idle", +"speed": 5.0 +}, { +"frames": [ ExtResource( 4 ) ], +"loop": false, +"name": "shoot", +"speed": 1.0 +}, { +"frames": [ SubResource( 13 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ) ], +"loop": true, +"name": "walk", +"speed": 5.0 +} ] + +[sub_resource type="Curve" id=11] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.5, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=12] +interpolation_mode = 2 +offsets = PoolRealArray( 0.20339, 0.432203 ) +colors = PoolColorArray( 1, 1, 1, 1, 1, 1, 0.290196, 1 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 3, 8 ) + +[sub_resource type="Curve" id=9] +_data = [ Vector2( 0, 1 ), 0.0, -1.45746, 0, 0, Vector2( 1, 0 ), 0.00323196, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=10] +offsets = PoolRealArray( 0, 0.515152 ) +colors = PoolColorArray( 1, 1, 1, 1, 1, 1, 0.290196, 1 ) + +[node name="Cop" type="Node2D" groups=["cop", "enemy"]] +script = ExtResource( 1 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +show_behind_parent = true +material = SubResource( 7 ) +position = Vector2( 5, -2 ) +frames = SubResource( 6 ) +animation = "idle" +playing = true + +[node name="ShootPosition" type="Position2D" parent="AnimatedSprite"] +unique_name_in_owner = true +position = Vector2( 7, 0.5 ) +__meta__ = { +"_gizmo_extents_": 4.0 +} + +[node name="ShootCast" type="RayCast2D" parent="AnimatedSprite/ShootPosition"] +unique_name_in_owner = true +enabled = true +cast_to = Vector2( 72, 0 ) +collision_mask = 8 +collide_with_areas = true + +[node name="GraphicsCast" type="RayCast2D" parent="AnimatedSprite/ShootPosition"] +unique_name_in_owner = true +visible = false +cast_to = Vector2( 256, 0 ) +collision_mask = 8 + +[node name="ShootLine" type="Line2D" parent="AnimatedSprite/ShootPosition"] +unique_name_in_owner = true +visible = false +points = PoolVector2Array( 0, 0, 8, 0 ) +width = 1.0 +default_color = Color( 1, 1, 0.290196, 1 ) + +[node name="MuzzleFlashParticles" type="CPUParticles2D" parent="AnimatedSprite/ShootPosition"] +pause_mode = 2 +unique_name_in_owner = true +rotation = 1.0472 +emitting = false +amount = 6 +lifetime = 0.1 +one_shot = true +explosiveness = 0.75 +draw_order = 1 +texture = ExtResource( 7 ) +gravity = Vector2( 0, 0 ) +angle = 120.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 11 ) +color_ramp = SubResource( 12 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 4, 0 ) +shape = SubResource( 8 ) + +[node name="SparkParticles" type="CPUParticles2D" parent="."] +position = Vector2( 4, 0 ) +emitting = false +amount = 16 +lifetime = 0.5 +one_shot = true +explosiveness = 1.0 +texture = ExtResource( 6 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 30.0 +initial_velocity_random = 0.5 +damping = 50.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_curve = SubResource( 9 ) +color_ramp = SubResource( 10 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/sheriff.tscn b/objects/enemy/sheriff.tscn new file mode 100644 index 0000000..8e6bd67 --- /dev/null +++ b/objects/enemy/sheriff.tscn @@ -0,0 +1,148 @@ +[gd_scene load_steps=19 format=2] + +[ext_resource path="res://objects/enemy/cop.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/cop/the_sheriff_idle.png" type="Texture" id=2] +[ext_resource path="res://graphics/enemy/cop/the_sheriff_shoot.png" type="Texture" id=3] +[ext_resource path="res://graphics/enemy/cop/the_sheriff_walk.png" type="Texture" id=4] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=5] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=6] +[ext_resource path="res://graphics/particles/muzzle_flash.png" type="Texture" id=7] + +[sub_resource type="ShaderMaterial" id=7] +shader = ExtResource( 5 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="AtlasTexture" id=13] +atlas = ExtResource( 4 ) +region = Rect2( 0, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=14] +atlas = ExtResource( 4 ) +region = Rect2( 20, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=15] +atlas = ExtResource( 4 ) +region = Rect2( 40, 0, 20, 21 ) + +[sub_resource type="AtlasTexture" id=16] +atlas = ExtResource( 4 ) +region = Rect2( 60, 0, 20, 21 ) + +[sub_resource type="SpriteFrames" id=6] +animations = [ { +"frames": [ ExtResource( 2 ) ], +"loop": false, +"name": "idle", +"speed": 5.0 +}, { +"frames": [ ExtResource( 3 ) ], +"loop": false, +"name": "shoot", +"speed": 1.0 +}, { +"frames": [ SubResource( 13 ), SubResource( 14 ), SubResource( 15 ), SubResource( 16 ) ], +"loop": true, +"name": "walk", +"speed": 5.0 +} ] + +[sub_resource type="Curve" id=11] +_data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.5, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=12] +interpolation_mode = 2 +offsets = PoolRealArray( 0.20339, 0.432203 ) +colors = PoolColorArray( 1, 1, 1, 1, 1, 1, 0.290196, 1 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 3, 8 ) + +[sub_resource type="Curve" id=9] +_data = [ Vector2( 0, 1 ), 0.0, -1.45746, 0, 0, Vector2( 1, 0 ), 0.00323196, 0.0, 0, 0 ] + +[sub_resource type="Gradient" id=10] +offsets = PoolRealArray( 0, 0.515152 ) +colors = PoolColorArray( 1, 1, 1, 1, 1, 1, 0.290196, 1 ) + +[node name="Cop" type="Node2D" groups=["cop", "enemy"]] +script = ExtResource( 1 ) + +[node name="AnimatedSprite" type="AnimatedSprite" parent="."] +show_behind_parent = true +material = SubResource( 7 ) +position = Vector2( 5, -2 ) +frames = SubResource( 6 ) +animation = "idle" +playing = true + +[node name="ShootPosition" type="Position2D" parent="AnimatedSprite"] +unique_name_in_owner = true +position = Vector2( 7, 0.5 ) +__meta__ = { +"_gizmo_extents_": 4.0 +} + +[node name="ShootCast" type="RayCast2D" parent="AnimatedSprite/ShootPosition"] +unique_name_in_owner = true +enabled = true +cast_to = Vector2( 72, 0 ) +collision_mask = 8 +collide_with_areas = true + +[node name="GraphicsCast" type="RayCast2D" parent="AnimatedSprite/ShootPosition"] +unique_name_in_owner = true +visible = false +cast_to = Vector2( 256, 0 ) +collision_mask = 8 + +[node name="ShootLine" type="Line2D" parent="AnimatedSprite/ShootPosition"] +unique_name_in_owner = true +visible = false +points = PoolVector2Array( 0, 0, 8, 0 ) +width = 1.0 +default_color = Color( 1, 1, 0.290196, 1 ) + +[node name="MuzzleFlashParticles" type="CPUParticles2D" parent="AnimatedSprite/ShootPosition"] +pause_mode = 2 +unique_name_in_owner = true +rotation = 1.0472 +emitting = false +amount = 6 +lifetime = 0.1 +one_shot = true +explosiveness = 0.75 +draw_order = 1 +texture = ExtResource( 7 ) +gravity = Vector2( 0, 0 ) +angle = 120.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 11 ) +color_ramp = SubResource( 12 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 4, 0 ) +shape = SubResource( 8 ) + +[node name="SparkParticles" type="CPUParticles2D" parent="."] +position = Vector2( 4, 0 ) +emitting = false +amount = 16 +lifetime = 0.5 +one_shot = true +explosiveness = 1.0 +texture = ExtResource( 6 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 30.0 +initial_velocity_random = 0.5 +damping = 50.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 0.5 +scale_amount_curve = SubResource( 9 ) +color_ramp = SubResource( 10 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/skelarcher.gd b/objects/enemy/skelarcher.gd index f5533ea..7e6c9a8 100644 --- a/objects/enemy/skelarcher.gd +++ b/objects/enemy/skelarcher.gd @@ -18,10 +18,9 @@ onready var arrow_spawn_r = $ArrowSpawnR func _ready(): death_sound = Audio.a_die_skeleton timer.start(shoot_time) - #Easy mode - if Game.is_easy_mode: - shoot_time /= Game.easy_mode_speed_factor - arrow_speed *= Game.easy_mode_speed_factor + # adjust to difficulty + shoot_time /= Game.enemy_speed_factor + arrow_speed *= Game.enemy_speed_factor func _on_Timer_timeout(): anims.play("shoot") @@ -36,7 +35,6 @@ func spawn_arrow(): arrow.target_group = "player_hitbox" arrow.speed = arrow_speed Game.get_map().add_child(arrow) - timer.start(shoot_time) func die(): for n in bones_amount: @@ -45,7 +43,7 @@ func die(): bone.global_position = global_position bone.linear_velocity = Vector2(bones_speed * rand_range(0.5, 1.5), 0.0).rotated(rand_range(-PI, 0.0)) bone.angular_velocity = rand_range(-PI*2.0, PI*2.0) - var timer = get_tree().create_timer(3.0 + rand_range(0.0, 1.0), false) - timer.connect("timeout", bone, "queue_free") + var bone_timer = get_tree().create_timer(3.0 + rand_range(0.0, 1.0), false) + bone_timer.connect("timeout", bone, "queue_free") get_parent().call_deferred("add_child", bone) .die() # call rest of enemy.gd die() funciton diff --git a/objects/enemy/slime.tscn b/objects/enemy/slime.tscn index 925ef7d..ad00ed9 100644 --- a/objects/enemy/slime.tscn +++ b/objects/enemy/slime.tscn @@ -28,7 +28,7 @@ animations = [ { } ] [sub_resource type="RectangleShape2D" id=5] -extents = Vector2( 5.5, 4.5 ) +extents = Vector2( 4, 4 ) [node name="Slime" type="Node2D" groups=["enemy"]] script = ExtResource( 4 ) @@ -36,15 +36,16 @@ blood = false [node name="AnimatedSprite" type="AnimatedSprite" parent="."] material = SubResource( 1 ) -position = Vector2( 1, 3 ) +position = Vector2( 4, 3 ) frames = SubResource( 4 ) +frame = 1 playing = true [node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] position = Vector2( -4, 0 ) [node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] -position = Vector2( 4.5, 3.5 ) +position = Vector2( 8, 4 ) shape = SubResource( 5 ) [connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/slime_particles.gd b/objects/enemy/slime_particles.gd new file mode 100644 index 0000000..2c9164f --- /dev/null +++ b/objects/enemy/slime_particles.gd @@ -0,0 +1,17 @@ +extends CPUParticles2D + + +const BloodSpray := preload("res://objects/environment/blood/blood_spray.tscn") + + +export var spray_ammount: int = 16 +export var spray_velocity: float = 80 + + +func _ready() -> void: + for i in spray_ammount: + var spray = BloodSpray.instance() + spray.global_position = global_position + spray.color = Color(0xa05ef2ff) + spray.velocity = Vector2(randf() * spray_velocity, 0.0).rotated(randf() * TAU) + get_parent().add_child(spray) diff --git a/objects/enemy/slime_particles.tscn b/objects/enemy/slime_particles.tscn index 8ff9094..e38f9f0 100644 --- a/objects/enemy/slime_particles.tscn +++ b/objects/enemy/slime_particles.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=3 format=2] +[gd_scene load_steps=4 format=2] [ext_resource path="res://graphics/particles/slime.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/slime_particles.gd" type="Script" id=2] [sub_resource type="Curve" id=43] _data = [ Vector2( 0, 1 ), 0.0, -0.113537, 0, 0, Vector2( 1, 0 ), -3.35032, 0.0, 0, 0 ] @@ -27,3 +28,4 @@ angle_random = 1.0 scale_amount = 0.5 scale_amount_random = 1.0 scale_amount_curve = SubResource( 43 ) +script = ExtResource( 2 ) diff --git a/objects/enemy/spider.gd b/objects/enemy/spider.gd index ff03d73..445a9cc 100644 --- a/objects/enemy/spider.gd +++ b/objects/enemy/spider.gd @@ -23,9 +23,8 @@ func _ready(): hitbox.global_position.y = old_y line.points[1].y = hitbox.position.y raycast.queue_free() - #Easy mode - if Game.is_easy_mode: - speed *= Game.easy_mode_speed_factor + # adjust to difficulty + speed *= Game.enemy_speed_factor func _physics_process(delta): hitbox.position.y += direction * speed * delta diff --git a/objects/enemy/squig.gd b/objects/enemy/squig.gd new file mode 100644 index 0000000..05923fa --- /dev/null +++ b/objects/enemy/squig.gd @@ -0,0 +1,104 @@ +extends "res://objects/enemy/enemy.gd" + +enum State {SWIMMING, FALLING, TRANSITION} + +# whether the squid should start in falling state +export var start_falling: bool = false +export var speed: float = 50.0 +export var damping: float = 0.9 +export var delay: float = 1.0 +# margin of screen hitbox is disabled in +export var hitbox_clip: Rect2 = Rect2(0.0, 0.0, 7.0, 7.0) +export var full_clip: Rect2 = Rect2(-4.0, -4.0, 16.0, 16.0) + + +var velocity: Vector2 = Vector2.ZERO +# start of the sector it is trapped in +var home_sector: Vector2 = Vector2.ZERO +var _can_transition: bool = true + + +onready var current_state: int = State.SWIMMING +onready var hitbox_shape: CollisionShape2D = $"%HitboxShape" +onready var animation_player: AnimationPlayer = $AnimationPlayer + + +func _ready() -> void: + if start_falling: + _start_falling() + else: + _start_swimming() + home_sector = Game.get_sector(global_position) + +func _physics_process(delta: float) -> void: + if Game.current_sector != home_sector: + hitbox_shape.disabled = true + return + # process movement and apply damping + velocity.y *= pow(damping, delta) + if current_state == State.FALLING: + velocity.y = speed + global_position += velocity * delta + + var sector_rect = Rect2(home_sector * Game.RESOLUTION, Game.RESOLUTION) + + # disable hitbox at edge of screen + var global_hitbox_clip = hitbox_clip + global_hitbox_clip.position += global_position + if sector_rect.encloses(global_hitbox_clip): + hitbox_shape.disabled = false + else: + hitbox_shape.disabled = true + + # check if out of sector + var global_full_clip = full_clip + global_full_clip.position += global_position + if not sector_rect.intersects(global_full_clip) and _can_transition: + match current_state: + State.SWIMMING: + current_state = State.TRANSITION + _can_transition = false + velocity = Vector2.ZERO + var tween = create_tween() + tween.tween_interval(delay) + tween.tween_callback(self, "_start_falling") + State.FALLING: + current_state = State.TRANSITION + _can_transition = false + velocity = Vector2.ZERO + var tween = create_tween() + tween.tween_interval(delay) + tween.tween_callback(self, "_start_swimming") + State.TRANSITION: + pass + + # clip to inside of home sector + var rid = get_canvas_item() + var rect = Rect2(to_local(home_sector * Game.RESOLUTION), Game.RESOLUTION) + VisualServer.canvas_item_set_custom_rect(rid, true, rect) + VisualServer.canvas_item_set_clip(rid, true) + + +# give a burst of speed +func _propel() -> void: + velocity.y = -speed + +func _start_falling() -> void: + if not _can_transition: + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: + global_position.x = player.global_position.x - 3.0 + animation_player.play("falling") + current_state = State.FALLING + yield(create_tween().tween_interval(1.0), "finished") + _can_transition = true + +func _start_swimming() -> void: + if not _can_transition: + var player = get_tree().get_nodes_in_group("player").pop_back() + if player != null: + global_position.x = player.global_position.x - 3.0 + animation_player.play("swimming") + current_state = State.SWIMMING + yield(create_tween().tween_interval(1.0), "finished") + _can_transition = true diff --git a/objects/enemy/squig.tscn b/objects/enemy/squig.tscn new file mode 100644 index 0000000..55cdf7c --- /dev/null +++ b/objects/enemy/squig.tscn @@ -0,0 +1,88 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://objects/enemy/enemy_move_sidesideupdown.gd" type="Script" id=1] +[ext_resource path="res://graphics/enemy/squig.png" type="Texture" id=2] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=3] + +[sub_resource type="Curve" id=6] +_data = [ Vector2( 0, 0.5 ), 0.0, 0.0, 0, 0, Vector2( 0.3, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.541165, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 2.5, 2.5 ) + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0 ] +} + +[sub_resource type="Animation" id=7] +resource_name = "up_and_down" +length = 0.3 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ 0, 1 ] +} + +[node name="Squig" type="Node2D" groups=["enemy"]] +light_mask = 8 +script = ExtResource( 1 ) +direction = -1 +move_direction = 1 +node_to_flip = NodePath("Sprite") + +[node name="InkParticles" type="CPUParticles2D" parent="."] +position = Vector2( 3.5, 7 ) +scale = Vector2( 0.5, 0.5 ) +amount = 16 +local_coords = false +texture = ExtResource( 3 ) +spread = 180.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 8.0 +initial_velocity_random = 0.5 +damping = 4.0 +angle = 720.0 +angle_random = 1.0 +scale_amount = 1.5 +scale_amount_curve = SubResource( 6 ) +color = Color( 0, 0, 0, 1 ) + +[node name="Sprite" type="Sprite" parent="."] +light_mask = 8 +position = Vector2( 4, 4 ) +texture = ExtResource( 2 ) +hframes = 2 + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] +position = Vector2( 4, 4 ) + +[node name="HitboxShape" type="CollisionShape2D" parent="Hitbox"] +unique_name_in_owner = true +position = Vector2( -0.5, -0.5 ) +shape = SubResource( 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "up_and_down" +anims/RESET = SubResource( 2 ) +anims/up_and_down = SubResource( 7 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/steam.gd b/objects/enemy/steam.gd index 9fc48b0..fcb02be 100644 --- a/objects/enemy/steam.gd +++ b/objects/enemy/steam.gd @@ -14,10 +14,9 @@ func _ready(): if !active: particles.emitting = false collision_shape.disabled = true - #Easy mode - if Game.is_easy_mode: - off_time /= Game.easy_mode_speed_factor - on_time /= Game.easy_mode_speed_factor + # adjust to difficulty + off_time /= Game.enemy_speed_factor + on_time /= Game.enemy_speed_factor func _physics_process(delta): time += delta diff --git a/objects/enemy/steam.tscn b/objects/enemy/steam.tscn index 62f9cac..06d0f2d 100644 --- a/objects/enemy/steam.tscn +++ b/objects/enemy/steam.tscn @@ -70,10 +70,10 @@ tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { -"times": PoolRealArray( 0, 0.6 ), -"transitions": PoolRealArray( 1, 1 ), +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), "update": 0, -"values": [ Vector2( 2, 12 ), Vector2( 2, 0 ) ] +"values": [ Vector2( 2, 0 ) ] } tracks/2/type = "value" tracks/2/path = NodePath("Hitbox/CollisionShape2D:position") @@ -82,10 +82,10 @@ tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { -"times": PoolRealArray( 0, 0.6 ), -"transitions": PoolRealArray( 1, 1 ), +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), "update": 0, -"values": [ Vector2( 4, -12 ), Vector2( 4, -24 ) ] +"values": [ Vector2( 4, -24 ) ] } tracks/3/type = "value" tracks/3/path = NodePath("Hitbox/CollisionShape2D:disabled") @@ -94,10 +94,10 @@ tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { -"times": PoolRealArray( 0, 0.6 ), -"transitions": PoolRealArray( 1, 1 ), +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), "update": 1, -"values": [ false, true ] +"values": [ true ] } [sub_resource type="Animation" id=5] @@ -158,6 +158,7 @@ off_time = 2.0 [node name="SteamParticles" type="CPUParticles2D" parent="."] position = Vector2( 4, 0 ) +emitting = false amount = 16 texture = ExtResource( 2 ) direction = Vector2( 0, -1 ) diff --git a/objects/enemy/super_slime.gd b/objects/enemy/super_slime.gd new file mode 100644 index 0000000..bc6d6cd --- /dev/null +++ b/objects/enemy/super_slime.gd @@ -0,0 +1,131 @@ +tool +extends "res://objects/enemy/enemy.gd" + +const SlimeParticles = preload("res://objects/enemy/slime_particles.tscn") + +export var left_boundary: float = 0.0 +export var right_boundary: float = 0.0 +export var direction: float = 1.0 +export var speed: float = 50.0 +export var jump_distance: float = 0.0 +export var jump_speed: float = 50.0 +export (Array, float) var bottom_jumps: Array = [] setget _set_bottom_jumps +export (Array, float) var top_jumps: Array = [] setget _set_top_jumps +export var detect_player: bool = false + +var _jumping: bool = false +var _jump_direction: float = -1.0 + +onready var hitbox: Area2D = $Hitbox +onready var sprite: AnimatedSprite = $Hitbox/Sprite +onready var detect_player_cast: RayCast2D = $"%DetectPlayerCast" + + +func _ready() -> void: + if Engine.editor_hint: + return + left_boundary *= 8.0 + right_boundary *= 8.0 + jump_distance *= 8.0 + for i in bottom_jumps.size(): + bottom_jumps[i] *= 8.0 + for i in top_jumps.size(): + top_jumps[i] *= 8.0 + detect_player_cast.cast_to = Vector2(0.0, -jump_distance) + speed *= Game.enemy_speed_factor + + +func _physics_process(delta: float) -> void: + if Engine.editor_hint: + return + # check for jump point + var jump_points = bottom_jumps if sign(_jump_direction) == -1.0 else top_jumps + for x in jump_points: + if abs(hitbox.position.x - x) <= 4.0: + _jumping = true + break + # check for player + if detect_player and detect_player_cast.is_colliding(): + _jumping = true + # move if not jumping + if _jumping: + hitbox.position.y += _jump_direction * jump_speed * delta + if hitbox.position.y >= 8.0: + hitbox.position.y = 0.0 + _jump_direction = -1.0 + hitbox.scale.y = 1.0 + _jumping = false + elif hitbox.position.y <= -jump_distance - 8.0: + hitbox.position.y = -jump_distance + _jump_direction = 1.0 + hitbox.scale.y = -1.0 + _jumping = false + else: + hitbox.position.x += direction * speed * delta + if hitbox.position.x >= right_boundary: + hitbox.position.x = right_boundary + direction = -1.0 + sprite.flip_h = true + elif hitbox.position.x <= -left_boundary: + hitbox.position.x = -left_boundary + sprite.flip_h = false + direction = 1.0 + + +func _process(delta: float) -> void: + if Engine.editor_hint and Engine.get_frames_drawn() % 10 == 0: + update() + + +func _draw() -> void: + if Engine.editor_hint: + # bottom travel zone + draw_line( + Vector2(-left_boundary * 8.0, 4.0), + Vector2(right_boundary * 8.0 + 8.0, 4.0), + Color(0.4, 0.2, 0.6, 0.75), 1.01, false + ) + # top travel zone + draw_line( + Vector2(-left_boundary * 8.0, -jump_distance * 8.0 - 4.0), + Vector2(right_boundary * 8.0 + 8.0, -jump_distance * 8.0 - 4.0), + Color(0.4, 0.2, 0.6, 0.75), 1.01, false + ) + # jump lines + for x in bottom_jumps: + draw_line( + Vector2(x * 8.0, 4.0), + Vector2(x * 8.0, -jump_distance * 4.0), + Color(1.0, 0.0, 0.0, 0.75), 1.01, false + ) + draw_circle(Vector2(x * 8.0, 4.0), 2.0, Color.red) + for x in top_jumps: + draw_line( + Vector2(x * 8.0, -jump_distance * 8.0 - 4.0), + Vector2(x * 8.0, -jump_distance * 4.0), + Color(1.0, 0.0, 0.0, 0.75), 1.01, false + ) + draw_circle(Vector2(x * 8.0, -jump_distance * 8.0 - 4.0), 2.0, Color.red) +# draw_line( +# Vector2(4.0, 4.0), +# Vector2(4.0, -jump_distance * 8.0 - 4.0), +# Color(0.4, 0.2, 0.6, 0.75), 1.01, false +# ) + + +func _set_bottom_jumps(value: Array) -> void: + bottom_jumps = value + update() + + +func _set_top_jumps(value: Array) -> void: + top_jumps = value + update() + + +func die() -> void: + .die() + var death_particles = SlimeParticles.instance() + death_particles.global_position = hitbox.global_position + Vector2(4.0, 4.0) + death_particles.emitting = true + get_parent().add_child(death_particles) diff --git a/objects/enemy/super_slime.tscn b/objects/enemy/super_slime.tscn new file mode 100644 index 0000000..121f8ed --- /dev/null +++ b/objects/enemy/super_slime.tscn @@ -0,0 +1,56 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://objects/enemy/super_slime.gd" type="Script" id=1] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=2] +[ext_resource path="res://graphics/enemy/pal_slime_purple.png" type="Texture" id=3] +[ext_resource path="res://graphics/enemy/slime.png" type="Texture" id=4] + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 2 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false +shader_param/palette = ExtResource( 3 ) + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 4 ) +region = Rect2( 0, 0, 13, 13 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 4 ) +region = Rect2( 13, 0, 13, 13 ) + +[sub_resource type="SpriteFrames" id=5] +animations = [ { +"frames": [ SubResource( 2 ), SubResource( 3 ) ], +"loop": true, +"name": "default", +"speed": 7.0 +} ] + +[sub_resource type="RectangleShape2D" id=6] +extents = Vector2( 4, 4 ) + +[node name="SuperSlime" type="Node2D" groups=["ememy"]] +script = ExtResource( 1 ) +blood = false + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] + +[node name="Sprite" type="AnimatedSprite" parent="Hitbox"] +material = SubResource( 4 ) +position = Vector2( 4, 3 ) +frames = SubResource( 5 ) +playing = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 4, 4 ) +shape = SubResource( 6 ) + +[node name="DetectPlayerCast" type="RayCast2D" parent="Hitbox"] +unique_name_in_owner = true +position = Vector2( 4, 0 ) +enabled = true +cast_to = Vector2( 0, -16 ) +collision_mask = 128 + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/tin.tscn b/objects/enemy/tin.tscn index 63b680c..071744f 100644 --- a/objects/enemy/tin.tscn +++ b/objects/enemy/tin.tscn @@ -32,6 +32,7 @@ extents = Vector2( 4, 4 ) [node name="Tin" type="Node2D" groups=["enemy"]] script = ExtResource( 1 ) score_for_killing = 100 +blood = false [node name="Sprite" type="Sprite" parent="."] material = SubResource( 1 ) diff --git a/objects/enemy/turtle.gd b/objects/enemy/turtle.gd new file mode 100644 index 0000000..b99b5c7 --- /dev/null +++ b/objects/enemy/turtle.gd @@ -0,0 +1,113 @@ +tool +extends "res://objects/enemy/enemy_move_sidesideupdown.gd" + +enum SpikeDirection {BOTH, LEFT, RIGHT} + +## positions along the path where spikes will trigger +export (Array, float) var spike_positions: Array = [] +## time spikes stay active +export var spike_time: float = 0.25 +## which direction the turtle should be able to spike +export (SpikeDirection) var spike_direction: int = SpikeDirection.BOTH + +# animates the spikes +var can_spike: bool = true +var spike_tween: SceneTreeTween + +onready var sprite: Sprite = $"%Sprite" +onready var spike_shape: CollisionShape2D = $"%SpikeShape" + +func _ready() -> void: + # don't act in the editor + if Engine.editor_hint: + return + +func _process(delta: float) -> void: + # update debug graphics in editor + if Engine.editor_hint and Engine.get_frames_drawn() % 10 == 0: + update() + +func _physics_process(delta: float) -> void: + # do nothing in editor + if Engine.editor_hint: + return + + # sync hitbox + $HeadHitbox.scale.x = $ToFlip.scale.x + + # check if can still spike before doing all this work + if not can_spike: + return + # use positions in correct axis + var pos = position.x if move_direction == Direction.HORIZONTAL else position.y + var pos_start = startpos.x if move_direction == Direction.HORIZONTAL else startpos.y + # only spike if matching direction + if spike_direction == SpikeDirection.LEFT and sign(direction) == 1.0: + return + if spike_direction == SpikeDirection.RIGHT and sign(direction) == -1.0: + return + # spike if close enough to an activation point + for spike_pos in spike_positions: + if abs(pos_start + (spike_pos * 8.0) - pos) <= 2.0: + spike() + break + # slightly different logic depending on forward/backwards unfortunately :I +# match sign(direction): +# 1.0: +# # make sure there are any positions left to check in this direction +# if current_spike_position < spike_positions.size(): +# # check if passed the spike position +# if pos >= pos_start + spike_positions[current_spike_position]: +# # move on to next position +# current_spike_position += 1 +# if spike_direction != SpikeDirection.LEFT: +# spike() +# -1.0: +# # make sure there are still positions left in this direction +# if current_spike_position - 1 >= 0: +# # check if passed the position +# if pos <= pos_start + spike_positions[current_spike_position - 1]: +# # move on to next (previous because backwards) position +# current_spike_position -= 1 +# if spike_direction != SpikeDirection.RIGHT: +# spike() + +## performs the spike animation +func spike() -> void: + # reset tween + if spike_tween != null: + spike_tween.kill() # never have two tweens acting on the same thing + spike_tween = create_tween() + spike_tween.set_process_mode(Tween.TWEEN_PROCESS_PHYSICS) + # indicator sprite + spike_tween.tween_property(sprite, "frame_coords:y", 1.0, 0.0) + spike_tween.tween_interval(spike_time * 2.0) + # spikes active + spike_tween.tween_property(spike_shape, "disabled", false, 0.0) + spike_tween.tween_property(sprite, "frame_coords:y", 2.0, 0.0) + spike_tween.tween_interval(spike_time) + # spikes gone once more + spike_tween.tween_property(spike_shape, "disabled", true, 0.0) + spike_tween.tween_property(sprite, "frame_coords:y", 0.0, 0.0) + +func die() -> void: + # disable spiking + can_spike = false + # stop tween + if spike_tween != null: + spike_tween.kill() + # disable hitbox + spike_shape.set_deferred("disabled", true) + # reset animation + sprite.frame_coords.y = 3 + Audio.play_sound(death_sound, Audio.ac_die) + $"%DeathSplatter".replace_by_instance() + +func _draw() -> void: + if Engine.editor_hint: + # still draw base moving enemy debug lines + ._draw() + # draw dots at spike positions + for pos in spike_positions: + var dir = Vector2.RIGHT if move_direction == Direction.HORIZONTAL else Vector2.DOWN + draw_circle(dir * pos * 8.0, 2.0, Color.red) diff --git a/objects/enemy/turtle.tscn b/objects/enemy/turtle.tscn new file mode 100644 index 0000000..aefac1a --- /dev/null +++ b/objects/enemy/turtle.tscn @@ -0,0 +1,104 @@ +[gd_scene load_steps=10 format=2] + +[ext_resource path="res://graphics/enemy/turtle.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/turtle.gd" type="Script" id=2] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=4] + +[sub_resource type="ShaderMaterial" id=6] +shader = ExtResource( 4 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="Animation" id=1] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("ToFlip/Sprite:frame_coords:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=2] +resource_name = "swim" +length = 0.9 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("ToFlip/Sprite:frame_coords:x") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ 0.0, 1.0, 2.0, 0.0 ] +} + +[sub_resource type="RectangleShape2D" id=3] +extents = Vector2( 2.5, 2.5 ) + +[sub_resource type="RectangleShape2D" id=5] +extents = Vector2( 8, 1.5 ) + +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 8.5, 3 ) + +[node name="Turtle" type="Node2D" groups=["enemy"]] +script = ExtResource( 2 ) +blood = false +speed = 20 +node_to_flip = NodePath("ToFlip") + +[node name="ToFlip" type="Node2D" parent="."] +position = Vector2( 8.5, 4 ) + +[node name="Sprite" type="Sprite" parent="ToFlip"] +unique_name_in_owner = true +material = SubResource( 6 ) +position = Vector2( -9.5, -9 ) +texture = ExtResource( 1 ) +centered = false +hframes = 3 +vframes = 4 + +[node name="SwimPlayer" type="AnimationPlayer" parent="ToFlip"] +root_node = NodePath("../..") +autoplay = "swim" +anims/RESET = SubResource( 1 ) +anims/swim = SubResource( 2 ) + +[node name="HeadHitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] +position = Vector2( 8.5, 4 ) + +[node name="HeadShape" type="CollisionShape2D" parent="HeadHitbox"] +position = Vector2( 11, -0.5 ) +shape = SubResource( 3 ) + +[node name="DeathSplatter" parent="HeadHitbox/HeadShape" instance_placeholder="res://objects/enemy/death_particles.tscn"] +unique_name_in_owner = true +autoplay = true + +[node name="SpikeHitbox" type="Area2D" parent="."] + +[node name="SpikeShape" type="CollisionShape2D" parent="SpikeHitbox"] +unique_name_in_owner = true +position = Vector2( 8.5, -1.5 ) +shape = SubResource( 5 ) +disabled = true + +[node name="Platform" type="KinematicBody2D" parent="SpikeHitbox"] +collision_layer = 4 +collision_mask = 0 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="SpikeHitbox/Platform"] +position = Vector2( 8.5, 3 ) +shape = SubResource( 7 ) + +[connection signal="area_entered" from="SpikeHitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/enemy/uncanny_cat.gd b/objects/enemy/uncanny_cat.gd new file mode 100644 index 0000000..7e5f7e5 --- /dev/null +++ b/objects/enemy/uncanny_cat.gd @@ -0,0 +1,31 @@ +extends "res://objects/enemy/enemy.gd" + + +export var acceleration: float = 8.0 +export var max_speed: float = 16.0 + + +var velocity: Vector2 = Vector2.ZERO + + +onready var player: Node2D = get_tree().get_nodes_in_group("player")[0] + + +func _physics_process(delta: float) -> void: + if not is_instance_valid(player): + return + + var target = (player.global_position - global_position).normalized() + velocity += target * acceleration * delta + velocity = velocity.clamped(max_speed) + + global_position += velocity * delta + +func _on_Hitbox_area_entered(area): + #Kill player + if area.is_in_group("player_hitbox"): + area.get_parent().die() + $Jumpscare.visible = true + $JumpscareSound.play() + var tween = create_tween() + tween.tween_property($Jumpscare, "visible", false, 0).set_delay(1.7) diff --git a/objects/enemy/uncanny_cat.tscn b/objects/enemy/uncanny_cat.tscn new file mode 100644 index 0000000..d944707 --- /dev/null +++ b/objects/enemy/uncanny_cat.tscn @@ -0,0 +1,44 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://graphics/secret/uncanny.png" type="Texture" id=1] +[ext_resource path="res://objects/enemy/uncanny_cat.gd" type="Script" id=2] +[ext_resource path="res://audio/sounds/scrump_die.ogg" type="AudioStream" id=3] + +[sub_resource type="CircleShape2D" id=1] +radius = 7.0 + +[node name="UncannyCat" type="Node2D"] +script = ExtResource( 2 ) +blood = false +acceleration = 48.0 +max_speed = 56.0 + +[node name="Sprite" type="Sprite" parent="."] +texture = ExtResource( 1 ) + +[node name="Hitbox" type="Area2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +shape = SubResource( 1 ) + +[node name="JumpscareSound" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 3 ) +pitch_scale = 2.0 +bus = "sound" + +[node name="Jumpscare" type="CanvasLayer" parent="."] +visible = false + +[node name="ColorRect" type="ColorRect" parent="Jumpscare"] +anchor_right = 1.0 +anchor_bottom = 1.0 +color = Color( 0, 0, 0, 1 ) + +[node name="TextureRect" type="TextureRect" parent="Jumpscare"] +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 1 ) +expand = true +stretch_mode = 6 + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/environment/blood/blood_spray.gd b/objects/environment/blood/blood_spray.gd new file mode 100644 index 0000000..0483dc5 --- /dev/null +++ b/objects/environment/blood/blood_spray.gd @@ -0,0 +1,42 @@ +extends Area2D + + +const BloodStain := preload("res://objects/environment/blood/blood_stain.tscn") +const PlayerStain := preload("res://objects/player/player_stain.tscn") + + +export var color: Color = Color(0xf53342ff) +export var stains_player: bool = true + + +var velocity := Vector2.ZERO + + +onready var sprite: Sprite = $Sprite + + +func _ready() -> void: + sprite.self_modulate = color + + +func _physics_process(delta: float) -> void: + velocity.y += 98.0 * delta + position += velocity * delta + sprite.global_rotation = velocity.angle() + + +func _on_body_entered(body: Node) -> void: + if body.is_in_group("can_stain"): + var stain = BloodStain.instance() + stain.modulate = color + stain.global_position = global_position + StainLayer.add_stain(stain) + queue_free() + elif body is TileMap: + queue_free() + elif stains_player and body.is_in_group("player"): + var stain = PlayerStain.instance() + stain.color = color + body.get_node("Graphics/Sprite").add_child(stain) + stain.global_position = global_position + queue_free() diff --git a/objects/environment/blood/blood_spray.tscn b/objects/environment/blood/blood_spray.tscn new file mode 100644 index 0000000..14f873c --- /dev/null +++ b/objects/environment/blood/blood_spray.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/particles/muzzle_flash.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/blood/blood_spray.gd" type="Script" id=3] + +[sub_resource type="CircleShape2D" id=1] +radius = 0.5 + +[node name="BloodSpray" type="Area2D"] +collision_mask = 129 +script = ExtResource( 3 ) + +[node name="Sprite" type="Sprite" parent="."] +self_modulate = Color( 0.960784, 0.2, 0.258824, 1 ) +scale = Vector2( 0.75, 0.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 2, 0 ) +flip_h = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/objects/environment/blood/blood_spray_big.gd b/objects/environment/blood/blood_spray_big.gd new file mode 100644 index 0000000..382c9d9 --- /dev/null +++ b/objects/environment/blood/blood_spray_big.gd @@ -0,0 +1,42 @@ +extends Area2D + + +const BloodStain := preload("res://objects/environment/blood/blood_stain.tscn") +const PlayerStain := preload("res://objects/player/player_stain.tscn") + + +export var color: Color +export var stains_player: bool = true + + +var velocity := Vector2.ZERO + + +onready var sprite: Sprite = $Sprite + + +func _ready() -> void: + sprite.self_modulate = color + + +func _physics_process(delta: float) -> void: + velocity.y += 98.0 * delta + position += velocity * delta + sprite.global_rotation = velocity.angle() + + +func _on_body_entered(body: Node) -> void: + if body.is_in_group("can_stain"): + var stain = BloodStain.instance() + stain.modulate = color + stain.global_position = global_position + StainLayer.add_stain(stain) + queue_free() + elif body is TileMap: + queue_free() + elif stains_player and body.is_in_group("player"): + var stain = PlayerStain.instance() + stain.color = color + body.get_node("Graphics/Sprite").add_child(stain) + stain.global_position = global_position + queue_free() diff --git a/objects/environment/blood/blood_spray_big.tscn b/objects/environment/blood/blood_spray_big.tscn new file mode 100644 index 0000000..26d0e21 --- /dev/null +++ b/objects/environment/blood/blood_spray_big.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/particles/famira_blood.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/blood/blood_spray_big.gd" type="Script" id=2] + +[sub_resource type="CircleShape2D" id=1] +radius = 0.5 + +[node name="BloodSpray" type="Area2D"] +collision_mask = 129 +script = ExtResource( 2 ) +color = Color( 0.701961, 0.745098, 0.4, 1 ) + +[node name="Sprite" type="Sprite" parent="."] +scale = Vector2( 0.75, 0.5 ) +texture = ExtResource( 1 ) +offset = Vector2( 2, 0 ) +flip_h = true + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/objects/environment/blood/blood_stain.gd b/objects/environment/blood/blood_stain.gd new file mode 100644 index 0000000..23247fe --- /dev/null +++ b/objects/environment/blood/blood_stain.gd @@ -0,0 +1,5 @@ +extends Sprite + + +func _ready() -> void: + rotation = randf() * TAU diff --git a/objects/environment/blood/blood_stain.tscn b/objects/environment/blood/blood_stain.tscn new file mode 100644 index 0000000..6fc0bdf --- /dev/null +++ b/objects/environment/blood/blood_stain.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/blood/blood_stain.gd" type="Script" id=2] + +[node name="BloodStain" type="Sprite"] +light_mask = 3 +texture = ExtResource( 1 ) +script = ExtResource( 2 ) diff --git a/objects/environment/blood_rain/blood_rain.gd b/objects/environment/blood_rain/blood_rain.gd new file mode 100644 index 0000000..0cfba1f --- /dev/null +++ b/objects/environment/blood_rain/blood_rain.gd @@ -0,0 +1,10 @@ +extends Node2D + +const Blood = preload("res://objects/environment/blood/blood_spray.tscn") + +func _ready(): + for i in 256: + var blood = Blood.instance() + blood.global_position = Vector2(i,-4) + blood.velocity = Vector2(randf() * 80.0, 0.0).rotated(randf() * TAU) + self.add_child(blood) diff --git a/objects/environment/blood_rain/blood_rain.tscn b/objects/environment/blood_rain/blood_rain.tscn new file mode 100644 index 0000000..ba1101f --- /dev/null +++ b/objects/environment/blood_rain/blood_rain.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/environment/blood/blood_spray.tscn" type="PackedScene" id=1] +[ext_resource path="res://objects/environment/blood_rain/blood_rain.gd" type="Script" id=2] + +[node name="BloodRain" type="Node2D"] +script = ExtResource( 2 ) + +[node name="BloodSpray" parent="." instance=ExtResource( 1 )] +position = Vector2( 0, -4 ) diff --git a/objects/environment/bubble/bubble.gd b/objects/environment/bubble/bubble.gd index c027b7d..cc7547e 100644 --- a/objects/environment/bubble/bubble.gd +++ b/objects/environment/bubble/bubble.gd @@ -3,6 +3,7 @@ extends Area2D export var speed = 16.0 onready var sprite = $Sprite +onready var activation_timer = $ActivationTimer var lifetime = 0.0 @@ -14,9 +15,18 @@ func _physics_process(delta): if speed > 0.0: sprite.position.x = sin(lifetime * 4.0) * 4.0 position.y -= speed * delta + +func pop(): + sprite.frame_coords.y = 1 + $CollisionShape2D.queue_free() + speed = 0.0 + get_tree().create_timer(0.5, false).connect("timeout", self, "queue_free") -func _on_area_entered(area): - if area.is_in_group("player_hitbox") or area.is_in_group("arrow"): - sprite.frame_coords.y = 1 - speed = 0.0 - get_tree().create_timer(0.5, false).connect("timeout", self, "queue_free") +func _on_Bubble_body_entered(body): + if body.is_in_group("player"): + body.oxygen_timer.start() + Audio.play_sound(Audio.a_bubble,Audio.ac_die) + pop() + elif activation_timer.time_left == 0: + pop() + diff --git a/objects/environment/bubble/bubble.tscn b/objects/environment/bubble/bubble.tscn index e9ea331..c8a185c 100644 --- a/objects/environment/bubble/bubble.tscn +++ b/objects/environment/bubble/bubble.tscn @@ -4,7 +4,7 @@ [ext_resource path="res://objects/environment/bubble/bubble.gd" type="Script" id=2] [sub_resource type="RectangleShape2D" id=1] -extents = Vector2( 2, 2 ) +extents = Vector2( 5, 5 ) [node name="Bubble" type="Area2D"] script = ExtResource( 2 ) @@ -17,4 +17,12 @@ vframes = 2 [node name="CollisionShape2D" type="CollisionShape2D" parent="."] shape = SubResource( 1 ) -[connection signal="area_entered" from="." to="." method="_on_area_entered"] +[node name="ActivationTimer" type="Timer" parent="."] +wait_time = 0.2 +one_shot = true +autostart = true +__meta__ = { +"_editor_description_": "timer until the bubble can be broken by objects other than the player" +} + +[connection signal="body_entered" from="." to="." method="_on_Bubble_body_entered"] diff --git a/objects/environment/bubble/bubble_spawner.tscn b/objects/environment/bubble/bubble_spawner.tscn new file mode 100644 index 0000000..6284238 --- /dev/null +++ b/objects/environment/bubble/bubble_spawner.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/environment/bubble/bubble.tscn" type="PackedScene" id=1] +[ext_resource path="res://scripts/random_spawner.gd" type="Script" id=2] + +[node name="BubbleSpawner" type="Node2D"] +script = ExtResource( 2 ) +scene = ExtResource( 1 ) +extents = Rect2( 0, 0, 8, 8 ) +delay = 3.0 diff --git a/objects/environment/collapse_block/collapse_block.gd b/objects/environment/collapse_block/collapse_block.gd new file mode 100644 index 0000000..9908026 --- /dev/null +++ b/objects/environment/collapse_block/collapse_block.gd @@ -0,0 +1,14 @@ +extends RigidBody2D + +onready var start_position = Vector2(position.x,position.y) +onready var sound = $AudioStreamPlayer + +func _ready(): + for node in get_tree().get_nodes_in_group("delete_on_collapse"): + node.queue_free() + +func _on_AnimationPlayer_animation_finished(anim_name): + queue_free() + +func _on_Timer_timeout(): + $AnimationPlayer.play("die") diff --git a/objects/environment/collapse_block/collapse_block.tscn b/objects/environment/collapse_block/collapse_block.tscn new file mode 100644 index 0000000..bf72c3f --- /dev/null +++ b/objects/environment/collapse_block/collapse_block.tscn @@ -0,0 +1,57 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://tilesets/t_factory.tres" type="TileSet" id=1] +[ext_resource path="res://objects/environment/collapse_block/collapse_block.gd" type="Script" id=2] + +[sub_resource type="PhysicsMaterial" id=2] +bounce = 0.07 + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 4, 4 ) + +[sub_resource type="Animation" id=3] +length = 0.001 + +[sub_resource type="Animation" id=4] +resource_name = "die" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath("TileMap:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.2, 0.4, 0.6, 0.8, 1, 1.2, 1.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, false, true, false, true, false ] +} + +[node name="CollapseBlock" type="RigidBody2D" groups=["collapse_block"]] +physics_material_override = SubResource( 2 ) +script = ExtResource( 2 ) + +[node name="TileMap" type="TileMap" parent="."] +tile_set = ExtResource( 1 ) +collision_layer = 0 +collision_mask = 0 +format = 1 +tile_data = PoolIntArray( 0, 0, 0 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2( 4, 4 ) +shape = SubResource( 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 3 ) +anims/die = SubResource( 4 ) + +[node name="Timer" type="Timer" parent="."] +wait_time = 3.0 +one_shot = true +autostart = true + +[connection signal="body_entered" from="." to="." method="_on_CollapseBlock_body_entered"] +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] +[connection signal="timeout" from="Timer" to="." method="_on_Timer_timeout"] diff --git a/objects/environment/death tile/death_tile.gd b/objects/environment/death tile/death_tile.gd index f654002..c9fedbc 100644 --- a/objects/environment/death tile/death_tile.gd +++ b/objects/environment/death tile/death_tile.gd @@ -3,4 +3,4 @@ extends Area2D func _on_Area2D_area_entered(area): #Kill player if area.is_in_group("player_hitbox"): - area.get_parent().die() + area.get_parent().zap() diff --git a/objects/environment/electric_tiles/electric_tiles.tscn b/objects/environment/electric_tiles/electric_tiles.tscn new file mode 100644 index 0000000..83037c4 --- /dev/null +++ b/objects/environment/electric_tiles/electric_tiles.tscn @@ -0,0 +1,185 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://objects/environment/death tile/death_tile.tscn" type="PackedScene" id=1] +[ext_resource path="res://tilesets/t_laboratory.tres" type="TileSet" id=3] +[ext_resource path="res://shaders/electricity.gdshader" type="Shader" id=4] + +[sub_resource type="ShaderMaterial" id=10] +shader = ExtResource( 4 ) +shader_param/arc_speed = 4.0 +shader_param/arc_fps = 10.0 +shader_param/arc_scale = 8.0 +shader_param/arc_threshold = 0.15 +shader_param/arc_color = Color( 1, 0.93, 0, 1 ) +shader_param/gamma = 2.0 +shader_param/flash_rate = 20.0 +shader_param/flash_intensity = 0.2 + +[sub_resource type="Animation" id=66] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath(".:material:shader_param/arc_color") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 0.93, 0, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/arc_speed") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 4.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:material:shader_param/gamma") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 2.0 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:material:shader_param/flash_intensity") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.2 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath(".:collision_layer") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 1 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("DeathTile:monitoring") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=67] +resource_name = "electricity" +length = 3.4 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath(".:material:shader_param/arc_color") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 2.2, 2.4, 3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 1, 0.929412, 0, 0 ), Color( 1, 0.929412, 0, 0 ), Color( 1, 0.93, 0, 1 ), Color( 1, 0.93, 0, 1 ), Color( 1, 0.929412, 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath(".:material:shader_param/gamma") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 2, 2.2, 3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 1.0, 1.0, 2.0, 2.0, 1.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath(".:material:shader_param/flash_intensity") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 2, 2.2, 3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.2, 0.2, 0.0 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath(".:collision_layer") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 2.2, 2.4, 3, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 1, 1, 33, 1, 1 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath(".:collision_layer") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 2.4, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 1, 1, 1 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("DeathTile:monitoring") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 2.4, 3.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ false, true, false ] +} + +[node name="ElectricTiles" type="TileMap" groups=["death"]] +material = SubResource( 10 ) +tile_set = ExtResource( 3 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 1376272, 1, 0 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "electricity" +playback_process_mode = 0 +anims/RESET = SubResource( 66 ) +anims/electricity = SubResource( 67 ) + +[node name="DeathTile" parent="." instance=ExtResource( 1 )] +position = Vector2( 127, 167 ) +scale = Vector2( 1.24, 1.24 ) diff --git a/objects/environment/exit/exit.gd b/objects/environment/exit/exit.gd index ba8a7b2..ef86f28 100644 --- a/objects/environment/exit/exit.gd +++ b/objects/environment/exit/exit.gd @@ -1,45 +1,48 @@ extends Node2D -export var cost = 0 -onready var label = $Label -onready var anims = $AnimationPlayer -onready var map = get_owner() +export var cost: int = 0 + +var open: bool = false + +onready var label: Label = $Label +onready var sprite: Sprite = $Sprite +onready var closed_collision: CollisionShape2D = $"%ClosedCollision" func _ready(): - anims.play("closed") label.text = "¶" + str(cost) - func _physics_process(delta): - if Game.keys >= cost: - anims.play("open") + if Game.keys >= cost and not open: + open = true + label.visible = false + var tween = create_tween() + tween.tween_property(sprite, "frame", 3, 0.25) + tween.tween_property(closed_collision, "disabled", true, 0.0) func _on_Area2D_area_entered(area): - if area.is_in_group("player_hitbox"): - if Game.score > Game.high_score: Game.high_score = Game.score - #BONUSES - #Collection bonus - if Game.keys == 50: Game.score += 500 - if Game.shards == 5: Game.score += 500 - if Game.keys == 50 && Game.shards == 5: - Game.score += 250 - Game.shards_collected[5] = true - #Time bonus - if Game.keys == 50 && Game.shards == 5: - if Game.time < map.target_time_100: - Game.score += max(2500 - 2500 * int(Game.time / map.target_time_100), 0) - Game.shards_collected[6] = true + if area.is_in_group("player_hitbox"): + Game.still_playing = false + Game.can_pause = false + var player = area.get_parent() + player.state_chart.send_event("start_teleport") + player.connect("teleport_finished", self, "_on_player_teleport_finished") + #Play level complete jingle + if Game.check_time_bonus() == true: + Audio.play_music(Audio.a_time_bonus) else: - if Game.time < map.target_time_any: - Game.score += max(2500 - 2500 * int(Game.time / map.target_time_any), 0) - Game.shards_collected[6] = true - #Life bonus - if Game.lives == 1: Game.score += 500 - if Game.lives == 2: - Game.score += 1500 - Game.shards_collected[7] = true - #Perfect bonus - if Game.lives == 2 && Game.keys == 50 && Game.shards == 5 && Game.time < map.target_time_100: - Game.score += 1000 - Game.save() - Game.change_map(load("res://maps/level_select.tscn")) + Audio.play_music(Audio.a_victory) + #Display 3D Text + var hud = get_tree().get_nodes_in_group("hud").pop_back() + if hud: + var text = preload("res://objects/hud/3d_text.tscn").instance() + text.anim = "level complete" + yield(get_tree(), "idle_frame") + hud.add_child(text) + +func _on_player_teleport_finished(): + Game.tally_scores() + yield(get_tree().create_timer(4.0, false), "timeout") + Fade.fade_out(Options.transition_speed_secs) + yield(Fade, "fade_finished") + + SceneManager.change_scene(preload("res://menus/results.tscn").instance()) diff --git a/objects/environment/exit/exit.tscn b/objects/environment/exit/exit.tscn index 301287e..0af9d47 100644 --- a/objects/environment/exit/exit.tscn +++ b/objects/environment/exit/exit.tscn @@ -1,152 +1,110 @@ -[gd_scene load_steps=10 format=2] +[gd_scene load_steps=14 format=2] [ext_resource path="res://ui/theme.tres" type="Theme" id=1] [ext_resource path="res://objects/environment/exit/exit.gd" type="Script" id=2] [ext_resource path="res://graphics/exit/exit.png" type="Texture" id=3] -[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=4] +[ext_resource path="res://shaders/beam_of_sin.gdshader" type="Shader" id=4] [ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=5] +[ext_resource path="res://graphics/exit/exit_back.png" type="Texture" id=6] +[ext_resource path="res://shaders/can_stain.tres" type="Material" id=7] -[sub_resource type="ShaderMaterial" id=1] +[sub_resource type="ShaderMaterial" id=9] shader = ExtResource( 4 ) -shader_param/border_color = Color( 0, 0, 0, 1 ) -shader_param/border_corners = true +shader_param/speed = 1.0 +shader_param/cycle_offset = 0.0 +shader_param/wave_length = 8.0 +shader_param/thickness = 0.1 -[sub_resource type="RectangleShape2D" id=2] -extents = Vector2( 8, 7.5 ) +[sub_resource type="ShaderMaterial" id=10] +shader = ExtResource( 4 ) +shader_param/speed = -2.0 +shader_param/cycle_offset = 3.0 +shader_param/wave_length = 5.0 +shader_param/thickness = 0.1 -[sub_resource type="Animation" id=3] -resource_name = "closed" -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ Rect2( 0, 0, 16, 24 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Area2D/CollisionShape2D:disabled") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Label:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Sprite:modulate") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ Color( 1, 1, 1, 1 ) ] -} +[sub_resource type="Gradient" id=11] +interpolation_mode = 1 +offsets = PoolRealArray( 0, 0.5 ) +colors = PoolColorArray( 0.345098, 0.74902, 0.878431, 1, 0.396078, 1, 1, 1 ) -[sub_resource type="Animation" id=4] -resource_name = "open" -length = 0.8 -loop = true -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ Rect2( 16, 0, 16, 24 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Area2D/CollisionShape2D:disabled") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ false ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Label:visible") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ false ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Sprite:modulate") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0, 0.4, 0.8 ), -"transitions": PoolRealArray( 1, 1, 1 ), -"update": 0, -"values": [ Color( 1, 0, 0, 1 ), Color( 0, 1, 0.203922, 1 ), Color( 1, 0, 0, 1 ) ] -} +[sub_resource type="SegmentShape2D" id=12] +b = Vector2( 0, 15 ) + +[sub_resource type="RectangleShape2D" id=7] +extents = Vector2( 7, 7.5 ) + +[sub_resource type="RectangleShape2D" id=8] +extents = Vector2( 8, 4.5 ) [node name="Exit" type="Node2D"] -z_index = 50 script = ExtResource( 2 ) +[node name="Background" type="Sprite" parent="."] +position = Vector2( 0, 5 ) +z_index = -1 +texture = ExtResource( 6 ) + +[node name="Sprite" type="Sprite" parent="."] +material = ExtResource( 7 ) +texture = ExtResource( 3 ) +hframes = 4 + +[node name="Energy" type="Node2D" parent="Sprite"] +show_behind_parent = true + +[node name="Wave1" type="ColorRect" parent="Sprite/Energy"] +material = SubResource( 9 ) +margin_left = -7.0 +margin_top = -3.0 +margin_right = 7.0 +margin_bottom = 12.0 +color = Color( 0.396078, 1, 1, 1 ) + +[node name="Wave2" type="ColorRect" parent="Sprite/Energy"] +material = SubResource( 10 ) +margin_left = -7.0 +margin_top = -3.0 +margin_right = 7.0 +margin_bottom = 12.0 +color = Color( 0.345098, 0.74902, 0.878431, 1 ) + +[node name="Sparkles" type="CPUParticles2D" parent="Sprite/Energy"] +position = Vector2( 0, 12 ) +amount = 16 +lifetime = 2.0 +emission_shape = 2 +emission_rect_extents = Vector2( 6, 0 ) +direction = Vector2( 0, -1 ) +spread = 0.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 12.0 +damping = 4.0 +color_initial_ramp = SubResource( 11 ) + [node name="Label" type="Label" parent="."] material = ExtResource( 5 ) margin_left = -10.0 -margin_top = -15.0 -margin_right = 30.0 -margin_bottom = 5.0 +margin_top = -12.0 +margin_right = 11.0 +margin_bottom = 8.0 theme = ExtResource( 1 ) text = "¶22" -[node name="Sprite" type="Sprite" parent="."] -material = SubResource( 1 ) -texture = ExtResource( 3 ) -region_enabled = true -region_rect = Rect2( 0, 0, 16, 24 ) +[node name="DetectPlayer" type="Area2D" parent="."] -[node name="Area2D" type="Area2D" parent="."] -z_index = -3 +[node name="CollisionShape" type="CollisionShape2D" parent="DetectPlayer"] +position = Vector2( 0, -3 ) +shape = SubResource( 12 ) -[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +[node name="Collision" type="StaticBody2D" parent="." groups=["can_stain"]] + +[node name="ClosedCollision" type="CollisionShape2D" parent="Collision"] +unique_name_in_owner = true position = Vector2( 0, 4.5 ) -shape = SubResource( 2 ) -disabled = true +shape = SubResource( 7 ) -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] -anims/closed = SubResource( 3 ) -anims/open = SubResource( 4 ) +[node name="TopShape" type="CollisionShape2D" parent="Collision"] +position = Vector2( 0, -7.5 ) +shape = SubResource( 8 ) -[connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] +[connection signal="area_entered" from="DetectPlayer" to="." method="_on_Area2D_area_entered"] diff --git a/objects/environment/falling_block/falling_block.gd b/objects/environment/falling_block/falling_block.gd index d8b7027..3095ab0 100644 --- a/objects/environment/falling_block/falling_block.gd +++ b/objects/environment/falling_block/falling_block.gd @@ -11,10 +11,9 @@ onready var anims = $AnimationPlayer onready var sprite = $Sprite func _ready(): - #Easy Mode - if Game.is_easy_mode: - fall_speed *= Game.easy_mode_speed_factor - fall_timer.wait_time /= Game.easy_mode_speed_factor + # adjust to difficulty + fall_speed *= Game.enemy_speed_factor + fall_timer.wait_time /= Game.enemy_speed_factor func _physics_process(delta): #Fall diff --git a/objects/environment/falling_block/falling_block_cave.tscn b/objects/environment/falling_block/falling_block_cave.tscn index 715ce75..a30e355 100644 --- a/objects/environment/falling_block/falling_block_cave.tscn +++ b/objects/environment/falling_block/falling_block_cave.tscn @@ -28,6 +28,30 @@ tracks/0/keys = { "update": 1, "values": [ true, false, true, false, true, false ] } +tracks/1/type = "value" +tracks/1/path = NodePath("Area2D/CollisionShape2D:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("CollisionShape2D:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} [sub_resource type="Animation" id=5] resource_name = "idle" @@ -43,6 +67,30 @@ tracks/0/keys = { "update": 1, "values": [ true ] } +tracks/1/type = "value" +tracks/1/path = NodePath("CollisionShape2D:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Area2D/CollisionShape2D:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} [node name="FallingBlock" type="KinematicBody2D"] collision_layer = 4 @@ -58,11 +106,6 @@ hframes = 2 position = Vector2( 4, 2.5 ) shape = SubResource( 1 ) -[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."] -visible = false -position = Vector2( 4, 4 ) -scale = Vector2( 0.4, 0.4 ) - [node name="Area2D" type="Area2D" parent="."] collision_mask = 2 @@ -72,7 +115,7 @@ shape = SubResource( 2 ) [node name="FallTimer" type="Timer" parent="."] process_mode = 0 -wait_time = 0.1 +wait_time = 0.2 one_shot = true [node name="RefreshTimer" type="Timer" parent="."] @@ -92,8 +135,6 @@ autoplay = "idle" anims/disappear = SubResource( 4 ) anims/idle = SubResource( 5 ) -[connection signal="screen_exited" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_exited"] [connection signal="area_entered" from="Area2D" to="." method="_on_Area2D_area_entered"] -[connection signal="area_exited" from="Area2D" to="." method="_on_Area2D_area_exited"] [connection signal="timeout" from="FallTimer" to="." method="_on_FallTimer_timeout"] [connection signal="timeout" from="RefreshTimer" to="." method="_on_RefreshTimer_timeout"] diff --git a/objects/environment/falling_block/falling_block_graveyard.tscn b/objects/environment/falling_block/falling_block_graveyard.tscn index df42c9d..15bc850 100644 --- a/objects/environment/falling_block/falling_block_graveyard.tscn +++ b/objects/environment/falling_block/falling_block_graveyard.tscn @@ -7,3 +7,6 @@ [node name="Sprite" parent="." index="0"] texture = ExtResource( 2 ) + +[node name="FallTimer" parent="." index="3"] +wait_time = 0.2 diff --git a/objects/environment/falling_block/falling_block_lab.tscn b/objects/environment/falling_block/falling_block_lab.tscn new file mode 100644 index 0000000..0dd9e71 --- /dev/null +++ b/objects/environment/falling_block/falling_block_lab.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/environment/falling_block/falling_block_cave.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/falling_block/falling_block_lab.png" type="Texture" id=2] + +[node name="FallingBlock" instance=ExtResource( 1 )] + +[node name="Sprite" parent="." index="0"] +texture = ExtResource( 2 ) + +[node name="FallTimer" parent="." index="3"] +wait_time = 0.2 diff --git a/objects/environment/ladder/ladder.gd b/objects/environment/ladder/ladder.gd index 51af051..759101e 100644 --- a/objects/environment/ladder/ladder.gd +++ b/objects/environment/ladder/ladder.gd @@ -1,5 +1,11 @@ extends Area2D +export var can_climb_left: bool = true +export var can_climb_right: bool = true + onready var left_snap: float = $LeftSnap.global_position.x onready var right_snap: float = $RightSnap.global_position.x onready var middle: float = global_position.x + 4.0 + +func _ready() -> void: + $CollisionShape2D.global_position.y -= 1.0 diff --git a/objects/environment/moving_platform/moving_platform.gd b/objects/environment/moving_platform/moving_platform.gd index 5da9111..a2f64f8 100644 --- a/objects/environment/moving_platform/moving_platform.gd +++ b/objects/environment/moving_platform/moving_platform.gd @@ -39,6 +39,11 @@ func move_side_to_side(delta): func move_up_and_down(delta): #Move position.y += direction * (speed * delta) + #fix graphics + if direction < 0.0 and speed >= 30.0: + sprite.position.y = 1.0 + else: + sprite.position.y = 2.0 #Switch dir if position.y >= startpos.y + (right_down_boundary): direction = -1 diff --git a/objects/environment/moving_platform/moving_platform_scholar.gd b/objects/environment/moving_platform/moving_platform_scholar.gd new file mode 100644 index 0000000..ea6cc83 --- /dev/null +++ b/objects/environment/moving_platform/moving_platform_scholar.gd @@ -0,0 +1,92 @@ +tool +extends Node2D + + +const DEBUG_COLOR := Color(0.4, 0.2, 0.6, 0.75) + +export var size: float = 8.0 setget _set_size +export var speed: float = 20.0 +export var point_a := Vector2.ZERO setget _set_point_a +export var point_b := Vector2.ZERO setget _set_point_b +export (float, 0.0, 1.0, 0.1) var start_position: float = 0.0 setget _set_start_position +export var start_reversed: bool = false + +onready var body: KinematicBody2D = $Body +onready var sprite: Sprite = $"%Sprite" + +var _previous_position: Vector2 + + +func _ready() -> void: + if Engine.editor_hint: + return + + var distance := point_a.distance_to(point_b) + var start_target := point_a if start_reversed else point_b + var end_target := point_b if start_reversed else point_a + var start_weight := start_position if start_reversed else 1.0 - start_position + + var tween := create_tween() + tween.stop() + tween.set_process_mode(Tween.TWEEN_PROCESS_PHYSICS) + tween.set_loops() + tween.tween_property(body, "position", end_target, distance / speed) + tween.tween_property(body, "position", start_target, distance / speed) + var start_tween := create_tween() + start_tween.set_process_mode(Tween.TWEEN_PROCESS_PHYSICS) + start_tween.tween_property(body, "position", start_target, start_weight * distance / speed) + start_tween.tween_callback(tween, "play") + + _previous_position = body.global_position + + +func _physics_process(delta: float) -> void: + if Engine.editor_hint: + return + + if (body.global_position.y - _previous_position.y) < 0.0 and speed >= 40.0: + sprite.position.y = -1.0 + else: + sprite.position.y = 0.0 + _previous_position = body.global_position + + +func _set_size(value: float) -> void: + size = value + get_node("%Sprite").region_rect.size.x = size + var segment = get_node("%CollisionShape").shape as SegmentShape2D + segment.a.x = size * -0.5 + segment.b.x = size * 0.5 + + +func _set_start_position(value: float) -> void: + start_position = value + if Engine.editor_hint: + get_node("Body").position = lerp(point_a, point_b, start_position) + + +func _set_point_a(value: Vector2) -> void: + point_a = value + if Engine.editor_hint: + _update_positions() + + +func _set_point_b(value: Vector2) -> void: + point_b = value + if Engine.editor_hint: + _update_positions() + + +func _update_positions() -> void: + if point_a == point_b: + _set_start_position(0.0) + else: + var closest_point := Geometry.get_closest_point_to_segment_2d(get_node("Body").position, point_a, point_b) + _set_start_position(point_a.distance_to(closest_point) / point_a.distance_to(point_b)) + property_list_changed_notify() + update() + + +func _draw() -> void: + if Engine.editor_hint: + draw_line(point_a, point_b, DEBUG_COLOR, 1.01) diff --git a/objects/environment/moving_platform/moving_platform_scholar.tscn b/objects/environment/moving_platform/moving_platform_scholar.tscn new file mode 100644 index 0000000..0d83800 --- /dev/null +++ b/objects/environment/moving_platform/moving_platform_scholar.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/moving_platform/moving_platform.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/moving_platform/moving_platform_scholar.gd" type="Script" id=2] + +[sub_resource type="SegmentShape2D" id=1] +resource_local_to_scene = true +a = Vector2( -4, 0.01 ) +b = Vector2( 4, 0.01 ) + +[node name="MovingPlatform" type="Node2D"] +script = ExtResource( 2 ) + +[node name="Body" type="KinematicBody2D" parent="."] +collision_layer = 4 +motion/sync_to_physics = true +moving_platform_apply_velocity_on_leave = 1 + +[node name="Sprite" type="Sprite" parent="Body"] +unique_name_in_owner = true +texture = ExtResource( 1 ) +offset = Vector2( 0, 2 ) +region_enabled = true +region_rect = Rect2( 0, 0, 8, 4 ) +region_filter_clip = true + +[node name="CollisionShape" type="CollisionShape2D" parent="Body"] +unique_name_in_owner = true +shape = SubResource( 1 ) +one_way_collision = true diff --git a/objects/environment/rock/rock.gd b/objects/environment/rock/rock.gd index a60b1ab..7bc5ee2 100644 --- a/objects/environment/rock/rock.gd +++ b/objects/environment/rock/rock.gd @@ -1,6 +1,7 @@ extends KinematicBody2D var velocity: Vector2 = Vector2.ZERO +const SplashParticles = preload("res://objects/environment/splash/splash_particles.tscn") func _physics_process(delta): if not is_on_floor(): @@ -18,6 +19,15 @@ func push(amount: float): func _on_Hitbox_area_entered(area): # do not squish if in "blocks_squash" group if area.is_in_group("enemy_hitbox") and not area.is_in_group("blocks_squash"): - var enemy = area.get_parent() + var enemy = area.get_owner() if enemy.global_position.y > global_position.y and velocity.y > 0: enemy.die() + + +func _on_Hitbox_body_entered(body): + if body.is_in_group("has_splash"): + var particles = SplashParticles.instance() + particles.global_position = global_position + particles.color = body.splash_color + particles.emitting = true + get_parent().add_child(particles) diff --git a/objects/environment/rock/rock.tscn b/objects/environment/rock/rock.tscn index a0aa5c4..aa761b0 100644 --- a/objects/environment/rock/rock.tscn +++ b/objects/environment/rock/rock.tscn @@ -33,9 +33,11 @@ shape = SubResource( 2 ) [node name="Hitbox" type="Area2D" parent="." groups=["squash"]] position = Vector2( -1, 0 ) collision_layer = 5 +collision_mask = 33 [node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] position = Vector2( 5, 4 ) shape = SubResource( 3 ) [connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="body_entered" from="Hitbox" to="." method="_on_Hitbox_body_entered"] diff --git a/objects/environment/spaghetti/spaghetti.gd b/objects/environment/spaghetti/spaghetti.gd new file mode 100644 index 0000000..7461548 --- /dev/null +++ b/objects/environment/spaghetti/spaghetti.gd @@ -0,0 +1,24 @@ +extends Node2D + + +export var segments: int = 8 + + +onready var segment: RigidBody2D = $Segment + + +func _ready() -> void: + var line = segment.get_node("Line") + line.default_color = line.default_color.darkened(rand_range(-0.1, 0.1)) + var last_segment = $Segment + for i in segments: + var new_segment = last_segment.duplicate(0) + add_child(new_segment) + new_segment.position.x -= 3.0 + var joint = last_segment.get_node("Joint") + joint.node_a = joint.get_path_to(last_segment) + joint.node_b = joint.get_path_to(new_segment) + new_segment.apply_central_impulse(Vector2(30.0, rand_range(-10.0, -100.0))) + last_segment = new_segment + position.x += 1.5 * float(segments) + Audio.play_sound(Audio.a_spaghetti, Audio.ac_boss) diff --git a/objects/environment/spaghetti/spaghetti.tscn b/objects/environment/spaghetti/spaghetti.tscn new file mode 100644 index 0000000..c97cc30 --- /dev/null +++ b/objects/environment/spaghetti/spaghetti.tscn @@ -0,0 +1,28 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/environment/spaghetti/spaghetti.gd" type="Script" id=1] + +[sub_resource type="PhysicsMaterial" id=3] +friction = 0.25 + +[sub_resource type="CapsuleShape2D" id=1] +radius = 0.5 +height = 3.0 + +[node name="Spaghetti" type="Node2D"] +script = ExtResource( 1 ) + +[node name="Segment" type="RigidBody2D" parent="."] +physics_material_override = SubResource( 3 ) + +[node name="Line" type="Line2D" parent="Segment"] +points = PoolVector2Array( -2, 0, 2, 0 ) +width = 1.0 +default_color = Color( 0.988235, 0.984314, 0.839216, 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Segment"] +rotation = 1.5708 +shape = SubResource( 1 ) + +[node name="Joint" type="PinJoint2D" parent="Segment"] +position = Vector2( -1.5, 0 ) diff --git a/objects/environment/splash/splash_particles.tscn b/objects/environment/splash/splash_particles.tscn new file mode 100644 index 0000000..d84eecb --- /dev/null +++ b/objects/environment/splash/splash_particles.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://graphics/particles/splash.png" type="Texture" id=1] + +[node name="SplashParticles" type="CPUParticles2D"] +pause_mode = 2 +z_index = -5 +emitting = false +amount = 16 +lifetime = 2.0 +one_shot = true +explosiveness = 0.9 +texture = ExtResource( 1 ) +emission_shape = 2 +emission_rect_extents = Vector2( 2, 0 ) +flag_align_y = true +direction = Vector2( 0, -1 ) +spread = 10.0 +gravity = Vector2( 0, 120 ) +initial_velocity = 100.0 +initial_velocity_random = 0.5 +scale_amount = 0.25 +scale_amount_random = 0.5 diff --git a/objects/environment/stalactite/stalactite.gd b/objects/environment/stalactite/stalactite.gd new file mode 100644 index 0000000..fe987e0 --- /dev/null +++ b/objects/environment/stalactite/stalactite.gd @@ -0,0 +1,43 @@ +extends Node2D + +onready var cast = $RayCast2D +export var fall_speed = 100 +var fall = false +onready var refresh_timer = $RefreshTimer +onready var anims = $AnimationPlayer +onready var startpos = position + +func _ready(): + # adjust to difficulty + fall_speed *= Game.enemy_speed_factor + +func _physics_process(delta): + if cast.is_colliding(): + var collider = cast.get_collider() + if collider.is_in_group("player_hitbox") or collider.is_in_group("msx"): + anims.play("wiggle") + + if fall == true: + position.y += fall_speed * delta + + if !refresh_timer.is_stopped() && refresh_timer.get_time_left() <= 0.6: + anims.play("disappear") + + + +func _on_Hitbox_area_entered(area): + if area.is_in_group("player_hitbox"): + area.get_parent().die() + + +func _on_RefreshTimer_timeout(): + call_deferred("set_position", startpos) + fall = false + anims.play("idle") + anims.play("disappear", -1, -1.0, true) + + +func _on_AnimationPlayer_animation_finished(anim_name): + if anim_name == "wiggle": + if fall == false: refresh_timer.start() + fall = true diff --git a/objects/environment/stalactite/stalactite.tscn b/objects/environment/stalactite/stalactite.tscn new file mode 100644 index 0000000..1d66b73 --- /dev/null +++ b/objects/environment/stalactite/stalactite.tscn @@ -0,0 +1,157 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://graphics/stalactite/stalactite.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/stalactite/stalactite.gd" type="Script" id=2] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 4, 2.5 ) + +[sub_resource type="Animation" id=4] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Hitbox/CollisionShape2D:disabled") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} + +[sub_resource type="Animation" id=2] +resource_name = "disappear" +length = 0.6 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.00203761, 0.1, 0.2, 0.3, 0.4, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ true, false, true, false, true, false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Hitbox/CollisionShape2D:disabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ false, true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("RayCast2D:enabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.6 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + +[sub_resource type="Animation" id=3] +resource_name = "idle" +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("RayCast2D:enabled") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Hitbox/CollisionShape2D:disabled") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=5] +resource_name = "wiggle" +length = 0.1 +step = 0.025 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.025, 0.05, 0.075, 0.1 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 4, 3 ), Vector2( 3, 3 ), Vector2( 4, 3 ), Vector2( 5, 3 ), Vector2( 4, 3 ) ] +} + +[node name="Stalactite" type="Node2D"] +script = ExtResource( 2 ) + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 4, 3 ) +texture = ExtResource( 1 ) + +[node name="RayCast2D" type="RayCast2D" parent="."] +position = Vector2( 3, 3 ) +enabled = true +cast_to = Vector2( 0, 40 ) +collision_mask = 10 +collide_with_areas = true + +[node name="Hitbox" type="Area2D" parent="."] +position = Vector2( 0, 3 ) +collision_mask = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 4, 0 ) +shape = SubResource( 1 ) +disabled = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "idle" +anims/RESET = SubResource( 4 ) +anims/disappear = SubResource( 2 ) +anims/idle = SubResource( 3 ) +anims/wiggle = SubResource( 5 ) + +[node name="RefreshTimer" type="Timer" parent="."] +wait_time = 2.0 +one_shot = true + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] +[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] +[connection signal="timeout" from="RefreshTimer" to="." method="_on_RefreshTimer_timeout"] diff --git a/objects/environment/stalactite/stalactite_particles.gd b/objects/environment/stalactite/stalactite_particles.gd new file mode 100644 index 0000000..ea07667 --- /dev/null +++ b/objects/environment/stalactite/stalactite_particles.gd @@ -0,0 +1,4 @@ +extends CPUParticles2D + +func _ready(): + emitting = true diff --git a/objects/environment/stalactite/stalactite_particles.tscn b/objects/environment/stalactite/stalactite_particles.tscn new file mode 100644 index 0000000..c8fba30 --- /dev/null +++ b/objects/environment/stalactite/stalactite_particles.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://graphics/particles/stalactite.png" type="Texture" id=1] +[ext_resource path="res://objects/environment/stalactite/stalactite_particles.gd" type="Script" id=2] + +[node name="StalactiteParticles" type="CPUParticles2D"] +emitting = false +lifetime = 0.2 +one_shot = true +texture = ExtResource( 1 ) +direction = Vector2( 0, -1 ) +spread = 180.0 +gravity = Vector2( 0, 300 ) +initial_velocity = 80.0 +angle = 255.3 +angle_random = 0.47 +scale_amount = 0.0 +scale_amount_random = 1.0 +script = ExtResource( 2 ) diff --git a/objects/environment/switches/button.gd b/objects/environment/switches/button.gd index 87d0c8b..836b530 100644 --- a/objects/environment/switches/button.gd +++ b/objects/environment/switches/button.gd @@ -9,5 +9,6 @@ func _on_ActivationArea_area_entered(area): if area.is_in_group("player_hitbox"): activate() $Sprite.frame = 1 + $StaticBody2D/CollisionPolygon2D.disabled = true pressed = true Audio.play_sound(sound,$AudioStreamPlayer) diff --git a/objects/environment/switches/button.tscn b/objects/environment/switches/button.tscn index 54f7a02..f49b15d 100644 --- a/objects/environment/switches/button.tscn +++ b/objects/environment/switches/button.tscn @@ -8,7 +8,6 @@ extents = Vector2( 2, 0.5 ) [node name="Button" type="Node2D"] script = ExtResource( 2 ) -type = "button" [node name="Sprite" type="Sprite" parent="."] position = Vector2( 4, 4 ) diff --git a/objects/environment/test_fire/test_fire.tscn b/objects/environment/test_fire/test_fire.tscn new file mode 100644 index 0000000..ae6b1b0 --- /dev/null +++ b/objects/environment/test_fire/test_fire.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://graphics/backgrounds/fire.png" type="Texture" id=1] +[ext_resource path="res://shaders/fire.gdshader" type="Shader" id=2] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) + +[node name="Node2D" type="Node2D"] + +[node name="ColorRect" type="ColorRect" parent="."] +margin_right = 256.0 +margin_bottom = 192.0 +color = Color( 0, 0, 0, 1 ) + +[node name="Fire" type="Sprite" parent="."] +material = SubResource( 1 ) +position = Vector2( 144, 96 ) +scale = Vector2( 2.02667, 1 ) +texture = ExtResource( 1 ) diff --git a/objects/environment/turniwood/turning_platform.gd b/objects/environment/turniwood/turning_platform.gd index 7c7cb03..5bc03d0 100644 --- a/objects/environment/turniwood/turning_platform.gd +++ b/objects/environment/turniwood/turning_platform.gd @@ -1,15 +1,20 @@ +tool extends Node2D + onready var anims = $AnimationPlayer onready var flip_timer = $FlipTimer onready var delay_timer = $DelayTimer onready var static_body = $StaticBody2D export var time:float = 60 export var delay = 0.0 -export(int, "Wood", "Yellow") var color +export var texture: Texture setget _set_texture onready var time_ms = time / 60.0 # Time is converted from frames @ 60fps to ms onready var collision_layer = static_body.collision_layer func _ready(): + if Engine.editor_hint: + return + _set_texture(texture) #Auto start if delay variable is zero if delay == 0.0: anims.play("idle") @@ -17,7 +22,12 @@ func _ready(): else: delay_timer.start(delay) #Easy mode - time_ms /= Game.easy_mode_speed_factor + time_ms /= Game.enemy_speed_factor + +func _set_texture(new_texture: Texture) -> void: + texture = new_texture + if is_inside_tree(): + $Sprite.texture = new_texture func _on_AnimationPlayer_animation_finished(anim_name): #Return to idle after turn animation diff --git a/objects/environment/turniwood/turning_platform.tscn b/objects/environment/turniwood/turning_platform.tscn index b35ef29..6e0e46f 100644 --- a/objects/environment/turniwood/turning_platform.tscn +++ b/objects/environment/turniwood/turning_platform.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=8 format=2] [ext_resource path="res://objects/environment/turniwood/turning_platform.gd" type="Script" id=1] [ext_resource path="res://graphics/turniwood/turning_platform_yellow.png" type="Texture" id=2] @@ -9,12 +9,27 @@ extents = Vector2( 4, 1 ) [sub_resource type="RectangleShape2D" id=4] extents = Vector2( 3.5, 0.5 ) +[sub_resource type="Animation" id=5] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0 ] +} + [sub_resource type="Animation" id=2] resource_name = "idle" loop = true step = 0.125 tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") +tracks/0/path = NodePath("StaticBody2D/CollisionShape2D:disabled") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false @@ -23,10 +38,10 @@ tracks/0/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, -"values": [ Rect2( 0, 0, 8, 8 ) ] +"values": [ false ] } tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:rotation_degrees") +tracks/1/path = NodePath("Sprite:frame") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false @@ -35,19 +50,7 @@ tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, -"values": [ 0.0 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("StaticBody2D/CollisionShape2D:disabled") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ false ] +"values": [ 0 ] } [sub_resource type="Animation" id=3] @@ -79,50 +82,53 @@ tracks/1/keys = { "values": [ Rect2( 0, 0, 8, 8 ), Rect2( 8, 0, 8, 8 ), Rect2( 0, 0, 8, 8 ), Rect2( 8, 0, 8, 8 ), Rect2( 0, 0, 8, 8 ) ] } tracks/2/type = "value" -tracks/2/path = NodePath("Sprite:rotation_degrees") +tracks/2/path = NodePath("Sprite:position") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { -"times": PoolRealArray( 0.4, 0.55, 0.65, 0.8, 0.9 ), -"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), -"update": 1, -"values": [ 0.0, 90.0, 90.0, 0.0, 0.0 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Sprite:position") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { "times": PoolRealArray( 0.15, 0.2, 0.35, 0.4 ), "transitions": PoolRealArray( 1, 1, 1, 1 ), "update": 0, "values": [ Vector2( 4, 4 ), Vector2( 5, 4 ), Vector2( 3, 4 ), Vector2( 4, 4 ) ] } +tracks/3/type = "value" +tracks/3/path = NodePath("Sprite:frame") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.55, 0.65, 0.8, 0.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3, 0 ] +} [node name="TurningPlatform" type="Node2D"] script = ExtResource( 1 ) +texture = ExtResource( 2 ) [node name="Sprite" type="Sprite" parent="."] position = Vector2( 4, 4 ) texture = ExtResource( 2 ) -region_enabled = true +hframes = 4 region_rect = Rect2( 0, 0, 8, 8 ) [node name="StaticBody2D" type="StaticBody2D" parent="."] collision_layer = 4 [node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +visible = false position = Vector2( 4, 4 ) shape = SubResource( 1 ) -one_way_collision_margin = 0.0 +one_way_collision = true [node name="DetectPlayer" type="Area2D" parent="."] collision_layer = 0 collision_mask = 128 +monitoring = false monitorable = false [node name="CollisionShape2D" type="CollisionShape2D" parent="DetectPlayer"] @@ -130,6 +136,7 @@ position = Vector2( 4, 4 ) shape = SubResource( 4 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 5 ) anims/idle = SubResource( 2 ) anims/turn = SubResource( 3 ) diff --git a/objects/environment/zball/zball.gd b/objects/environment/zball/zball.gd new file mode 100644 index 0000000..7c9a173 --- /dev/null +++ b/objects/environment/zball/zball.gd @@ -0,0 +1,26 @@ +extends RigidBody2D + + +export var max_glow: float = 5.0 + + +onready var glow: Light2D = $Glow + + +func _on_Hurtbox_area_entered(area: Area2D) -> void: + if area.is_in_group("enemy_hitbox"): + var target = area.get_parent() + target.die() + + +func _physics_process(delta: float) -> void: + var speed: float = inverse_lerp(0.0, 250.0, linear_velocity.length()) + glow.energy = lerp(0.0, max_glow, speed) + + +func _on_body_entered(body: Node) -> void: + pass +# if glow.energy < max_glow: +# pass +# glow.energy += glow_increase +# smoke_particles.amount += 1 diff --git a/objects/environment/zball/zball.tscn b/objects/environment/zball/zball.tscn new file mode 100644 index 0000000..c531390 --- /dev/null +++ b/objects/environment/zball/zball.tscn @@ -0,0 +1,38 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://objects/environment/zball/zball.gd" type="Script" id=1] +[ext_resource path="res://graphics/secret/zball.png" type="Texture" id=2] +[ext_resource path="res://graphics/secret/zball_glow.png" type="Texture" id=3] + +[sub_resource type="PhysicsMaterial" id=2] +bounce = 0.75 + +[sub_resource type="CircleShape2D" id=1] +radius = 4.0 + +[node name="ZBall" type="RigidBody2D"] +mass = 5.0 +physics_material_override = SubResource( 2 ) +continuous_cd = 2 +script = ExtResource( 1 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource( 1 ) + +[node name="Sprite" type="Sprite" parent="."] +light_mask = 9 +texture = ExtResource( 2 ) + +[node name="Glow" type="Light2D" parent="."] +texture = ExtResource( 3 ) +energy = 5.0 +range_item_cull_mask = 8 + +[node name="Hurtbox" type="Area2D" parent="."] +collision_mask = 5 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hurtbox"] +shape = SubResource( 1 ) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] +[connection signal="area_entered" from="Hurtbox" to="." method="_on_Hurtbox_area_entered"] diff --git a/objects/hud/3d_text.gd b/objects/hud/3d_text.gd new file mode 100644 index 0000000..ffdbd9e --- /dev/null +++ b/objects/hud/3d_text.gd @@ -0,0 +1,35 @@ +tool +extends ViewportContainer + + +export var text: String = "" setget _set_text +export var text_material: Material = null setget _set_material + + +onready var text_mesh = $"%TextMesh" +onready var animation_player = $"%AnimationPlayer" +export var anim = "RESET" + +func _ready() -> void: + animation_player.play(anim) + + +func _set_text(value: String) -> void: + text = value + if not is_instance_valid(text_mesh): + yield(self, "ready") + text_mesh.mesh.text = text + + +func _set_material(value: Material) -> void: + text_material = value + if not is_instance_valid(text_mesh): + yield(self, "ready") + text_mesh.mesh.material = text_material + +func final_score(): + _set_text("%05d" % Game.final_score) + Audio.play_sound(Audio.a_final_score,Audio.ac_collectible) + +func play_confirm_sound(): + pass # Replace with function body. diff --git a/objects/hud/3d_text.tscn b/objects/hud/3d_text.tscn new file mode 100644 index 0000000..da91231 --- /dev/null +++ b/objects/hud/3d_text.tscn @@ -0,0 +1,692 @@ +[gd_scene load_steps=23 format=2] + +[ext_resource path="res://ui/PressStart2P-Regular.ttf" type="DynamicFontData" id=1] +[ext_resource path="res://objects/hud/3d_text.gd" type="Script" id=2] +[ext_resource path="res://ui/Kozuka Mincho Std H.otf" type="DynamicFontData" id=3] +[ext_resource path="res://ui/Boba Date.otf" type="DynamicFontData" id=4] +[ext_resource path="res://ui/HooskaiChamferedSquare.ttf" type="DynamicFontData" id=5] + +[sub_resource type="DynamicFont" id=19] +font_data = ExtResource( 1 ) + +[sub_resource type="TextMesh" id=2] +resource_local_to_scene = true +text = "TEXT" +font = SubResource( 19 ) +pixel_size = 0.05 +depth = 0.1 + +[sub_resource type="Environment" id=4] +background_mode = 1 +ambient_light_color = Color( 1, 1, 1, 1 ) +ambient_light_energy = 0.5 + +[sub_resource type="Animation" id=5] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 1, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 1.1, 1.5, 2 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("TextMesh:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text_material") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ null ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("..:text") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "TEXT" ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("TextMesh:mesh:font:font_data") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ ExtResource( 1 ) ] +} + +[sub_resource type="Animation" id=6] +resource_name = "Zoom Entrance" +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:translation") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 1, -100 ), Vector3( 0, 1, 0 ) ] +} + +[sub_resource type="SpatialMaterial" id=16] +albedo_color = Color( 0.105882, 0.34902, 0.509804, 1 ) +metallic = 0.46 + +[sub_resource type="Animation" id=17] +resource_name = "bug world" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:rotation_degrees") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 0, 360, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0.8, 0.8, 0.8 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("..:text_material") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ SubResource( 16 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "WELC0ME T0 BUG W0RLD" ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("TextMesh:mesh:font:font_data") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 4 ) ] +} + +[sub_resource type="SpatialMaterial" id=11] +albedo_color = Color( 0.309804, 0.690196, 0.380392, 1 ) +metallic = 0.35 +metallic_specular = 0.11 + +[sub_resource type="Animation" id=20] +resource_name = "final score" +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:rotation_degrees") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 180, 0, 216 ), Vector3( 360, 0, 360 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 1, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("..:text_material") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ SubResource( 11 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "00000" ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("TextMesh:mesh:font:font_data") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 5 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("TextMesh:translation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( -8, 1.8, 0 ), Vector3( 0, 0, 0 ) ] +} +tracks/6/type = "method" +tracks/6/path = NodePath("..") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "final_score" +} ] +} + +[sub_resource type="SpatialMaterial" id=9] +albedo_color = Color( 0.901961, 0.133333, 0.133333, 1 ) +metallic = 0.35 + +[sub_resource type="Animation" id=18] +resource_name = "fucker" +length = 2.0 +step = 0.025 +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 1.4, 1.825 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, -3, 0 ), Vector3( 0, 1, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 1.4, 1.825 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 1, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("TextMesh:rotation_degrees") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 1.4, 1.825 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 180, 0 ), Vector3( 0, 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text_material") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 1.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ SubResource( 9 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("..:text") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 1.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "FUCKER" ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("TextMesh:mesh:font:font_data") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 1.4 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 1 ) ] +} + +[sub_resource type="Animation" id=10] +resource_name = "game over" +length = 2.0 +step = 0.025 +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, -3, 0 ), Vector3( 0, 1.8, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 1, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("TextMesh:rotation_degrees") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 2 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 180, 0 ), Vector3( 0, 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text_material") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ SubResource( 9 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("..:text") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "GAME OVER" ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("TextMesh:mesh:font:font_data") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 1 ) ] +} + +[sub_resource type="Animation" id=7] +resource_name = "level complete" +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:rotation_degrees") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3, 0.8 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 180, 0, 216 ), Vector3( 360, 0, 360 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.8, 0.9, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 1, 1, 1 ), Vector3( 1.1, 1.1, 1.1 ), Vector3( 1, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("..:text_material") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ SubResource( 11 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "YOU WIN!" ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("TextMesh:mesh:font:font_data") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 1 ) ] +} + +[sub_resource type="SpatialMaterial" id=12] +albedo_color = Color( 0.439216, 0.780392, 0.658824, 1 ) + +[sub_resource type="Animation" id=13] +resource_name = "prey slaughtered" +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 1, 0 ), Vector3( 0, 1, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.3, 0.35, 0.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 1, 1, 1 ), Vector3( 1.1, 1.1, 1.1 ), Vector3( 1, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("TextMesh:rotation_degrees") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 0, 0, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text_material") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ SubResource( 12 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("TextMesh:mesh:font:font_data") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 3 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("..:text") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "PREY SLAUGHTERED" ] +} + +[sub_resource type="SpatialMaterial" id=14] +albedo_color = Color( 0.901961, 0.619608, 0.133333, 1 ) + +[sub_resource type="Animation" id=15] +resource_name = "victory" +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("TextMesh:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, -3, 0 ), Vector3( 0, 1, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("TextMesh:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.9, 0.95, 1 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 0, 0 ), Vector3( 1, 1, 1 ), Vector3( 1.1, 1.1, 1.1 ), Vector3( 1, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("TextMesh:rotation_degrees") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector3( 0, 180, 0 ), Vector3( 0, 0, 720 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("..:text_material") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ SubResource( 14 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("..:text") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ "VICTORY!" ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("TextMesh:mesh:font:font_data") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 1 ) ] +} + +[node name="3DText" type="ViewportContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 2 ) +text = "TEXT" + +[node name="Viewport" type="Viewport" parent="."] +size = Vector2( 256, 192 ) +transparent_bg = true +handle_input_locally = false +usage = 3 +render_target_update_mode = 3 +gui_disable_input = true + +[node name="TextMesh" type="MeshInstance" parent="Viewport"] +unique_name_in_owner = true +transform = Transform( 1.1, 0, 0, 0, 1.5, 0, 0, 0, 2, 0, 1, 0 ) +mesh = SubResource( 2 ) + +[node name="DirectionalLight" type="DirectionalLight" parent="Viewport"] +transform = Transform( 0.893849, 0.317044, -0.317044, 0, 0.707107, 0.707107, 0.448368, -0.632047, 0.632047, 0, 1, 0 ) +light_specular = 16.0 + +[node name="Camera" type="Camera" parent="Viewport"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 5 ) +environment = SubResource( 4 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="Viewport"] +unique_name_in_owner = true +anims/RESET = SubResource( 5 ) +"anims/Zoom Entrance" = SubResource( 6 ) +"anims/bug world" = SubResource( 17 ) +"anims/final score" = SubResource( 20 ) +anims/fucker = SubResource( 18 ) +"anims/game over" = SubResource( 10 ) +"anims/level complete" = SubResource( 7 ) +"anims/prey slaughtered" = SubResource( 13 ) +anims/victory = SubResource( 15 ) diff --git a/objects/hud/gamepad_buttons.atlastex b/objects/hud/gamepad_buttons.atlastex new file mode 100644 index 0000000..d9d5e07 Binary files /dev/null and b/objects/hud/gamepad_buttons.atlastex differ diff --git a/objects/hud/hud.gd b/objects/hud/hud.gd index 3e984cb..c1a7f77 100644 --- a/objects/hud/hud.gd +++ b/objects/hud/hud.gd @@ -12,12 +12,16 @@ onready var arrow_counter = $ArrowCounter onready var lives_counter = $LivesCounter onready var high_counter = $HighCounter onready var time_counter = $TimeCounter +onready var oxygen = $Oxygen +onready var oxygen_meter = $Oxygen/OxygenMeter export var song_name = "♫Music" export (Color) var bonus_color func _ready(): - Game.time = 0 + # load arrow palette + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + $Arrow.material.set_shader_param("palette", palette) #Change graphics depending on if lives are on if Game.use_lives: $LivesHead.visible = true @@ -31,6 +35,23 @@ func _ready(): tween.tween_property(music, "rect_position:x", 254.0 - music.rect_size.x, 1.0) tween.tween_interval(3.0) tween.tween_property(music, "rect_position:x", 256.0, 1.0) + #Fixes frame 1 2 deaths counter + if Game.use_lives == false: + lives_counter.text = str(Game.deaths) + #Show oxygen meter when underwater +# var player = get_tree().get_nodes_in_group("player").pop_back() +# if player.underwater == true: oxygen.visible = true + +func shard_popup(shard_number): + #Change text to song name + var shard_title = $ShardTitle + var level = LevelData.levels[Game.current_level] + shard_title.text = "§" + str(level.shard_titles[shard_number]) + yield(get_tree(), "idle_frame") + var tween = create_tween() + tween.tween_property(shard_title, "rect_position:x", 254.0 - shard_title.rect_size.x, 1.0) + tween.tween_interval(3.0) + tween.tween_property(shard_title, "rect_position:x", 256.0, 1.0) func _physics_process(delta): #Gold Counter @@ -38,11 +59,11 @@ func _physics_process(delta): #Shard Counter shard_counter.text = str(Game.shards) #Star Counter - red_star.visible = Game.stars[0] - yellow_star.visible = Game.stars[1] - green_star.visible = Game.stars[2] - blue_star.visible = Game.stars[3] - magenta_star.visible = Game.stars[4] + red_star.visible = Game.stars_collected[0] + yellow_star.visible = Game.stars_collected[1] + green_star.visible = Game.stars_collected[2] + blue_star.visible = Game.stars_collected[3] + magenta_star.visible = Game.stars_collected[4] #Score Counter score_counter.text = "%05d" % Game.score #Arrow Counter @@ -52,19 +73,23 @@ func _physics_process(delta): if Game.use_lives: lives_counter.text = str(Game.lives) else: - lives_counter.text = str(Game.deaths) + if Game.marathon_mode: + lives_counter.text = str(Game.marathon_deaths) + else: + lives_counter.text = str(Game.deaths) #Life bonus color - if Game.lives == 2: + if Game.deaths <= 0: lives_counter.modulate = bonus_color else: lives_counter.modulate = Color.white - #High counter - high_counter.text = str("HIGH:") + str("%06d" % Game.high_score) ##Timer - Game.time += delta - time_counter.text = Game.timeify(Game.time) + time_counter.text = Game.format_time(Game.time) #Time bonus counter if (Game.has_collection_bonus() && Game.time <= Game.get_map().target_time_100) or (!Game.has_collection_bonus() && Game.time <= Game.get_map().target_time_any): time_counter.modulate = bonus_color else: time_counter.modulate = Color.white +# #Oxygen meter +# var player = get_tree().get_nodes_in_group("player").pop_back() +# oxygen_meter.scale.x = player.oxygen_timer.time_left + #if oxygen_meter.scale.x > 15: oxygen_meter.scale.x = 15 diff --git a/objects/hud/hud.tscn b/objects/hud/hud.tscn index e55518d..20b2064 100644 --- a/objects/hud/hud.tscn +++ b/objects/hud/hud.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=13 format=2] +[gd_scene load_steps=22 format=2] [ext_resource path="res://graphics/hud/stars_hud.png" type="Texture" id=1] [ext_resource path="res://graphics/hud/lives_head.png" type="Texture" id=2] @@ -8,17 +8,34 @@ [ext_resource path="res://objects/hud/hud.gd" type="Script" id=6] [ext_resource path="res://graphics/hud/key_counter.png" type="Texture" id=7] [ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=8] -[ext_resource path="res://ui/2ndpuberty_no_dropshadow.tres" type="Theme" id=9] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=9] [ext_resource path="res://ui/theme.tres" type="Theme" id=10] +[ext_resource path="res://graphics/hud/oxygen.png" type="Texture" id=11] +[ext_resource path="res://graphics/hud/oxygen_meter.png" type="Texture" id=12] +[ext_resource path="res://shaders/recolor.tres" type="Shader" id=13] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=14] +[ext_resource path="res://graphics/hud/hud_arrow.png" type="Texture" id=15] +[ext_resource path="res://scripts/sg_palette.gd" type="Script" id=16] + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 13 ) +shader_param/palette = ExtResource( 14 ) [sub_resource type="ShaderMaterial" id=1] [sub_resource type="ShaderMaterial" id=2] -[node name="HUD" type="CanvasLayer"] +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 13 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 9 ) +shader_param/border_color = Color( 0.219608, 0.219608, 0.219608, 1 ) +shader_param/border_corners = true + +[node name="HUD" type="CanvasLayer" groups=["hud"]] layer = 100 script = ExtResource( 6 ) -song_name = "♫Music" bonus_color = Color( 0.478431, 1, 0.47451, 1 ) [node name="Back" type="Sprite" parent="."] @@ -50,6 +67,19 @@ texture = ExtResource( 5 ) position = Vector2( 9, 6 ) texture = ExtResource( 7 ) +[node name="Arrow" type="Sprite" parent="."] +material = SubResource( 4 ) +position = Vector2( 58, 6 ) +texture = ExtResource( 15 ) + +[node name="ArrowShade" type="Sprite" parent="Arrow"] +modulate = Color( 0.57, 0.57, 0.57, 1 ) +use_parent_material = true +position = Vector2( 0, 4 ) +texture = ExtResource( 15 ) +region_enabled = true +region_rect = Rect2( 0, 6, 5, 1 ) + [node name="RedStar" type="Sprite" parent="."] visible = false material = SubResource( 1 ) @@ -89,8 +119,10 @@ region_rect = Rect2( 32, 0, 8, 8 ) [node name="LivesHead" type="Sprite" parent="."] visible = false +material = SubResource( 5 ) position = Vector2( 234, 6 ) texture = ExtResource( 2 ) +script = ExtResource( 16 ) [node name="DeathsHead" type="Sprite" parent="."] visible = false @@ -146,7 +178,7 @@ margin_top = 181.0 margin_right = 50.0 margin_bottom = 191.0 theme = ExtResource( 10 ) -text = "0:00:00" +text = "00:00:00" [node name="Music" type="Label" parent="."] material = ExtResource( 8 ) @@ -156,6 +188,28 @@ anchor_right = 1.0 anchor_bottom = 1.0 margin_top = -10.0 margin_right = 42.0 -theme = ExtResource( 9 ) +theme = ExtResource( 10 ) text = "♫Music" align = 2 + +[node name="ShardTitle" type="Label" parent="."] +material = SubResource( 3 ) +margin_left = 256.0 +margin_top = 182.0 +margin_right = 333.0 +margin_bottom = 192.0 +theme = ExtResource( 10 ) +text = "§time bonus" +align = 2 + +[node name="Oxygen" type="Sprite" parent="."] +visible = false +position = Vector2( 16, 18 ) +texture = ExtResource( 11 ) + +[node name="OxygenMeter" type="Sprite" parent="Oxygen"] +position = Vector2( -2, -1 ) +rotation = 3.14159 +scale = Vector2( 15, 1 ) +texture = ExtResource( 12 ) +flip_v = true diff --git a/objects/hud/hud_boss.gd b/objects/hud/hud_boss.gd new file mode 100644 index 0000000..6e145e8 --- /dev/null +++ b/objects/hud/hud_boss.gd @@ -0,0 +1,85 @@ +extends CanvasLayer + +onready var gold_counter = $GoldCounter +onready var shard_counter = $ShardCounter +onready var red_star = $RedStar +onready var yellow_star = $YellowStar +onready var green_star = $GreenStar +onready var blue_star = $BlueStar +onready var magenta_star = $MagentaStar +onready var score_counter = $ScoreCounter +onready var arrow_counter = $ArrowCounter +onready var lives_counter = $LivesCounter +onready var high_counter = $HighCounter +onready var time_counter = $TimeCounter +onready var oxygen = $Oxygen +onready var oxygen_meter = $Oxygen/OxygenMeter + +export var song_name = "♫Music" +export (Color) var bonus_color + +func _ready(): + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + $Arrow.material.set_shader_param("palette", palette) + #Change graphics depending on if lives are on + if Game.use_lives: + $LivesHead.visible = true + else: + $DeathsHead.visible = true + #Change text to song name + var music = $Music + music.text = song_name + yield(get_tree(), "idle_frame") + var tween = create_tween() + tween.tween_property(music, "rect_position:x", 254.0 - music.rect_size.x, 1.0) + tween.tween_interval(3.0) + tween.tween_property(music, "rect_position:x", 256.0, 1.0) + #Fixes frame 1 2 deaths counter + if Game.use_lives == false: + lives_counter.text = str(Game.deaths) + #Show oxygen meter when underwater +# var player = get_tree().get_nodes_in_group("player").pop_back() +# if player.underwater == true: oxygen.visible = true + +func shard_popup(shard_number): + #Change text to song name + var shard_title = $ShardTitle + var level = LevelData.levels[Game.current_level] + shard_title.text = "§" + str(level.shard_titles[shard_number]) + yield(get_tree(), "idle_frame") + var tween = create_tween() + tween.tween_property(shard_title, "rect_position:x", 254.0 - shard_title.rect_size.x, 1.0) + tween.tween_interval(3.0) + tween.tween_property(shard_title, "rect_position:x", 256.0, 1.0) + +func _physics_process(delta): + #Star Counter + red_star.visible = Game.stars_collected[0] + yellow_star.visible = Game.stars_collected[1] + green_star.visible = Game.stars_collected[2] + blue_star.visible = Game.stars_collected[3] + magenta_star.visible = Game.stars_collected[4] + #Arrow Counter + arrow_counter.text = str(Game.arrows) + ##TOUCH UP LATER + #Lives counter + if Game.use_lives: + lives_counter.text = str(Game.lives) + else: + lives_counter.text = str(Game.deaths) + #Life bonus color + if Game.lives == 2: + lives_counter.modulate = bonus_color + else: + lives_counter.modulate = Color.white + ##Timer + time_counter.text = Game.format_time(Game.time) + #Time bonus counter + if (Game.has_collection_bonus() && Game.time <= Game.get_map().target_time_100) or (!Game.has_collection_bonus() && Game.time <= Game.get_map().target_time_any): + time_counter.modulate = bonus_color + else: + time_counter.modulate = Color.white +# #Oxygen meter +# var player = get_tree().get_nodes_in_group("player").pop_back() +# oxygen_meter.scale.x = player.oxygen_timer.time_left + #if oxygen_meter.scale.x > 15: oxygen_meter.scale.x = 15 diff --git a/objects/hud/hud_boss.tscn b/objects/hud/hud_boss.tscn new file mode 100644 index 0000000..7dabda4 --- /dev/null +++ b/objects/hud/hud_boss.tscn @@ -0,0 +1,218 @@ +[gd_scene load_steps=22 format=2] + +[ext_resource path="res://graphics/hud/stars_hud.png" type="Texture" id=1] +[ext_resource path="res://graphics/hud/lives_head.png" type="Texture" id=2] +[ext_resource path="res://graphics/hud/hud.png" type="Texture" id=3] +[ext_resource path="res://graphics/hud/deaths_head.png" type="Texture" id=4] +[ext_resource path="res://graphics/hud/gold_counter.png" type="Texture" id=5] +[ext_resource path="res://objects/hud/hud_boss.gd" type="Script" id=6] +[ext_resource path="res://graphics/hud/key_counter.png" type="Texture" id=7] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=8] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=9] +[ext_resource path="res://ui/theme.tres" type="Theme" id=10] +[ext_resource path="res://graphics/hud/oxygen.png" type="Texture" id=11] +[ext_resource path="res://graphics/hud/oxygen_meter.png" type="Texture" id=12] +[ext_resource path="res://shaders/recolor.tres" type="Shader" id=13] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=14] +[ext_resource path="res://graphics/hud/hud_arrow.png" type="Texture" id=15] +[ext_resource path="res://scripts/sg_palette.gd" type="Script" id=16] + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 13 ) +shader_param/palette = ExtResource( 14 ) + +[sub_resource type="ShaderMaterial" id=1] + +[sub_resource type="ShaderMaterial" id=2] + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 13 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 9 ) +shader_param/border_color = Color( 0.219608, 0.219608, 0.219608, 1 ) +shader_param/border_corners = true + +[node name="BossHUD" type="CanvasLayer" groups=["hud"]] +layer = 100 +script = ExtResource( 6 ) +bonus_color = Color( 0.478431, 1, 0.47451, 1 ) + +[node name="Back" type="Sprite" parent="."] +position = Vector2( 128, 96 ) +texture = ExtResource( 3 ) + +[node name="GoldCounter" type="Label" parent="."] +modulate = Color( 0.690196, 0.690196, 0.690196, 1 ) +margin_left = 12.0 +margin_top = 1.0 +margin_right = 26.0 +margin_bottom = 11.0 +theme = ExtResource( 10 ) +text = "--" + +[node name="ShardCounter" type="Label" parent="."] +modulate = Color( 0.690196, 0.690196, 0.690196, 1 ) +margin_left = 41.0 +margin_top = 1.0 +margin_right = 48.0 +margin_bottom = 11.0 +theme = ExtResource( 10 ) +text = "-" + +[node name="Gold" type="Sprite" parent="."] +visible = false +position = Vector2( 8, 6 ) +texture = ExtResource( 5 ) + +[node name="Key" type="Sprite" parent="."] +position = Vector2( 9, 6 ) +texture = ExtResource( 7 ) + +[node name="Arrow" type="Sprite" parent="."] +material = SubResource( 4 ) +position = Vector2( 58, 6 ) +texture = ExtResource( 15 ) + +[node name="ArrowShade" type="Sprite" parent="Arrow"] +modulate = Color( 0.57, 0.57, 0.57, 1 ) +use_parent_material = true +position = Vector2( 0, 4 ) +texture = ExtResource( 15 ) +region_enabled = true +region_rect = Rect2( 0, 6, 5, 1 ) + +[node name="RedStar" type="Sprite" parent="."] +visible = false +material = SubResource( 1 ) +position = Vector2( 83, 6 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 0, 0, 8, 8 ) + +[node name="YellowStar" type="Sprite" parent="."] +visible = false +material = SubResource( 2 ) +position = Vector2( 93, 6 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 8, 0, 8, 8 ) + +[node name="GreenStar" type="Sprite" parent="."] +visible = false +position = Vector2( 103, 6 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 16, 0, 8, 8 ) + +[node name="BlueStar" type="Sprite" parent="."] +visible = false +position = Vector2( 113, 6 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 24, 0, 8, 8 ) + +[node name="MagentaStar" type="Sprite" parent="."] +visible = false +position = Vector2( 123, 6 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 32, 0, 8, 8 ) + +[node name="LivesHead" type="Sprite" parent="."] +visible = false +material = SubResource( 5 ) +position = Vector2( 234, 6 ) +texture = ExtResource( 2 ) +script = ExtResource( 16 ) + +[node name="DeathsHead" type="Sprite" parent="."] +visible = false +position = Vector2( 236, 6 ) +texture = ExtResource( 4 ) + +[node name="ScoreText" type="Label" parent="."] +margin_left = 137.0 +margin_top = 1.0 +margin_right = 221.0 +margin_bottom = 11.0 +theme = ExtResource( 10 ) +text = "SCORE:" + +[node name="ScoreCounter" type="Label" parent="."] +modulate = Color( 0.690196, 0.690196, 0.690196, 1 ) +margin_left = 179.0 +margin_top = 1.0 +margin_right = 214.0 +margin_bottom = 11.0 +theme = ExtResource( 10 ) +text = "-----" + +[node name="HighCounter" type="Label" parent="."] +visible = false +margin_left = 178.0 +margin_top = 179.0 +margin_right = 262.0 +margin_bottom = 199.0 +theme = ExtResource( 10 ) +text = "High:000000" + +[node name="LivesCounter" type="Label" parent="."] +modulate = Color( 0.478431, 1, 0.47451, 1 ) +margin_left = 240.0 +margin_top = 1.0 +margin_right = 247.0 +margin_bottom = 11.0 +theme = ExtResource( 10 ) +text = "2" + +[node name="ArrowCounter" type="Label" parent="."] +margin_left = 61.0 +margin_top = 1.0 +margin_right = 68.0 +margin_bottom = 11.0 +theme = ExtResource( 10 ) +text = "0" + +[node name="TimeCounter" type="Label" parent="."] +modulate = Color( 0.478431, 1, 0.47451, 1 ) +margin_left = 1.0 +margin_top = 181.0 +margin_right = 50.0 +margin_bottom = 191.0 +theme = ExtResource( 10 ) +text = "00:00:00" + +[node name="Music" type="Label" parent="."] +material = ExtResource( 8 ) +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_top = -10.0 +margin_right = 42.0 +theme = ExtResource( 10 ) +text = "♫Music" +align = 2 + +[node name="ShardTitle" type="Label" parent="."] +material = SubResource( 3 ) +margin_left = 256.0 +margin_top = 182.0 +margin_right = 333.0 +margin_bottom = 192.0 +theme = ExtResource( 10 ) +text = "§time bonus" +align = 2 + +[node name="Oxygen" type="Sprite" parent="."] +visible = false +position = Vector2( 16, 18 ) +texture = ExtResource( 11 ) + +[node name="OxygenMeter" type="Sprite" parent="Oxygen"] +position = Vector2( -2, -1 ) +rotation = 3.14159 +scale = Vector2( 15, 1 ) +texture = ExtResource( 12 ) +flip_v = true diff --git a/objects/hud/labeled_slider.gd b/objects/hud/labeled_slider.gd new file mode 100644 index 0000000..af9b80b --- /dev/null +++ b/objects/hud/labeled_slider.gd @@ -0,0 +1,14 @@ +extends HSlider + + +export var label: NodePath + + +func _init() -> void: + connect("value_changed", self, "_on_value_changed") + + +func _on_value_changed(value: float) -> void: + var l = get_node(label) + if l is Label: + l.text = str(value) diff --git a/objects/hud/letter_block.gd b/objects/hud/letter_block.gd new file mode 100644 index 0000000..3f49e6e --- /dev/null +++ b/objects/hud/letter_block.gd @@ -0,0 +1,56 @@ +tool +extends "res://objects/enemy/enemy.gd" + +signal letter_chosen(letter) +signal backspace() + +enum Glyph { + A, B, C, D, E, F, G, H, + I, J, K, L, M, N, O, P, + Q, R, S, T, U, V, W, X, + Y, Z, _0, _1, _2, _3, _4, _5, + _6, _7, _8, _9, Backspace +} +const GLYPH_STRINGS = [ + "A", "B", "C", "D", "E", "F", "G", "H", + "I", "J", "K", "L", "M", "N", "O", "P", + "Q", "R", "S", "T", "U", "V", "W", "X", + "Y", "Z", "0", "1", "2", "3", "4", "5", + "6", "7", "8", "9", "" +] + +export (Glyph) var glyph: int = 0 setget _set_glyph + +onready var sprite: Sprite = $Sprite +onready var _seed: float = randf() * 250.0 + +func _set_glyph(value: int) -> void: + glyph = value + get_node("Sprite").frame = value + +func _ready() -> void: + if Engine.editor_hint: + return + # connect to node in "gets_letters" group so don't have to do the shit manually + for node in get_tree().get_nodes_in_group("gets_letters"): + if node.has_method("_on_letter_chosen"): + connect("letter_chosen", node, "_on_letter_chosen") + if node.has_method("_on_backspace"): + connect("backspace", node, "_on_backspace") + +func _process(delta: float) -> void: + if Engine.editor_hint: + return + sprite.position.x = 4.0 + sin(float(Time.get_ticks_msec()) / 250.0 + _seed) + sprite.position.y = 5.0 + sin(float(Time.get_ticks_msec()) / 125.0 + _seed) + +func die() -> void: + emit_signal("letter_chosen", GLYPH_STRINGS[glyph]) + if glyph == Glyph.Backspace: + emit_signal("backspace") + +func _on_Hitbox_area_entered(area): + emit_signal("letter_chosen", GLYPH_STRINGS[glyph]) + if glyph == Glyph.Backspace: + emit_signal("backspace") + ._on_Hitbox_area_entered(area) diff --git a/objects/hud/letter_block.tscn b/objects/hud/letter_block.tscn new file mode 100644 index 0000000..10f3495 --- /dev/null +++ b/objects/hud/letter_block.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/hud/letter_block.gd" type="Script" id=1] +[ext_resource path="res://graphics/hud/letter_blocks.png" type="Texture" id=2] + +[sub_resource type="RectangleShape2D" id=1] +extents = Vector2( 3, 3.5 ) + +[node name="LetterBlock" type="Node2D" groups=["enemy"]] +script = ExtResource( 1 ) +blood = false + +[node name="Sprite" type="Sprite" parent="."] +position = Vector2( 4, 5 ) +texture = ExtResource( 2 ) +hframes = 8 +vframes = 5 + +[node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox"]] +collision_layer = 0 +collision_mask = 2 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Hitbox"] +position = Vector2( 4, 4.5 ) +shape = SubResource( 1 ) + +[connection signal="area_entered" from="Hitbox" to="." method="_on_Hitbox_area_entered"] diff --git a/objects/hud/menu_sounds.gd b/objects/hud/menu_sounds.gd new file mode 100644 index 0000000..385f933 --- /dev/null +++ b/objects/hud/menu_sounds.gd @@ -0,0 +1,27 @@ +extends Node + +const SEMITONE := 1.05946 +const CHROMATIC := [0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0] +const RUMBLE := [0.0, 0.0, 5.0, 7.0, 10.0, 0.0, 5.0, 7.0, 10.0, 7.0] + +var can_play: bool = false +var current_note: int = 0 +var notes_till_rumble: int = 48 + +onready var select_sound: AudioStreamPlayer = $"%SelectSound" + +func play_select_sound(): + if can_play: + var tune = CHROMATIC if notes_till_rumble > 0 else RUMBLE + if notes_till_rumble == 0: + current_note = 0 + Audio.ac_menu.pitch_scale = pow(SEMITONE, tune[current_note]) + Audio.play_sound(Audio.a_select,Audio.ac_menu) + current_note = posmod(current_note + 1, tune.size()) + notes_till_rumble -= 1 + else: + can_play = true + +func play_confirm_sound(): + Audio.ac_menu.pitch_scale = 1 + Audio.play_sound(Audio.a_confirm,Audio.ac_menu) diff --git a/objects/hud/menu_sounds.tscn b/objects/hud/menu_sounds.tscn new file mode 100644 index 0000000..6217b8c --- /dev/null +++ b/objects/hud/menu_sounds.tscn @@ -0,0 +1,18 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/hud/menu_sounds.gd" type="Script" id=1] +[ext_resource path="res://audio/sounds/confirm.ogg" type="AudioStream" id=2] +[ext_resource path="res://audio/sounds/select.ogg" type="AudioStream" id=3] + +[node name="MenuSounds" type="Node"] +script = ExtResource( 1 ) + +[node name="SelectSound" type="AudioStreamPlayer" parent="."] +unique_name_in_owner = true +stream = ExtResource( 3 ) +volume_db = -15.0 + +[node name="ConfirmSound" type="AudioStreamPlayer" parent="."] +unique_name_in_owner = true +stream = ExtResource( 2 ) +volume_db = -15.0 diff --git a/objects/hud/msx_off_level_indicator.gd b/objects/hud/msx_off_level_indicator.gd new file mode 100644 index 0000000..74dda07 --- /dev/null +++ b/objects/hud/msx_off_level_indicator.gd @@ -0,0 +1,3 @@ +extends Node2D + +onready var anims = $AnimationPlayer diff --git a/objects/hud/msx_off_level_indicator.tscn b/objects/hud/msx_off_level_indicator.tscn new file mode 100644 index 0000000..2fc9b4e --- /dev/null +++ b/objects/hud/msx_off_level_indicator.tscn @@ -0,0 +1,212 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://graphics/hud/off_level_indicator.png" type="Texture" id=1] +[ext_resource path="res://graphics/hud/msx_head.png" type="Texture" id=2] +[ext_resource path="res://objects/hud/msx_off_level_indicator.gd" type="Script" id=3] + +[sub_resource type="Animation" id=2] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Head:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ArrowR:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ArrowL:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=3] +resource_name = "left" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Head:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ArrowL:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ArrowL:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -11, 0 ), Vector2( -13, 0 ), Vector2( -11, 0 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("ArrowR:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=1] +resource_name = "onscreen" +tracks/0/type = "value" +tracks/0/path = NodePath("Head:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("ArrowR:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ArrowL:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=4] +resource_name = "right" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("ArrowR:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Head:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("ArrowR:position") +tracks/2/interp = 2 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 11, 1 ), Vector2( 13, 1 ), Vector2( 11, 1 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("ArrowL:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[node name="MsxOffLevelIndicator" type="Node2D"] +script = ExtResource( 3 ) + +[node name="Head" type="Sprite" parent="."] +visible = false +texture = ExtResource( 2 ) + +[node name="ArrowR" type="Sprite" parent="."] +visible = false +position = Vector2( 11.336, 1 ) +rotation = 1.5708 +texture = ExtResource( 1 ) + +[node name="ArrowL" type="Sprite" parent="."] +visible = false +position = Vector2( -11.336, 0 ) +rotation = -1.5708 +texture = ExtResource( 1 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 2 ) +anims/left = SubResource( 3 ) +anims/onscreen = SubResource( 1 ) +anims/right = SubResource( 4 ) diff --git a/objects/hud/off_level_indicator.tscn b/objects/hud/off_level_indicator.tscn new file mode 100644 index 0000000..ba3281e --- /dev/null +++ b/objects/hud/off_level_indicator.tscn @@ -0,0 +1,46 @@ +[gd_scene load_steps=8 format=2] + +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=2] +[ext_resource path="res://graphics/hud/off_level_indicator.png" type="Texture" id=3] +[ext_resource path="res://graphics/hud/sg_head.png" type="Texture" id=4] +[ext_resource path="res://scripts/sg_palette.gd" type="Script" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true +shader_param/palette = ExtResource( 2 ) + +[sub_resource type="Animation" id=2] +resource_name = "wobble" +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Arrow:position") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, 5 ), Vector2( 1, 3 ), Vector2( 1, 5 ) ] +} + +[node name="OffLevelIndicator" type="Node2D"] +z_index = 4096 + +[node name="Head" type="Sprite" parent="."] +material = SubResource( 1 ) +position = Vector2( 0, 15 ) +texture = ExtResource( 4 ) +script = ExtResource( 5 ) + +[node name="Arrow" type="Sprite" parent="."] +position = Vector2( 1, 5 ) +texture = ExtResource( 3 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +autoplay = "wobble" +anims/wobble = SubResource( 2 ) diff --git a/objects/hud/options_screen.tscn b/objects/hud/options_screen.tscn index bbab1af..5993a79 100644 --- a/objects/hud/options_screen.tscn +++ b/objects/hud/options_screen.tscn @@ -53,6 +53,7 @@ margin_bottom = 152.0 theme = ExtResource( 2 ) [node name="Game" type="VBoxContainer" parent="Tabs"] +visible = false anchor_right = 1.0 anchor_bottom = 1.0 margin_top = 10.0 @@ -123,8 +124,7 @@ align = 0 visible = false anchor_right = 1.0 anchor_bottom = 1.0 -margin_top = 7.0 -margin_bottom = -17.0 +margin_top = 10.0 focus_neighbour_bottom = NodePath("Fullscreen") [node name="Spacer" type="Control" parent="Tabs/Video"] @@ -374,11 +374,9 @@ group = SubResource( 5 ) text = "Fast" [node name="Audio" type="VBoxContainer" parent="Tabs"] -visible = false anchor_right = 1.0 anchor_bottom = 1.0 -margin_top = 7.0 -margin_bottom = -37.0 +margin_top = 10.0 focus_neighbour_bottom = NodePath("MasterVolume/MasterSlider") [node name="Spacer" type="Control" parent="Tabs/Audio"] diff --git a/objects/hud/options_screen_scholar.gd b/objects/hud/options_screen_scholar.gd new file mode 100644 index 0000000..8206e92 --- /dev/null +++ b/objects/hud/options_screen_scholar.gd @@ -0,0 +1,134 @@ +extends Control + + +signal exit + + +# if true, options screen can not exit +var can_exit: bool = true + + +onready var tabs: TabContainer = $"%Tabs" +onready var select_tab: HBoxContainer = $"%SelectTab" +# options nodes +onready var rumble: HBoxContainer = $"%SelectRumble" +onready var gore: HBoxContainer = $"%SelectGore" +onready var speedrun_timer: HBoxContainer = $"%SelectSpeedrunTimer" +onready var speccy_help: HBoxContainer = $"%SelectSpeccyHelp" +onready var fullscreen: HBoxContainer = $"%SelectFullscreen" +onready var window_size: HBoxContainer = $"%SelectWindowSize" +onready var scaling: HBoxContainer = $"%SelectScaling" +onready var fade_speed: HBoxContainer = $"%SelectFadeSpeed" +onready var border: Button = $"%SelectBorder" +onready var scanlines: HBoxContainer = $"%SelectScanlines" +onready var master_vol: HSlider = $"%SelectMasterVol" +onready var music_vol: HSlider = $"%SelectMusicVol" +onready var sound_vol: HSlider = $"%SelectSoundVol" +onready var landing_sound: HBoxContainer = $"%SelectLandingSound" + + +func _ready() -> void: + get_scene_instance_load_placeholder() + _init_values() + + +func focus() -> void: + select_tab.selection = 0 + $"%SelectTab".grab_focus() + _on_tab_selected(0) + + +func _unhandled_input(event: InputEvent) -> void: + Options.save_options() + + if can_exit and event.is_action_pressed("ui_cancel") and not Options.entry: + if visible == true: emit_signal("exit") + + +func _init_values() -> void: + # game + rumble.selection = Options.rumble + gore.selection = Options.gore + speedrun_timer.selection = 1 if Options.speedrun_timer else 0 + speccy_help.selection = 1 if Options.speccy_help else 0 + # video + fullscreen.selection = 1 if Options.fullscreen else 0 + window_size.selection = int(Options.window_size) - 1 + scaling.selection = Options.scaling_mode + fade_speed.selection = Options.transition_speed + border._update() + scanlines.selection = Options.scanlines + # audio + master_vol.value = Options.master_volume * 100.0 + music_vol.value = Options.music_volume * 100.0 + sound_vol.value = Options.sound_volume * 100.0 + landing_sound.selection = 1 if Options.landing_sound else 0 + + +func _on_tab_selected(selection: int) -> void: + tabs.current_tab = selection + var tab = tabs.get_current_tab_control() + var next = tab.get_node(tab.focus_next) + if next: + select_tab.focus_neighbour_bottom = select_tab.get_path_to(next) + else: + select_tab.focus_neighbour_bottom = @"." + select_tab.update_focus_targets() + + +# +# GAME +# +func _on_Rumble_selected(selection) -> void: + Options.rumble = selection + +func _on_Gore_selected(selection) -> void: + Options.gore = selection + +func _on_SelectSpeedrunTimer_selected(selection) -> void: + Options.speedrun_timer = selection == 1 + +func _on_SelectSpeccyHelp_selected(selection) -> void: + Options.speccy_help = selection == 1 + + +# +# VIDEO +# +func _on_Fullscreen_selected(selection) -> void: + Options.fullscreen = selection == 1 # true if 1, false otherwise + +func _on_WindowSize_selected(selection) -> void: + Options.window_size = float(selection + 1) + +func _on_Scaling_selected(selection) -> void: + Options.scaling_mode = selection + +func _on_FadeSpeed_selected(selection) -> void: + Options.transition_speed = selection + +func _on_Border_selected(selection) -> void: + Options.border = selection + +func _on_Scanlines_selected(selection) -> void: + Options.scanlines = selection + + +# +# AUDIO +# +func _on_MasterVol_value_changed(value: float) -> void: + Options.master_volume = value * 0.01 + +func _on_MusicVol_value_changed(value: float) -> void: + Options.music_volume = value * 0.01 + +func _on_SoundVol_value_changed(value: float) -> void: + Options.sound_volume = value * 0.01 + +func _on_LandingSound_selected(selection) -> void: + Options.landing_sound = selection == 1 + + +func _on_DefaultControls_button_down() -> void: + Controls.default_controls() diff --git a/objects/hud/options_screen_scholar.tscn b/objects/hud/options_screen_scholar.tscn new file mode 100644 index 0000000..1939090 --- /dev/null +++ b/objects/hud/options_screen_scholar.tscn @@ -0,0 +1,934 @@ +[gd_scene load_steps=19 format=2] + +[ext_resource path="res://objects/hud/options_screen_scholar.gd" type="Script" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://objects/hud/radio_buttons.gd" type="Script" id=3] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=4] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=5] +[ext_resource path="res://objects/hud/select_border.gd" type="Script" id=6] +[ext_resource path="res://objects/hud/labeled_slider.gd" type="Script" id=7] +[ext_resource path="res://objects/hud/set_keyboard_button.gd" type="Script" id=8] +[ext_resource path="res://objects/hud/set_gamepad_button.gd" type="Script" id=9] +[ext_resource path="res://objects/hud/scroll_follow_focus.gd" type="Script" id=10] +[ext_resource path="res://graphics/hud/levelselect_nexlevel.png" type="Texture" id=11] +[ext_resource path="res://objects/hud/player_name_input.gd" type="Script" id=12] + +[sub_resource type="StyleBoxFlat" id=5] +content_margin_left = 1.0 +content_margin_right = 1.0 +bg_color = Color( 0.14902, 0.0980392, 0.247059, 1 ) +corner_detail = 1 +anti_aliasing = false + +[sub_resource type="StyleBoxFlat" id=6] +content_margin_left = 1.0 +content_margin_right = 1.0 +bg_color = Color( 0.213124, 0.165611, 0.382812, 1 ) +corner_detail = 1 +anti_aliasing = false + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 4 ) +shader_param/speed = Vector2( 4, 0 ) +shader_param/ammount = Vector2( 2, 0 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 4, 0 ) + +[sub_resource type="AtlasTexture" id=3] +atlas = ExtResource( 11 ) +region = Rect2( 0, 0, 8, 8 ) + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 11 ) +region = Rect2( 8, 0, 8, 8 ) + +[node name="OptionsScreen" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 2 ) +script = ExtResource( 1 ) + +[node name="CenterContainer" type="CenterContainer" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="PanelContainer" type="PanelContainer" parent="CenterContainer"] +margin_left = 8.0 +margin_top = 16.0 +margin_right = 248.0 +margin_bottom = 176.0 +rect_min_size = Vector2( 240, 160 ) + +[node name="MarginContainer" type="MarginContainer" parent="CenterContainer/PanelContainer"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 237.0 +margin_bottom = 157.0 +custom_constants/margin_right = 8 +custom_constants/margin_top = 4 +custom_constants/margin_left = 8 +custom_constants/margin_bottom = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer"] +margin_left = 8.0 +margin_top = 4.0 +margin_right = 226.0 +margin_bottom = 152.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"] +margin_right = 218.0 +margin_bottom = 10.0 +text = "-options-" +align = 1 + +[node name="SelectTab" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +margin_top = 14.0 +margin_right = 218.0 +margin_bottom = 24.0 +focus_mode = 2 +alignment = 1 +script = ExtResource( 3 ) +condense = true +options = [ "game", "video", "audio", "input" ] + +[node name="HSeparator" type="HSeparator" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"] +margin_top = 28.0 +margin_right = 218.0 +margin_bottom = 32.0 + +[node name="Tabs" type="TabContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer"] +unique_name_in_owner = true +margin_top = 36.0 +margin_right = 218.0 +margin_bottom = 148.0 +focus_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +tabs_visible = false + +[node name="Game" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs"] +anchor_right = 1.0 +anchor_bottom = 1.0 +focus_next = NodePath("Rumble/SelectRumble") + +[node name="Rumble" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game"] +margin_right = 218.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/Rumble"] +margin_top = 1.0 +margin_right = 49.0 +margin_bottom = 11.0 +text = "Rumble:" + +[node name="SelectRumble" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/Rumble"] +unique_name_in_owner = true +margin_left = 53.0 +margin_right = 218.0 +margin_bottom = 12.0 +focus_neighbour_top = NodePath("../../../../SelectTab") +focus_neighbour_bottom = NodePath("../../Gore/SelectGore") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "off", "deaths", "full" ] + +[node name="Gore" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game"] +margin_top = 16.0 +margin_right = 218.0 +margin_bottom = 28.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/Gore"] +margin_top = 1.0 +margin_right = 35.0 +margin_bottom = 11.0 +text = "Gore:" + +[node name="SelectGore" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/Gore"] +unique_name_in_owner = true +margin_left = 39.0 +margin_right = 218.0 +margin_bottom = 12.0 +focus_neighbour_top = NodePath("../../Rumble/SelectRumble") +focus_neighbour_bottom = NodePath("../../SpeedrunTimer/SelectSpeedrunTimer") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "none", "no stains", "full" ] + +[node name="SpeedrunTimer" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game"] +margin_top = 32.0 +margin_right = 218.0 +margin_bottom = 44.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/SpeedrunTimer"] +margin_top = 1.0 +margin_right = 105.0 +margin_bottom = 11.0 +text = "Speedrun Timer:" + +[node name="SelectSpeedrunTimer" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/SpeedrunTimer"] +unique_name_in_owner = true +margin_left = 144.0 +margin_right = 183.0 +margin_bottom = 12.0 +focus_neighbour_top = NodePath("../../Gore/SelectGore") +focus_neighbour_bottom = NodePath("../../SpeccyHelp/SelectSpeccyHelp") +focus_mode = 2 +size_flags_horizontal = 6 +script = ExtResource( 3 ) +condense = true +options = [ "off", "on" ] + +[node name="SpeccyHelp" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game"] +margin_top = 48.0 +margin_right = 218.0 +margin_bottom = 60.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/SpeccyHelp"] +margin_top = 1.0 +margin_right = 119.0 +margin_bottom = 11.0 +text = "Help from speccy:" + +[node name="SelectSpeccyHelp" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/SpeccyHelp"] +unique_name_in_owner = true +margin_left = 151.0 +margin_right = 190.0 +margin_bottom = 12.0 +focus_neighbour_top = NodePath("../../SpeedrunTimer/SelectSpeedrunTimer") +focus_neighbour_bottom = NodePath("../../ScoreBoardName/PlayerNameInput") +focus_mode = 2 +size_flags_horizontal = 6 +script = ExtResource( 3 ) +condense = true +options = [ "off", "on" ] + +[node name="ScoreBoardName" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game"] +margin_top = 64.0 +margin_right = 218.0 +margin_bottom = 74.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName"] +margin_right = 112.0 +margin_bottom = 10.0 +text = "Scoreboard name:" + +[node name="PlayerNameInput" type="TextEdit" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName"] +margin_left = 130.0 +margin_right = 203.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 73, 0 ) +focus_neighbour_top = NodePath("../../SpeccyHelp/SelectSpeccyHelp") +size_flags_horizontal = 6 +custom_constants/line_spacing = 0 +custom_styles/focus = SubResource( 5 ) +custom_styles/normal = SubResource( 6 ) +script = ExtResource( 12 ) + +[node name="Video" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +focus_next = NodePath("Fullscreen/SelectFullscreen") + +[node name="Fullscreen" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video"] +margin_right = 218.0 +margin_bottom = 10.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Fullscreen"] +margin_right = 140.0 +margin_bottom = 10.0 +text = "Start In fullscreen:" + +[node name="SelectFullscreen" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Fullscreen"] +unique_name_in_owner = true +margin_left = 144.0 +margin_right = 218.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../../../SelectTab") +focus_neighbour_bottom = NodePath("../../WindowSize/SelectWindowSize") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "off", "on" ] + +[node name="WindowSize" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video"] +margin_top = 14.0 +margin_right = 218.0 +margin_bottom = 24.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/WindowSize"] +margin_right = 84.0 +margin_bottom = 10.0 +text = "window size:" + +[node name="SelectWindowSize" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/WindowSize"] +unique_name_in_owner = true +margin_left = 88.0 +margin_right = 218.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../Fullscreen/SelectFullscreen") +focus_neighbour_bottom = NodePath("../../Scaling/SelectScaling") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "1x", "2x", "3x", "4x", "5x" ] + +[node name="Scaling" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video"] +margin_top = 28.0 +margin_right = 218.0 +margin_bottom = 38.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Scaling"] +margin_right = 56.0 +margin_bottom = 10.0 +text = "scaling:" + +[node name="SelectScaling" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Scaling"] +unique_name_in_owner = true +margin_left = 60.0 +margin_right = 218.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../WindowSize/SelectWindowSize") +focus_neighbour_bottom = NodePath("../../FadeSpeed/SelectFadeSpeed") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "integer", "aspect", "stretch" ] + +[node name="FadeSpeed" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video"] +margin_top = 42.0 +margin_right = 218.0 +margin_bottom = 52.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/FadeSpeed"] +margin_right = 35.0 +margin_bottom = 10.0 +text = "fade:" + +[node name="SelectFadeSpeed" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/FadeSpeed"] +unique_name_in_owner = true +margin_left = 39.0 +margin_right = 218.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../Scaling/SelectScaling") +focus_neighbour_bottom = NodePath("../../Border/HBoxContainer/SelectBorder") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "slow", "medium", "fast", "instant" ] + +[node name="Border" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video"] +margin_top = 56.0 +margin_right = 218.0 +margin_bottom = 66.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border"] +margin_right = 49.0 +margin_bottom = 10.0 +text = "border:" + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border"] +margin_left = 53.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +alignment = 1 + +[node name="BorderBackArrow" type="TextureRect" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer"] +unique_name_in_owner = true +visible = false +material = SubResource( 1 ) +margin_left = 30.0 +margin_top = 1.0 +margin_right = 36.0 +margin_bottom = 9.0 +size_flags_vertical = 4 +texture = ExtResource( 5 ) +flip_h = true + +[node name="SelectBorder" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer"] +unique_name_in_owner = true +margin_left = 40.0 +margin_right = 124.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath(".") +focus_neighbour_top = NodePath("../../../FadeSpeed/SelectFadeSpeed") +focus_neighbour_right = NodePath(".") +focus_neighbour_bottom = NodePath("../../../Scanlines/SelectScanlines") +theme = ExtResource( 2 ) +custom_colors/font_color = Color( 1, 1, 1, 1 ) +text = "trans rights" +script = ExtResource( 6 ) + +[node name="BorderNextArrow" type="TextureRect" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer"] +unique_name_in_owner = true +visible = false +material = SubResource( 2 ) +margin_left = 128.0 +margin_top = 1.0 +margin_right = 134.0 +margin_bottom = 9.0 +size_flags_vertical = 4 +texture = ExtResource( 5 ) + +[node name="Scanlines" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video"] +margin_top = 70.0 +margin_right = 218.0 +margin_bottom = 80.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Scanlines"] +margin_right = 70.0 +margin_bottom = 10.0 +text = "scanlines:" + +[node name="SelectScanlines" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Scanlines"] +unique_name_in_owner = true +margin_left = 74.0 +margin_right = 218.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../Border/HBoxContainer/SelectBorder") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "none", "lcd", "crt" ] + +[node name="Audio" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +focus_next = NodePath("Master/SelectMasterVol") + +[node name="Master" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio"] +margin_right = 218.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Master"] +margin_top = 1.0 +margin_right = 94.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +text = "Master vol.:" + +[node name="SelectMasterVol" type="HSlider" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Master"] +unique_name_in_owner = true +margin_left = 98.0 +margin_right = 193.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../../../SelectTab") +focus_neighbour_bottom = NodePath("../../Music/SelectMusicVol") +size_flags_horizontal = 3 +step = 5.0 +value = 100.0 +scrollable = false +script = ExtResource( 7 ) +label = NodePath("../Volume") + +[node name="Volume" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Master"] +margin_left = 197.0 +margin_top = 1.0 +margin_right = 218.0 +margin_bottom = 11.0 +rect_min_size = Vector2( 21, 0 ) +size_flags_horizontal = 9 +text = "100" +align = 2 + +[node name="Music" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio"] +margin_top = 16.0 +margin_right = 218.0 +margin_bottom = 28.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Music"] +margin_top = 1.0 +margin_right = 94.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +text = "Music vol.:" + +[node name="SelectMusicVol" type="HSlider" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Music"] +unique_name_in_owner = true +margin_left = 98.0 +margin_right = 193.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../Master/SelectMasterVol") +focus_neighbour_bottom = NodePath("../../Sound/SelectSoundVol") +size_flags_horizontal = 3 +step = 5.0 +value = 100.0 +scrollable = false +script = ExtResource( 7 ) +label = NodePath("../Volume") + +[node name="Volume" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Music"] +margin_left = 197.0 +margin_top = 1.0 +margin_right = 218.0 +margin_bottom = 11.0 +rect_min_size = Vector2( 21, 0 ) +size_flags_horizontal = 9 +text = "100" +align = 2 + +[node name="Sound" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio"] +margin_top = 32.0 +margin_right = 218.0 +margin_bottom = 44.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Sound"] +margin_top = 1.0 +margin_right = 94.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +text = "Sound vol.:" + +[node name="SelectSoundVol" type="HSlider" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Sound"] +unique_name_in_owner = true +margin_left = 98.0 +margin_right = 193.0 +margin_bottom = 10.0 +focus_neighbour_top = NodePath("../../Music/SelectMusicVol") +focus_neighbour_bottom = NodePath("../../LandingSound/SelectLandingSound") +size_flags_horizontal = 3 +step = 5.0 +value = 100.0 +scrollable = false +script = ExtResource( 7 ) +label = NodePath("../Volume") + +[node name="Volume" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Sound"] +margin_left = 197.0 +margin_top = 1.0 +margin_right = 218.0 +margin_bottom = 11.0 +rect_min_size = Vector2( 21, 0 ) +size_flags_horizontal = 9 +text = "100" +align = 2 + +[node name="LandingSound" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio"] +margin_top = 48.0 +margin_right = 218.0 +margin_bottom = 60.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/LandingSound"] +margin_top = 1.0 +margin_right = 98.0 +margin_bottom = 11.0 +text = "Landing sound:" + +[node name="SelectLandingSound" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/LandingSound"] +unique_name_in_owner = true +margin_left = 102.0 +margin_right = 218.0 +margin_bottom = 12.0 +focus_neighbour_top = NodePath("../../Sound/SelectSoundVol") +focus_mode = 2 +size_flags_horizontal = 3 +script = ExtResource( 3 ) +options = [ "off", "on" ] + +[node name="Input" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs"] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +focus_next = NodePath("ScrollContainer/ControlsVBox/Left/Keyboard") +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Header" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input"] +margin_right = 218.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 0, 12 ) + +[node name="Spacer" type="CenterContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/Header"] +margin_right = 92.0 +margin_bottom = 12.0 +rect_min_size = Vector2( 92, 0 ) + +[node name="UpArrow" type="TextureRect" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/Header/Spacer"] +unique_name_in_owner = true +margin_left = 42.0 +margin_top = 2.0 +margin_right = 50.0 +margin_bottom = 10.0 +texture = SubResource( 3 ) + +[node name="Keyboard" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/Header"] +margin_left = 96.0 +margin_top = 1.0 +margin_right = 155.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +text = "Keyboard" +align = 1 + +[node name="Gamepad" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/Header"] +margin_left = 159.0 +margin_top = 1.0 +margin_right = 218.0 +margin_bottom = 11.0 +size_flags_horizontal = 3 +text = "Gamepad" +align = 1 + +[node name="ScrollContainer" type="ScrollContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input"] +margin_top = 16.0 +margin_right = 218.0 +margin_bottom = 98.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource( 10 ) + +[node name="ControlsVBox" type="VBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer"] +unique_name_in_owner = true +margin_right = 218.0 +margin_bottom = 122.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Left" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_right = 218.0 +margin_bottom = 10.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Left"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "left" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Left"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "move_left" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Left"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +icon_align = 1 +script = ExtResource( 9 ) +action = "move_left" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Right" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_top = 14.0 +margin_right = 218.0 +margin_bottom = 24.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Right"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "right" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Right"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "move_right" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Right"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 9 ) +action = "move_right" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Up" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_top = 28.0 +margin_right = 218.0 +margin_bottom = 38.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Up"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "up" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Up"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "move_up" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Up"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 9 ) +action = "move_up" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Down" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_top = 42.0 +margin_right = 218.0 +margin_bottom = 52.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Down"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "down" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Down"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "move_down" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Down"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 9 ) +action = "move_down" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Confirm" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_top = 56.0 +margin_right = 218.0 +margin_bottom = 66.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Confirm"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "confirm" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Confirm"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "ui_accept" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Confirm"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 9 ) +action = "ui_accept" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Back" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_top = 70.0 +margin_right = 218.0 +margin_bottom = 80.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Back"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "back" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Back"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "ui_cancel" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Back"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 9 ) +action = "ui_cancel" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Jump" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_top = 84.0 +margin_right = 218.0 +margin_bottom = 94.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Jump"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "jump" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Jump"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "jump" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Jump"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 9 ) +action = "jump" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Attack" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_top = 98.0 +margin_right = 218.0 +margin_bottom = 108.0 + +[node name="Label" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Attack"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) +text = "attack" +align = 1 + +[node name="Keyboard" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Attack"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +focus_neighbour_left = NodePath("../..") +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 8 ) +action = "shoot" +options_screen = NodePath("../../../../../../../../../..") + +[node name="Gamepad" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/Attack"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +text = "-" +script = ExtResource( 9 ) +action = "shoot" +options_screen = NodePath("../../../../../../../../../..") + +[node name="DefaultControls" type="Button" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox"] +margin_left = 81.0 +margin_top = 112.0 +margin_right = 137.0 +margin_bottom = 122.0 +focus_neighbour_left = NodePath("..") +focus_neighbour_right = NodePath("..") +size_flags_horizontal = 4 +text = "defaults" + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input"] +margin_top = 102.0 +margin_right = 218.0 +margin_bottom = 112.0 + +[node name="Spacer" type="CenterContainer" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/HBoxContainer"] +margin_right = 92.0 +margin_bottom = 10.0 +rect_min_size = Vector2( 92, 0 ) + +[node name="DownArrow" type="TextureRect" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/HBoxContainer/Spacer"] +unique_name_in_owner = true +margin_left = 42.0 +margin_top = 1.0 +margin_right = 50.0 +margin_bottom = 9.0 +texture = SubResource( 4 ) + +[node name="Keyboard" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/HBoxContainer"] +margin_left = 96.0 +margin_right = 155.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +align = 1 + +[node name="Gamepad" type="Label" parent="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/HBoxContainer"] +margin_left = 159.0 +margin_right = 218.0 +margin_bottom = 10.0 +size_flags_horizontal = 3 +align = 1 + +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/SelectTab" to="." method="_on_tab_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/Rumble/SelectRumble" to="." method="_on_Rumble_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/Gore/SelectGore" to="." method="_on_Gore_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/SpeedrunTimer/SelectSpeedrunTimer" to="." method="_on_SelectSpeedrunTimer_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/SpeccyHelp/SelectSpeccyHelp" to="." method="_on_SelectSpeccyHelp_selected"] +[connection signal="focus_entered" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" to="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" method="_on_focus_entered"] +[connection signal="focus_exited" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" to="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" method="_on_focus_exited"] +[connection signal="gui_input" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" to="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" method="_on_gui_input"] +[connection signal="text_changed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" to="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Game/ScoreBoardName/PlayerNameInput" method="_on_text_changed"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Fullscreen/SelectFullscreen" to="." method="_on_Fullscreen_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/WindowSize/SelectWindowSize" to="." method="_on_WindowSize_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Scaling/SelectScaling" to="." method="_on_Scaling_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/FadeSpeed/SelectFadeSpeed" to="." method="_on_FadeSpeed_selected"] +[connection signal="focus_entered" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer/SelectBorder" to="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer/SelectBorder" method="_on_focus_entered"] +[connection signal="focus_exited" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer/SelectBorder" to="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer/SelectBorder" method="_on_focus_exited"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Border/HBoxContainer/SelectBorder" to="." method="_on_Border_selected"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Video/Scanlines/SelectScanlines" to="." method="_on_Scanlines_selected"] +[connection signal="value_changed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Master/SelectMasterVol" to="." method="_on_MasterVol_value_changed"] +[connection signal="value_changed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Music/SelectMusicVol" to="." method="_on_MusicVol_value_changed"] +[connection signal="value_changed" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/Sound/SelectSoundVol" to="." method="_on_SoundVol_value_changed"] +[connection signal="selected" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Audio/LandingSound/SelectLandingSound" to="." method="_on_LandingSound_selected"] +[connection signal="button_down" from="CenterContainer/PanelContainer/MarginContainer/VBoxContainer/Tabs/Input/ScrollContainer/ControlsVBox/DefaultControls" to="." method="_on_DefaultControls_button_down"] diff --git a/objects/hud/pause_screen.gd b/objects/hud/pause_screen.gd index b9a0da4..7a9b7d8 100644 --- a/objects/hud/pause_screen.gd +++ b/objects/hud/pause_screen.gd @@ -1,33 +1,62 @@ extends CanvasLayer -var lore_entry: PackedScene = null +var lore_entries: Array = [] +var current_lore: int = -1 +var can_switch_lore: bool = true onready var options_screen = $OptionsScreen onready var lore_container = $LoreContainer # Called when the node enters the scene tree for the first time. func _ready(): + get_tree().paused = true $Body/Resume.grab_focus() + if Game.marathon_mode: + $Body/Restart.disabled = true + $Body/Restart.focus_mode = Control.FOCUS_NONE + $"%GreyedRestart".visible = true + $Body.text = "RESUME\nRESTART\nOPTIONS\nQUIT GAME" + else: + $Body.text = "RESUME\nRESTART\nOPTIONS\nEXIT LEVEL" #Random lore - if lore_entry != null: - var lore = lore_entry.instance() - lore_container.add_child(lore) + if lore_entries != null and not lore_entries.empty(): + current_lore = randi() % lore_entries.size() + _update_lore_entry() + #Pause music + Audio.ac_music.set_stream_paused(true) + Audio.ac_pause_music.play() func _physics_process(delta): #Resume with pause button if Input.is_action_just_pressed("pause"): - queue_free() - get_tree().paused = false - - Console.print(get_tree().paused) + unpause() + +func _input(event: InputEvent) -> void: + if can_switch_lore: + if event.is_action_pressed("ui_left"): + current_lore = posmod(current_lore - 1, lore_entries.size()) + _update_lore_entry() + $MenuSounds.play_select_sound() + elif event.is_action_pressed("ui_right"): + current_lore = posmod(current_lore + 1, lore_entries.size()) + _update_lore_entry() + $MenuSounds.play_select_sound() + +func _update_lore_entry() -> void: + if current_lore >= 0 and lore_entries != null and not lore_entries.empty(): + for child in lore_container.get_children(): + lore_container.remove_child(child) + var lore = lore_entries[current_lore].instance() + lore_container.add_child(lore) func _on_Resume_pressed(): - get_tree().paused = false - queue_free() + unpause() func _on_Restart_pressed(): + Audio.ac_music.set_stream_paused(false) + Audio.ac_pause_music.stop() Game.call_deferred("restart_level") get_tree().paused = false queue_free() @@ -35,12 +64,20 @@ func _on_Restart_pressed(): func _on_Settings_pressed(): $LoreContainer.visible = false + options_screen.visible = true + can_switch_lore = false options_screen.focus() func _on_ExitLevel_pressed(): + Audio.ac_music.set_stream_paused(false) + Audio.ac_pause_music.stop() get_tree().paused = false - Game.change_map(load("res://maps/level_select.tscn")) + if Game.marathon_mode: + Game.change_map(load("res://menus/marathon_start.tscn")) + else: + Game.change_map(load("res://menus/level_select_scholar.tscn")) + yield(Fade, "fade_finished") queue_free() @@ -48,3 +85,11 @@ func _on_OptionsScreen_exit(): options_screen.visible = false $LoreContainer.visible = true $Body/Settings.grab_focus() + can_switch_lore = true + +func unpause(): + get_tree().paused = false + #Stop pause music + Audio.ac_music.set_stream_paused(false) + Audio.ac_pause_music.stop() + queue_free() diff --git a/objects/hud/pause_screen.tscn b/objects/hud/pause_screen.tscn index 6b12586..2ce8e48 100644 --- a/objects/hud/pause_screen.tscn +++ b/objects/hud/pause_screen.tscn @@ -1,12 +1,13 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=9 format=2] +[ext_resource path="res://ui/arrow_figure_8.tres" type="Material" id=1] [ext_resource path="res://ui/theme.tres" type="Theme" id=2] [ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=3] [ext_resource path="res://objects/hud/pause_screen.gd" type="Script" id=4] -[ext_resource path="res://ui/2ndpuberty_no_dropshadow.tres" type="Theme" id=5] [ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=6] -[ext_resource path="res://objects/hud/options_screen.tscn" type="PackedScene" id=7] +[ext_resource path="res://objects/hud/options_screen_scholar.tscn" type="PackedScene" id=7] [ext_resource path="res://ui/border.png" type="Texture" id=8] +[ext_resource path="res://objects/hud/menu_sounds.tscn" type="PackedScene" id=9] [node name="PauseScreen" type="CanvasLayer"] pause_mode = 2 @@ -39,7 +40,7 @@ margin_left = 64.0 margin_top = 14.0 margin_right = 192.0 margin_bottom = 24.0 -theme = ExtResource( 5 ) +theme = ExtResource( 2 ) text = "PAUSED!" align = 1 @@ -52,46 +53,68 @@ margin_bottom = 78.0 theme = ExtResource( 2 ) text = "RESUME RESTART -SETTINGS +OPTIONS EXit level" align = 1 [node name="Resume" type="TextureButton" parent="Body"] pause_mode = 2 +material = ExtResource( 1 ) margin_left = 36.0 margin_top = 1.0 margin_right = 44.0 margin_bottom = 9.0 +focus_neighbour_left = NodePath(".") +focus_neighbour_right = NodePath(".") focus_neighbour_bottom = NodePath("../Restart") texture_focused = ExtResource( 3 ) [node name="Restart" type="TextureButton" parent="Body"] pause_mode = 2 +material = ExtResource( 1 ) margin_left = 32.0 margin_top = 14.0 margin_right = 40.0 margin_bottom = 22.0 +focus_neighbour_left = NodePath(".") focus_neighbour_top = NodePath("../Resume") +focus_neighbour_right = NodePath(".") focus_neighbour_bottom = NodePath("../Settings") texture_focused = ExtResource( 3 ) +[node name="GreyedRestart" type="Label" parent="Body/Restart"] +unique_name_in_owner = true +visible = false +margin_left = 7.0 +margin_top = -1.0 +margin_right = 63.0 +margin_bottom = 9.0 +custom_colors/font_color = Color( 0.690196, 0.690196, 0.690196, 1 ) +text = "Restart" + [node name="Settings" type="TextureButton" parent="Body"] pause_mode = 2 -margin_left = 29.0 +material = ExtResource( 1 ) +margin_left = 32.0 margin_top = 27.0 -margin_right = 37.0 +margin_right = 40.0 margin_bottom = 35.0 +focus_neighbour_left = NodePath(".") focus_neighbour_top = NodePath("../Restart") +focus_neighbour_right = NodePath(".") focus_neighbour_bottom = NodePath("../ExitLevel") texture_focused = ExtResource( 3 ) [node name="ExitLevel" type="TextureButton" parent="Body"] pause_mode = 2 +material = ExtResource( 1 ) margin_left = 22.0 margin_top = 40.0 margin_right = 30.0 margin_bottom = 48.0 +focus_neighbour_left = NodePath(".") focus_neighbour_top = NodePath("../Settings") +focus_neighbour_right = NodePath(".") texture_focused = ExtResource( 3 ) [node name="LoreContainer" type="MarginContainer" parent="."] @@ -105,8 +128,18 @@ margin_bottom = -14.0 [node name="OptionsScreen" parent="." instance=ExtResource( 7 )] visible = false +[node name="MenuSounds" parent="." instance=ExtResource( 9 )] + +[connection signal="focus_entered" from="Body/Resume" to="MenuSounds" method="play_select_sound"] [connection signal="pressed" from="Body/Resume" to="." method="_on_Resume_pressed"] +[connection signal="pressed" from="Body/Resume" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Body/Restart" to="MenuSounds" method="play_select_sound"] [connection signal="pressed" from="Body/Restart" to="." method="_on_Restart_pressed"] +[connection signal="pressed" from="Body/Restart" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Body/Settings" to="MenuSounds" method="play_select_sound"] [connection signal="pressed" from="Body/Settings" to="." method="_on_Settings_pressed"] +[connection signal="pressed" from="Body/Settings" to="MenuSounds" method="play_confirm_sound"] +[connection signal="focus_entered" from="Body/ExitLevel" to="MenuSounds" method="play_select_sound"] [connection signal="pressed" from="Body/ExitLevel" to="." method="_on_ExitLevel_pressed"] +[connection signal="pressed" from="Body/ExitLevel" to="MenuSounds" method="play_confirm_sound"] [connection signal="exit" from="OptionsScreen" to="." method="_on_OptionsScreen_exit" flags=3] diff --git a/objects/hud/player_name_input.gd b/objects/hud/player_name_input.gd new file mode 100644 index 0000000..23edaf8 --- /dev/null +++ b/objects/hud/player_name_input.gd @@ -0,0 +1,29 @@ +extends TextEdit + + +func _ready() -> void: + text = Options.scoreboard_name + + +func _exit_tree() -> void: + Options.entry = false + + +func _on_text_changed() -> void: + text = text.substr(0, 10).to_lower().strip_escapes() + Options.scoreboard_name = text + cursor_set_column(text.length()) + + +func _on_focus_entered() -> void: + Options.entry = true + cursor_set_column(text.length()) + + +func _on_focus_exited() -> void: + Options.set_deferred("entry", false) + + +func _on_gui_input(event: InputEvent) -> void: + if event.is_action_pressed("text_enter"): + get_node(focus_neighbour_top).grab_focus() diff --git a/objects/hud/radio_buttons.gd b/objects/hud/radio_buttons.gd new file mode 100644 index 0000000..9949e94 --- /dev/null +++ b/objects/hud/radio_buttons.gd @@ -0,0 +1,101 @@ +tool +class_name RadioButtons +extends HBoxContainer + + +signal selected(selection) + + +export var condense: bool = false +export var default_selection: int = 0 setget _set_default_selection +export (Array, String) var options: Array = [] setget _set_options + + +onready var selection: int = default_selection setget _set_selection + + +var _buttons: Array = [] + + +func _init() -> void: + focus_mode = FOCUS_ALL + connect("focus_entered", self, "_on_focus_entered") + + +func _set_default_selection(value: int) -> void: + if value < 0: + value = 0 + elif value >= options.size() and value != 0: + value = options.size() - 1 + default_selection = value + if not _buttons.empty(): + _buttons[default_selection].pressed = true + + +func _set_options(value: Array) -> void: + options = value + _init_buttons() + + +func _set_selection(value: int) -> void: + selection = value + _buttons[selection].pressed = true + + +func update_focus_targets() -> void: + for b in _buttons: + b.focus_neighbour_top = "../%s" % focus_neighbour_top + b.focus_neighbour_bottom = "../%s" % focus_neighbour_bottom + + +func _init_buttons() -> void: + # initialize buttons array + for child in get_children(): + remove_child(child) + child.queue_free() + _buttons.clear() + _buttons.resize(options.size()) + + # set up new buttons + var group := ButtonGroup.new() + for i in options.size(): + # create new button + var b := Button.new() + b.text = options[i] + b.toggle_mode = true + b.group = group + # size flags + if condense: + b.size_flags_horizontal = 0 + else: + b.size_flags_horizontal = SIZE_EXPAND | SIZE_SHRINK_CENTER + b.size_flags_vertical = 0 + # connect signal with index as payload + b.connect("focus_entered", self, "_on_button_selected", [i]) + # add button to children and array + _buttons[i] = b + add_child(b) + # sync top/bottom focus to self + b.focus_neighbour_top = "../%s" % focus_neighbour_top + b.focus_neighbour_bottom = "../%s" % focus_neighbour_bottom + # set up focus between buttons + if i > 0: + var prev_b: Button = _buttons[i - 1] + b.focus_neighbour_left = b.get_path_to(prev_b) + prev_b.focus_neighbour_right = prev_b.get_path_to(b) + elif i == 0: + b.focus_neighbour_left = @"." + elif i == options.size() - 1: + b.focus_neighbour_right = @"." + _buttons[default_selection].pressed = true + + +func _on_focus_entered() -> void: + _buttons[selection].grab_focus() + + +func _on_button_selected(i: int) -> void: + if i != selection: + selection = i + emit_signal("selected", i) + _buttons[i].pressed = true diff --git a/objects/hud/scroll_follow_focus.gd b/objects/hud/scroll_follow_focus.gd new file mode 100644 index 0000000..89c6282 --- /dev/null +++ b/objects/hud/scroll_follow_focus.gd @@ -0,0 +1,39 @@ +extends ScrollContainer + + +onready var up_arrow: TextureRect = $"%UpArrow" +onready var down_arrow: TextureRect = $"%DownArrow" +onready var controls_v_box: VBoxContainer = $"%ControlsVBox" + + +func _ready() -> void: + yield(get_tree(), "idle_frame") + get_viewport().connect("gui_focus_changed", self, "_on_focus_changed") + connect("visibility_changed", self, "_on_visibility_changed") + + +func _exit_tree() -> void: + get_viewport().disconnect("gui_focus_changed", self, "_on_focus_changed") + + +func _on_focus_changed(focused: Control) -> void: + if is_a_parent_of(focused): + var foc_rect := focused.get_global_rect() + if not get_global_rect().encloses(foc_rect): + var direction := sign(foc_rect.position.y - get_global_rect().position.y) + scroll_vertical += direction * 14.0 + + if scroll_vertical < 1.0: + up_arrow.visible = false + else: + up_arrow.visible = true + + if scroll_vertical > 35.0: + down_arrow.visible = false + else: + down_arrow.visible = true + + +func _on_visibility_changed() -> void: + scroll_vertical = 0.0 + up_arrow.visible = false diff --git a/objects/hud/select_border.gd b/objects/hud/select_border.gd new file mode 100644 index 0000000..b0f61e1 --- /dev/null +++ b/objects/hud/select_border.gd @@ -0,0 +1,36 @@ +extends Button + + +signal selected(selection) + + +onready var back_arrow: TextureRect = $"%BorderBackArrow" +onready var next_arrow: TextureRect = $"%BorderNextArrow" + + +func _ready() -> void: + text = Border.names[Border.current_border] + + +func _gui_input(event: InputEvent) -> void: + if event.is_action_pressed("ui_left"): + Border.current_border -= 1 + _update() + elif event.is_action_pressed("ui_right"): + Border.current_border += 1 + _update() + + +func _update() -> void: + emit_signal("selected", Border.current_border) + text = Border.names[Border.current_border] + + +func _on_focus_entered() -> void: + back_arrow.visible = true + next_arrow.visible = true + + +func _on_focus_exited() -> void: + back_arrow.visible = false + next_arrow.visible = false diff --git a/objects/hud/set_gamepad_button.gd b/objects/hud/set_gamepad_button.gd new file mode 100644 index 0000000..fea23f9 --- /dev/null +++ b/objects/hud/set_gamepad_button.gd @@ -0,0 +1,69 @@ +extends Button + + +const BLINK_SPEED: int = 150 +const GAMEPAD_BUTTONS: AtlasTexture = preload("res://objects/hud/gamepad_buttons.atlastex") + +export var action: String +export var options_screen: NodePath + + +var listen := false +var gamepad_buttons := GAMEPAD_BUTTONS.duplicate() + + +func _init() -> void: + icon_align = Button.ALIGN_CENTER + connect("pressed", self, "_on_pressed") + add_to_group("controls_buttons") + + +func _ready() -> void: + _update_text() + + +func _process(delta: float) -> void: + if listen: + if Time.get_ticks_msec() % (BLINK_SPEED * 2) < BLINK_SPEED: + modulate.a = 0.0 + else: + modulate.a = 1.0 + + +func _update_text() -> void: + var button = Controls.get_button(action) + if button >= 0: + gamepad_buttons.region.position.x = float(button % 8) * 12.0 + gamepad_buttons.region.position.y = float(button / 8) * 10.0 + icon = gamepad_buttons + text = "" + else: + text = "-" + modulate.a = 1.0 + + +func _on_pressed() -> void: + if not listen: + listen = true + disabled = true + text = "" + get_node(options_screen).can_exit = false + get_tree().create_timer(2.0, true).connect("timeout", self, "_on_timeout") + + +func _on_timeout() -> void: + listen = false + disabled = false + _update_text() + get_node(options_screen).set_deferred("can_exit", true) + + +func _gui_input(event: InputEvent) -> void: + if listen: + if event is InputEventJoypadButton and event.pressed: + Controls.set_button(action, event.button_index) + listen = false + get_node(options_screen).set_deferred("can_exit", true) + set_deferred("disabled", false) + _update_text() + accept_event() diff --git a/objects/hud/set_keyboard_button.gd b/objects/hud/set_keyboard_button.gd new file mode 100644 index 0000000..ba5ae52 --- /dev/null +++ b/objects/hud/set_keyboard_button.gd @@ -0,0 +1,60 @@ +extends Button + + +const BLINK_SPEED: int = 150 + + +export var action: String +export var options_screen: NodePath + + +var listen := false + + +func _init() -> void: + connect("pressed", self, "_on_pressed") + add_to_group("controls_buttons") + + +func _ready() -> void: + _update_text() + + +func _process(delta: float) -> void: + if listen: + if Time.get_ticks_msec() % (BLINK_SPEED * 2) < BLINK_SPEED: + modulate.a = 0.0 + else: + modulate.a = 1.0 + + +func _update_text() -> void: + text = OS.get_scancode_string(Controls.get_key(action)) + modulate.a = 1.0 + + +func _on_pressed() -> void: + if not listen: + listen = true + disabled = true + text = "" + get_node(options_screen).can_exit = false + get_tree().create_timer(2.0, true).connect("timeout", self, "_on_timeout") + + +func _on_timeout() -> void: + listen = false + disabled = false + _update_text() + get_node(options_screen).set_deferred("can_exit", true) + + +func _gui_input(event: InputEvent) -> void: + if listen: + if event is InputEventKey and event.pressed: + Controls.set_key(action, event.physical_scancode) + listen = false + get_node(options_screen).set_deferred("can_exit", true) + set_deferred("disabled", false) + _update_text() + accept_event() diff --git a/objects/hud/silhouette.tscn b/objects/hud/silhouette.tscn new file mode 100644 index 0000000..427abde --- /dev/null +++ b/objects/hud/silhouette.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://graphics/particles/pixel.png" type="Texture" id=1] + +[node name="Silhouette" type="CanvasLayer"] +layer = 0 + +[node name="Light2D" type="Light2D" parent="."] +scale = Vector2( 256, 192 ) +texture = ExtResource( 1 ) +offset = Vector2( 0.5, 0.5 ) +color = Color( 0, 0, 0, 1 ) +mode = 2 +range_z_min = -3 +range_z_max = 50 diff --git a/objects/lore/abyss/beel.tscn b/objects/lore/abyss/beel.tscn new file mode 100644 index 0000000..6462ba8 --- /dev/null +++ b/objects/lore/abyss/beel.tscn @@ -0,0 +1,56 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/2ndpuberty_scholar.fnt" type="BitmapFont" id=2] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/lore/beel_lore.png" type="Texture" id=4] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 3 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[node name="Lore" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 1 ) +custom_constants/separation = 0 + +[node name="Panel" type="PanelContainer" parent="."] +margin_top = 77.0 +margin_right = 38.0 +margin_bottom = 115.0 +rect_min_size = Vector2( 38, 38 ) +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="TextureRect" type="TextureRect" parent="Panel"] +material = SubResource( 1 ) +margin_left = 3.0 +margin_top = 3.0 +margin_right = 35.0 +margin_bottom = 35.0 +texture = ExtResource( 4 ) +expand = true +stretch_mode = 4 + +[node name="Control" type="PanelContainer" parent="."] +margin_left = 38.0 +margin_top = 62.0 +margin_right = 256.0 +margin_bottom = 130.0 +rect_min_size = Vector2( 0, 40 ) +rect_clip_content = true +size_flags_horizontal = 3 +size_flags_vertical = 6 + +[node name="Label" type="Label" parent="Control"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 215.0 +margin_bottom = 65.0 +custom_fonts/font = ExtResource( 2 ) +text = "Beel: +This man eating monster is part eel, part bee. its stinger has enough venom to immediately kill a human." +align = 1 +autowrap = true diff --git a/objects/lore/abyss/bullet_fish.tscn b/objects/lore/abyss/bullet_fish.tscn new file mode 100644 index 0000000..427ec21 --- /dev/null +++ b/objects/lore/abyss/bullet_fish.tscn @@ -0,0 +1,53 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/2ndpuberty_scholar.fnt" type="BitmapFont" id=2] +[ext_resource path="res://graphics/enemy/fish.png" type="Texture" id=3] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 11, 10 ) + +[node name="Lore" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 1 ) +custom_constants/separation = 0 + +[node name="Panel" type="PanelContainer" parent="."] +margin_top = 77.0 +margin_right = 38.0 +margin_bottom = 115.0 +rect_min_size = Vector2( 38, 38 ) +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="TextureRect" type="TextureRect" parent="Panel"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 35.0 +margin_bottom = 35.0 +texture = SubResource( 1 ) +expand = true +stretch_mode = 4 + +[node name="Control" type="PanelContainer" parent="."] +margin_left = 38.0 +margin_top = 55.0 +margin_right = 256.0 +margin_bottom = 136.0 +rect_min_size = Vector2( 0, 40 ) +rect_clip_content = true +size_flags_horizontal = 3 +size_flags_vertical = 6 + +[node name="Label" type="Label" parent="Control"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 215.0 +margin_bottom = 78.0 +custom_fonts/font = ExtResource( 2 ) +text = "Bullet fish: +This little guy is the result of multiple species of fish stiched together. it glows because it's radioactive, so watch out!" +align = 1 +autowrap = true diff --git a/objects/lore/abyss/crater_of_the_abyss.tscn b/objects/lore/abyss/crater_of_the_abyss.tscn new file mode 100644 index 0000000..52a42e6 --- /dev/null +++ b/objects/lore/abyss/crater_of_the_abyss.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/crater_of_the_abyss.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 62.0 +margin_bottom = 130.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 65.0 +text = "Crater of the Abyss: +One of the victims of Fami's horrible space laser. its only inhabitants are chimeras and fake coral." diff --git a/objects/lore/abyss/mine.tscn b/objects/lore/abyss/mine.tscn new file mode 100644 index 0000000..8decea7 --- /dev/null +++ b/objects/lore/abyss/mine.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/enemy/mine.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 62.0 +margin_bottom = 130.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 65.0 +text = "Naval Mine: +Fami set these up in crater of the abyss to make it seem more like a legitimate, historical body of water." diff --git a/objects/lore/abyss/squig.tscn b/objects/lore/abyss/squig.tscn new file mode 100644 index 0000000..6b45b1c --- /dev/null +++ b/objects/lore/abyss/squig.tscn @@ -0,0 +1,53 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/2ndpuberty_scholar.fnt" type="BitmapFont" id=2] +[ext_resource path="res://graphics/enemy/squig.png" type="Texture" id=3] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 14, 15 ) + +[node name="Lore2" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 1 ) +custom_constants/separation = 0 + +[node name="Panel" type="PanelContainer" parent="."] +margin_top = 77.0 +margin_right = 38.0 +margin_bottom = 115.0 +rect_min_size = Vector2( 38, 38 ) +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="TextureRect" type="TextureRect" parent="Panel"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 35.0 +margin_bottom = 35.0 +texture = SubResource( 1 ) +expand = true +stretch_mode = 4 + +[node name="Control" type="PanelContainer" parent="."] +margin_left = 38.0 +margin_top = 62.0 +margin_right = 256.0 +margin_bottom = 130.0 +rect_min_size = Vector2( 0, 40 ) +rect_clip_content = true +size_flags_horizontal = 3 +size_flags_vertical = 6 + +[node name="Label" type="Label" parent="Control"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 215.0 +margin_bottom = 65.0 +custom_fonts/font = ExtResource( 2 ) +text = "Squig: +A disgusting combination of squid and pig. Its ink will cause cancer if ingested. Rich people keep them as pets." +align = 1 +autowrap = true diff --git a/objects/lore/abyss/turchin.tscn b/objects/lore/abyss/turchin.tscn new file mode 100644 index 0000000..a33a61d --- /dev/null +++ b/objects/lore/abyss/turchin.tscn @@ -0,0 +1,60 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://ui/theme.tres" type="Theme" id=1] +[ext_resource path="res://ui/2ndpuberty_scholar.fnt" type="BitmapFont" id=2] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/enemy/turtle.png" type="Texture" id=4] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 3 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 4 ) +region = Rect2( 0, 33, 24, 12 ) + +[node name="Lore" type="HBoxContainer"] +anchor_right = 1.0 +anchor_bottom = 1.0 +theme = ExtResource( 1 ) +custom_constants/separation = 0 + +[node name="Panel" type="PanelContainer" parent="."] +margin_top = 77.0 +margin_right = 38.0 +margin_bottom = 115.0 +rect_min_size = Vector2( 38, 38 ) +size_flags_horizontal = 4 +size_flags_vertical = 4 + +[node name="TextureRect" type="TextureRect" parent="Panel"] +material = SubResource( 1 ) +margin_left = 3.0 +margin_top = 3.0 +margin_right = 35.0 +margin_bottom = 35.0 +texture = SubResource( 2 ) +expand = true +stretch_mode = 4 + +[node name="Control" type="PanelContainer" parent="."] +margin_left = 38.0 +margin_top = 55.0 +margin_right = 256.0 +margin_bottom = 136.0 +rect_min_size = Vector2( 0, 40 ) +rect_clip_content = true +size_flags_horizontal = 3 +size_flags_vertical = 6 + +[node name="Label" type="Label" parent="Control"] +margin_left = 3.0 +margin_top = 3.0 +margin_right = 215.0 +margin_bottom = 78.0 +custom_fonts/font = ExtResource( 2 ) +text = "Turchin: +A Chimera made from sea turtle and sea urchin parts. it's very expensive to produce due to the declining sea turtle population." +align = 1 +autowrap = true diff --git a/objects/lore/boss/2600.tscn b/objects/lore/boss/2600.tscn new file mode 100644 index 0000000..64ec36c --- /dev/null +++ b/objects/lore/boss/2600.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/2600_lore.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "STG-2600: +This monsterous mecha is powered by nasty fossil fuels. it's fitted with a mean vulcan and a laser that uses dirty uranium. It's as powerful as 830 jackhammers." diff --git a/objects/lore/boss/dr_intelli.tscn b/objects/lore/boss/dr_intelli.tscn new file mode 100644 index 0000000..4a04748 --- /dev/null +++ b/objects/lore/boss/dr_intelli.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/npc/intelli_idle.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Dr.Intelli: +born 03/23/2051, sg's boss and head of edizon inc. +despite working with him, he does not think fondly of fami. he wishes the world revolved around his ideas instead." diff --git a/objects/lore/boss/fami.tscn b/objects/lore/boss/fami.tscn new file mode 100644 index 0000000..5c725c9 --- /dev/null +++ b/objects/lore/boss/fami.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/npc/fami_human.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Fami: +Born 07/15/2030, This evil trillionaire is hell-bent on owning as much as he can. the world went to shit when he came to power in 2068." diff --git a/objects/lore/boss/sg_2083.tscn b/objects/lore/boss/sg_2083.tscn new file mode 100644 index 0000000..cb199cc --- /dev/null +++ b/objects/lore/boss/sg_2083.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/2083_lore.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "SG-2083: +Speccy fixed up the remains of the STG-2600, and converted its nasty fuel into solar energy. piloted by sg, the sg-2083 is humanity's last hope against super famira!" diff --git a/objects/lore/boss/steel_factory.tscn b/objects/lore/boss/steel_factory.tscn new file mode 100644 index 0000000..2466485 --- /dev/null +++ b/objects/lore/boss/steel_factory.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/steel_factory.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Edizon Inc. Steel factory: +Sg's Workplace. most of the production is achieved through automation. the humans that work there are treated the same way as the machines." diff --git a/objects/lore/boss/the_scrump.tscn b/objects/lore/boss/the_scrump.tscn new file mode 100644 index 0000000..52ee4d9 --- /dev/null +++ b/objects/lore/boss/the_scrump.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/scrump_lore.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 68.0 +margin_bottom = 123.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 52.0 +text = "The Scrump: +A horrid chimera made to look like the god of a satirical religion from the 30's." diff --git a/objects/lore/canopy/shady_canopy.tscn b/objects/lore/canopy/shady_canopy.tscn index 9e3b0ce..796bdfe 100644 --- a/objects/lore/canopy/shady_canopy.tscn +++ b/objects/lore/canopy/shady_canopy.tscn @@ -16,4 +16,4 @@ margin_bottom = 143.0 margin_top = 3.0 margin_bottom = 91.0 text = "Shady Canopy: -A heavily wooded forest connected to verdant hills. people used to live here to hide from fami, but after he poisoned the water its become too dangerous." +A heavily wooded forest connected to verdant hills. people used to live here to hide from fami, but after he poisoned the water it's become too dangerous." diff --git a/objects/lore/canopy/skelarcher.tscn b/objects/lore/canopy/skelarcher.tscn index d912b3d..9d87e4e 100644 --- a/objects/lore/canopy/skelarcher.tscn +++ b/objects/lore/canopy/skelarcher.tscn @@ -27,4 +27,4 @@ margin_bottom = 136.0 margin_top = 3.0 margin_bottom = 78.0 text = "Skelarcher: -The withered remains of an old archer animated by an artificial soul, one of them is made from the remains of sg's friend." +The withered remains of an old archer animated by an artificial soul. one of them is made from the remains of sg's friend." diff --git a/objects/lore/cave/blue_ray_cavern.tscn b/objects/lore/cave/blue_ray_cavern.tscn new file mode 100644 index 0000000..c9f10fa --- /dev/null +++ b/objects/lore/cave/blue_ray_cavern.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/blue_ray_cavern.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Blue Ray Cavern: +the zircon ultima was first found here, during an expedition led by rust inc. it was stumbled upon during a survey for metals." diff --git a/objects/lore/cave/shedge.tscn b/objects/lore/cave/shedge.tscn new file mode 100644 index 0000000..6e3a08d --- /dev/null +++ b/objects/lore/cave/shedge.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/enemy/snail.png" type="Texture" id=2] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 12, 11 ) + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = SubResource( 1 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Shedge: +a combination of a snail and a hedgehog. it may seem slow at first, but the hedgehog parts are responsible for its blinding speed." diff --git a/objects/lore/graveyard/artificial_soul.tscn b/objects/lore/graveyard/artificial_soul.tscn new file mode 100644 index 0000000..be186c8 --- /dev/null +++ b/objects/lore/graveyard/artificial_soul.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/artificial_soul_lore.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Artificial Soul: +A small bit of electronics with an AI \"brain\". originally developed to bring \"life\" to intelli's robotic sweetheart. he later used it to power fami's chimeras." diff --git a/objects/lore/graveyard/graveyard.tscn b/objects/lore/graveyard/graveyard.tscn new file mode 100644 index 0000000..0a7fff2 --- /dev/null +++ b/objects/lore/graveyard/graveyard.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/arlingwood_graveyard.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Arlingwood graveyard: +a graveyard where old presidents are buried. it's also been a testing ground for fami's chimeras and techromancy." diff --git a/objects/lore/graveyard/hellarcher.tscn b/objects/lore/graveyard/hellarcher.tscn new file mode 100644 index 0000000..b74af41 --- /dev/null +++ b/objects/lore/graveyard/hellarcher.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=2] +[ext_resource path="res://graphics/enemy/hellarcher_shoot.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 19, 20 ) + +[node name="Lore" instance=ExtResource( 2 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = SubResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 62.0 +margin_bottom = 130.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 65.0 +text = "Hellarcher: +The withered remains of an old president reanimated with an artificial soul and given horns and a cloak." diff --git a/objects/lore/graveyard/woeful_soul.tscn b/objects/lore/graveyard/woeful_soul.tscn new file mode 100644 index 0000000..d86910f --- /dev/null +++ b/objects/lore/graveyard/woeful_soul.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/falling_block/woeful_soul.png" type="Texture" id=2] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 8, 8 ) + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = SubResource( 1 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Woeful soul: +created as an experiment in emotional manipulation, this human skull is fitted with an artificial soul and is made to look upset to make people feel bad for it." diff --git a/objects/lore/hills/bioslime.tscn b/objects/lore/hills/bioslime.tscn index f4afe43..dcd5935 100644 --- a/objects/lore/hills/bioslime.tscn +++ b/objects/lore/hills/bioslime.tscn @@ -23,12 +23,10 @@ texture = SubResource( 2 ) [node name="Control" parent="." index="1"] margin_top = 55.0 -margin_right = 256.0 margin_bottom = 136.0 [node name="Label" parent="Control" index="0"] margin_top = 3.0 -margin_right = 215.0 margin_bottom = 78.0 text = "BioSLime: -A monster made from discarded biological materials for making chimeras. it is the chicken nugget of the chimera world" +A monster made from discarded biological materials for making chimeras. it is the chicken nugget of the chimera world." diff --git a/objects/lore/hills/catbat.tscn b/objects/lore/hills/catbat.tscn index b5e1612..ae43fbd 100644 --- a/objects/lore/hills/catbat.tscn +++ b/objects/lore/hills/catbat.tscn @@ -20,11 +20,11 @@ material = SubResource( 1 ) texture = SubResource( 2 ) [node name="Control" parent="." index="1"] -margin_top = 68.0 -margin_bottom = 123.0 +margin_top = 49.0 +margin_bottom = 143.0 [node name="Label" parent="Control" index="0"] margin_top = 3.0 -margin_bottom = 52.0 +margin_bottom = 91.0 text = "CATBAT: -A Chimera created from vampire bat and panther materials given an artificial soul" +A Chimera created from vampire bat and panther materials. Fami wants everyone to believe creatures like this always existed. the propaganda isn't working." diff --git a/objects/lore/hills/sg.gd b/objects/lore/hills/sg.gd new file mode 100644 index 0000000..41aa41c --- /dev/null +++ b/objects/lore/hills/sg.gd @@ -0,0 +1,6 @@ +extends HBoxContainer + + +func _ready() -> void: + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + $Panel/TextureRect.material.set_shader_param("palette", palette) diff --git a/objects/lore/hills/sg.tscn b/objects/lore/hills/sg.tscn new file mode 100644 index 0000000..c133ce9 --- /dev/null +++ b/objects/lore/hills/sg.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=2] +[ext_resource path="res://objects/lore/hills/sg_palette_lore.gd" type="Script" id=3] +[ext_resource path="res://objects/lore/hills/sg.gd" type="Script" id=4] +[ext_resource path="res://graphics/player/sg_idle.png" type="Texture" id=5] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[node name="Lore" instance=ExtResource( 2 )] +script = ExtResource( 4 ) + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = ExtResource( 5 ) +script = ExtResource( 3 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "SG: +born 07/15/2061, factory worker turned freedom fighter. despite their frailness they will do anything to +change the future." diff --git a/objects/lore/hills/sg_palette_lore.gd b/objects/lore/hills/sg_palette_lore.gd new file mode 100644 index 0000000..61fabed --- /dev/null +++ b/objects/lore/hills/sg_palette_lore.gd @@ -0,0 +1,5 @@ +extends TextureRect + +func _ready(): + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + material.set_shader_param("palette", palette) diff --git a/objects/lore/hills/speccy.tscn b/objects/lore/hills/speccy.tscn new file mode 100644 index 0000000..737a7f5 --- /dev/null +++ b/objects/lore/hills/speccy.tscn @@ -0,0 +1,24 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/npc/speccy.png" type="Texture" id=2] + +[sub_resource type="AtlasTexture" id=1] +atlas = ExtResource( 2 ) +region = Rect2( 3, 0, 20, 24 ) +margin = Rect2( 0, -2, 0, 0 ) + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = SubResource( 1 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Speccy: +born 04/23/2060, sg's british friend. he once had 9 shards of zircon ultima but had to split them into 45 rainbow stars to keep them from fami." diff --git a/objects/lore/hills/verdant_hills.tscn b/objects/lore/hills/verdant_hills.tscn index bbd39c5..c2a2d2c 100644 --- a/objects/lore/hills/verdant_hills.tscn +++ b/objects/lore/hills/verdant_hills.tscn @@ -16,4 +16,4 @@ margin_bottom = 136.0 margin_top = 3.0 margin_bottom = 78.0 text = "Verdant hills: -Sg made their home here because it was a peaceful and beautiful place, but that all changed when it was attacked by chimeras." +It was once the most peaceful place in virginia, a beatiful stretch of nature that was corrupted by fami's evil deeds." diff --git a/objects/lore/lab/famis_lab.tscn b/objects/lore/lab/famis_lab.tscn new file mode 100644 index 0000000..1447444 --- /dev/null +++ b/objects/lore/lab/famis_lab.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/famis_lab.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Fami's lab: +The birthplace of all chimeras, fami's office is at the top of the lab. you must put an end to his ceaseless violence!" diff --git a/objects/lore/lab/scope.tscn b/objects/lore/lab/scope.tscn new file mode 100644 index 0000000..f8cfbc1 --- /dev/null +++ b/objects/lore/lab/scope.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=2] +[ext_resource path="res://graphics/enemy/cop/scope_idle.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = ExtResource( 3 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Officer Scope: +While not in the highest level of authority, scope is fami's most trusted famicop. they're close friends and seem to share the same weird ideas about the economy." diff --git a/objects/lore/lab/sheriff.tscn b/objects/lore/lab/sheriff.tscn new file mode 100644 index 0000000..cdd97d5 --- /dev/null +++ b/objects/lore/lab/sheriff.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=2] +[ext_resource path="res://graphics/enemy/cop/the_sheriff_idle.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 2 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = ExtResource( 3 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "\"The sheriff\": +THe most loyal famicop. He has no beliefs of his own and simply wants to work for whoever is in charge. people joke he is as old as time itself and will never die." diff --git a/objects/lore/mountain/echo_mountain.tscn b/objects/lore/mountain/echo_mountain.tscn new file mode 100644 index 0000000..6af0e61 --- /dev/null +++ b/objects/lore/mountain/echo_mountain.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/echo_mountain.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Echo mountain: +One of the blue ridge mountains designated as a fake monument to the god of a parody religion. people used to drink and do weird drugs here." diff --git a/objects/lore/mountain/rolling_fiend.tscn b/objects/lore/mountain/rolling_fiend.tscn index 81509e7..903388a 100644 --- a/objects/lore/mountain/rolling_fiend.tscn +++ b/objects/lore/mountain/rolling_fiend.tscn @@ -20,12 +20,11 @@ material = SubResource( 1 ) texture = SubResource( 2 ) [node name="Control" parent="." index="1"] -margin_top = 49.0 -margin_bottom = 143.0 +margin_top = 55.0 +margin_bottom = 136.0 [node name="Label" parent="Control" index="0"] margin_top = 3.0 -margin_bottom = 91.0 +margin_bottom = 78.0 text = "Rolling Fiend: -Half of an octopus augmented with horse hooves. They are programmed to \"love\" the feeling of bodies under their hooves. -" +Half of an octopus augmented with horse hooves. They are programmed to \"love\" the feeling of bodies under their hooves." diff --git a/objects/lore/rust/roboturret.tscn b/objects/lore/rust/roboturret.tscn new file mode 100644 index 0000000..e19545f --- /dev/null +++ b/objects/lore/rust/roboturret.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/roboturret_lore.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 62.0 +margin_bottom = 130.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 65.0 +text = "Roboturret: +A heat seeking turret that murders all who oppose it. It's powered by spray cheese cans." diff --git a/objects/lore/rust/rolling_saw.tscn b/objects/lore/rust/rolling_saw.tscn new file mode 100644 index 0000000..420a051 --- /dev/null +++ b/objects/lore/rust/rolling_saw.tscn @@ -0,0 +1,31 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=2] +[ext_resource path="res://graphics/enemy/sawblade.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = false + +[sub_resource type="AtlasTexture" id=2] +atlas = ExtResource( 3 ) +region = Rect2( 0, 0, 12, 12 ) + +[node name="Lore" instance=ExtResource( 2 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = SubResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 68.0 +margin_bottom = 123.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 52.0 +text = "Rolling saw: +A sharp diamond plated saw, +rust inc. uses these to slay disobedient workers." diff --git a/objects/lore/rust/rust_inc.tscn b/objects/lore/rust/rust_inc.tscn new file mode 100644 index 0000000..1634584 --- /dev/null +++ b/objects/lore/rust/rust_inc.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/rust_inc.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Rust inc.: +A factory run by an evil corporation whose only purpose is creating rust and pollution to ruin the wonderful world we once had." diff --git a/objects/lore/rust/tin.tscn b/objects/lore/rust/tin.tscn new file mode 100644 index 0000000..b126476 --- /dev/null +++ b/objects/lore/rust/tin.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=2] +[ext_resource path="res://graphics/lore/tin_lore.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[node name="Lore" instance=ExtResource( 2 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = ExtResource( 3 ) + +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 78.0 +text = "Tin: +A security drone installed in grocery stores and workplaces to spy on the working class and take them out if they disobey fami's will." diff --git a/objects/lore/station/dread_pd.tscn b/objects/lore/station/dread_pd.tscn new file mode 100644 index 0000000..0eb0306 --- /dev/null +++ b/objects/lore/station/dread_pd.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=1] +[ext_resource path="res://graphics/lore/police_station.png" type="Texture" id=2] + +[node name="Lore" instance=ExtResource( 1 )] + +[node name="TextureRect" parent="Panel" index="0"] +texture = ExtResource( 2 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Dread PD: +Police station in Dreadericksburg, virginia. there's a metal cop head statue on the side of the building venerating the cruelest cop in virginia." diff --git a/objects/lore/station/famicop.tscn b/objects/lore/station/famicop.tscn index 5a3b076..a06dd3e 100644 --- a/objects/lore/station/famicop.tscn +++ b/objects/lore/station/famicop.tscn @@ -15,7 +15,12 @@ shader_param/border_corners = true material = SubResource( 1 ) texture = ExtResource( 3 ) +[node name="Control" parent="." index="1"] +margin_top = 55.0 +margin_bottom = 136.0 + [node name="Label" parent="Control" index="0"] -margin_top = 15.0 -margin_bottom = 25.0 -text = "Famicop:" +margin_top = 3.0 +margin_bottom = 78.0 +text = "Famicop: +These bastards are responsible for fami staying in power. Their prime objective is to protect fami's hoard of wealth." diff --git a/objects/lore/station/msx.tscn b/objects/lore/station/msx.tscn new file mode 100644 index 0000000..6421c98 --- /dev/null +++ b/objects/lore/station/msx.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=5 format=2] + +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://objects/lore/lore.tscn" type="PackedScene" id=2] +[ext_resource path="res://graphics/npc/msx_idle.png" type="Texture" id=3] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[node name="Lore" instance=ExtResource( 2 )] + +[node name="TextureRect" parent="Panel" index="0"] +material = SubResource( 1 ) +texture = ExtResource( 3 ) + +[node name="Control" parent="." index="1"] +margin_top = 49.0 +margin_bottom = 143.0 + +[node name="Label" parent="Control" index="0"] +margin_top = 3.0 +margin_bottom = 91.0 +text = "Ms. X: +born 10/21/2062, she was locked up for such trivial crimes as shoplifting and marijuana possession. her reliance on drugs causes many issues in her life." diff --git a/objects/npc/msx.gd b/objects/npc/msx.gd index b58c14e..dfbd744 100644 --- a/objects/npc/msx.gd +++ b/objects/npc/msx.gd @@ -1,27 +1,63 @@ extends KinematicBody2D +export var hatch: NodePath + var velocity = Vector2.ZERO var is_moving = false var is_holding_shard = true +var has_respawned = false +var first_lead = true +var is_free = false onready var death_particles = $DeathSplatter onready var sprite = $Sprite onready var anims = $AnimationPlayer onready var raycast = $RayCast2D +onready var respawn_raycast = $RespawnRaycast onready var shard_position = $Position2D +onready var start_position = position +onready var blink_timer = $BlinkTimer +onready var text_anims = $TextAnim const shard = preload("res://objects/collectibles/shard.tscn") +const BloodSpray := preload("res://objects/environment/blood/blood_spray.tscn") +#DIALOGUE +const here_take_this = preload("res://audio/sounds/msx_here_take_this.wav") +const come_here = preload("res://audio/sounds/msx_come_here.ogg") +const help_me = preload("res://audio/sounds/msx_help_me_get_outta_here.ogg") +const fuck = preload("res://audio/sounds/msx_fuck.ogg") +const fucking_cop = preload("res://audio/sounds/msx_fucking_cop.ogg") +const goddammit = preload("res://audio/sounds/msx_goddammit.ogg") +const motherfucker = preload("res://audio/sounds/msx_motherfucker.ogg") +const shit = preload("res://audio/sounds/msx_shit.ogg") +var death_sounds = [ + Audio.a_msx_die, + fuck, + shit +] func _ready(): raycast.add_exception($Hitbox) + blink_timer.start(rand_range(5.0,7.0)) func _physics_process(delta): if is_moving: velocity.x = -50 #Stop when see something - if raycast.is_colliding(): velocity.x = 0 + if raycast.is_colliding(): + #stop behind sg + velocity.x = 0 + if respawn_raycast.is_colliding(): + #start moving again after respawning when seeing sg + if raycast.get_collider() != null: + if raycast.get_collider().is_in_group("player_hitbox"): + if first_lead == true: + Audio.play_sound(help_me,Audio.ac_voice) + text_anims.play("help me") + first_lead = false + is_moving = true velocity.y += 128 * delta velocity = move_and_slide_with_snap(velocity, Vector2.DOWN, Vector2.UP, true) #Anims if velocity.x == 0: - if !anims.get_current_animation() == "give": anims.play("idle") + if !anims.get_current_animation() == "give" && !anims.get_current_animation() == "respawn" && !anims.get_current_animation() == "blink": anims.play("idle") else: anims.play("walk") #Stop at the end of path and give shard @@ -32,6 +68,8 @@ func _physics_process(delta): anims.play("give") func spawn_shard(): + Audio.play_sound(here_take_this,Audio.ac_voice) + text_anims.play("here take this") var ShardInstance = shard.instance() ShardInstance.global_position = Vector2(shard_position.global_position.x,shard_position.global_position.y) ShardInstance.number = 1 @@ -39,7 +77,19 @@ func spawn_shard(): is_holding_shard = false func switch_action(): - is_moving = true + Audio.play_sound(come_here,Audio.ac_voice) + text_anims.play("come here") + is_free = true + +func spray_blood(): + for i in 16: + var spray = BloodSpray.instance() + spray.pause_mode = PAUSE_MODE_PROCESS + Physics2DServer.set_active(true) + spray.global_position = global_position + spray.velocity = Vector2(randf() * 80.0, 0.0).rotated(randf() * TAU) + spray.stains_player = false + get_parent().add_child(spray) func die(): #Create particles @@ -47,5 +97,20 @@ func die(): get_parent().add_child(death_particles) death_particles.global_position = global_position death_particles.emitting = true - Audio.play_sound(Audio.a_die,Audio.ac_die) - queue_free() + spray_blood() + Audio.play_sound(death_sounds[randi() % death_sounds.size()],Audio.ac_voice) + is_moving = false + velocity.x = 0 + position = start_position + anims.play("respawn") + has_respawned = true + + +func _open_hatch() -> void: + get_node(hatch).play("open") + + +func _on_BlinkTimer_timeout(): + if anims.current_animation != "give": + anims.play("blink") + blink_timer.start(rand_range(5.0,7.0)) diff --git a/objects/npc/msx.tscn b/objects/npc/msx.tscn index 25e06db..1f41dd6 100644 --- a/objects/npc/msx.tscn +++ b/objects/npc/msx.tscn @@ -1,7 +1,11 @@ -[gd_scene load_steps=16 format=2] +[gd_scene load_steps=28 format=2] [ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://graphics/npc/msx_respawn.png" type="Texture" id=2] [ext_resource path="res://graphics/npc/msx_walk.png" type="Texture" id=3] +[ext_resource path="res://graphics/npc/msx_blink.png" type="Texture" id=4] +[ext_resource path="res://ui/theme.tres" type="Theme" id=5] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=6] [ext_resource path="res://graphics/npc/msx_idle.png" type="Texture" id=11] [ext_resource path="res://scripts/snap_sprite.gd" type="Script" id=12] [ext_resource path="res://objects/npc/msx.gd" type="Script" id=13] @@ -46,11 +50,200 @@ tracks/2/keys = { "update": 0, "values": [ 0 ] } +tracks/3/type = "value" +tracks/3/path = NodePath("Dialogue/HereTakeThis:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Dialogue/ComeHere:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Dialogue/HelpMe:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Sprite:region_enabled") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Sprite:offset") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Sprite:region_rect") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Rect2( 0, 0, 40, 20 ) ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("CollisionShape2D:disabled") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Hitbox/CollisionShape2D2:disabled") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} + +[sub_resource type="Animation" id=18] +resource_name = "blink" +length = 0.7 +step = 0.06 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 4 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:hframes") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 4 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite:frame") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.12, 0.24, 0.54, 0.66 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3, 0 ] +} + +[sub_resource type="Animation" id=19] +resource_name = "come here" +length = 4.0 +step = 0.06 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 11 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:hframes") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 1 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite:frame") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 0 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Dialogue/ComeHere:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.06, 2.52 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} [sub_resource type="Animation" id=15] resource_name = "give" -length = 0.5 -step = 0.06 +length = 4.0 tracks/0/type = "value" tracks/0/path = NodePath("Sprite:texture") tracks/0/interp = 1 @@ -94,13 +287,120 @@ tracks/3/loop_wrap = true tracks/3/imported = false tracks/3/enabled = true tracks/3/keys = { -"times": PoolRealArray( 0.18 ), -"transitions": PoolRealArray( 1 ), +"times": PoolRealArray( 0.18, 1.3, 2 ), +"transitions": PoolRealArray( 1, 1, 1 ), "values": [ { "args": [ ], "method": "spawn_shard" +}, { +"args": [ ], +"method": "_open_hatch" +}, { +"args": [ ], +"method": "queue_free" } ] } +tracks/4/type = "value" +tracks/4/path = NodePath("Sprite:offset") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 1.5, 1.6, 1.8, 2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 0 ), Vector2( 0, -6 ), Vector2( 0, 0 ), Vector2( 0, 10 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("CollisionShape2D:disabled") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 1.5 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Hitbox/CollisionShape2D2:disabled") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 1.5 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="Animation" id=20] +resource_name = "help me" +length = 3.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 3 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:hframes") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 4 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite:frame") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 3.4, 3.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Dialogue/ComeHere:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.1 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Dialogue/HelpMe:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0.1, 2.9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} [sub_resource type="Animation" id=4] resource_name = "idle" @@ -142,6 +442,59 @@ tracks/2/keys = { "update": 1, "values": [ 0 ] } +tracks/3/type = "value" +tracks/3/path = NodePath("Dialogue/ComeHere:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.06 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=17] +resource_name = "respawn" +length = 0.4 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 1, 2, 3, 4, 5, 6, 7 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite:texture") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 2 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite:hframes") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 8 ] +} [sub_resource type="Animation" id=9] resource_name = "walk" @@ -200,21 +553,125 @@ height = 5.0 [sub_resource type="Curve" id=13] _data = [ Vector2( 0, 1 ), 0.0, -0.113537, 0, 0, Vector2( 1, 0 ), -3.35032, 0.0, 0, 0 ] +[sub_resource type="Animation" id=21] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Dialogue/HelpMe:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Dialogue/HereTakeThis:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Dialogue/ComeHere:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=23] +resource_name = "come here" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Dialogue/ComeHere:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + +[sub_resource type="Animation" id=22] +resource_name = "help me" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Dialogue/HelpMe:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Dialogue/ComeHere:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=24] +resource_name = "here take this" +length = 1.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Dialogue/HereTakeThis:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ true, false ] +} + [node name="MsX" type="KinematicBody2D"] script = ExtResource( 13 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] autoplay = "idle" anims/RESET = SubResource( 16 ) +anims/blink = SubResource( 18 ) +"anims/come here" = SubResource( 19 ) anims/give = SubResource( 15 ) +"anims/help me" = SubResource( 20 ) anims/idle = SubResource( 4 ) +anims/respawn = SubResource( 17 ) anims/walk = SubResource( 9 ) [node name="Sprite" type="Sprite" parent="."] material = SubResource( 10 ) +scale = Vector2( -1, 1 ) texture = ExtResource( 15 ) hframes = 2 -region_rect = Rect2( 0, 0, 20, 20 ) +region_rect = Rect2( 0, 0, 40, 20 ) script = ExtResource( 12 ) [node name="Hitbox" type="Area2D" parent="." groups=["enemy_hitbox", "msx", "player_hitbox"]] @@ -256,12 +713,64 @@ scale_amount_curve = SubResource( 13 ) [node name="RayCast2D" type="RayCast2D" parent="."] position = Vector2( 0, 1 ) enabled = true -cast_to = Vector2( 32, 0 ) +cast_to = Vector2( -32, 0 ) collision_mask = 3 collide_with_areas = true +[node name="RespawnRaycast" type="RayCast2D" parent="."] +position = Vector2( -16, 0 ) +enabled = true +cast_to = Vector2( -56, 0 ) +collision_mask = 8 +collide_with_areas = true + [node name="Position2D" type="Position2D" parent="."] -position = Vector2( 17, 2 ) +position = Vector2( -17, 2 ) __meta__ = { "_gizmo_extents_": 0.0 } + +[node name="BlinkTimer" type="Timer" parent="."] + +[node name="TextAnim" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 21 ) +"anims/come here" = SubResource( 23 ) +"anims/help me" = SubResource( 22 ) +"anims/here take this" = SubResource( 24 ) + +[node name="Dialogue" type="Node2D" parent="."] + +[node name="HereTakeThis" type="Label" parent="Dialogue"] +visible = false +material = ExtResource( 6 ) +margin_left = -48.0 +margin_top = -22.0 +margin_right = 57.0 +margin_bottom = 1.0 +theme = ExtResource( 5 ) +text = "Here, take this" +align = 1 + +[node name="ComeHere" type="Label" parent="Dialogue"] +visible = false +material = ExtResource( 6 ) +margin_left = -96.0 +margin_top = -22.0 +margin_right = 9.0 +margin_bottom = -8.0 +theme = ExtResource( 5 ) +text = "Hey, come here!" + +[node name="HelpMe" type="Label" parent="Dialogue"] +visible = false +material = ExtResource( 6 ) +margin_left = -76.0 +margin_top = -33.0 +margin_right = 8.0 +margin_bottom = -10.0 +theme = ExtResource( 5 ) +text = "Help me get +outta here!" +align = 1 + +[connection signal="timeout" from="BlinkTimer" to="." method="_on_BlinkTimer_timeout"] diff --git a/objects/npc/speccy.gd b/objects/npc/speccy.gd new file mode 100644 index 0000000..982782f --- /dev/null +++ b/objects/npc/speccy.gd @@ -0,0 +1,65 @@ +tool +extends Node2D + + +export(String, DIR) var messages_dir: String setget _set_messages_dir +export var flip: bool = false setget _set_flip +#export +var message: String setget _set_message + + +func _ready() -> void: + if Engine.editor_hint: + return + + scale.x = 0.0 + $Message.texture = load("%s/%s.png" % [messages_dir, message]) + + +func appear() -> void: + if Options.speccy_help: + $AnimationPlayer.play("fun") + + +func switch_action() -> void: + appear() + + +func _set_messages_dir(value: String) -> void: + messages_dir = value + property_list_changed_notify() + + +func _set_message(value: String) -> void: + message = value + if not Engine.editor_hint: + return + $Message.texture = load("%s/%s.png" % [messages_dir, message]) + + +func _set_flip(value: bool) -> void: + flip = value + $Flipper.scale.x = -1.0 if flip else 1.0 + + +func _get_property_list() -> Array: + var files: String = "" + var dir: Directory = Directory.new() + if dir.open(messages_dir) == OK: + dir.list_dir_begin(true, true) + var file_name: String = dir.get_next() + while file_name != "": + if not dir.current_is_dir() and file_name.ends_with(".png"): + files += "%s," % file_name.trim_suffix(".png") + file_name = dir.get_next() + files = files.trim_suffix(",") + else: + push_error("Failed to open dir: %s" % messages_dir) + return [ + { + name = "message", + type = TYPE_STRING, + hint = PROPERTY_HINT_ENUM, + hint_string = files, + } + ] diff --git a/objects/npc/speccy.tscn b/objects/npc/speccy.tscn new file mode 100644 index 0000000..3b2f0b6 --- /dev/null +++ b/objects/npc/speccy.tscn @@ -0,0 +1,263 @@ +[gd_scene load_steps=13 format=2] + +[ext_resource path="res://graphics/npc/speccy.png" type="Texture" id=1] +[ext_resource path="res://shaders/beam_cycle.gdshader" type="Shader" id=2] +[ext_resource path="res://graphics/enemy/boss/stg_2600/beam_gradient.png" type="Texture" id=3] +[ext_resource path="res://graphics/hud/speccy/over_here.png" type="Texture" id=4] +[ext_resource path="res://graphics/npc/speccy_talk.png" type="Texture" id=5] +[ext_resource path="res://graphics/npc/speccy_cool.png" type="Texture" id=6] +[ext_resource path="res://objects/npc/speccy.gd" type="Script" id=7] +[ext_resource path="res://audio/sounds/oi_sg.ogg" type="AudioStream" id=8] + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 2 ) +shader_param/cycle_speed = 4.0 +shader_param/gradient = ExtResource( 3 ) + +[sub_resource type="Animation" id=1] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Flipper/Sprite:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Flipper/Sprite/Overlay:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 0 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Message:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Flipper/Sprite:hframes") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 1 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Flipper/Sprite:texture") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ ExtResource( 1 ) ] +} +tracks/5/type = "value" +tracks/5/path = NodePath(".:scale") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("OiSG:playing") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("OiSG:stream_paused") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} + +[sub_resource type="AtlasTexture" id=4] +atlas = ExtResource( 6 ) +region = Rect2( 72, 0, 24, 24 ) + +[sub_resource type="Animation" id=2] +resource_name = "fun" +length = 4.0 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Flipper/Sprite:scale") +tracks/0/interp = 2 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.5, 0.6, 3.3, 3.4, 3.5, 3.55, 3.6, 3.65, 3.7, 3.75, 3.8, 3.85, 3.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1e-05, 1 ), Vector2( 0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( -0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( 0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( -0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( 1.25, 0.833 ), Vector2( 1, 1 ), Vector2( 1, 1 ), Vector2( 1.25, 0.833 ), Vector2( 1e-05, 1 ), Vector2( -0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( 0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( -0.75, 1 ), Vector2( 1e-05, 1 ), Vector2( 0.75, 1 ), Vector2( 1e-05, 1 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Flipper/Sprite/Overlay:modulate") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.5, 0.6, 3.3, 3.4, 3.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 0 ), Color( 1, 1, 1, 1 ), Color( 1, 1, 1, 1 ) ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Message:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.8, 0.9, 1, 2.95, 3.05, 3.15 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 1e-05, 1e-05 ), Vector2( 1.0418, 1 ), Vector2( 1, 0.96 ), Vector2( 1, 0.96 ), Vector2( 1.0418, 1 ), Vector2( 1e-05, 1e-05 ) ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Flipper/Sprite:texture") +tracks/3/interp = 2 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.75, 0.85, 1.4, 1.55, 1.75, 1.9, 2.05, 2.9 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ ExtResource( 1 ), ExtResource( 1 ), ExtResource( 5 ), ExtResource( 1 ), ExtResource( 5 ), ExtResource( 1 ), ExtResource( 5 ), ExtResource( 1 ), ExtResource( 6 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Flipper/Sprite:hframes") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 2.9 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ 1, 4 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Flipper/Sprite:frame") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 2.9, 2.95, 3, 3.05 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 0, 0, 1, 2, 3 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Flipper/Sprite/Overlay:texture") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 3.3 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ ExtResource( 1 ), SubResource( 4 ) ] +} +tracks/7/type = "value" +tracks/7/path = NodePath(".:scale") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 1, 1 ) ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("OiSG:playing") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.85, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 2, +"values": [ false, true, false ] +} + +[node name="Speccy" type="Node2D"] +script = ExtResource( 7 ) +messages_dir = "res://graphics/hud/speccy" +message = "over_here" + +[node name="Flipper" type="Node2D" parent="."] + +[node name="Sprite" type="Sprite" parent="Flipper"] +position = Vector2( -1, -12 ) +texture = ExtResource( 1 ) +offset = Vector2( -1, 0 ) + +[node name="Overlay" type="Sprite" parent="Flipper/Sprite"] +modulate = Color( 1, 1, 1, 0 ) +material = SubResource( 3 ) +texture = ExtResource( 1 ) +offset = Vector2( 1, 0 ) +region_rect = Rect2( 1.015, 0, 0, 0 ) + +[node name="Message" type="Sprite" parent="."] +position = Vector2( 0, -24 ) +texture = ExtResource( 4 ) + +[node name="OiSG" type="AudioStreamPlayer" parent="."] +stream = ExtResource( 8 ) +stream_paused = true +bus = "sound" + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 1 ) +anims/fun = SubResource( 2 ) diff --git a/objects/player/arrow_projectile.gd b/objects/player/arrow_projectile.gd index 05b8dab..8f51b59 100644 --- a/objects/player/arrow_projectile.gd +++ b/objects/player/arrow_projectile.gd @@ -1,22 +1,33 @@ extends Node2D + +# "block" graphic +const BlockText := preload("res://objects/hud/blocktext.tscn") + + # speed to fly at -export var speed = 240.0 +export var speed: float = 240.0 # group to kill -export var target_group = "enemy_hitbox" +export var target_group: String = "enemy_hitbox" # direction to fly -export var direction = 1.0 +export var direction: float = 1.0 # whether or not it frees on wall collision -export var breaks_on_wall = true +export var breaks_on_wall: float = true + #Edge to check culling, if this edge is offscreen, delete the arrow -onready var cull_edge = Vector2(5 * direction,0) -onready var initial_sector = Game.current_sector +onready var cull_edge := Vector2(5.0 * direction, 0.0) +onready var initial_sector: Vector2 = Game.current_sector + func _ready(): + if target_group == "enemy_hitbox": + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + $Sprite.material.set_shader_param("palette", palette) #Flip depending on direction scale.x = direction + func _physics_process(delta): #Move in right direction position.x += speed * direction * delta @@ -25,6 +36,7 @@ func _physics_process(delta): _persist_trail() queue_free() + #Wall Collision func _on_Hitbox_body_entered(body): if breaks_on_wall: @@ -33,6 +45,7 @@ func _on_Hitbox_body_entered(body): _persist_trail() queue_free() + # kill entity if in target group func _on_Hitbox_area_entered(area): # block if collided area is in "blocks_arrow" group @@ -41,14 +54,14 @@ func _on_Hitbox_area_entered(area): # create block text and return if blocked if area.is_in_group("blocks_arrow"): var pos = target.global_position - Game.instance_node(Game.block_text, pos.x, pos.y, target.get_parent()) + Game.instance_node(BlockText, pos.x, pos.y, target.get_parent()) _make_sparks() else: # kill targeted node target.die() #decrease arrows if enemy killed if target_group == "enemy_hitbox": - Game.arrows = max(0, Game.arrows - 1) # clamp arrows above 0 + Game.arrows = max(0, Game.arrows - 1) as int # clamp arrows above 0 _persist_trail() queue_free() elif area.is_in_group("arrow"): @@ -56,6 +69,7 @@ func _on_Hitbox_area_entered(area): _persist_trail() queue_free() + func _persist_trail(): # don't do this twice to prevent crash if not is_queued_for_deletion(): @@ -68,6 +82,7 @@ func _persist_trail(): # free particles once they have gone through their lifetime get_tree().create_timer(particles.lifetime, false).connect("timeout", particles, "queue_free") + func _make_sparks(): # don't do this twice to prevent crash if not is_queued_for_deletion(): diff --git a/objects/player/arrow_projectile.tscn b/objects/player/arrow_projectile.tscn index 17e79a4..2b5471a 100644 --- a/objects/player/arrow_projectile.tscn +++ b/objects/player/arrow_projectile.tscn @@ -1,14 +1,16 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=10 format=2] -[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=1] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] [ext_resource path="res://graphics/player/arrow.png" type="Texture" id=2] [ext_resource path="res://objects/player/arrow_projectile.gd" type="Script" id=3] [ext_resource path="res://graphics/particles/dust.png" type="Texture" id=4] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=5] -[sub_resource type="ShaderMaterial" id=1] +[sub_resource type="ShaderMaterial" id=7] shader = ExtResource( 1 ) shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = false +shader_param/palette = ExtResource( 5 ) [sub_resource type="Curve" id=3] _data = [ Vector2( 0, 1 ), 0.0, -0.139481, 0, 0, Vector2( 1, 0 ), -2.82064, 0.0, 0, 0 ] @@ -24,7 +26,7 @@ z_index = 1 script = ExtResource( 3 ) [node name="Sprite" type="Sprite" parent="."] -material = SubResource( 1 ) +material = SubResource( 7 ) z_index = -1 texture = ExtResource( 2 ) diff --git a/objects/player/player.gd b/objects/player/player.gd index 9b8ef05..22b8818 100644 --- a/objects/player/player.gd +++ b/objects/player/player.gd @@ -1,430 +1,604 @@ extends KinematicBody2D -signal hatch_exited +# SIGNALS # +signal died() +signal teleport_finished() +# CONSTANTS # const ArrowProjectile = preload("res://objects/player/arrow_projectile.tscn") +const DeathSplatter = preload("res://objects/player/player_death_particles.tscn") +const SplashParticles = preload("res://objects/environment/splash/splash_particles.tscn") +const BloodSpray := preload("res://objects/environment/blood/blood_spray.tscn") -##CLEAN UP CODE LATER -##Movement -export var use_iframes = false -export var walk_speed = 50 -export var gravity = 12 -export var max_fall_speed = INF -export var jump_time = 15 -export var jump_force = 150 -export var doublejump_force = 122 -##Children -onready var sprite = $Sprite -onready var climb_ray = $ClimbRay -onready var anims = $AnimationPlayer -onready var sword_sprite = $SwordSprite -onready var sword_hitbox = $SwordArea -onready var death_particles = $DeathSplatter -onready var dust_particles = $DustParticles -onready var iframe_timer = $IframeTimer -onready var hitbox = $Area2D/CollisionShape2D2 +# EXPORTS # +## whether to be temporarily invulnerable after respawning +export var use_iframes: bool = false +## horizontal movement speed +export var walk_speed: float = 50.0 +## frames until walk speed peak (at 60fps reference) +export var walk_acceleration_frames: float = 1.0 +## speed to push pushable objects at +export var push_speed: float = 25.0 +## climbing speed +export var climb_speed: float = 39.0 +## gravity force +export var gravity: float = 720.0 +## SG's terminal velocity +export var max_fall_speed: float = 255.0 +## upward added by jump +export var jump_force: float = 150.0 +## proportion of remaining force retained when jump is released +export var jump_release_force: float = 0.25 +## impulse added when double jumping +export var double_jump_force: float = 122.0 +## if on turn on oxygentimer to kill player +export var underwater = false +## old player controls +export var beta_gameplay = false -#Map -onready var map = get_owner() -##States -enum State {IDLE,WALK,JUMP,FALL,STUNNED,CLIMB,SWORD,SHOOT,INACTIVE,TRANSPORT,HATCH} -var current_state = State.IDLE -var can_die = true -var dead = false -##Runtime -var axis = Vector2.ZERO #Current direction being held -var trail_color = Color(0.25,0,1,0.4) - #Physics -var velocity = Vector2.ZERO -var current_ladder = null #Used for checking climbing every frame instead of area entered -var jump_pressure = 0 -var can_doublejump = true -var can_move_in_air = false -var transport_speed = 0.0 -var transport_direction = Vector2.ZERO - #Positions -var arrowpos = Vector2(5,3) -##Preload +# velocity +var velocity: Vector2 = Vector2.ZERO +# current falling speed +var current_fall_speed: float = 0.0 +# snap vector +var snap: Vector2 = Vector2.ZERO +# ladder currently attached to +var _attached_ladder: Node2D = null +# whether to skip blood splatter for this death +var skip_blood: bool = false +#whether sg has landed before +var first_land = true -#Set initial respawn point -func _ready(): - $LeftShoe.shape.length = 0.0 +var can_shield = true + + +# NODE REFERENCES # +onready var state_chart: StateChart = $StateChart +onready var animation_player: AnimationPlayer = $AnimationPlayer +onready var graphics: Node2D = $Graphics +onready var sprite: Sprite = $"%Sprite" +onready var arrow_position: Position2D = $"%ArrowPosition" +onready var dust_particles: CPUParticles2D = $"%DustParticles" +onready var grounded_shape: CollisionShape2D = $"%GroundedShape" +onready var airborne_shape: CollisionShape2D = $"%AirborneShape" +onready var ladder_detector: RayCast2D = $"%LadderDetector" +onready var death_splatter_position: Position2D = $"%DeathSplatterPosition" +onready var pushable_detector: RayCast2D = $"%PushableDetector" +onready var oxygen_timer = $OxygenTimer +onready var low_oxygen_label = $"%LowOxygenLabel" +onready var edge_detector = $Graphics/EdgeDetector +onready var body_shape: CollisionShape2D = $"%BodyShape" +onready var cfox: Sprite = $"%CFox" +onready var hitbox: Area2D = $"%Hitbox" + +# OVERRIDES # +func _ready() -> void: + Game.can_restart = true + #set palette + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + sprite.material.set_shader_param("palette", palette) + $"%CFox".material.set_shader_param("palette", palette) + $"%DissolveParticles".material.set_shader_param("palette", palette) + if Game.current_palette == "super_player": + $"%Sparkles".visible = true + + # death handling Game.respawn_point = global_position + connect("died", Game, "_on_player_died") + # to detect floor on first frame + move_and_slide(Vector2(0.0, 1.0), Vector2.UP) + # make certain pushable detector will not detect player + pushable_detector.add_exception(self) + # set up state chart + state_chart.initialize() + state_chart.set_guard_property("can_respawn", true) + state_chart.set_guard_property("use_iframes", use_iframes) + state_chart.set_guard_property("red_feather", false) + state_chart.set_guard_property("beta_gameplay", beta_gameplay) + # state chart debug + $StateDebugLayer/StateChartDebug.target = state_chart + # set lung size + if Game.difficulty == Game.Difficulty.SWEET: + oxygen_timer.set_wait_time(25) + if Game.difficulty == Game.Difficulty.PUNGENT: + oxygen_timer.set_wait_time(15) + oxygen_timer.start() -func _physics_process(delta): - if current_state == State.INACTIVE: - return - axis = Vector2(Input.get_axis("ui_left","ui_right"),Input.get_axis("ui_up","ui_down")) - #Check ladder - check_ladder() - match current_state: - State.IDLE: - _process_idle() - continue - State.WALK: - _process_walk() - continue - State.IDLE, State.WALK: - _process_idle_walk() - continue - State.JUMP: - _process_jump() - continue - State.FALL: - _process_fall() - continue - State.JUMP, State.FALL: - _process_jump_fall() - continue - State.CLIMB: - _process_climb() - continue - State.SWORD: - _process_sword() - continue - State.SHOOT: - _process_shoot() - continue - State.TRANSPORT: - _process_transport(delta) - return - State.HATCH: - _process_hatch(delta) - return +func _physics_process(delta: float) -> void: + # snap sprite + sprite.global_position = graphics.global_position.round() + Vector2(0.0, -10.0) + # update transition guard properties + # whether player can currently shoot an arrow + var can_shoot = Game.arrows > 0 and get_tree().get_nodes_in_group("player_arrow").size() == 0 + state_chart.set_guard_property("can_shoot", can_shoot) + + # check for and propagate input events + if Input.is_action_just_pressed("shoot"): # shooting + state_chart.send_event("shoot") + elif Input.is_action_just_pressed("jump"): # jumping + state_chart.send_event("jump") + if Input.is_action_pressed("move_down"): + state_chart.send_event("duck_pressed") + if Input.is_action_just_released("move_down"): + state_chart.send_event("duck_released") + if Input.is_action_just_pressed("shield") && Game.can_use_shield == true: + if can_shield: + Audio.play_sound(Audio.a_shield,Audio.ac_die) + $ShieldTimer.start() + $ShieldCooldown.start() + $Shield.visible = true + $"%AirborneShape".disabled = true + $"%GroundedShape".disabled = true + can_shield = false + - #Gravity - if current_state != State.CLIMB: - velocity.y = min(velocity.y + gravity, max_fall_speed) - #Cut y velocity when hitting ceiling - if is_on_ceiling(): - current_state = State.FALL - position.y += 1 - velocity.y = 0 - #Apply velocity - var snap = Vector2.ZERO - if velocity.y < 0.0 and current_ladder == null: - snap.y = 1.0 - move_and_slide_with_snap(velocity, snap, Vector2.UP, true) - #Moon Jump - if Debug.moon_jump == true: can_doublejump = true - #2011 - if Debug.cfox_mode == true: - anims.play("idle") - anims.set_speed_scale(0) - #Infinite arrows - if Debug.infinite_arrows == true: - Game.arrows = 99 - -func _process_idle(): - if anims.get_current_animation() != "idle": anims.play("idle") - #Stop - velocity.x = 0 - #Goto Walk - if axis.x != 0: current_state = State.WALK - -func _process_walk(): - if anims.get_current_animation() != "walk": anims.play("walk") - #Move - move(walk_speed,0,true) - #Goto Idle - if axis.x == 0: current_state = State.IDLE - #Push Blocks - for i in get_slide_count(): - var collision = get_slide_collision(i) - if collision.get_collider().is_in_group("pushable"): - collision.get_collider().push(collision.normal) -func _process_idle_walk(): - can_doublejump = false - can_move_in_air = false - velocity.y = 0 - #Goto Fall - if !is_on_floor(): current_state = State.FALL - #Goto Jump - check_jump() - #Goto Sword - if Debug.allow_sword && Input.is_action_just_pressed("sword"): - Audio.play_sound(Audio.a_sword,Audio.ac_jump) - current_state = State.SWORD - return - #Goto Shoot - check_shoot() - -func _process_jump(): - jump_pressure += 1 - #Pressure sensitive jump - if jump_pressure >= jump_time or Input.is_action_just_released("jump"): - velocity.y = -jump_force / 4 - #velocity.y = 0 - current_state = State.FALL - -func _process_fall(): - if anims.get_current_animation() != "doublejump": anims.play("jump") - #Return to idle - if is_on_floor(): - current_state = State.IDLE - return - #Cant move in air - if !can_move_in_air: velocity.x = 0 - -func _process_jump_fall(): - check_double_jump() - move(walk_speed,0,true) - #Goto Shoot - check_shoot() - -func _process_climb(): - can_move_in_air = true - can_doublejump = true - #Graphics - anims.play("climb") - anims.set_speed_scale(abs(axis.y)) - #Climb - position.y += axis.y * 0.65 - #Sound - if axis.y == -1: - if Audio.ac_climb.get_stream() != Audio.a_climb_up: Audio.play_sound(Audio.a_climb_up,Audio.ac_climb) - if axis.y == 1: - if Audio.ac_climb.get_stream() != Audio.a_climb_down: Audio.play_sound(Audio.a_climb_down,Audio.ac_climb) - if axis.y == 0: Audio.ac_climb.set_stream(null) - #Manual Jump,, only works when holding neutral or away from ladder - if axis.x != sprite.scale.x && Input.is_action_just_pressed("jump"): - position.x -= sprite.scale.x * 3 - velocity.y = -jump_force - anims.set_speed_scale(1) - current_state = State.FALL - Audio.ac_climb.set_stream(null) - return - if climb_ray.get_collider() == null: - if axis.y == -1: - #Auto Jump - velocity.y = -jump_force - Audio.play_sound(Audio.a_jump,Audio.ac_jump) - #Auto dismount - Audio.ac_climb.set_stream(null) - current_state = State.FALL - return - #Side dismount - if axis.x != sprite.scale.x && Input.is_action_just_pressed("shoot"): - position.x -= sprite.scale.x * 3 - current_state = State.FALL - anims.set_speed_scale(1) - Audio.ac_climb.set_stream(null) - return + # send relevant events + if is_on_floor(): # check on floor status + state_chart.send_event("grounded") + else: + state_chart.send_event("airborne") + # check if in contact with ladder + if ladder_detector.is_colliding(): + state_chart.send_event("ladder_touched") + + # show oxygen count on low oxygen + if underwater: + if oxygen_timer.time_left < 5: + low_oxygen_label.text = str(floor(oxygen_timer.time_left) + 1) + set_underwater_audio(true) + else: + low_oxygen_label.text = "" + set_underwater_audio(false) + else: + #NOT UNDERWATER + low_oxygen_label.text = "" -func _process_sword(): - anims.play("stab") - #Stop - velocity.x = 0 - sword_sprite.scale.x = sprite.scale.x - #Move hitbox with flip - sword_hitbox.position.x = sprite.scale.x * 10 - #Return to idle after animationplayer end anim signal -func _process_shoot(): - #Stop - velocity.x = 0 - if anims.get_current_animation() == "shoot air": - #Cancel air shoot animation when grounded - if is_on_floor(): - current_state = State.IDLE - return - move(walk_speed,0,true) - -func _process_transport(delta): - position += transport_direction * transport_speed * delta - -func _process_hatch(delta): - if Input.is_action_just_pressed("exit_hatch"): - anims.play("enter hatch", -1, -2,true) - emit_signal("hatch_exited") - -func spawn_arrow(): - Audio.play_sound(Audio.a_shoot,Audio.ac_jump) +# HELPER FUNCTIONS # +## spawns an arrow +func spawn_arrow() -> void: var arrow = ArrowProjectile.instance() - arrow.global_position = Vector2( - global_position.x + arrowpos.x * sprite.scale.x, - global_position.y + arrowpos.y - ) - arrow.direction = sprite.scale.x + arrow.global_position = arrow_position.global_position + arrow.direction = sign(arrow_position.global_position.x - global_position.x) arrow.add_to_group("player_arrow") - map.add_child(arrow) + get_parent().add_child(arrow) + Audio.play_sound(Audio.a_shoot, Audio.ac_jump) -func check_jump(): +func die() -> void: + state_chart.send_event("hurt") + +func zap() -> void: + state_chart.send_event("zapped") + +func set_underwater_audio(value): + var idx = AudioServer.get_bus_index("Master") + AudioServer.set_bus_effect_enabled(idx,0,value) + AudioServer.set_bus_effect_enabled(idx,1,value) + +func get_stick_input(axis): + var inp = Input.get_joy_axis(0,axis) + if abs(inp) >= 0.5: + return sign(inp) + else: + return 0 + +func reset_fall_speed(): + current_fall_speed = 0 + +# STATE ENTERS/EXITS # +func _on_Grounded_state_entered() -> void: + # still jump if pressed frame hit ground if Input.is_action_just_pressed("jump"): - #Detach ladder - if current_state == State.CLIMB: - Audio.ac_climb.set_stream(null) # stop climb sound - position.x -= sprite.scale.x * 3 - else: - dust_particles.restart() - anims.set_speed_scale(1) - # Jump - can_doublejump = true - can_move_in_air = true - velocity.y = 0 - jump_pressure = 0 - current_state = State.JUMP - Audio.play_sound(Audio.a_jump,Audio.ac_jump) - anims.play("jump") - velocity.y = -jump_force - move(walk_speed,0,true) + state_chart.send_event("jump") + # toggle hurtbox shapes + grounded_shape.disabled = false + airborne_shape.disabled = true + snap.y = 2.5 # snap when in grounded state + velocity.y = 1.0 + if first_land: + first_land = false + else: + #Landing sound + Audio.play_sound(Audio.a_land,Audio.ac_land) + #Landing Rumble + var intensity = inverse_lerp(0.0, max_fall_speed, current_fall_speed) + intensity = min(intensity * 1.1,1.0) + Input.start_joy_vibration(0, 1.0, intensity, 0.05) -func check_double_jump(): - if is_on_floor(): - check_jump() - if Input.is_action_just_pressed("jump") && can_doublejump: - Audio.play_sound(Audio.a_doublejump,Audio.ac_jump) - can_doublejump = false - velocity.y = -doublejump_force - anims.play("doublejump") +func _on_Still_state_entered() -> void: + animation_player.play("idle") -func check_shoot(): - #Only Shoot if have arrows and there are no arrows onscreen - if Input.is_action_just_pressed("shoot") && Game.arrows > 0 && get_tree().get_nodes_in_group("player_arrow").size() == 0: - current_state = State.SHOOT +func _on_Walking_state_entered() -> void: + animation_player.play("walk") + +func _on_Blinking_state_entered() -> void: + if $"%Blinking".active: + animation_player.play("blink") + var blink_timer = get_tree().create_timer(rand_range(1.0, 2.0), false) + blink_timer.connect("timeout", self,"_on_Blinking_state_entered") + +func _on_Stimming_state_entered() -> void: + animation_player.play("stim") + +func _on_Ducking_state_entered(): + velocity.x = 0 + animation_player.play("duck") + +func _on_Pushing_state_entered() -> void: + animation_player.play("push") + +func _on_Airborne_state_entered() -> void: + grounded_shape.disabled = true + airborne_shape.disabled = false + snap.y = 0.0 # do not snap when in air + velocity.y = 0.0 + +func _on_NormalJump_state_entered() -> void: + velocity.y = -jump_force + Audio.play_sound(Audio.a_jump, Audio.ac_jump) + animation_player.play("jump") + dust_particles.restart() + +func _on_NormalJump_state_exited() -> void: + # add bit of force proportional to how much of the jump is left + if Input.is_action_just_released("jump"): + var factor = inverse_lerp(0.0, -jump_force, velocity.y) + velocity.y = -jump_force * factor * jump_release_force + +func _on_LadderJump_state_entered() -> void: + velocity.y = -jump_force + Audio.play_sound(Audio.a_jump, Audio.ac_jump) + animation_player.play("ladder_jump") + +func _on_DoubleJump_state_entered() -> void: + velocity.y = -double_jump_force + Audio.play_sound(Audio.a_doublejump, Audio.ac_jump) + animation_player.play("double_jump") + +func _on_CoyoteFalling_state_entered() -> void: + global_position.y += 1.0 + velocity.x = 0.0 + animation_player.play("fall") + +func _on_NormalFalling_state_entered() -> void: + animation_player.play("fall") + +func _on_ScaredFalling_state_entered() -> void: + velocity.x = 0.0 + animation_player.play("fall_scared") + +func _on_Shooting_state_entered() -> void: + velocity.x = 0.0 + animation_player.play("shoot_grounded") + +func _on_AirShooting_state_entered() -> void: + spawn_arrow() + animation_player.play("shoot_airborne") + +func _on_Climbing_state_entered() -> void: + if ladder_detector.get_collider().is_in_group("ladder"): + _attached_ladder = ladder_detector.get_collider() + # move a tiny bit up if on ground to detach from falling blocks if is_on_floor(): - anims.play("shoot grounded") - else: - anims.play("shoot air") #Shoot immediately in air - -func move(hsp,vsp,flip:bool): - if is_on_floor() or can_move_in_air: - velocity.x = hsp * axis.x - #Flip - if flip: if sign(axis.x) != 0: sprite.scale.x = axis.x - -func check_ladder(): - if climb_ray.get_collider() != null: - current_ladder = climb_ray.get_collider().get_parent() - #Stop the velocity + global_position.y -= get("collision/safe_margin") velocity = Vector2.ZERO - #Snap to closest side - if position.x < current_ladder.middle: - position.x = current_ladder.left_snap.global_position.x - sprite.scale.x = 1 - else: - position.x = current_ladder.right_snap.global_position.x - sprite.scale.x = -1 - #Start Climbing - current_state = State.CLIMB - #Move the raycast - #climb_ray.position.x = 4 * sprite.scale.x + snap = Vector2.ZERO + var input_dir = sign(Input.get_axis("move_left", "move_right") + get_stick_input(JOY_AXIS_0)) # sign() to normalize + var ladder_dir = sign(_attached_ladder.middle - global_position.x) + var flip = global_position.y - 1.0 <= _attached_ladder.global_position.y and input_dir == ladder_dir and is_on_floor() + if (ladder_dir >= 0.0 != flip or not _attached_ladder.can_climb_right) and _attached_ladder.can_climb_left: + global_position.x = _attached_ladder.left_snap + graphics.scale.x = 1.0 + animation_player.play("climb") + elif _attached_ladder.can_climb_right: + global_position.x = _attached_ladder.right_snap + graphics.scale.x = -1.0 + animation_player.play("climb") -func enter_transport(speed, direction): - transport_speed = speed - transport_direction = direction - current_state = State.TRANSPORT - can_doublejump = false - anims.play("doublejump") +func _on_Climbing_state_exited() -> void: + _attached_ladder = null + animation_player.playback_speed = 1.0 # restore playback speed + Audio.ac_climb.stream = null # stop audio -func exit_transport(): - current_state = State.FALL +# all the stuff that happens when they DIE +func _on_Dead_state_entered() -> void: + if Debug.fast_punishment > 0: + Engine.time_scale += .05 * Debug.fast_punishment + # send signals + emit_signal("died") + state_chart.send_event("died") + Input.start_joy_vibration(0,1,1,0.2) + # spawn death particles + if not skip_blood: + var particles = DeathSplatter.instance() + particles.global_position = death_splatter_position.global_position + particles.emitting = true + get_parent().add_child(particles) + for i in 16: + var spray = BloodSpray.instance() + spray.pause_mode = PAUSE_MODE_PROCESS + Physics2DServer.set_active(true) + spray.global_position = death_splatter_position.global_position + spray.velocity = Vector2(randf() * 80.0, 0.0).rotated(randf() * TAU) + spray.stains_player = false + get_parent().add_child(spray) + else: + skip_blood = false + # fade into the ether + graphics.visible = false + state_chart.send_event("respawn") + #refill oxygen + oxygen_timer.start() -func enter_hatch(snap_position): - if dead: - return - position = snap_position - current_state = State.INACTIVE - hitbox.disabled = true - collision_layer = 0 - anims.play("enter hatch", -1, 2) +func _on_Drowning_state_entered() -> void: +# state_chart.send_event("died") + velocity = Vector2.ZERO + animation_player.call_deferred("play", "drown") -func die(): - #If the player is already dead, don't kill them again - if current_state == State.INACTIVE or current_state == State.HATCH: - return - if can_die: - dead = true - Audio.ac_climb.set_stream(null) # stop climbing sound\ - #Create particles - var new_particles = death_particles.duplicate() - get_parent().add_child(new_particles) - new_particles.global_position = global_position - new_particles.emitting = true - sprite.visible = false - current_state = State.INACTIVE # Set to state where player is not controllable - position = Game.respawn_point # Set respawn point - if Game.lives <= 0 && Game.use_lives: - #Gover - #Particles - new_particles.amount = 64 - new_particles.lifetime = 0.45 - new_particles.speed_scale = 1.5 - current_state = State.INACTIVE # Set to state where player is not controllable - Audio.play_sound(Audio.a_gover, Audio.ac_die) - #Slow down time - var time_tween = get_tree().create_tween() - time_tween.tween_property(Engine, "time_scale", 0.1, 0.3) - Audio.ac_music.stream_paused = true - yield(time_tween, "finished") #Resume from freeze frame - yield(get_tree().create_timer, "timeout") - Game.call_deferred("restart_level") - else: - #Die - Game.lives -= 1 - Game.deaths += 1 - Audio.play_sound(Audio.a_die, Audio.ac_die) - yield(Game.freeze_frame(0.3), "timeout") - #Reduce points if playing in infinite lives mode - if Game.use_lives == false && Game.lives < 0: - Game.score = max(0,Game.score - 500) - #Iframes after respawn - if use_iframes: - iframe_timer.start() - can_die = false - #Respawn player - current_state = State.IDLE - sprite.visible = true - dead = false +func _on_Respawn_state_entered() -> void: + global_position = Game.respawn_point + graphics.visible = true -func _on_AnimationPlayer_animation_finished(anim_name): - #Set hatch state - if anim_name == "enter hatch": - match current_state: - State.INACTIVE: - current_state = State.HATCH +func _on_Appearing_state_entered() -> void: + global_position = Game.respawn_point + animation_player.play("respawn") + +func _on_Edge_state_entered(): + animation_player.play("edge") + +func _on_Inactive_state_entered() -> void: + velocity = Vector2.ZERO + body_shape.disabled = true + hitbox.monitorable = false + hitbox.monitoring = false + +func _on_Inactive_state_exited() -> void: + body_shape.disabled = false + hitbox.monitorable = true + hitbox.monitoring = true + +func _on_Teleporting_state_entered() -> void: + hitbox.monitorable = false + hitbox.monitoring = false + velocity = Vector2.ZERO + Audio.play_sound(Audio.a_teleport, Audio.ac_jump) + animation_player.play("idle") + var tween = create_tween() + for i in 8: + tween.tween_property(sprite, "position:x", 1.0, 0.0333333) + tween.tween_property(sprite, "position:x", -1.0, 0.0333333) + tween.tween_property(sprite, "position:x", 0.0, 0.0666667) + yield(tween, "finished") + sprite.visible = false + $"%DissolveParticles".emitting = true + yield(get_tree().create_timer(1.0, false), "timeout") + emit_signal("teleport_finished") + + +# STATE PROCESSING # +## when on ground +func _process_grounded(delta: float) -> void: + # make sure is_on_floor detected still + velocity.y = 1.0 + #play edge sprite if hanging of edge + if !edge_detector.is_colliding(): + state_chart.send_event("edge") + else: + state_chart.send_event("off_edge") + +## called when player can move left and rightpass # Repass # Rpass # Replace with function body.eplace with function body.place with function body. +func _process_horizontal_movement(delta: float) -> void: + var input_dir = sign(Input.get_axis("move_left", "move_right") + get_stick_input(JOY_AXIS_0)) # sign() to normalize + velocity.x = input_dir * walk_speed + if input_dir != 0.0: + graphics.scale.x = input_dir + +## player movement with acceleration +func _process_horizontal_movement_grounded(delta: float) -> void: + var input_dir = sign(Input.get_axis("move_left", "move_right") + get_stick_input(JOY_AXIS_0)) # sign() to normalize +# if Input.is_action_pressed("stick_input"): input_dir = get_stick_input(JOY_AXIS_0) + if input_dir == 0.0 or input_dir != sign(velocity.x): + velocity.x = 0.0 + var acceleration = lerp(0.0, walk_speed, 1.0 / walk_acceleration_frames) * 60.0 + velocity.x += input_dir * acceleration * delta + velocity.x = clamp(velocity.x, -walk_speed, walk_speed) + if input_dir != 0.0: + graphics.scale.x = input_dir + +## walk/idle state +func _process_can_walk(delta: float) -> void: + if sign(Input.get_axis("move_left", "move_right")) != 0.0 or get_stick_input(JOY_AXIS_0) != 0.0: + state_chart.send_event("walk_start") + else: + state_chart.send_event("walk_stop") + +## rubbing up against a wall or pushing an object +func _process_pushing(delta: float) -> void: + if not is_on_wall(): + state_chart.send_event("push_stop") + var input_dir = sign(Input.get_axis("move_left", "move_right") + get_stick_input(JOY_AXIS_0)) # sign() to normalize + if input_dir != 0.0: + pushable_detector.force_raycast_update() + if pushable_detector.is_colliding(): + var col = pushable_detector.get_collider() + if col.is_in_group("pushable"): + col.push(input_dir * push_speed) + velocity.x = input_dir * push_speed * 2.0 + else: + state_chart.send_event("push_stop") + +## climbing on ladders +func _process_climbing(delta: float) -> void: + # climbing movement + var input_dir = sign(Input.get_axis("move_up", "move_down") + get_stick_input(JOY_AXIS_1)) # sign() to normalize + move_and_slide(Vector2(0.0, input_dir * climb_speed), Vector2.UP) # move + animation_player.playback_speed = abs(input_dir) # play/pause animation + + # play sound + if input_dir < 0.0: + if Audio.ac_climb.stream != Audio.a_climb_up: + Audio.play_sound(Audio.a_climb_up, Audio.ac_climb) + if Audio.ac_climb.get_playback_position() >= Audio.a_climb_up.get_length(): + Audio.ac_climb.play() + elif input_dir > 0.0: + if Audio.ac_climb.stream != Audio.a_climb_down: + Audio.play_sound(Audio.a_climb_down, Audio.ac_climb) + if Audio.ac_climb.get_playback_position() >= Audio.a_climb_down.get_length(): + Audio.ac_climb.play() + else: + Audio.ac_climb.stream = null + + # check if still on ladder + ladder_detector.force_raycast_update() + var collider = ladder_detector.get_collider() + if collider and collider.is_in_group("ladder"): + _attached_ladder = collider + if Input.is_action_just_pressed("jump"): + var horizontal_dir = sign(Input.get_axis("move_left", "move_right") + get_stick_input(JOY_AXIS_0)) # sign() to normalize + if sign(_attached_ladder.middle - global_position.x) != horizontal_dir: + global_position.x -= graphics.scale.x * 3.0 + state_chart.send_event("ladder_jump") return - State.HATCH: - current_state = State.IDLE - hitbox.disabled = false - collision_layer = 2 + elif Input.is_action_just_pressed("shoot"): + var horizontal_dir = sign(Input.get_axis("move_left", "move_right") + get_stick_input(JOY_AXIS_0)) # sign() to normalize + if sign(_attached_ladder.middle - global_position.x) != horizontal_dir: + global_position.x -= graphics.scale.x * 3.0 + state_chart.send_event("ladder_detach") return - if current_state == State.INACTIVE: - return - #Return to idle after slash - if anim_name == "stab": - current_state = State.IDLE - return - #Return to idle after grounded shoot - if anim_name == "shoot grounded": - current_state = State.IDLE - return - #Return to fall or idle after air shoot - if anim_name == "shoot air": - if is_on_floor(): - current_state = State.IDLE +# # auto-dismount on ground +# elif Input.is_action_pressed("move_down") and is_on_floor(): +# var horizontal_dir = sign(Input.get_axis("move_left", "move_right")) +# if sign(_attached_ladder.middle - global_position.x) != horizontal_dir: +# global_position.x -= graphics.scale.x * 3.0 +# state_chart.send_event("ladder_detach")# + elif Input.is_action_just_pressed("move_left") and _attached_ladder.can_climb_left and not beta_gameplay: + global_position.x = _attached_ladder.left_snap + graphics.scale.x = 1.0 + elif Input.is_action_just_pressed("move_right") and _attached_ladder.can_climb_right and not beta_gameplay: + global_position.x = _attached_ladder.right_snap + graphics.scale.x = -1.0 + else: + var ladder_dir = sign(_attached_ladder.middle - global_position.x) + if ladder_dir >= 0.0: + global_position.x = _attached_ladder.left_snap + graphics.scale.x = 1.0 + else: + global_position.x = _attached_ladder.right_snap + graphics.scale.x = -1.0 + else: + if input_dir == -1.0: + state_chart.send_event("ladder_peak") return else: - current_state = State.FALL + state_chart.send_event("ladder_detach") return +func _process_jump(delta: float) -> void: + if velocity.y >= 0.0: + state_chart.send_event("jump_peak") + if not Input.is_action_pressed("jump"): + state_chart.send_event("jump_released") -func _on_SwordArea_area_entered(area): - if area.is_in_group("enemy_hitbox"): - var target = area.get_parent() - # create block text and return if blocked - if area.is_in_group("blocks_sword"): - var pos = target.global_position - Game.instance_node(Game.block_text, pos.x, pos.y, target.get_parent()) - return - else: - target.die() +## called by states SG will fall during +func _process_gravity(delta: float) -> void: + velocity.y = min(velocity.y + gravity * delta, max_fall_speed) + current_fall_speed = max(velocity.y,current_fall_speed) -func _on_Area2D_body_entered(body): - if body.is_in_group("death"): die() +## called after all other physics things +func _process_movement(delta: float) -> void: + # apply velocity and react to collisions + velocity.y += get_floor_velocity().y + velocity = move_and_slide_with_snap(velocity, snap, Vector2.UP) + + # deal with that STUPID landing exactly on corner bug + var col = get_last_slide_collision() + if col != null: + if col.remainder.y >= 1.0 and col.normal.y == 0.0: + position.x += col.normal.x * 0.001 + + # check for wall + if is_on_wall() and (Input.get_axis("move_left", "move_right") != 0.0 or get_stick_input(JOY_AXIS_0) != 0.0): + state_chart.send_event("push_start") + +func _process_floating_up(delta: float) -> void: + graphics.global_position.y -= 50.0 * delta + var sprite_sector = Game.get_sector(Vector2(global_position.x, graphics.global_position.y - 20)) + if sprite_sector != Game.current_sector: + graphics.visible = false + graphics.position = Vector2.ZERO + emit_signal("died") + state_chart.send_event("respawn") -func _on_IframeTimer_timeout(): - can_die = true +# COLLISION CALLBACKS # +func _on_Hitbox_body_entered(body: Node) -> void: + if body.is_in_group("death"): + if body.is_in_group("no_blood"): + skip_blood = true + if body.is_in_group("has_splash"): + Game.alternate_death = Audio.a_die_splash + var particles = SplashParticles.instance() + particles.global_position = death_splatter_position.global_position + particles.color = body.splash_color + particles.emitting = true + get_parent().add_child(particles) + if body.is_in_group("death_zap"): + Game.alternate_death = Audio.a_die_zap + die() + + +func _on_Ducking_event_received(event): + if event == "jump": + position.y -= 1 + + +func _on_OxygenTimer_timeout(): + if underwater: + state_chart.send_event("drown") + +#Reset low oxygen effect when leaving level +func _on_Player_tree_exited(): + set_underwater_audio(false) + + +func _on_Zapping_state_entered(): + velocity = Vector2.ZERO + Audio.play_sound(Audio.a_die_zap, Audio.ac_die) + animation_player.call_deferred("play", "zap") + + +func make_blood(): + var particles = DeathSplatter.instance() + particles.global_position = death_splatter_position.global_position + particles.emitting = true + get_parent().add_child(particles) + for i in 16: + var spray = BloodSpray.instance() + spray.pause_mode = PAUSE_MODE_PROCESS + Physics2DServer.set_active(true) + spray.global_position = death_splatter_position.global_position + spray.velocity = Vector2(randf() * 80.0, 0.0).rotated(randf() * TAU) + spray.stains_player = false + get_parent().add_child(spray) + + +func _on_Zapping_state_exited(): + $Graphics/ZapSprite.visible = false + emit_signal("died") + + +func _on_ShieldTimer_timeout(): + $Shield.visible = false + $"%AirborneShape".disabled = false + $"%GroundedShape".disabled = false + + +func _on_ShieldCooldown_timeout(): + can_shield = true + Audio.play_sound(Audio.a_shield_cooldown,Audio.ac_boss) + + +func _on_BetaFalling_state_entered() -> void: + velocity.x = 0.0 diff --git a/objects/player/player.tscn b/objects/player/player.tscn index 526d2fc..a05b632 100644 --- a/objects/player/player.tscn +++ b/objects/player/player.tscn @@ -1,546 +1,337 @@ -[gd_scene load_steps=34 format=2] +[gd_scene load_steps=52 format=2] [ext_resource path="res://objects/player/player.gd" type="Script" id=1] -[ext_resource path="res://graphics/player/sg_walk.png" type="Texture" id=2] -[ext_resource path="res://graphics/player/sg_idle.png" type="Texture" id=3] -[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=4] -[ext_resource path="res://graphics/player/sg_jump.png" type="Texture" id=5] -[ext_resource path="res://graphics/player/pal_purplearmor.png" type="Texture" id=6] -[ext_resource path="res://graphics/player/sg_climb.png" type="Texture" id=7] -[ext_resource path="res://graphics/player/pal_sword_red.png" type="Texture" id=8] -[ext_resource path="res://graphics/player/sg_stab.png" type="Texture" id=9] -[ext_resource path="res://graphics/player/sg_shoot_grounded.png" type="Texture" id=10] -[ext_resource path="res://graphics/player/sword_stab.png" type="Texture" id=11] -[ext_resource path="res://graphics/player/sg_shoot_air.png" type="Texture" id=12] -[ext_resource path="res://shaders/recolor.tres" type="Shader" id=13] -[ext_resource path="res://graphics/player/sg_doublejump.png" type="Texture" id=14] -[ext_resource path="res://objects/player/player_death_particles.tscn" type="PackedScene" id=15] -[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=16] -[ext_resource path="res://scripts/snap_sprite.gd" type="Script" id=17] +[ext_resource path="res://graphics/player/sg_zap.png" type="Texture" id=2] +[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=3] +[ext_resource path="res://graphics/player/sg_idle.png" type="Texture" id=4] +[ext_resource path="res://addons/godot_state_charts/parallel_state.gd" type="Script" id=5] +[ext_resource path="res://addons/godot_state_charts/state_chart.gd" type="Script" id=6] +[ext_resource path="res://ui/theme.tres" type="Theme" id=7] +[ext_resource path="res://addons/godot_state_charts/state_chart_debug.gd" type="Script" id=8] +[ext_resource path="res://addons/godot_state_charts/compound_state.gd" type="Script" id=9] +[ext_resource path="res://addons/godot_state_charts/transition.gd" type="Script" id=10] +[ext_resource path="res://addons/godot_state_charts/atomic_state.gd" type="Script" id=11] +[ext_resource path="res://graphics/player/palettes/default.tex" type="Texture" id=12] +[ext_resource path="res://shaders/electricity.gdshader" type="Shader" id=13] +[ext_resource path="res://graphics/player/sg.png" type="Texture" id=14] +[ext_resource path="res://scripts/randomize_particle_start.gd" type="Script" id=15] +[ext_resource path="res://graphics/particles/shine.png" type="Texture" id=16] +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=18] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=25] -[sub_resource type="ShaderMaterial" id=38] -resource_local_to_scene = true -shader = ExtResource( 4 ) +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 3 ) shader_param/border_color = Color( 0, 0, 0, 1 ) shader_param/border_corners = true -shader_param/palette = ExtResource( 6 ) +shader_param/palette = ExtResource( 12 ) -[sub_resource type="ShaderMaterial" id=28] +[sub_resource type="Curve" id=34] +_data = [ Vector2( 0, 0 ), 0.0, 0.100639, 0, 0, Vector2( 0.158257, 1 ), 7.51724, -6.83592, 0, 0, Vector2( 0.31422, 0 ), 0.0, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=32] shader = ExtResource( 13 ) -shader_param/palette = ExtResource( 8 ) +shader_param/arc_speed = 4.0 +shader_param/arc_fps = 10.0 +shader_param/arc_scale = 8.0 +shader_param/arc_threshold = 0.15 +shader_param/arc_color = Color( 1, 0.93, 0, 1 ) +shader_param/gamma = 2.0 +shader_param/flash_rate = 3.0 +shader_param/flash_intensity = 0.2 +shader_param/background_color = Color( 0, 0, 0, 0 ) -[sub_resource type="RectangleShape2D" id=6] +[sub_resource type="AtlasTexture" id=28] +atlas = ExtResource( 2 ) +region = Rect2( 0, 0, 20, 20 ) + +[sub_resource type="AtlasTexture" id=29] +atlas = ExtResource( 2 ) +region = Rect2( 20, 0, 20, 20 ) + +[sub_resource type="SpriteFrames" id=30] +animations = [ { +"frames": [ SubResource( 28 ), SubResource( 29 ) ], +"loop": true, +"name": "zap", +"speed": 15.0 +} ] + +[sub_resource type="Shader" id=26] +code = "// Recolor +shader_type canvas_item; + +uniform sampler2D palette : hint_albedo; + +void fragment() { + vec4 result_color = texture(palette, COLOR.rg); + result_color.a = 1.0; + COLOR = result_color; +}" + +[sub_resource type="ShaderMaterial" id=27] +shader = SubResource( 26 ) +shader_param/palette = ExtResource( 12 ) + +[sub_resource type="Curve" id=13] +_data = [ Vector2( 0, 1 ), 0.0, -0.0636948, 0, 0, Vector2( 1, 0 ), -3.43886, 0.0, 0, 0 ] + +[sub_resource type="ShaderMaterial" id=24] +shader = ExtResource( 3 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true +shader_param/palette = ExtResource( 12 ) + +[sub_resource type="RectangleShape2D" id=2] extents = Vector2( 2.5, 5 ) -[sub_resource type="RectangleShape2D" id=39] +[sub_resource type="RectangleShape2D" id=3] extents = Vector2( 2.5, 5 ) -[sub_resource type="RayShape2D" id=44] -length = 0.01 +[sub_resource type="RectangleShape2D" id=16] +extents = Vector2( 2.5, 2.5 ) -[sub_resource type="Animation" id=29] -resource_name = "climb" +[sub_resource type="Animation" id=5] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:texture") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ ExtResource( 14 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Graphics/Sprite:position") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( 0, -10 ) ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Graphics/Sprite:hframes") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 8 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Graphics/Sprite:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ true ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Graphics/ZapSprite:visible") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Graphics/ZapSprite:frame") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Graphics/ZapSprite:playing") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ false ] +} + +[sub_resource type="Animation" id=18] +resource_name = "blink" +length = 0.2 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 1, +"values": [ 96, 97, 96 ] +} + +[sub_resource type="Animation" id=31] length = 0.3 loop = true step = 0.15 tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") +tracks/0/path = NodePath("Graphics/Sprite:rotation_degrees") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { "times": PoolRealArray( 0, 0.15 ), "transitions": PoolRealArray( 1, 1 ), "update": 1, -"values": [ Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 7 ) ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ null ] -} -tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:rotation_degrees") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] +"values": [ 56, 57 ] } -[sub_resource type="Animation" id=35] -resource_name = "doublejump" -length = 0.3 +[sub_resource type="Animation" id=12] +resource_name = "double_jump" +length = 0.32 loop = true -step = 0.038 +step = 0.04 tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") +tracks/0/path = NodePath("Graphics/Sprite:rotation_degrees") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0, 0.038, 0.076, 0.114, 0.152, 0.19, 0.228, 0.266 ), +"times": PoolRealArray( 0, 0.08, 0.16, 0.24 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ 0.0, 90.0, 180.0, 270.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:frame") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.04, 0.08, 0.12, 0.16, 0.2, 0.24, 0.28 ), "transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 1, -"values": [ Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ), Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ), Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ), Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 14 ) ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ null ] -} -tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:rotation_degrees") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0, 0.038, 0.076, 0.114, 0.152, 0.19, 0.228, 0.266, 0.3 ), -"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), -"update": 1, -"values": [ 0.0, 0.0, 90.0, 90.0, 180.0, 180.0, 270.0, 270.0, 360.0 ] +"values": [ 24, 25, 24, 25, 24, 25, 24, 25 ] } -[sub_resource type="Animation" id=45] -resource_name = "enter hatch" +[sub_resource type="Animation" id=23] +resource_name = "drown" +length = 10.0 +step = 0.05 tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:offset") -tracks/0/interp = 2 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0, 0.1, 0.3, 0.5 ), -"transitions": PoolRealArray( 1, 1, 1, 1 ), -"update": 0, -"values": [ Vector2( 0, 0 ), Vector2( 0, -6 ), Vector2( 0, 0 ), Vector2( 0, 10 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 5 ) ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Sprite:region_rect") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0, 0.3, 0.5 ), -"transitions": PoolRealArray( 1, 1, 1 ), -"update": 0, -"values": [ Rect2( 1, 0, 20, 20 ), Rect2( 1, 0, 20, 20 ), Rect2( 1, 0, 20, 0 ) ] -} - -[sub_resource type="Animation" id=30] -resource_name = "idle" -length = 0.5 -loop = true -step = 0.06 -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") +tracks/0/path = NodePath("Graphics/Sprite:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false tracks/0/enabled = true tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), +"times": PoolRealArray( 0, 0.05, 0.1, 0.8, 0.85, 0.9, 1.1, 1.15 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), "update": 1, -"values": [ Rect2( 0, 0, 20, 20 ) ] +"values": [ 112, 113, 114, 115, 116, 117, 118, 119 ] } tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") +tracks/1/path = NodePath("Graphics/Sprite:position") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false tracks/1/enabled = true tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 3 ) ] +"times": PoolRealArray( 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 1, -10 ), Vector2( 3, -10 ), Vector2( 0, -10 ), Vector2( 0, -10 ) ] } -tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") +tracks/2/type = "method" +tracks/2/path = NodePath("StateChart") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false tracks/2/enabled = true tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ null ] -} -tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:rotation_degrees") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="Animation" id=31] -resource_name = "jump" -length = 0.5 -loop = true -step = 0.06 -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ Rect2( 1, 0, 20, 20 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 5 ) ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ null ] -} -tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:rotation_degrees") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="Animation" id=37] -resource_name = "shoot air" -length = 0.5 -step = 0.06 -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ Rect2( 1, 0, 20, 20 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 12 ) ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ null ] -} -tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:rotation_degrees") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} -tracks/5/type = "method" -tracks/5/path = NodePath(".") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/keys = { -"times": PoolRealArray( 0 ), +"times": PoolRealArray( 1.3 ), "transitions": PoolRealArray( 1 ), "values": [ { -"args": [ ], -"method": "spawn_arrow" +"args": [ "float_up" ], +"method": "send_event" } ] } - -[sub_resource type="Animation" id=36] -resource_name = "shoot grounded" -length = 0.25 -step = 0.06 -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0, 0.03, 0.06, 0.12, 0.15, 0.18 ), -"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), -"update": 1, -"values": [ Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ), Rect2( 40, 0, 20, 20 ), Rect2( 60, 0, 20, 20 ), Rect2( 80, 0, 20, 20 ), Rect2( 100, 0, 20, 20 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 10 ) ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ true ] -} tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( ), -"transitions": PoolRealArray( ), -"update": 1, -"values": [ ] -} -tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:rotation_degrees") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} -tracks/5/type = "method" -tracks/5/path = NodePath(".") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/keys = { -"times": PoolRealArray( 0.12 ), -"transitions": PoolRealArray( 1 ), -"values": [ { -"args": [ ], -"method": "spawn_arrow" -} ] -} - -[sub_resource type="Animation" id=32] -resource_name = "stab" -length = 0.3 -step = 0.06 -tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0, 0.06 ), -"transitions": PoolRealArray( 1, 1 ), -"update": 1, -"values": [ Rect2( 0, 0, 32, 32 ), Rect2( 32, 0, 32, 32 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 9 ) ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0, 0.06 ), -"transitions": PoolRealArray( 1, 1 ), -"update": 1, -"values": [ true, false ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") +tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false @@ -548,40 +339,44 @@ tracks/3/enabled = true tracks/3/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 11 ) ] +"update": 0, +"values": [ 0.0 ] } -tracks/4/type = "value" -tracks/4/path = NodePath("SwordSprite:region_rect") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0, 0.06 ), -"transitions": PoolRealArray( 1, 1 ), + +[sub_resource type="Animation" id=20] +resource_name = "duck" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), "update": 1, -"values": [ Rect2( 0, 0, 32, 32 ), Rect2( 32, 0, 32, 32 ) ] +"values": [ 32 ] } -tracks/5/type = "value" -tracks/5/path = NodePath("Sprite:rotation_degrees") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/keys = { +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 0, "values": [ 0.0 ] } -[sub_resource type="Animation" id=33] -resource_name = "walk" +[sub_resource type="Animation" id=22] +resource_name = "edge" length = 0.4 loop = true tracks/0/type = "value" -tracks/0/path = NodePath("Sprite:region_rect") +tracks/0/path = NodePath("Graphics/Sprite:frame") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/imported = false @@ -590,10 +385,10 @@ tracks/0/keys = { "times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), "transitions": PoolRealArray( 1, 1, 1, 1 ), "update": 1, -"values": [ Rect2( 0, 0, 20, 20 ), Rect2( 20, 0, 20, 20 ), Rect2( 40, 0, 20, 20 ), Rect2( 60, 0, 20, 20 ) ] +"values": [ 88, 89, 90, 91 ] } tracks/1/type = "value" -tracks/1/path = NodePath("Sprite:texture") +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") tracks/1/interp = 1 tracks/1/loop_wrap = true tracks/1/imported = false @@ -601,11 +396,210 @@ tracks/1/enabled = true tracks/1/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=15] +resource_name = "fall" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), "update": 1, -"values": [ ExtResource( 2 ) ] +"values": [ 72 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=14] +resource_name = "fall_scared" +length = 0.2 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ 80, 81 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0.00238396 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=6] +resource_name = "idle" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=8] +resource_name = "jump" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 16 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=21] +resource_name = "ladder_jump" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=17] +resource_name = "push" +length = 0.8 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.2, 0.4, 0.6 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ 64, 65, 66, 67 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=25] +resource_name = "respawn" +length = 0.4 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 120, 121, 122, 123, 124, 125, 126, 127 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] } tracks/2/type = "value" -tracks/2/path = NodePath("SwordArea/SwordHitBox:disabled") +tracks/2/path = NodePath("Graphics/Sprite:visible") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/imported = false @@ -617,7 +611,7 @@ tracks/2/keys = { "values": [ true ] } tracks/3/type = "value" -tracks/3/path = NodePath("SwordSprite:texture") +tracks/3/path = NodePath("Graphics/ZapSprite:playing") tracks/3/interp = 1 tracks/3/loop_wrap = true tracks/3/imported = false @@ -626,10 +620,10 @@ tracks/3/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), "update": 1, -"values": [ null ] +"values": [ false ] } tracks/4/type = "value" -tracks/4/path = NodePath("Sprite:rotation_degrees") +tracks/4/path = NodePath("Graphics/ZapSprite:frame") tracks/4/interp = 1 tracks/4/loop_wrap = true tracks/4/imported = false @@ -637,89 +631,331 @@ tracks/4/enabled = true tracks/4/keys = { "times": PoolRealArray( 0 ), "transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 0 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Graphics/ZapSprite:visible") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} + +[sub_resource type="Animation" id=11] +resource_name = "shoot_airborne" +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 48 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), "update": 0, "values": [ 0.0 ] } -[sub_resource type="RectangleShape2D" id=34] -extents = Vector2( 6, 7 ) +[sub_resource type="Animation" id=10] +resource_name = "shoot_grounded" +length = 0.25 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.03, 0.06, 0.12, 0.15, 0.18 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), +"update": 1, +"values": [ 40, 41, 42, 43, 44, 45 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} +tracks/2/type = "method" +tracks/2/path = NodePath(".") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.12 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "spawn_arrow" +} ] +} +tracks/3/type = "method" +tracks/3/path = NodePath("StateChart") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.25 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "shoot_end" ], +"method": "send_event" +} ] +} -[sub_resource type="Curve" id=43] -_data = [ Vector2( 0, 1 ), 0.0, -0.0636948, 0, 0, Vector2( 1, 0 ), -3.43886, 0.0, 0, 0 ] +[sub_resource type="Animation" id=19] +resource_name = "stim" +length = 0.3 +loop = true +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.15 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 1, +"values": [ 104, 105 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} -[node name="Player" type="KinematicBody2D"] -collision_layer = 0 +[sub_resource type="Animation" id=7] +resource_name = "walk" +length = 0.4 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:frame") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 1, +"values": [ 8, 9, 10, 11 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/Sprite:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ 0.0 ] +} + +[sub_resource type="Animation" id=33] +resource_name = "zap" +length = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Graphics/Sprite:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ false ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Graphics/ZapSprite:visible") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Graphics/ZapSprite:frame") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ 0 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Graphics/ZapSprite:playing") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 1, +"values": [ true ] +} +tracks/4/type = "method" +tracks/4/path = NodePath("StateChart") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ "respawn" ], +"method": "send_event" +} ] +} +tracks/5/type = "method" +tracks/5/path = NodePath(".") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "make_blood" +} ] +} + +[sub_resource type="StyleBoxEmpty" id=4] + +[node name="Player" type="KinematicBody2D" groups=["player"]] +collision_layer = 128 collision_mask = 7 +moving_platform_apply_velocity_on_leave = 2 script = ExtResource( 1 ) -max_fall_speed = 255.0 +walk_acceleration_frames = 4.0 +gravity = 700.0 +jump_force = 140.0 +double_jump_force = 124.0 -[node name="Trail" type="Node" parent="."] +[node name="Graphics" type="Node2D" parent="."] -[node name="Sprite" type="Sprite" parent="."] -material = SubResource( 38 ) -texture = ExtResource( 3 ) -region_enabled = true -region_rect = Rect2( 0, 0, 20, 20 ) -script = ExtResource( 17 ) +[node name="Sprite" type="Sprite" parent="Graphics"] +unique_name_in_owner = true +light_mask = 5 +material = SubResource( 1 ) +position = Vector2( 0, -10 ) +texture = ExtResource( 14 ) +offset = Vector2( 0, -6 ) +hframes = 8 +vframes = 20 -[node name="SwordSprite" type="Sprite" parent="."] -material = SubResource( 28 ) -region_enabled = true -region_rect = Rect2( 0, 0, 32, 32 ) -script = ExtResource( 17 ) - -[node name="Area2D" type="Area2D" parent="." groups=["player"]] -position = Vector2( 0, 3 ) -collision_layer = 11 -collision_mask = 33 - -[node name="CollisionShape2D2" type="CollisionShape2D" parent="Area2D"] -position = Vector2( 0.5, 2 ) -shape = SubResource( 6 ) - -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -position = Vector2( 0.5, 5 ) -shape = SubResource( 39 ) - -[node name="LeftShoe" type="CollisionShape2D" parent="."] -position = Vector2( -2, 10 ) -shape = SubResource( 44 ) - -[node name="RightShoe" type="CollisionShape2D" parent="."] -position = Vector2( 3, 10 ) -shape = SubResource( 44 ) - -[node name="ClimbRay" type="RayCast2D" parent="."] -position = Vector2( 0.5, 10 ) -enabled = true -cast_to = Vector2( 0, -10 ) -collision_mask = 64 -collide_with_areas = true -collide_with_bodies = false - -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] -anims/climb = SubResource( 29 ) -anims/doublejump = SubResource( 35 ) -"anims/enter hatch" = SubResource( 45 ) -anims/idle = SubResource( 30 ) -anims/jump = SubResource( 31 ) -"anims/shoot air" = SubResource( 37 ) -"anims/shoot grounded" = SubResource( 36 ) -anims/stab = SubResource( 32 ) -anims/walk = SubResource( 33 ) - -[node name="SwordArea" type="Area2D" parent="." groups=["sword"]] +[node name="Sparkles" type="CPUParticles2D" parent="Graphics/Sprite"] +unique_name_in_owner = true visible = false +light_mask = 0 +amount = 2 +lifetime = 2.0 +texture = ExtResource( 16 ) +emission_shape = 2 +emission_rect_extents = Vector2( 4, 10 ) +gravity = Vector2( 0, 0 ) +angular_velocity = 720.0 +angular_velocity_random = 1.0 +angle = 720.0 +angle_random = 1.0 +scale_amount_curve = SubResource( 34 ) +color = Color( 1, 0.972549, 0.52549, 1 ) +script = ExtResource( 15 ) -[node name="SwordHitBox" type="CollisionShape2D" parent="SwordArea"] -position = Vector2( 0, 3 ) -shape = SubResource( 34 ) -disabled = true +[node name="ZapSprite" type="AnimatedSprite" parent="Graphics"] +visible = false +material = SubResource( 32 ) +position = Vector2( 0, -10 ) +frames = SubResource( 30 ) +animation = "zap" -[node name="DeathSplatter" parent="." instance=ExtResource( 15 )] +[node name="DissolveParticles" type="CPUParticles2D" parent="Graphics"] +unique_name_in_owner = true +material = SubResource( 27 ) +position = Vector2( -9.5, -19.5 ) +emitting = false +amount = 256 +lifetime = 0.8 +one_shot = true +explosiveness = 1.0 +lifetime_randomness = 0.9 +emission_shape = 3 +emission_points = PoolVector2Array( 4, 6, 4, 7, 4, 8, 4, 9, 4, 10, 5, 2, 5, 3, 5, 4, 5, 5, 5, 6, 5, 7, 5, 8, 5, 9, 5, 10, 5, 11, 6, 1, 6, 2, 6, 3, 6, 4, 6, 5, 6, 6, 6, 7, 6, 8, 6, 9, 6, 10, 6, 11, 6, 12, 6, 13, 6, 14, 6, 15, 6, 16, 7, 0, 7, 1, 7, 2, 7, 3, 7, 4, 7, 5, 7, 6, 7, 7, 7, 8, 7, 9, 7, 10, 7, 11, 7, 12, 7, 13, 7, 14, 7, 15, 7, 16, 7, 17, 7, 18, 7, 19, 8, 0, 8, 1, 8, 2, 8, 3, 8, 4, 8, 5, 8, 6, 8, 7, 8, 8, 8, 9, 8, 10, 8, 11, 8, 12, 8, 13, 8, 14, 8, 15, 8, 16, 8, 17, 8, 18, 8, 19, 9, 0, 9, 1, 9, 2, 9, 3, 9, 4, 9, 5, 9, 6, 9, 7, 9, 8, 9, 9, 9, 10, 9, 11, 9, 12, 9, 13, 9, 14, 9, 15, 9, 16, 9, 17, 9, 18, 9, 19, 10, 0, 10, 1, 10, 2, 10, 3, 10, 4, 10, 5, 10, 6, 10, 7, 10, 8, 10, 9, 10, 10, 10, 11, 10, 12, 10, 13, 10, 14, 10, 15, 10, 16, 10, 17, 10, 18, 10, 19, 11, 0, 11, 1, 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 11, 11, 11, 12, 11, 13, 11, 14, 11, 15, 11, 16, 11, 17, 11, 18, 11, 19, 12, 0, 12, 1, 12, 2, 12, 3, 12, 4, 12, 5, 12, 6, 12, 7, 12, 8, 12, 9, 12, 10, 12, 11, 12, 12, 12, 13, 12, 14, 12, 15, 12, 16, 12, 17, 12, 18, 12, 19, 13, 0, 13, 1, 13, 2, 13, 3, 13, 4, 13, 5, 13, 6, 13, 7, 13, 8, 13, 9, 13, 10, 13, 11, 13, 12, 13, 13, 13, 14, 13, 15, 13, 16, 13, 17, 13, 18, 13, 19, 14, 1, 14, 2, 14, 3, 14, 4, 14, 5, 14, 6, 14, 7, 14, 8, 14, 9, 14, 10, 14, 11, 15, 2, 15, 3, 15, 4, 15, 5, 15, 6, 15, 7, 15, 8, 15, 9, 15, 10, 15, 11 ) +emission_colors = PoolColorArray( 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.372549, 0.623529, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.372549, 1, 1, 0.87451, 0.372549, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.372549, 0.623529, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.623529, 0.623529, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.372549, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.372549, 0.623529, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.372549, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.372549, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.121569, 0.372549, 1, 1, 0.121569, 0.623529, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.372549, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.623529, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.623529, 0.623529, 1, 1, 0.623529, 0.121569, 1, 1, 0.623529, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.372549, 1, 1, 0.87451, 0.372549, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.121569, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1, 0.87451, 0.121569, 1, 1 ) +direction = Vector2( 0, -1 ) +spread = 15.0 +gravity = Vector2( 0, 0 ) +initial_velocity = 4.0 +initial_velocity_random = 1.0 -[node name="DustParticles" type="CPUParticles2D" parent="."] -position = Vector2( 0, 12 ) +[node name="ArrowPosition" type="Position2D" parent="Graphics"] +unique_name_in_owner = true +position = Vector2( 5, -7 ) +__meta__ = { +"_gizmo_extents_": 2.0 +} + +[node name="DeathSplatterPosition" type="Position2D" parent="Graphics"] +unique_name_in_owner = true +position = Vector2( 0, -10 ) +__meta__ = { +"_gizmo_extents_": 2.0 +} + +[node name="DustParticles" type="CPUParticles2D" parent="Graphics"] +unique_name_in_owner = true +position = Vector2( 0, 2 ) z_index = 1 emitting = false amount = 5 @@ -728,7 +964,7 @@ one_shot = true explosiveness = 0.9 fract_delta = false local_coords = false -texture = ExtResource( 16 ) +texture = ExtResource( 18 ) emission_shape = 2 emission_rect_extents = Vector2( 5, 0 ) direction = Vector2( 0, -1 ) @@ -740,12 +976,623 @@ angle = 720.0 angle_random = 1.0 scale_amount = 0.25 scale_amount_random = 0.5 -scale_amount_curve = SubResource( 43 ) +scale_amount_curve = SubResource( 13 ) +color = Color( 0.956863, 0.92549, 0.831373, 1 ) -[node name="IframeTimer" type="Timer" parent="."] +[node name="PushableDetector" type="RayCast2D" parent="Graphics"] +unique_name_in_owner = true +position = Vector2( 3, -4 ) +cast_to = Vector2( 1, 0 ) +collision_mask = 4 + +[node name="EdgeDetector" type="RayCast2D" parent="Graphics"] +position = Vector2( 1, -1 ) +enabled = true +cast_to = Vector2( 0, 5 ) +collision_mask = 5 + +[node name="CFox" type="Sprite" parent="Graphics"] +unique_name_in_owner = true +visible = false +material = SubResource( 24 ) +position = Vector2( 0, -10 ) +texture = ExtResource( 4 ) + +[node name="BodyShape" type="CollisionShape2D" parent="."] +unique_name_in_owner = true +position = Vector2( 0.5, -5 ) +shape = SubResource( 2 ) + +[node name="Hitbox" type="Area2D" parent="." groups=["player_hitbox"]] +unique_name_in_owner = true +visible = false +collision_layer = 11 +collision_mask = 32 + +[node name="GroundedShape" type="CollisionShape2D" parent="Hitbox"] +unique_name_in_owner = true +position = Vector2( 0.5, -5 ) +shape = SubResource( 3 ) + +[node name="AirborneShape" type="CollisionShape2D" parent="Hitbox"] +unique_name_in_owner = true +position = Vector2( 0.5, -7.5 ) +shape = SubResource( 16 ) + +[node name="LadderDetector" type="RayCast2D" parent="."] +unique_name_in_owner = true +position = Vector2( 0.5, -0.5 ) +enabled = true +cast_to = Vector2( 0, -9.5 ) +collision_mask = 64 +collide_with_areas = true +collide_with_bodies = false + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 5 ) +anims/blink = SubResource( 18 ) +anims/climb = SubResource( 31 ) +anims/double_jump = SubResource( 12 ) +anims/drown = SubResource( 23 ) +anims/duck = SubResource( 20 ) +anims/edge = SubResource( 22 ) +anims/fall = SubResource( 15 ) +anims/fall_scared = SubResource( 14 ) +anims/idle = SubResource( 6 ) +anims/jump = SubResource( 8 ) +anims/ladder_jump = SubResource( 21 ) +anims/push = SubResource( 17 ) +anims/respawn = SubResource( 25 ) +anims/shoot_airborne = SubResource( 11 ) +anims/shoot_grounded = SubResource( 10 ) +anims/stim = SubResource( 19 ) +anims/walk = SubResource( 7 ) +anims/zap = SubResource( 33 ) + +[node name="StateChart" type="Node" parent="."] +script = ExtResource( 6 ) +auto_initialize = false + +[node name="Root" type="Node" parent="StateChart"] +script = ExtResource( 5 ) +__meta__ = { +"_editor_description_": "" +} + +[node name="Movement" type="Node" parent="StateChart/Root"] +process_priority = 10 +script = ExtResource( 9 ) +__meta__ = { +"_editor_description_": "higher process priority so it can do move_and_slide after everything else" +} +initial_state = NodePath("Grounded") + +[node name="On Drown" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 10 ) +to = NodePath("../Inactive") +event = "drown" + +[node name="On Zapped" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 10 ) +to = NodePath("../Inactive") +event = "zapped" + +[node name="On Died" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 10 ) +to = NodePath("../Appearing") +event = "died" + +[node name="On StartTeleport" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 10 ) +to = NodePath("../Teleporting") +event = "start_teleport" + +[node name="Grounded" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 9 ) +__meta__ = { +"_editor_description_": "is on the ground" +} +initial_state = NodePath("CanWalk") + +[node name="On AirborneBeta" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 10 ) +to = NodePath("../../Airborne/Falling/BetaFalling") +event = "airborne" +guard_expression = "beta_gameplay" + +[node name="On Airborne" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 10 ) +to = NodePath("../../Airborne/Falling/CoyoteFalling") +event = "airborne" + +[node name="On Jump" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 10 ) +__meta__ = { +"_editor_description_": "enter jump state when the jump button is pressed" +} +to = NodePath("../../Airborne/Jump/NormalJump") +event = "jump" + +[node name="On Duck" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 10 ) +to = NodePath("../Ducking") +event = "duck_pressed" + +[node name="On LadderTouched" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 10 ) +to = NodePath("../../Climbing") +event = "ladder_touched" + +[node name="CanWalk" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 9 ) +__meta__ = { +"_editor_description_": "can walk by moving left and right" +} +initial_state = NodePath("Still") + +[node name="On Shoot" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] +script = ExtResource( 10 ) +to = NodePath("../../Shooting") +event = "shoot" +guard_expression = "can_shoot" + +[node name="On PushStart" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] +script = ExtResource( 10 ) +to = NodePath("../../Pushing") +event = "push_start" + +[node name="Still" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] +script = ExtResource( 11 ) + +[node name="On WalkStart" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Still"] +script = ExtResource( 10 ) +to = NodePath("../../Walking") +event = "walk_start" + +[node name="On Edge" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Still"] +script = ExtResource( 10 ) +to = NodePath("../../Edge") +event = "edge" + +[node name="On Timeout" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Still"] +script = ExtResource( 10 ) +to = NodePath("../../Blinking") +delay = 1.0 + +[node name="Walking" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] +script = ExtResource( 11 ) + +[node name="On WalkStop" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Walking"] +script = ExtResource( 10 ) +to = NodePath("../../Still") +event = "walk_stop" + +[node name="Blinking" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] +unique_name_in_owner = true +script = ExtResource( 11 ) + +[node name="On Timeout" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Blinking"] +script = ExtResource( 10 ) +to = NodePath("../../Stimming") +delay = 10.0 + +[node name="On WalkStart" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Blinking"] +script = ExtResource( 10 ) +to = NodePath("../../Walking") +event = "walk_start" + +[node name="Stimming" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] +script = ExtResource( 11 ) + +[node name="On WalkStart" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Stimming"] +script = ExtResource( 10 ) +to = NodePath("../../Walking") +event = "walk_start" + +[node name="Edge" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] +script = ExtResource( 11 ) + +[node name="On WalkStart" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Edge"] +script = ExtResource( 10 ) +to = NodePath("../../Walking") +event = "walk_start" + +[node name="On OffEdge" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Edge"] +script = ExtResource( 10 ) +to = NodePath("../../Still") +event = "off_edge" + +[node name="Ducking" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 11 ) + +[node name="On DuckReleased" type="Node" parent="StateChart/Root/Movement/Grounded/Ducking"] +script = ExtResource( 10 ) +to = NodePath("../../CanWalk/Still") +event = "duck_released" + +[node name="On Shoot" type="Node" parent="StateChart/Root/Movement/Grounded/Ducking"] +script = ExtResource( 10 ) +to = NodePath("../../Shooting") +event = "shoot" +guard_expression = "can_shoot" + +[node name="On Jump" type="Node" parent="StateChart/Root/Movement/Grounded/Ducking"] +script = ExtResource( 10 ) +__meta__ = { +"_editor_description_": "enter jump state when the jump button is pressed" +} +to = NodePath("../../../Airborne/Jump/NormalJump") +event = "jump" + +[node name="Shooting" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 11 ) +consumed_events = [ "jump", "duck_pressed" ] + +[node name="On ShootEnd" type="Node" parent="StateChart/Root/Movement/Grounded/Shooting"] +script = ExtResource( 10 ) +to = NodePath("../../CanWalk") +event = "shoot_end" + +[node name="Pushing" type="Node" parent="StateChart/Root/Movement/Grounded"] +script = ExtResource( 11 ) + +[node name="On PushStop" type="Node" parent="StateChart/Root/Movement/Grounded/Pushing"] +script = ExtResource( 10 ) +to = NodePath("../../CanWalk") +event = "push_stop" + +[node name="Airborne" type="Node" parent="StateChart/Root/Movement"] +process_priority = 5 +script = ExtResource( 9 ) +__meta__ = { +"_editor_description_": "SG is in the air and falling DOWN, better think fast!" +} +initial_state = NodePath("Falling") + +[node name="On Jump If Redfeather" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 10 ) +__meta__ = { +"_editor_description_": "enter double jump state when the jump button is pressed" +} +to = NodePath("../Jump/NormalJump") +event = "jump" +guard_expression = "red_feather" + +[node name="On Grounded" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 10 ) +to = NodePath("../../Grounded") +event = "grounded" + +[node name="On Shoot" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 10 ) +to = NodePath("../AirShooting") +event = "shoot" +guard_expression = "can_shoot" + +[node name="On LadderTouched" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 10 ) +to = NodePath("../../Climbing") +event = "ladder_touched" + +[node name="Jump" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 9 ) +initial_state = NodePath("NormalJump") + +[node name="On Jump" type="Node" parent="StateChart/Root/Movement/Airborne/Jump"] +script = ExtResource( 10 ) +__meta__ = { +"_editor_description_": "enter double jump state when the jump button is pressed" +} +to = NodePath("../../DoubleJump") +event = "jump" + +[node name="On JumpPeak" type="Node" parent="StateChart/Root/Movement/Airborne/Jump"] +script = ExtResource( 10 ) +to = NodePath("../../Falling/NormalFalling") +event = "jump_peak" + +[node name="NormalJump" type="Node" parent="StateChart/Root/Movement/Airborne/Jump"] +script = ExtResource( 11 ) + +[node name="On JumpReleased" type="Node" parent="StateChart/Root/Movement/Airborne/Jump/NormalJump"] +script = ExtResource( 10 ) +__meta__ = { +"_editor_description_": "" +} +to = NodePath("../../../Falling/NormalFalling") +event = "jump_released" + +[node name="LadderJump" type="Node" parent="StateChart/Root/Movement/Airborne/Jump"] +script = ExtResource( 11 ) + +[node name="Falling" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 9 ) +initial_state = NodePath("NormalFalling") + +[node name="On Jump" type="Node" parent="StateChart/Root/Movement/Airborne/Falling"] +script = ExtResource( 10 ) +__meta__ = { +"_editor_description_": "enter double jump state when the jump button is pressed" +} +to = NodePath("../../DoubleJump") +event = "jump" + +[node name="CoyoteFalling" type="Node" parent="StateChart/Root/Movement/Airborne/Falling"] +script = ExtResource( 11 ) + +[node name="On Jump" type="Node" parent="StateChart/Root/Movement/Airborne/Falling/CoyoteFalling"] +script = ExtResource( 10 ) +__meta__ = { +"_editor_description_": "enter jump state when the jump button is pressed" +} +to = NodePath("../../../Jump/NormalJump") +event = "jump" + +[node name="On CoyoteTimeout" type="Node" parent="StateChart/Root/Movement/Airborne/Falling/CoyoteFalling"] +script = ExtResource( 10 ) +to = NodePath("../../NormalFalling") +delay = 0.067 + +[node name="NormalFalling" type="Node" parent="StateChart/Root/Movement/Airborne/Falling"] +script = ExtResource( 11 ) + +[node name="BetaFalling" type="Node" parent="StateChart/Root/Movement/Airborne/Falling"] +script = ExtResource( 11 ) + +[node name="ScaredFalling" type="Node" parent="StateChart/Root/Movement/Airborne/Falling"] +script = ExtResource( 11 ) + +[node name="DoubleJump" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 11 ) + +[node name="AirShooting" type="Node" parent="StateChart/Root/Movement/Airborne"] +script = ExtResource( 11 ) + +[node name="Climbing" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 11 ) +__meta__ = { +"_editor_description_": "stuck to ladder" +} + +[node name="On LadderPeak" type="Node" parent="StateChart/Root/Movement/Climbing"] +script = ExtResource( 10 ) +to = NodePath("../../Airborne/Jump/NormalJump") +event = "ladder_peak" + +[node name="On LadderJump" type="Node" parent="StateChart/Root/Movement/Climbing"] +script = ExtResource( 10 ) +to = NodePath("../../Airborne/Jump/NormalJump") +event = "ladder_jump" + +[node name="On LadderDetach" type="Node" parent="StateChart/Root/Movement/Climbing"] +script = ExtResource( 10 ) +to = NodePath("../../Airborne/Falling/NormalFalling") +event = "ladder_detach" + +[node name="Inactive" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 11 ) +__meta__ = { +"_editor_description_": "player can not move or do anything, immobile" +} + +[node name="On GetReal" type="Node" parent="StateChart/Root/Movement/Inactive"] +script = ExtResource( 10 ) +to = NodePath("../../Grounded") +event = "get_real" + +[node name="On Appear" type="Node" parent="StateChart/Root/Movement/Inactive"] +script = ExtResource( 10 ) +to = NodePath("../../Appearing") +event = "appear" + +[node name="On Respawn" type="Node" parent="StateChart/Root/Movement/Inactive"] +script = ExtResource( 10 ) +to = NodePath("../../Appearing") +event = "respawn" + +[node name="Teleporting" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 11 ) +__meta__ = { +"_editor_description_": "player can not move or do anything, immobile" +} + +[node name="On GetReal" type="Node" parent="StateChart/Root/Movement/Teleporting"] +script = ExtResource( 10 ) +to = NodePath("../../Grounded") +event = "get_real" + +[node name="Appearing" type="Node" parent="StateChart/Root/Movement"] +script = ExtResource( 11 ) + +[node name="On Delay" type="Node" parent="StateChart/Root/Movement/Appearing"] +script = ExtResource( 10 ) +to = NodePath("../../Grounded") +delay = 0.4 + +[node name="Health" type="Node" parent="StateChart/Root"] +script = ExtResource( 9 ) +initial_state = NodePath("Vulnerable") + +[node name="Vulnerable" type="Node" parent="StateChart/Root/Health"] +script = ExtResource( 11 ) + +[node name="On Hurt" type="Node" parent="StateChart/Root/Health/Vulnerable"] +script = ExtResource( 10 ) +to = NodePath("../../Dead") +event = "hurt" + +[node name="On Drown" type="Node" parent="StateChart/Root/Health/Vulnerable"] +script = ExtResource( 10 ) +to = NodePath("../../Drowning") +event = "drown" + +[node name="On BecomeInvulnerable" type="Node" parent="StateChart/Root/Health/Vulnerable"] +script = ExtResource( 10 ) +to = NodePath("../../Invulnerable") +event = "become_invulnerable" + +[node name="On Zapped" type="Node" parent="StateChart/Root/Health/Vulnerable"] +script = ExtResource( 10 ) +to = NodePath("../../Zapping") +event = "zapped" + +[node name="Invulnerable" type="Node" parent="StateChart/Root/Health"] +script = ExtResource( 11 ) + +[node name="Respawn" type="Node" parent="StateChart/Root/Health"] +script = ExtResource( 11 ) + +[node name="If Iframes" type="Node" parent="StateChart/Root/Health/Respawn"] +script = ExtResource( 10 ) +to = NodePath("../../Vulnerable") +delay = 0.5 +guard_expression = "use_iframes" + +[node name="On Timeout" type="Node" parent="StateChart/Root/Health/Respawn"] +script = ExtResource( 10 ) +to = NodePath("../../Vulnerable") +guard_expression = "!use_iframes" + +[node name="Dead" type="Node" parent="StateChart/Root/Health"] +script = ExtResource( 11 ) + +[node name="On Respawn" type="Node" parent="StateChart/Root/Health/Dead"] +script = ExtResource( 10 ) +to = NodePath("../../Respawn") +event = "respawn" +guard_expression = "can_respawn" + +[node name="Drowning" type="Node" parent="StateChart/Root/Health"] +script = ExtResource( 9 ) +initial_state = NodePath("DrownStart") + +[node name="On Respawn" type="Node" parent="StateChart/Root/Health/Drowning"] +script = ExtResource( 10 ) +to = NodePath("../../Respawn") +event = "respawn" +guard_expression = "can_respawn" + +[node name="DrownStart" type="Node" parent="StateChart/Root/Health/Drowning"] +script = ExtResource( 11 ) + +[node name="On FloatUp" type="Node" parent="StateChart/Root/Health/Drowning/DrownStart"] +script = ExtResource( 10 ) +to = NodePath("../../FloatingUp") +event = "float_up" + +[node name="FloatingUp" type="Node" parent="StateChart/Root/Health/Drowning"] +script = ExtResource( 11 ) + +[node name="Zapping" type="Node" parent="StateChart/Root/Health"] +script = ExtResource( 11 ) + +[node name="On Respawn" type="Node" parent="StateChart/Root/Health/Zapping"] +script = ExtResource( 10 ) +to = NodePath("../../Respawn") +event = "respawn" +guard_expression = "can_respawn" + +[node name="StateDebugLayer" type="CanvasLayer" parent="."] +layer = 128 + +[node name="StateChartDebug" type="Tree" parent="StateDebugLayer"] +visible = false +anchor_left = 1.0 +anchor_right = 1.0 +margin_left = -147.0 +margin_bottom = 137.0 +theme = ExtResource( 7 ) +custom_styles/bg = SubResource( 4 ) +script = ExtResource( 8 ) + +[node name="OxygenTimer" type="Timer" parent="."] +wait_time = 20.0 + +[node name="JumpPeakTimer" type="Timer" parent="."] +wait_time = 0.2 + +[node name="LabelLayerHack" type="Node2D" parent="."] +z_index = 1000 + +[node name="LowOxygenLabel" type="Label" parent="LabelLayerHack"] +unique_name_in_owner = true +material = ExtResource( 25 ) +margin_left = -8.0 +margin_top = -32.0 +margin_right = 8.0 +margin_bottom = -18.0 +theme = ExtResource( 7 ) +align = 1 + +[node name="ShieldTimer" type="Timer" parent="."] wait_time = 0.5 -[connection signal="body_entered" from="Area2D" to="." method="_on_Area2D_body_entered"] -[connection signal="animation_finished" from="AnimationPlayer" to="." method="_on_AnimationPlayer_animation_finished"] -[connection signal="area_entered" from="SwordArea" to="." method="_on_SwordArea_area_entered"] -[connection signal="timeout" from="IframeTimer" to="." method="_on_IframeTimer_timeout"] +[node name="Shield" type="Polygon2D" parent="."] +visible = false +position = Vector2( 1, -1 ) +scale = Vector2( 1.06667, 0.727273 ) +color = Color( 0.0352941, 0.796078, 0.854902, 0.470588 ) +polygon = PoolVector2Array( 0, -29, -8, -14.3333, -1, 4, 7, -14 ) + +[node name="ShieldCooldown" type="Timer" parent="."] +wait_time = 2.0 +one_shot = true + +[connection signal="tree_exited" from="." to="." method="_on_Player_tree_exited"] +[connection signal="body_entered" from="Hitbox" to="." method="_on_Hitbox_body_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement" to="." method="_process_movement"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded" to="." method="_on_Grounded_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Grounded" to="." method="_process_grounded"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Grounded/CanWalk" to="." method="_process_horizontal_movement_grounded"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Grounded/CanWalk" to="." method="_process_can_walk"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Still" to="." method="_on_Still_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Walking" to="." method="_on_Walking_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Blinking" to="." method="_on_Blinking_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Stimming" to="." method="_on_Stimming_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Edge" to="." method="_on_Edge_state_entered"] +[connection signal="event_received" from="StateChart/Root/Movement/Grounded/Ducking" to="." method="_on_Ducking_event_received"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/Ducking" to="." method="_on_Ducking_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/Shooting" to="." method="_on_Shooting_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/Pushing" to="." method="_on_Pushing_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Grounded/Pushing" to="." method="_process_pushing"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne" to="." method="reset_fall_speed"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne" to="." method="_on_Airborne_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne" to="." method="_process_gravity"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/Jump" to="." method="_process_horizontal_movement"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/Jump" to="." method="_process_jump"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Jump/NormalJump" to="." method="_on_NormalJump_state_entered"] +[connection signal="state_exited" from="StateChart/Root/Movement/Airborne/Jump/NormalJump" to="." method="_on_NormalJump_state_exited"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Jump/LadderJump" to="." method="_on_LadderJump_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/CoyoteFalling" to="." method="_on_CoyoteFalling_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/Falling/CoyoteFalling" to="." method="_process_horizontal_movement"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/NormalFalling" to="." method="_on_NormalFalling_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/Falling/NormalFalling" to="." method="_process_horizontal_movement"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/BetaFalling" to="." method="_on_NormalFalling_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/BetaFalling" to="." method="_on_BetaFalling_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/ScaredFalling" to="." method="_on_ScaredFalling_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/DoubleJump" to="." method="_on_DoubleJump_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/DoubleJump" to="." method="reset_fall_speed"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/DoubleJump" to="." method="_process_horizontal_movement"] +[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/AirShooting" to="." method="_on_AirShooting_state_entered"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/AirShooting" to="." method="_process_horizontal_movement"] +[connection signal="state_entered" from="StateChart/Root/Movement/Climbing" to="." method="_on_Climbing_state_entered"] +[connection signal="state_exited" from="StateChart/Root/Movement/Climbing" to="." method="_on_Climbing_state_exited"] +[connection signal="state_physics_processing" from="StateChart/Root/Movement/Climbing" to="." method="_process_climbing"] +[connection signal="state_entered" from="StateChart/Root/Movement/Inactive" to="." method="_on_Inactive_state_entered"] +[connection signal="state_exited" from="StateChart/Root/Movement/Inactive" to="." method="_on_Inactive_state_exited"] +[connection signal="state_entered" from="StateChart/Root/Movement/Teleporting" to="." method="_on_Inactive_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Teleporting" to="." method="_on_Teleporting_state_entered"] +[connection signal="state_exited" from="StateChart/Root/Movement/Teleporting" to="." method="_on_Inactive_state_exited"] +[connection signal="state_entered" from="StateChart/Root/Movement/Appearing" to="." method="_on_Inactive_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Movement/Appearing" to="." method="_on_Appearing_state_entered"] +[connection signal="state_exited" from="StateChart/Root/Movement/Appearing" to="." method="_on_Inactive_state_exited"] +[connection signal="state_entered" from="StateChart/Root/Health/Respawn" to="." method="_on_Respawn_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Health/Dead" to="." method="_on_Dead_state_entered"] +[connection signal="state_entered" from="StateChart/Root/Health/Drowning" to="." method="_on_Drowning_state_entered"] +[connection signal="state_exited" from="StateChart/Root/Health/Drowning" to="." method="_on_Drowning_state_exited"] +[connection signal="state_physics_processing" from="StateChart/Root/Health/Drowning/FloatingUp" to="." method="_process_floating_up"] +[connection signal="state_entered" from="StateChart/Root/Health/Zapping" to="." method="_on_Zapping_state_entered"] +[connection signal="state_exited" from="StateChart/Root/Health/Zapping" to="." method="_on_Zapping_state_exited"] +[connection signal="timeout" from="OxygenTimer" to="." method="_on_OxygenTimer_timeout"] +[connection signal="timeout" from="ShieldTimer" to="." method="_on_ShieldTimer_timeout"] +[connection signal="timeout" from="ShieldCooldown" to="." method="_on_ShieldCooldown_timeout"] diff --git a/objects/player/player_scholar.gd b/objects/player/player_scholar.gd deleted file mode 100644 index 3ad1301..0000000 --- a/objects/player/player_scholar.gd +++ /dev/null @@ -1,332 +0,0 @@ -extends KinematicBody2D - -# SIGNALS # -signal died() - -# CONSTANTS # -const ArrowProjectile = preload("res://objects/player/arrow_projectile.tscn") -const DeathSplatter = preload("res://objects/player/player_death_particles.tscn") - -# EXPORTS # -## horizontal movement speed -export var walk_speed: float = 50.0 -## speed to push pushable objects at -export var push_speed: float = 25.0 -## climbing speed -export var climb_speed: float = 39.0 -## gravity force -export var gravity: float = 720.0 -## SG's terminal velocity -export var max_fall_speed: float = 255.0 -## upward added by jump -export var jump_force: float = 150.0 -## proportion of remaining force retained when jump is released -export var jump_release_force: float = 0.25 -## impulse added when double jumping -export var double_jump_force: float = 122.0 -## blinking time -export var blinking_time: float = 10.0 - -# velocity -var velocity: Vector2 = Vector2.ZERO -# snap vector -var snap: Vector2 = Vector2.ZERO -# ladder currently attached to -var _attached_ladder: Node2D = null - - -# NODE REFERENCES # -onready var state_chart: StateChart = $StateChart -onready var animation_player: AnimationPlayer = $AnimationPlayer -onready var graphics: Node2D = $Graphics -onready var sprite: Sprite = $"%Sprite" -onready var arrow_position: Position2D = $"%ArrowPosition" -onready var dust_particles: CPUParticles2D = $"%DustParticles" -onready var grounded_shape: CollisionShape2D = $"%GroundedShape" -onready var airborne_shape: CollisionShape2D = $"%AirborneShape" -onready var ladder_detector: RayCast2D = $"%LadderDetector" -onready var death_splatter_position: Position2D = $"%DeathSplatterPosition" -onready var pushable_detector: RayCast2D = $"%PushableDetector" - - -# OVERRIDES # -func _ready() -> void: - # death handling - Game.respawn_point = global_position - connect("died", Game, "_on_player_died") - # to detect floor on first frame - move_and_slide(Vector2(0.0, 1.0), Vector2.UP) - # make certain pushable detector will not detect player - pushable_detector.add_exception(self) - # set up state chart - state_chart.initialize() - state_chart.set_guard_property("can_respawn", true) - # state chart debug - $StateDebugLayer/StateChartDebug.target = state_chart - -func _physics_process(delta: float) -> void: - # update transition guard properties - # whether player can currently shoot an arrow - var can_shoot = Game.arrows > 0 and get_tree().get_nodes_in_group("player_arrow").size() == 0 - state_chart.set_guard_property("can_shoot", can_shoot) - - # check for and propagate input events - if Input.is_action_just_pressed("jump"): # jumping - state_chart.send_event("jump") - if Input.is_action_just_pressed("shoot"): # shooting - state_chart.send_event("shoot") - - # send relevant events - if is_on_floor(): # check on floor status - state_chart.send_event("grounded") - else: - state_chart.send_event("airborne") - - # check if in contact with ladder - if ladder_detector.is_colliding(): - state_chart.send_event("ladder_touched") - - -# HELPER FUNCTIONS # -## spawns an arrow -func spawn_arrow() -> void: - var arrow = ArrowProjectile.instance() - arrow.global_position = arrow_position.global_position - arrow.direction = sign(arrow_position.global_position.x - global_position.x) - arrow.add_to_group("player_arrow") - get_parent().add_child(arrow) - Audio.play_sound(Audio.a_shoot, Audio.ac_jump) - -func die() -> void: - state_chart.send_event("hurt") - - -# STATE ENTERS/EXITS # -func _on_Grounded_state_entered() -> void: - # still jump if pressed frame hit ground - if Input.is_action_just_pressed("jump"): - print("BOING") - state_chart.send_event("jump") - # toggle hurtbox shapes - grounded_shape.disabled = false - airborne_shape.disabled = true - snap.y = 2.5 # snap when in grounded state - velocity.y = 1.0 - -func _on_Still_state_entered() -> void: - animation_player.play("idle") - -func _on_Walking_state_entered() -> void: - animation_player.play("walk") - -func _on_Blinking_state_entered() -> void: - if $"%Blinking".active: - animation_player.play("blink") - var blink_timer = get_tree().create_timer(rand_range(1.0, 2.0), false) - blink_timer.connect("timeout", self,"_on_Blinking_state_entered") - -func _on_Stimming_state_entered() -> void: - animation_player.play("stim") - -func _on_Pushing_state_entered() -> void: - animation_player.play("push") - -func _on_Airborne_state_entered() -> void: - grounded_shape.disabled = true - airborne_shape.disabled = false - snap.y = 0.0 # do not snap when in air - velocity.y = 0.0 - -func _on_NormalJump_state_entered() -> void: - velocity.y = -jump_force - Audio.play_sound(Audio.a_jump, Audio.ac_jump) - animation_player.play("jump") - dust_particles.restart() - -func _on_NormalJump_state_exited() -> void: - # add bit of force proportional to how much of the jump is left - if Input.is_action_just_released("jump"): - var factor = inverse_lerp(0.0, -jump_force, velocity.y) - velocity.y = -jump_force * factor * jump_release_force - -func _on_LadderJump_state_entered() -> void: - velocity.y = -jump_force - Audio.play_sound(Audio.a_jump, Audio.ac_jump) - animation_player.play("jump") - -func _on_DoubleJump_state_entered() -> void: - velocity.y = -double_jump_force - Audio.play_sound(Audio.a_doublejump, Audio.ac_jump) - animation_player.play("double_jump") - -func _on_CoyoteFalling_state_entered() -> void: - velocity.x = 0.0 - animation_player.play("fall") - -func _on_NormalFalling_state_entered() -> void: - animation_player.play("fall") - -func _on_ScaredFalling_state_entered() -> void: - velocity.x = 0.0 - animation_player.play("fall_scared") - -func _on_Shooting_state_entered() -> void: - velocity.x = 0.0 - animation_player.play("shoot_grounded") - -func _on_AirShooting_state_entered() -> void: - spawn_arrow() - animation_player.play("shoot_airborne") - -func _on_Climbing_state_entered() -> void: - if ladder_detector.get_collider().is_in_group("ladder"): - _attached_ladder = ladder_detector.get_collider() - # move a tiny bit up if on ground to detach from falling blocks - if is_on_floor(): - global_position.y -= get("collision/safe_margin") - velocity = Vector2.ZERO - snap = Vector2.ZERO - if global_position.x < _attached_ladder.middle: - global_position.x = _attached_ladder.left_snap - graphics.scale.x = 1.0 - else: - global_position.x = _attached_ladder.right_snap - graphics.scale.x = -1.0 - animation_player.play("climb") - -func _on_Climbing_state_exited() -> void: - _attached_ladder = null - animation_player.playback_speed = 1.0 # restore playback speed - Audio.ac_climb.stream = null # stop audio - -# all the stuff that happens when they DIE -func _on_Dead_state_entered() -> void: - # send signals - emit_signal("died") - state_chart.send_event("died") - # spawn death particles - var particles = DeathSplatter.instance() - particles.global_position = death_splatter_position.global_position - particles.emitting = true - get_parent().add_child(particles) - # fade into the ether - graphics.visible = false - state_chart.send_event("respawn") - -func _on_Respawn_state_entered() -> void: - global_position = Game.respawn_point - graphics.visible = true - state_chart.call_deferred("send_event", "get_real") - - -# STATE PROCESSING # -## when on ground -func _process_grounded(delta: float) -> void: - # make sure is_on_floor detected still - velocity.y = 1.0 - -## called when player can move left and rightpass # Repass # Rpass # Replace with function body.eplace with function body.place with function body. -func _process_horizontal_movement(delta: float) -> void: - var input_dir = sign(Input.get_axis("ui_left", "ui_right")) # sign() to normalize - velocity.x = input_dir * walk_speed - if input_dir != 0.0: - graphics.scale.x = input_dir - -## walk/idle state -func _process_can_walk(delta: float) -> void: - if sign(Input.get_axis("ui_left", "ui_right")) != 0.0: - state_chart.send_event("walk_start") - else: - state_chart.send_event("walk_stop") - -## rubbing up against a wall or pushing an object -func _process_pushing(delta: float) -> void: - if not is_on_wall(): - state_chart.send_event("push_stop") - var input_dir = sign(Input.get_axis("ui_left", "ui_right")) - if input_dir != 0.0: - pushable_detector.force_raycast_update() - if pushable_detector.is_colliding(): - var col = pushable_detector.get_collider() - if col.is_in_group("pushable"): - col.push(input_dir * push_speed) - velocity.x = input_dir * push_speed * 2.0 - else: - state_chart.send_event("push_stop") - -## climbing on ladders -func _process_climbing(delta: float) -> void: - # climbing movement - var input_dir = sign(Input.get_axis("ui_up", "ui_down")) - move_and_slide(Vector2(0.0, input_dir * climb_speed), Vector2.UP) # move - animation_player.playback_speed = abs(input_dir) # play/pause animation - - # play sound - if input_dir < 0.0: - if Audio.ac_climb.stream != Audio.a_climb_up: - Audio.play_sound(Audio.a_climb_up, Audio.ac_climb) - if Audio.ac_climb.get_playback_position() >= Audio.a_climb_up.get_length(): - Audio.ac_climb.play() - elif input_dir > 0.0: - if Audio.ac_climb.stream != Audio.a_climb_down: - Audio.play_sound(Audio.a_climb_down, Audio.ac_climb) - if Audio.ac_climb.get_playback_position() >= Audio.a_climb_down.get_length(): - Audio.ac_climb.play() - else: - Audio.ac_climb.stream = null - -# # switching sides of ladder -# if global_position.x < _attached_ladder.middle and Input.is_action_just_pressed("ui_right"): -# global_position.x = _attached_ladder.right_snap -# graphics.scale.x = -1SimCity.0SimCitySimCity -# elif Input.is_action_just_pressed("ui_left"): -# global_position.x = _attached_ladder.left_snap -# graphics.scale.x = 1.0 - - # check if still on ladder - ladder_detector.force_raycast_update() - if ladder_detector.get_collider() != _attached_ladder: - if input_dir == -1.0: - state_chart.send_event("ladder_jump") - else: - state_chart.send_event("ladder_detach") - else: - if Input.is_action_just_pressed("jump"): - var horizontal_dir = sign(Input.get_axis("ui_left", "ui_right")) - if sign(_attached_ladder.middle - global_position.x) != horizontal_dir: - global_position.x -= graphics.scale.x * 3.0 - state_chart.send_event("ladder_jump") - if Input.is_action_just_pressed("shoot"): - global_position.x -= graphics.scale.x * 3.0 - state_chart.send_event("ladder_detach") - -func _process_jump(delta: float) -> void: - if velocity.y >= 0.0: - state_chart.send_event("jump_peak") - if not Input.is_action_pressed("jump"): - state_chart.send_event("jump_released") - -## called by states SG will fall during -func _process_gravity(delta: float) -> void: - velocity.y = min(velocity.y + gravity * delta, max_fall_speed) - -## called after all other physics things -func _process_movement(delta: float) -> void: - # apply velocity and react to collisions - velocity = move_and_slide_with_snap(velocity, snap, Vector2.UP) - - # deal with that STUPID landing exactly on corner bug - var col = get_last_slide_collision() - if col != null: - if col.remainder.y >= 1.0 and col.normal.y == 0.0: - position.x += col.normal.x * 0.001 - - # check for wall - if is_on_wall(): - state_chart.send_event("push_start") - - -# COLLISION CALLBACKS # -func _on_Hitbox_body_entered(body: Node) -> void: - if body.is_in_group("death"): - die() diff --git a/objects/player/player_scholar.tscn b/objects/player/player_scholar.tscn deleted file mode 100644 index 158d475..0000000 --- a/objects/player/player_scholar.tscn +++ /dev/null @@ -1,1188 +0,0 @@ -[gd_scene load_steps=43 format=2] - -[ext_resource path="res://objects/player/player_scholar.gd" type="Script" id=1] -[ext_resource path="res://graphics/player/pal_purplearmor.png" type="Texture" id=2] -[ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=3] -[ext_resource path="res://graphics/player/sg_idle.png" type="Texture" id=4] -[ext_resource path="res://addons/godot_state_charts/parallel_state.gd" type="Script" id=5] -[ext_resource path="res://addons/godot_state_charts/state_chart.gd" type="Script" id=6] -[ext_resource path="res://ui/theme.tres" type="Theme" id=7] -[ext_resource path="res://addons/godot_state_charts/state_chart_debug.gd" type="Script" id=8] -[ext_resource path="res://addons/godot_state_charts/compound_state.gd" type="Script" id=9] -[ext_resource path="res://addons/godot_state_charts/transition.gd" type="Script" id=10] -[ext_resource path="res://addons/godot_state_charts/atomic_state.gd" type="Script" id=11] -[ext_resource path="res://graphics/player/sg_walk.png" type="Texture" id=12] -[ext_resource path="res://graphics/player/sg_jump.png" type="Texture" id=13] -[ext_resource path="res://graphics/player/sg_climb.png" type="Texture" id=14] -[ext_resource path="res://graphics/player/sg_shoot_grounded.png" type="Texture" id=15] -[ext_resource path="res://graphics/player/sg_shoot_air.png" type="Texture" id=16] -[ext_resource path="res://graphics/player/sg_doublejump.png" type="Texture" id=17] -[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=18] -[ext_resource path="res://graphics/player/sg_fall_scared.png" type="Texture" id=19] -[ext_resource path="res://graphics/player/sg_fall.png" type="Texture" id=20] -[ext_resource path="res://graphics/player/sg_push.png" type="Texture" id=21] -[ext_resource path="res://graphics/player/sg_blink.png" type="Texture" id=22] -[ext_resource path="res://graphics/player/sg_stim.png" type="Texture" id=23] - -[sub_resource type="ShaderMaterial" id=1] -shader = ExtResource( 3 ) -shader_param/border_color = Color( 0, 0, 0, 1 ) -shader_param/border_corners = true -shader_param/palette = ExtResource( 2 ) - -[sub_resource type="Curve" id=13] -_data = [ Vector2( 0, 1 ), 0.0, -0.0636948, 0, 0, Vector2( 1, 0 ), -3.43886, 0.0, 0, 0 ] - -[sub_resource type="RectangleShape2D" id=2] -extents = Vector2( 2.5, 5 ) - -[sub_resource type="RectangleShape2D" id=3] -extents = Vector2( 2.5, 5 ) - -[sub_resource type="RectangleShape2D" id=16] -extents = Vector2( 2.5, 2.5 ) - -[sub_resource type="Animation" id=5] -length = 0.001 -tracks/0/type = "value" -tracks/0/path = NodePath("Graphics/Sprite:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ ExtResource( 4 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Graphics/Sprite:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 1 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Graphics/Sprite:frame") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="Animation" id=18] -resource_name = "blink" -length = 0.1 -tracks/0/type = "value" -tracks/0/path = NodePath("Graphics/Sprite:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 22 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Graphics/Sprite:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 2 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Graphics/Sprite:frame") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0, 0.1 ), -"transitions": PoolRealArray( 1, 1 ), -"update": 1, -"values": [ 1, 0 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="Animation" id=9] -resource_name = "climb" -length = 0.3 -loop = true -step = 0.15 -tracks/0/type = "value" -tracks/0/path = NodePath("Graphics/Sprite:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 14 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Graphics/Sprite:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 2 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Graphics/Sprite:frame") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0, 0.15 ), -"transitions": PoolRealArray( 1, 1 ), -"update": 1, -"values": [ 0, 1 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="Animation" id=12] -resource_name = "double_jump" -length = 0.32 -loop = true -step = 0.04 -tracks/0/type = "value" -tracks/0/path = NodePath("Graphics/Sprite:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 17 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Graphics/Sprite:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 2 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Graphics/Sprite:frame") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0, 0.04, 0.08, 0.12, 0.16, 0.2, 0.24, 0.28 ), -"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), -"update": 1, -"values": [ 0, 1, 0, 1, 0, 1, 0, 1 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0, 0.08, 0.16, 0.24 ), -"transitions": PoolRealArray( 1, 1, 1, 1 ), -"update": 1, -"values": [ 0.0, 90.0, 180.0, 270.0 ] -} - -[sub_resource type="Animation" id=15] -resource_name = "fall" -length = 0.001 -tracks/0/type = "value" -tracks/0/path = NodePath("Graphics/Sprite:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 20 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Graphics/Sprite:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 1 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Graphics/Sprite:frame") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 0 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="Animation" id=14] -resource_name = "fall_scared" -length = 0.2 -loop = true -tracks/0/type = "value" -tracks/0/path = NodePath("Graphics/Sprite:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 19 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Graphics/Sprite:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 2 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Graphics/Sprite:frame") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0, 0.1 ), -"transitions": PoolRealArray( 1, 1 ), -"update": 1, -"values": [ 0, 1 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0.00238396 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="Animation" id=6] -resource_name = "idle" -length = 0.001 -tracks/0/type = "value" -tracks/0/path = NodePath("Graphics/Sprite:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 4 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Graphics/Sprite:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 1 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Graphics/Sprite:frame") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 0 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="Animation" id=8] -resource_name = "jump" -length = 0.001 -tracks/0/type = "value" -tracks/0/path = NodePath("Graphics/Sprite:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 13 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Graphics/Sprite:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 1 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Graphics/Sprite:frame") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 0 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="Animation" id=17] -resource_name = "push" -length = 0.8 -loop = true -tracks/0/type = "value" -tracks/0/path = NodePath("Graphics/Sprite:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 21 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Graphics/Sprite:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 4 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Graphics/Sprite:frame") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0, 0.2, 0.4, 0.6 ), -"transitions": PoolRealArray( 1, 1, 1, 1 ), -"update": 1, -"values": [ 0, 1, 2, 3 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="Animation" id=11] -resource_name = "shoot_airborne" -length = 0.001 -tracks/0/type = "value" -tracks/0/path = NodePath("Graphics/Sprite:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 16 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Graphics/Sprite:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0, 0.001 ), -"transitions": PoolRealArray( 1, 1 ), -"update": 1, -"values": [ 1, 1 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Graphics/Sprite:frame") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 0 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="Animation" id=10] -resource_name = "shoot_grounded" -length = 0.25 -step = 0.05 -tracks/0/type = "value" -tracks/0/path = NodePath("Graphics/Sprite:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 15 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Graphics/Sprite:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 6 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Graphics/Sprite:frame") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0, 0.03, 0.06, 0.12, 0.15, 0.18 ), -"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1 ), -"update": 1, -"values": [ 0, 1, 2, 3, 4, 5 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} -tracks/4/type = "method" -tracks/4/path = NodePath(".") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/keys = { -"times": PoolRealArray( 0.12 ), -"transitions": PoolRealArray( 1 ), -"values": [ { -"args": [ ], -"method": "spawn_arrow" -} ] -} -tracks/5/type = "method" -tracks/5/path = NodePath("StateChart") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/keys = { -"times": PoolRealArray( 0.25 ), -"transitions": PoolRealArray( 1 ), -"values": [ { -"args": [ "shoot_end" ], -"method": "send_event" -} ] -} - -[sub_resource type="Animation" id=19] -resource_name = "stim" -length = 0.3 -loop = true -step = 0.05 -tracks/0/type = "value" -tracks/0/path = NodePath("Graphics/Sprite:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 23 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Graphics/Sprite:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 2 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Graphics/Sprite:frame") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0, 0.15 ), -"transitions": PoolRealArray( 1, 1 ), -"update": 1, -"values": [ 0, 1 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="Animation" id=7] -resource_name = "walk" -length = 0.4 -loop = true -tracks/0/type = "value" -tracks/0/path = NodePath("Graphics/Sprite:texture") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ ExtResource( 12 ) ] -} -tracks/1/type = "value" -tracks/1/path = NodePath("Graphics/Sprite:hframes") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 1, -"values": [ 4 ] -} -tracks/2/type = "value" -tracks/2/path = NodePath("Graphics/Sprite:frame") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/keys = { -"times": PoolRealArray( 0, 0.1, 0.2, 0.3 ), -"transitions": PoolRealArray( 1, 1, 1, 1 ), -"update": 1, -"values": [ 0, 1, 2, 3 ] -} -tracks/3/type = "value" -tracks/3/path = NodePath("Graphics/Sprite:rotation_degrees") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/keys = { -"times": PoolRealArray( 0 ), -"transitions": PoolRealArray( 1 ), -"update": 0, -"values": [ 0.0 ] -} - -[sub_resource type="StyleBoxEmpty" id=4] - -[node name="Player" type="KinematicBody2D" groups=["player"]] -collision_layer = 128 -collision_mask = 7 -moving_platform_apply_velocity_on_leave = 1 -script = ExtResource( 1 ) -gravity = 700.0 -jump_force = 140.0 -double_jump_force = 124.0 - -[node name="Graphics" type="Node2D" parent="."] - -[node name="Sprite" type="Sprite" parent="Graphics"] -unique_name_in_owner = true -material = SubResource( 1 ) -position = Vector2( 0, -10 ) -texture = ExtResource( 4 ) - -[node name="ArrowPosition" type="Position2D" parent="Graphics"] -unique_name_in_owner = true -position = Vector2( 5, -7 ) -__meta__ = { -"_gizmo_extents_": 2.0 -} - -[node name="DeathSplatterPosition" type="Position2D" parent="Graphics"] -unique_name_in_owner = true -position = Vector2( 0, -10 ) -__meta__ = { -"_gizmo_extents_": 2.0 -} - -[node name="DustParticles" type="CPUParticles2D" parent="Graphics"] -unique_name_in_owner = true -position = Vector2( 0, 2 ) -z_index = 1 -emitting = false -amount = 5 -lifetime = 0.3 -one_shot = true -explosiveness = 0.9 -fract_delta = false -local_coords = false -texture = ExtResource( 18 ) -emission_shape = 2 -emission_rect_extents = Vector2( 5, 0 ) -direction = Vector2( 0, -1 ) -spread = 60.0 -gravity = Vector2( 0, 0 ) -initial_velocity = 10.0 -initial_velocity_random = 0.8 -angle = 720.0 -angle_random = 1.0 -scale_amount = 0.25 -scale_amount_random = 0.5 -scale_amount_curve = SubResource( 13 ) - -[node name="PushableDetector" type="RayCast2D" parent="Graphics"] -unique_name_in_owner = true -position = Vector2( 3, -4 ) -cast_to = Vector2( 1, 0 ) -collision_mask = 4 - -[node name="BodyShape" type="CollisionShape2D" parent="."] -position = Vector2( 0.5, -5 ) -shape = SubResource( 2 ) - -[node name="Hitbox" type="Area2D" parent="." groups=["player_hitbox"]] -collision_layer = 11 -collision_mask = 32 - -[node name="GroundedShape" type="CollisionShape2D" parent="Hitbox"] -unique_name_in_owner = true -position = Vector2( 0.5, -5 ) -shape = SubResource( 3 ) - -[node name="AirborneShape" type="CollisionShape2D" parent="Hitbox"] -unique_name_in_owner = true -position = Vector2( 0.5, -7.5 ) -shape = SubResource( 16 ) - -[node name="LadderDetector" type="RayCast2D" parent="."] -unique_name_in_owner = true -position = Vector2( 0.5, -0.5 ) -enabled = true -cast_to = Vector2( 0, -9.5 ) -collision_mask = 64 -collide_with_areas = true -collide_with_bodies = false - -[node name="AnimationPlayer" type="AnimationPlayer" parent="."] -anims/RESET = SubResource( 5 ) -anims/blink = SubResource( 18 ) -anims/climb = SubResource( 9 ) -anims/double_jump = SubResource( 12 ) -anims/fall = SubResource( 15 ) -anims/fall_scared = SubResource( 14 ) -anims/idle = SubResource( 6 ) -anims/jump = SubResource( 8 ) -anims/push = SubResource( 17 ) -anims/shoot_airborne = SubResource( 11 ) -anims/shoot_grounded = SubResource( 10 ) -anims/stim = SubResource( 19 ) -anims/walk = SubResource( 7 ) - -[node name="StateChart" type="Node" parent="."] -script = ExtResource( 6 ) -auto_initialize = false - -[node name="Root" type="Node" parent="StateChart"] -script = ExtResource( 5 ) -__meta__ = { -"_editor_description_": "" -} - -[node name="Movement" type="Node" parent="StateChart/Root"] -process_priority = 10 -script = ExtResource( 9 ) -__meta__ = { -"_editor_description_": "higher process priority so it can do move_and_slide after everything else" -} -initial_state = NodePath("Grounded") - -[node name="On Died" type="Node" parent="StateChart/Root/Movement"] -script = ExtResource( 10 ) -to = NodePath("../Inactive") -event = "died" - -[node name="Grounded" type="Node" parent="StateChart/Root/Movement"] -script = ExtResource( 9 ) -__meta__ = { -"_editor_description_": "is on the ground" -} -initial_state = NodePath("CanWalk") - -[node name="On Airborne" type="Node" parent="StateChart/Root/Movement/Grounded"] -script = ExtResource( 10 ) -to = NodePath("../../Airborne/Falling/CoyoteFalling") -event = "airborne" - -[node name="On Jump" type="Node" parent="StateChart/Root/Movement/Grounded"] -script = ExtResource( 10 ) -__meta__ = { -"_editor_description_": "enter jump state when the jump button is pressed" -} -to = NodePath("../../Airborne/Jump/NormalJump") -event = "jump" - -[node name="On LadderTouched" type="Node" parent="StateChart/Root/Movement/Grounded"] -script = ExtResource( 10 ) -to = NodePath("../../Climbing") -event = "ladder_touched" - -[node name="CanWalk" type="Node" parent="StateChart/Root/Movement/Grounded"] -script = ExtResource( 9 ) -__meta__ = { -"_editor_description_": "can walk by moving left and right" -} -initial_state = NodePath("Still") - -[node name="On Shoot" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] -script = ExtResource( 10 ) -to = NodePath("../../Shooting") -event = "shoot" -guard_expression = "can_shoot" - -[node name="On PushStart" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] -script = ExtResource( 10 ) -to = NodePath("../../Pushing") -event = "push_start" - -[node name="Still" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] -script = ExtResource( 11 ) - -[node name="On WalkStart" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Still"] -script = ExtResource( 10 ) -to = NodePath("../../Walking") -event = "walk_start" - -[node name="On Timeout" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Still"] -script = ExtResource( 10 ) -to = NodePath("../../Blinking") -delay = 1.0 - -[node name="Walking" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] -script = ExtResource( 11 ) - -[node name="On WalkStop" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Walking"] -script = ExtResource( 10 ) -to = NodePath("../../Still") -event = "walk_stop" - -[node name="Blinking" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] -unique_name_in_owner = true -script = ExtResource( 11 ) - -[node name="On Timeout" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Blinking"] -script = ExtResource( 10 ) -to = NodePath("../../Stimming") -delay = 10.0 - -[node name="On WalkStart" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Blinking"] -script = ExtResource( 10 ) -to = NodePath("../../Walking") -event = "walk_start" - -[node name="Stimming" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk"] -script = ExtResource( 11 ) - -[node name="On WalkStart" type="Node" parent="StateChart/Root/Movement/Grounded/CanWalk/Stimming"] -script = ExtResource( 10 ) -to = NodePath("../../Walking") -event = "walk_start" - -[node name="Shooting" type="Node" parent="StateChart/Root/Movement/Grounded"] -script = ExtResource( 11 ) -consumed_events = [ "jump" ] - -[node name="On ShootEnd" type="Node" parent="StateChart/Root/Movement/Grounded/Shooting"] -script = ExtResource( 10 ) -to = NodePath("../../CanWalk") -event = "shoot_end" - -[node name="Pushing" type="Node" parent="StateChart/Root/Movement/Grounded"] -script = ExtResource( 11 ) - -[node name="On PushStop" type="Node" parent="StateChart/Root/Movement/Grounded/Pushing"] -script = ExtResource( 10 ) -to = NodePath("../../CanWalk") -event = "push_stop" - -[node name="Airborne" type="Node" parent="StateChart/Root/Movement"] -process_priority = 5 -script = ExtResource( 9 ) -__meta__ = { -"_editor_description_": "SG is in the air and falling DOWN, better think fast!" -} -initial_state = NodePath("Falling") - -[node name="On Grounded" type="Node" parent="StateChart/Root/Movement/Airborne"] -script = ExtResource( 10 ) -to = NodePath("../../Grounded") -event = "grounded" - -[node name="On Shoot" type="Node" parent="StateChart/Root/Movement/Airborne"] -script = ExtResource( 10 ) -to = NodePath("../AirShooting") -event = "shoot" -guard_expression = "can_shoot" - -[node name="On LadderTouched" type="Node" parent="StateChart/Root/Movement/Airborne"] -script = ExtResource( 10 ) -to = NodePath("../../Climbing") -event = "ladder_touched" - -[node name="Jump" type="Node" parent="StateChart/Root/Movement/Airborne"] -script = ExtResource( 9 ) -initial_state = NodePath("NormalJump") - -[node name="On Jump" type="Node" parent="StateChart/Root/Movement/Airborne/Jump"] -script = ExtResource( 10 ) -__meta__ = { -"_editor_description_": "enter double jump state when the jump button is pressed" -} -to = NodePath("../../DoubleJump") -event = "jump" - -[node name="On JumpPeak" type="Node" parent="StateChart/Root/Movement/Airborne/Jump"] -script = ExtResource( 10 ) -to = NodePath("../../Falling/NormalFalling") -event = "jump_peak" - -[node name="NormalJump" type="Node" parent="StateChart/Root/Movement/Airborne/Jump"] -script = ExtResource( 11 ) - -[node name="On JumpReleased" type="Node" parent="StateChart/Root/Movement/Airborne/Jump/NormalJump"] -script = ExtResource( 10 ) -__meta__ = { -"_editor_description_": "" -} -to = NodePath("../../../Falling/NormalFalling") -event = "jump_released" - -[node name="LadderJump" type="Node" parent="StateChart/Root/Movement/Airborne/Jump"] -script = ExtResource( 11 ) - -[node name="Falling" type="Node" parent="StateChart/Root/Movement/Airborne"] -script = ExtResource( 9 ) -initial_state = NodePath("NormalFalling") - -[node name="On Jump" type="Node" parent="StateChart/Root/Movement/Airborne/Falling"] -script = ExtResource( 10 ) -__meta__ = { -"_editor_description_": "enter double jump state when the jump button is pressed" -} -to = NodePath("../../DoubleJump") -event = "jump" - -[node name="CoyoteFalling" type="Node" parent="StateChart/Root/Movement/Airborne/Falling"] -script = ExtResource( 11 ) - -[node name="On Jump" type="Node" parent="StateChart/Root/Movement/Airborne/Falling/CoyoteFalling"] -script = ExtResource( 10 ) -__meta__ = { -"_editor_description_": "enter jump state when the jump button is pressed" -} -to = NodePath("../../../Jump/NormalJump") -event = "jump" - -[node name="On CoyoteTimeout" type="Node" parent="StateChart/Root/Movement/Airborne/Falling/CoyoteFalling"] -script = ExtResource( 10 ) -to = NodePath("../../ScaredFalling") -delay = 0.067 - -[node name="NormalFalling" type="Node" parent="StateChart/Root/Movement/Airborne/Falling"] -script = ExtResource( 11 ) - -[node name="ScaredFalling" type="Node" parent="StateChart/Root/Movement/Airborne/Falling"] -script = ExtResource( 11 ) - -[node name="DoubleJump" type="Node" parent="StateChart/Root/Movement/Airborne"] -script = ExtResource( 11 ) - -[node name="AirShooting" type="Node" parent="StateChart/Root/Movement/Airborne"] -script = ExtResource( 11 ) - -[node name="Climbing" type="Node" parent="StateChart/Root/Movement"] -script = ExtResource( 11 ) -__meta__ = { -"_editor_description_": "stuck to ladder" -} - -[node name="On LadderJump" type="Node" parent="StateChart/Root/Movement/Climbing"] -script = ExtResource( 10 ) -to = NodePath("../../Airborne/Jump/LadderJump") -event = "ladder_jump" - -[node name="On LadderDetach" type="Node" parent="StateChart/Root/Movement/Climbing"] -script = ExtResource( 10 ) -to = NodePath("../../Airborne/Falling/NormalFalling") -event = "ladder_detach" - -[node name="Inactive" type="Node" parent="StateChart/Root/Movement"] -script = ExtResource( 11 ) -__meta__ = { -"_editor_description_": "player can not move or do anything, immobile" -} - -[node name="On Respawn" type="Node" parent="StateChart/Root/Movement/Inactive"] -script = ExtResource( 10 ) -to = NodePath("../../Grounded") -event = "get_real" - -[node name="Health" type="Node" parent="StateChart/Root"] -script = ExtResource( 9 ) -initial_state = NodePath("Vulnerable") - -[node name="Vulnerable" type="Node" parent="StateChart/Root/Health"] -script = ExtResource( 11 ) - -[node name="On Hurt" type="Node" parent="StateChart/Root/Health/Vulnerable"] -script = ExtResource( 10 ) -to = NodePath("../../Dead") -event = "hurt" - -[node name="Invulnerable" type="Node" parent="StateChart/Root/Health"] -script = ExtResource( 11 ) - -[node name="Respawn" type="Node" parent="StateChart/Root/Health"] -script = ExtResource( 11 ) - -[node name="On Timeout" type="Node" parent="StateChart/Root/Health/Respawn"] -script = ExtResource( 10 ) -to = NodePath("../../Vulnerable") - -[node name="Dead" type="Node" parent="StateChart/Root/Health"] -script = ExtResource( 11 ) - -[node name="On Respawn" type="Node" parent="StateChart/Root/Health/Dead"] -script = ExtResource( 10 ) -to = NodePath("../../Respawn") -event = "respawn" -guard_expression = "can_respawn" - -[node name="StateDebugLayer" type="CanvasLayer" parent="."] -layer = 128 - -[node name="StateChartDebug" type="Tree" parent="StateDebugLayer"] -visible = false -anchor_left = 1.0 -anchor_right = 1.0 -margin_left = -147.0 -margin_bottom = 137.0 -theme = ExtResource( 7 ) -custom_styles/bg = SubResource( 4 ) -script = ExtResource( 8 ) - -[connection signal="body_entered" from="Hitbox" to="." method="_on_Hitbox_body_entered"] -[connection signal="state_physics_processing" from="StateChart/Root/Movement" to="." method="_process_movement"] -[connection signal="state_entered" from="StateChart/Root/Movement/Grounded" to="." method="_on_Grounded_state_entered"] -[connection signal="state_physics_processing" from="StateChart/Root/Movement/Grounded" to="." method="_process_grounded"] -[connection signal="state_physics_processing" from="StateChart/Root/Movement/Grounded/CanWalk" to="." method="_process_horizontal_movement"] -[connection signal="state_physics_processing" from="StateChart/Root/Movement/Grounded/CanWalk" to="." method="_process_can_walk"] -[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Still" to="." method="_on_Still_state_entered"] -[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Walking" to="." method="_on_Walking_state_entered"] -[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Blinking" to="." method="_on_Blinking_state_entered"] -[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/CanWalk/Stimming" to="." method="_on_Stimming_state_entered"] -[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/Shooting" to="." method="_on_Shooting_state_entered"] -[connection signal="state_entered" from="StateChart/Root/Movement/Grounded/Pushing" to="." method="_on_Pushing_state_entered"] -[connection signal="state_physics_processing" from="StateChart/Root/Movement/Grounded/Pushing" to="." method="_process_pushing"] -[connection signal="state_entered" from="StateChart/Root/Movement/Airborne" to="." method="_on_Airborne_state_entered"] -[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne" to="." method="_process_gravity"] -[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/Jump" to="." method="_process_horizontal_movement"] -[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/Jump" to="." method="_process_jump"] -[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Jump/NormalJump" to="." method="_on_NormalJump_state_entered"] -[connection signal="state_exited" from="StateChart/Root/Movement/Airborne/Jump/NormalJump" to="." method="_on_NormalJump_state_exited"] -[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Jump/LadderJump" to="." method="_on_LadderJump_state_entered"] -[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/CoyoteFalling" to="." method="_on_CoyoteFalling_state_entered"] -[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/NormalFalling" to="." method="_on_NormalFalling_state_entered"] -[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/Falling/NormalFalling" to="." method="_process_horizontal_movement"] -[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/Falling/ScaredFalling" to="." method="_on_ScaredFalling_state_entered"] -[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/DoubleJump" to="." method="_on_DoubleJump_state_entered"] -[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/DoubleJump" to="." method="_process_horizontal_movement"] -[connection signal="state_entered" from="StateChart/Root/Movement/Airborne/AirShooting" to="." method="_on_AirShooting_state_entered"] -[connection signal="state_physics_processing" from="StateChart/Root/Movement/Airborne/AirShooting" to="." method="_process_horizontal_movement"] -[connection signal="state_entered" from="StateChart/Root/Movement/Climbing" to="." method="_on_Climbing_state_entered"] -[connection signal="state_exited" from="StateChart/Root/Movement/Climbing" to="." method="_on_Climbing_state_exited"] -[connection signal="state_physics_processing" from="StateChart/Root/Movement/Climbing" to="." method="_process_climbing"] -[connection signal="state_entered" from="StateChart/Root/Health/Respawn" to="." method="_on_Respawn_state_entered"] -[connection signal="state_entered" from="StateChart/Root/Health/Dead" to="." method="_on_Dead_state_entered"] diff --git a/objects/player/player_stain.gd b/objects/player/player_stain.gd new file mode 100644 index 0000000..f958696 --- /dev/null +++ b/objects/player/player_stain.gd @@ -0,0 +1,18 @@ +extends Light2D + + +export var lifetime: float = 5.0 + + +func _ready() -> void: + rotation = randf() * TAU + + +func _process(delta: float) -> void: + lifetime -= delta + if lifetime < 1.0: + global_position.y += 4.0 * delta + if lifetime < 0.5: + scale = Vector2(lifetime * 2.0, lifetime * 2.0) + if lifetime <= 0.0: + queue_free() diff --git a/objects/player/player_stain.tscn b/objects/player/player_stain.tscn new file mode 100644 index 0000000..9c48627 --- /dev/null +++ b/objects/player/player_stain.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=2] + +[ext_resource path="res://graphics/particles/dust.png" type="Texture" id=1] +[ext_resource path="res://objects/player/player_stain.gd" type="Script" id=2] + +[node name="PlayerStain" type="Light2D"] +texture = ExtResource( 1 ) +mode = 2 +range_item_cull_mask = 4 +script = ExtResource( 2 ) diff --git a/objects/respawn_point.gd b/objects/respawn_point.gd index 7f280d3..63329a0 100644 --- a/objects/respawn_point.gd +++ b/objects/respawn_point.gd @@ -9,5 +9,5 @@ func _on_RespawnPoint_area_entered(area): var player = area.get_parent() Game.respawn_point = Vector2( player.global_position.x if match_h else global_position.x, - player.global_position.y if match_v else global_position.y - 10 + player.global_position.y if match_v else global_position.y ) diff --git a/project.godot b/project.godot index 3a6cd27..f9aa96b 100644 --- a/project.godot +++ b/project.godot @@ -14,6 +14,11 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://addons/godot_state_charts/atomic_state.gd" }, { +"base": "Node2D", +"class": "BallSnake", +"language": "GDScript", +"path": "res://scripts/ball_snake.gd" +}, { "base": "State", "class": "CompoundState", "language": "GDScript", @@ -24,11 +29,26 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://scripts/level_entry.gd" }, { +"base": "Node", +"class": "MainMenu", +"language": "GDScript", +"path": "res://menus/main_menu.gd" +}, { +"base": "ImageTexture", +"class": "PaletteTexture", +"language": "GDScript", +"path": "res://scripts/palette_texture.gd" +}, { "base": "State", "class": "ParallelState", "language": "GDScript", "path": "res://addons/godot_state_charts/parallel_state.gd" }, { +"base": "HBoxContainer", +"class": "RadioButtons", +"language": "GDScript", +"path": "res://objects/hud/radio_buttons.gd" +}, { "base": "Node", "class": "State", "language": "GDScript", @@ -51,9 +71,13 @@ _global_script_classes=[ { } ] _global_script_class_icons={ "AtomicState": "res://addons/godot_state_charts/atomic_state.svg", +"BallSnake": "", "CompoundState": "res://addons/godot_state_charts/compound_state.svg", "LevelEntry": "", +"MainMenu": "", +"PaletteTexture": "", "ParallelState": "res://addons/godot_state_charts/parallel_state.svg", +"RadioButtons": "", "State": "res://addons/godot_state_charts/state.svg", "StateChart": "res://addons/godot_state_charts/state_chart.svg", "StateChartDebug": "", @@ -62,28 +86,35 @@ _global_script_class_icons={ [application] -config/name="Hero Mark 2" -run/main_scene="res://maps/level_select.tscn" +config/name="Revolution 2083" +run/main_scene="res://menus/splash_screen.tscn" config/use_custom_user_dir=true config/custom_user_dir_name="heromark2" +boot_splash/show_image=false config/icon="res://icon.png" +config/windows_native_icon="res://icon.ico" [autoload] Border="*res://autoloads/border.tscn" -Game="*res://autoloads/game.gd" Audio="*res://autoloads/audio.tscn" -LevelData="*res://autoloads/level_data.tscn" -Save="*res://autoloads/save.gd" -Debug="*res://autoloads/debug.tscn" +Controls="*res://autoloads/controls.gd" Options="*res://autoloads/options.gd" +Save="*res://autoloads/save.gd" +Game="*res://autoloads/game.gd" +LevelData="*res://autoloads/level_data.tscn" +Debug="*res://autoloads/debug.tscn" TouchControls="*res://autoloads/touch_controls.tscn" SceneManager="*res://autoloads/scene_manager.tscn" Console="*res://autoloads/console.tscn" Fade="*res://autoloads/fade.tscn" +StainLayer="*res://autoloads/stain_layer.tscn" +ScoreBoard="*res://autoloads/scoreboard.gd" +SpeedrunTimer="*res://autoloads/speedrun_timer.tscn" [debug] +gdscript/warnings/unused_argument=false shapes/collision/shape_color=Color( 0.564706, 0, 0.701961, 0.188235 ) shapes/collision/contact_color=Color( 0.101961, 1, 0.176471, 0.8 ) shapes/collision/draw_2d_outlines=false @@ -140,27 +171,21 @@ ogg_vorbis={ ui_accept={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777222,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":88,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":90,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } ui_select={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":88,"unicode":0,"echo":false,"script":null) - ] +"events": [ ] } ui_cancel={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":90,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":88,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } ui_focus_next={ @@ -171,11 +196,26 @@ ui_focus_prev={ "deadzone": 0.5, "events": [ ] } +ui_left={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777231,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"physical_scancode":0,"unicode":0,"echo":false,"script":null) + ] +} +ui_right={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777233,"unicode":0,"echo":false,"script":null) + ] +} ui_up={ "deadzone": 0.5, "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":5,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777232,"unicode":0,"echo":false,"script":null) ] } ui_down={ @@ -184,6 +224,7 @@ ui_down={ , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":4,"pressure":0.0,"pressed":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":7,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777234,"unicode":0,"echo":false,"script":null) ] } ui_page_up={ @@ -205,7 +246,7 @@ ui_end={ jump={ "deadzone": 0.5, "events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":88,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":90,"unicode":0,"echo":false,"script":null) ] } debug_restart={ @@ -216,6 +257,7 @@ debug_restart={ debug_1={ "deadzone": 0.5, "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":49,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":10,"pressure":0.0,"pressed":false,"script":null) ] } crt={ @@ -230,8 +272,8 @@ debug_move_player={ } shoot={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":90,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":2,"pressure":0.0,"pressed":false,"script":null) +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":2,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":88,"unicode":0,"echo":false,"script":null) ] } fullscreen={ @@ -258,7 +300,6 @@ debug_testroom={ pause={ "deadzone": 0.5, "events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":80,"physical_scancode":0,"unicode":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) ] @@ -269,25 +310,60 @@ restart={ , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":9,"pressure":0.0,"pressed":false,"script":null) ] } -sword={ +start={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":67,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":90,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":88,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":67,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":2,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) ] } -ui_reset={ +move_left={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":67,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777231,"unicode":0,"echo":false,"script":null) ] } -enter_hatch={ +move_right={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777234,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777233,"unicode":0,"echo":false,"script":null) ] } -exit_hatch={ +move_up={ "deadzone": 0.5, -"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"physical_scancode":0,"unicode":0,"echo":false,"script":null) -, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":88,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777232,"unicode":0,"echo":false,"script":null) + ] +} +move_down={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":0,"physical_scancode":16777234,"unicode":0,"echo":false,"script":null) + ] +} +ui_start={ +"deadzone": 0.5, +"events": [ Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) + ] +} +shield={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":67,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":5,"pressure":0.0,"pressed":false,"script":null) + ] +} +text_enter={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777221,"physical_scancode":0,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"physical_scancode":0,"unicode":0,"echo":false,"script":null) ] } @@ -315,4 +391,5 @@ common/enable_pause_aware_picking=true quality/driver/driver_name="GLES2" 2d/snapping/use_gpu_pixel_snap=true vram_compression/import_etc=true +limits/time/time_rollover_secs=240.0 environment/default_environment="res://default_env.tres" diff --git a/scripts/ball_snake.gd b/scripts/ball_snake.gd new file mode 100644 index 0000000..caba971 --- /dev/null +++ b/scripts/ball_snake.gd @@ -0,0 +1,29 @@ +tool +class_name BallSnake +extends Node2D + + +export var texture: Texture +export var segments: int = 1 +export var target: NodePath +export var end_pieces: bool = true + + +func _process(delta: float) -> void: + update() + + +func _draw() -> void: + var node := get_node(target) as Node2D + if node: + if end_pieces: + draw_texture(texture, texture.get_size() * -0.5) + var end_pos := to_local(node.global_position) + for i in segments: + var weight := 1.0 / float(segments + 1) * float(i + 1) + draw_texture( + texture, + lerp(Vector2.ZERO, end_pos, weight) + texture.get_size() * -0.5 + ) + if end_pieces: + draw_texture(texture, end_pos + texture.get_size() * -0.5) diff --git a/scripts/fix_parallax_background.gd b/scripts/fix_parallax_background.gd new file mode 100644 index 0000000..401ddfb --- /dev/null +++ b/scripts/fix_parallax_background.gd @@ -0,0 +1,20 @@ +extends ParallaxBackground + +func revert_offset(layer: ParallaxLayer) -> void: + # Cancel out layer's offset. The layer's position already has + # its motion_scale applied. + var ofs := scroll_offset - layer.position + if not scroll_ignore_camera_zoom: + # When attention is given to the camera's zoom, we need to account for it. + # We can use viewport's canvas transform scale to which the camera has + # already applied its zoom. + var canvas_scale = get_viewport().canvas_transform.get_scale() + # This is taken from godot source: parallax_background.cpp + # I don't know why it works. + ofs /= canvas_scale.dot(Vector2(0.5, 0.5)) + layer.motion_offset = ofs + +func _ready() -> void: + for layer in get_children(): + if layer is ParallaxLayer: + revert_offset(layer) diff --git a/scripts/has_splash.gd b/scripts/has_splash.gd new file mode 100644 index 0000000..11bb980 --- /dev/null +++ b/scripts/has_splash.gd @@ -0,0 +1,6 @@ +extends Node + +export var splash_color: Color = Color.white + +func _init() -> void: + add_to_group("has_splash") diff --git a/scripts/level_entry.gd b/scripts/level_entry.gd index 3b82c14..db1b37c 100644 --- a/scripts/level_entry.gd +++ b/scripts/level_entry.gd @@ -2,15 +2,38 @@ tool class_name LevelEntry extends Resource -export var title = "" setget set_title -export var shard_titles = [ +export var title: String = "" setget set_title +export var shard_titles: Array = [ "", "", "", "", "5 Rainbow Stars", "Collection Bonus", "Time Bonus", "Life Bonus"] -export var save_id = "" -export (PackedScene) var scene +export var save_id: String = "" +export var shards_required_sweet: int = 0 +export var shards_required_salty: int = 0 +export var shards_required_spicy: int = 0 +export var shards_required_pungent: int = 0 +export var boss_required: String = "" +export var boss: bool = false +export var has_scoreboard: bool = false +export var scene: PackedScene + +var shards_required: int = 0 setget , _get_shards_required + +func _get_shards_required() -> int: + if Engine.editor_hint: + return shards_required + match Game.difficulty: + Game.Difficulty.SWEET: + return shards_required_sweet + Game.Difficulty.SALTY: + return shards_required_salty + Game.Difficulty.SPICY: + return shards_required_spicy + Game.Difficulty.PUNGENT: + return shards_required_pungent + return shards_required func set_title(value): title = value diff --git a/scripts/palette_texture.gd b/scripts/palette_texture.gd new file mode 100644 index 0000000..e9348b8 --- /dev/null +++ b/scripts/palette_texture.gd @@ -0,0 +1,50 @@ +tool +class_name PaletteTexture +extends ImageTexture + + +export (Array, Color) var colors := [] setget _set_colors +export var convert_from: Texture = null setget _convert_from + + +var _data := PoolByteArray() + + +func _init() -> void: + colors.resize(16) + colors.fill(Color.white) + _data.resize(16 * 4) + _data.fill(255) + _update_image() + + +func _set_colors(new_array: Array) -> void: + if new_array.size() == 16: + colors = new_array + _update_image() + + +func _update_image() -> void: + for i in colors.size(): + var c: Color = colors[i] + var j: int = i * 4 + _data[j] = c.r8 + _data[j + 1] = c.g8 + _data[j + 2] = c.b8 + _data[j + 3] = c.a8 + + var image := Image.new() + image.create_from_data(4, 4, false, Image.FORMAT_RGBA8, _data) + create_from_image(image, 0) + + +func _convert_from(texture: Texture) -> void: + if texture != null and texture.get_size() == Vector2(4.0, 4.0): + var image := texture.get_data() + image.lock() + for x in 4: + for y in 4: + colors[x + (y * 4)] = image.get_pixel(x, y) + print(colors[x + (y * 4)]) + image.unlock() + _update_image() diff --git a/scripts/randomize_particle_start.gd b/scripts/randomize_particle_start.gd new file mode 100644 index 0000000..f9a8552 --- /dev/null +++ b/scripts/randomize_particle_start.gd @@ -0,0 +1,4 @@ +extends CPUParticles2D + +func _ready() -> void: + preprocess = randf() * lifetime diff --git a/scripts/sg_palette.gd b/scripts/sg_palette.gd new file mode 100644 index 0000000..f413bc3 --- /dev/null +++ b/scripts/sg_palette.gd @@ -0,0 +1,5 @@ +extends Node2D + +func _ready(): + var palette = load("res://graphics/player/palettes/%s.tex" % Game.current_palette) + material.set_shader_param("palette", palette) diff --git a/scripts/show_button.gd b/scripts/show_button.gd new file mode 100644 index 0000000..8a67a01 --- /dev/null +++ b/scripts/show_button.gd @@ -0,0 +1,22 @@ +extends Control + + +export var action: String + + +onready var keyboard_button: Label = $KeyboardButton +onready var gamepad_button: TextureRect = $GamepadButton + + +func _process(delta: float) -> void: + if SceneManager.last_input_gamepad: + keyboard_button.visible = false + gamepad_button.visible = true + var button = Controls.get_button(action) + if button >= 0: + gamepad_button.texture.region.position.x = float(button % 8) * 12.0 + gamepad_button.texture.region.position.y = float(button / 8) * 10.0 + else: + keyboard_button.visible = true + gamepad_button.visible = false + keyboard_button.text = OS.get_scancode_string(Controls.get_key(action)) diff --git a/scripts/sprite_ext.gd b/scripts/sprite_ext.gd new file mode 100644 index 0000000..678f04f --- /dev/null +++ b/scripts/sprite_ext.gd @@ -0,0 +1,43 @@ +extends Sprite + + +## emitted when the stop frame is reached +signal stopped() + + +## speed at which to animate +export var fps: float = 0.0 +## frame to stop on when reached +export var stop_at_frame: int = -1 +## whether to animate back and forth instead of loop +export var ping_pong: bool = false +## whether to maintain fixed global rotation +export var rotation_lock: float = NAN + + +## whether the animation is paused +var stopped: bool = false + + +var _time: float = 0.0 + + +func _process(delta): + # rotation lock + if not is_nan(rotation_lock): + set_deferred("global_rotation_degrees", rotation_lock) +# global_rotation_degrees = rotation_lock + # do not animate if paused + if stopped: + return + # accumulate time and animate + _time += abs(fps) * delta + if _time >= 1.0: + _time -= 1.0 + # posmod to loop around + frame = posmod(frame + int(sign(fps)), hframes * vframes) + if frame == stop_at_frame: + stopped = true + emit_signal("stopped") + if ping_pong and frame == 0: + fps = -fps diff --git a/shaders/beam_cycle.gdshader b/shaders/beam_cycle.gdshader new file mode 100644 index 0000000..0e09279 --- /dev/null +++ b/shaders/beam_cycle.gdshader @@ -0,0 +1,10 @@ +shader_type canvas_item; +render_mode blend_add; + +uniform float cycle_speed = 1.0; +uniform sampler2D gradient; + +void fragment() { + COLOR = texture(TEXTURE, UV); + COLOR *= texture(gradient, vec2(fract(TIME) * floor(cycle_speed), 0.0)); +} \ No newline at end of file diff --git a/shaders/beam_of_sin.gdshader b/shaders/beam_of_sin.gdshader new file mode 100644 index 0000000..cca26a4 --- /dev/null +++ b/shaders/beam_of_sin.gdshader @@ -0,0 +1,19 @@ +shader_type canvas_item; + +const float TAU = 6.28319; + +uniform float speed = 1.0; +uniform float cycle_offset = 0.0; +uniform float wave_length = 1.0; +uniform float thickness = 0.05; + +float plot(vec2 st, float pct) { + return step( pct - thickness, st.x) - + step( pct + thickness, st.x); +} + +void fragment() { + float sin_time = fract(TIME * floor(speed)) * TAU; + float x = sin(UV.y * wave_length + sin_time + cycle_offset)*0.5+0.5; + COLOR = COLOR * vec4(1.0, 1.0, 1.0, plot(UV * vec2(1.2, 1.0) + vec2(-0.1, 0.0), x)); +} \ No newline at end of file diff --git a/shaders/can_stain.tres b/shaders/can_stain.tres new file mode 100644 index 0000000..84a2d44 --- /dev/null +++ b/shaders/can_stain.tres @@ -0,0 +1,15 @@ +[gd_resource type="ShaderMaterial" load_steps=2 format=2] + +[sub_resource type="Shader" id=2] +code = "shader_type canvas_item; + +void fragment() { + COLOR = texture(TEXTURE, UV); + // fucked up lighting change to make blood work perfectly + if (AT_LIGHT_PASS) { + COLOR = vec4(1.0, 1.0, 1.0, COLOR.a); + } +}" + +[resource] +shader = SubResource( 2 ) diff --git a/shaders/color_noise.gdshader b/shaders/color_noise.gdshader index ae90cb4..6a2cf4a 100644 --- a/shaders/color_noise.gdshader +++ b/shaders/color_noise.gdshader @@ -2,6 +2,7 @@ shader_type canvas_item; uniform bool animate_noise = false; uniform float noise_intensity = 1.0; +uniform float fps = 60.0; float random (vec2 uv) { return fract(sin(dot(uv.xy, @@ -9,7 +10,8 @@ float random (vec2 uv) { } void fragment() { - vec2 noise_uv = SCREEN_UV + TIME * float(animate_noise); + float time = floor(fract(TIME) * fps); + vec2 noise_uv = SCREEN_UV + time * float(animate_noise); float noise = random(noise_uv); noise = mix(1.0 - noise_intensity, 1.0, noise); diff --git a/shaders/elecricity_no_blood.tres b/shaders/elecricity_no_blood.tres new file mode 100644 index 0000000..9fa360f --- /dev/null +++ b/shaders/elecricity_no_blood.tres @@ -0,0 +1,134 @@ +[gd_resource type="Shader" format=2] + +[resource] +code = "shader_type canvas_item; + +const float TAU = 6.28319; + +uniform float arc_speed = 4.0; +uniform float arc_fps = 10.0; +uniform float arc_scale = 8.0; +uniform float arc_threshold = 0.15; +uniform vec4 arc_color : hint_color = vec4(1.0, 0.93, 0.0, 1.0); +uniform float gamma = 2.0; +uniform float flash_rate = 3.0; +uniform float flash_intensity = 0.2; +uniform vec4 background_color : hint_color = vec4(0.0, 0.0, 0.0, 0.0); + +// Description : Array and textureless GLSL 2D/3D/4D simplex +// noise functions. +// Author : Ian McEwan, Ashima Arts. +// Maintainer : stegu +// Lastmod : 20110822 (ijm) +// License : Copyright (C) 2011 Ashima Arts. All rights reserved. +// Distributed under the MIT License. See LICENSE file. +// https://github.com/ashima/webgl-noise +// https://github.com/stegu/webgl-noise +// + +vec3 mod289_3(vec3 x) { + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + +vec4 mod289_4(vec4 x) { + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + +vec4 permute(vec4 x) { + return mod289_4(((x * 34.0) + 1.0) * x); +} + +vec4 taylorInvSqrt(vec4 r) { + return 2.79284291400159 - 0.85373472095314 * r; +} + +float snoise(vec3 v) { + vec2 C = vec2(1.0/6.0, 1.0/3.0) ; + vec4 D = vec4(0.0, 0.5, 1.0, 2.0); + + // First corner + vec3 i = floor(v + dot(v, vec3(C.y)) ); + vec3 x0 = v - i + dot(i, vec3(C.x)) ; + + // Other corners + vec3 g = step(x0.yzx, x0.xyz); + vec3 l = 1.0 - g; + vec3 i1 = min( g.xyz, l.zxy ); + vec3 i2 = max( g.xyz, l.zxy ); + + // x0 = x0 - 0.0 + 0.0 * C.xxx; + // x1 = x0 - i1 + 1.0 * C.xxx; + // x2 = x0 - i2 + 2.0 * C.xxx; + // x3 = x0 - 1.0 + 3.0 * C.xxx; + vec3 x1 = x0 - i1 + vec3(C.x); + vec3 x2 = x0 - i2 + vec3(C.y); // 2.0*C.x = 1/3 = C.y + vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y + + // Permutations + i = mod289_3(i); + vec4 p = permute( permute( permute( + i.z + vec4(0.0, i1.z, i2.z, 1.0 )) + + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + + i.x + vec4(0.0, i1.x, i2.x, 1.0 )); + + // Gradients: 7x7 points over a square, mapped onto an octahedron. + // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294) + float n_ = 0.142857142857; // 1.0/7.0 + vec3 ns = n_ * D.wyz - D.xzx; + + vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7) + + vec4 x_ = floor(j * ns.z); + vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N) + + vec4 x = x_ *ns.x + vec4(ns.y); + vec4 y = y_ *ns.x + vec4(ns.y); + vec4 h = 1.0 - abs(x) - abs(y); + + vec4 b0 = vec4( x.xy, y.xy ); + vec4 b1 = vec4( x.zw, y.zw ); + + //vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0; + //vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0; + vec4 s0 = floor(b0)*2.0 + 1.0; + vec4 s1 = floor(b1)*2.0 + 1.0; + vec4 sh = -step(h, vec4(0.0)); + + vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ; + vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ; + + vec3 p0 = vec3(a0.xy,h.x); + vec3 p1 = vec3(a0.zw,h.y); + vec3 p2 = vec3(a1.xy,h.z); + vec3 p3 = vec3(a1.zw,h.w); + + //Normalise gradients + vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + + // Mix final noise value + vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), vec4(0.0)); + m = m * m; + return 22.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3) ) ); +} + + +void fragment() { + vec4 tex_color = texture(TEXTURE, UV); + tex_color *= COLOR; + tex_color.rgb = pow(tex_color.rgb, vec3(1.0 / (gamma + sin(fract(TIME * floor(flash_rate)) * TAU) * flash_intensity))); + tex_color.rgb = mix(tex_color.rgb, background_color.rgb, background_color.a); +// tex_color.rgb = pow(tex_color.rgb, vec3(0.5 + sin(TIME * 20.0) * 0.1)); +// tex_color.rgb = pow(tex_color.rgb, vec3(1.0 / 2.0)); +// tex_color.rgb += (round(sin(TIME * 20.0) * 4.0)) * 0.25 * 0.05; + float n = snoise(vec3(SCREEN_UV / SCREEN_PIXEL_SIZE / arc_scale, (floor(TIME) + (floor(fract(TIME) * arc_fps)) / arc_fps) * arc_speed)); +// float n = snoise(vec3(SCREEN_UV / SCREEN_PIXEL_SIZE / arc_scale, floor(fract(TIME) * arc_fps) * arc_speed / arc_fps)); + n = step(abs(n), arc_threshold); + COLOR = vec4(mix(tex_color.rgb, arc_color.rgb, n * arc_color.a), tex_color.a); +// float worley = worley(SCREEN_UV, 128.0, 96.0); +// vec4 tex_color = texture(TEXTURE, UV); +// COLOR = vec4(mix(vec3(1.0, 1.0, 0.2), tex_color.rgb, step(worley, 0.5)), tex_color.a); +}" diff --git a/shaders/electricity.gdshader b/shaders/electricity.gdshader new file mode 100644 index 0000000..625d032 --- /dev/null +++ b/shaders/electricity.gdshader @@ -0,0 +1,134 @@ +shader_type canvas_item; + +const float TAU = 6.28319; + +uniform float arc_speed = 4.0; +uniform float arc_fps = 10.0; +uniform float arc_scale = 8.0; +uniform float arc_threshold = 0.15; +uniform vec4 arc_color : hint_color = vec4(1.0, 0.93, 0.0, 1.0); +uniform float gamma = 2.0; +uniform float flash_rate = 3.0; +uniform float flash_intensity = 0.2; +uniform vec4 background_color : hint_color = vec4(0.0, 0.0, 0.0, 0.0); + +// Description : Array and textureless GLSL 2D/3D/4D simplex +// noise functions. +// Author : Ian McEwan, Ashima Arts. +// Maintainer : stegu +// Lastmod : 20110822 (ijm) +// License : Copyright (C) 2011 Ashima Arts. All rights reserved. +// Distributed under the MIT License. See LICENSE file. +// https://github.com/ashima/webgl-noise +// https://github.com/stegu/webgl-noise +// + +vec3 mod289_3(vec3 x) { + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + +vec4 mod289_4(vec4 x) { + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + +vec4 permute(vec4 x) { + return mod289_4(((x * 34.0) + 1.0) * x); +} + +vec4 taylorInvSqrt(vec4 r) { + return 2.79284291400159 - 0.85373472095314 * r; +} + +float snoise(vec3 v) { + vec2 C = vec2(1.0/6.0, 1.0/3.0) ; + vec4 D = vec4(0.0, 0.5, 1.0, 2.0); + + // First corner + vec3 i = floor(v + dot(v, vec3(C.y)) ); + vec3 x0 = v - i + dot(i, vec3(C.x)) ; + + // Other corners + vec3 g = step(x0.yzx, x0.xyz); + vec3 l = 1.0 - g; + vec3 i1 = min( g.xyz, l.zxy ); + vec3 i2 = max( g.xyz, l.zxy ); + + // x0 = x0 - 0.0 + 0.0 * C.xxx; + // x1 = x0 - i1 + 1.0 * C.xxx; + // x2 = x0 - i2 + 2.0 * C.xxx; + // x3 = x0 - 1.0 + 3.0 * C.xxx; + vec3 x1 = x0 - i1 + vec3(C.x); + vec3 x2 = x0 - i2 + vec3(C.y); // 2.0*C.x = 1/3 = C.y + vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y + + // Permutations + i = mod289_3(i); + vec4 p = permute( permute( permute( + i.z + vec4(0.0, i1.z, i2.z, 1.0 )) + + i.y + vec4(0.0, i1.y, i2.y, 1.0 )) + + i.x + vec4(0.0, i1.x, i2.x, 1.0 )); + + // Gradients: 7x7 points over a square, mapped onto an octahedron. + // The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294) + float n_ = 0.142857142857; // 1.0/7.0 + vec3 ns = n_ * D.wyz - D.xzx; + + vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7) + + vec4 x_ = floor(j * ns.z); + vec4 y_ = floor(j - 7.0 * x_ ); // mod(j,N) + + vec4 x = x_ *ns.x + vec4(ns.y); + vec4 y = y_ *ns.x + vec4(ns.y); + vec4 h = 1.0 - abs(x) - abs(y); + + vec4 b0 = vec4( x.xy, y.xy ); + vec4 b1 = vec4( x.zw, y.zw ); + + //vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0; + //vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0; + vec4 s0 = floor(b0)*2.0 + 1.0; + vec4 s1 = floor(b1)*2.0 + 1.0; + vec4 sh = -step(h, vec4(0.0)); + + vec4 a0 = b0.xzyw + s0.xzyw*sh.xxyy ; + vec4 a1 = b1.xzyw + s1.xzyw*sh.zzww ; + + vec3 p0 = vec3(a0.xy,h.x); + vec3 p1 = vec3(a0.zw,h.y); + vec3 p2 = vec3(a1.xy,h.z); + vec3 p3 = vec3(a1.zw,h.w); + + //Normalise gradients + vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + + // Mix final noise value + vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), vec4(0.0)); + m = m * m; + return 22.0 * dot( m*m, vec4( dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3) ) ); +} + + +void fragment() { + if (AT_LIGHT_PASS) { + COLOR = vec4(1.0, 1.0, 1.0, COLOR.a); + } else { + vec4 tex_color = texture(TEXTURE, UV); + tex_color.rgb = pow(tex_color.rgb, vec3(1.0 / (gamma + sin(fract(TIME * floor(flash_rate)) * TAU) * flash_intensity))); + tex_color.rgb = mix(tex_color.rgb, background_color.rgb, background_color.a); + // tex_color.rgb = pow(tex_color.rgb, vec3(0.5 + sin(TIME * 20.0) * 0.1)); + // tex_color.rgb = pow(tex_color.rgb, vec3(1.0 / 2.0)); + // tex_color.rgb += (round(sin(TIME * 20.0) * 4.0)) * 0.25 * 0.05; + float n = snoise(vec3(SCREEN_UV / SCREEN_PIXEL_SIZE / arc_scale, (floor(TIME) + (floor(fract(TIME) * arc_fps)) / arc_fps) * arc_speed)); +// float n = snoise(vec3(SCREEN_UV / SCREEN_PIXEL_SIZE / arc_scale, floor(fract(TIME) * arc_fps) * arc_speed / arc_fps)); + n = step(abs(n), arc_threshold); + COLOR = vec4(mix(tex_color.rgb, arc_color.rgb, n * arc_color.a), tex_color.a); + // float worley = worley(SCREEN_UV, 128.0, 96.0); + // vec4 tex_color = texture(TEXTURE, UV); + // COLOR = vec4(mix(vec3(1.0, 1.0, 0.2), tex_color.rgb, step(worley, 0.5)), tex_color.a); + } +} \ No newline at end of file diff --git a/shaders/fire.gdshader b/shaders/fire.gdshader new file mode 100644 index 0000000..35c2f5f --- /dev/null +++ b/shaders/fire.gdshader @@ -0,0 +1,5 @@ +shader_type canvas_item; + +void fragment() { + COLOR = texture(TEXTURE, vec2(UV.x + sin(TIME / 2.5 + UV.y*6.0)/30.0,UV.y)); +} \ No newline at end of file diff --git a/shaders/noise_slow.gdshader b/shaders/noise_slow.gdshader new file mode 100644 index 0000000..34df731 --- /dev/null +++ b/shaders/noise_slow.gdshader @@ -0,0 +1,17 @@ +shader_type canvas_item; + +uniform bool animate_noise = false; +uniform float noise_intensity = 1.0; + +float random (vec2 uv) { + return fract(sin(dot(uv.xy, + vec2(12.9898,78.233))) * 43758.5453123); +} + +void fragment() { + vec2 noise_uv = SCREEN_UV + fract(TIME) * float(animate_noise) / 10.0; + float noise = random(noise_uv); + noise = mix(1.0 - noise_intensity, 1.0, noise); + + COLOR = vec4(COLOR.rgb * noise, COLOR.a); +} \ No newline at end of file diff --git a/shaders/recolor_border.shader b/shaders/recolor_border.shader index c7480e3..ffde7bb 100644 --- a/shaders/recolor_border.shader +++ b/shaders/recolor_border.shader @@ -23,7 +23,10 @@ bool is_border(sampler2D tex, vec2 uv, vec2 pixel_size) { void fragment() { vec4 color = texture(TEXTURE, UV); - if (color.a == 0.0 && is_border(TEXTURE, UV, TEXTURE_PIXEL_SIZE)) { + // fucked up lighting change to make blood work perfectly + if (AT_LIGHT_PASS) { + COLOR = vec4(1.0, 1.0, 1.0, color.a); + } else if (color.a == 0.0 && is_border(TEXTURE, UV, TEXTURE_PIXEL_SIZE)) { COLOR = border_color; } else { COLOR = texture(palette, color.rg ); diff --git a/shaders/scale3x.gdshader b/shaders/scale3x.gdshader new file mode 100644 index 0000000..d429071 --- /dev/null +++ b/shaders/scale3x.gdshader @@ -0,0 +1,110 @@ +shader_type canvas_item; + +const vec4 background = vec4(1., 1., 1., 0.); + +uniform float pixel_scale: hint_range(0.0, 1.0) = 1.0; + +float dist(vec4 c1, vec4 c2) { + return (c1 == c2) ? 0.0 : abs(c1.r - c2.r) + abs(c1.g - c2.g) + abs(c1.b - c2.b); +} + +bool similar(vec4 c1, vec4 c2, vec4 input) { + return (c1 == c2 || (dist(c1, c2) <= dist(input, c2) && dist(c1, c2) <= dist(input, c1))); +} + +bool different(vec4 c1, vec4 c2, vec4 input) { + return !similar(c1, c2, input); +} + +// rotsprite 3x enlargement algorithm: +// suppose we are looking at input pixel cE which is surrounded by 8 other +// pixels: +// cA cB cC +// cD cE cF +// cG cH cI +// and for that 1 input pixel cE we want to output 4 pixels oA, oB, oC, and oD: +// E0 E1 E2 +// E3 E4 E5 +// E6 E7 E8 +vec4 scale3x(sampler2D tex, vec2 uv, vec2 pixel_size) { + vec4 cE = texture(tex, uv); + cE = cE.a == 0.0 ? background : cE; + + vec4 cD = texture(tex, uv + pixel_size * vec2(-1., .0)); + cD = cD.a == 0.0 ? background : cD; + vec4 cF = texture(tex, uv + pixel_size * vec2(1., .0)); + cF = cF.a == 0.0 ? background : cF; + vec4 cH = texture(tex, uv + pixel_size * vec2(.0, 1.)); + cH = cH.a == 0.0 ? background : cH; + vec4 cB = texture(tex, uv + pixel_size * vec2(.0, -1.)); + cB = cB.a == 0.0 ? background : cB; + vec4 cA = texture(tex, uv + pixel_size * vec2(-1., -1.)); + cA = cA.a == 0.0 ? background : cA; + vec4 cI = texture(tex, uv + pixel_size * vec2(1., 1.)); + cI = cI.a == 0.0 ? background : cI; + vec4 cG = texture(tex, uv + pixel_size * vec2(-1., 1.)); + cG = cG.a == 0.0 ? background : cG; + vec4 cC = texture(tex, uv + pixel_size * vec2(1., -1.)); + cC = cC.a == 0.0 ? background : cC; + + if (different(cD,cF, cE) + && different(cH,cB, cE) + && ((similar(cE, cD, cE) || similar(cE, cH, cE) || similar(cE, cF, cE) || similar(cE, cB, cE) || + ((different(cA, cI, cE) || similar(cE, cG, cE) || similar(cE, cC, cE)) && + (different(cG, cC, cE) || similar(cE, cA, cE) || similar(cE, cI, cE)))))) + { + vec2 unit = uv - (floor(uv / pixel_size) * pixel_size); + vec2 pixel_3_size = pixel_size / 3.0; + + // E0 + if (unit.x < pixel_3_size.x && unit.y < pixel_3_size.y) { + return similar(cB, cD, cE) ? cB : cE; + } + + + // E1 + if (unit.x < pixel_3_size.x * 2.0 && unit.y < pixel_3_size.y) { + return (similar(cB, cD, cE) && different(cE, cC, cE)) + || (similar(cB, cF, cE) && different(cE, cA, cE)) ? cB : cE; + } + + // E2 + if (unit.y < pixel_3_size.y) { + return similar(cB, cF, cE) ? cB : cE; + } + + // E3 + if (unit.x < pixel_3_size.x && unit.y < pixel_3_size.y * 2.0) { + return (similar(cB, cD, cE) && different(cE, cG, cE) + || (similar(cH, cD, cE) && different(cE, cA, cE))) ? cD : cE; + } + + // E5 + if (unit.x >= pixel_3_size.x * 2.0 && unit.x < pixel_3_size.x * 3.0 && unit.y < pixel_3_size.y * 2.0) { + return (similar(cB, cF, cE) && different(cE, cI, cE)) + || (similar(cH, cF, cE) && different(cE, cC, cE)) ? cF : cE; + } + + // E6 + if (unit.x < pixel_3_size.x && unit.y >= pixel_3_size.y * 2.0) { + return similar(cH, cD, cE) ? cH : cE; + } + + // E7 + if (unit.x < pixel_3_size.x * 2.0 && unit.y >= pixel_3_size.y * 2.0) { + return (similar(cH, cD, cE) && different(cE, cI, cE)) + || (similar(cH, cF, cE) && different(cE, cG, cE)) ? cH : cE; + } + + // E8 + if (unit.y >= pixel_3_size.y * 2.0) { + return similar(cH, cF, cE) ? cH : cE; + } + } + + return cE; +} + +void fragment() { + COLOR = scale3x(TEXTURE, UV, TEXTURE_PIXEL_SIZE * pixel_scale); +} \ No newline at end of file diff --git a/shaders/ska_plane.gdshader b/shaders/ska_plane.gdshader new file mode 100644 index 0000000..668e1f2 --- /dev/null +++ b/shaders/ska_plane.gdshader @@ -0,0 +1,31 @@ +shader_type canvas_item; +render_mode skip_vertex_transform; + +uniform vec4 color_1 : hint_color = vec4(1.0, 1.0, 1.0, 1.0); +uniform vec4 color_2 : hint_color = vec4(0.0, 0.0, 0.0, 1.0); +uniform vec2 checker_size = vec2(8.0, 8.0); +uniform vec2 pan_speed = vec2(0.0, 0.0); +uniform vec2 cycle_speed = vec2(0.0, 0.0); +uniform vec2 cycle_alternation = vec2(0.0, 0.0); +uniform mat2 uv_transform = mat2(1.0); + +float checker(vec2 uv) { + vec2 div_uv = floor((uv) / checker_size); + float fmodResult = mod(div_uv.x + div_uv.y, 2.0); + return max(sign(fmodResult), 0.0); +} + +void vertex() { + UV = VERTEX; + VERTEX = (WORLD_MATRIX * (EXTRA_MATRIX * vec4(VERTEX, 0.0, 1.0))).xy; +} + +void fragment() { + vec2 uv = uv_transform * (UV - pan_speed * TIME); + vec2 alternation = mix(vec2(1.0), vec2( + (checker(vec2(uv.y, 0.0)) - 0.5) * 2.0, + (checker(vec2(0.0, uv.x)) - 0.5) * 2.0 + ), cycle_alternation); + uv = uv - cycle_speed * alternation * TIME; + COLOR = mix(color_1, color_2, checker(uv)); +} \ No newline at end of file diff --git a/shaders/wibble_border.gdshader b/shaders/wibble_border.gdshader new file mode 100644 index 0000000..1a16ca6 --- /dev/null +++ b/shaders/wibble_border.gdshader @@ -0,0 +1,37 @@ +shader_type canvas_item; + +uniform vec2 speed = vec2(0.0, 0.0); +uniform vec2 ammount = vec2(0.0, 0.0); +uniform vec2 offset = vec2(0.0, 0.0); +uniform vec2 delay = vec2(0.0, 0.0); + +uniform vec4 border_color : hint_color = vec4(0.0, 0.0, 0.0, 1.0); +uniform bool border_corners = false; + +bool is_border(sampler2D tex, vec2 uv, vec2 pixel_size) { + float check = texture(tex, uv + vec2(pixel_size.x, 0.0)).a; + check += texture(tex, uv + vec2(-pixel_size.x, 0.0)).a; + check += texture(tex, uv + vec2(0.0, pixel_size.y)).a; + check += texture(tex, uv + vec2(0.0, -pixel_size.y)).a; + + if (border_corners) { + check += texture(tex, uv + pixel_size).a; + check += texture(tex, uv - pixel_size).a; + check += texture(tex, uv + vec2(pixel_size.x, -pixel_size.y)).a; + check += texture(tex, uv + vec2(-pixel_size.x, pixel_size.y)).a; + } + + return check > 0.0; +} + +void vertex() { + VERTEX += sin(speed * (delay + TIME)) * ammount + offset; +} + +void fragment() { + COLOR = texture(TEXTURE, UV); + + if (COLOR.a == 0.0 && is_border(TEXTURE, UV, TEXTURE_PIXEL_SIZE)) { + COLOR = border_color; + } +} \ No newline at end of file diff --git a/shaders/wibble_wobble.gdshader b/shaders/wibble_wobble.gdshader new file mode 100644 index 0000000..6bd39f5 --- /dev/null +++ b/shaders/wibble_wobble.gdshader @@ -0,0 +1,10 @@ +shader_type canvas_item; + +uniform vec2 speed = vec2(0.0, 0.0); +uniform vec2 ammount = vec2(0.0, 0.0); +uniform vec2 offset = vec2(0.0, 0.0); +uniform vec2 delay = vec2(0.0, 0.0); + +void vertex() { + VERTEX += sin(speed * (delay + TIME)) * ammount + offset; +} \ No newline at end of file diff --git a/tilesets/t_abstract.tres b/tilesets/t_abstract.tres new file mode 100644 index 0000000..fa4bac4 --- /dev/null +++ b/tilesets/t_abstract.tres @@ -0,0 +1,174 @@ +[gd_resource type="TileSet" load_steps=18 format=2] + +[ext_resource path="res://graphics/tiles/abstract.png" type="Texture" id=1] + +[sub_resource type="ConvexPolygonShape2D" id=1] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=3] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=4] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=6] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=7] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=9] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=10] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=15] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=16] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[resource] +0/name = "griddy" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 32, 32 ) +0/tile_mode = 1 +0/autotile/bitmask_mode = 1 +0/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +0/autotile/icon_coordinate = Vector2( 0, 3 ) +0/autotile/tile_size = Vector2( 8, 8 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/autotile/fallback_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 1 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 1 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 3 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 4 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 5 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 6 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 7 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 9 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 10 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 16 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 diff --git a/tilesets/t_abyss.tres b/tilesets/t_abyss.tres new file mode 100644 index 0000000..76adf2b --- /dev/null +++ b/tilesets/t_abyss.tres @@ -0,0 +1,323 @@ +[gd_resource type="TileSet" load_steps=24 format=2] + +[ext_resource path="res://graphics/tiles/abyss.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/seaweed.tres" type="Texture" id=2] + +[sub_resource type="ConvexPolygonShape2D" id=1] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=3] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=4] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=6] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=7] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=9] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=10] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=15] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=16] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=17] +points = PoolVector2Array( 8, 4, 0, 4, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=18] +points = PoolVector2Array( 8, 4, 0, 4, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=19] +points = PoolVector2Array( 8, 4, 0, 4, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=20] +points = PoolVector2Array( 8, 4, 0, 4, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=21] +points = PoolVector2Array( 8, 2, 0, 2, 0, 2, 8, 2 ) + +[resource] +0/name = "shale" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 32, 0, 32, 32 ) +0/tile_mode = 1 +0/autotile/bitmask_mode = 1 +0/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +0/autotile/icon_coordinate = Vector2( 0, 3 ) +0/autotile/tile_size = Vector2( 8, 8 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/autotile/fallback_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 1 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 1 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 3 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 4 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 5 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 6 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 7 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 9 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 10 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 16 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 +1/name = "limestone" +1/texture = ExtResource( 1 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 0, 24, 32, 8 ) +1/tile_mode = 1 +1/autotile/bitmask_mode = 1 +1/autotile/bitmask_flags = [ Vector2( 0, 0 ), 29818896, Vector2( 1, 0 ), 29818928, Vector2( 2, 0 ), 29818936, Vector2( 3, 0 ), 29818904 ] +1/autotile/icon_coordinate = Vector2( 0, 0 ) +1/autotile/tile_size = Vector2( 8, 8 ) +1/autotile/spacing = 0 +1/autotile/occluder_map = [ ] +1/autotile/navpoly_map = [ ] +1/autotile/priority_map = [ ] +1/autotile/z_index_map = [ ] +1/autotile/fallback_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape = SubResource( 17 ) +1/shape_one_way = false +1/shape_one_way_margin = 1.0 +1/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 17 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 18 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 19 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 20 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +1/z_index = 0 +2/name = "misc" +2/texture = ExtResource( 1 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 0, 0, 32, 8 ) +2/tile_mode = 2 +2/autotile/icon_coordinate = Vector2( 0, 0 ) +2/autotile/tile_size = Vector2( 8, 8 ) +2/autotile/spacing = 0 +2/autotile/occluder_map = [ ] +2/autotile/navpoly_map = [ ] +2/autotile/priority_map = [ ] +2/autotile/z_index_map = [ ] +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/shape_offset = Vector2( 0, 0 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape_one_way = false +2/shape_one_way_margin = 0.0 +2/shapes = [ ] +2/z_index = 0 +3/name = "one way" +3/texture = ExtResource( 1 ) +3/tex_offset = Vector2( 0, 0 ) +3/modulate = Color( 1, 1, 1, 1 ) +3/region = Rect2( 0, 8, 8, 8 ) +3/tile_mode = 2 +3/autotile/icon_coordinate = Vector2( 0, 0 ) +3/autotile/tile_size = Vector2( 8, 8 ) +3/autotile/spacing = 0 +3/autotile/occluder_map = [ ] +3/autotile/navpoly_map = [ ] +3/autotile/priority_map = [ ] +3/autotile/z_index_map = [ ] +3/occluder_offset = Vector2( 0, 0 ) +3/navigation_offset = Vector2( 0, 0 ) +3/shape_offset = Vector2( 0, 0 ) +3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +3/shape = SubResource( 21 ) +3/shape_one_way = true +3/shape_one_way_margin = 1.0 +3/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": true, +"one_way_margin": 1.0, +"shape": SubResource( 21 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +3/z_index = 0 +4/name = "cracks" +4/texture = ExtResource( 1 ) +4/tex_offset = Vector2( 0, 0 ) +4/modulate = Color( 1, 1, 1, 1 ) +4/region = Rect2( 8, 8, 8, 8 ) +4/tile_mode = 2 +4/autotile/icon_coordinate = Vector2( 0, 0 ) +4/autotile/tile_size = Vector2( 8, 8 ) +4/autotile/spacing = 0 +4/autotile/occluder_map = [ ] +4/autotile/navpoly_map = [ ] +4/autotile/priority_map = [ ] +4/autotile/z_index_map = [ ] +4/occluder_offset = Vector2( 0, 0 ) +4/navigation_offset = Vector2( 0, 0 ) +4/shape_offset = Vector2( 0, 0 ) +4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +4/shape_one_way = false +4/shape_one_way_margin = 0.0 +4/shapes = [ ] +4/z_index = 0 +5/name = "seaweed.tres 5" +5/texture = ExtResource( 2 ) +5/tex_offset = Vector2( 0, 0 ) +5/modulate = Color( 1, 1, 1, 1 ) +5/region = Rect2( 0, 0, 8, 8 ) +5/tile_mode = 0 +5/occluder_offset = Vector2( 0, 0 ) +5/navigation_offset = Vector2( 0, 0 ) +5/shape_offset = Vector2( 0, 0 ) +5/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +5/shape_one_way = false +5/shape_one_way_margin = 0.0 +5/shapes = [ ] +5/z_index = 0 diff --git a/tilesets/t_canopy.tres b/tilesets/t_canopy.tres index a9f61a9..95814e5 100644 --- a/tilesets/t_canopy.tres +++ b/tilesets/t_canopy.tres @@ -1,6 +1,7 @@ -[gd_resource type="TileSet" load_steps=9 format=2] +[gd_resource type="TileSet" load_steps=31 format=2] [ext_resource path="res://graphics/tiles/canopy.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/mushroom_red.tres" type="Texture" id=2] [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) @@ -23,12 +24,75 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) [sub_resource type="ConvexPolygonShape2D" id=7] points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=9] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=10] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=15] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=16] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=17] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=18] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=19] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=20] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=21] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=22] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=23] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=24] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=25] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=26] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=27] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=28] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + [resource] 0/name = "canopy.png 0" 0/texture = ExtResource( 1 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 1, 1, 1, 1 ) -0/region = Rect2( 0, 0, 32, 40 ) +0/region = Rect2( 0, 0, 32, 24 ) 0/tile_mode = 2 0/autotile/icon_coordinate = Vector2( 0, 0 ) 0/autotile/tile_size = Vector2( 8, 8 ) @@ -88,3 +152,193 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) } ] 0/z_index = 0 +1/name = "mushroom_red.tres 1" +1/texture = ExtResource( 2 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 0, 0, 8, 8 ) +1/tile_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape_one_way = false +1/shape_one_way_margin = 0.0 +1/shapes = [ ] +1/z_index = 0 +2/name = "logs" +2/texture = ExtResource( 1 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 32, 0, 32, 32 ) +2/tile_mode = 1 +2/autotile/bitmask_mode = 1 +2/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 176, Vector2( 1, 1 ), 406, Vector2( 1, 2 ), 50, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 376, Vector2( 2, 2 ), 61, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 152, Vector2( 3, 1 ), 211, Vector2( 3, 2 ), 26, Vector2( 3, 3 ), 24 ] +2/autotile/icon_coordinate = Vector2( 0, 3 ) +2/autotile/tile_size = Vector2( 8, 8 ) +2/autotile/spacing = 0 +2/autotile/occluder_map = [ ] +2/autotile/navpoly_map = [ ] +2/autotile/priority_map = [ ] +2/autotile/z_index_map = [ ] +2/autotile/fallback_mode = 0 +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/shape_offset = Vector2( 0, 0 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape = SubResource( 8 ) +2/shape_one_way = false +2/shape_one_way_margin = 1.0 +2/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 9 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 10 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 16 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 17 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 18 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 19 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 20 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 21 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 22 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +2/z_index = 0 +3/name = "ground" +3/texture = ExtResource( 1 ) +3/tex_offset = Vector2( 0, 0 ) +3/modulate = Color( 1, 1, 1, 1 ) +3/region = Rect2( 0, 24, 24, 16 ) +3/tile_mode = 1 +3/autotile/bitmask_mode = 1 +3/autotile/bitmask_flags = [ Vector2( 0, 0 ), 21299376, Vector2( 0, 1 ), 21299250, Vector2( 1, 0 ), 21299384, Vector2( 1, 1 ), 21299258, Vector2( 2, 0 ), 21299352, Vector2( 2, 1 ), 21299226 ] +3/autotile/icon_coordinate = Vector2( 1, 0 ) +3/autotile/tile_size = Vector2( 8, 8 ) +3/autotile/spacing = 0 +3/autotile/occluder_map = [ ] +3/autotile/navpoly_map = [ ] +3/autotile/priority_map = [ ] +3/autotile/z_index_map = [ ] +3/autotile/fallback_mode = 0 +3/occluder_offset = Vector2( 0, 0 ) +3/navigation_offset = Vector2( 0, 0 ) +3/shape_offset = Vector2( 0, 0 ) +3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +3/shape = SubResource( 23 ) +3/shape_one_way = false +3/shape_one_way_margin = 1.0 +3/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 23 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 24 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 25 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 26 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 27 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 28 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +3/z_index = 0 diff --git a/tilesets/t_cave.tres b/tilesets/t_cave.tres index c279195..978247f 100644 --- a/tilesets/t_cave.tres +++ b/tilesets/t_cave.tres @@ -1,6 +1,7 @@ -[gd_resource type="TileSet" load_steps=6 format=2] +[gd_resource type="TileSet" load_steps=30 format=2] [ext_resource path="res://graphics/tiles/cave.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/mushroom_brown.tres" type="Texture" id=2] [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) @@ -14,6 +15,75 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) [sub_resource type="ConvexPolygonShape2D" id=4] points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) +[sub_resource type="ConvexPolygonShape2D" id=27] +points = PoolVector2Array( 8, 0, 0, 0, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=6] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=7] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=9] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=10] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=15] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=16] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=17] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=18] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=19] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=20] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=21] +points = PoolVector2Array( 0, -16, 8, -16, 8, -16, 0, -16 ) + +[sub_resource type="ConvexPolygonShape2D" id=22] +points = PoolVector2Array( 0, -16, 8, -16, 8, -16, 0, -16 ) + +[sub_resource type="ConvexPolygonShape2D" id=23] +points = PoolVector2Array( 8, 6, 0, 6, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=24] +points = PoolVector2Array( 8, 6, 0, 6, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=25] +points = PoolVector2Array( 8, 6, 0, 6, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=26] +points = PoolVector2Array( 8, 6, 0, 6, 0, 0, 8, 0 ) + [resource] 0/name = "cave.png 0" 0/texture = ExtResource( 1 ) @@ -59,5 +129,207 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) "one_way_margin": 1.0, "shape": SubResource( 4 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": true, +"one_way_margin": 1.0, +"shape": SubResource( 27 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) } ] 0/z_index = 0 +1/name = "rock-full" +1/texture = ExtResource( 1 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 32, 0, 32, 32 ) +1/tile_mode = 1 +1/autotile/bitmask_mode = 1 +1/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +1/autotile/icon_coordinate = Vector2( 0, 3 ) +1/autotile/tile_size = Vector2( 8, 8 ) +1/autotile/spacing = 0 +1/autotile/occluder_map = [ ] +1/autotile/navpoly_map = [ ] +1/autotile/priority_map = [ ] +1/autotile/z_index_map = [ ] +1/autotile/fallback_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape = SubResource( 5 ) +1/shape_one_way = false +1/shape_one_way_margin = 1.0 +1/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 5 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 6 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 7 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 9 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 10 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 16 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 17 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 18 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 19 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 20 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +1/z_index = 0 +2/name = "rock-thin" +2/texture = ExtResource( 1 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 32, 32, 32, 8 ) +2/tile_mode = 1 +2/autotile/bitmask_mode = 1 +2/autotile/bitmask_flags = [ Vector2( 0, 0 ), 29818896, Vector2( 1, 0 ), 29818928, Vector2( 2, 0 ), 29818936, Vector2( 3, 0 ), 29818904 ] +2/autotile/icon_coordinate = Vector2( 0, 0 ) +2/autotile/tile_size = Vector2( 8, 8 ) +2/autotile/spacing = 0 +2/autotile/occluder_map = [ ] +2/autotile/navpoly_map = [ ] +2/autotile/priority_map = [ ] +2/autotile/z_index_map = [ ] +2/autotile/fallback_mode = 0 +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/shape_offset = Vector2( 0, 0 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape = SubResource( 21 ) +2/shape_one_way = false +2/shape_one_way_margin = 1.0 +2/shapes = [ { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 21 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 22 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 23 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 24 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 25 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 26 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +2/z_index = 0 +3/name = "mushroom_brown.tres 3" +3/texture = ExtResource( 2 ) +3/tex_offset = Vector2( 0, 0 ) +3/modulate = Color( 1, 1, 1, 1 ) +3/region = Rect2( 0, 0, 8, 8 ) +3/tile_mode = 0 +3/occluder_offset = Vector2( 0, 0 ) +3/navigation_offset = Vector2( 0, 0 ) +3/shape_offset = Vector2( 0, 0 ) +3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +3/shape_one_way = false +3/shape_one_way_margin = 0.0 +3/shapes = [ ] +3/z_index = 0 diff --git a/tilesets/t_death.tres b/tilesets/t_death.tres index e583ee0..eaab6df 100644 --- a/tilesets/t_death.tres +++ b/tilesets/t_death.tres @@ -1,4 +1,4 @@ -[gd_resource type="TileSet" load_steps=14 format=2] +[gd_resource type="TileSet" load_steps=16 format=2] [ext_resource path="res://graphics/tiles/water.tres" type="Texture" id=1] [ext_resource path="res://graphics/tiles/spike.png" type="Texture" id=2] @@ -7,19 +7,21 @@ [ext_resource path="res://graphics/tiles/oil.tres" type="Texture" id=5] [ext_resource path="res://graphics/tiles/blood_bottom.png" type="Texture" id=6] [ext_resource path="res://graphics/tiles/blood.tres" type="Texture" id=7] +[ext_resource path="res://graphics/tiles/water_light.tres" type="Texture" id=8] +[ext_resource path="res://graphics/tiles/water_light_bottom.png" type="Texture" id=9] [sub_resource type="ConvexPolygonShape2D" id=1] -points = PoolVector2Array( 7, 8, 1, 8, 1, 2, 7, 2 ) +points = PoolVector2Array( 6, 8, 2, 8, 2, 2, 6, 2 ) + +[sub_resource type="ConvexPolygonShape2D" id=7] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 2, 2, 6, 2, 6, 6, 2, 6 ) [sub_resource type="ConvexPolygonShape2D" id=2] points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) -[sub_resource type="ConvexPolygonShape2D" id=3] -points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) - -[sub_resource type="ConvexPolygonShape2D" id=4] -points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) - [sub_resource type="ConvexPolygonShape2D" id=5] points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) @@ -69,20 +71,6 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) } ] 1/z_index = 0 -2/name = "spike.png 2" -2/texture = ExtResource( 2 ) -2/tex_offset = Vector2( 0, 0 ) -2/modulate = Color( 1, 1, 1, 1 ) -2/region = Rect2( 8, 0, 8, 8 ) -2/tile_mode = 0 -2/occluder_offset = Vector2( 0, 0 ) -2/navigation_offset = Vector2( 0, 0 ) -2/shape_offset = Vector2( 0, 0 ) -2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -2/shape_one_way = false -2/shape_one_way_margin = 0.0 -2/shapes = [ ] -2/z_index = 0 3/name = "water_bottom.png 3" 3/texture = ExtResource( 3 ) 3/tex_offset = Vector2( 0, 0 ) @@ -104,40 +92,6 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) } ] 3/z_index = 10 -4/name = "water_bottom.png 4" -4/texture = ExtResource( 3 ) -4/tex_offset = Vector2( 0, 0 ) -4/modulate = Color( 1, 1, 1, 1 ) -4/region = Rect2( 0, 0, 8, 8 ) -4/tile_mode = 2 -4/autotile/icon_coordinate = Vector2( 0, 0 ) -4/autotile/tile_size = Vector2( 8, 8 ) -4/autotile/spacing = 0 -4/autotile/occluder_map = [ ] -4/autotile/navpoly_map = [ ] -4/autotile/priority_map = [ ] -4/autotile/z_index_map = [ ] -4/occluder_offset = Vector2( 0, 0 ) -4/navigation_offset = Vector2( 0, 0 ) -4/shape_offset = Vector2( 0, 0 ) -4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) -4/shape = SubResource( 3 ) -4/shape_one_way = false -4/shape_one_way_margin = 1.0 -4/shapes = [ { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 3 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) -}, { -"autotile_coord": Vector2( 0, 0 ), -"one_way": false, -"one_way_margin": 1.0, -"shape": SubResource( 4 ), -"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) -} ] -4/z_index = 0 6/name = "oil_bottom.png 6" 6/texture = ExtResource( 4 ) 6/tex_offset = Vector2( 0, 0 ) @@ -165,7 +119,7 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) "shape": SubResource( 5 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) } ] -6/z_index = 0 +6/z_index = 10 7/name = "oil.tres 7" 7/texture = ExtResource( 5 ) 7/tex_offset = Vector2( 0, 0 ) @@ -186,7 +140,7 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) 7/shape_one_way = false 7/shape_one_way_margin = 0.0 7/shapes = [ ] -7/z_index = 0 +7/z_index = 10 8/name = "blood.tres 8" 8/texture = ExtResource( 7 ) 8/tex_offset = Vector2( 0, 0 ) @@ -207,7 +161,7 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) 8/shape_one_way = false 8/shape_one_way_margin = 0.0 8/shapes = [ ] -8/z_index = 0 +8/z_index = 10 9/name = "blood_bottom.png 9" 9/texture = ExtResource( 6 ) 9/tex_offset = Vector2( 0, 0 ) @@ -235,4 +189,74 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) "shape": SubResource( 6 ), "shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) } ] -9/z_index = 0 +9/z_index = 10 +10/name = "water_light.tres 10" +10/texture = ExtResource( 8 ) +10/tex_offset = Vector2( 0, 0 ) +10/modulate = Color( 1, 1, 1, 1 ) +10/region = Rect2( 0, 0, 8, 8 ) +10/tile_mode = 2 +10/autotile/icon_coordinate = Vector2( 0, 0 ) +10/autotile/tile_size = Vector2( 8, 8 ) +10/autotile/spacing = 0 +10/autotile/occluder_map = [ ] +10/autotile/navpoly_map = [ ] +10/autotile/priority_map = [ ] +10/autotile/z_index_map = [ ] +10/occluder_offset = Vector2( 0, 0 ) +10/navigation_offset = Vector2( 0, 0 ) +10/shape_offset = Vector2( 0, 0 ) +10/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +10/shape_one_way = false +10/shape_one_way_margin = 0.0 +10/shapes = [ ] +10/z_index = 10 +11/name = "water_light_bottom.png 11" +11/texture = ExtResource( 9 ) +11/tex_offset = Vector2( 0, 0 ) +11/modulate = Color( 1, 1, 1, 1 ) +11/region = Rect2( 0, 0, 8, 8 ) +11/tile_mode = 2 +11/autotile/icon_coordinate = Vector2( 0, 0 ) +11/autotile/tile_size = Vector2( 8, 8 ) +11/autotile/spacing = 0 +11/autotile/occluder_map = [ ] +11/autotile/navpoly_map = [ ] +11/autotile/priority_map = [ ] +11/autotile/z_index_map = [ ] +11/occluder_offset = Vector2( 0, 0 ) +11/navigation_offset = Vector2( 0, 0 ) +11/shape_offset = Vector2( 0, 0 ) +11/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +11/shape = SubResource( 7 ) +11/shape_one_way = false +11/shape_one_way_margin = 1.0 +11/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 7 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +11/z_index = 10 +12/name = "spike.png 12" +12/texture = ExtResource( 2 ) +12/tex_offset = Vector2( 0, 0 ) +12/modulate = Color( 1, 1, 1, 1 ) +12/region = Rect2( 8, 0, 8, 8 ) +12/tile_mode = 0 +12/occluder_offset = Vector2( 0, 0 ) +12/navigation_offset = Vector2( 0, 0 ) +12/shape_offset = Vector2( 0, 0 ) +12/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +12/shape = SubResource( 8 ) +12/shape_one_way = false +12/shape_one_way_margin = 1.0 +12/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +12/z_index = 0 diff --git a/tilesets/t_grass.tres b/tilesets/t_grass.tres index 4afaee6..4f434a5 100644 --- a/tilesets/t_grass.tres +++ b/tilesets/t_grass.tres @@ -1,6 +1,9 @@ -[gd_resource type="TileSet" load_steps=16 format=2] +[gd_resource type="TileSet" load_steps=35 format=2] [ext_resource path="res://graphics/tiles/grass.png" type="Texture" id=1] +[ext_resource path="res://graphics/tiles/flower_red.tres" type="Texture" id=2] +[ext_resource path="res://graphics/tiles/flower_blue.tres" type="Texture" id=3] +[ext_resource path="res://graphics/tiles/flower_pink.tres" type="Texture" id=4] [sub_resource type="ConvexPolygonShape2D" id=1] points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) @@ -44,8 +47,56 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) [sub_resource type="ConvexPolygonShape2D" id=16] points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) +[sub_resource type="ConvexPolygonShape2D" id=17] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=18] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=19] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=20] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=21] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=22] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=23] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=24] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=25] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=26] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=27] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=28] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=29] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=30] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=31] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=32] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + [resource] -0/name = "grass.png 0" +0/name = "old grass" 0/texture = ExtResource( 1 ) 0/tex_offset = Vector2( 0, 0 ) 0/modulate = Color( 1, 1, 1, 1 ) @@ -172,7 +223,7 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) 1/shape_one_way_margin = 0.0 1/shapes = [ ] 1/z_index = 0 -2/name = "grass.png 2" +2/name = "flowers" 2/texture = ExtResource( 1 ) 2/tex_offset = Vector2( 0, 0 ) 2/modulate = Color( 1, 1, 1, 1 ) @@ -193,3 +244,166 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) 2/shape_one_way_margin = 0.0 2/shapes = [ ] 2/z_index = 0 +3/name = "grass scholar" +3/texture = ExtResource( 1 ) +3/tex_offset = Vector2( 0, 0 ) +3/modulate = Color( 1, 1, 1, 1 ) +3/region = Rect2( 32, 0, 32, 32 ) +3/tile_mode = 1 +3/autotile/bitmask_mode = 1 +3/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +3/autotile/icon_coordinate = Vector2( 0, 3 ) +3/autotile/tile_size = Vector2( 8, 8 ) +3/autotile/spacing = 0 +3/autotile/occluder_map = [ ] +3/autotile/navpoly_map = [ ] +3/autotile/priority_map = [ ] +3/autotile/z_index_map = [ ] +3/autotile/fallback_mode = 0 +3/occluder_offset = Vector2( 0, 0 ) +3/navigation_offset = Vector2( 0, 0 ) +3/shape_offset = Vector2( 0, 0 ) +3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +3/shape = SubResource( 17 ) +3/shape_one_way = false +3/shape_one_way_margin = 1.0 +3/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 17 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 18 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 19 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 20 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 21 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 22 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 23 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 24 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 25 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 26 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 27 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 28 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 29 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 30 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 31 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 32 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +3/z_index = 0 +4/name = "flower_red.tres 4" +4/texture = ExtResource( 2 ) +4/tex_offset = Vector2( 0, 0 ) +4/modulate = Color( 1, 1, 1, 1 ) +4/region = Rect2( 0, 0, 9, 8 ) +4/tile_mode = 0 +4/occluder_offset = Vector2( 0, 0 ) +4/navigation_offset = Vector2( 0, 0 ) +4/shape_offset = Vector2( 0, 0 ) +4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +4/shape_one_way = false +4/shape_one_way_margin = 0.0 +4/shapes = [ ] +4/z_index = 0 +5/name = "flower_pink.tres 5" +5/texture = ExtResource( 4 ) +5/tex_offset = Vector2( 0, 0 ) +5/modulate = Color( 1, 1, 1, 1 ) +5/region = Rect2( 0, 0, 9, 8 ) +5/tile_mode = 0 +5/occluder_offset = Vector2( 0, 0 ) +5/navigation_offset = Vector2( 0, 0 ) +5/shape_offset = Vector2( 0, 0 ) +5/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +5/shape_one_way = false +5/shape_one_way_margin = 0.0 +5/shapes = [ ] +5/z_index = 0 +6/name = "flower_blue.tres 6" +6/texture = ExtResource( 3 ) +6/tex_offset = Vector2( 0, 0 ) +6/modulate = Color( 1, 1, 1, 1 ) +6/region = Rect2( 0, 0, 9, 8 ) +6/tile_mode = 0 +6/occluder_offset = Vector2( 0, 0 ) +6/navigation_offset = Vector2( 0, 0 ) +6/shape_offset = Vector2( 0, 0 ) +6/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +6/shape_one_way = false +6/shape_one_way_margin = 0.0 +6/shapes = [ ] +6/z_index = 0 diff --git a/tilesets/t_horror.tres b/tilesets/t_horror.tres index 093b489..cf67855 100644 --- a/tilesets/t_horror.tres +++ b/tilesets/t_horror.tres @@ -141,6 +141,7 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) 0/autotile/navpoly_map = [ ] 0/autotile/priority_map = [ ] 0/autotile/z_index_map = [ ] +0/autotile/fallback_mode = 0 0/occluder_offset = Vector2( 0, 0 ) 0/navigation_offset = Vector2( 0, 0 ) 0/shape_offset = Vector2( 0, 0 ) @@ -315,6 +316,7 @@ points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) 1/autotile/navpoly_map = [ ] 1/autotile/priority_map = [ ] 1/autotile/z_index_map = [ ] +1/autotile/fallback_mode = 0 1/occluder_offset = Vector2( 0, 0 ) 1/navigation_offset = Vector2( 0, 0 ) 1/shape_offset = Vector2( 0, 0 ) diff --git a/tilesets/t_laboratory.tres b/tilesets/t_laboratory.tres new file mode 100644 index 0000000..1f4092e --- /dev/null +++ b/tilesets/t_laboratory.tres @@ -0,0 +1,468 @@ +[gd_resource type="TileSet" load_steps=40 format=2] + +[ext_resource path="res://graphics/tiles/laboratory.png" type="Texture" id=1] + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=15] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=16] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=17] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=18] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=19] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=20] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=21] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=22] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=23] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=24] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=25] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=26] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=27] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=28] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=29] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=30] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=31] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=32] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=33] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=34] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=35] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=36] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=37] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=38] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=39] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=40] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=41] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=42] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=43] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=44] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=45] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=46] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=63] +points = PoolVector2Array( 8, 8, 0, 8, 0, 0, 8, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=64] +points = PoolVector2Array( 8, 2, 0, 2, 0, 2, 8, 2 ) + +[resource] +0/name = "beam" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 32, 8 ) +0/tile_mode = 1 +0/autotile/bitmask_mode = 1 +0/autotile/bitmask_flags = [ Vector2( 0, 0 ), 29818896, Vector2( 1, 0 ), 29818928, Vector2( 2, 0 ), 29818936, Vector2( 3, 0 ), 29818904 ] +0/autotile/icon_coordinate = Vector2( 0, 0 ) +0/autotile/tile_size = Vector2( 8, 8 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/autotile/fallback_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 11 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 +1/name = "plate_slats" +1/texture = ExtResource( 1 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 32, 0, 32, 32 ) +1/tile_mode = 1 +1/autotile/bitmask_mode = 1 +1/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +1/autotile/icon_coordinate = Vector2( 0, 3 ) +1/autotile/tile_size = Vector2( 8, 8 ) +1/autotile/spacing = 0 +1/autotile/occluder_map = [ ] +1/autotile/navpoly_map = [ ] +1/autotile/priority_map = [ ] +1/autotile/z_index_map = [ ] +1/autotile/fallback_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape = SubResource( 15 ) +1/shape_one_way = false +1/shape_one_way_margin = 1.0 +1/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 16 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 17 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 18 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 19 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 20 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 21 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 22 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 23 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 24 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 25 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 26 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 27 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 28 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 29 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 30 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +1/z_index = 0 +2/name = "plate_circuits" +2/texture = ExtResource( 1 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 32, 32, 32, 32 ) +2/tile_mode = 1 +2/autotile/bitmask_mode = 1 +2/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +2/autotile/icon_coordinate = Vector2( 0, 3 ) +2/autotile/tile_size = Vector2( 8, 8 ) +2/autotile/spacing = 0 +2/autotile/occluder_map = [ ] +2/autotile/navpoly_map = [ ] +2/autotile/priority_map = [ ] +2/autotile/z_index_map = [ ] +2/autotile/fallback_mode = 0 +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/shape_offset = Vector2( 0, 0 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape = SubResource( 31 ) +2/shape_one_way = false +2/shape_one_way_margin = 1.0 +2/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 31 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 32 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 33 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 34 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 35 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 36 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 37 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 38 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 39 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 40 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 41 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 42 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 43 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 44 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 45 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 46 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +2/z_index = 0 +3/name = "plate_background" +3/texture = ExtResource( 1 ) +3/tex_offset = Vector2( 0, 0 ) +3/modulate = Color( 1, 1, 1, 1 ) +3/region = Rect2( 0, 32, 32, 32 ) +3/tile_mode = 1 +3/autotile/bitmask_mode = 1 +3/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +3/autotile/icon_coordinate = Vector2( 0, 3 ) +3/autotile/tile_size = Vector2( 8, 8 ) +3/autotile/spacing = 0 +3/autotile/occluder_map = [ ] +3/autotile/navpoly_map = [ ] +3/autotile/priority_map = [ ] +3/autotile/z_index_map = [ ] +3/autotile/fallback_mode = 0 +3/occluder_offset = Vector2( 0, 0 ) +3/navigation_offset = Vector2( 0, 0 ) +3/shape_offset = Vector2( 0, 0 ) +3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +3/shape_one_way = false +3/shape_one_way_margin = 0.0 +3/shapes = [ ] +3/z_index = -20 +4/name = "misc" +4/texture = ExtResource( 1 ) +4/tex_offset = Vector2( 0, 0 ) +4/modulate = Color( 1, 1, 1, 1 ) +4/region = Rect2( 0, 8, 32, 24 ) +4/tile_mode = 2 +4/autotile/icon_coordinate = Vector2( 0, 0 ) +4/autotile/tile_size = Vector2( 8, 8 ) +4/autotile/spacing = 0 +4/autotile/occluder_map = [ ] +4/autotile/navpoly_map = [ ] +4/autotile/priority_map = [ ] +4/autotile/z_index_map = [ ] +4/occluder_offset = Vector2( 0, 0 ) +4/navigation_offset = Vector2( 0, 0 ) +4/shape_offset = Vector2( 0, 0 ) +4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +4/shape = SubResource( 63 ) +4/shape_one_way = false +4/shape_one_way_margin = 1.0 +4/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 63 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": true, +"one_way_margin": 1.0, +"shape": SubResource( 64 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +4/z_index = 0 diff --git a/tilesets/t_station.tres b/tilesets/t_station.tres index ed8a090..8c786ba 100644 --- a/tilesets/t_station.tres +++ b/tilesets/t_station.tres @@ -169,6 +169,7 @@ points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) 1/autotile/navpoly_map = [ ] 1/autotile/priority_map = [ ] 1/autotile/z_index_map = [ ] +1/autotile/fallback_mode = 0 1/occluder_offset = Vector2( 0, 0 ) 1/navigation_offset = Vector2( 0, 0 ) 1/shape_offset = Vector2( 0, 0 ) diff --git a/ui/2ndpuberty_compact.fnt b/ui/2ndpuberty_compact.fnt new file mode 100644 index 0000000..bd19d2e --- /dev/null +++ b/ui/2ndpuberty_compact.fnt @@ -0,0 +1,197 @@ +info face="2ndPuberty" size=10 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=0,0,0,0 spacing=0,0 +common lineHeight=10 base=10 scaleW=112 scaleH=160 pages=1 packed=0 +page id=0 file="2ndpuberty_scholar.png" +char id=0 x=0 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9786 x=7 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9787 x=14 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9829 x=21 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9830 x=28 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9827 x=35 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9824 x=42 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8226 x=49 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9688 x=56 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9625 x=63 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9689 x=70 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9794 x=77 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9792 x=84 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9834 x=91 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9835 x=98 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9788 x=105 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9658 x=0 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9668 x=7 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8597 x=14 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8252 x=21 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=182 x=28 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=167 x=35 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9644 x=42 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8616 x=49 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8593 x=56 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8595 x=63 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8594 x=70 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8592 x=77 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8735 x=84 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8596 x=91 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9650 x=98 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9660 x=105 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=32 x=0 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=33 x=7 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=34 x=14 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=35 x=21 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=36 x=28 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=37 x=35 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=38 x=42 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=39 x=49 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=40 x=56 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=41 x=63 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=42 x=70 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=43 x=77 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=44 x=84 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=45 x=91 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=46 x=98 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=47 x=105 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=48 x=0 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=49 x=7 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=50 x=14 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=51 x=21 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=52 x=28 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=53 x=35 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=54 x=42 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=55 x=49 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=56 x=56 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=57 x=63 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=58 x=70 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=59 x=77 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=60 x=84 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=61 x=91 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=62 x=98 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=63 x=105 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=64 x=0 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=65 x=7 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=66 x=14 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=67 x=21 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=68 x=28 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=69 x=35 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=70 x=42 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=71 x=49 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=72 x=56 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=73 x=63 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=74 x=70 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=75 x=77 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=76 x=84 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=77 x=91 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=78 x=98 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=79 x=105 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=80 x=0 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=81 x=7 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=82 x=14 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=83 x=21 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=84 x=28 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=85 x=35 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=86 x=42 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=87 x=49 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=88 x=56 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=89 x=63 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=90 x=70 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=91 x=77 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=92 x=84 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=93 x=91 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=94 x=98 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=95 x=105 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=96 x=0 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=97 x=7 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=98 x=14 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=99 x=21 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=100 x=28 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=101 x=35 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=102 x=42 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=103 x=49 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=104 x=56 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=105 x=63 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=106 x=70 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=107 x=77 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=108 x=84 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=109 x=91 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=110 x=98 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=111 x=105 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=112 x=0 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=113 x=7 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=114 x=14 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=115 x=21 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=116 x=28 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=117 x=35 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=118 x=42 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=119 x=49 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=120 x=56 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=121 x=63 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=122 x=70 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=123 x=77 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=124 x=84 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=125 x=91 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=126 x=98 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=127 x=105 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=199 x=0 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=252 x=7 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=233 x=14 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=226 x=21 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=228 x=28 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=224 x=35 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=229 x=42 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=231 x=49 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=234 x=56 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=235 x=63 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=232 x=70 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=239 x=77 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=238 x=84 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=236 x=91 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=196 x=98 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=197 x=105 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=201 x=0 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=230 x=7 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=198 x=14 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=244 x=21 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=246 x=28 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=242 x=35 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=251 x=42 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=249 x=49 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=255 x=56 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=214 x=63 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=220 x=70 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=162 x=77 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=163 x=84 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=165 x=91 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8359 x=98 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=402 x=105 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=225 x=0 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=237 x=7 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=243 x=14 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=250 x=21 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=241 x=28 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=209 x=35 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=170 x=42 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=186 x=49 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=191 x=56 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8976 x=63 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=172 x=70 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=189 x=77 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=188 x=84 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=161 x=91 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=171 x=98 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=187 x=105 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9617 x=0 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9618 x=7 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9619 x=14 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9474 x=21 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9508 x=28 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9569 x=35 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9570 x=42 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9558 x=49 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9557 x=56 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9571 x=63 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9553 x=70 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9559 x=77 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9565 x=84 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9564 x=91 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9563 x=98 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9488 x=105 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9492 x=0 y=120 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9524 x=7 y=120 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 diff --git a/ui/2ndpuberty_scholar.png b/ui/2ndpuberty_scholar.png index 29c329b..b25c1bb 100644 Binary files a/ui/2ndpuberty_scholar.png and b/ui/2ndpuberty_scholar.png differ diff --git a/ui/2ndpuberty_scholar_no_dropshadow.png b/ui/2ndpuberty_scholar_no_dropshadow.png index 452d120..53f506b 100644 Binary files a/ui/2ndpuberty_scholar_no_dropshadow.png and b/ui/2ndpuberty_scholar_no_dropshadow.png differ diff --git a/ui/2ndpuberty_scholar_outline.fnt b/ui/2ndpuberty_scholar_outline.fnt new file mode 100644 index 0000000..38190d6 --- /dev/null +++ b/ui/2ndpuberty_scholar_outline.fnt @@ -0,0 +1,197 @@ +info face="2ndPuberty" size=10 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=0 aa=1 padding=0,0,0,0 spacing=0,0 +common lineHeight=10 base=10 scaleW=112 scaleH=160 pages=1 packed=0 +page id=0 file="2ndpuberty_scholar_outline.png" +char id=0 x=0 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9786 x=7 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9787 x=14 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9829 x=21 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9830 x=28 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9827 x=35 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9824 x=42 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8226 x=49 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9688 x=56 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9625 x=63 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9689 x=70 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9794 x=77 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9792 x=84 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9834 x=91 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9835 x=98 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9788 x=105 y=0 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9658 x=0 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9668 x=7 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8597 x=14 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8252 x=21 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=182 x=28 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=167 x=35 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9644 x=42 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8616 x=49 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8593 x=56 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8595 x=63 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8594 x=70 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8592 x=77 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8735 x=84 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8596 x=91 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9650 x=98 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9660 x=105 y=10 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=32 x=0 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=33 x=7 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=34 x=14 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=35 x=21 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=36 x=28 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=37 x=35 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=38 x=42 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=39 x=49 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=40 x=56 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=41 x=63 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=42 x=70 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=43 x=77 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=44 x=84 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=45 x=91 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=46 x=98 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=47 x=105 y=20 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=48 x=0 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=49 x=7 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=50 x=14 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=51 x=21 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=52 x=28 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=53 x=35 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=54 x=42 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=55 x=49 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=56 x=56 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=57 x=63 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=58 x=70 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=59 x=77 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=60 x=84 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=61 x=91 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=62 x=98 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=63 x=105 y=30 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=64 x=0 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=65 x=7 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=66 x=14 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=67 x=21 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=68 x=28 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=69 x=35 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=70 x=42 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=71 x=49 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=72 x=56 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=73 x=63 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=74 x=70 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=75 x=77 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=76 x=84 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=77 x=91 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=78 x=98 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=79 x=105 y=40 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=80 x=0 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=81 x=7 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=82 x=14 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=83 x=21 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=84 x=28 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=85 x=35 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=86 x=42 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=87 x=49 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=88 x=56 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=89 x=63 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=90 x=70 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=91 x=77 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=92 x=84 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=93 x=91 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=94 x=98 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=95 x=105 y=50 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=96 x=0 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=97 x=7 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=98 x=14 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=99 x=21 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=100 x=28 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=101 x=35 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=102 x=42 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=103 x=49 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=104 x=56 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=105 x=63 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=106 x=70 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=107 x=77 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=108 x=84 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=109 x=91 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=110 x=98 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=111 x=105 y=60 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=112 x=0 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=113 x=7 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=114 x=14 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=115 x=21 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=116 x=28 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=117 x=35 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=118 x=42 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=119 x=49 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=120 x=56 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=121 x=63 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=122 x=70 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=123 x=77 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=124 x=84 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=125 x=91 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=126 x=98 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=127 x=105 y=70 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=199 x=0 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=252 x=7 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=233 x=14 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=226 x=21 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=228 x=28 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=224 x=35 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=229 x=42 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=231 x=49 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=234 x=56 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=235 x=63 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=232 x=70 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=239 x=77 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=238 x=84 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=236 x=91 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=196 x=98 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=197 x=105 y=80 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=201 x=0 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=230 x=7 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=198 x=14 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=244 x=21 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=246 x=28 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=242 x=35 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=251 x=42 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=249 x=49 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=255 x=56 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=214 x=63 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=220 x=70 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=162 x=77 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=163 x=84 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=165 x=91 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8359 x=98 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=402 x=105 y=90 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=225 x=0 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=237 x=7 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=243 x=14 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=250 x=21 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=241 x=28 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=209 x=35 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=170 x=42 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=186 x=49 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=191 x=56 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=8976 x=63 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=172 x=70 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=189 x=77 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=188 x=84 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=161 x=91 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=171 x=98 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=187 x=105 y=100 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9617 x=0 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9618 x=7 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9619 x=14 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9474 x=21 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9508 x=28 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9569 x=35 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9570 x=42 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9558 x=49 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9557 x=56 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9571 x=63 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9553 x=70 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9559 x=77 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9565 x=84 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9564 x=91 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9563 x=98 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9488 x=105 y=110 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9492 x=0 y=120 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 +char id=9524 x=7 y=120 width=7 height=10 xoffset=0 yoffset=0 xadvance=7 page=0 chnl=0 diff --git a/ui/2ndpuberty_scholar_outline.png b/ui/2ndpuberty_scholar_outline.png new file mode 100644 index 0000000..edacf10 Binary files /dev/null and b/ui/2ndpuberty_scholar_outline.png differ diff --git a/ui/2ndpuberty_scholar_outline.png.import b/ui/2ndpuberty_scholar_outline.png.import new file mode 100644 index 0000000..f9a18cc --- /dev/null +++ b/ui/2ndpuberty_scholar_outline.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/2ndpuberty_scholar_outline.png-ba984a285473c720426af8de55ff24d7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/2ndpuberty_scholar_outline.png" +dest_files=[ "res://.import/2ndpuberty_scholar_outline.png-ba984a285473c720426af8de55ff24d7.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/ui/Boba Date.otf b/ui/Boba Date.otf new file mode 100644 index 0000000..c66647a Binary files /dev/null and b/ui/Boba Date.otf differ diff --git a/ui/HooskaiChamferedSquare.ttf b/ui/HooskaiChamferedSquare.ttf new file mode 100644 index 0000000..2817281 Binary files /dev/null and b/ui/HooskaiChamferedSquare.ttf differ diff --git a/ui/Kozuka Mincho Std H.otf b/ui/Kozuka Mincho Std H.otf new file mode 100644 index 0000000..e698a3e Binary files /dev/null and b/ui/Kozuka Mincho Std H.otf differ diff --git a/ui/Minimal5x5Monospaced.ttf b/ui/Minimal5x5Monospaced.ttf new file mode 100644 index 0000000..8ef9fa1 Binary files /dev/null and b/ui/Minimal5x5Monospaced.ttf differ diff --git a/ui/PressStart2P-Regular.ttf b/ui/PressStart2P-Regular.ttf new file mode 100644 index 0000000..2442aff Binary files /dev/null and b/ui/PressStart2P-Regular.ttf differ diff --git a/ui/arrow_figure_8.tres b/ui/arrow_figure_8.tres new file mode 100644 index 0000000..f053b52 --- /dev/null +++ b/ui/arrow_figure_8.tres @@ -0,0 +1,10 @@ +[gd_resource type="ShaderMaterial" load_steps=2 format=2] + +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=1] + +[resource] +shader = ExtResource( 1 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) diff --git a/ui/theme.tres b/ui/theme.tres index f123efb..60e54f1 100644 --- a/ui/theme.tres +++ b/ui/theme.tres @@ -1,4 +1,4 @@ -[gd_resource type="Theme" load_steps=15 format=2] +[gd_resource type="Theme" load_steps=17 format=2] [ext_resource path="res://ui/2ndpuberty_scholar.fnt" type="BitmapFont" id=1] [ext_resource path="res://graphics/hud/hslider_slider.png" type="Texture" id=2] @@ -17,6 +17,9 @@ expand_margin_bottom = 2.0 [sub_resource type="StyleBoxEmpty" id=8] +[sub_resource type="StyleBoxLine" id=17] +color = Color( 0.501961, 0.501961, 0.501961, 1 ) + [sub_resource type="StyleBoxEmpty" id=4] [sub_resource type="StyleBoxEmpty" id=10] @@ -33,12 +36,14 @@ margin_right = 3.0 margin_top = 3.0 margin_bottom = 3.0 -[sub_resource type="StyleBoxEmpty" id=1] +[sub_resource type="StyleBoxEmpty" id=16] [sub_resource type="StyleBoxEmpty" id=2] content_margin_left = 4.0 content_margin_right = 4.0 +[sub_resource type="StyleBoxEmpty" id=18] + [resource] default_font = ExtResource( 1 ) Button/colors/font_color = Color( 0.690196, 0.690196, 0.690196, 1 ) @@ -47,6 +52,7 @@ Button/styles/focus = SubResource( 9 ) Button/styles/hover = SubResource( 8 ) Button/styles/normal = SubResource( 3 ) Button/styles/pressed = SubResource( 3 ) +HSeparator/styles/separator = SubResource( 17 ) HSlider/icons/grabber = ExtResource( 3 ) HSlider/icons/grabber_highlight = ExtResource( 4 ) HSlider/styles/grabber_area = SubResource( 4 ) @@ -55,7 +61,8 @@ HSlider/styles/slider = SubResource( 6 ) Panel/styles/panel = SubResource( 11 ) PanelContainer/styles/panel = SubResource( 11 ) TabContainer/colors/font_color_fg = Color( 1, 1, 1, 1 ) -TabContainer/styles/panel = SubResource( 1 ) +TabContainer/styles/panel = SubResource( 16 ) TabContainer/styles/tab_bg = SubResource( 2 ) TabContainer/styles/tab_disabled = SubResource( 2 ) TabContainer/styles/tab_fg = SubResource( 2 ) +VScrollBar/styles/scroll = SubResource( 18 )