diff --git a/Assets/Fonts/GGBotNet Fonts.URL b/Assets/Fonts/GGBotNet Fonts.URL new file mode 100644 index 0000000..92330fe --- /dev/null +++ b/Assets/Fonts/GGBotNet Fonts.URL @@ -0,0 +1,6 @@ +[InternetShortcut] +URL=https://www.ggbot.net/fonts/ +IDList= +HotKey=0 +IconFile=C:\Users\Athlon\AppData\Local\Mozilla\Firefox\Profiles\t5d8jr1d.default-release\shortcutCache\ZRrQulzoUnAxm295PMhxNw==.ico +IconIndex=0 diff --git a/Assets/Fonts/GGBotNet.url b/Assets/Fonts/GGBotNet.url new file mode 100644 index 0000000..41a3eea --- /dev/null +++ b/Assets/Fonts/GGBotNet.url @@ -0,0 +1,6 @@ +[InternetShortcut] +URL=https://www.ggbot.net/ +IDList= +HotKey=0 +IconFile=C:\Users\SP700\AppData\Local\Mozilla\Firefox\Profiles\tlgohe1j.default-release-1686839021344\shortcutCache\V3OJf0WjaJbbl2w8qYtwsQ==.ico +IconIndex=0 diff --git a/Assets/Fonts/License.txt b/Assets/Fonts/License.txt new file mode 100644 index 0000000..bf70fdb --- /dev/null +++ b/Assets/Fonts/License.txt @@ -0,0 +1,92 @@ +Copyright © 2023 GGBotNet (https://ggbot.net/fonts), with Reserved Font Name "Zero Cool". + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/Assets/Fonts/OpenType (.otf)/Sagewold-Italic.otf b/Assets/Fonts/OpenType (.otf)/Sagewold-Italic.otf new file mode 100644 index 0000000..04fbe66 Binary files /dev/null and b/Assets/Fonts/OpenType (.otf)/Sagewold-Italic.otf differ diff --git a/Assets/Fonts/OpenType (.otf)/Sagewold-Italic.otf.import b/Assets/Fonts/OpenType (.otf)/Sagewold-Italic.otf.import new file mode 100644 index 0000000..696789d --- /dev/null +++ b/Assets/Fonts/OpenType (.otf)/Sagewold-Italic.otf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://caaufsj1hpqh0" +path="res://.godot/imported/Sagewold-Italic.otf-4ca33e03edd8eb7e14ebbc66e75c1c7c.fontdata" + +[deps] + +source_file="res://Assets/Fonts/OpenType (.otf)/Sagewold-Italic.otf" +dest_files=["res://.godot/imported/Sagewold-Italic.otf-4ca33e03edd8eb7e14ebbc66e75c1c7c.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/Assets/Fonts/OpenType (.otf)/Sagewold-Regular.otf b/Assets/Fonts/OpenType (.otf)/Sagewold-Regular.otf new file mode 100644 index 0000000..ea40e10 Binary files /dev/null and b/Assets/Fonts/OpenType (.otf)/Sagewold-Regular.otf differ diff --git a/Assets/Fonts/OpenType (.otf)/Sagewold-Regular.otf.import b/Assets/Fonts/OpenType (.otf)/Sagewold-Regular.otf.import new file mode 100644 index 0000000..9357873 --- /dev/null +++ b/Assets/Fonts/OpenType (.otf)/Sagewold-Regular.otf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://dpmlcggvellwh" +path="res://.godot/imported/Sagewold-Regular.otf-2736ca04ef2e308844658eacdf4e6898.fontdata" + +[deps] + +source_file="res://Assets/Fonts/OpenType (.otf)/Sagewold-Regular.otf" +dest_files=["res://.godot/imported/Sagewold-Regular.otf-2736ca04ef2e308844658eacdf4e6898.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/Assets/Fonts/TrueType (.ttf)/Sagewold-Italic.ttf b/Assets/Fonts/TrueType (.ttf)/Sagewold-Italic.ttf new file mode 100644 index 0000000..ac2a1ab Binary files /dev/null and b/Assets/Fonts/TrueType (.ttf)/Sagewold-Italic.ttf differ diff --git a/Assets/Fonts/TrueType (.ttf)/Sagewold-Italic.ttf.import b/Assets/Fonts/TrueType (.ttf)/Sagewold-Italic.ttf.import new file mode 100644 index 0000000..203ffe2 --- /dev/null +++ b/Assets/Fonts/TrueType (.ttf)/Sagewold-Italic.ttf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://bw485mmvbbema" +path="res://.godot/imported/Sagewold-Italic.ttf-e75eb01730141e3aa220f70e455819f2.fontdata" + +[deps] + +source_file="res://Assets/Fonts/TrueType (.ttf)/Sagewold-Italic.ttf" +dest_files=["res://.godot/imported/Sagewold-Italic.ttf-e75eb01730141e3aa220f70e455819f2.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/Assets/Fonts/TrueType (.ttf)/Sagewold-Regular.ttf b/Assets/Fonts/TrueType (.ttf)/Sagewold-Regular.ttf new file mode 100644 index 0000000..0ac8fec Binary files /dev/null and b/Assets/Fonts/TrueType (.ttf)/Sagewold-Regular.ttf differ diff --git a/Assets/Fonts/TrueType (.ttf)/Sagewold-Regular.ttf.import b/Assets/Fonts/TrueType (.ttf)/Sagewold-Regular.ttf.import new file mode 100644 index 0000000..e27b356 --- /dev/null +++ b/Assets/Fonts/TrueType (.ttf)/Sagewold-Regular.ttf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://c17ml15e2qan0" +path="res://.godot/imported/Sagewold-Regular.ttf-54c356928afdc09b056660b55475a6c1.fontdata" + +[deps] + +source_file="res://Assets/Fonts/TrueType (.ttf)/Sagewold-Regular.ttf" +dest_files=["res://.godot/imported/Sagewold-Regular.ttf-54c356928afdc09b056660b55475a6c1.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Italic.woff b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Italic.woff new file mode 100644 index 0000000..f23452f Binary files /dev/null and b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Italic.woff differ diff --git a/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Italic.woff.import b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Italic.woff.import new file mode 100644 index 0000000..017c9b1 --- /dev/null +++ b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Italic.woff.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://df01p1bj7rkv6" +path="res://.godot/imported/Sagewold-Italic.woff-4c025631b11a5f1e03e37687c7e6468d.fontdata" + +[deps] + +source_file="res://Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Italic.woff" +dest_files=["res://.godot/imported/Sagewold-Italic.woff-4c025631b11a5f1e03e37687c7e6468d.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Italic.woff2 b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Italic.woff2 new file mode 100644 index 0000000..26521aa Binary files /dev/null and b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Italic.woff2 differ diff --git a/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Italic.woff2.import b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Italic.woff2.import new file mode 100644 index 0000000..4cf3b1b --- /dev/null +++ b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Italic.woff2.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://ghkfj8nyhi4b" +path="res://.godot/imported/Sagewold-Italic.woff2-5feac29bc2b7ba3f9bf67812de5adea5.fontdata" + +[deps] + +source_file="res://Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Italic.woff2" +dest_files=["res://.godot/imported/Sagewold-Italic.woff2-5feac29bc2b7ba3f9bf67812de5adea5.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Regular.woff b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Regular.woff new file mode 100644 index 0000000..e1dc7f7 Binary files /dev/null and b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Regular.woff differ diff --git a/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Regular.woff.import b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Regular.woff.import new file mode 100644 index 0000000..7581a46 --- /dev/null +++ b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Regular.woff.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://4wwoq3q0gyts" +path="res://.godot/imported/Sagewold-Regular.woff-c366a9f184f8d253379bbf6fe3a96827.fontdata" + +[deps] + +source_file="res://Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Regular.woff" +dest_files=["res://.godot/imported/Sagewold-Regular.woff-c366a9f184f8d253379bbf6fe3a96827.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Regular.woff2 b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Regular.woff2 new file mode 100644 index 0000000..3ac4330 Binary files /dev/null and b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Regular.woff2 differ diff --git a/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Regular.woff2.import b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Regular.woff2.import new file mode 100644 index 0000000..de5ac4a --- /dev/null +++ b/Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Regular.woff2.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://ds1jxkypogx4l" +path="res://.godot/imported/Sagewold-Regular.woff2-adb6e330712013477fa77cdd18754d3e.fontdata" + +[deps] + +source_file="res://Assets/Fonts/Web Open Font Format (.woff)/Sagewold-Regular.woff2" +dest_files=["res://.godot/imported/Sagewold-Regular.woff2-adb6e330712013477fa77cdd18754d3e.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/Assets/Fonts/ZeroCool.otf b/Assets/Fonts/ZeroCool.otf new file mode 100644 index 0000000..695f681 Binary files /dev/null and b/Assets/Fonts/ZeroCool.otf differ diff --git a/Assets/Fonts/ZeroCool.otf.import b/Assets/Fonts/ZeroCool.otf.import new file mode 100644 index 0000000..81ec45a --- /dev/null +++ b/Assets/Fonts/ZeroCool.otf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://blaiq4oecs43j" +path="res://.godot/imported/ZeroCool.otf-b87d802ada8ec6a63a987d406ae3eda8.fontdata" + +[deps] + +source_file="res://Assets/Fonts/ZeroCool.otf" +dest_files=["res://.godot/imported/ZeroCool.otf-b87d802ada8ec6a63a987d406ae3eda8.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/Assets/Fonts/ZeroCool.ttf b/Assets/Fonts/ZeroCool.ttf new file mode 100644 index 0000000..cbee31b Binary files /dev/null and b/Assets/Fonts/ZeroCool.ttf differ diff --git a/Assets/Fonts/ZeroCool.ttf.import b/Assets/Fonts/ZeroCool.ttf.import new file mode 100644 index 0000000..64ac823 --- /dev/null +++ b/Assets/Fonts/ZeroCool.ttf.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://drxnknu6arfhk" +path="res://.godot/imported/ZeroCool.ttf-c322e4e6fb5873c3ae124e8cf714423e.fontdata" + +[deps] + +source_file="res://Assets/Fonts/ZeroCool.ttf" +dest_files=["res://.godot/imported/ZeroCool.ttf-c322e4e6fb5873c3ae124e8cf714423e.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/Assets/Fonts/ZeroCool.woff b/Assets/Fonts/ZeroCool.woff new file mode 100644 index 0000000..a0c2d94 Binary files /dev/null and b/Assets/Fonts/ZeroCool.woff differ diff --git a/Assets/Fonts/ZeroCool.woff.import b/Assets/Fonts/ZeroCool.woff.import new file mode 100644 index 0000000..122beee --- /dev/null +++ b/Assets/Fonts/ZeroCool.woff.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://1ot61uqgd2gx" +path="res://.godot/imported/ZeroCool.woff-1292a5404733a8a9a5c73eebd1c15ec5.fontdata" + +[deps] + +source_file="res://Assets/Fonts/ZeroCool.woff" +dest_files=["res://.godot/imported/ZeroCool.woff-1292a5404733a8a9a5c73eebd1c15ec5.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/Assets/Fonts/ZeroCool.woff2 b/Assets/Fonts/ZeroCool.woff2 new file mode 100644 index 0000000..966976b Binary files /dev/null and b/Assets/Fonts/ZeroCool.woff2 differ diff --git a/Assets/Fonts/ZeroCool.woff2.import b/Assets/Fonts/ZeroCool.woff2.import new file mode 100644 index 0000000..bff1a65 --- /dev/null +++ b/Assets/Fonts/ZeroCool.woff2.import @@ -0,0 +1,35 @@ +[remap] + +importer="font_data_dynamic" +type="FontFile" +uid="uid://b7nq2bcyo8bqn" +path="res://.godot/imported/ZeroCool.woff2-25b1a31bf1a3036a135d568507ce3059.fontdata" + +[deps] + +source_file="res://Assets/Fonts/ZeroCool.woff2" +dest_files=["res://.godot/imported/ZeroCool.woff2-25b1a31bf1a3036a135d568507ce3059.fontdata"] + +[params] + +Rendering=null +antialiasing=1 +generate_mipmaps=false +disable_embedded_bitmaps=true +multichannel_signed_distance_field=false +msdf_pixel_range=8 +msdf_size=48 +allow_system_fallback=true +force_autohinter=false +hinting=1 +subpixel_positioning=4 +keep_rounding_remainders=true +oversampling=0.0 +Fallbacks=null +fallbacks=[] +Compress=null +compress=true +preload=[] +language_support={} +script_support={} +opentype_features={} diff --git a/Assets/TextureAtlases/funbox.glb.import b/Assets/TextureAtlases/funbox.glb.import index c1a6680..3408aec 100644 --- a/Assets/TextureAtlases/funbox.glb.import +++ b/Assets/TextureAtlases/funbox.glb.import @@ -17,6 +17,8 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true @@ -28,6 +30,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} gltf/naming_version=0 diff --git a/Assets/TextureAtlases/target_list.tres b/Assets/TextureAtlases/target_list.tres index 03bf748..04834b0 100644 --- a/Assets/TextureAtlases/target_list.tres +++ b/Assets/TextureAtlases/target_list.tres @@ -1,6 +1,6 @@ [gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://bgeu8dnqaxq7v"] -[ext_resource type="Texture2D" uid="uid://cc2umukpibmx1" path="res://PCs/Mechanic/ClassCards/RocketLauncher/target_list.png" id="1_s0pjb"] +[ext_resource type="Texture2D" uid="uid://cc2umukpibmx1" path="res://Weapons/RocketLauncher/target_list.png" id="1_s0pjb"] [resource] atlas = ExtResource("1_s0pjb") diff --git a/Assets/Textures/dead_leapfrog.png b/Assets/Textures/dead_leapfrog.png new file mode 100644 index 0000000..6f812c4 Binary files /dev/null and b/Assets/Textures/dead_leapfrog.png differ diff --git a/Assets/Textures/dead_leapfrog.png.import b/Assets/Textures/dead_leapfrog.png.import new file mode 100644 index 0000000..ac74fdf --- /dev/null +++ b/Assets/Textures/dead_leapfrog.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bl16mvx4xaxeb" +path="res://.godot/imported/dead_leapfrog.png-bb37d46462c26bbd15566ccbae5099bb.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Textures/dead_leapfrog.png" +dest_files=["res://.godot/imported/dead_leapfrog.png-bb37d46462c26bbd15566ccbae5099bb.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Assets/Textures/energy_bar.png b/Assets/Textures/energy_bar.png new file mode 100644 index 0000000..1067153 Binary files /dev/null and b/Assets/Textures/energy_bar.png differ diff --git a/Assets/Textures/yeen.png.import b/Assets/Textures/energy_bar.png.import similarity index 68% rename from Assets/Textures/yeen.png.import rename to Assets/Textures/energy_bar.png.import index 1344a50..e55e791 100644 --- a/Assets/Textures/yeen.png.import +++ b/Assets/Textures/energy_bar.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://bvybr3fwnw46p" -path="res://.godot/imported/yeen.png-7e4cd8ed0042fa789621e24f031bf7be.ctex" +uid="uid://b1y1d1ge4fl8p" +path="res://.godot/imported/energy_bar.png-c1f9495b0e5ea24d28bbba9e11508b20.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Assets/Textures/yeen.png" -dest_files=["res://.godot/imported/yeen.png-7e4cd8ed0042fa789621e24f031bf7be.ctex"] +source_file="res://Assets/Textures/energy_bar.png" +dest_files=["res://.godot/imported/energy_bar.png-c1f9495b0e5ea24d28bbba9e11508b20.ctex"] [params] diff --git a/Assets/Textures/energy_bar_bg.png b/Assets/Textures/energy_bar_bg.png new file mode 100644 index 0000000..149aa23 Binary files /dev/null and b/Assets/Textures/energy_bar_bg.png differ diff --git a/Assets/Textures/energy_bar_bg.png.import b/Assets/Textures/energy_bar_bg.png.import new file mode 100644 index 0000000..96e4ea7 --- /dev/null +++ b/Assets/Textures/energy_bar_bg.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://3vqulb1vpy7h" +path="res://.godot/imported/energy_bar_bg.png-3284065599213f05e9b5d2ff7ed4a5fc.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Textures/energy_bar_bg.png" +dest_files=["res://.godot/imported/energy_bar_bg.png-3284065599213f05e9b5d2ff7ed4a5fc.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Assets/Textures/energy_bar_overlay.png b/Assets/Textures/energy_bar_overlay.png new file mode 100644 index 0000000..e395ce3 Binary files /dev/null and b/Assets/Textures/energy_bar_overlay.png differ diff --git a/Assets/Textures/energy_bar_overlay.png.import b/Assets/Textures/energy_bar_overlay.png.import new file mode 100644 index 0000000..b93d7f4 --- /dev/null +++ b/Assets/Textures/energy_bar_overlay.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxh488oh3jtr7" +path="res://.godot/imported/energy_bar_overlay.png-d68d139d0736ffa88f21043213852e8d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Textures/energy_bar_overlay.png" +dest_files=["res://.godot/imported/energy_bar_overlay.png-d68d139d0736ffa88f21043213852e8d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Assets/Textures/energy_cell.png b/Assets/Textures/energy_cell.png new file mode 100644 index 0000000..f792823 Binary files /dev/null and b/Assets/Textures/energy_cell.png differ diff --git a/Assets/Textures/energy_cell.png.import b/Assets/Textures/energy_cell.png.import new file mode 100644 index 0000000..83a17e6 --- /dev/null +++ b/Assets/Textures/energy_cell.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bm13bgpre6ubr" +path="res://.godot/imported/energy_cell.png-605a1f7780b5c5e525b132b30c632ed0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Textures/energy_cell.png" +dest_files=["res://.godot/imported/energy_cell.png-605a1f7780b5c5e525b132b30c632ed0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Assets/Textures/first_scroll_seen.png b/Assets/Textures/first_scroll_seen.png new file mode 100644 index 0000000..2a5c111 Binary files /dev/null and b/Assets/Textures/first_scroll_seen.png differ diff --git a/Assets/Textures/first_scroll_seen.png.import b/Assets/Textures/first_scroll_seen.png.import new file mode 100644 index 0000000..81550e2 --- /dev/null +++ b/Assets/Textures/first_scroll_seen.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cpa1hl36xfplg" +path="res://.godot/imported/first_scroll_seen.png-cd94ed2f8b58068fd62846489455a3bf.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Textures/first_scroll_seen.png" +dest_files=["res://.godot/imported/first_scroll_seen.png-cd94ed2f8b58068fd62846489455a3bf.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Assets/Textures/first_win_achievements.png b/Assets/Textures/first_win_achievements.png new file mode 100644 index 0000000..03eba95 Binary files /dev/null and b/Assets/Textures/first_win_achievements.png differ diff --git a/Assets/Textures/first_win_achievements.png.import b/Assets/Textures/first_win_achievements.png.import new file mode 100644 index 0000000..62d1a48 --- /dev/null +++ b/Assets/Textures/first_win_achievements.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cr1ucbuw3iotp" +path="res://.godot/imported/first_win_achievements.png-5053a474707a379a9c2e803ae610043c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Textures/first_win_achievements.png" +dest_files=["res://.godot/imported/first_win_achievements.png-5053a474707a379a9c2e803ae610043c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Assets/Textures/leapfrog.png b/Assets/Textures/leapfrog.png new file mode 100644 index 0000000..c9f5c86 Binary files /dev/null and b/Assets/Textures/leapfrog.png differ diff --git a/Assets/Textures/doe.png.import b/Assets/Textures/leapfrog.png.import similarity index 68% rename from Assets/Textures/doe.png.import rename to Assets/Textures/leapfrog.png.import index 0373cfe..b4b5a8c 100644 --- a/Assets/Textures/doe.png.import +++ b/Assets/Textures/leapfrog.png.import @@ -2,16 +2,16 @@ importer="texture" type="CompressedTexture2D" -uid="uid://d4jd718brpsed" -path="res://.godot/imported/doe.png-0b462f474a89e4444087921c34063883.ctex" +uid="uid://3ywtwfpuuknr" +path="res://.godot/imported/leapfrog.png-f7dde04a73a0e341fa43fa4423b81ca9.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://Assets/Textures/doe.png" -dest_files=["res://.godot/imported/doe.png-0b462f474a89e4444087921c34063883.ctex"] +source_file="res://Assets/Textures/leapfrog.png" +dest_files=["res://.godot/imported/leapfrog.png-f7dde04a73a0e341fa43fa4423b81ca9.ctex"] [params] diff --git a/Assets/Textures/leapfrog_2.png b/Assets/Textures/leapfrog_2.png new file mode 100644 index 0000000..5b10094 Binary files /dev/null and b/Assets/Textures/leapfrog_2.png differ diff --git a/Assets/Textures/leapfrog_2.png.import b/Assets/Textures/leapfrog_2.png.import new file mode 100644 index 0000000..06f76eb --- /dev/null +++ b/Assets/Textures/leapfrog_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cb66pspr16scy" +path="res://.godot/imported/leapfrog_2.png-6ca968bda2f2a97809552ed0bab21743.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Textures/leapfrog_2.png" +dest_files=["res://.godot/imported/leapfrog_2.png-6ca968bda2f2a97809552ed0bab21743.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Assets/Textures/stars_legendary-Sheet.png b/Assets/Textures/stars_legendary-Sheet.png new file mode 100644 index 0000000..8a879de Binary files /dev/null and b/Assets/Textures/stars_legendary-Sheet.png differ diff --git a/Assets/Textures/stars_legendary-Sheet.png.import b/Assets/Textures/stars_legendary-Sheet.png.import new file mode 100644 index 0000000..1581d6b --- /dev/null +++ b/Assets/Textures/stars_legendary-Sheet.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c7tnda7he8u5l" +path="res://.godot/imported/stars_legendary-Sheet.png-40da6e30ba3a0a933f7911576b328b3e.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Textures/stars_legendary-Sheet.png" +dest_files=["res://.godot/imported/stars_legendary-Sheet.png-40da6e30ba3a0a933f7911576b328b3e.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Assets/Textures/unlock_mage_achievement.png b/Assets/Textures/unlock_mage_achievement.png new file mode 100644 index 0000000..a7f03fd Binary files /dev/null and b/Assets/Textures/unlock_mage_achievement.png differ diff --git a/Assets/Textures/unlock_mage_achievement.png.import b/Assets/Textures/unlock_mage_achievement.png.import new file mode 100644 index 0000000..d4f5825 --- /dev/null +++ b/Assets/Textures/unlock_mage_achievement.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ctbi3gm1me1t5" +path="res://.godot/imported/unlock_mage_achievement.png-10850c17ed13947ae0f5e3d5ad9ee812.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Assets/Textures/unlock_mage_achievement.png" +dest_files=["res://.godot/imported/unlock_mage_achievement.png-10850c17ed13947ae0f5e3d5ad9ee812.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/PCs/Entomologist/ClassCards/Blowdart/shot1.wav b/Audio/shot1.wav similarity index 100% rename from PCs/Entomologist/ClassCards/Blowdart/shot1.wav rename to Audio/shot1.wav diff --git a/shot1.wav.import b/Audio/shot1.wav.import similarity index 57% rename from shot1.wav.import rename to Audio/shot1.wav.import index afeb522..a24ce4f 100644 --- a/shot1.wav.import +++ b/Audio/shot1.wav.import @@ -3,12 +3,12 @@ importer="wav" type="AudioStreamWAV" uid="uid://dknygn5eyuhxt" -path="res://.godot/imported/shot1.wav-8cfbbb7b0ff749051ef7f7716ad4f12e.sample" +path="res://.godot/imported/shot1.wav-f0b2a9d8f63adc3e11dc4e53681d4f29.sample" [deps] -source_file="res://shot1.wav" -dest_files=["res://.godot/imported/shot1.wav-8cfbbb7b0ff749051ef7f7716ad4f12e.sample"] +source_file="res://Audio/shot1.wav" +dest_files=["res://.godot/imported/shot1.wav-f0b2a9d8f63adc3e11dc4e53681d4f29.sample"] [params] diff --git a/Cards/ascension.tres b/Cards/ascension.tres new file mode 100644 index 0000000..58f11b1 --- /dev/null +++ b/Cards/ascension.tres @@ -0,0 +1,18 @@ +[gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://bga736m7furat"] + +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_wkie7"] +[ext_resource type="Resource" uid="uid://c756rtt7ujowk" path="res://Towers/Ascension/tower_stats.tres" id="2_uoj3t"] +[ext_resource type="PackedScene" uid="uid://dk1pt2f1qya1m" path="res://Towers/Ascension/tower.tscn" id="2_vk6xf"] +[ext_resource type="PackedScene" uid="uid://df27vi4stdgjx" path="res://Weapons/Ascension/ascension.tscn" id="4_3q334"] +[ext_resource type="Resource" uid="uid://do05i1xtdwfqk" path="res://Weapons/Ascension/weapon_stats.tres" id="5_dw3gx"] + +[resource] +script = ExtResource("1_wkie7") +rarity = 1 +faction = 2 +turret_scene = ExtResource("2_vk6xf") +weapon_scene = ExtResource("4_3q334") +weapon_stats = ExtResource("5_dw3gx") +tower_stats = ExtResource("2_uoj3t") +display_name = "Ascension" +metadata/_custom_type_script = "uid://d40isem6w5d8" diff --git a/PCs/Mechanic/ClassCards/Assault/card_assault.tres b/Cards/assault.tres similarity index 54% rename from PCs/Mechanic/ClassCards/Assault/card_assault.tres rename to Cards/assault.tres index ea20845..5de968d 100644 --- a/PCs/Mechanic/ClassCards/Assault/card_assault.tres +++ b/Cards/assault.tres @@ -1,15 +1,15 @@ [gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://deer0awg4d18o"] -[ext_resource type="Script" path="res://Scripts/Resources/card.gd" id="1_yqa4b"] -[ext_resource type="PackedScene" uid="uid://2eehfcrsednw" path="res://PCs/Mechanic/ClassCards/Assault/weapon_assault.tscn" id="3_28y3b"] -[ext_resource type="Resource" uid="uid://bdmsiw45xxhiv" path="res://PCs/Mechanic/ClassCards/Assault/tower_stats.tres" id="3_ks0jw"] -[ext_resource type="PackedScene" uid="uid://bbfm4i4xlkwdr" path="res://PCs/Mechanic/ClassCards/Assault/tower_assault.tscn" id="4_5nu32"] -[ext_resource type="Resource" uid="uid://smctw4ogm4rx" path="res://PCs/Mechanic/ClassCards/Assault/weapon_stats.tres" id="4_est7t"] +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_yqa4b"] +[ext_resource type="PackedScene" uid="uid://2eehfcrsednw" path="res://Weapons/Assault/weapon_assault.tscn" id="3_28y3b"] +[ext_resource type="Resource" uid="uid://bdmsiw45xxhiv" path="res://Towers/Assault/tower_stats.tres" id="3_ks0jw"] +[ext_resource type="PackedScene" uid="uid://chbmp1ap8jc7" path="res://Towers/Assault/tower_assault.tscn" id="4_5nu32"] +[ext_resource type="Resource" uid="uid://smctw4ogm4rx" path="res://Weapons/Assault/weapon_stats.tres" id="4_est7t"] [resource] script = ExtResource("1_yqa4b") rarity = 0 -faction = 0 +faction = 1 turret_scene = ExtResource("4_5nu32") weapon_scene = ExtResource("3_28y3b") weapon_stats = ExtResource("4_est7t") diff --git a/PCs/Entomologist/ClassCards/Blowdart/card_blowdart.tres b/Cards/blowdart.tres similarity index 54% rename from PCs/Entomologist/ClassCards/Blowdart/card_blowdart.tres rename to Cards/blowdart.tres index 7ffe886..e192c7c 100644 --- a/PCs/Entomologist/ClassCards/Blowdart/card_blowdart.tres +++ b/Cards/blowdart.tres @@ -1,10 +1,10 @@ [gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://bywwtjdjsgdsj"] -[ext_resource type="Script" path="res://Scripts/Resources/card.gd" id="1_nobd8"] -[ext_resource type="PackedScene" uid="uid://cy05ssd52exf0" path="res://PCs/Entomologist/ClassCards/Blowdart/weapon_blowdart.tscn" id="3_shm45"] -[ext_resource type="Resource" uid="uid://cfbap4o68urti" path="res://PCs/Entomologist/ClassCards/Blowdart/tower_stats.tres" id="3_t7ppb"] -[ext_resource type="PackedScene" uid="uid://cq5q6c28pwi47" path="res://PCs/Entomologist/ClassCards/Blowdart/tower_blowdart.tscn" id="4_wvh75"] -[ext_resource type="Resource" uid="uid://c6e50linnk2i7" path="res://PCs/Entomologist/ClassCards/Blowdart/weapon_stats.tres" id="4_x71t4"] +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_nobd8"] +[ext_resource type="PackedScene" uid="uid://cy05ssd52exf0" path="res://Weapons/Blowdart/weapon_blowdart.tscn" id="3_shm45"] +[ext_resource type="Resource" uid="uid://cfbap4o68urti" path="res://Towers/Blowdart/tower_stats.tres" id="3_t7ppb"] +[ext_resource type="PackedScene" uid="uid://byyndhj0xoouf" path="res://Towers/Blowdart/tower_blowdart.tscn" id="4_wvh75"] +[ext_resource type="Resource" uid="uid://c6e50linnk2i7" path="res://Weapons/Blowdart/weapon_stats.tres" id="4_x71t4"] [resource] script = ExtResource("1_nobd8") diff --git a/Cards/bomb_launcher.tres b/Cards/bomb_launcher.tres new file mode 100644 index 0000000..e514d20 --- /dev/null +++ b/Cards/bomb_launcher.tres @@ -0,0 +1,17 @@ +[gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://blgngx360vff1"] + +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_qtxcq"] +[ext_resource type="Resource" uid="uid://8eaecilvan23" path="res://Towers/BombLauncher/tower_stats.tres" id="3_gknxe"] +[ext_resource type="PackedScene" uid="uid://c3fqlkytyc62u" path="res://Weapons/BombLauncher/weapon_bomb_launcher.tscn" id="3_s56j6"] +[ext_resource type="PackedScene" uid="uid://bod84abxnnmdo" path="res://Towers/BombLauncher/bombtower.tscn" id="3_v4x2k"] +[ext_resource type="Resource" uid="uid://co6eorobj1xuu" path="res://Weapons/BombLauncher/weapon_stats.tres" id="4_s74ea"] + +[resource] +script = ExtResource("1_qtxcq") +rarity = 0 +faction = 1 +turret_scene = ExtResource("3_v4x2k") +weapon_scene = ExtResource("3_s56j6") +weapon_stats = ExtResource("4_s74ea") +tower_stats = ExtResource("3_gknxe") +display_name = "Bomb Launcher" diff --git a/Cards/fireball.tres b/Cards/fireball.tres new file mode 100644 index 0000000..d4bff46 --- /dev/null +++ b/Cards/fireball.tres @@ -0,0 +1,17 @@ +[gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://bibx2my7igspq"] + +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_qktm8"] +[ext_resource type="Resource" uid="uid://dnvqghpwyuw84" path="res://Towers/Fireball/tower_stats.tres" id="2_yfpht"] +[ext_resource type="PackedScene" uid="uid://bhbfd3prwqmyx" path="res://Towers/Fireball/fireballtower.tscn" id="3_gdfiu"] +[ext_resource type="PackedScene" uid="uid://dnwjfb4fexr0o" path="res://Weapons/Fireball/weapon_fireball.tscn" id="4_mpiuf"] +[ext_resource type="Resource" uid="uid://dhwhwicgpw7yh" path="res://Weapons/Fireball/weapon_stats.tres" id="5_ey1sc"] + +[resource] +script = ExtResource("1_qktm8") +rarity = 3 +faction = 2 +turret_scene = ExtResource("3_gdfiu") +weapon_scene = ExtResource("4_mpiuf") +weapon_stats = ExtResource("5_ey1sc") +tower_stats = ExtResource("2_yfpht") +display_name = "Fireball" diff --git a/PCs/Mechanic/ClassCards/Flamethrower/card_flamethrower.tres b/Cards/flamethrower.tres similarity index 52% rename from PCs/Mechanic/ClassCards/Flamethrower/card_flamethrower.tres rename to Cards/flamethrower.tres index 3739dee..0a95782 100644 --- a/PCs/Mechanic/ClassCards/Flamethrower/card_flamethrower.tres +++ b/Cards/flamethrower.tres @@ -1,15 +1,15 @@ [gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://dg4pjt47q8xpw"] -[ext_resource type="Script" path="res://Scripts/Resources/card.gd" id="1_xmwih"] -[ext_resource type="Resource" uid="uid://cdtjbxs21peqg" path="res://PCs/Mechanic/ClassCards/Flamethrower/tower_stats.tres" id="3_sjxkl"] -[ext_resource type="PackedScene" uid="uid://dhv7m4lky7bd8" path="res://PCs/Mechanic/ClassCards/Flamethrower/weapon_flamethrower.tscn" id="4_800j1"] -[ext_resource type="PackedScene" uid="uid://dkoj1766ygo3f" path="res://PCs/Mechanic/ClassCards/Flamethrower/tower_flamethrower.tscn" id="4_rgkdc"] -[ext_resource type="Resource" uid="uid://yjknwdimtm8g" path="res://PCs/Mechanic/ClassCards/Flamethrower/weapon_stats.tres" id="5_qi4e4"] +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_xmwih"] +[ext_resource type="Resource" uid="uid://cdtjbxs21peqg" path="res://Towers/Flamethrower/tower_stats.tres" id="3_sjxkl"] +[ext_resource type="PackedScene" uid="uid://dhv7m4lky7bd8" path="res://Weapons/Flamethrower/weapon_flamethrower.tscn" id="4_800j1"] +[ext_resource type="PackedScene" uid="uid://h34khfekaemi" path="res://Towers/Flamethrower/tower_flamethrower.tscn" id="4_rgkdc"] +[ext_resource type="Resource" uid="uid://yjknwdimtm8g" path="res://Weapons/Flamethrower/weapon_stats.tres" id="5_qi4e4"] [resource] script = ExtResource("1_xmwih") rarity = 2 -faction = 0 +faction = 1 turret_scene = ExtResource("4_rgkdc") weapon_scene = ExtResource("4_800j1") weapon_stats = ExtResource("5_qi4e4") diff --git a/PCs/Mechanic/ClassCards/Gatling/card_gatling.tres b/Cards/gatling.tres similarity index 54% rename from PCs/Mechanic/ClassCards/Gatling/card_gatling.tres rename to Cards/gatling.tres index 7e6f282..29e285a 100644 --- a/PCs/Mechanic/ClassCards/Gatling/card_gatling.tres +++ b/Cards/gatling.tres @@ -1,15 +1,15 @@ [gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://cvto66tp7rrst"] -[ext_resource type="Script" path="res://Scripts/Resources/card.gd" id="1_5html"] -[ext_resource type="Resource" uid="uid://nxl5wabgl36t" path="res://PCs/Mechanic/ClassCards/Gatling/tower_stats.tres" id="3_4hykq"] -[ext_resource type="PackedScene" uid="uid://dkxi1ssoa44jn" path="res://PCs/Mechanic/ClassCards/Gatling/weapon_gatling.tscn" id="3_wkjyf"] -[ext_resource type="Resource" uid="uid://cj2x1jvo8l4ot" path="res://PCs/Mechanic/ClassCards/Gatling/weapon_stats.tres" id="4_76fd1"] -[ext_resource type="PackedScene" uid="uid://bjuc3x7u3f271" path="res://PCs/Mechanic/ClassCards/Gatling/tower_gatling.tscn" id="4_thk7u"] +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_5html"] +[ext_resource type="Resource" uid="uid://nxl5wabgl36t" path="res://Towers/Gatling/tower_stats.tres" id="3_4hykq"] +[ext_resource type="PackedScene" uid="uid://dkxi1ssoa44jn" path="res://Weapons/Gatling/weapon_gatling.tscn" id="3_wkjyf"] +[ext_resource type="Resource" uid="uid://cj2x1jvo8l4ot" path="res://Weapons/Gatling/weapon_stats.tres" id="4_76fd1"] +[ext_resource type="PackedScene" uid="uid://ci822ash3mbhi" path="res://Towers/Gatling/tower_gatling.tscn" id="4_thk7u"] [resource] script = ExtResource("1_5html") rarity = 0 -faction = 0 +faction = 1 turret_scene = ExtResource("4_thk7u") weapon_scene = ExtResource("3_wkjyf") weapon_stats = ExtResource("4_76fd1") diff --git a/PCs/Mechanic/ClassCards/GlueLauncher/card_glue_launcher.tres b/Cards/glue_launcher.tres similarity index 51% rename from PCs/Mechanic/ClassCards/GlueLauncher/card_glue_launcher.tres rename to Cards/glue_launcher.tres index 9f6f076..664bf65 100644 --- a/PCs/Mechanic/ClassCards/GlueLauncher/card_glue_launcher.tres +++ b/Cards/glue_launcher.tres @@ -1,15 +1,15 @@ [gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://fwsg5av1egp2"] -[ext_resource type="Script" path="res://Scripts/Resources/card.gd" id="1_tdu8a"] -[ext_resource type="Resource" uid="uid://boj1ho5x0sxtq" path="res://PCs/Mechanic/ClassCards/GlueLauncher/weapon_stats.tres" id="3_dukui"] -[ext_resource type="Resource" uid="uid://bvkwgmbxje0dp" path="res://PCs/Mechanic/ClassCards/GlueLauncher/tower_stats.tres" id="3_e5fta"] -[ext_resource type="PackedScene" uid="uid://bb44pintbwdcf" path="res://PCs/Mechanic/ClassCards/GlueLauncher/tower_glue_launcher.tscn" id="4_xcrut"] -[ext_resource type="PackedScene" uid="uid://takm6diuy71m" path="res://PCs/Mechanic/ClassCards/GlueLauncher/weapon_glue_launcher.tscn" id="5_l3c38"] +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_tdu8a"] +[ext_resource type="Resource" uid="uid://boj1ho5x0sxtq" path="res://Weapons/GlueLauncher/weapon_stats.tres" id="3_dukui"] +[ext_resource type="Resource" uid="uid://bvkwgmbxje0dp" path="res://Towers/GlueLauncher/tower_stats.tres" id="3_e5fta"] +[ext_resource type="PackedScene" uid="uid://bfdg32wymhoj1" path="res://Towers/GlueLauncher/tower_glue_launcher.tscn" id="4_xcrut"] +[ext_resource type="PackedScene" uid="uid://takm6diuy71m" path="res://Weapons/GlueLauncher/weapon_glue_launcher.tscn" id="5_l3c38"] [resource] script = ExtResource("1_tdu8a") -rarity = 1 -faction = 0 +rarity = 0 +faction = 1 turret_scene = ExtResource("4_xcrut") weapon_scene = ExtResource("5_l3c38") weapon_stats = ExtResource("3_dukui") diff --git a/PCs/Mage/ClassCards/Icicle/card_icicle.tres b/Cards/icicle.tres similarity index 51% rename from PCs/Mage/ClassCards/Icicle/card_icicle.tres rename to Cards/icicle.tres index 7445fe7..b4432e6 100644 --- a/PCs/Mage/ClassCards/Icicle/card_icicle.tres +++ b/Cards/icicle.tres @@ -1,16 +1,16 @@ [gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://cb1uqjl1387kk"] -[ext_resource type="Script" path="res://Scripts/Resources/card.gd" id="1_cmmto"] -[ext_resource type="Resource" uid="uid://d34bfj5togyyt" path="res://PCs/Mage/ClassCards/Icicle/tower_stats.tres" id="3_p8y0m"] -[ext_resource type="PackedScene" uid="uid://v3iuf4lt2iff" path="res://PCs/Mage/ClassCards/Icicle/weapon_icicle.tscn" id="3_ve3rv"] -[ext_resource type="PackedScene" uid="uid://miawrarbb1up" path="res://PCs/Mage/ClassCards/Icicle/tower_icicle.tscn" id="4_vgqev"] -[ext_resource type="Resource" uid="uid://ckjmym1ofww4" path="res://PCs/Mage/ClassCards/Icicle/weapon_stats.tres" id="4_yv37w"] +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_cmmto"] +[ext_resource type="PackedScene" uid="uid://bk73g30y8kri4" path="res://Towers/Icicle/icicletower.tscn" id="3_gum2m"] +[ext_resource type="Resource" uid="uid://d34bfj5togyyt" path="res://Towers/Icicle/tower_stats.tres" id="3_p8y0m"] +[ext_resource type="PackedScene" uid="uid://v3iuf4lt2iff" path="res://Weapons/Icicle/weapon_icicle.tscn" id="3_ve3rv"] +[ext_resource type="Resource" uid="uid://ckjmym1ofww4" path="res://Weapons/Icicle/weapon_stats.tres" id="4_yv37w"] [resource] script = ExtResource("1_cmmto") rarity = 3 -faction = 0 -turret_scene = ExtResource("4_vgqev") +faction = 2 +turret_scene = ExtResource("3_gum2m") weapon_scene = ExtResource("3_ve3rv") weapon_stats = ExtResource("4_yv37w") tower_stats = ExtResource("3_p8y0m") diff --git a/Cards/overclock_card.tres b/Cards/overclock_card.tres new file mode 100644 index 0000000..75ea0a8 --- /dev/null +++ b/Cards/overclock_card.tres @@ -0,0 +1,18 @@ +[gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://cucdevshmdohf"] + +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_t3tfw"] +[ext_resource type="PackedScene" uid="uid://dmbd7ivisjm3w" path="res://Weapons/Overclock/overclock_weapon.tscn" id="2_67wu0"] +[ext_resource type="Resource" uid="uid://v13yoous66bc" path="res://Towers/Overclock/tower_stats.tres" id="2_o52qt"] +[ext_resource type="PackedScene" uid="uid://d3qabcosmk2q5" path="res://Towers/Overclock/tower.tscn" id="3_d6lco"] +[ext_resource type="Resource" uid="uid://d3qmy6puuh1gl" path="res://Weapons/Overclock/weapon_stats.tres" id="3_o52qt"] + +[resource] +script = ExtResource("1_t3tfw") +rarity = 1 +faction = 1 +turret_scene = ExtResource("3_d6lco") +weapon_scene = ExtResource("2_67wu0") +weapon_stats = ExtResource("3_o52qt") +tower_stats = ExtResource("2_o52qt") +display_name = "Overclock" +metadata/_custom_type_script = "uid://d40isem6w5d8" diff --git a/PCs/Mechanic/ClassCards/Reactor/card_reactor.tres b/Cards/reactor.tres similarity index 50% rename from PCs/Mechanic/ClassCards/Reactor/card_reactor.tres rename to Cards/reactor.tres index 59edafe..d7bf5f0 100644 --- a/PCs/Mechanic/ClassCards/Reactor/card_reactor.tres +++ b/Cards/reactor.tres @@ -1,16 +1,16 @@ [gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://b3o112jw3loiu"] -[ext_resource type="Script" path="res://Scripts/Resources/card.gd" id="1_0ciid"] -[ext_resource type="Resource" uid="uid://cssdyxk8oefsd" path="res://PCs/Mechanic/ClassCards/Reactor/tower_stats.tres" id="3_7vuex"] -[ext_resource type="PackedScene" uid="uid://yymj42pp6v1t" path="res://PCs/Mechanic/ClassCards/Reactor/weapon_reactor.tscn" id="3_de72q"] -[ext_resource type="PackedScene" uid="uid://dqrkn0vp2tmrh" path="res://PCs/Mechanic/ClassCards/Reactor/tower_reactor.tscn" id="4_1krig"] -[ext_resource type="Resource" uid="uid://ipfr7emuarbj" path="res://PCs/Mechanic/ClassCards/Reactor/weapon_stats.tres" id="4_wilo7"] +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_0ciid"] +[ext_resource type="Resource" uid="uid://cssdyxk8oefsd" path="res://Towers/Reactor/tower_stats.tres" id="3_7vuex"] +[ext_resource type="PackedScene" uid="uid://yymj42pp6v1t" path="res://Weapons/Reactor/weapon_reactor.tscn" id="3_de72q"] +[ext_resource type="PackedScene" uid="uid://b7idyi1c67ou4" path="res://Towers/Reactor/reactortower.tscn" id="3_l4xwa"] +[ext_resource type="Resource" uid="uid://ipfr7emuarbj" path="res://Weapons/Reactor/weapon_stats.tres" id="4_wilo7"] [resource] script = ExtResource("1_0ciid") rarity = 4 -faction = 0 -turret_scene = ExtResource("4_1krig") +faction = 1 +turret_scene = ExtResource("3_l4xwa") weapon_scene = ExtResource("3_de72q") weapon_stats = ExtResource("4_wilo7") tower_stats = ExtResource("3_7vuex") diff --git a/Cards/refrigerator.tres b/Cards/refrigerator.tres new file mode 100644 index 0000000..12e63c6 --- /dev/null +++ b/Cards/refrigerator.tres @@ -0,0 +1,17 @@ +[gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://ds8qx4ggmqetk"] + +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_84afc"] +[ext_resource type="Resource" uid="uid://st0qrut5nxrm" path="res://Towers/Refrigerator/tower_stats.tres" id="3_bihii"] +[ext_resource type="PackedScene" uid="uid://dfgxf88kk2nhn" path="res://Towers/Refrigerator/fridgetower.tscn" id="3_pq7e0"] +[ext_resource type="PackedScene" uid="uid://b0vi11kj3lxng" path="res://Weapons/Refrigerator/weapon_refrigerator.tscn" id="4_0oufq"] +[ext_resource type="Resource" uid="uid://5l758yxfpi1e" path="res://Weapons/Refrigerator/weapon_stats.tres" id="5_dqmyh"] + +[resource] +script = ExtResource("1_84afc") +rarity = 1 +faction = 2 +turret_scene = ExtResource("3_pq7e0") +weapon_scene = ExtResource("4_0oufq") +weapon_stats = ExtResource("5_dqmyh") +tower_stats = ExtResource("3_bihii") +display_name = "Refrigerator" diff --git a/Cards/rocket_launcher.tres b/Cards/rocket_launcher.tres new file mode 100644 index 0000000..28dcbe2 --- /dev/null +++ b/Cards/rocket_launcher.tres @@ -0,0 +1,17 @@ +[gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://b37r54q84vqoi"] + +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_ly0o5"] +[ext_resource type="Resource" uid="uid://c65rq455ma8f6" path="res://Towers/RocketLauncher/tower_stats.tres" id="3_06my6"] +[ext_resource type="PackedScene" uid="uid://clunpgm4plkar" path="res://Towers/RocketLauncher/rocket_tower.tscn" id="3_73c50"] +[ext_resource type="PackedScene" uid="uid://bdp7icdejayvr" path="res://Weapons/RocketLauncher/weapon_rocket_launcher.tscn" id="3_qo5gv"] +[ext_resource type="Resource" uid="uid://d2yo07m2mp2mp" path="res://Weapons/RocketLauncher/weapon_stats.tres" id="4_cmvfg"] + +[resource] +script = ExtResource("1_ly0o5") +rarity = 0 +faction = 1 +turret_scene = ExtResource("3_73c50") +weapon_scene = ExtResource("3_qo5gv") +weapon_stats = ExtResource("4_cmvfg") +tower_stats = ExtResource("3_06my6") +display_name = "Rocket Launcher" diff --git a/PCs/Mechanic/ClassCards/Sniper/card_sniper.tres b/Cards/sniper.tres similarity index 54% rename from PCs/Mechanic/ClassCards/Sniper/card_sniper.tres rename to Cards/sniper.tres index 7dc30c9..8ab626e 100644 --- a/PCs/Mechanic/ClassCards/Sniper/card_sniper.tres +++ b/Cards/sniper.tres @@ -1,15 +1,15 @@ [gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://ckm88acryitl4"] -[ext_resource type="Script" path="res://Scripts/Resources/card.gd" id="1_5vmtk"] -[ext_resource type="Resource" uid="uid://eb0by6ba1d43" path="res://PCs/Mechanic/ClassCards/Sniper/tower_stats.tres" id="3_6i55t"] -[ext_resource type="PackedScene" uid="uid://bd65e03fscyxr" path="res://PCs/Mechanic/ClassCards/Sniper/weapon_sniper.tscn" id="3_qfpvu"] -[ext_resource type="Resource" uid="uid://3y7n1vdvf822" path="res://PCs/Mechanic/ClassCards/Sniper/weapon_stats.tres" id="4_7kvq1"] -[ext_resource type="PackedScene" uid="uid://bt4qbc5lp4nhr" path="res://PCs/Mechanic/ClassCards/Sniper/tower_sniper.tscn" id="4_k5nhs"] +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_5vmtk"] +[ext_resource type="Resource" uid="uid://eb0by6ba1d43" path="res://Towers/Sniper/tower_stats.tres" id="3_6i55t"] +[ext_resource type="PackedScene" uid="uid://bd65e03fscyxr" path="res://Weapons/Sniper/weapon_sniper.tscn" id="3_qfpvu"] +[ext_resource type="Resource" uid="uid://3y7n1vdvf822" path="res://Weapons/Sniper/weapon_stats.tres" id="4_7kvq1"] +[ext_resource type="PackedScene" uid="uid://0ucn7wvbq034" path="res://Towers/Sniper/tower_sniper.tscn" id="4_k5nhs"] [resource] script = ExtResource("1_5vmtk") rarity = 1 -faction = 0 +faction = 1 turret_scene = ExtResource("4_k5nhs") weapon_scene = ExtResource("3_qfpvu") weapon_stats = ExtResource("4_7kvq1") diff --git a/Classes/Engineer/class.tres b/Classes/Engineer/class.tres new file mode 100644 index 0000000..020384b --- /dev/null +++ b/Classes/Engineer/class.tres @@ -0,0 +1,20 @@ +[gd_resource type="Resource" script_class="HeroClass" load_steps=10 format=3 uid="uid://b5pc3frhx467q"] + +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_t4fvj"] +[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://Cards/assault.tres" id="2_62g46"] +[ext_resource type="Resource" uid="uid://ckm88acryitl4" path="res://Cards/sniper.tres" id="3_eml7q"] +[ext_resource type="Resource" uid="uid://cvto66tp7rrst" path="res://Cards/gatling.tres" id="4_ovvb2"] +[ext_resource type="Resource" uid="uid://cucdevshmdohf" path="res://Cards/overclock_card.tres" id="5_vqkxt"] +[ext_resource type="Texture2D" uid="uid://ctkixdue3o7ec" path="res://Classes/Engineer/red_hand.png" id="6_a8dvt"] +[ext_resource type="Script" uid="uid://dcwtg2gev3uia" path="res://Scripts/Resources/hero_class.gd" id="7_ftkad"] +[ext_resource type="PackedScene" uid="uid://ciagj1hfn4gou" path="res://Classes/Engineer/podium.tscn" id="7_nyup7"] +[ext_resource type="Texture2D" uid="uid://d4jd718brpsed" path="res://Classes/Engineer/doe.png" id="8_0o0bw"] + +[resource] +script = ExtResource("7_ftkad") +hero_name = "Engineer" +texture = ExtResource("8_0o0bw") +hand_texture = ExtResource("6_a8dvt") +deck = Array[ExtResource("1_t4fvj")]([ExtResource("2_62g46"), ExtResource("2_62g46"), ExtResource("3_eml7q"), ExtResource("4_ovvb2"), ExtResource("5_vqkxt")]) +faction = 1 +podium = ExtResource("7_nyup7") diff --git a/Assets/Textures/doe.png b/Classes/Engineer/doe.png similarity index 100% rename from Assets/Textures/doe.png rename to Classes/Engineer/doe.png diff --git a/Classes/Engineer/doe.png.import b/Classes/Engineer/doe.png.import new file mode 100644 index 0000000..e4ea969 --- /dev/null +++ b/Classes/Engineer/doe.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://d4jd718brpsed" +path="res://.godot/imported/doe.png-d3896b3adb071320d65d239025b47343.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Classes/Engineer/doe.png" +dest_files=["res://.godot/imported/doe.png-d3896b3adb071320d65d239025b47343.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Classes/Engineer/podium.tscn b/Classes/Engineer/podium.tscn new file mode 100644 index 0000000..d96e633 --- /dev/null +++ b/Classes/Engineer/podium.tscn @@ -0,0 +1,53 @@ +[gd_scene load_steps=9 format=3 uid="uid://ciagj1hfn4gou"] + +[ext_resource type="Script" uid="uid://bc0xyfr5nj1ul" path="res://Scenes/Menus/CharacterSelect/character_podium.gd" id="1_fo804"] +[ext_resource type="Texture2D" uid="uid://d4jd718brpsed" path="res://Classes/Engineer/doe.png" id="2_4b5pd"] +[ext_resource type="PackedScene" uid="uid://ddbbwx0yy16lh" path="res://Scenes/TowerBase/tower_base.tscn" id="3_pmyku"] +[ext_resource type="ArrayMesh" uid="uid://oxjhqfwlcx5l" path="res://Towers/Assault/assaultmod.res" id="4_1jafm"] +[ext_resource type="ArrayMesh" uid="uid://bu35or5yc5j4c" path="res://Towers/Sniper/snipermodel.res" id="5_851y4"] +[ext_resource type="ArrayMesh" uid="uid://dler7wcqj0bm6" path="res://Towers/Gatling/gattlemesh.res" id="6_iftlf"] +[ext_resource type="PackedScene" uid="uid://d3qabcosmk2q5" path="res://Towers/Overclock/tower.tscn" id="7_pmyku"] +[ext_resource type="Resource" uid="uid://v13yoous66bc" path="res://Towers/Overclock/tower_stats.tres" id="8_1jafm"] + +[node name="EngineerPodium" type="Node3D"] +script = ExtResource("1_fo804") +metadata/_custom_type_script = "uid://bc0xyfr5nj1ul" + +[node name="Base" type="CSGCylinder3D" parent="."] +radius = 3.0 +height = 1.0 +sides = 32 + +[node name="CharacterSprite" type="Sprite3D" parent="Base"] +transform = Transform3D(1.6895, 0, -2.47903, 0, 3, 0, 2.47903, 0, 1.6895, -0.0459526, 1.91885, -0.305444) +modulate = Color(0.517184, 0.517184, 0.517184, 1) +billboard = 2 +texture_filter = 0 +texture = ExtResource("2_4b5pd") + +[node name="Node3D" parent="Base" instance=ExtResource("3_pmyku")] +transform = Transform3D(0.563166, 0, -0.826344, 0, 1, 0, 0.826344, 0, 0.563166, -1.32611, 0.5, -0.864711) + +[node name="Assaultmod" type="MeshInstance3D" parent="Base"] +transform = Transform3D(-0.155908, 0.191531, -0.37018, -7.29442e-09, 0.395231, 0.204492, 0.416795, 0.0716447, -0.138472, 1.08392, 0.959456, -1.22038) +mesh = ExtResource("4_1jafm") +skeleton = NodePath("../../..") + +[node name="Snipermodel" type="MeshInstance3D" parent="Base"] +transform = Transform3D(0.410348, 0.0352013, 0.0823131, 0.0231825, 0.331215, -0.257215, -0.0864702, 0.255847, 0.32166, -1.09654, 0.957512, 0.64087) +mesh = ExtResource("5_851y4") +skeleton = NodePath("../../..") + +[node name="Gattlemesh" type="MeshInstance3D" parent="Base"] +transform = Transform3D(0.11298, -0.0560454, 0.277704, 2.63199e-09, 0.298972, 0.0603377, -0.283303, -0.0223507, 0.110748, 0.976316, 0.901463, 0.843925) +mesh = ExtResource("6_iftlf") +skeleton = NodePath("../../..") + +[node name="SpotLight3D" type="SpotLight3D" parent="Base"] +transform = Transform3D(0.563166, 0.826344, 3.61207e-08, 1.35728e-16, -4.37114e-08, 1, 0.826344, -0.563166, -2.46168e-08, -0.0459526, 4, -0.305444) +spot_range = 10.0 +spot_attenuation = 0.39 + +[node name="Tower2" parent="Base" instance=ExtResource("7_pmyku")] +transform = Transform3D(0.563166, 0, -0.826344, 0, 1, 0, 0.826344, 0, 0.563166, 2.31578, 1.01612, -0.162108) +stats = ExtResource("8_1jafm") diff --git a/PCs/Mechanic/red.png b/Classes/Engineer/red.png similarity index 100% rename from PCs/Mechanic/red.png rename to Classes/Engineer/red.png diff --git a/PCs/Mechanic/red.png.import b/Classes/Engineer/red.png.import similarity index 73% rename from PCs/Mechanic/red.png.import rename to Classes/Engineer/red.png.import index e7092d1..3ab1c2a 100644 --- a/PCs/Mechanic/red.png.import +++ b/Classes/Engineer/red.png.import @@ -3,7 +3,7 @@ importer="texture" type="CompressedTexture2D" uid="uid://cjqxkraykhxxk" -path.s3tc="res://.godot/imported/red.png-769ecca8f938f176e217cd4cab0ec426.s3tc.ctex" +path.s3tc="res://.godot/imported/red.png-561e49e67dcfa05e374432bb4f2e3e43.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], "vram_texture": true @@ -11,8 +11,8 @@ metadata={ [deps] -source_file="res://PCs/Mechanic/red.png" -dest_files=["res://.godot/imported/red.png-769ecca8f938f176e217cd4cab0ec426.s3tc.ctex"] +source_file="res://Classes/Engineer/red.png" +dest_files=["res://.godot/imported/red.png-561e49e67dcfa05e374432bb4f2e3e43.s3tc.ctex"] [params] diff --git a/PCs/Mechanic/red_hand.png b/Classes/Engineer/red_hand.png similarity index 100% rename from PCs/Mechanic/red_hand.png rename to Classes/Engineer/red_hand.png diff --git a/PCs/Mechanic/red_hand.png.import b/Classes/Engineer/red_hand.png.import similarity index 71% rename from PCs/Mechanic/red_hand.png.import rename to Classes/Engineer/red_hand.png.import index 87825f2..e5bde99 100644 --- a/PCs/Mechanic/red_hand.png.import +++ b/Classes/Engineer/red_hand.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ctkixdue3o7ec" -path="res://.godot/imported/red_hand.png-b849fd7f7f1c0386768216e300e7d741.ctex" +path="res://.godot/imported/red_hand.png-bc5626acea0eb13494849759aaa0400d.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/red_hand.png" -dest_files=["res://.godot/imported/red_hand.png-b849fd7f7f1c0386768216e300e7d741.ctex"] +source_file="res://Classes/Engineer/red_hand.png" +dest_files=["res://.godot/imported/red_hand.png-bc5626acea0eb13494849759aaa0400d.ctex"] [params] diff --git a/PCs/Mage/blue.png b/Classes/Mage/blue.png similarity index 100% rename from PCs/Mage/blue.png rename to Classes/Mage/blue.png diff --git a/PCs/Mage/blue.png.import b/Classes/Mage/blue.png.import similarity index 73% rename from PCs/Mage/blue.png.import rename to Classes/Mage/blue.png.import index edb7490..4fe1ca1 100644 --- a/PCs/Mage/blue.png.import +++ b/Classes/Mage/blue.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cnedls3i4gso" -path="res://.godot/imported/blue.png-f04c69ae83aca6d5294605a8a769a3c3.ctex" +path="res://.godot/imported/blue.png-57c3a251409e86131b4abd6dd68359a4.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mage/blue.png" -dest_files=["res://.godot/imported/blue.png-f04c69ae83aca6d5294605a8a769a3c3.ctex"] +source_file="res://Classes/Mage/blue.png" +dest_files=["res://.godot/imported/blue.png-57c3a251409e86131b4abd6dd68359a4.ctex"] [params] diff --git a/PCs/Mage/blue_hand.png b/Classes/Mage/blue_hand.png similarity index 100% rename from PCs/Mage/blue_hand.png rename to Classes/Mage/blue_hand.png diff --git a/PCs/Mage/blue_hand.png.import b/Classes/Mage/blue_hand.png.import similarity index 71% rename from PCs/Mage/blue_hand.png.import rename to Classes/Mage/blue_hand.png.import index 9c77afa..9c8d535 100644 --- a/PCs/Mage/blue_hand.png.import +++ b/Classes/Mage/blue_hand.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bvaif1sfn1ej4" -path="res://.godot/imported/blue_hand.png-dd9de2fd527ae8ebfbd83105c8789242.ctex" +path="res://.godot/imported/blue_hand.png-74dcd655f9721672548ff68c03cb11e0.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mage/blue_hand.png" -dest_files=["res://.godot/imported/blue_hand.png-dd9de2fd527ae8ebfbd83105c8789242.ctex"] +source_file="res://Classes/Mage/blue_hand.png" +dest_files=["res://.godot/imported/blue_hand.png-74dcd655f9721672548ff68c03cb11e0.ctex"] [params] diff --git a/Classes/Mage/class.tres b/Classes/Mage/class.tres new file mode 100644 index 0000000..3cf2eab --- /dev/null +++ b/Classes/Mage/class.tres @@ -0,0 +1,20 @@ +[gd_resource type="Resource" script_class="HeroClass" load_steps=10 format=3 uid="uid://dxonpv8qbyrjy"] + +[ext_resource type="Script" uid="uid://dcwtg2gev3uia" path="res://Scripts/Resources/hero_class.gd" id="1_aeu85"] +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_gq5ju"] +[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://Cards/assault.tres" id="2_3yr5a"] +[ext_resource type="Resource" uid="uid://bibx2my7igspq" path="res://Cards/fireball.tres" id="3_sh7d1"] +[ext_resource type="Resource" uid="uid://ckm88acryitl4" path="res://Cards/sniper.tres" id="3_wyb0n"] +[ext_resource type="Texture2D" uid="uid://bvaif1sfn1ej4" path="res://Classes/Mage/blue_hand.png" id="4_srskc"] +[ext_resource type="Resource" uid="uid://bga736m7furat" path="res://Cards/ascension.tres" id="5_k7b5b"] +[ext_resource type="Texture2D" uid="uid://bvybr3fwnw46p" path="res://Classes/Mage/yeen.png" id="6_jda20"] +[ext_resource type="PackedScene" uid="uid://bd4k48bdgiddy" path="res://Classes/Mage/podium.tscn" id="7_aglom"] + +[resource] +script = ExtResource("1_aeu85") +hero_name = "Mage" +texture = ExtResource("6_jda20") +hand_texture = ExtResource("4_srskc") +deck = Array[ExtResource("1_gq5ju")]([ExtResource("2_3yr5a"), ExtResource("2_3yr5a"), ExtResource("3_wyb0n"), ExtResource("3_sh7d1"), ExtResource("5_k7b5b")]) +faction = 2 +podium = ExtResource("7_aglom") diff --git a/Classes/Mage/podium.tscn b/Classes/Mage/podium.tscn new file mode 100644 index 0000000..dcc244c --- /dev/null +++ b/Classes/Mage/podium.tscn @@ -0,0 +1,60 @@ +[gd_scene load_steps=9 format=3 uid="uid://bd4k48bdgiddy"] + +[ext_resource type="Script" uid="uid://bc0xyfr5nj1ul" path="res://Scenes/Menus/CharacterSelect/character_podium.gd" id="1_0wn84"] +[ext_resource type="Texture2D" uid="uid://bvybr3fwnw46p" path="res://Classes/Mage/yeen.png" id="2_skplt"] +[ext_resource type="PackedScene" uid="uid://ddbbwx0yy16lh" path="res://Scenes/TowerBase/tower_base.tscn" id="3_m1210"] +[ext_resource type="ArrayMesh" uid="uid://oxjhqfwlcx5l" path="res://Towers/Assault/assaultmod.res" id="4_5wuy8"] +[ext_resource type="ArrayMesh" uid="uid://bu35or5yc5j4c" path="res://Towers/Sniper/snipermodel.res" id="5_tnndn"] +[ext_resource type="ArrayMesh" uid="uid://d34yiqnnaie8r" path="res://Towers/Fireball/magetowermesh.res" id="6_67jsi"] +[ext_resource type="PackedScene" uid="uid://dk1pt2f1qya1m" path="res://Towers/Ascension/tower.tscn" id="7_3ilqd"] +[ext_resource type="Resource" uid="uid://c756rtt7ujowk" path="res://Towers/Ascension/tower_stats.tres" id="8_2wywa"] + +[node name="MagePodium" type="Node3D"] +script = ExtResource("1_0wn84") +text = "Watch out for a shop to find out how to unlock this mysterious friend!" +metadata/_custom_type_script = "uid://bc0xyfr5nj1ul" + +[node name="Base" type="CSGCylinder3D" parent="."] +transform = Transform3D(0.789716, 0, -0.613472, 0, 1, 0, 0.613472, 0, 0.789716, 0, 0, 0) +radius = 3.0 +height = 1.0 +sides = 32 + +[node name="Sprite3D" type="Sprite3D" parent="Base"] +transform = Transform3D(3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 1.91885, 0) +modulate = Color(0.446777, 0.446777, 0.446777, 1) +billboard = 2 +texture_filter = 0 +texture = ExtResource("2_skplt") + +[node name="Node3D" parent="Base" instance=ExtResource("3_m1210")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.21433, 0.5, -1.47375) + +[node name="Assaultmod" type="MeshInstance3D" parent="Base"] +transform = Transform3D(-0.216168, 0.271014, 0.279012, 0.174778, 0.352842, -0.207317, -0.347489, 0.00887582, -0.277844, 1.62687, 1.06376, -1.0274) +mesh = ExtResource("4_5wuy8") +skeleton = NodePath("../../..") + +[node name="Snipermodel" type="MeshInstance3D" parent="Base"] +transform = Transform3D(0.332265, 0.0519786, -0.251592, -8.9882e-09, 0.411314, 0.0849769, 0.256905, -0.0672257, 0.325393, 0.500198, 0.978789, 1.90895) +mesh = ExtResource("5_tnndn") +skeleton = NodePath("../../..") + +[node name="Magetowermesh" type="MeshInstance3D" parent="Base"] +transform = Transform3D(0.432921, 0, 0.719847, 0, 0.84, 0, -0.719847, 0, 0.432921, -1.62727, 0.5, -0.00850296) +mesh = ExtResource("6_67jsi") + +[node name="OmniLight3D" type="OmniLight3D" parent="Base/Magetowermesh"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.38274, 0) +light_color = Color(0.697081, 0.170704, 0.131545, 1) +light_energy = 3.586 +omni_range = 1.824 + +[node name="SpotLight3D2" type="SpotLight3D" parent="Base"] +transform = Transform3D(-4.37114e-08, 1, 4.37114e-08, 0, -4.37114e-08, 1, 1, 4.37114e-08, 1.91069e-15, 0, 4, 0) +spot_range = 10.0 +spot_attenuation = 0.39 + +[node name="Tower" parent="Base" instance=ExtResource("7_3ilqd")] +transform = Transform3D(-0.642788, 0, -0.766044, 0, 1, 0, 0.766044, 0, -0.642788, 0.228261, 1.16271, -1.45948) +stats = ExtResource("8_2wywa") diff --git a/Assets/Textures/yeen.png b/Classes/Mage/yeen.png similarity index 100% rename from Assets/Textures/yeen.png rename to Classes/Mage/yeen.png diff --git a/Classes/Mage/yeen.png.import b/Classes/Mage/yeen.png.import new file mode 100644 index 0000000..cdc36ea --- /dev/null +++ b/Classes/Mage/yeen.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bvybr3fwnw46p" +path="res://.godot/imported/yeen.png-6e9688353ac8cc86efffe8d456c2e38b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Classes/Mage/yeen.png" +dest_files=["res://.godot/imported/yeen.png-6e9688353ac8cc86efffe8d456c2e38b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Classes/NewHero3/class.tres b/Classes/NewHero3/class.tres new file mode 100644 index 0000000..c7788cb --- /dev/null +++ b/Classes/NewHero3/class.tres @@ -0,0 +1,16 @@ +[gd_resource type="Resource" script_class="HeroClass" load_steps=6 format=3 uid="uid://ogbkbf1v7j7l"] + +[ext_resource type="Script" uid="uid://dcwtg2gev3uia" path="res://Scripts/Resources/hero_class.gd" id="1_cpfpk"] +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_sapu8"] +[ext_resource type="PackedScene" uid="uid://busdu5na4rf4e" path="res://Classes/NewHero3/podium.tscn" id="3_dhih8"] +[ext_resource type="Texture2D" uid="uid://wknia76l1hqo" path="res://Classes/NewHero3/green_hand.png" id="4_jgbmi"] +[ext_resource type="Texture2D" uid="uid://dyqh1uu4pocv1" path="res://Classes/NewHero3/green.png" id="5_vhx4f"] + +[resource] +script = ExtResource("1_cpfpk") +hero_name = "Under Construction" +texture = ExtResource("5_vhx4f") +hand_texture = ExtResource("4_jgbmi") +deck = Array[ExtResource("1_sapu8")]([]) +faction = 0 +podium = ExtResource("3_dhih8") diff --git a/PCs/Entomologist/green.png b/Classes/NewHero3/green.png similarity index 100% rename from PCs/Entomologist/green.png rename to Classes/NewHero3/green.png diff --git a/PCs/Entomologist/green.png.import b/Classes/NewHero3/green.png.import similarity index 72% rename from PCs/Entomologist/green.png.import rename to Classes/NewHero3/green.png.import index 807a51e..393fed0 100644 --- a/PCs/Entomologist/green.png.import +++ b/Classes/NewHero3/green.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dyqh1uu4pocv1" -path="res://.godot/imported/green.png-98144261f5c43d451b52099164288347.ctex" +path="res://.godot/imported/green.png-f0a767cbcdecda56743ee52c17fefb72.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Entomologist/green.png" -dest_files=["res://.godot/imported/green.png-98144261f5c43d451b52099164288347.ctex"] +source_file="res://Classes/NewHero3/green.png" +dest_files=["res://.godot/imported/green.png-f0a767cbcdecda56743ee52c17fefb72.ctex"] [params] diff --git a/PCs/Entomologist/green_hand.png b/Classes/NewHero3/green_hand.png similarity index 100% rename from PCs/Entomologist/green_hand.png rename to Classes/NewHero3/green_hand.png diff --git a/PCs/Entomologist/green_hand.png.import b/Classes/NewHero3/green_hand.png.import similarity index 71% rename from PCs/Entomologist/green_hand.png.import rename to Classes/NewHero3/green_hand.png.import index 6108fee..2481bd8 100644 --- a/PCs/Entomologist/green_hand.png.import +++ b/Classes/NewHero3/green_hand.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://wknia76l1hqo" -path="res://.godot/imported/green_hand.png-9819aaa210d14ac563a08ba6e0a1f095.ctex" +path="res://.godot/imported/green_hand.png-a1ccc7c1a1b986dee1992634f30613ef.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Entomologist/green_hand.png" -dest_files=["res://.godot/imported/green_hand.png-9819aaa210d14ac563a08ba6e0a1f095.ctex"] +source_file="res://Classes/NewHero3/green_hand.png" +dest_files=["res://.godot/imported/green_hand.png-a1ccc7c1a1b986dee1992634f30613ef.ctex"] [params] diff --git a/Classes/NewHero3/podium.tscn b/Classes/NewHero3/podium.tscn new file mode 100644 index 0000000..1b93b13 --- /dev/null +++ b/Classes/NewHero3/podium.tscn @@ -0,0 +1,51 @@ +[gd_scene load_steps=7 format=3 uid="uid://busdu5na4rf4e"] + +[ext_resource type="Script" uid="uid://bc0xyfr5nj1ul" path="res://Scenes/Menus/CharacterSelect/character_podium.gd" id="1_nxj67"] +[ext_resource type="Texture2D" uid="uid://d4jd718brpsed" path="res://Classes/Engineer/doe.png" id="2_05uii"] +[ext_resource type="PackedScene" uid="uid://ddbbwx0yy16lh" path="res://Scenes/TowerBase/tower_base.tscn" id="3_il1ej"] +[ext_resource type="ArrayMesh" uid="uid://oxjhqfwlcx5l" path="res://Towers/Assault/assaultmod.res" id="4_mrig3"] +[ext_resource type="ArrayMesh" uid="uid://bu35or5yc5j4c" path="res://Towers/Sniper/snipermodel.res" id="5_yj8b1"] +[ext_resource type="ArrayMesh" uid="uid://dler7wcqj0bm6" path="res://Towers/Gatling/gattlemesh.res" id="6_jr17d"] + +[node name="Hero3Podium" type="Node3D"] +script = ExtResource("1_nxj67") +text = "Come back soon!" +metadata/_custom_type_script = "uid://bc0xyfr5nj1ul" + +[node name="Base" type="CSGCylinder3D" parent="."] +transform = Transform3D(0.332046, 0, -0.943263, 0, 1, 0, 0.943263, 0, 0.332046, 0, 0, 0) +radius = 3.0 +height = 1.0 +sides = 32 + +[node name="Sprite3D" type="Sprite3D" parent="Base"] +transform = Transform3D(3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 1.91885, 0) +visible = false +modulate = Color(0.517184, 0.517184, 0.517184, 1) +billboard = 2 +texture_filter = 0 +texture = ExtResource("2_05uii") + +[node name="Node3D" parent="Base" instance=ExtResource("3_il1ej")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.18309, 0.5, 0.742893) + +[node name="Assaultmod" type="MeshInstance3D" parent="Base"] +transform = Transform3D(0.256614, 0.167067, -0.322898, -7.90479e-16, 0.395231, 0.204492, 0.363558, -0.117923, 0.227914, -0.119748, 0.959456, -1.44893) +mesh = ExtResource("4_mrig3") +skeleton = NodePath("../../..") + +[node name="Snipermodel" type="MeshInstance3D" parent="Base"] +transform = Transform3D(0.15964, 0.231242, 0.312158, 0.0231825, 0.331215, -0.257215, -0.387786, 0.114996, 0.113129, 0.190324, 0.957512, 1.40108) +mesh = ExtResource("5_yj8b1") +skeleton = NodePath("../../..") + +[node name="Gattlemesh" type="MeshInstance3D" parent="Base"] +transform = Transform3D(-0.170479, -0.0500322, 0.247909, 0, 0.298972, 0.0603377, -0.252907, 0.0337256, -0.16711, 1.52548, 0.901463, -0.197461) +mesh = ExtResource("6_jr17d") +skeleton = NodePath("../../..") + +[node name="SpotLight3D" type="SpotLight3D" parent="Base"] +transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 4, 0) +visible = false +spot_range = 10.0 +spot_attenuation = 0.39 diff --git a/Classes/NewHero4/class.tres b/Classes/NewHero4/class.tres new file mode 100644 index 0000000..5d3937a --- /dev/null +++ b/Classes/NewHero4/class.tres @@ -0,0 +1,13 @@ +[gd_resource type="Resource" script_class="HeroClass" load_steps=4 format=3 uid="uid://cq1sq8lb2lif5"] + +[ext_resource type="Script" uid="uid://d40isem6w5d8" path="res://Scripts/Resources/card.gd" id="1_rtgxw"] +[ext_resource type="PackedScene" uid="uid://6givglesbjef" path="res://Classes/NewHero4/podium.tscn" id="2_quxjv"] +[ext_resource type="Script" uid="uid://dcwtg2gev3uia" path="res://Scripts/Resources/hero_class.gd" id="2_t7plg"] + +[resource] +script = ExtResource("2_t7plg") +hero_name = "Under Construction" +deck = Array[ExtResource("1_rtgxw")]([]) +faction = 0 +podium = ExtResource("2_quxjv") +metadata/_custom_type_script = "uid://dcwtg2gev3uia" diff --git a/Classes/NewHero4/podium.tscn b/Classes/NewHero4/podium.tscn new file mode 100644 index 0000000..4f1037c --- /dev/null +++ b/Classes/NewHero4/podium.tscn @@ -0,0 +1,57 @@ +[gd_scene load_steps=7 format=3 uid="uid://6givglesbjef"] + +[ext_resource type="Script" uid="uid://bc0xyfr5nj1ul" path="res://Scenes/Menus/CharacterSelect/character_podium.gd" id="1_h2nqs"] +[ext_resource type="Texture2D" uid="uid://bvybr3fwnw46p" path="res://Classes/Mage/yeen.png" id="2_e7ajb"] +[ext_resource type="PackedScene" uid="uid://ddbbwx0yy16lh" path="res://Scenes/TowerBase/tower_base.tscn" id="3_brui3"] +[ext_resource type="ArrayMesh" uid="uid://oxjhqfwlcx5l" path="res://Towers/Assault/assaultmod.res" id="4_6igfd"] +[ext_resource type="ArrayMesh" uid="uid://bu35or5yc5j4c" path="res://Towers/Sniper/snipermodel.res" id="5_2o81e"] +[ext_resource type="ArrayMesh" uid="uid://d34yiqnnaie8r" path="res://Towers/Fireball/magetowermesh.res" id="6_qcqfx"] + +[node name="Hero4Podium" type="Node3D"] +script = ExtResource("1_h2nqs") +text = "Come back in, uh, a long time!" +metadata/_custom_type_script = "uid://bc0xyfr5nj1ul" + +[node name="Base" type="CSGCylinder3D" parent="."] +transform = Transform3D(-0.642788, 0, 0.766044, 0, 1, 0, -0.766044, 0, -0.642788, 0, 0, 0) +radius = 3.0 +height = 1.0 +sides = 32 + +[node name="Sprite3D" type="Sprite3D" parent="Base"] +transform = Transform3D(3, 0, 0, 0, 3, 0, 0, 0, 3, 0, 1.91885, 0) +visible = false +modulate = Color(0.446777, 0.446777, 0.446777, 1) +billboard = 2 +texture_filter = 0 +texture = ExtResource("2_e7ajb") + +[node name="Node3D" parent="Base" instance=ExtResource("3_brui3")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.21433, 0.5, -1.47375) + +[node name="Assaultmod" type="MeshInstance3D" parent="Base"] +transform = Transform3D(-0.216168, 0.271014, 0.279012, 0.174778, 0.352842, -0.207317, -0.347489, 0.00887582, -0.277844, 1.62687, 1.06376, -1.0274) +mesh = ExtResource("4_6igfd") +skeleton = NodePath("../../..") + +[node name="Snipermodel" type="MeshInstance3D" parent="Base"] +transform = Transform3D(0.332265, 0.0519786, -0.251592, -8.9882e-09, 0.411314, 0.0849769, 0.256905, -0.0672257, 0.325393, 0.500198, 0.978789, 1.90895) +mesh = ExtResource("5_2o81e") +skeleton = NodePath("../../..") + +[node name="Magetowermesh" type="MeshInstance3D" parent="Base"] +transform = Transform3D(0.432921, 0, 0.719847, 0, 0.84, 0, -0.719847, 0, 0.432921, -1.62727, 0.5, -0.00850296) +mesh = ExtResource("6_qcqfx") + +[node name="OmniLight3D" type="OmniLight3D" parent="Base/Magetowermesh"] +transform = Transform3D(1.19048, 0, 0, 0, 1.19048, 0, 0, 0, 1.19048, 0, 3.38274, 0) +visible = false +light_color = Color(0.697081, 0.170704, 0.131545, 1) +light_energy = 3.586 +omni_range = 1.824 + +[node name="SpotLight3D2" type="SpotLight3D" parent="Base"] +transform = Transform3D(-4.37114e-08, 1, 4.37114e-08, 0, -4.37114e-08, 1, 1, 4.37114e-08, 1.91069e-15, 0, 4, 0) +visible = false +spot_range = 10.0 +spot_attenuation = 0.39 diff --git a/Mods/Base/base.json b/Mods/Base/base.json new file mode 100644 index 0000000..ffb735b --- /dev/null +++ b/Mods/Base/base.json @@ -0,0 +1 @@ +{"display_name": "base","pck_path": "mod.pck"} diff --git a/Mods/Base/mod.pck b/Mods/Base/mod.pck new file mode 100644 index 0000000..04b24d9 Binary files /dev/null and b/Mods/Base/mod.pck differ diff --git a/PCs/Entomologist/ClassCards/Blowdart/shot1.wav.import b/PCs/Entomologist/ClassCards/Blowdart/shot1.wav.import deleted file mode 100644 index 9b37687..0000000 --- a/PCs/Entomologist/ClassCards/Blowdart/shot1.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://cu654fn5nke3n" -path="res://.godot/imported/shot1.wav-324ee9394bf69a8aa2f3bd0c7aa0ae2e.sample" - -[deps] - -source_file="res://PCs/Entomologist/ClassCards/Blowdart/shot1.wav" -dest_files=["res://.godot/imported/shot1.wav-324ee9394bf69a8aa2f3bd0c7aa0ae2e.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/PCs/Entomologist/ClassCards/Blowdart/tower_blowdart.gd b/PCs/Entomologist/ClassCards/Blowdart/tower_blowdart.gd deleted file mode 100644 index 27a37a9..0000000 --- a/PCs/Entomologist/ClassCards/Blowdart/tower_blowdart.gd +++ /dev/null @@ -1,7 +0,0 @@ -class_name BlowdartTower extends StatusApplyingTower - - -func build_status_object() -> StatusEffect: - var status: StatusDoT = StatusDoT.new() - status.stats = status_stats - return status diff --git a/PCs/Entomologist/ClassCards/Blowdart/tower_blowdart.tscn b/PCs/Entomologist/ClassCards/Blowdart/tower_blowdart.tscn deleted file mode 100644 index 8f7b34b..0000000 --- a/PCs/Entomologist/ClassCards/Blowdart/tower_blowdart.tscn +++ /dev/null @@ -1,29 +0,0 @@ -[gd_scene load_steps=8 format=3 uid="uid://cq5q6c28pwi47"] - -[ext_resource type="PackedScene" uid="uid://dxwtlvv632ae8" path="res://Scenes/Towers/status_applying_tower.tscn" id="1_lnpfa"] -[ext_resource type="Script" path="res://PCs/Entomologist/ClassCards/Blowdart/tower_blowdart.gd" id="2_s3qd0"] -[ext_resource type="Resource" uid="uid://cbskijhnnj3kw" path="res://Resources/StatusEffects/poisoned.tres" id="3_ix50y"] -[ext_resource type="Resource" uid="uid://cfbap4o68urti" path="res://PCs/Entomologist/ClassCards/Blowdart/tower_stats.tres" id="4_1w7pa"] -[ext_resource type="ArrayMesh" uid="uid://yxho5jipkwi2" path="res://PCs/Entomologist/ClassCards/Blowdart/blowdart.res" id="5_2kqqw"] -[ext_resource type="AudioStream" uid="uid://cu654fn5nke3n" path="res://PCs/Entomologist/ClassCards/Blowdart/shot1.wav" id="6_t1f1q"] - -[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_kor5l"] -random_pitch = 1.1 -streams_count = 1 -stream_0/stream = ExtResource("6_t1f1q") -stream_0/weight = 1.0 - -[node name="BlowdartTower" instance=ExtResource("1_lnpfa")] -script = ExtResource("2_s3qd0") -status_stats = ExtResource("3_ix50y") -stats = ExtResource("4_1w7pa") - -[node name="Pitch" parent="." index="1"] -visible = false - -[node name="Yaw" parent="." index="2"] -transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, 0.614838, 0) -mesh = ExtResource("5_2kqqw") - -[node name="AudioStreamPlayer3D" parent="Yaw" index="0"] -stream = SubResource("AudioStreamRandomizer_kor5l") diff --git a/PCs/Entomologist/green.tres b/PCs/Entomologist/green.tres deleted file mode 100644 index 84ad858..0000000 --- a/PCs/Entomologist/green.tres +++ /dev/null @@ -1,15 +0,0 @@ -[gd_resource type="Resource" script_class="HeroClass" load_steps=7 format=3 uid="uid://ogbkbf1v7j7l"] - -[ext_resource type="Script" path="res://Scripts/Resources/hero_class.gd" id="1_cpfpk"] -[ext_resource type="Resource" uid="uid://ckm88acryitl4" path="res://PCs/Mechanic/ClassCards/Sniper/card_sniper.tres" id="1_hv6hq"] -[ext_resource type="Resource" uid="uid://b37r54q84vqoi" path="res://PCs/Mechanic/ClassCards/RocketLauncher/card_rocket_launcher.tres" id="2_jdi4m"] -[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://PCs/Mechanic/ClassCards/Assault/card_assault.tres" id="3_f04lj"] -[ext_resource type="Texture2D" uid="uid://wknia76l1hqo" path="res://PCs/Entomologist/green_hand.png" id="4_jgbmi"] -[ext_resource type="Texture2D" uid="uid://dyqh1uu4pocv1" path="res://PCs/Entomologist/green.png" id="5_vhx4f"] - -[resource] -script = ExtResource("1_cpfpk") -hero_name = "Green" -texture = ExtResource("5_vhx4f") -hand_texture = ExtResource("4_jgbmi") -deck = Array[Resource("res://Scripts/Resources/card.gd")]([ExtResource("3_f04lj"), ExtResource("1_hv6hq"), ExtResource("2_jdi4m"), ExtResource("3_f04lj")]) diff --git a/PCs/Entomologist/green_hand.png~ b/PCs/Entomologist/green_hand.png~ deleted file mode 100644 index 1743615..0000000 Binary files a/PCs/Entomologist/green_hand.png~ and /dev/null differ diff --git a/PCs/Mage/ClassCards/Fireball/card_fireball.tres b/PCs/Mage/ClassCards/Fireball/card_fireball.tres deleted file mode 100644 index 2640325..0000000 --- a/PCs/Mage/ClassCards/Fireball/card_fireball.tres +++ /dev/null @@ -1,17 +0,0 @@ -[gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://bibx2my7igspq"] - -[ext_resource type="Script" path="res://Scripts/Resources/card.gd" id="1_qktm8"] -[ext_resource type="Resource" uid="uid://dnvqghpwyuw84" path="res://PCs/Mage/ClassCards/Fireball/tower_stats.tres" id="3_1l6fp"] -[ext_resource type="PackedScene" uid="uid://dnwjfb4fexr0o" path="res://PCs/Mage/ClassCards/Fireball/weapon_fireball.tscn" id="3_4c0mu"] -[ext_resource type="PackedScene" uid="uid://dwwgvgn0ds8tk" path="res://PCs/Mage/ClassCards/Fireball/tower_fireball.tscn" id="4_e3adw"] -[ext_resource type="Resource" uid="uid://dhwhwicgpw7yh" path="res://PCs/Mage/ClassCards/Fireball/weapon_stats.tres" id="4_folo6"] - -[resource] -script = ExtResource("1_qktm8") -rarity = 3 -faction = 0 -turret_scene = ExtResource("4_e3adw") -weapon_scene = ExtResource("3_4c0mu") -weapon_stats = ExtResource("4_folo6") -tower_stats = ExtResource("3_1l6fp") -display_name = "Fireball" diff --git a/PCs/Mage/ClassCards/Fireball/shot1.wav b/PCs/Mage/ClassCards/Fireball/shot1.wav deleted file mode 100644 index 8fd2309..0000000 Binary files a/PCs/Mage/ClassCards/Fireball/shot1.wav and /dev/null differ diff --git a/PCs/Mage/ClassCards/Fireball/shot1.wav.import b/PCs/Mage/ClassCards/Fireball/shot1.wav.import deleted file mode 100644 index c6eb3d6..0000000 --- a/PCs/Mage/ClassCards/Fireball/shot1.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://cxiluyamsxson" -path="res://.godot/imported/shot1.wav-e958a75b273803cef85f62869b480060.sample" - -[deps] - -source_file="res://PCs/Mage/ClassCards/Fireball/shot1.wav" -dest_files=["res://.godot/imported/shot1.wav-e958a75b273803cef85f62869b480060.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/PCs/Mage/ClassCards/Fireball/tower_fireball.gd b/PCs/Mage/ClassCards/Fireball/tower_fireball.gd deleted file mode 100644 index c6d3c05..0000000 --- a/PCs/Mage/ClassCards/Fireball/tower_fireball.gd +++ /dev/null @@ -1 +0,0 @@ -class_name FireballTower extends ProjectileTower diff --git a/PCs/Mage/ClassCards/Fireball/tower_fireball.tscn b/PCs/Mage/ClassCards/Fireball/tower_fireball.tscn deleted file mode 100644 index f0e1dcc..0000000 --- a/PCs/Mage/ClassCards/Fireball/tower_fireball.tscn +++ /dev/null @@ -1,29 +0,0 @@ -[gd_scene load_steps=8 format=3 uid="uid://dwwgvgn0ds8tk"] - -[ext_resource type="PackedScene" uid="uid://t0b32qb8eub2" path="res://Scenes/Towers/projectile_tower.tscn" id="1_rkdu6"] -[ext_resource type="Script" path="res://PCs/Mage/ClassCards/Fireball/tower_fireball.gd" id="2_td8dh"] -[ext_resource type="PackedScene" uid="uid://ddpixntjsbpqp" path="res://PCs/Mage/ClassCards/Fireball/fireball_projectile.tscn" id="3_1akv8"] -[ext_resource type="Resource" uid="uid://dnvqghpwyuw84" path="res://PCs/Mage/ClassCards/Fireball/tower_stats.tres" id="4_uu77s"] -[ext_resource type="ArrayMesh" uid="uid://d34yiqnnaie8r" path="res://PCs/Mage/ClassCards/Fireball/magetowermesh.res" id="5_7rkfh"] -[ext_resource type="AudioStream" uid="uid://cxiluyamsxson" path="res://PCs/Mage/ClassCards/Fireball/shot1.wav" id="6_201kn"] - -[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_gwg27"] -random_pitch = 1.1 -streams_count = 1 -stream_0/stream = ExtResource("6_201kn") -stream_0/weight = 1.0 - -[node name="FireballTower" instance=ExtResource("1_rkdu6")] -script = ExtResource("2_td8dh") -projectile_scene = ExtResource("3_1akv8") -stats = ExtResource("4_uu77s") - -[node name="Pitch" parent="." index="1"] -transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) -mesh = ExtResource("5_7rkfh") - -[node name="Yaw" parent="." index="2"] -transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 1.74532, 0) - -[node name="AudioStreamPlayer3D" parent="Yaw" index="0"] -stream = SubResource("AudioStreamRandomizer_gwg27") diff --git a/PCs/Mage/ClassCards/Icicle/shot1.wav b/PCs/Mage/ClassCards/Icicle/shot1.wav deleted file mode 100644 index 8fd2309..0000000 Binary files a/PCs/Mage/ClassCards/Icicle/shot1.wav and /dev/null differ diff --git a/PCs/Mage/ClassCards/Icicle/shot1.wav.import b/PCs/Mage/ClassCards/Icicle/shot1.wav.import deleted file mode 100644 index 99e93de..0000000 --- a/PCs/Mage/ClassCards/Icicle/shot1.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://dgqmtmty7ekmc" -path="res://.godot/imported/shot1.wav-48dee07800bbec8be44fd863194ab9f8.sample" - -[deps] - -source_file="res://PCs/Mage/ClassCards/Icicle/shot1.wav" -dest_files=["res://.godot/imported/shot1.wav-48dee07800bbec8be44fd863194ab9f8.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/PCs/Mage/ClassCards/Icicle/tower_icicle.gd b/PCs/Mage/ClassCards/Icicle/tower_icicle.gd deleted file mode 100644 index fd38208..0000000 --- a/PCs/Mage/ClassCards/Icicle/tower_icicle.gd +++ /dev/null @@ -1 +0,0 @@ -class_name IcicleTower extends ProjectileTower diff --git a/PCs/Mage/ClassCards/Icicle/tower_icicle.tscn b/PCs/Mage/ClassCards/Icicle/tower_icicle.tscn deleted file mode 100644 index a3c3112..0000000 --- a/PCs/Mage/ClassCards/Icicle/tower_icicle.tscn +++ /dev/null @@ -1,29 +0,0 @@ -[gd_scene load_steps=8 format=3 uid="uid://miawrarbb1up"] - -[ext_resource type="PackedScene" uid="uid://t0b32qb8eub2" path="res://Scenes/Towers/projectile_tower.tscn" id="1_d6g88"] -[ext_resource type="Script" path="res://PCs/Mage/ClassCards/Icicle/tower_icicle.gd" id="2_qcpgh"] -[ext_resource type="PackedScene" uid="uid://dyurjxotdkf1u" path="res://PCs/Mage/ClassCards/Icicle/icicle_projectile.tscn" id="3_o4uqf"] -[ext_resource type="Resource" uid="uid://d34bfj5togyyt" path="res://PCs/Mage/ClassCards/Icicle/tower_stats.tres" id="4_3il5a"] -[ext_resource type="ArrayMesh" uid="uid://d34yiqnnaie8r" path="res://PCs/Mage/ClassCards/Fireball/magetowermesh.res" id="5_soa3a"] -[ext_resource type="AudioStream" uid="uid://dgqmtmty7ekmc" path="res://PCs/Mage/ClassCards/Icicle/shot1.wav" id="6_ce8qo"] - -[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_wmia4"] -random_pitch = 1.1 -streams_count = 1 -stream_0/stream = ExtResource("6_ce8qo") -stream_0/weight = 1.0 - -[node name="IcicleTower" instance=ExtResource("1_d6g88")] -script = ExtResource("2_qcpgh") -projectile_scene = ExtResource("3_o4uqf") -stats = ExtResource("4_3il5a") - -[node name="Pitch" parent="." index="1"] -transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) -mesh = ExtResource("5_soa3a") - -[node name="Yaw" parent="." index="2"] -transform = Transform3D(0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1, 0, 1.745, 0) - -[node name="AudioStreamPlayer3D" parent="Yaw" index="0"] -stream = SubResource("AudioStreamRandomizer_wmia4") diff --git a/PCs/Mage/ClassCards/Refrigerator/card_refrigerator.tres b/PCs/Mage/ClassCards/Refrigerator/card_refrigerator.tres deleted file mode 100644 index 1003dd3..0000000 --- a/PCs/Mage/ClassCards/Refrigerator/card_refrigerator.tres +++ /dev/null @@ -1,17 +0,0 @@ -[gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://ds8qx4ggmqetk"] - -[ext_resource type="Script" path="res://Scripts/Resources/card.gd" id="1_84afc"] -[ext_resource type="Resource" uid="uid://st0qrut5nxrm" path="res://PCs/Mage/ClassCards/Refrigerator/tower_stats.tres" id="3_bihii"] -[ext_resource type="PackedScene" uid="uid://b0vi11kj3lxng" path="res://PCs/Mage/ClassCards/Refrigerator/weapon_refrigerator.tscn" id="4_0oufq"] -[ext_resource type="PackedScene" uid="uid://bqaynyhxdr4to" path="res://PCs/Mage/ClassCards/Refrigerator/tower_refrigerator.tscn" id="4_7x6qx"] -[ext_resource type="Resource" uid="uid://5l758yxfpi1e" path="res://PCs/Mage/ClassCards/Refrigerator/weapon_stats.tres" id="5_dqmyh"] - -[resource] -script = ExtResource("1_84afc") -rarity = 1 -faction = 0 -turret_scene = ExtResource("4_7x6qx") -weapon_scene = ExtResource("4_0oufq") -weapon_stats = ExtResource("5_dqmyh") -tower_stats = ExtResource("3_bihii") -display_name = "Refrigerator" diff --git a/PCs/Mage/ClassCards/Refrigerator/tower_refrigerator.gd b/PCs/Mage/ClassCards/Refrigerator/tower_refrigerator.gd deleted file mode 100644 index ac1177f..0000000 --- a/PCs/Mage/ClassCards/Refrigerator/tower_refrigerator.gd +++ /dev/null @@ -1,14 +0,0 @@ -class_name RefrigeratorTower extends RangeAffectingTower - -@export var particles: GPUParticles3D - - -func _ready() -> void: - super._ready() - particles.process_material.emission_ring_radius = target_range - - -func build_status_object() -> StatusEffect: - var status: StatusSlow = StatusSlow.new() - status.stats = status_stats - return status diff --git a/PCs/Mage/ClassCards/Refrigerator/tower_refrigerator.tscn b/PCs/Mage/ClassCards/Refrigerator/tower_refrigerator.tscn deleted file mode 100644 index bbd496f..0000000 --- a/PCs/Mage/ClassCards/Refrigerator/tower_refrigerator.tscn +++ /dev/null @@ -1,52 +0,0 @@ -[gd_scene load_steps=11 format=3 uid="uid://bqaynyhxdr4to"] - -[ext_resource type="PackedScene" uid="uid://bi6b2r6wek7he" path="res://Scenes/Towers/range_affecting_tower.tscn" id="1_4hvoi"] -[ext_resource type="Resource" uid="uid://fed6kimfbcwv" path="res://Resources/StatusEffects/cold.tres" id="2_u4dux"] -[ext_resource type="Script" path="res://PCs/Mage/ClassCards/Refrigerator/tower_refrigerator.gd" id="2_yhcmv"] -[ext_resource type="Resource" uid="uid://st0qrut5nxrm" path="res://PCs/Mage/ClassCards/Refrigerator/tower_stats.tres" id="3_jjh3a"] -[ext_resource type="ArrayMesh" uid="uid://bwvls7rj0oqyv" path="res://PCs/Mage/ClassCards/Refrigerator/fridge_mesh.res" id="5_mrvl8"] - -[sub_resource type="Gradient" id="Gradient_lm6vx"] -offsets = PackedFloat32Array(0, 0.682927, 1) -colors = PackedColorArray(0, 1, 1, 1, 0.430894, 1, 1, 1, 1, 1, 1, 1) - -[sub_resource type="GradientTexture1D" id="GradientTexture1D_wv576"] -gradient = SubResource("Gradient_lm6vx") - -[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_ijefe"] -spread = 180.0 -flatness = 1.0 -initial_velocity_min = 7.0 -initial_velocity_max = 7.0 -gravity = Vector3(0, -8, 0) -tangential_accel_min = 6.0 -tangential_accel_max = 6.0 -damping_min = 10.0 -damping_max = 10.0 -color_ramp = SubResource("GradientTexture1D_wv576") - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_niq28"] -vertex_color_use_as_albedo = true - -[sub_resource type="BoxMesh" id="BoxMesh_btdsr"] -material = SubResource("StandardMaterial3D_niq28") -size = Vector3(0.3, 0.3, 0.3) - -[node name="RefrigeratorTower" node_paths=PackedStringArray("particles") instance=ExtResource("1_4hvoi")] -script = ExtResource("2_yhcmv") -particles = NodePath("GPUParticles3D") -status_stats = ExtResource("2_u4dux") -stats = ExtResource("3_jjh3a") - -[node name="Pitch" parent="." index="1"] -visible = false - -[node name="Yaw" parent="." index="2"] -transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0.53317, 0) -mesh = ExtResource("5_mrvl8") - -[node name="GPUParticles3D" type="GPUParticles3D" parent="." index="5"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.418807, 0) -amount = 32 -process_material = SubResource("ParticleProcessMaterial_ijefe") -draw_pass_1 = SubResource("BoxMesh_btdsr") diff --git a/PCs/Mage/blue.tres b/PCs/Mage/blue.tres deleted file mode 100644 index b0546f3..0000000 --- a/PCs/Mage/blue.tres +++ /dev/null @@ -1,15 +0,0 @@ -[gd_resource type="Resource" script_class="HeroClass" load_steps=7 format=3 uid="uid://dxonpv8qbyrjy"] - -[ext_resource type="Script" path="res://Scripts/Resources/hero_class.gd" id="1_aeu85"] -[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://PCs/Mechanic/ClassCards/Assault/card_assault.tres" id="2_3yr5a"] -[ext_resource type="Resource" uid="uid://bibx2my7igspq" path="res://PCs/Mage/ClassCards/Fireball/card_fireball.tres" id="3_sh7d1"] -[ext_resource type="Resource" uid="uid://ckm88acryitl4" path="res://PCs/Mechanic/ClassCards/Sniper/card_sniper.tres" id="3_wyb0n"] -[ext_resource type="Texture2D" uid="uid://bvaif1sfn1ej4" path="res://PCs/Mage/blue_hand.png" id="4_srskc"] -[ext_resource type="Texture2D" uid="uid://bvybr3fwnw46p" path="res://Assets/Textures/yeen.png" id="6_jda20"] - -[resource] -script = ExtResource("1_aeu85") -hero_name = "Mage" -texture = ExtResource("6_jda20") -hand_texture = ExtResource("4_srskc") -deck = Array[Resource("res://Scripts/Resources/card.gd")]([ExtResource("2_3yr5a"), ExtResource("2_3yr5a"), ExtResource("3_wyb0n"), ExtResource("3_sh7d1")]) diff --git a/PCs/Mage/blue_hand.png~ b/PCs/Mage/blue_hand.png~ deleted file mode 100644 index ab6b0b4..0000000 Binary files a/PCs/Mage/blue_hand.png~ and /dev/null differ diff --git a/PCs/Mechanic/ClassCards/Assault/shot1.wav b/PCs/Mechanic/ClassCards/Assault/shot1.wav deleted file mode 100644 index 8fd2309..0000000 Binary files a/PCs/Mechanic/ClassCards/Assault/shot1.wav and /dev/null differ diff --git a/PCs/Mechanic/ClassCards/Assault/shot1.wav.import b/PCs/Mechanic/ClassCards/Assault/shot1.wav.import deleted file mode 100644 index dc5ccdc..0000000 --- a/PCs/Mechanic/ClassCards/Assault/shot1.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://chrf1dcq2ujw0" -path="res://.godot/imported/shot1.wav-c464c422ce6f3ea76414bfcacc678016.sample" - -[deps] - -source_file="res://PCs/Mechanic/ClassCards/Assault/shot1.wav" -dest_files=["res://.godot/imported/shot1.wav-c464c422ce6f3ea76414bfcacc678016.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/PCs/Mechanic/ClassCards/Assault/tower_assault.gd b/PCs/Mechanic/ClassCards/Assault/tower_assault.gd deleted file mode 100644 index 6dd36eb..0000000 --- a/PCs/Mechanic/ClassCards/Assault/tower_assault.gd +++ /dev/null @@ -1 +0,0 @@ -class_name AssaultTower extends HitscanTower diff --git a/PCs/Mechanic/ClassCards/Assault/tower_assault.tscn b/PCs/Mechanic/ClassCards/Assault/tower_assault.tscn deleted file mode 100644 index 9ba8fee..0000000 --- a/PCs/Mechanic/ClassCards/Assault/tower_assault.tscn +++ /dev/null @@ -1,27 +0,0 @@ -[gd_scene load_steps=7 format=3 uid="uid://bbfm4i4xlkwdr"] - -[ext_resource type="PackedScene" uid="uid://dumiyjlnea4gq" path="res://Scenes/Towers/hitscan_tower.tscn" id="1_uadu5"] -[ext_resource type="Resource" uid="uid://bdmsiw45xxhiv" path="res://PCs/Mechanic/ClassCards/Assault/tower_stats.tres" id="2_gg1gn"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/Assault/tower_assault.gd" id="2_olbck"] -[ext_resource type="ArrayMesh" uid="uid://oxjhqfwlcx5l" path="res://PCs/Mechanic/ClassCards/Assault/assaultmod.res" id="4_1d5pl"] -[ext_resource type="AudioStream" uid="uid://chrf1dcq2ujw0" path="res://PCs/Mechanic/ClassCards/Assault/shot1.wav" id="5_3eokp"] - -[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_dagyn"] -random_pitch = 1.1 -streams_count = 1 -stream_0/stream = ExtResource("5_3eokp") -stream_0/weight = 1.0 - -[node name="AssaultTower" instance=ExtResource("1_uadu5")] -script = ExtResource("2_olbck") -stats = ExtResource("2_gg1gn") - -[node name="Pitch" parent="." index="1"] -visible = false - -[node name="Yaw" parent="." index="2"] -transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 0, 0.910336, 0) -mesh = ExtResource("4_1d5pl") - -[node name="AudioStreamPlayer3D" parent="Yaw" index="0"] -stream = SubResource("AudioStreamRandomizer_dagyn") diff --git a/PCs/Mechanic/ClassCards/BombLauncher/card_bomb_launcher.tres b/PCs/Mechanic/ClassCards/BombLauncher/card_bomb_launcher.tres deleted file mode 100644 index 544b9f9..0000000 --- a/PCs/Mechanic/ClassCards/BombLauncher/card_bomb_launcher.tres +++ /dev/null @@ -1,17 +0,0 @@ -[gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://blgngx360vff1"] - -[ext_resource type="Script" path="res://Scripts/Resources/card.gd" id="1_qtxcq"] -[ext_resource type="Resource" uid="uid://8eaecilvan23" path="res://PCs/Mechanic/ClassCards/BombLauncher/tower_stats.tres" id="3_gknxe"] -[ext_resource type="PackedScene" uid="uid://c3fqlkytyc62u" path="res://PCs/Mechanic/ClassCards/BombLauncher/weapon_bomb_launcher.tscn" id="3_s56j6"] -[ext_resource type="Resource" uid="uid://co6eorobj1xuu" path="res://PCs/Mechanic/ClassCards/BombLauncher/weapon_stats.tres" id="4_s74ea"] -[ext_resource type="PackedScene" uid="uid://d2cch7qrwocg8" path="res://PCs/Mechanic/ClassCards/BombLauncher/tower_bomb_launcher.tscn" id="4_vc8pe"] - -[resource] -script = ExtResource("1_qtxcq") -rarity = 0 -faction = 0 -turret_scene = ExtResource("4_vc8pe") -weapon_scene = ExtResource("3_s56j6") -weapon_stats = ExtResource("4_s74ea") -tower_stats = ExtResource("3_gknxe") -display_name = "Bomb Launcher" diff --git a/PCs/Mechanic/ClassCards/BombLauncher/shot1.wav b/PCs/Mechanic/ClassCards/BombLauncher/shot1.wav deleted file mode 100644 index 8fd2309..0000000 Binary files a/PCs/Mechanic/ClassCards/BombLauncher/shot1.wav and /dev/null differ diff --git a/PCs/Mechanic/ClassCards/BombLauncher/shot1.wav.import b/PCs/Mechanic/ClassCards/BombLauncher/shot1.wav.import deleted file mode 100644 index 85a7bb6..0000000 --- a/PCs/Mechanic/ClassCards/BombLauncher/shot1.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://qeav4v23p0dd" -path="res://.godot/imported/shot1.wav-6ef5a8f56db406930c5787ba0d90c212.sample" - -[deps] - -source_file="res://PCs/Mechanic/ClassCards/BombLauncher/shot1.wav" -dest_files=["res://.godot/imported/shot1.wav-6ef5a8f56db406930c5787ba0d90c212.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/PCs/Mechanic/ClassCards/BombLauncher/tower_bomb_launcher.tscn b/PCs/Mechanic/ClassCards/BombLauncher/tower_bomb_launcher.tscn deleted file mode 100644 index c8fb67c..0000000 --- a/PCs/Mechanic/ClassCards/BombLauncher/tower_bomb_launcher.tscn +++ /dev/null @@ -1,29 +0,0 @@ -[gd_scene load_steps=8 format=3 uid="uid://d2cch7qrwocg8"] - -[ext_resource type="PackedScene" uid="uid://t0b32qb8eub2" path="res://Scenes/Towers/projectile_tower.tscn" id="1_r8hbo"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/BombLauncher/tower_bomb_launcher.gd" id="2_vlaa6"] -[ext_resource type="PackedScene" uid="uid://c8oq5unisjqne" path="res://PCs/Mechanic/ClassCards/BombLauncher/bomb_projectile.tscn" id="3_562if"] -[ext_resource type="Resource" uid="uid://8eaecilvan23" path="res://PCs/Mechanic/ClassCards/BombLauncher/tower_stats.tres" id="4_xgwj1"] -[ext_resource type="ArrayMesh" uid="uid://cbuu5w43qins8" path="res://PCs/Mechanic/ClassCards/BombLauncher/bombamodel.res" id="5_yixga"] -[ext_resource type="AudioStream" uid="uid://qeav4v23p0dd" path="res://PCs/Mechanic/ClassCards/BombLauncher/shot1.wav" id="6_mc58j"] - -[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_svy8m"] -random_pitch = 1.1 -streams_count = 1 -stream_0/stream = ExtResource("6_mc58j") -stream_0/weight = 1.0 - -[node name="BombLauncherTower" instance=ExtResource("1_r8hbo")] -script = ExtResource("2_vlaa6") -projectile_scene = ExtResource("3_562if") -stats = ExtResource("4_xgwj1") - -[node name="Pitch" parent="." index="1"] -visible = false - -[node name="Yaw" parent="." index="2"] -transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 0, 0.870628, 0) -mesh = ExtResource("5_yixga") - -[node name="AudioStreamPlayer3D" parent="Yaw" index="0"] -stream = SubResource("AudioStreamRandomizer_svy8m") diff --git a/PCs/Mechanic/ClassCards/Flamethrower/tower_flamethrower.gd b/PCs/Mechanic/ClassCards/Flamethrower/tower_flamethrower.gd deleted file mode 100644 index 2ba41bc..0000000 --- a/PCs/Mechanic/ClassCards/Flamethrower/tower_flamethrower.gd +++ /dev/null @@ -1,7 +0,0 @@ -class_name FlamethrowerTower extends ShapecastTower - - -func build_status_object() -> StatusEffect: - var status: StatusDoT = StatusDoT.new() - status.stats = status_stats - return status diff --git a/PCs/Mechanic/ClassCards/Flamethrower/tower_flamethrower.tscn b/PCs/Mechanic/ClassCards/Flamethrower/tower_flamethrower.tscn deleted file mode 100644 index cd9797d..0000000 --- a/PCs/Mechanic/ClassCards/Flamethrower/tower_flamethrower.tscn +++ /dev/null @@ -1,58 +0,0 @@ -[gd_scene load_steps=12 format=3 uid="uid://dkoj1766ygo3f"] - -[ext_resource type="PackedScene" uid="uid://8uxu72vjo0cv" path="res://Scenes/Towers/shapecast_tower.tscn" id="1_jagpf"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/Flamethrower/tower_flamethrower.gd" id="2_7vewc"] -[ext_resource type="Resource" uid="uid://dbanx8taicddm" path="res://Resources/StatusEffects/on_fire.tres" id="3_aop2h"] -[ext_resource type="Resource" uid="uid://cdtjbxs21peqg" path="res://PCs/Mechanic/ClassCards/Flamethrower/tower_stats.tres" id="4_by7c8"] -[ext_resource type="ArrayMesh" uid="uid://b4p0d4y8fdeox" path="res://PCs/Mechanic/ClassCards/Flamethrower/flamethrower_mesh.res" id="5_tc7nr"] - -[sub_resource type="BoxShape3D" id="BoxShape3D_r367g"] -size = Vector3(3, 2, 3) - -[sub_resource type="Gradient" id="Gradient_ay233"] -offsets = PackedFloat32Array(0, 0.178862, 0.455285, 1) -colors = PackedColorArray(0.94, 0.830333, 0, 1, 1, 0.222923, 0.00252032, 1, 0.517571, 0.0343237, 0.0001635, 1, 0.0352941, 0, 0, 1) - -[sub_resource type="GradientTexture1D" id="GradientTexture1D_7rrxx"] -gradient = SubResource("Gradient_ay233") - -[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_r7587"] -direction = Vector3(0, 0, -1) -spread = 15.0 -initial_velocity_min = 3.0 -initial_velocity_max = 3.0 -gravity = Vector3(0, 0, 0) -color_ramp = SubResource("GradientTexture1D_7rrxx") - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p8aw8"] -vertex_color_use_as_albedo = true - -[sub_resource type="BoxMesh" id="BoxMesh_h4c6o"] -material = SubResource("StandardMaterial3D_p8aw8") -size = Vector3(0.3, 0.3, 0.3) - -[node name="ShapecastTower" instance=ExtResource("1_jagpf")] -script = ExtResource("2_7vewc") -status_stats = ExtResource("3_aop2h") -stats = ExtResource("4_by7c8") - -[node name="Pitch" parent="." index="1"] -visible = false - -[node name="Yaw" parent="." index="2"] -mesh = null - -[node name="ShapeCast3D" parent="Yaw" index="0"] -shape = SubResource("BoxShape3D_r367g") -target_position = Vector3(0, 0, -2) -collision_mask = 4 - -[node name="GPUParticles3D" parent="Yaw/ShapeCast3D" index="0"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.534666) -amount = 16 -process_material = SubResource("ParticleProcessMaterial_r7587") -draw_pass_1 = SubResource("BoxMesh_h4c6o") - -[node name="MeshInstance3D" type="MeshInstance3D" parent="Yaw" index="1"] -transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0, 0) -mesh = ExtResource("5_tc7nr") diff --git a/PCs/Mechanic/ClassCards/Gatling/shot1.wav b/PCs/Mechanic/ClassCards/Gatling/shot1.wav deleted file mode 100644 index 8fd2309..0000000 Binary files a/PCs/Mechanic/ClassCards/Gatling/shot1.wav and /dev/null differ diff --git a/PCs/Mechanic/ClassCards/Gatling/shot1.wav.import b/PCs/Mechanic/ClassCards/Gatling/shot1.wav.import deleted file mode 100644 index 60c0f30..0000000 --- a/PCs/Mechanic/ClassCards/Gatling/shot1.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://1j0rquv4awjs" -path="res://.godot/imported/shot1.wav-609b18f764f81167875f9b6fe5cf0123.sample" - -[deps] - -source_file="res://PCs/Mechanic/ClassCards/Gatling/shot1.wav" -dest_files=["res://.godot/imported/shot1.wav-609b18f764f81167875f9b6fe5cf0123.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/PCs/Mechanic/ClassCards/Gatling/tower_gatling.tscn b/PCs/Mechanic/ClassCards/Gatling/tower_gatling.tscn deleted file mode 100644 index c172538..0000000 --- a/PCs/Mechanic/ClassCards/Gatling/tower_gatling.tscn +++ /dev/null @@ -1,27 +0,0 @@ -[gd_scene load_steps=7 format=3 uid="uid://bjuc3x7u3f271"] - -[ext_resource type="PackedScene" uid="uid://dumiyjlnea4gq" path="res://Scenes/Towers/hitscan_tower.tscn" id="1_su74p"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/Gatling/tower_gatling.gd" id="2_ipjp1"] -[ext_resource type="Resource" uid="uid://nxl5wabgl36t" path="res://PCs/Mechanic/ClassCards/Gatling/tower_stats.tres" id="3_oicqw"] -[ext_resource type="ArrayMesh" uid="uid://dler7wcqj0bm6" path="res://PCs/Mechanic/ClassCards/Gatling/gattlemesh.res" id="4_wihc0"] -[ext_resource type="AudioStream" uid="uid://1j0rquv4awjs" path="res://PCs/Mechanic/ClassCards/Gatling/shot1.wav" id="5_vv714"] - -[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_wpani"] -random_pitch = 1.1 -streams_count = 1 -stream_0/stream = ExtResource("5_vv714") -stream_0/weight = 1.0 - -[node name="GatlingTower" instance=ExtResource("1_su74p")] -script = ExtResource("2_ipjp1") -stats = ExtResource("3_oicqw") - -[node name="Pitch" parent="." index="1"] -visible = false - -[node name="Yaw" parent="." index="2"] -transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0.426474, 0) -mesh = ExtResource("4_wihc0") - -[node name="AudioStreamPlayer3D" parent="Yaw" index="0"] -stream = SubResource("AudioStreamRandomizer_wpani") diff --git a/PCs/Mechanic/ClassCards/GlueLauncher/shot1.wav b/PCs/Mechanic/ClassCards/GlueLauncher/shot1.wav deleted file mode 100644 index 8fd2309..0000000 Binary files a/PCs/Mechanic/ClassCards/GlueLauncher/shot1.wav and /dev/null differ diff --git a/PCs/Mechanic/ClassCards/GlueLauncher/shot1.wav.import b/PCs/Mechanic/ClassCards/GlueLauncher/shot1.wav.import deleted file mode 100644 index 7302135..0000000 --- a/PCs/Mechanic/ClassCards/GlueLauncher/shot1.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://v3j5lw827y85" -path="res://.godot/imported/shot1.wav-cb885b12e493666bc374ac80b2b48618.sample" - -[deps] - -source_file="res://PCs/Mechanic/ClassCards/GlueLauncher/shot1.wav" -dest_files=["res://.godot/imported/shot1.wav-cb885b12e493666bc374ac80b2b48618.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/PCs/Mechanic/ClassCards/GlueLauncher/tower_glue_launcher.gd b/PCs/Mechanic/ClassCards/GlueLauncher/tower_glue_launcher.gd deleted file mode 100644 index ae45a75..0000000 --- a/PCs/Mechanic/ClassCards/GlueLauncher/tower_glue_launcher.gd +++ /dev/null @@ -1,7 +0,0 @@ -class_name GlueLauncherTower extends StatusApplyingTower - - -func build_status_object() -> StatusEffect: - var status: StatusSlow = StatusSlow.new() - status.stats = status_stats - return status diff --git a/PCs/Mechanic/ClassCards/GlueLauncher/tower_glue_launcher.tscn b/PCs/Mechanic/ClassCards/GlueLauncher/tower_glue_launcher.tscn deleted file mode 100644 index 535b88b..0000000 --- a/PCs/Mechanic/ClassCards/GlueLauncher/tower_glue_launcher.tscn +++ /dev/null @@ -1,29 +0,0 @@ -[gd_scene load_steps=8 format=3 uid="uid://bb44pintbwdcf"] - -[ext_resource type="PackedScene" uid="uid://dxwtlvv632ae8" path="res://Scenes/Towers/status_applying_tower.tscn" id="1_r1dvg"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/GlueLauncher/tower_glue_launcher.gd" id="2_ot8fu"] -[ext_resource type="Resource" uid="uid://d0643gfp52x3s" path="res://Resources/StatusEffects/sticky.tres" id="3_ibb53"] -[ext_resource type="Resource" uid="uid://bvkwgmbxje0dp" path="res://PCs/Mechanic/ClassCards/GlueLauncher/tower_stats.tres" id="4_etcd4"] -[ext_resource type="ArrayMesh" uid="uid://cehyrhbd7pu83" path="res://PCs/Mechanic/ClassCards/GlueLauncher/glue_launcher_model.res" id="5_dsftx"] -[ext_resource type="AudioStream" uid="uid://v3j5lw827y85" path="res://PCs/Mechanic/ClassCards/GlueLauncher/shot1.wav" id="6_lntow"] - -[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_r4ak7"] -random_pitch = 1.1 -streams_count = 1 -stream_0/stream = ExtResource("6_lntow") -stream_0/weight = 1.0 - -[node name="GlueLauncherTower" instance=ExtResource("1_r1dvg")] -script = ExtResource("2_ot8fu") -status_stats = ExtResource("3_ibb53") -stats = ExtResource("4_etcd4") - -[node name="Pitch" parent="." index="1"] -visible = false - -[node name="Yaw" parent="." index="2"] -transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0.484804, 0) -mesh = ExtResource("5_dsftx") - -[node name="AudioStreamPlayer3D" parent="Yaw" index="0"] -stream = SubResource("AudioStreamRandomizer_r4ak7") diff --git a/PCs/Mechanic/ClassCards/Reactor/tower_reactor.gd b/PCs/Mechanic/ClassCards/Reactor/tower_reactor.gd deleted file mode 100644 index 89dd4db..0000000 --- a/PCs/Mechanic/ClassCards/Reactor/tower_reactor.gd +++ /dev/null @@ -1,14 +0,0 @@ -class_name ReactorTower extends RangeAffectingTower - -@export var particles: GPUParticles3D - - -func _ready() -> void: - super._ready() - particles.process_material.emission_ring_radius = target_range - - -func build_status_object() -> StatusEffect: - var status: StatusDoT = StatusDoT.new() - status.stats = status_stats - return status diff --git a/PCs/Mechanic/ClassCards/Reactor/tower_reactor.tscn b/PCs/Mechanic/ClassCards/Reactor/tower_reactor.tscn deleted file mode 100644 index 062aef9..0000000 --- a/PCs/Mechanic/ClassCards/Reactor/tower_reactor.tscn +++ /dev/null @@ -1,52 +0,0 @@ -[gd_scene load_steps=11 format=3 uid="uid://dqrkn0vp2tmrh"] - -[ext_resource type="PackedScene" uid="uid://bi6b2r6wek7he" path="res://Scenes/Towers/range_affecting_tower.tscn" id="1_afsqn"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/Reactor/tower_reactor.gd" id="2_6w83m"] -[ext_resource type="Resource" uid="uid://dxlisoas4xlmo" path="res://Resources/StatusEffects/radioactive.tres" id="3_xhrj0"] -[ext_resource type="Resource" uid="uid://cssdyxk8oefsd" path="res://PCs/Mechanic/ClassCards/Reactor/tower_stats.tres" id="4_rkhup"] -[ext_resource type="ArrayMesh" uid="uid://d280k3kx6hh7h" path="res://PCs/Mechanic/ClassCards/Reactor/reactor_mesh.res" id="5_it8eo"] - -[sub_resource type="Gradient" id="Gradient_ranod"] -interpolation_color_space = 2 -offsets = PackedFloat32Array(0.252033, 1) -colors = PackedColorArray(0, 0.533333, 0, 1, 0, 1, 0, 0.34902) - -[sub_resource type="GradientTexture1D" id="GradientTexture1D_iinp2"] -gradient = SubResource("Gradient_ranod") - -[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_q1hpa"] -emission_shape = 6 -emission_ring_axis = Vector3(0, 1, 0) -emission_ring_height = 0.1 -emission_ring_radius = 30.0 -emission_ring_inner_radius = 0.0 -gravity = Vector3(0, 3, 0) -color_ramp = SubResource("GradientTexture1D_iinp2") - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rl0f7"] -transparency = 1 -vertex_color_use_as_albedo = true - -[sub_resource type="BoxMesh" id="BoxMesh_fr4f1"] -material = SubResource("StandardMaterial3D_rl0f7") -size = Vector3(0.3, 0.3, 0.3) - -[node name="ReactorTower" node_paths=PackedStringArray("particles") instance=ExtResource("1_afsqn")] -script = ExtResource("2_6w83m") -particles = NodePath("GPUParticles3D") -status_stats = ExtResource("3_xhrj0") -stats = ExtResource("4_rkhup") - -[node name="Pitch" parent="." index="1"] -visible = false - -[node name="Yaw" parent="." index="2"] -transform = Transform3D(0.55, 0, 0, 0, 0.55, 0, 0, 0, 0.55, 0, 0.13062, 0) -mesh = ExtResource("5_it8eo") - -[node name="GPUParticles3D" type="GPUParticles3D" parent="." index="5"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.6, 0) -amount = 12 -lifetime = 0.6 -process_material = SubResource("ParticleProcessMaterial_q1hpa") -draw_pass_1 = SubResource("BoxMesh_fr4f1") diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/card_rocket_launcher.tres b/PCs/Mechanic/ClassCards/RocketLauncher/card_rocket_launcher.tres deleted file mode 100644 index 760da7c..0000000 --- a/PCs/Mechanic/ClassCards/RocketLauncher/card_rocket_launcher.tres +++ /dev/null @@ -1,17 +0,0 @@ -[gd_resource type="Resource" script_class="Card" load_steps=6 format=3 uid="uid://b37r54q84vqoi"] - -[ext_resource type="Script" path="res://Scripts/Resources/card.gd" id="1_ly0o5"] -[ext_resource type="Resource" uid="uid://c65rq455ma8f6" path="res://PCs/Mechanic/ClassCards/RocketLauncher/tower_stats.tres" id="3_06my6"] -[ext_resource type="PackedScene" uid="uid://bdp7icdejayvr" path="res://PCs/Mechanic/ClassCards/RocketLauncher/weapon_rocket_launcher.tscn" id="3_qo5gv"] -[ext_resource type="Resource" uid="uid://d2yo07m2mp2mp" path="res://PCs/Mechanic/ClassCards/RocketLauncher/weapon_stats.tres" id="4_cmvfg"] -[ext_resource type="PackedScene" uid="uid://b3q0f6w30nwsh" path="res://PCs/Mechanic/ClassCards/RocketLauncher/tower_rocket_launcher.tscn" id="4_hff2k"] - -[resource] -script = ExtResource("1_ly0o5") -rarity = 0 -faction = 0 -turret_scene = ExtResource("4_hff2k") -weapon_scene = ExtResource("3_qo5gv") -weapon_stats = ExtResource("4_cmvfg") -tower_stats = ExtResource("3_06my6") -display_name = "Rocket Launcher" diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/rocket.png.kra b/PCs/Mechanic/ClassCards/RocketLauncher/rocket.png.kra deleted file mode 100644 index 2ac94f7..0000000 Binary files a/PCs/Mechanic/ClassCards/RocketLauncher/rocket.png.kra and /dev/null differ diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/shot1.wav b/PCs/Mechanic/ClassCards/RocketLauncher/shot1.wav deleted file mode 100644 index 8fd2309..0000000 Binary files a/PCs/Mechanic/ClassCards/RocketLauncher/shot1.wav and /dev/null differ diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/shot1.wav.import b/PCs/Mechanic/ClassCards/RocketLauncher/shot1.wav.import deleted file mode 100644 index 079d682..0000000 --- a/PCs/Mechanic/ClassCards/RocketLauncher/shot1.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://n0w2kj5j2x4e" -path="res://.godot/imported/shot1.wav-ab82584ca2f5abc15cd1c0910b64615e.sample" - -[deps] - -source_file="res://PCs/Mechanic/ClassCards/RocketLauncher/shot1.wav" -dest_files=["res://.godot/imported/shot1.wav-ab82584ca2f5abc15cd1c0910b64615e.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/PCs/Mechanic/ClassCards/RocketLauncher/tower_rocket_launcher.gd b/PCs/Mechanic/ClassCards/RocketLauncher/tower_rocket_launcher.gd deleted file mode 100644 index f2390c6..0000000 --- a/PCs/Mechanic/ClassCards/RocketLauncher/tower_rocket_launcher.gd +++ /dev/null @@ -1,38 +0,0 @@ -class_name RocketLauncherTower extends ProjectileTower - - -func _ready() -> void: - super._ready() - target_finder.max_targets = floori(stats.get_attribute("Target Limit")) - - -func _physics_process(_delta: float) -> void: - if !is_multiplayer_authority(): - #only doing the graphical sort of stuff but not shoot logic - if target_finder.get_multiple_targets().size() >= 1: - aim() - return - if target_finder.get_multiple_targets().size() >= 1: - #networked_acquire_target.rpc(get_tree().root.get_path_to(targeted_enemy)) - aim() - if time_since_firing >= time_between_shots: - time_since_firing -= time_between_shots - shoot() - - -func shoot() -> void: - for target: EnemyController in target_finder.get_multiple_targets(): - networked_spawn_rocket.rpc(get_tree().root.get_path_to(target), multiplayer.get_unique_id()) - - -@rpc("reliable", "call_local") -func networked_spawn_rocket(target_node_path: String, peer_id: int) -> void: - var target: EnemyController = get_tree().root.get_node(target_node_path) - var projectile: RocketProjectile = projectile_scene.instantiate() as RocketProjectile - projectile.position = global_position + Vector3.UP - projectile.damage = damage - projectile.target = target - projectile.name = base_name + str(peer_id) + str(projectile_id) - get_tree().root.add_child(projectile) - projectile.apply_central_impulse(Vector3.UP * 3.0) - projectile_id += 1 diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/tower_rocket_launcher.tscn b/PCs/Mechanic/ClassCards/RocketLauncher/tower_rocket_launcher.tscn deleted file mode 100644 index a39b7a9..0000000 --- a/PCs/Mechanic/ClassCards/RocketLauncher/tower_rocket_launcher.tscn +++ /dev/null @@ -1,27 +0,0 @@ -[gd_scene load_steps=7 format=3 uid="uid://b3q0f6w30nwsh"] - -[ext_resource type="PackedScene" uid="uid://t0b32qb8eub2" path="res://Scenes/Towers/projectile_tower.tscn" id="1_su4lx"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/RocketLauncher/tower_rocket_launcher.gd" id="2_33124"] -[ext_resource type="PackedScene" uid="uid://p2vwo8ivben6" path="res://PCs/Mechanic/ClassCards/RocketLauncher/rocket_projectile.tscn" id="3_8kvhb"] -[ext_resource type="ArrayMesh" uid="uid://dltxsh8ppubj3" path="res://PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher_model.res" id="4_1rycx"] -[ext_resource type="AudioStream" uid="uid://n0w2kj5j2x4e" path="res://PCs/Mechanic/ClassCards/RocketLauncher/shot1.wav" id="5_nd3i8"] - -[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_7k8gw"] -random_pitch = 1.1 -streams_count = 1 -stream_0/stream = ExtResource("5_nd3i8") -stream_0/weight = 1.0 - -[node name="RocketLauncherTower" instance=ExtResource("1_su4lx")] -script = ExtResource("2_33124") -projectile_scene = ExtResource("3_8kvhb") - -[node name="Pitch" parent="." index="1"] -visible = false - -[node name="Yaw" parent="." index="2"] -transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 0, 0.667653, 0) -mesh = ExtResource("4_1rycx") - -[node name="AudioStreamPlayer3D" parent="Yaw" index="0"] -stream = SubResource("AudioStreamRandomizer_7k8gw") diff --git a/PCs/Mechanic/ClassCards/Sniper/shot1.wav b/PCs/Mechanic/ClassCards/Sniper/shot1.wav deleted file mode 100644 index 8fd2309..0000000 Binary files a/PCs/Mechanic/ClassCards/Sniper/shot1.wav and /dev/null differ diff --git a/PCs/Mechanic/ClassCards/Sniper/shot1.wav.import b/PCs/Mechanic/ClassCards/Sniper/shot1.wav.import deleted file mode 100644 index a29cf0e..0000000 --- a/PCs/Mechanic/ClassCards/Sniper/shot1.wav.import +++ /dev/null @@ -1,24 +0,0 @@ -[remap] - -importer="wav" -type="AudioStreamWAV" -uid="uid://bixe14jkki8be" -path="res://.godot/imported/shot1.wav-ff82c748c71f861db358e2ebb746be14.sample" - -[deps] - -source_file="res://PCs/Mechanic/ClassCards/Sniper/shot1.wav" -dest_files=["res://.godot/imported/shot1.wav-ff82c748c71f861db358e2ebb746be14.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/PCs/Mechanic/ClassCards/Sniper/tower_sniper.gd b/PCs/Mechanic/ClassCards/Sniper/tower_sniper.gd deleted file mode 100644 index ecbdb7d..0000000 --- a/PCs/Mechanic/ClassCards/Sniper/tower_sniper.gd +++ /dev/null @@ -1 +0,0 @@ -class_name SniperTower extends HitscanTower diff --git a/PCs/Mechanic/ClassCards/Sniper/tower_sniper.tscn b/PCs/Mechanic/ClassCards/Sniper/tower_sniper.tscn deleted file mode 100644 index 31fd74e..0000000 --- a/PCs/Mechanic/ClassCards/Sniper/tower_sniper.tscn +++ /dev/null @@ -1,27 +0,0 @@ -[gd_scene load_steps=7 format=3 uid="uid://bt4qbc5lp4nhr"] - -[ext_resource type="PackedScene" uid="uid://dumiyjlnea4gq" path="res://Scenes/Towers/hitscan_tower.tscn" id="1_x1nem"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/Sniper/tower_sniper.gd" id="2_v5fr7"] -[ext_resource type="Resource" uid="uid://eb0by6ba1d43" path="res://PCs/Mechanic/ClassCards/Sniper/tower_stats.tres" id="3_a0vis"] -[ext_resource type="ArrayMesh" uid="uid://bu35or5yc5j4c" path="res://PCs/Mechanic/ClassCards/Sniper/snipermodel.res" id="4_156p4"] -[ext_resource type="AudioStream" uid="uid://bixe14jkki8be" path="res://PCs/Mechanic/ClassCards/Sniper/shot1.wav" id="5_esi1l"] - -[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_johsd"] -random_pitch = 1.1 -streams_count = 1 -stream_0/stream = ExtResource("5_esi1l") -stream_0/weight = 1.0 - -[node name="HitscanTower" instance=ExtResource("1_x1nem")] -script = ExtResource("2_v5fr7") -stats = ExtResource("3_a0vis") - -[node name="Pitch" parent="." index="1"] -visible = false - -[node name="Yaw" parent="." index="2"] -transform = Transform3D(0.4, 0, 0, 0, 0.4, 0, 0, 0, 0.4, 0, 0.765984, 0) -mesh = ExtResource("4_156p4") - -[node name="AudioStreamPlayer3D" parent="Yaw" index="0"] -stream = SubResource("AudioStreamRandomizer_johsd") diff --git a/PCs/Mechanic/red.tres b/PCs/Mechanic/red.tres deleted file mode 100644 index 94bd16b..0000000 --- a/PCs/Mechanic/red.tres +++ /dev/null @@ -1,15 +0,0 @@ -[gd_resource type="Resource" script_class="HeroClass" load_steps=7 format=3 uid="uid://b5pc3frhx467q"] - -[ext_resource type="Script" path="res://Scripts/Resources/hero_class.gd" id="1_1wkap"] -[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://PCs/Mechanic/ClassCards/Assault/card_assault.tres" id="1_iiksa"] -[ext_resource type="Resource" uid="uid://ckm88acryitl4" path="res://PCs/Mechanic/ClassCards/Sniper/card_sniper.tres" id="2_hkiwr"] -[ext_resource type="Resource" uid="uid://b37r54q84vqoi" path="res://PCs/Mechanic/ClassCards/RocketLauncher/card_rocket_launcher.tres" id="3_ruhqi"] -[ext_resource type="Texture2D" uid="uid://ctkixdue3o7ec" path="res://PCs/Mechanic/red_hand.png" id="4_wnhdj"] -[ext_resource type="Texture2D" uid="uid://d4jd718brpsed" path="res://Assets/Textures/doe.png" id="6_btlgg"] - -[resource] -script = ExtResource("1_1wkap") -hero_name = "Militant" -texture = ExtResource("6_btlgg") -hand_texture = ExtResource("4_wnhdj") -deck = Array[Resource("res://Scripts/Resources/card.gd")]([ExtResource("2_hkiwr"), ExtResource("3_ruhqi"), ExtResource("1_iiksa"), ExtResource("1_iiksa")]) diff --git a/PCs/Mechanic/red_hand.png~ b/PCs/Mechanic/red_hand.png~ deleted file mode 100644 index 6260456..0000000 Binary files a/PCs/Mechanic/red_hand.png~ and /dev/null differ diff --git a/PCs/hero.gd b/PCs/hero.gd index 9eff552..79777aa 100644 --- a/PCs/hero.gd +++ b/PCs/hero.gd @@ -1,8 +1,6 @@ class_name Hero extends CharacterBody3D signal ready_state_changed(state: bool) -signal spawned -signal died @export var hero_class: HeroClass @export var camera: Camera3D @@ -18,14 +16,15 @@ signal died @export var hand_sprite: Sprite2D @export var interaction_raycast: RayCast3D @export var inventory: Inventory -@export var gauntlet_card_1: CardInHand -@export var gauntlet_card_2: CardInHand +@export var gauntlet_cards: Array[CardInHand] @export var pause_menu_scene: PackedScene @export var hud: HUD @export var movement: PlayerMovement @export var sprint_zoom_speed: float = 0.2 @export var player_name_tag: Label @export var weapon_swap_timer: Timer + +@export_subgroup("Audio") @export var ears: AudioListener3D @export var place_card_audio: AudioStreamPlayer @export var swap_card_audio: AudioStreamPlayer @@ -36,12 +35,16 @@ signal died @export var swap_off_audio: AudioStreamPlayer @export var swap_on_audio: AudioStreamPlayer +var hovering_item: InteractButton = null var weapons_spawn_count: int = 0 #Used to prevent node name collisions for multiplayer var inventory_selected_index: int = 0 -var equipped_card: Card -var offhand_card: Card -var weapon: Weapon -var offhand_weapon: Weapon +#var equipped_card: Card +#var offhand_card: Card +var equipped_weapon: int = 0 +var weapons: Array[Weapon] = [null, null] +var cards: Array[Card] = [null, null] +#var weapon: Weapon +#var offhand_weapon: Weapon var weapons_active: bool = false var paused: bool = false var editing_mode: bool = true @@ -77,8 +80,8 @@ func _ready() -> void: camera.set_visible(false) gun_camera.set_visible(false) hud.set_visible(false) - if weapon != null: - weapon.set_raycast_origin(camera) + if weapons[equipped_weapon] != null: + weapons[equipped_weapon].set_raycast_origin(camera) sprite.texture.atlas = hero_class.texture check_left_hand_valid() Input.mouse_mode = Input.MOUSE_MODE_CAPTURED @@ -106,8 +109,16 @@ func _process(delta: float) -> void: if editing_mode: if interaction_raycast.is_colliding() and interaction_raycast.get_collider() is InteractButton: hud.set_hover_text(interaction_raycast.get_collider().hover_text) + if !hovering_item or hovering_item != interaction_raycast.get_collider(): + if hovering_item: + hovering_item.disable_hover_effect() + hovering_item = interaction_raycast.get_collider() + hovering_item.enable_hover_effect() else: hud.unset_hover_text() + if hovering_item: + hovering_item.disable_hover_effect() + hovering_item = null if edit_tool.is_looking_at_tower_base: card_sprites[0].view_tower() @@ -122,11 +133,21 @@ func _process(delta: float) -> void: currency -= button.press_cost if interaction_raycast.get_collider() is ItemCard: add_card(interaction_raycast.get_collider().pick_up()) - if Input.is_action_just_pressed("Equip In Gauntlet"): - equip_weapon() - if Input.is_action_just_pressed("Secondary Fire"): - if equipped_card or offhand_card: - swap_weapons() + #if Input.is_action_just_pressed("Equip In Gauntlet"): + # equip_weapon() + #if Input.is_action_just_pressed("Secondary Fire"): + # if equipped_card or offhand_card: + # swap_weapons() + if Input.is_action_just_pressed("Equip Primary Weapon"): + if weapons[0]: + unequip_weapon(0) + else: + equip_weapon(0) + if Input.is_action_just_pressed("Equip Secondary Weapon"): + if weapons[1]: + unequip_weapon(1) + else: + equip_weapon(1) if Input.is_action_just_pressed("Select Next Card") and inventory.contents.size() > 1: increment_selected() swap_card_audio.play() @@ -137,26 +158,25 @@ func _process(delta: float) -> void: edit_tool.interact_key_held = true if Input.is_action_just_released("Primary Fire"): edit_tool.interact_key_held = false - if weapon != null: - weapon.release_trigger() - weapon.release_second_trigger() + if weapons[equipped_weapon] != null: + weapons[equipped_weapon].release_trigger() + weapons[equipped_weapon].release_second_trigger() else: - if weapon and weapons_active: + if weapons[equipped_weapon] and weapons_active: if Input.is_action_just_pressed("Primary Fire"): - weapon.hold_trigger() + weapons[equipped_weapon].hold_trigger() if Input.is_action_just_released("Primary Fire"): - weapon.release_trigger() + weapons[equipped_weapon].release_trigger() if Input.is_action_pressed("Secondary Fire"): - weapon.hold_second_trigger() + weapons[equipped_weapon].hold_second_trigger() if Input.is_action_just_released("Secondary Fire"): - weapon.release_second_trigger() + weapons[equipped_weapon].release_second_trigger() if Input.is_action_pressed("Primary Fire"): movement.can_sprint = false if Input.is_action_pressed("Secondary Fire"): movement.can_sprint = false if Input.is_action_just_pressed("Equip In Gauntlet"): - if weapon and offhand_weapon: - swap_weapons() + swap_weapons() if movement.sprinting: movement.zoom_factor -= sprint_zoom_speed * delta @@ -214,10 +234,10 @@ func ready_self() -> void: func unready_self() -> void: if ready_state: ready_state = false - if !equipped_card: - hud.place_icon.set_visible(true) - if !offhand_card: - hud.swap_icon.set_visible(true) + #if !equipped_card: + # hud.place_icon.set_visible(true) + #if !offhand_card: + # hud.swap_icon.set_visible(true) hud.grow_wave_start_label() unready_audio.play() networked_set_ready_state(ready_state) @@ -242,7 +262,7 @@ func pause() -> void: func enter_editing_mode(value: int) -> void: - gauntlet_sprite.set_visible(true) + gauntlet_sprite.visible = true weapons_active = false hud.set_wave_count(value + 1) hud.set_energy_visible(false) @@ -250,30 +270,33 @@ func enter_editing_mode(value: int) -> void: hud.grow_wave_start_label() editing_mode = true edit_tool.enabled = true - left_hand.set_visible(true) - if weapon: - weapon.release_trigger() - weapon.set_visible(false) + left_hand.visible = true + if weapons[equipped_weapon]: + weapons[equipped_weapon].release_trigger() + weapons[equipped_weapon].visible = false func exit_editing_mode(value: int) -> void: - gauntlet_sprite.set_visible(false) + gauntlet_sprite.visible = false weapons_active = false hud.set_wave_count(value) - if !weapon and offhand_weapon: - swap_weapons() - if weapon: + #if !weapon and offhand_weapon: + # swap_weapons() + if weapons[equipped_weapon]: hud.set_energy_visible(true) #weapon.set_visible(false) - weapon.current_energy = weapon.max_energy - weapon.energy_changed.emit(weapon.current_energy) + weapons[equipped_weapon].current_energy = weapons[equipped_weapon].max_energy + #this had to be commented out coz the new energy bar thinks "energy changed" is "energy used" + #weapons[equipped_weapon].energy_changed.emit(weapons[equipped_weapon].current_energy) + var offhand_weapon: Weapon = weapons[0] if equipped_weapon == 1 else weapons[1] if offhand_weapon: hud.set_offhand_energy_visible(true) offhand_weapon.current_energy = offhand_weapon.max_energy - offhand_weapon.energy_changed.emit(offhand_weapon.current_energy) + #offhand_weapon.energy_changed.emit(offhand_weapon.current_energy) edit_tool.enabled = false edit_tool.delete_tower_preview() - left_hand.set_visible(false) + left_hand.visible = false + hud.unset_hover_text() editing_mode = false weapon_swap_timer.start() @@ -282,112 +305,129 @@ func check_left_hand_valid() -> void: if !editing_mode: return if inventory.size == 0: - left_hand_sprite.set_visible(false) + left_hand_sprite.visible = false #gauntlet.texture.region = Rect2(64, 0, 64, 64) else: - left_hand_sprite.set_visible(true) + left_hand_sprite.visible = true #gauntlet.texture.region = Rect2(0, 0, 64, 64) var selected_card: Card = inventory.contents.keys()[inventory_selected_index] for index: int in card_sprites.size(): if index < inventory.contents[selected_card]: - card_sprites[index].set_visible(true) + card_sprites[index].visible = true card_sprites[index].set_card(selected_card) #card_sprites[index].view_weapon() else: - card_sprites[index].set_visible(false) + card_sprites[index].visible = false -func equip_weapon() -> void: - if weapon != null: +func equip_weapon(slot: int = 0) -> void: + if weapons[slot] != null: unequip_weapon() return if inventory.size > 0: place_card_audio.play() - equipped_card = inventory.remove_at(inventory_selected_index) - if !inventory.contents.has(equipped_card): + cards[slot] = inventory.remove_at(inventory_selected_index) + if !inventory.contents.has(cards[slot]): decrement_selected() - weapon = equipped_card.weapon_scene.instantiate() - weapon.name = str(weapons_spawn_count) - networked_equip_weapon.rpc(Data.cards.find(equipped_card), 0, weapons_spawn_count) + weapons[slot] = cards[slot].weapon_scene.instantiate() + weapons[slot].name = str(weapons_spawn_count) + networked_equip_weapon.rpc(Data.cards.find(cards[slot]), 0, weapons_spawn_count) weapons_spawn_count += 1 - weapon.energy_changed.connect(hud.set_weapon_energy) - weapon.set_multiplayer_authority(multiplayer.get_unique_id()) - gauntlet_card_1.set_card(equipped_card) - hud.place_icon.set_visible(false) - gauntlet_card_1.view_weapon() - gauntlet_card_1.set_visible(true) - weapon.set_hero(self) - weapon.set_visible(false) - right_hand.add_child(weapon) + #weapons[slot].energy_changed.connect(hud.set_weapon_energy.bind(weapons[slot].stats.energy_type)) + weapons[slot].set_multiplayer_authority(multiplayer.get_unique_id()) + gauntlet_cards[slot].set_card(cards[slot]) + if slot == 0: + hud.place_icon.visible = false + else: + hud.swap_icon.visible = false + gauntlet_cards[slot].view_weapon() + gauntlet_cards[slot].visible = true + weapons[slot].set_hero(self) + weapons[slot].visible = false + right_hand.add_child(weapons[slot]) check_left_hand_valid() + if slot == 0: + weapons[slot].energy_spent.connect(hud.new_energy_bar.use_energy) + weapons[slot].energy_recharged.connect(hud.new_energy_bar.gain_energy) + hud.new_energy_bar.max_energy = weapons[slot].max_energy + if weapons[slot].stats.energy_type == Data.EnergyType.CONTINUOUS: + hud.new_energy_bar.enable_progress_bar() + if weapons[slot].stats.energy_type == Data.EnergyType.DISCRETE: + hud.new_energy_bar.create_discrete_icons(weapons[slot].max_energy) + else: + weapons[slot].energy_spent.connect(hud.new_energy_bar2.use_energy) + weapons[slot].energy_recharged.connect(hud.new_energy_bar2.gain_energy) + hud.new_energy_bar2.max_energy = weapons[slot].max_energy + if weapons[slot].stats.energy_type == Data.EnergyType.CONTINUOUS: + hud.new_energy_bar2.enable_progress_bar() + if weapons[slot].stats.energy_type == Data.EnergyType.DISCRETE: + hud.new_energy_bar2.create_discrete_icons(weapons[slot].max_energy) + + +func stow_weapon(slot: int = 0) -> void: + weapons[slot].release_trigger() + weapons[slot].release_second_trigger() + weapons[slot].visible = false + weapons[slot].energy_spent.disconnect(hud.new_energy_bar.use_energy) + weapons[slot].energy_recharged.disconnect(hud.new_energy_bar.gain_energy) + weapons[slot].energy_spent.connect(hud.new_energy_bar2.use_energy) + weapons[slot].energy_recharged.connect(hud.new_energy_bar2.gain_energy) + hud.set_offhand_energy(weapons[slot].current_energy) + hud.new_energy_bar2.max_energy = weapons[slot].max_energy + if weapons[slot].stats.energy_type == Data.EnergyType.CONTINUOUS: + hud.new_energy_bar2.enable_progress_bar() + if weapons[slot].stats.energy_type == Data.EnergyType.DISCRETE: + hud.new_energy_bar2.create_discrete_icons(weapons[slot].max_energy) + + +func show_weapon(slot: int = 0) -> void: + weapons[slot].release_trigger() + weapons[slot].release_second_trigger() + weapons[slot].energy_spent.disconnect(hud.new_energy_bar2.use_energy) + weapons[slot].energy_recharged.disconnect(hud.new_energy_bar2.gain_energy) + weapons[slot].energy_spent.connect(hud.new_energy_bar.use_energy) + weapons[slot].energy_recharged.connect(hud.new_energy_bar.gain_energy) + hud.set_weapon_energy(weapons[slot].current_energy, weapons[slot].stats.energy_type) + hud.new_energy_bar.max_energy = weapons[slot].max_energy + if weapons[slot].stats.energy_type == Data.EnergyType.CONTINUOUS: + hud.new_energy_bar.enable_progress_bar() + if weapons[slot].stats.energy_type == Data.EnergyType.DISCRETE: + hud.new_energy_bar.create_discrete_icons(weapons[slot].max_energy) func swap_weapons() -> void: - if !editing_mode: - weapons_active = false - if weapon or offhand_weapon: - if editing_mode: - swap_card_audio.play() - else: - swap_off_audio.play() + if !weapons[0] and !weapons[1]: + return + weapons_active = false + swap_off_audio.play() hud.audio_guard = true - var temp: Weapon = offhand_weapon - var temp_card: Card = offhand_card - if weapon: - offhand_weapon = weapon - offhand_card = equipped_card - offhand_weapon.set_visible(false) - offhand_weapon.energy_changed.disconnect(hud.set_weapon_energy) - offhand_weapon.energy_changed.connect(hud.set_offhand_energy) - offhand_weapon.energy_changed.emit(offhand_weapon.current_energy) - offhand_weapon.release_trigger() - offhand_weapon.release_second_trigger() - gauntlet_card_2.set_card(offhand_card) - gauntlet_card_2.view_weapon() - gauntlet_card_2.set_visible(true) - hud.swap_icon.set_visible(false) - else: - offhand_weapon = null - offhand_card = null - gauntlet_card_2.set_visible(false) - hud.swap_icon.set_visible(true) - if temp: - weapon = temp - equipped_card = temp_card - weapon.energy_changed.disconnect(hud.set_offhand_energy) - weapon.energy_changed.connect(hud.set_weapon_energy) - weapon.energy_changed.emit(weapon.current_energy) - weapon.release_trigger() - weapon.release_second_trigger() - gauntlet_card_1.set_card(equipped_card) - gauntlet_card_1.view_weapon() - gauntlet_card_1.set_visible(true) - hud.place_icon.set_visible(false) - else: - weapon = null - equipped_card = null - gauntlet_card_1.set_visible(false) - hud.place_icon.set_visible(true) - if !editing_mode: - weapon_swap_timer.start() + stow_weapon(equipped_weapon) + equipped_weapon = 0 if equipped_weapon == 1 else 1 + show_weapon(equipped_weapon) + weapon_swap_timer.start() func _on_timer_timeout() -> void: weapons_active = true - if weapon: + if weapons[equipped_weapon]: swap_on_audio.play() - weapon.set_visible(true) + weapons[equipped_weapon].visible = true -func unequip_weapon() -> void: - networked_unequip_weapon.rpc(0) - gauntlet_card_1.set_visible(false) - hud.place_icon.set_visible(true) +func unequip_weapon(slot: int = 0) -> void: + networked_unequip_weapon.rpc(slot) + gauntlet_cards[slot].visible = false + if slot == 0: + hud.place_icon.visible = true + hud.new_energy_bar.blank() + else: + hud.swap_icon.visible = true + hud.new_energy_bar2.blank() #gauntlet_sprite.set_visible(true) - weapon.queue_free() - weapon = null - inventory.add(equipped_card) - equipped_card = null + weapons[slot].queue_free() + weapons[slot] = null + inventory.add(cards[slot]) + cards[slot] = null place_card_audio.play() check_left_hand_valid() @@ -400,20 +440,7 @@ func networked_set_ready_state(state: bool) -> void: @rpc("reliable") func networked_swap_weapon() -> void: - var temp: Weapon = offhand_weapon - var temp_card: Card = offhand_card - if weapon: - offhand_weapon = weapon - offhand_card = equipped_card - else: - offhand_weapon = null - offhand_card = null - if temp: - weapon = temp - equipped_card = temp_card - else: - weapon = null - equipped_card = null + swap_weapons() @rpc("reliable") @@ -424,23 +451,12 @@ func networked_equip_weapon(card_index: int, slot: int, id: int) -> void: new_weapon.name = str(id) new_weapon.set_hero(self) right_hand.add_child(new_weapon) - match slot: - 0: - equipped_card = new_card - weapon = new_weapon - 1: - offhand_card = new_card - offhand_weapon = new_weapon + cards[slot] = new_card + weapons[slot] = new_weapon @rpc("reliable") func networked_unequip_weapon(slot: int) -> void: - match slot: - 0: - weapon.queue_free() - weapon = null - equipped_card = null - 1: - offhand_weapon.queue_free() - offhand_weapon = null - offhand_card = null + weapons[slot].queue_free() + weapons[slot] = null + cards[slot] = null diff --git a/PCs/hero.gd.uid b/PCs/hero.gd.uid new file mode 100644 index 0000000..3cddeab --- /dev/null +++ b/PCs/hero.gd.uid @@ -0,0 +1 @@ +uid://1fqpoegbdm6n diff --git a/PCs/hero.tscn b/PCs/hero.tscn index 92b81b9..3b502a6 100644 --- a/PCs/hero.tscn +++ b/PCs/hero.tscn @@ -1,33 +1,35 @@ -[gd_scene load_steps=62 format=3 uid="uid://dxgxbtf68lcv5"] +[gd_scene load_steps=64 format=3 uid="uid://dxgxbtf68lcv5"] -[ext_resource type="Script" path="res://PCs/hero.gd" id="1_pihpe"] -[ext_resource type="Resource" uid="uid://b5pc3frhx467q" path="res://PCs/Mechanic/red.tres" id="2_dbyo0"] +[ext_resource type="Script" uid="uid://1fqpoegbdm6n" path="res://PCs/hero.gd" id="1_pihpe"] +[ext_resource type="Resource" uid="uid://b5pc3frhx467q" path="res://Classes/Engineer/class.tres" id="2_dbyo0"] [ext_resource type="PackedScene" uid="uid://ri8r03wqy80t" path="res://Scenes/8_direction_sprite.tscn" id="2_ib0t5"] [ext_resource type="Texture2D" uid="uid://dkbkam81k355s" path="res://Assets/TextureAtlases/gauntlet.tres" id="3_5myy0"] [ext_resource type="PackedScene" uid="uid://buvgdem68wtev" path="res://Scenes/Menus/PauseMenu/pause_menu.tscn" id="3_avnsx"] -[ext_resource type="Script" path="res://PCs/view_movement.gd" id="4_mhexa"] +[ext_resource type="Script" uid="uid://cij76at0nbs1v" path="res://PCs/view_movement.gd" id="4_mhexa"] [ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://Scenes/UI/card_hand.tscn" id="4_mwtvp"] [ext_resource type="PackedScene" uid="uid://dqt1ggtkpkuhs" path="res://Scenes/gauntlet.tscn" id="5_jlxb3"] -[ext_resource type="Script" path="res://Scripts/inventory.gd" id="6_cf5ap"] -[ext_resource type="Texture2D" uid="uid://cjqxkraykhxxk" path="res://PCs/Mechanic/red.png" id="6_yyp8i"] -[ext_resource type="Script" path="res://Scripts/hud.gd" id="8_yl6ka"] -[ext_resource type="Texture2D" uid="uid://ctkixdue3o7ec" path="res://PCs/Mechanic/red_hand.png" id="9_gxh2h"] -[ext_resource type="Script" path="res://Scripts/on_top_camera.gd" id="11_4sdwe"] -[ext_resource type="Script" path="res://Scripts/minimap_cam.gd" id="12_3hpi3"] +[ext_resource type="Script" uid="uid://do24iuot0j7d7" path="res://Scripts/inventory.gd" id="6_cf5ap"] +[ext_resource type="Texture2D" uid="uid://cjqxkraykhxxk" path="res://Classes/Engineer/red.png" id="6_yyp8i"] +[ext_resource type="Script" uid="uid://b6kjrl7ae1mi0" path="res://PCs/hud.gd" id="8_yl6ka"] +[ext_resource type="Texture2D" uid="uid://ctkixdue3o7ec" path="res://Classes/Engineer/red_hand.png" id="9_gxh2h"] +[ext_resource type="Script" uid="uid://hy51bq7x0fy8" path="res://Scripts/on_top_camera.gd" id="11_4sdwe"] +[ext_resource type="Script" uid="uid://ckkioruqgbs8p" path="res://Scripts/minimap_cam.gd" id="12_3hpi3"] [ext_resource type="Texture2D" uid="uid://b6iego7256jf2" path="res://Assets/Textures/wavecounter.png" id="14_l34nu"] [ext_resource type="PackedScene" uid="uid://24x18qxqhy0i" path="res://Scenes/UI/lives_bar.tscn" id="15_cqpib"] [ext_resource type="Texture2D" uid="uid://c60fh34ttgcvh" path="res://Assets/Textures/minimap_player.png" id="15_nhlam"] [ext_resource type="Texture2D" uid="uid://chhmkmlfrobhu" path="res://Assets/Textures/bubble.png" id="15_q3yot"] [ext_resource type="Texture2D" uid="uid://cqnapc8cscl7i" path="res://Assets/Textures/border.png" id="16_x1xjr"] [ext_resource type="PackedScene" uid="uid://chnj376d3lcjd" path="res://Scenes/UI/pickup_notification.tscn" id="17_oyeww"] +[ext_resource type="PackedScene" uid="uid://d17c77pqsi8oy" path="res://enemy_card_ui.tscn" id="18_dfkac"] [ext_resource type="Texture2D" uid="uid://cvjcu3hofahr6" path="res://Assets/Textures/place_slot.png" id="18_okmpi"] -[ext_resource type="Script" path="res://PCs/player_movement.gd" id="20_cfhw8"] -[ext_resource type="Shader" path="res://crosshair.gdshader" id="20_gxpgc"] +[ext_resource type="Script" uid="uid://b5wle8f6rv3e7" path="res://PCs/player_movement.gd" id="20_cfhw8"] +[ext_resource type="Shader" uid="uid://dhtylicctk3g4" path="res://UI/crosshair.gdshader" id="20_gxpgc"] [ext_resource type="Texture2D" uid="uid://r202vo47jw1q" path="res://Assets/Textures/enemyhealth.png" id="21_apps2"] [ext_resource type="AudioStream" uid="uid://csu2hce4bfoki" path="res://Audio/cardPlace1.ogg" id="24_8ch4w"] [ext_resource type="Texture2D" uid="uid://b8woqvpwq3tsq" path="res://Assets/Textures/swap_slot.png" id="24_gr6xt"] [ext_resource type="AudioStream" uid="uid://dxq8b77wa41os" path="res://Audio/cardPlace2.ogg" id="25_awl6m"] [ext_resource type="AudioStream" uid="uid://bxripx3suub1v" path="res://Audio/cardPlace3.ogg" id="26_7tm07"] +[ext_resource type="PackedScene" uid="uid://c2id8hjico4w8" path="res://energy_bar.tscn" id="27_14ugt"] [ext_resource type="AudioStream" uid="uid://k1lsqkvohjpa" path="res://Audio/cardPlace4.ogg" id="27_xvxs8"] [ext_resource type="AudioStream" uid="uid://bn8lkvy5wibvo" path="res://Audio/cardSlide1.ogg" id="28_1thk8"] [ext_resource type="AudioStream" uid="uid://d32gpcu8w1yvn" path="res://Audio/cardSlide2.ogg" id="29_s0a0l"] @@ -64,7 +66,7 @@ tracks/0/keys = PackedFloat32Array(0, 1, 0.615, -0.275, -1, 0.2, 1, 0.59, -0.255 [sub_resource type="AnimationLibrary" id="AnimationLibrary_2wknc"] _data = { -"weapon_sway": SubResource("Animation_2q50p") +&"weapon_sway": SubResource("Animation_2q50p") } [sub_resource type="ViewportTexture" id="ViewportTexture_8f12g"] @@ -120,44 +122,30 @@ properties/1/replication_mode = 2 [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_wyb7c"] streams_count = 4 stream_0/stream = ExtResource("24_8ch4w") -stream_0/weight = 1.0 stream_1/stream = ExtResource("25_awl6m") -stream_1/weight = 1.0 stream_2/stream = ExtResource("26_7tm07") -stream_2/weight = 1.0 stream_3/stream = ExtResource("27_xvxs8") -stream_3/weight = 1.0 [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_0lyoo"] streams_count = 8 stream_0/stream = ExtResource("28_1thk8") -stream_0/weight = 1.0 stream_1/stream = ExtResource("29_s0a0l") -stream_1/weight = 1.0 stream_2/stream = ExtResource("30_djhlg") -stream_2/weight = 1.0 stream_3/stream = ExtResource("31_546e6") -stream_3/weight = 1.0 stream_4/stream = ExtResource("32_tg7y0") -stream_4/weight = 1.0 stream_5/stream = ExtResource("33_2v5co") -stream_5/weight = 1.0 stream_6/stream = ExtResource("34_6acmc") -stream_6/weight = 1.0 stream_7/stream = ExtResource("35_i0lwe") -stream_7/weight = 1.0 [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_evsqr"] streams_count = 1 stream_0/stream = ExtResource("36_lsvj8") -stream_0/weight = 1.0 [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_pc8yw"] streams_count = 1 stream_0/stream = ExtResource("37_kv1mg") -stream_0/weight = 1.0 -[node name="Hero" type="CharacterBody3D" node_paths=PackedStringArray("camera", "gun_camera", "left_hand_sprite", "card_sprites", "left_hand", "right_hand", "right_hand_animator", "edit_tool", "gauntlet_sprite", "sprite", "hand_sprite", "interaction_raycast", "inventory", "gauntlet_card_1", "gauntlet_card_2", "hud", "movement", "player_name_tag", "weapon_swap_timer", "ears", "place_card_audio", "swap_card_audio", "ready_audio", "unready_audio", "fullpower_audio", "zeropower_audio", "swap_off_audio", "swap_on_audio")] +[node name="Hero" type="CharacterBody3D" node_paths=PackedStringArray("camera", "gun_camera", "left_hand_sprite", "card_sprites", "left_hand", "right_hand", "right_hand_animator", "edit_tool", "gauntlet_sprite", "sprite", "hand_sprite", "interaction_raycast", "inventory", "gauntlet_cards", "hud", "movement", "player_name_tag", "weapon_swap_timer", "ears", "place_card_audio", "swap_card_audio", "ready_audio", "unready_audio", "fullpower_audio", "zeropower_audio", "swap_off_audio", "swap_on_audio")] collision_layer = 2 collision_mask = 37 script = ExtResource("1_pihpe") @@ -175,8 +163,7 @@ sprite = NodePath("EightDirectionSprite") hand_sprite = NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport/Sprite2D") interaction_raycast = NodePath("ViewMovement/Head/RayCast3D") inventory = NodePath("Inventory") -gauntlet_card_1 = NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport2/Node2D") -gauntlet_card_2 = NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport3/Node2D") +gauntlet_cards = [NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport2/Node2D"), NodePath("FirstPersonViewport/Head2/LeftHand/SubViewport3/Node2D")] pause_menu_scene = ExtResource("3_avnsx") hud = NodePath("HUD") movement = NodePath("PlayerMovement") @@ -241,7 +228,7 @@ transform = Transform3D(0.7, 0, 0, 0, 0.7, 0, 0, 0, 0.7, 0.66, -0.255, -0.221557 [node name="AnimationPlayer" type="AnimationPlayer" parent="FirstPersonViewport/Head2/RightHand"] libraries = { -"": SubResource("AnimationLibrary_2wknc") +&"": SubResource("AnimationLibrary_2wknc") } [node name="Gauntlet" type="Sprite3D" parent="FirstPersonViewport/Head2/RightHand"] @@ -392,10 +379,12 @@ script = ExtResource("6_cf5ap") script = ExtResource("20_cfhw8") player = NodePath("..") head = NodePath("../ViewMovement") +toggle_sprint = true max_look_down_angle = 80.0 max_look_up_angle = 80.0 +enable_jumping = true -[node name="HUD" type="CanvasLayer" parent="." node_paths=PackedStringArray("player", "wave_count", "lives_count", "currency_count", "minimap_outline", "crosshair", "minimap", "minimap_cam", "minimap_viewport", "fps_label", "hover_text", "enemy_sprites", "enemy_counts", "weapon_energy_bar", "offhand_energy_bar", "wave_start_label", "place_icon", "swap_icon", "place_text", "swap_text")] +[node name="HUD" type="CanvasLayer" parent="." node_paths=PackedStringArray("player", "wave_count", "lives_count", "currency_count", "minimap_outline", "crosshair", "minimap", "minimap_cam", "minimap_viewport", "fps_label", "hover_text", "enemy_sprites", "enemy_counts", "weapon_energy_bar", "offhand_energy_bar", "wave_start_label", "place_icon", "swap_icon", "place_text", "swap_text", "new_energy_bar", "new_energy_bar2")] script = ExtResource("8_yl6ka") player = NodePath("..") wave_count = NodePath("WaveCount") @@ -418,6 +407,9 @@ place_icon = NodePath("PlaceIcon") swap_icon = NodePath("SwapIcon") place_text = NodePath("PlaceIcon/RichTextLabel") swap_text = NodePath("SwapIcon/RichTextLabel") +enemy_card_scene = ExtResource("18_dfkac") +new_energy_bar = NodePath("EnergyBar") +new_energy_bar2 = NodePath("EnergyBar2") [node name="FirstPersonCam" type="TextureRect" parent="HUD"] anchors_preset = 15 @@ -798,8 +790,36 @@ bbcode_enabled = true text = "[center]Press #Ready# to start wave[/center]" scroll_active = false +[node name="Control2" type="Control" parent="HUD"] +layout_mode = 3 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 0 +grow_vertical = 0 + +[node name="Control3" type="Control" parent="HUD"] +layout_mode = 3 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="EnergyBar" parent="HUD" instance=ExtResource("27_14ugt")] +mouse_filter = 2 + +[node name="EnergyBar2" parent="HUD" instance=ExtResource("27_14ugt")] +offset_left = -72.0 +offset_right = -72.0 +mouse_filter = 2 + [node name="WeaponSwapTimer" type="Timer" parent="."] -wait_time = 0.9 +wait_time = 0.4 one_shot = true [node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."] diff --git a/Scripts/hud.gd b/PCs/hud.gd similarity index 78% rename from Scripts/hud.gd rename to PCs/hud.gd index a7ec4fc..5424449 100644 --- a/Scripts/hud.gd +++ b/PCs/hud.gd @@ -24,16 +24,54 @@ var enemy_names: Array[String] @export var swap_icon: TextureRect @export var place_text: RichTextLabel @export var swap_text: RichTextLabel +@export var enemy_card_scene: PackedScene +@export var new_energy_bar: EnergyBar +@export var new_energy_bar2: EnergyBar var audio_guard: bool = false +var cards: Array[EnemyCardUI] = [] + + +func show_wave_generation_anim(wave: Wave) -> void: + for card: EnemyCardUI in cards: + card.queue_free() + cards = [] + var x: int = 0 + var final_x_coords: Array[int] = [-550, -275, 0, 275, 550] + for card: EnemyCard in wave.enemy_groups: + var card_ui: EnemyCardUI = enemy_card_scene.instantiate() + card_ui.set_enemy(card) + add_child(card_ui) + cards.append(card_ui) + #$Control.add_child(card_ui) + card_ui.position = $Control2.position + var i: int = 0 + var j: int = 0 + for card: EnemyCardUI in cards: + var anchor: Vector2 = $Control3.position + anchor -= Vector2(int(card.get_child(0).size.x / 2.0), int(card.get_child(0).size.y / 2.0)) + anchor.x += final_x_coords[i] + var tween: Tween = create_tween() + tween.tween_interval((0.3 * j) + (1.4 * int(j / 5.0))) + tween.tween_property(card, "position", anchor, 0.3) + tween.tween_interval(3.0) + tween.tween_property(card, "position", anchor + Vector2.UP * 700, 0.5) + tween.set_ease(Tween.EASE_OUT) + tween.set_trans(Tween.TRANS_QUINT) + i += 1 + if i >= final_x_coords.size(): + i = 0 + j += 1 func set_energy_visible(value: bool) -> void: - weapon_energy_bar.set_visible(value) + pass + #weapon_energy_bar.set_visible(value) func set_offhand_energy_visible(value: bool) -> void: - offhand_energy_bar.set_visible(value) + pass + #offhand_energy_bar.set_visible(value) func _process(_delta: float) -> void: @@ -117,8 +155,8 @@ func set_currency_count(value: int) -> void: func set_crosshair_visible(value: bool) -> void: crosshair.set_visible(value) - -func set_weapon_energy(value: int) -> void: +#TODO: the fuck is audio_guard for? +func set_weapon_energy(value: int, energy_type: Data.EnergyType) -> void: weapon_energy_bar.value = value if player.editing_mode: audio_guard = true diff --git a/PCs/hud.gd.uid b/PCs/hud.gd.uid new file mode 100644 index 0000000..ea0db80 --- /dev/null +++ b/PCs/hud.gd.uid @@ -0,0 +1 @@ +uid://b6kjrl7ae1mi0 diff --git a/PCs/player_movement.gd b/PCs/player_movement.gd index aa796f0..f4bc70e 100644 --- a/PCs/player_movement.gd +++ b/PCs/player_movement.gd @@ -7,21 +7,32 @@ class_name PlayerMovement extends Node #movement code does not replicate how movement in minecraft works @export_category("Movement") -@export var movement_speed: float = 4.317 -@export var toggle_sprint: bool = true +@export_subgroup("Basic") +@export var hard_speed_limit: float = 4.317 +@export var toggle_sprint: bool = false +@export var limit_sprint_to_forward: bool = true @export var sprint_boost: float = 1.3 @export var acceleration: float = 0.9 -@export var friction_percentage: float = 0.1 +@export var friction_percentage: float = 0.15 +@export var air_drag: float = 0.03 @export_range(0.0, 90.0) var max_look_down_angle: float = 90.0 @export_range(0.0, 90.0) var max_look_up_angle: float = 90.0 -@export var air_control: bool = true +@export_range(0.0, 1.0) var air_control: float = 0.2 +@export var climb_speed: float = 3.0 -@export_category("Jump") +@export_subgroup("Jump") +@export var enable_jumping: bool = false @export var min_height: float = 1.25 @export var max_height: float = 1.25 @export var time_to_peak: float = 0.3 @export var time_to_floor: float = 0.3 +@export_subgroup("Crouch") +@export var enable_crouching: bool = false +@export var standing_collider: CollisionShape3D +@export var crouching_collider: CollisionShape3D +@export var crouch_shapecast: ShapeCast3D + @export_category("Look") @export_range(1.0, 100.0) var sensitivity: float = 28.0 @export var invert_y: bool = false @@ -33,6 +44,7 @@ class_name PlayerMovement extends Node @onready var time_to_min_peak: float = (clampf(min_height, 0.0, max_height) / max_height) * time_to_peak @onready var min_jump_gravity: float = (-2 * clampf(min_height, 0.0, max_height)) / pow(time_to_min_peak, 2) +var ragdoll: bool = false var paused: bool = false var zoom_factor: float = 1.0 var input_vector: Vector2 = Vector2.ZERO @@ -42,6 +54,17 @@ var can_sprint: bool = true var sprint_zoom_factor: float = 0.08 var sprinting: bool = false var jump_held: bool = false +var is_in_climb_zone: bool = false +var hold_climb: bool = false +var ragdoll_grace_period_length: float = 0.5 +var ragdoll_grace_period_elapsed: float = 0.0 + +var crouching: bool = false +var prev_crouch_height: float = 0.0 +var new_crouch_height: float = 0.0 +var default_camera_height: float = 0.0 +var change_crouch: bool = false + var head_angle: float = 0.0 var look_sens: float : set(_value): @@ -50,26 +73,66 @@ var look_sens: float : return sensitivity / 40000.0 +func _ready() -> void: + default_camera_height = head.position.y + + func get_gravity() -> float: if jump_held: return jump_gravity if player.velocity.y > 0.0 else fall_gravity return min_jump_gravity if player.velocity.y > 0.0 else fall_gravity +func apply_ragdoll(vector: Vector3) -> void: + ragdoll = true + player.velocity = vector + print(vector) + + func _physics_process(delta: float) -> void: if !is_multiplayer_authority(): return + if ragdoll: + player.velocity += Vector3.DOWN * 9.81 * delta + ragdoll_grace_period_elapsed += delta + if player.is_on_floor() and ragdoll_grace_period_elapsed >= ragdoll_grace_period_length: + ragdoll_grace_period_elapsed = 0.0 + ragdoll = false + player.move_and_slide() + return var result_vector: Vector2 = input_vector * acceleration + if !player.is_on_floor(): + result_vector *= air_control var velocity: Vector2 = Vector2(player.velocity.x, player.velocity.z) var down_velocity: float = player.velocity.y var movement: Vector3 = ((player.transform.basis.z * result_vector.y) + (player.transform.basis.x * result_vector.x)) - velocity = velocity.limit_length(velocity.length() * (1.0 - friction_percentage)) + if player.is_on_floor(): + velocity = velocity.limit_length(velocity.length() * (1.0 - friction_percentage)) + velocity = velocity.limit_length(velocity.length() * (1.0 - air_drag)) velocity += Vector2(movement.x, movement.z) - velocity = velocity.limit_length(movement_speed * sprint_boost if sprinting else movement_speed) - if air_control or player.is_on_floor(): - player.velocity = Vector3(velocity.x, down_velocity + (get_gravity() * delta), velocity.y) + velocity = velocity.limit_length(hard_speed_limit * sprint_boost if sprinting else hard_speed_limit) + if !is_in_climb_zone: + if !player.is_on_floor(): + player.velocity = Vector3(velocity.x, down_velocity + (get_gravity() * delta), velocity.y) + else: + player.velocity = Vector3(velocity.x, down_velocity, velocity.y) else: - player.velocity = Vector3(player.velocity.x, down_velocity + (get_gravity() * delta), player.velocity.z) + if jump_held: + player.velocity = Vector3(velocity.x, climb_speed, velocity.y) + elif hold_climb: + player.velocity = Vector3(velocity.x, 0.0, velocity.y) + else: + player.velocity = Vector3(velocity.x, -climb_speed, velocity.y) + if change_crouch: + if !crouching: + standing_collider.disabled = true + crouching_collider.disabled = false + crouching = true + else: + standing_collider.disabled = false + crouching_collider.disabled = true + crouching = false + change_crouch = false player.move_and_slide() @@ -81,7 +144,7 @@ func _process(_delta: float) -> void: return can_sprint = true input_vector = Input.get_vector("Move Left", "Move Right", "Move Forward", "Move Backward") - if input_vector.y >= 0: + if limit_sprint_to_forward and input_vector.y >= 0: can_sprint = false if toggle_sprint: if Input.is_action_just_pressed("Sprint"): @@ -90,11 +153,29 @@ func _process(_delta: float) -> void: sprinting = Input.is_action_pressed("Sprint") if !can_sprint: sprinting = false - if Input.is_action_just_pressed("Jump") and player.is_on_floor(): - player.velocity.y = jump_velocity + if enable_jumping: + if Input.is_action_just_pressed("Jump") and player.is_on_floor() and !is_in_climb_zone: + player.velocity.y = jump_velocity + jump_held = true + if Input.is_action_just_pressed("Jump") and is_in_climb_zone: jump_held = true if Input.is_action_just_released("Jump"): jump_held = false + if enable_crouching: + if Input.is_action_just_pressed("Crouch"): + if !crouching: + prev_crouch_height = 0.0 + new_crouch_height = default_camera_height + change_crouch = true + elif !crouch_shapecast.is_colliding(): + tween_head_height(default_camera_height + 0.2) + change_crouch = true + if crouching: + crouch() + if Input.is_action_just_pressed("Crouch") and is_in_climb_zone: + hold_climb = true + if Input.is_action_just_released("Crouch") and is_in_climb_zone: + hold_climb = false look_vector.x = Input.get_joy_axis(0, JOY_AXIS_RIGHT_X) look_vector.y = Input.get_joy_axis(0, JOY_AXIS_RIGHT_Y) if look_vector.length_squared() <= joystick_deadzone: @@ -105,6 +186,37 @@ func _process(_delta: float) -> void: head.rotation.x = head_angle +func enable_climbing() -> void: + is_in_climb_zone = true + + +func disable_climbing() -> void: + is_in_climb_zone = false + hold_climb = false + + +func crouch() -> void: + var lowest_crouch_point: float = default_camera_height + for collider: Dictionary in crouch_shapecast.collision_result: + var point: Vector3 = collider["point"] + if crouch_shapecast.global_position.distance_to(point) + 0.6 < lowest_crouch_point: + lowest_crouch_point = crouch_shapecast.global_position.distance_to(point) + 0.6 + if !crouch_shapecast.is_colliding(): + lowest_crouch_point = default_camera_height + if abs(lowest_crouch_point - new_crouch_height) > 0.05: + new_crouch_height = lowest_crouch_point + if abs(new_crouch_height - prev_crouch_height) > 0.05: + tween_head_height(new_crouch_height) + prev_crouch_height = new_crouch_height + + +func tween_head_height(height: float) -> void: + var tween: Tween = create_tween() + tween.set_ease(Tween.EASE_IN) + tween.set_trans(Tween.TRANS_QUAD) + tween.tween_property(head, "position", Vector3(0.0, height - 0.2, 0.0), 0.1) + + func _unhandled_input(event: InputEvent) -> void: if !is_multiplayer_authority(): return diff --git a/PCs/player_movement.gd.uid b/PCs/player_movement.gd.uid new file mode 100644 index 0000000..2b62bb1 --- /dev/null +++ b/PCs/player_movement.gd.uid @@ -0,0 +1 @@ +uid://b5wle8f6rv3e7 diff --git a/PCs/view_movement.gd b/PCs/view_movement.gd index 45bf9f4..3dfd53f 100644 --- a/PCs/view_movement.gd +++ b/PCs/view_movement.gd @@ -1,6 +1,6 @@ class_name ViewMovement extends Node3D -@export var player: Hero +@export var player: CharacterBody3D @export_category("Bobbing") @export var camera: Camera3D @@ -30,6 +30,7 @@ var pitch_noise: FastNoiseLite = FastNoiseLite.new() var yaw_noise: FastNoiseLite = FastNoiseLite.new() var roll_noise: FastNoiseLite = FastNoiseLite.new() var constant_trauma: float = 0.0 +var paused: bool = false func _ready() -> void: @@ -47,14 +48,15 @@ func _ready() -> void: func _physics_process(delta: float) -> void: if enable_head_bob and player.is_on_floor(): - #TODO: maybe make the speed slower/faster on slopes? var player_speed: float = Vector2(player.velocity.x, player.velocity.z).length() - speed_factor = lerp(speed_factor, player_speed / head_bob_max_effect_speed, 20.0 * delta) + speed_factor = move_toward(speed_factor, player_speed / head_bob_max_effect_speed, 3.0 * delta) else: - speed_factor = lerp(speed_factor, 0.0, 20.0 * delta) + speed_factor = move_toward(speed_factor, 0.0, 5.0 * delta) func _process(delta: float) -> void: + if paused: + return #trauma = max(0.0, trauma - ((1.0 / trauma_recovery_speed) * delta)) #camera_shake = pow(max(trauma, constant_trauma), 2.0) #noise_sample += shake_speed * delta diff --git a/PCs/view_movement.gd.uid b/PCs/view_movement.gd.uid new file mode 100644 index 0000000..56819c6 --- /dev/null +++ b/PCs/view_movement.gd.uid @@ -0,0 +1 @@ +uid://cij76at0nbs1v diff --git a/PCs/Mechanic/ClassCards/BombLauncher/bomb.png b/Projectiles/Bomb/bomb.png similarity index 100% rename from PCs/Mechanic/ClassCards/BombLauncher/bomb.png rename to Projectiles/Bomb/bomb.png diff --git a/PCs/Mechanic/ClassCards/BombLauncher/bomb.png.import b/Projectiles/Bomb/bomb.png.import similarity index 71% rename from PCs/Mechanic/ClassCards/BombLauncher/bomb.png.import rename to Projectiles/Bomb/bomb.png.import index e416396..f2338f4 100644 --- a/PCs/Mechanic/ClassCards/BombLauncher/bomb.png.import +++ b/Projectiles/Bomb/bomb.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://b54d5dc4jmlau" -path="res://.godot/imported/bomb.png-2ced482db6410a133061cb96ae312d66.ctex" +path="res://.godot/imported/bomb.png-d9cfc866620347d46b9fe4fdccd92ded.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/BombLauncher/bomb.png" -dest_files=["res://.godot/imported/bomb.png-2ced482db6410a133061cb96ae312d66.ctex"] +source_file="res://Projectiles/Bomb/bomb.png" +dest_files=["res://.godot/imported/bomb.png-d9cfc866620347d46b9fe4fdccd92ded.ctex"] [params] diff --git a/PCs/Mechanic/ClassCards/BombLauncher/bomb_projectile.gd b/Projectiles/Bomb/bomb_projectile.gd similarity index 100% rename from PCs/Mechanic/ClassCards/BombLauncher/bomb_projectile.gd rename to Projectiles/Bomb/bomb_projectile.gd diff --git a/Projectiles/Bomb/bomb_projectile.gd.uid b/Projectiles/Bomb/bomb_projectile.gd.uid new file mode 100644 index 0000000..47c1d9d --- /dev/null +++ b/Projectiles/Bomb/bomb_projectile.gd.uid @@ -0,0 +1 @@ +uid://cue37hfrlm61m diff --git a/PCs/Mechanic/ClassCards/BombLauncher/bomb_projectile.tscn b/Projectiles/Bomb/bomb_projectile.tscn similarity index 72% rename from PCs/Mechanic/ClassCards/BombLauncher/bomb_projectile.tscn rename to Projectiles/Bomb/bomb_projectile.tscn index 994cd0f..ea15796 100644 --- a/PCs/Mechanic/ClassCards/BombLauncher/bomb_projectile.tscn +++ b/Projectiles/Bomb/bomb_projectile.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=7 format=3 uid="uid://c8oq5unisjqne"] [ext_resource type="PackedScene" uid="uid://7f4dfphgiswr" path="res://Scenes/Projectiles/explosive_projectile.tscn" id="1_kf2wi"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/BombLauncher/bomb_projectile.gd" id="2_qvo4u"] -[ext_resource type="Texture2D" uid="uid://b54d5dc4jmlau" path="res://PCs/Mechanic/ClassCards/BombLauncher/bomb.png" id="3_ilhep"] -[ext_resource type="AudioStream" uid="uid://qeav4v23p0dd" path="res://PCs/Mechanic/ClassCards/BombLauncher/shot1.wav" id="4_uh8y6"] +[ext_resource type="Script" uid="uid://cue37hfrlm61m" path="res://Projectiles/Bomb/bomb_projectile.gd" id="2_qvo4u"] +[ext_resource type="Texture2D" uid="uid://b54d5dc4jmlau" path="res://Projectiles/Bomb/bomb.png" id="3_ilhep"] +[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="4_uh8y6"] [sub_resource type="PhysicsMaterial" id="PhysicsMaterial_bbpul"] bounce = 0.6 @@ -12,7 +12,6 @@ bounce = 0.6 random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("4_uh8y6") -stream_0/weight = 1.0 [node name="Bomb" instance=ExtResource("1_kf2wi")] physics_material_override = SubResource("PhysicsMaterial_bbpul") diff --git a/PCs/Mage/ClassCards/Fireball/fireball_projectile.gd b/Projectiles/Fireball/fireball_projectile.gd similarity index 100% rename from PCs/Mage/ClassCards/Fireball/fireball_projectile.gd rename to Projectiles/Fireball/fireball_projectile.gd diff --git a/Projectiles/Fireball/fireball_projectile.gd.uid b/Projectiles/Fireball/fireball_projectile.gd.uid new file mode 100644 index 0000000..8856ace --- /dev/null +++ b/Projectiles/Fireball/fireball_projectile.gd.uid @@ -0,0 +1 @@ +uid://bl5um0g8hhtjw diff --git a/PCs/Mage/ClassCards/Fireball/fireball_projectile.png b/Projectiles/Fireball/fireball_projectile.png similarity index 100% rename from PCs/Mage/ClassCards/Fireball/fireball_projectile.png rename to Projectiles/Fireball/fireball_projectile.png diff --git a/PCs/Mage/ClassCards/Fireball/fireball_projectile.png.import b/Projectiles/Fireball/fireball_projectile.png.import similarity index 67% rename from PCs/Mage/ClassCards/Fireball/fireball_projectile.png.import rename to Projectiles/Fireball/fireball_projectile.png.import index b12c12e..fe1fa1b 100644 --- a/PCs/Mage/ClassCards/Fireball/fireball_projectile.png.import +++ b/Projectiles/Fireball/fireball_projectile.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://baarbcx0nxi7w" -path="res://.godot/imported/fireball_projectile.png-4a9bc2fd83ce36ea3a70a21a648737cc.ctex" +path="res://.godot/imported/fireball_projectile.png-90d248f102524998e0c8b25c8dff96fc.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mage/ClassCards/Fireball/fireball_projectile.png" -dest_files=["res://.godot/imported/fireball_projectile.png-4a9bc2fd83ce36ea3a70a21a648737cc.ctex"] +source_file="res://Projectiles/Fireball/fireball_projectile.png" +dest_files=["res://.godot/imported/fireball_projectile.png-90d248f102524998e0c8b25c8dff96fc.ctex"] [params] diff --git a/PCs/Mage/ClassCards/Fireball/fireball_projectile.tscn b/Projectiles/Fireball/fireball_projectile.tscn similarity index 71% rename from PCs/Mage/ClassCards/Fireball/fireball_projectile.tscn rename to Projectiles/Fireball/fireball_projectile.tscn index cd43a30..01eac8c 100644 --- a/PCs/Mage/ClassCards/Fireball/fireball_projectile.tscn +++ b/Projectiles/Fireball/fireball_projectile.tscn @@ -1,15 +1,14 @@ [gd_scene load_steps=7 format=3 uid="uid://ddpixntjsbpqp"] [ext_resource type="PackedScene" uid="uid://beq6rn0babncg" path="res://Scenes/Projectiles/status_applying_projectile.tscn" id="1_a8cjq"] -[ext_resource type="Script" path="res://PCs/Mage/ClassCards/Fireball/fireball_projectile.gd" id="2_rin44"] +[ext_resource type="Script" uid="uid://bl5um0g8hhtjw" path="res://Projectiles/Fireball/fireball_projectile.gd" id="2_rin44"] [ext_resource type="Resource" uid="uid://dbanx8taicddm" path="res://Resources/StatusEffects/on_fire.tres" id="3_vb4ff"] -[ext_resource type="Texture2D" uid="uid://baarbcx0nxi7w" path="res://PCs/Mage/ClassCards/Fireball/fireball_projectile.png" id="4_uua74"] -[ext_resource type="AudioStream" uid="uid://cxiluyamsxson" path="res://PCs/Mage/ClassCards/Fireball/shot1.wav" id="5_k3tme"] +[ext_resource type="Texture2D" uid="uid://baarbcx0nxi7w" path="res://Projectiles/Fireball/fireball_projectile.png" id="4_uua74"] +[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="5_k3tme"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_bxaub"] streams_count = 1 stream_0/stream = ExtResource("5_k3tme") -stream_0/weight = 1.0 [node name="Fireball" instance=ExtResource("1_a8cjq")] script = ExtResource("2_rin44") diff --git a/PCs/Mage/ClassCards/Icicle/icicle_projectile.gd b/Projectiles/Icicle/icicle_projectile.gd similarity index 100% rename from PCs/Mage/ClassCards/Icicle/icicle_projectile.gd rename to Projectiles/Icicle/icicle_projectile.gd diff --git a/Projectiles/Icicle/icicle_projectile.gd.uid b/Projectiles/Icicle/icicle_projectile.gd.uid new file mode 100644 index 0000000..e4b85cc --- /dev/null +++ b/Projectiles/Icicle/icicle_projectile.gd.uid @@ -0,0 +1 @@ +uid://bnddiewx0br8 diff --git a/PCs/Mage/ClassCards/Icicle/icicle_projectile.png b/Projectiles/Icicle/icicle_projectile.png similarity index 100% rename from PCs/Mage/ClassCards/Icicle/icicle_projectile.png rename to Projectiles/Icicle/icicle_projectile.png diff --git a/PCs/Mage/ClassCards/Icicle/icicle_projectile.png.import b/Projectiles/Icicle/icicle_projectile.png.import similarity index 68% rename from PCs/Mage/ClassCards/Icicle/icicle_projectile.png.import rename to Projectiles/Icicle/icicle_projectile.png.import index c2df5a4..94e7058 100644 --- a/PCs/Mage/ClassCards/Icicle/icicle_projectile.png.import +++ b/Projectiles/Icicle/icicle_projectile.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cqmt5m0grnppx" -path="res://.godot/imported/icicle_projectile.png-a1c89c45c38a5c573a76ac315bd32619.ctex" +path="res://.godot/imported/icicle_projectile.png-ec7a72c499d062e77d2576290fd26a56.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mage/ClassCards/Icicle/icicle_projectile.png" -dest_files=["res://.godot/imported/icicle_projectile.png-a1c89c45c38a5c573a76ac315bd32619.ctex"] +source_file="res://Projectiles/Icicle/icicle_projectile.png" +dest_files=["res://.godot/imported/icicle_projectile.png-ec7a72c499d062e77d2576290fd26a56.ctex"] [params] diff --git a/PCs/Mage/ClassCards/Icicle/icicle_projectile.tscn b/Projectiles/Icicle/icicle_projectile.tscn similarity index 76% rename from PCs/Mage/ClassCards/Icicle/icicle_projectile.tscn rename to Projectiles/Icicle/icicle_projectile.tscn index 38cd927..a063c63 100644 --- a/PCs/Mage/ClassCards/Icicle/icicle_projectile.tscn +++ b/Projectiles/Icicle/icicle_projectile.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=5 format=3 uid="uid://dyurjxotdkf1u"] [ext_resource type="PackedScene" uid="uid://beq6rn0babncg" path="res://Scenes/Projectiles/status_applying_projectile.tscn" id="1_mmk8p"] -[ext_resource type="Script" path="res://PCs/Mage/ClassCards/Icicle/icicle_projectile.gd" id="2_nukn5"] +[ext_resource type="Script" uid="uid://bnddiewx0br8" path="res://Projectiles/Icicle/icicle_projectile.gd" id="2_nukn5"] [ext_resource type="Resource" uid="uid://fed6kimfbcwv" path="res://Resources/StatusEffects/cold.tres" id="3_ruu1t"] -[ext_resource type="Texture2D" uid="uid://cqmt5m0grnppx" path="res://PCs/Mage/ClassCards/Icicle/icicle_projectile.png" id="4_ycq5n"] +[ext_resource type="Texture2D" uid="uid://cqmt5m0grnppx" path="res://Projectiles/Icicle/icicle_projectile.png" id="4_ycq5n"] [node name="Icicle" instance=ExtResource("1_mmk8p")] script = ExtResource("2_nukn5") diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/rocket.png b/Projectiles/Rocket/rocket.png similarity index 100% rename from PCs/Mechanic/ClassCards/RocketLauncher/rocket.png rename to Projectiles/Rocket/rocket.png diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/rocket.png.import b/Projectiles/Rocket/rocket.png.import similarity index 70% rename from PCs/Mechanic/ClassCards/RocketLauncher/rocket.png.import rename to Projectiles/Rocket/rocket.png.import index abab760..381fcd7 100644 --- a/PCs/Mechanic/ClassCards/RocketLauncher/rocket.png.import +++ b/Projectiles/Rocket/rocket.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bode8mfmr3r1h" -path="res://.godot/imported/rocket.png-77edbc49fe71a63a62ed874f90d7b439.ctex" +path="res://.godot/imported/rocket.png-aa5d7fa2fa6ee99cfc5dd41e1474e365.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/RocketLauncher/rocket.png" -dest_files=["res://.godot/imported/rocket.png-77edbc49fe71a63a62ed874f90d7b439.ctex"] +source_file="res://Projectiles/Rocket/rocket.png" +dest_files=["res://.godot/imported/rocket.png-aa5d7fa2fa6ee99cfc5dd41e1474e365.ctex"] [params] diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/rocket_projectile.gd b/Projectiles/Rocket/rocket_projectile.gd similarity index 100% rename from PCs/Mechanic/ClassCards/RocketLauncher/rocket_projectile.gd rename to Projectiles/Rocket/rocket_projectile.gd diff --git a/Projectiles/Rocket/rocket_projectile.gd.uid b/Projectiles/Rocket/rocket_projectile.gd.uid new file mode 100644 index 0000000..4179a83 --- /dev/null +++ b/Projectiles/Rocket/rocket_projectile.gd.uid @@ -0,0 +1 @@ +uid://bs1sle66bd7e diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/rocket_projectile.tscn b/Projectiles/Rocket/rocket_projectile.tscn similarity index 67% rename from PCs/Mechanic/ClassCards/RocketLauncher/rocket_projectile.tscn rename to Projectiles/Rocket/rocket_projectile.tscn index 7558c7e..30e2281 100644 --- a/PCs/Mechanic/ClassCards/RocketLauncher/rocket_projectile.tscn +++ b/Projectiles/Rocket/rocket_projectile.tscn @@ -1,15 +1,14 @@ [gd_scene load_steps=6 format=3 uid="uid://p2vwo8ivben6"] [ext_resource type="PackedScene" uid="uid://di2wwvkv4wov1" path="res://Scenes/Projectiles/homing_projectile.tscn" id="1_fnn4i"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/RocketLauncher/rocket_projectile.gd" id="2_86up0"] -[ext_resource type="Texture2D" uid="uid://bode8mfmr3r1h" path="res://PCs/Mechanic/ClassCards/RocketLauncher/rocket.png" id="3_aonkx"] -[ext_resource type="AudioStream" uid="uid://n0w2kj5j2x4e" path="res://PCs/Mechanic/ClassCards/RocketLauncher/shot1.wav" id="4_i5kff"] +[ext_resource type="Script" uid="uid://bs1sle66bd7e" path="res://Projectiles/Rocket/rocket_projectile.gd" id="2_86up0"] +[ext_resource type="Texture2D" uid="uid://bode8mfmr3r1h" path="res://Projectiles/Rocket/rocket.png" id="3_aonkx"] +[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="4_i5kff"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_4rf40"] random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("4_i5kff") -stream_0/weight = 1.0 [node name="Rocket" instance=ExtResource("1_fnn4i")] script = ExtResource("2_86up0") diff --git a/Worlds/GreenPlanet/Enemies/airenemy.tres b/Resources/Enemies/airenemy.tres similarity index 69% rename from Worlds/GreenPlanet/Enemies/airenemy.tres rename to Resources/Enemies/airenemy.tres index 089f6e5..5a06745 100644 --- a/Worlds/GreenPlanet/Enemies/airenemy.tres +++ b/Resources/Enemies/airenemy.tres @@ -2,7 +2,7 @@ [ext_resource type="Texture2D" uid="uid://chhmkmlfrobhu" path="res://Assets/Textures/bubble.png" id="1_57rr1"] [ext_resource type="Texture2D" uid="uid://ta47gpiwloxm" path="res://Assets/Textures/dead_bubble.png" id="1_ioqxi"] -[ext_resource type="Script" path="res://Scripts/Resources/enemy.gd" id="1_wjbfx"] +[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_wjbfx"] [ext_resource type="Texture2D" uid="uid://d0vafwv4lhjji" path="res://Assets/TextureAtlases/bubble.tres" id="3_homny"] [resource] @@ -15,5 +15,15 @@ sprite = ExtResource("3_homny") spawn_power = 4 health = 30 penalty = 4 -movement_speed = 1.5 +movement_speed = 2.0 spawn_cooldown = 0.5 +common_group = 8 +common_cost = 1 +uncommon_group = 14 +uncommon_cost = 2 +rare_group = 20 +rare_cost = 3 +epic_group = 30 +epic_cost = 5 +legendary_group = 50 +legendary_cost = 6 diff --git a/Worlds/GreenPlanet/Enemies/airenemy2.tres b/Resources/Enemies/airenemy2.tres similarity index 70% rename from Worlds/GreenPlanet/Enemies/airenemy2.tres rename to Resources/Enemies/airenemy2.tres index 24d270c..b1a88a1 100644 --- a/Worlds/GreenPlanet/Enemies/airenemy2.tres +++ b/Resources/Enemies/airenemy2.tres @@ -2,7 +2,7 @@ [ext_resource type="Texture2D" uid="uid://b1lwaxw62yp3p" path="res://Assets/Textures/dead_spike.png" id="1_1js8q"] [ext_resource type="Texture2D" uid="uid://duywsy7jmh4u" path="res://Assets/Textures/spike.png" id="1_22o7e"] -[ext_resource type="Script" path="res://Scripts/Resources/enemy.gd" id="1_q5r05"] +[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_q5r05"] [ext_resource type="Texture2D" uid="uid://sybn6bjbj5fh" path="res://Assets/TextureAtlases/spike.tres" id="3_tbb38"] [resource] @@ -13,7 +13,17 @@ icon = ExtResource("1_22o7e") death_sprite = ExtResource("1_1js8q") sprite = ExtResource("3_tbb38") spawn_power = 6 -health = 90 +health = 120 penalty = 7 movement_speed = 1.0 spawn_cooldown = 1.0 +common_group = 3 +common_cost = 2 +uncommon_group = 6 +uncommon_cost = 3 +rare_group = 10 +rare_cost = 4 +epic_group = 16 +epic_cost = 5 +legendary_group = 25 +legendary_cost = 6 diff --git a/Worlds/GreenPlanet/Enemies/dog.tres b/Resources/Enemies/dog.tres similarity index 52% rename from Worlds/GreenPlanet/Enemies/dog.tres rename to Resources/Enemies/dog.tres index 07792f5..224bbb7 100644 --- a/Worlds/GreenPlanet/Enemies/dog.tres +++ b/Resources/Enemies/dog.tres @@ -1,25 +1,35 @@ [gd_resource type="Resource" script_class="Enemy" load_steps=6 format=3 uid="uid://8eba45hql7bo"] -[ext_resource type="Script" path="res://Scripts/Resources/enemy.gd" id="1_2lqbg"] -[ext_resource type="Texture2D" uid="uid://g00wwrlxxdc5" path="res://Assets/Textures/icon_eye_dog.png" id="1_es0ht"] -[ext_resource type="Texture2D" uid="uid://cdnhe2mi5c5ln" path="res://Assets/Textures/dead_eye_dog.png" id="1_w6c0l"] -[ext_resource type="Texture2D" uid="uid://dj13g1w14mekw" path="res://Assets/Textures/eye_dog.png" id="2_vgx18"] +[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_ivs7a"] +[ext_resource type="Texture2D" uid="uid://cdnhe2mi5c5ln" path="res://Assets/Textures/dead_eye_dog.png" id="1_r8gpy"] +[ext_resource type="Texture2D" uid="uid://g00wwrlxxdc5" path="res://Assets/Textures/icon_eye_dog.png" id="2_tyyee"] +[ext_resource type="Texture2D" uid="uid://dj13g1w14mekw" path="res://Assets/Textures/eye_dog.png" id="4_7ypa6"] [sub_resource type="AtlasTexture" id="AtlasTexture_n6kdu"] resource_local_to_scene = true -atlas = ExtResource("2_vgx18") +atlas = ExtResource("4_7ypa6") region = Rect2(0, 0, 32, 32) [resource] resource_local_to_scene = true -script = ExtResource("1_2lqbg") +script = ExtResource("1_ivs7a") title = "dog" target_type = 1 -icon = ExtResource("1_es0ht") -death_sprite = ExtResource("1_w6c0l") +icon = ExtResource("2_tyyee") +death_sprite = ExtResource("1_r8gpy") sprite = SubResource("AtlasTexture_n6kdu") spawn_power = 10 health = 180 penalty = 10 movement_speed = 1.2 spawn_cooldown = 1.2 +common_group = 4 +common_cost = 1 +uncommon_group = 6 +uncommon_cost = 2 +rare_group = 8 +rare_cost = 3 +epic_group = 10 +epic_cost = 4 +legendary_group = 12 +legendary_cost = 5 diff --git a/Worlds/GreenPlanet/Enemies/dog_boss.tres b/Resources/Enemies/dog_boss.tres similarity index 69% rename from Worlds/GreenPlanet/Enemies/dog_boss.tres rename to Resources/Enemies/dog_boss.tres index 2a0095d..177bd96 100644 --- a/Worlds/GreenPlanet/Enemies/dog_boss.tres +++ b/Resources/Enemies/dog_boss.tres @@ -2,7 +2,7 @@ [ext_resource type="Texture2D" uid="uid://cde0voyrwnqkl" path="res://Assets/Textures/icon_eye_dog_boss.png" id="1_2o720"] [ext_resource type="Texture2D" uid="uid://bp3njt3h0qfbg" path="res://Assets/Textures/dead_eye_dog_boss.png" id="1_5xm32"] -[ext_resource type="Script" path="res://Scripts/Resources/enemy.gd" id="1_euaab"] +[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_euaab"] [ext_resource type="Texture2D" uid="uid://ff3cys53p37j" path="res://Assets/TextureAtlases/dog_fast_boss.tres" id="2_1m62w"] [resource] @@ -13,7 +13,17 @@ icon = ExtResource("1_2o720") death_sprite = ExtResource("1_5xm32") sprite = ExtResource("2_1m62w") spawn_power = 100 -health = 1000 +health = 8000 penalty = 40 -movement_speed = 1.0 +movement_speed = 0.8 spawn_cooldown = 1.0 +common_group = 1 +common_cost = 7 +uncommon_group = 2 +uncommon_cost = 9 +rare_group = 3 +rare_cost = 13 +epic_group = 4 +epic_cost = 16 +legendary_group = 5 +legendary_cost = 20 diff --git a/Worlds/GreenPlanet/Enemies/dog_fast.tres b/Resources/Enemies/dog_fast.tres similarity index 71% rename from Worlds/GreenPlanet/Enemies/dog_fast.tres rename to Resources/Enemies/dog_fast.tres index c2adb3c..1a9224e 100644 --- a/Worlds/GreenPlanet/Enemies/dog_fast.tres +++ b/Resources/Enemies/dog_fast.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="Enemy" load_steps=5 format=3 uid="uid://cvehqh4tt28g7"] -[ext_resource type="Script" path="res://Scripts/Resources/enemy.gd" id="1_k5sd1"] +[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_k5sd1"] [ext_resource type="Texture2D" uid="uid://cv5p03aw78vwd" path="res://Assets/Textures/icon_eye_dog_fast.png" id="1_xgen5"] [ext_resource type="Texture2D" uid="uid://dgdofekr7ow73" path="res://Assets/Textures/dead_eye_dog_fast.png" id="1_yj87d"] [ext_resource type="Texture2D" uid="uid://dd212gh03wloa" path="res://Assets/TextureAtlases/dog_fast.tres" id="2_mkbm6"] @@ -13,7 +13,17 @@ icon = ExtResource("1_xgen5") death_sprite = ExtResource("1_yj87d") sprite = ExtResource("2_mkbm6") spawn_power = 16 -health = 100 +health = 70 penalty = 4 movement_speed = 3.5 spawn_cooldown = 0.7 +common_group = 4 +common_cost = 2 +uncommon_group = 8 +uncommon_cost = 2 +rare_group = 14 +rare_cost = 4 +epic_group = 20 +epic_cost = 6 +legendary_group = 26 +legendary_cost = 10 diff --git a/Worlds/GreenPlanet/Enemies/dog_heavy.tres b/Resources/Enemies/dog_heavy.tres similarity index 70% rename from Worlds/GreenPlanet/Enemies/dog_heavy.tres rename to Resources/Enemies/dog_heavy.tres index c4b03f2..579ec5a 100644 --- a/Worlds/GreenPlanet/Enemies/dog_heavy.tres +++ b/Resources/Enemies/dog_heavy.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="Enemy" load_steps=5 format=3 uid="uid://dxi17xvdlhkvc"] [ext_resource type="Texture2D" uid="uid://08n5jvq5tptf" path="res://Assets/Textures/icon_eye_dog_heavy.png" id="1_lck53"] -[ext_resource type="Script" path="res://Scripts/Resources/enemy.gd" id="1_q48il"] +[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_q48il"] [ext_resource type="Texture2D" uid="uid://e7lahg40lq8a" path="res://Assets/Textures/dead_eye_dog_heavy.png" id="1_qveaa"] [ext_resource type="Texture2D" uid="uid://c0543ucoalwmi" path="res://Assets/TextureAtlases/dog_fast_heavy.tres" id="2_7nc4x"] @@ -15,5 +15,15 @@ sprite = ExtResource("2_7nc4x") spawn_power = 14 health = 350 penalty = 15 -movement_speed = 0.8 +movement_speed = 0.9 spawn_cooldown = 2.0 +common_group = 2 +common_cost = 1 +uncommon_group = 5 +uncommon_cost = 2 +rare_group = 8 +rare_cost = 3 +epic_group = 14 +epic_cost = 4 +legendary_group = 18 +legendary_cost = 5 diff --git a/Resources/Enemies/leapfrog.tres b/Resources/Enemies/leapfrog.tres new file mode 100644 index 0000000..9d68858 --- /dev/null +++ b/Resources/Enemies/leapfrog.tres @@ -0,0 +1,35 @@ +[gd_resource type="Resource" script_class="Enemy" load_steps=6 format=3 uid="uid://btudmfd7wfwec"] + +[ext_resource type="Texture2D" uid="uid://bl16mvx4xaxeb" path="res://Assets/Textures/dead_leapfrog.png" id="1_aa1x4"] +[ext_resource type="Texture2D" uid="uid://3ywtwfpuuknr" path="res://Assets/Textures/leapfrog.png" id="2_pj3v3"] +[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="3_i5ry5"] +[ext_resource type="Texture2D" uid="uid://cb66pspr16scy" path="res://Assets/Textures/leapfrog_2.png" id="4_i5ry5"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_n6kdu"] +resource_local_to_scene = true +atlas = ExtResource("4_i5ry5") +region = Rect2(0, 0, 32, 32) + +[resource] +resource_local_to_scene = true +script = ExtResource("3_i5ry5") +title = "Leapdog" +target_type = 1 +icon = ExtResource("2_pj3v3") +death_sprite = ExtResource("1_aa1x4") +sprite = SubResource("AtlasTexture_n6kdu") +spawn_power = 10 +health = 150 +penalty = 8 +movement_speed = 1.3 +spawn_cooldown = 1.8 +common_group = 1 +common_cost = 1 +uncommon_group = 3 +uncommon_cost = 2 +rare_group = 5 +rare_cost = 3 +epic_group = 8 +epic_cost = 4 +legendary_group = 12 +legendary_cost = 5 diff --git a/Resources/Keymaps/azerty.tres b/Resources/Keymaps/azerty.tres index 2079006..d30f4dc 100644 --- a/Resources/Keymaps/azerty.tres +++ b/Resources/Keymaps/azerty.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="PlayerKeymap" load_steps=18 format=3 uid="uid://24x6dxeyp6q"] -[ext_resource type="Script" path="res://Scripts/Resources/player_keymap.gd" id="1_mq1d3"] +[ext_resource type="Script" uid="uid://vkthiwr3vq4g" path="res://Scripts/Resources/player_keymap.gd" id="1_mq1d3"] [sub_resource type="InputEventKey" id="InputEventKey_x2tr7"] device = -1 diff --git a/Resources/Keymaps/colemak.tres b/Resources/Keymaps/colemak.tres index 7725258..31e2443 100644 --- a/Resources/Keymaps/colemak.tres +++ b/Resources/Keymaps/colemak.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="PlayerKeymap" load_steps=18 format=3 uid="uid://bimicdfsvbsfe"] -[ext_resource type="Script" path="res://Scripts/Resources/player_keymap.gd" id="1_ea4lr"] +[ext_resource type="Script" uid="uid://vkthiwr3vq4g" path="res://Scripts/Resources/player_keymap.gd" id="1_ea4lr"] [sub_resource type="InputEventKey" id="InputEventKey_vtcll"] device = -1 diff --git a/Resources/Keymaps/controller.tres b/Resources/Keymaps/controller.tres index 5797fb0..a5a8466 100644 --- a/Resources/Keymaps/controller.tres +++ b/Resources/Keymaps/controller.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="PlayerKeymap" load_steps=18 format=3 uid="uid://ciy3467h2g8fi"] -[ext_resource type="Script" path="res://Scripts/Resources/player_keymap.gd" id="1_tfpk7"] +[ext_resource type="Script" uid="uid://vkthiwr3vq4g" path="res://Scripts/Resources/player_keymap.gd" id="1_tfpk7"] [sub_resource type="InputEventJoypadButton" id="InputEventJoypadButton_wcd5e"] button_index = 9 diff --git a/Resources/Keymaps/dvorak.tres b/Resources/Keymaps/dvorak.tres index 794b520..c967cb6 100644 --- a/Resources/Keymaps/dvorak.tres +++ b/Resources/Keymaps/dvorak.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="PlayerKeymap" load_steps=18 format=3 uid="uid://qgpkrp08tx5l"] -[ext_resource type="Script" path="res://Scripts/Resources/player_keymap.gd" id="1_e3tjt"] +[ext_resource type="Script" uid="uid://vkthiwr3vq4g" path="res://Scripts/Resources/player_keymap.gd" id="1_e3tjt"] [sub_resource type="InputEventKey" id="InputEventKey_62tdh"] device = -1 diff --git a/Resources/Keymaps/qwerty.tres b/Resources/Keymaps/qwerty.tres index 8cf537c..1836be8 100644 --- a/Resources/Keymaps/qwerty.tres +++ b/Resources/Keymaps/qwerty.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="PlayerKeymap" load_steps=18 format=3 uid="uid://dml3iwhpttdat"] -[ext_resource type="Script" path="res://Scripts/Resources/player_keymap.gd" id="1_6xs82"] +[ext_resource type="Script" uid="uid://vkthiwr3vq4g" path="res://Scripts/Resources/player_keymap.gd" id="1_6xs82"] [sub_resource type="InputEventKey" id="InputEventKey_g7iw8"] device = -1 diff --git a/Resources/Keymaps/workman.tres b/Resources/Keymaps/workman.tres index 2603bf8..383deab 100644 --- a/Resources/Keymaps/workman.tres +++ b/Resources/Keymaps/workman.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="PlayerKeymap" load_steps=18 format=3 uid="uid://g02ll7a7urwl"] -[ext_resource type="Script" path="res://Scripts/Resources/player_keymap.gd" id="1_pf0gk"] +[ext_resource type="Script" uid="uid://vkthiwr3vq4g" path="res://Scripts/Resources/player_keymap.gd" id="1_pf0gk"] [sub_resource type="InputEventKey" id="InputEventKey_ikcft"] device = -1 diff --git a/Resources/StatusEffects/cold.tres b/Resources/StatusEffects/cold.tres index d385bab..87b3460 100644 --- a/Resources/StatusEffects/cold.tres +++ b/Resources/StatusEffects/cold.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="StatusStats" load_steps=3 format=3 uid="uid://fed6kimfbcwv"] [ext_resource type="Texture2D" uid="uid://vmcidp1sk5ns" path="res://Assets/Textures/cold.png" id="1_0gkew"] -[ext_resource type="Script" path="res://Scripts/Resources/status_stats.gd" id="1_krmeh"] +[ext_resource type="Script" uid="uid://bq6jp8bwub6je" path="res://Scripts/Resources/status_stats.gd" id="1_krmeh"] [resource] script = ExtResource("1_krmeh") diff --git a/Resources/StatusEffects/frozen.tres b/Resources/StatusEffects/frozen.tres index 48cde76..9f3d434 100644 --- a/Resources/StatusEffects/frozen.tres +++ b/Resources/StatusEffects/frozen.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="StatusStats" load_steps=2 format=3 uid="uid://berwexb0x8ihh"] -[ext_resource type="Script" path="res://Scripts/Resources/status_stats.gd" id="1_pu408"] +[ext_resource type="Script" uid="uid://bq6jp8bwub6je" path="res://Scripts/Resources/status_stats.gd" id="1_pu408"] [resource] script = ExtResource("1_pu408") diff --git a/Resources/StatusEffects/on_fire.tres b/Resources/StatusEffects/on_fire.tres index 3b0679d..1fdfb21 100644 --- a/Resources/StatusEffects/on_fire.tres +++ b/Resources/StatusEffects/on_fire.tres @@ -1,12 +1,12 @@ [gd_resource type="Resource" script_class="StatusStats" load_steps=3 format=3 uid="uid://dbanx8taicddm"] [ext_resource type="Texture2D" uid="uid://c0h8yi1xe4ru5" path="res://Assets/Textures/on_fire_icon.png" id="1_ebohu"] -[ext_resource type="Script" path="res://Scripts/Resources/status_stats.gd" id="1_ogrf4"] +[ext_resource type="Script" uid="uid://bq6jp8bwub6je" path="res://Scripts/Resources/status_stats.gd" id="1_ogrf4"] [resource] script = ExtResource("1_ogrf4") name = "Burning" -unique = false +max_stacks = 0 proc_cd = 1.0 duration = 3.0 potency = 2.0 diff --git a/Resources/StatusEffects/poisoned.tres b/Resources/StatusEffects/poisoned.tres index 562e723..2667eef 100644 --- a/Resources/StatusEffects/poisoned.tres +++ b/Resources/StatusEffects/poisoned.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="StatusStats" load_steps=3 format=3 uid="uid://cbskijhnnj3kw"] [ext_resource type="Texture2D" uid="uid://cqah4a2pp40jt" path="res://Assets/Textures/poison.png" id="1_730i6"] -[ext_resource type="Script" path="res://Scripts/Resources/status_stats.gd" id="1_e1nii"] +[ext_resource type="Script" uid="uid://bq6jp8bwub6je" path="res://Scripts/Resources/status_stats.gd" id="1_e1nii"] [resource] script = ExtResource("1_e1nii") diff --git a/Resources/StatusEffects/radioactive.tres b/Resources/StatusEffects/radioactive.tres index 70e776b..caf5c3a 100644 --- a/Resources/StatusEffects/radioactive.tres +++ b/Resources/StatusEffects/radioactive.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="StatusStats" load_steps=3 format=3 uid="uid://dxlisoas4xlmo"] [ext_resource type="Texture2D" uid="uid://bvc4b3v0wke84" path="res://Assets/Textures/radioactive.png" id="1_2vw1n"] -[ext_resource type="Script" path="res://Scripts/Resources/status_stats.gd" id="1_eh52x"] +[ext_resource type="Script" uid="uid://bq6jp8bwub6je" path="res://Scripts/Resources/status_stats.gd" id="1_eh52x"] [resource] script = ExtResource("1_eh52x") diff --git a/Resources/StatusEffects/sticky.tres b/Resources/StatusEffects/sticky.tres index 2bfb9d9..c763ba3 100644 --- a/Resources/StatusEffects/sticky.tres +++ b/Resources/StatusEffects/sticky.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="StatusStats" load_steps=3 format=3 uid="uid://d0643gfp52x3s"] -[ext_resource type="Script" path="res://Scripts/Resources/status_stats.gd" id="1_57gd1"] +[ext_resource type="Script" uid="uid://bq6jp8bwub6je" path="res://Scripts/Resources/status_stats.gd" id="1_57gd1"] [ext_resource type="Texture2D" uid="uid://bpixdxdjnr5tw" path="res://Assets/Textures/glue_icon.png" id="1_b1meh"] [resource] diff --git a/Scenes/8_direction_sprite.tscn b/Scenes/8_direction_sprite.tscn index 7b9f564..14b8b32 100644 --- a/Scenes/8_direction_sprite.tscn +++ b/Scenes/8_direction_sprite.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://ri8r03wqy80t"] -[ext_resource type="Script" path="res://Scripts/eight_direction_sprite.gd" id="1_ipfb5"] +[ext_resource type="Script" uid="uid://by8jxwui7chwl" path="res://Scripts/eight_direction_sprite.gd" id="1_ipfb5"] [ext_resource type="Texture2D" uid="uid://bf3gkg7f2oyg7" path="res://Assets/TextureAtlases/player.tres" id="2_kkoy2"] [node name="EightDirectionSprite" type="Sprite3D"] diff --git a/Scenes/CardPrinter/card_printer.gd b/Scenes/CardPrinter/card_printer.gd index c6ded18..1947b3a 100644 --- a/Scenes/CardPrinter/card_printer.gd +++ b/Scenes/CardPrinter/card_printer.gd @@ -1,14 +1,22 @@ class_name CardPrinter extends StaticBody3D -@export var cards: Array[CardInHand] @export var item_card_scene: PackedScene @export var button_collider: CollisionShape3D @export var button_box: Node3D -@export var choice_colliders: Array[CollisionShape3D] +#TODO: use faction enum +var base_faction: int = 1 var cards_generated: int = 0 -var card_available: bool = false var reply_player: Hero +var spawned_cards: Array[CardItem] = [] + + +func get_faction_cards(faction: Card.Faction) -> Array[Card]: + var valid_cards: Array[Card] = [] + for card: Card in Data.cards: + if card.faction == faction: + valid_cards.append(card) + return valid_cards func generate_rarity() -> int: @@ -28,42 +36,44 @@ func generate_rarity() -> int: return decided_rarity -func randomize_cards() -> void: - var decided_rarity: int = generate_rarity() - var card_array: Array = [] - for x: Card in Data.cards: - if x.rarity == decided_rarity: - card_array.append(x) - var card: Card - for x: CardInHand in cards: +func randomize_cards(faction: Card.Faction) -> void: + #TODO: no magic numbers, asshole! 3 = cards to spawn + for x: int in 3: + var decided_rarity: int = generate_rarity() + var card_choices: Array[Card] = get_faction_cards(faction) + var card_array: Array = [] + var cards_chosen: bool = false + while !cards_chosen: + for card: Card in card_choices: + if card.rarity == decided_rarity: + card_array.append(card) + cards_chosen = true + decided_rarity -= 1 + if decided_rarity < 0: + card_array.append(Data.cards[0]) + cards_chosen = true + var card: Card if card_array.size() > 0: card = card_array[Game.randi_in_range(132 * cards_generated, 0, card_array.size() - 1)] cards_generated += 1 card_array.erase(card) - x.set_card(card) - #TODO: in reality this should just show the icon and then hovering over it lets you see either side at the players own discretion - x.view_tower() - $Node3D.set_visible(true) - for x: CollisionShape3D in choice_colliders: - x.disabled = false - card_available = true + var item: CardItem = item_card_scene.instantiate() as CardItem + item.set_card(card) + item.position = Vector3(x, 1, 2) + item.pressed.connect(card_picked_up) + spawned_cards.append(item) + add_child(item) -func retrieve_card(i: int, _reply: Hero) -> void: - $Node3D.set_visible(false) - for x: CollisionShape3D in choice_colliders: - x.disabled = true - if card_available: - var card: Card = cards[i].stats - reply_player.add_card(card) - #var item: ItemCard = item_card_scene.instantiate() as ItemCard - #item.card = card - #item.position = Vector3(1.683, 0, 0) - #add_child(item) +func card_picked_up(card_item: CardItem) -> void: + reply_player.add_card(card_item.card) + reply_player = null + for spawned_card: CardItem in spawned_cards: + spawned_card.queue_free() + spawned_cards = [] button_collider.disabled = false button_box.position = Vector3(0,0,0) $StaticBody3D/AudioStreamPlayer3D.play() - reply_player = null func _on_static_body_3d_button_interacted(_value: int, reply: Hero) -> void: @@ -71,4 +81,4 @@ func _on_static_body_3d_button_interacted(_value: int, reply: Hero) -> void: button_collider.disabled = true button_box.position = Vector3(0,0,-0.2) $StaticBody3D/AudioStreamPlayer3D.play() - randomize_cards() + randomize_cards(reply.hero_class.faction) diff --git a/Scenes/CardPrinter/card_printer.gd.uid b/Scenes/CardPrinter/card_printer.gd.uid new file mode 100644 index 0000000..38090fa --- /dev/null +++ b/Scenes/CardPrinter/card_printer.gd.uid @@ -0,0 +1 @@ +uid://bivtfdl3p1brv diff --git a/Scenes/CardPrinter/card_printer.tscn b/Scenes/CardPrinter/card_printer.tscn index 2313839..62e201c 100644 --- a/Scenes/CardPrinter/card_printer.tscn +++ b/Scenes/CardPrinter/card_printer.tscn @@ -1,10 +1,9 @@ -[gd_scene load_steps=14 format=3 uid="uid://1b2ikdanl66b"] +[gd_scene load_steps=9 format=3 uid="uid://1b2ikdanl66b"] -[ext_resource type="Script" path="res://Scenes/CardPrinter/card_printer.gd" id="1_qft15"] -[ext_resource type="PackedScene" uid="uid://dsasunnk47n8o" path="res://Scenes/item_card.tscn" id="2_hegq8"] -[ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://Scenes/UI/card_hand.tscn" id="3_wygtg"] -[ext_resource type="Script" path="res://Scripts/interact_button.gd" id="4_eavi1"] -[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="5_m033a"] +[ext_resource type="Script" uid="uid://bivtfdl3p1brv" path="res://Scenes/CardPrinter/card_printer.gd" id="1_qft15"] +[ext_resource type="PackedScene" uid="uid://dq8v5e11rvyi6" path="res://plan.tscn" id="2_8jpsw"] +[ext_resource type="Script" uid="uid://dkfswql8ui0bt" path="res://Scripts/interact_button.gd" id="4_eavi1"] +[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="5_m033a"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_s02au"] albedo_color = Color(0.203922, 0.592157, 0.592157, 1) @@ -12,15 +11,6 @@ albedo_color = Color(0.203922, 0.592157, 0.592157, 1) [sub_resource type="BoxShape3D" id="BoxShape3D_0ebt5"] size = Vector3(2, 2.1, 1) -[sub_resource type="ViewportTexture" id="ViewportTexture_yf4je"] -viewport_path = NodePath("SubViewport") - -[sub_resource type="ViewportTexture" id="ViewportTexture_3q3h0"] -viewport_path = NodePath("SubViewport2") - -[sub_resource type="ViewportTexture" id="ViewportTexture_vyyy4"] -viewport_path = NodePath("SubViewport3") - [sub_resource type="BoxShape3D" id="BoxShape3D_ikdwj"] size = Vector3(1.29447, 0.342125, 0.277604) @@ -28,18 +18,12 @@ size = Vector3(1.29447, 0.342125, 0.277604) random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("5_m033a") -stream_0/weight = 1.0 -[sub_resource type="BoxShape3D" id="BoxShape3D_gv3t5"] -size = Vector3(0.617184, 0.869944, 0.0570252) - -[node name="CardPrinter" type="StaticBody3D" node_paths=PackedStringArray("cards", "button_collider", "button_box", "choice_colliders")] +[node name="CardPrinter" type="StaticBody3D" node_paths=PackedStringArray("button_collider", "button_box")] script = ExtResource("1_qft15") -cards = [NodePath("SubViewport/Node2D"), NodePath("SubViewport2/Node2D"), NodePath("SubViewport3/Node2D")] -item_card_scene = ExtResource("2_hegq8") +item_card_scene = ExtResource("2_8jpsw") button_collider = NodePath("StaticBody3D/CollisionShape3D2") button_box = NodePath("StaticBody3D/CollisionShape3D2/CSGBox3D") -choice_colliders = [NodePath("StaticBody3D2/CollisionShape3D2"), NodePath("StaticBody3D3/CollisionShape3D2"), NodePath("StaticBody3D4/CollisionShape3D2")] [node name="CSGBox3D" type="CSGBox3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.05, 0) @@ -50,49 +34,6 @@ material = SubResource("StandardMaterial3D_s02au") transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.05, 0) shape = SubResource("BoxShape3D_0ebt5") -[node name="SubViewport" type="SubViewport" parent="."] -transparent_bg = true -size = Vector2i(352, 512) -render_target_update_mode = 4 - -[node name="Node2D" parent="SubViewport" instance=ExtResource("3_wygtg")] -position = Vector2(-56, 0) - -[node name="SubViewport2" type="SubViewport" parent="."] -transparent_bg = true -size = Vector2i(352, 512) -render_target_update_mode = 4 - -[node name="Node2D" parent="SubViewport2" instance=ExtResource("3_wygtg")] -position = Vector2(-56, 0) - -[node name="SubViewport3" type="SubViewport" parent="."] -transparent_bg = true -size = Vector2i(352, 512) -render_target_update_mode = 4 - -[node name="Node2D" parent="SubViewport3" instance=ExtResource("3_wygtg")] -position = Vector2(-56, 0) - -[node name="Node3D" type="Node3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.149617, 0) -visible = false - -[node name="Sprite3D" type="Sprite3D" parent="Node3D"] -transform = Transform3D(0.175, 0, 0, 0, 0.175, 0, 0, 0, 0.175, -0.65, 1.65, 0.506948) -texture_filter = 0 -texture = SubResource("ViewportTexture_yf4je") - -[node name="Sprite3D2" type="Sprite3D" parent="Node3D"] -transform = Transform3D(0.175, 0, 0, 0, 0.175, 0, 0, 0, 0.175, 0, 1.65, 0.506948) -texture_filter = 0 -texture = SubResource("ViewportTexture_3q3h0") - -[node name="Sprite3D3" type="Sprite3D" parent="Node3D"] -transform = Transform3D(0.175, 0, 0, 0, 0.175, 0, 0, 0, 0.175, 0.65, 1.65, 0.506948) -texture_filter = 0 -texture = SubResource("ViewportTexture_vyyy4") - [node name="StaticBody3D" type="StaticBody3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.847404, 0.610684) collision_layer = 16 @@ -112,42 +53,4 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.010989, -0.086501) stream = SubResource("AudioStreamRandomizer_73g2w") bus = &"SFX" -[node name="StaticBody3D2" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.650194, 1.50143, 0.528758) -collision_layer = 16 -collision_mask = 0 -script = ExtResource("4_eavi1") -hover_text = "Select card" - -[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D2"] -shape = SubResource("BoxShape3D_gv3t5") -disabled = true - -[node name="StaticBody3D3" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.000848182, 1.5001, 0.528758) -collision_layer = 16 -collision_mask = 0 -script = ExtResource("4_eavi1") -button_press_value = 1 -hover_text = "Select card" - -[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D3"] -shape = SubResource("BoxShape3D_gv3t5") -disabled = true - -[node name="StaticBody3D4" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.648946, 1.49865, 0.528758) -collision_layer = 16 -collision_mask = 0 -script = ExtResource("4_eavi1") -button_press_value = 2 -hover_text = "Select card" - -[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D4"] -shape = SubResource("BoxShape3D_gv3t5") -disabled = true - [connection signal="button_interacted" from="StaticBody3D" to="." method="_on_static_body_3d_button_interacted"] -[connection signal="button_interacted" from="StaticBody3D2" to="." method="retrieve_card"] -[connection signal="button_interacted" from="StaticBody3D3" to="." method="retrieve_card"] -[connection signal="button_interacted" from="StaticBody3D4" to="." method="retrieve_card"] diff --git a/Scenes/Menus/CharacterSelect/character_podium.gd b/Scenes/Menus/CharacterSelect/character_podium.gd new file mode 100644 index 0000000..8c16430 --- /dev/null +++ b/Scenes/Menus/CharacterSelect/character_podium.gd @@ -0,0 +1,3 @@ +class_name CharacterPodium extends Node3D + +@export var text: String = "" diff --git a/Scenes/Menus/CharacterSelect/character_podium.gd.uid b/Scenes/Menus/CharacterSelect/character_podium.gd.uid new file mode 100644 index 0000000..13d4670 --- /dev/null +++ b/Scenes/Menus/CharacterSelect/character_podium.gd.uid @@ -0,0 +1 @@ +uid://bc0xyfr5nj1ul diff --git a/Scenes/Menus/CharacterSelect/character_preview.gd b/Scenes/Menus/CharacterSelect/character_preview.gd new file mode 100644 index 0000000..0945ba5 --- /dev/null +++ b/Scenes/Menus/CharacterSelect/character_preview.gd @@ -0,0 +1,41 @@ +class_name CharacterPreview extends PanelContainer + +@export var tower_label_scene: PackedScene +@export var tower_label_container: VBoxContainer +@export var hero_name_label: Label + +var added_tags: Array[TowerLabel] = [] +var regular_label: Label = null + + +func set_preview(hero: HeroClass) -> void: + hero_name_label.text = hero.hero_name + if regular_label: + regular_label.queue_free() + regular_label = null + for tag: TowerLabel in added_tags: + tag.queue_free() + added_tags = [] + var added_labels: Array[Card] = [] + for card: Card in hero.deck: + if !added_labels.has(card): + var new_label: TowerLabel = tower_label_scene.instantiate() as TowerLabel + new_label.change_label(card.display_name, str(hero.deck.count(card))) + added_labels.append(card) + tower_label_container.add_child(new_label) + added_tags.append(new_label) + + +func setup_with_basic_text(hero: HeroClass, text: String) -> void: + hero_name_label.text = hero.hero_name + if regular_label: + regular_label.queue_free() + regular_label = null + for tag: TowerLabel in added_tags: + tag.queue_free() + added_tags = [] + var added_labels: Array[Card] = [] + var new_label: Label = Label.new() + new_label.text = text + tower_label_container.add_child(new_label) + regular_label = new_label diff --git a/Scenes/Menus/CharacterSelect/character_preview.gd.uid b/Scenes/Menus/CharacterSelect/character_preview.gd.uid new file mode 100644 index 0000000..35ef505 --- /dev/null +++ b/Scenes/Menus/CharacterSelect/character_preview.gd.uid @@ -0,0 +1 @@ +uid://b1ucgfqilvr67 diff --git a/Scenes/Menus/CharacterSelect/character_select.gd b/Scenes/Menus/CharacterSelect/character_select.gd new file mode 100644 index 0000000..a7248cb --- /dev/null +++ b/Scenes/Menus/CharacterSelect/character_select.gd @@ -0,0 +1,78 @@ +class_name CharacterSelect extends Node3D + +signal hero_selected(hero_class: int) +signal hero_confirmed() + +@export var hero_preview_panel: CharacterPreview + +var podiums: Array[CharacterPodium] + +var character_selected: int = 0 +var can_hit_button: bool = true + +func _ready() -> void: + hero_preview_panel.set_preview(Data.characters[0]) + var heroes: int = Data.characters.size() + var x: int = 0 + for hero: HeroClass in Data.characters: + var pivot: Node3D = Node3D.new() + $Podiums.add_child(pivot) + var podium: CharacterPodium = hero.podium.instantiate() as CharacterPodium + podium.position = Vector3(0.0, -0.5, 5.0) + podiums.append(podium) + pivot.add_child(podium) + pivot.rotate_y((TAU / heroes) * x) + x += 1 + #if Data.save_data.mage_unlocked: + #podiums.visible = true + + +func reset_button() -> void: + can_hit_button = true + + +func setup_ui() -> void: + #TODO: This should all tie into a proper achievements system + if character_selected == 0 or (character_selected == 1 and Data.save_data.mage_unlocked): + $VBoxContainer/Button.disabled = false + hero_preview_panel.set_preview(Data.characters[character_selected]) + hero_selected.emit(character_selected) + elif character_selected == 1 and !Data.save_data.mage_unlocked and Data.save_data.mage_card_seen_in_shop: + hero_preview_panel.setup_with_basic_text(Data.characters[character_selected], "Buy " + str(Data.save_data.mage_cards_bought) + "/10 scrolls in the shop to unlock") + else: + $VBoxContainer/Button.disabled = true + hero_preview_panel.setup_with_basic_text(Data.characters[character_selected], podiums[character_selected].text) + + +func retreat_selector() -> void: + if !can_hit_button: + return + can_hit_button = false + var tween: Tween = create_tween() + tween.set_ease(Tween.EASE_OUT) + tween.set_trans(Tween.TRANS_CUBIC) + tween.tween_property($Node3D, "rotation_degrees", Vector3(0.0, $Node3D.rotation_degrees.y - 90.0, 0.0), 1.0) + tween.tween_callback(reset_button) + character_selected -= 1 + if character_selected < 0: + character_selected = Data.characters.size() - 1 + setup_ui() + + +func advance_selector() -> void: + if !can_hit_button: + return + can_hit_button = false + var tween: Tween = create_tween() + tween.set_ease(Tween.EASE_OUT) + tween.set_trans(Tween.TRANS_CUBIC) + tween.tween_property($Node3D, "rotation_degrees", Vector3(0.0, $Node3D.rotation_degrees.y + 90.0, 0.0), 1.0) + tween.tween_callback(reset_button) + character_selected += 1 + if character_selected >= Data.characters.size(): + character_selected = 0 + setup_ui() + + +func _on_confirm_button_pressed() -> void: + hero_confirmed.emit() diff --git a/Scenes/Menus/CharacterSelect/character_select.gd.uid b/Scenes/Menus/CharacterSelect/character_select.gd.uid new file mode 100644 index 0000000..e32915b --- /dev/null +++ b/Scenes/Menus/CharacterSelect/character_select.gd.uid @@ -0,0 +1 @@ +uid://plrd0ckxrabh diff --git a/Scenes/Menus/CharacterSelect/character_select.tscn b/Scenes/Menus/CharacterSelect/character_select.tscn new file mode 100644 index 0000000..c2734ff --- /dev/null +++ b/Scenes/Menus/CharacterSelect/character_select.tscn @@ -0,0 +1,104 @@ +[gd_scene load_steps=7 format=3 uid="uid://bc6m3cluulpis"] + +[ext_resource type="Script" uid="uid://plrd0ckxrabh" path="res://Scenes/Menus/CharacterSelect/character_select.gd" id="1_lqqhx"] +[ext_resource type="Script" uid="uid://b1ucgfqilvr67" path="res://Scenes/Menus/CharacterSelect/character_preview.gd" id="9_8d0rx"] +[ext_resource type="PackedScene" uid="uid://clabkhnbn75rf" path="res://UI/tower_label.tscn" id="10_jdigy"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_tlgw2"] +sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) +ground_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) +energy_multiplier = 0.0 + +[sub_resource type="Sky" id="Sky_atdxu"] +sky_material = SubResource("ProceduralSkyMaterial_tlgw2") + +[sub_resource type="Environment" id="Environment_pq6wd"] +background_mode = 2 +sky = SubResource("Sky_atdxu") +tonemap_mode = 2 +glow_enabled = true + +[node name="CharacterSelect" type="Node3D" node_paths=PackedStringArray("hero_preview_panel")] +script = ExtResource("1_lqqhx") +hero_preview_panel = NodePath("PanelContainer") + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_pq6wd") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0) +light_energy = 0.0 +shadow_enabled = true + +[node name="Node3D" type="Node3D" parent="."] + +[node name="Camera3D" type="Camera3D" parent="Node3D"] +transform = Transform3D(1, 0, 0, 0, 0.976893, 0.21373, 0, -0.21373, 0.976893, 0, 2.25535, 10.9009) +cull_mask = 1047553 +fov = 39.4 + +[node name="PanelContainer" type="PanelContainer" parent="." node_paths=PackedStringArray("tower_label_container", "hero_name_label")] +anchors_preset = 4 +anchor_top = 0.5 +anchor_bottom = 0.5 +offset_left = 100.0 +offset_top = -91.5 +offset_right = 299.0 +offset_bottom = 91.5 +grow_vertical = 2 +script = ExtResource("9_8d0rx") +tower_label_scene = ExtResource("10_jdigy") +tower_label_container = NodePath("HBoxContainer2/HBoxContainer") +hero_name_label = NodePath("HBoxContainer2/Label") + +[node name="HBoxContainer2" type="VBoxContainer" parent="PanelContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="PanelContainer/HBoxContainer2"] +layout_mode = 2 +text = "character name" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Label2" type="Label" parent="PanelContainer/HBoxContainer2"] +layout_mode = 2 +text = "------------------------" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="HBoxContainer" type="VBoxContainer" parent="PanelContainer/HBoxContainer2"] +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -20.0 +offset_top = -40.0 +offset_right = 20.0 +offset_bottom = -150.0 +grow_horizontal = 2 +grow_vertical = 0 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="Button2" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "prev" + +[node name="Button" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "next" + +[node name="Button" type="Button" parent="VBoxContainer"] +layout_mode = 2 +text = "Confirm" + +[node name="Podiums" type="Node3D" parent="."] + +[connection signal="pressed" from="VBoxContainer/HBoxContainer/Button2" to="." method="retreat_selector"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/Button" to="." method="advance_selector"] +[connection signal="pressed" from="VBoxContainer/Button" to="." method="_on_confirm_button_pressed"] diff --git a/Scenes/Menus/CharacterSelect/charselect.gd b/Scenes/Menus/CharacterSelect/charselect.gd deleted file mode 100644 index f837d38..0000000 --- a/Scenes/Menus/CharacterSelect/charselect.gd +++ /dev/null @@ -1,19 +0,0 @@ -class_name HeroSelector extends Control - -signal hero_selected(hero_class: int) - -@export var hero_card_scene: PackedScene -@export var hbox: HBoxContainer - - -func _ready() -> void: - for hero: HeroClass in Data.characters: - var card: Control = hero_card_scene.instantiate() - card.set_hero(hero) - card.pressed.connect(func(x: int) -> void: hero_selected.emit(x)) - card.button_mouse_entered.connect(_on_button_mouse_entered) - hbox.add_child(card) - - -func _on_button_mouse_entered() -> void: - $AudioStreamPlayer.play() diff --git a/Scenes/Menus/CharacterSelect/charselect.tscn b/Scenes/Menus/CharacterSelect/charselect.tscn deleted file mode 100644 index 9da2b40..0000000 --- a/Scenes/Menus/CharacterSelect/charselect.tscn +++ /dev/null @@ -1,49 +0,0 @@ -[gd_scene load_steps=5 format=3 uid="uid://dqqitmhu66a7d"] - -[ext_resource type="Script" path="res://Scenes/Menus/CharacterSelect/charselect.gd" id="1_h2h26"] -[ext_resource type="PackedScene" uid="uid://bnsf2degj5tio" path="res://Scenes/UI/hero_card.tscn" id="1_v2mfo"] -[ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="3_ho1fl"] - -[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_ehpk7"] -random_pitch = 1.1 -streams_count = 1 -stream_0/stream = ExtResource("3_ho1fl") -stream_0/weight = 1.0 - -[node name="Control" type="Control" node_paths=PackedStringArray("hbox")] -layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 2 -script = ExtResource("1_h2h26") -hero_card_scene = ExtResource("1_v2mfo") -hbox = NodePath("CenterContainer/VBoxContainer/HBoxContainer") - -[node name="CenterContainer" type="CenterContainer" parent="."] -layout_mode = 1 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -mouse_filter = 2 - -[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer"] -layout_mode = 2 - -[node name="Label" type="Label" parent="CenterContainer/VBoxContainer"] -layout_mode = 2 -text = "Choose your hero" -horizontal_alignment = 1 -vertical_alignment = 1 - -[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/VBoxContainer"] -layout_mode = 2 -alignment = 1 - -[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] -stream = SubResource("AudioStreamRandomizer_ehpk7") -bus = &"SFX" diff --git a/Scenes/Menus/GameEndScreen/game_end_screen.gd b/Scenes/Menus/GameEndScreen/game_end_screen.gd index 536d64d..54bff10 100644 --- a/Scenes/Menus/GameEndScreen/game_end_screen.gd +++ b/Scenes/Menus/GameEndScreen/game_end_screen.gd @@ -11,13 +11,13 @@ class_name GameEndScreen extends PanelContainer func _ready() -> void: - var wins: int = Data.save_stats.twenty_game_history.count(true) - var games: int = Data.save_stats.twenty_game_history.size() + var wins: int = Data.save_data.twenty_game_history.count(true) + var games: int = Data.save_data.twenty_game_history.size() var winrate: int = int((float(wins) / float(games)) * 100.0) winrate_label.text = "Your 20-game winrate is now: " + str(winrate) + "%!" - total_games_label.text = "Total games: " + str(Data.save_stats.wins + Data.save_stats.losses) - total_wins_label.text = "Total wins: " + str(Data.save_stats.wins) - total_losses_label.text = "Total losses: " + str(Data.save_stats.losses) + total_games_label.text = "Total games: " + str(Data.save_data.wins + Data.save_data.losses) + total_wins_label.text = "Total wins: " + str(Data.save_data.wins) + total_losses_label.text = "Total losses: " + str(Data.save_data.losses) for wave_key: int in Game.stats.enemies_undefeated: var spawned_box: EnemyBox = box.instantiate() as EnemyBox undefeated_enemies.add_child(spawned_box) @@ -36,6 +36,8 @@ func _on_quit_button_pressed() -> void: func _on_play_button_pressed() -> void: + if Game.gamemode.daily == false and !Game.gamemode.seeded: + Game.gamemode.rng_seed = randi() Game.setup() Game.start() queue_free() diff --git a/Scenes/Menus/GameEndScreen/game_end_screen.gd.uid b/Scenes/Menus/GameEndScreen/game_end_screen.gd.uid new file mode 100644 index 0000000..18b0c0e --- /dev/null +++ b/Scenes/Menus/GameEndScreen/game_end_screen.gd.uid @@ -0,0 +1 @@ +uid://bdknvktw033g3 diff --git a/Scenes/Menus/GameEndScreen/game_end_screen.tscn b/Scenes/Menus/GameEndScreen/game_end_screen.tscn index f726e1c..aea3124 100644 --- a/Scenes/Menus/GameEndScreen/game_end_screen.tscn +++ b/Scenes/Menus/GameEndScreen/game_end_screen.tscn @@ -1,14 +1,13 @@ [gd_scene load_steps=5 format=3 uid="uid://ce0m8vbjbng6o"] -[ext_resource type="Script" path="res://Scenes/Menus/GameEndScreen/game_end_screen.gd" id="1_oa7nq"] -[ext_resource type="PackedScene" uid="uid://b5hp43bm07b8a" path="res://h_box_container.tscn" id="2_xm8em"] +[ext_resource type="Script" uid="uid://bdknvktw033g3" path="res://Scenes/Menus/GameEndScreen/game_end_screen.gd" id="1_oa7nq"] +[ext_resource type="PackedScene" uid="uid://b5hp43bm07b8a" path="res://UI/h_box_container.tscn" id="2_xm8em"] [ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="3_ro1yg"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_dram5"] random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("3_ro1yg") -stream_0/weight = 1.0 [node name="GameEndScreen" type="PanelContainer" node_paths=PackedStringArray("outcome_label", "winrate_label", "total_games_label", "total_wins_label", "total_losses_label", "undefeated_enemies")] anchors_preset = 15 diff --git a/Scenes/Menus/MainMenu/achievements_menu.gd b/Scenes/Menus/MainMenu/achievements_menu.gd new file mode 100644 index 0000000..689904e --- /dev/null +++ b/Scenes/Menus/MainMenu/achievements_menu.gd @@ -0,0 +1,9 @@ +extends PanelContainer + +func _ready() -> void: + if Data.save_data.wins > 0: + $VBoxContainer/GridContainer/FirstWin.icon.region = Rect2(36, 0, 36, 36) + if Data.save_data.mage_card_seen_in_shop: + $VBoxContainer/GridContainer/SeenMageCard.icon.region = Rect2(36, 0, 36, 36) + if Data.save_data.mage_unlocked: + $VBoxContainer/GridContainer/UnlockedMage.icon.region = Rect2(36, 0, 36, 36) diff --git a/Scenes/Menus/MainMenu/achievements_menu.gd.uid b/Scenes/Menus/MainMenu/achievements_menu.gd.uid new file mode 100644 index 0000000..3c9ecb3 --- /dev/null +++ b/Scenes/Menus/MainMenu/achievements_menu.gd.uid @@ -0,0 +1 @@ +uid://cjr0pbqisd51v diff --git a/Scenes/Menus/MainMenu/main_menu.gd b/Scenes/Menus/MainMenu/main_menu.gd index daa6871..0920572 100644 --- a/Scenes/Menus/MainMenu/main_menu.gd +++ b/Scenes/Menus/MainMenu/main_menu.gd @@ -1,27 +1,36 @@ class_name MainMenu extends Control @export var bg_level: Level +@export var game_select_menu: Control +@export var main_controls: Control +@export var seed_entry: LineEdit +@export var profile_controls: Control +@export var mods_controls: ModMenu + +var gamemode: GameMode = GameMode.new() var confirmation_popup_scene: PackedScene = preload("res://Scenes/Menus/confirmation_popup.tscn") var text_input_popup_scene: PackedScene = preload("res://Scenes/Menus/text_input_popup.tscn") var multiplayer_lobby_scene_path: String = "res://Scenes/multiplayer_lobby.tscn" var options_menu_scene: PackedScene = preload("res://Scenes/Menus/options_menu.tscn") +var temp_data: SaveData func _ready() -> void: $ProfileEditor/VBoxContainer/HBoxContainer/DisplayName.text = Data.player_profile.display_name + load_stats(Data.save_data) bg_level.a_star_graph_3d.make_grid() bg_level.a_star_graph_3d.find_path() bg_level.a_star_graph_3d.build_random_maze(50) bg_level.a_star_graph_3d.place_random_towers(20) bg_level.a_star_graph_3d.disable_all_tower_frames() Game.level = bg_level - var new_wave: Dictionary = WaveManager.generate_wave(400, bg_level.enemy_pool) + WaveManager.generate_wave(400, bg_level.enemy_pool, bg_level.enemy_spawns) for spawn: EnemySpawner in bg_level.enemy_spawns: spawn.enemy_died_callback = enemy_died spawn.enemy_reached_goal_callback = damage_goal spawn.enemy_spawned.connect(increase_enemy_count) - spawn.spawn_wave(new_wave) + spawn.spawn_wave() #these exist purely to make the enemies that spawn on the main menu happy @@ -34,10 +43,9 @@ func increase_enemy_count() -> void: func _on_display_name_edit_pressed() -> void: - var popup: TextInputPopup = text_input_popup_scene.instantiate() as TextInputPopup - popup.set_popup(Data.player_profile.display_name, "Display Name", "Confirm") - popup.completed.connect(change_profile_display_name) - add_child(popup) + $ProfileManager.visible = true + $ProfileManager/VBoxContainer/DisplayName/LineEdit.placeholder_text = Data.player_profile.display_name + temp_data = SaveData.load_profile_from_disk() func change_profile_display_name(display_name: String) -> void: @@ -57,20 +65,130 @@ func quit_game(confirmation: bool) -> void: get_tree().quit() -func _on_play_button_pressed() -> void: - Game.level = null - Game.scene_switch_to_singleplayer_lobby() - - func _on_options_button_pressed() -> void: var menu: OptionsMenu = options_menu_scene.instantiate() add_child(menu) -func _on_multiplayer_button_pressed() -> void: - Game.level = null - Game.scene_switch_to_multiplayer_lobby() - - func _on_button_mouse_entered() -> void: $AudioStreamPlayer.play() + + +func start_game() -> void: + Game.level = null + Game.gamemode = gamemode + if gamemode.multiplayer: + Game.scene_switch_to_multiplayer_lobby() + else: + Game.scene_switch_to_singleplayer_lobby() + + +func _on_play_button_pressed() -> void: + gamemode.multiplayer = false + open_game_menu() + + +func _on_multiplayer_button_pressed() -> void: + gamemode.multiplayer = true + open_game_menu() + + +func open_game_menu() -> void: + main_controls.visible = false + game_select_menu.visible = true + + +func _on_back_button_pressed() -> void: + main_controls.visible = true + game_select_menu.visible = false + + +func generate_seed() -> void: + if seed_entry.text != "": + if seed_entry.text.is_valid_int(): + gamemode.rng_seed = int(seed_entry.text) + else: + gamemode.rng_seed = hash(seed_entry.text) + gamemode.seeded = true + else: + gamemode.rng_seed = randi() + + +func _on_standard_button_pressed() -> void: + generate_seed() + gamemode.endless = false + gamemode.daily = false + start_game() + + +func _on_daily_button_pressed() -> void: + gamemode.seed = hash(Time.get_date_string_from_system(true)) + gamemode.endless = false + gamemode.daily = true + start_game() + + +func _on_endless_button_pressed() -> void: + generate_seed() + gamemode.endless = true + gamemode.daily = false + start_game() + + +func _on_changelog_button_pressed() -> void: + main_controls.visible = true + profile_controls.visible = true + $Changelog.queue_free() + + +func load_stats(stats: SaveData) -> void: + $ProfileManager/VBoxContainer/Stats/Wins/Label2.text = str(stats.wins) + $ProfileManager/VBoxContainer/Stats/Losses/Label2.text = str(stats.losses) + $ProfileManager/VBoxContainer/Stats/Winrate/Label2.text = str(int(stats.wins / 20.0)) + $ProfileManager/VBoxContainer/Stats/EngineerCardsBought/Label2.text = str(stats.engineer_cards_bought) + $ProfileManager/VBoxContainer/Stats/MageCardsBought/Label2.text = str(stats.mage_cards_bought) + + +func _on_achievements_back_button_pressed() -> void: + $AchievementsMenu.visible = false + + +func _on_achievements_button_pressed() -> void: + $AchievementsMenu.visible = true + + +func _on_profile_manager_cancel_pressed() -> void: + $ProfileManager.visible = false + + +func _on_profile_manager_confirm_pressed() -> void: + $ProfileManager.visible = false + if $ProfileManager/VBoxContainer/DisplayName/LineEdit.text != "": + change_profile_display_name($ProfileManager/VBoxContainer/DisplayName/LineEdit.text) + $ProfileManager/VBoxContainer/DisplayName/LineEdit.text = "" + Data.save_data = temp_data + Data.save_data.save_to_disc() + + +func _on_unlock_all_pressed() -> void: + temp_data.unlock_all_content() + + +func _on_lock_all_pressed() -> void: + temp_data.lock_all_content() + + +func _on_mods_button_pressed() -> void: + profile_controls.visible = false + main_controls.visible = false + mods_controls.visible = true + + +func _on_cancel_mods_pressed() -> void: + profile_controls.visible = true + main_controls.visible = true + mods_controls.visible = false + + +func _on_confirm_mods_pressed() -> void: + mods_controls.load_mod_list() diff --git a/Scenes/Menus/MainMenu/main_menu.gd.uid b/Scenes/Menus/MainMenu/main_menu.gd.uid new file mode 100644 index 0000000..dc0925d --- /dev/null +++ b/Scenes/Menus/MainMenu/main_menu.gd.uid @@ -0,0 +1 @@ +uid://ci8vq73u23viy diff --git a/Scenes/Menus/MainMenu/main_menu.tscn b/Scenes/Menus/MainMenu/main_menu.tscn index 8069170..94f47e7 100644 --- a/Scenes/Menus/MainMenu/main_menu.tscn +++ b/Scenes/Menus/MainMenu/main_menu.tscn @@ -1,21 +1,75 @@ -[gd_scene load_steps=8 format=3 uid="uid://8yv7excojcg0"] +[gd_scene load_steps=27 format=3 uid="uid://8yv7excojcg0"] -[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://new_theme.tres" id="1_p1cib"] -[ext_resource type="Script" path="res://Scenes/Menus/MainMenu/main_menu.gd" id="2_ivytu"] +[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://UI/new_theme.tres" id="1_p1cib"] +[ext_resource type="Script" uid="uid://ci8vq73u23viy" path="res://Scenes/Menus/MainMenu/main_menu.gd" id="2_ivytu"] [ext_resource type="Texture2D" uid="uid://lvvnrb5jugum" path="res://Assets/Textures/logo_title.png" id="3_8jkeb"] [ext_resource type="PackedScene" uid="uid://y1qa1g3ic8sp" path="res://Worlds/GreenPlanet/Levels/first_level.tscn" id="3_l8r4a"] [ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="5_cwn2i"] +[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="5_u514r"] +[ext_resource type="Texture2D" uid="uid://cdnhe2mi5c5ln" path="res://Assets/Textures/dead_eye_dog.png" id="6_rsxwm"] +[ext_resource type="Texture2D" uid="uid://g00wwrlxxdc5" path="res://Assets/Textures/icon_eye_dog.png" id="7_2sylv"] +[ext_resource type="Texture2D" uid="uid://dj13g1w14mekw" path="res://Assets/Textures/eye_dog.png" id="8_1vnym"] +[ext_resource type="Resource" uid="uid://cvehqh4tt28g7" path="res://Resources/Enemies/dog_fast.tres" id="9_hdp0s"] +[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Resources/Enemies/dog_heavy.tres" id="10_day26"] +[ext_resource type="Resource" uid="uid://boik1gnpl4v0a" path="res://Resources/Enemies/dog_boss.tres" id="11_1mes0"] +[ext_resource type="Resource" uid="uid://dsgkwh3opyqtx" path="res://Resources/Enemies/airenemy.tres" id="12_5vny5"] +[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Resources/Enemies/airenemy2.tres" id="13_xb7gj"] +[ext_resource type="Texture2D" uid="uid://cr1ucbuw3iotp" path="res://Assets/Textures/first_win_achievements.png" id="15_74epv"] +[ext_resource type="Script" uid="uid://cjr0pbqisd51v" path="res://Scenes/Menus/MainMenu/achievements_menu.gd" id="15_sv1gy"] +[ext_resource type="Texture2D" uid="uid://cpa1hl36xfplg" path="res://Assets/Textures/first_scroll_seen.png" id="16_sv1gy"] +[ext_resource type="Texture2D" uid="uid://ctbi3gm1me1t5" path="res://Assets/Textures/unlock_mage_achievement.png" id="17_6t4jd"] +[ext_resource type="Script" uid="uid://cxrm2naq75jo1" path="res://mod_menu.gd" id="19_6t4jd"] [sub_resource type="ViewportTexture" id="ViewportTexture_5u75i"] viewport_path = NodePath("SubViewport") +[sub_resource type="AtlasTexture" id="AtlasTexture_sv1gy"] +resource_local_to_scene = true +atlas = ExtResource("8_1vnym") +region = Rect2(0, 0, 32, 32) + +[sub_resource type="Resource" id="Resource_6t4jd"] +resource_local_to_scene = true +script = ExtResource("5_u514r") +title = "dog" +target_type = 1 +icon = ExtResource("7_2sylv") +death_sprite = ExtResource("6_rsxwm") +sprite = SubResource("AtlasTexture_sv1gy") +spawn_power = 10 +health = 180 +penalty = 10 +movement_speed = 1.2 +spawn_cooldown = 1.2 +common_group = 1 +common_cost = 1 +uncommon_group = 1 +uncommon_cost = 1 +rare_group = 1 +rare_cost = 1 +epic_group = 1 +epic_cost = 1 +legendary_group = 1 +legendary_cost = 1 + [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_2jyua"] random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("5_cwn2i") -stream_0/weight = 1.0 -[node name="MainMenu" type="Control" node_paths=PackedStringArray("bg_level")] +[sub_resource type="AtlasTexture" id="AtlasTexture_y5bw6"] +atlas = ExtResource("15_74epv") +region = Rect2(0, 0, 36, 36) + +[sub_resource type="AtlasTexture" id="AtlasTexture_q26na"] +atlas = ExtResource("16_sv1gy") +region = Rect2(0, 0, 36, 36) + +[sub_resource type="AtlasTexture" id="AtlasTexture_3aj5m"] +atlas = ExtResource("17_6t4jd") +region = Rect2(0, 0, 36, 36) + +[node name="MainMenu" type="Control" node_paths=PackedStringArray("bg_level", "game_select_menu", "main_controls", "seed_entry", "profile_controls", "mods_controls")] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -25,6 +79,11 @@ grow_vertical = 2 theme = ExtResource("1_p1cib") script = ExtResource("2_ivytu") bg_level = NodePath("SubViewport/GridMap") +game_select_menu = NodePath("GameSelectMenu") +main_controls = NodePath("MainControls") +seed_entry = NodePath("GameSelectMenu/VBoxContainer/HBoxContainer2/LineEdit") +profile_controls = NodePath("ProfileEditor") +mods_controls = NodePath("PanelContainer") [node name="TextureRect" type="TextureRect" parent="."] layout_mode = 1 @@ -68,6 +127,10 @@ text = "Play" layout_mode = 2 text = "Multiplayer" +[node name="ModsButton" type="Button" parent="MainControls"] +layout_mode = 2 +text = "Mods" + [node name="OptionsButton" type="Button" parent="MainControls"] layout_mode = 2 text = "Options @@ -97,8 +160,7 @@ layout_mode = 2 [node name="Label" type="Label" parent="ProfileEditor/VBoxContainer"] layout_mode = 2 -text = "Display Name -" +text = "Current Profile" [node name="HBoxContainer" type="HBoxContainer" parent="ProfileEditor/VBoxContainer"] layout_mode = 2 @@ -118,12 +180,13 @@ theme_override_constants/margin_bottom = 4 [node name="DisplayNameEdit" type="Button" parent="ProfileEditor/VBoxContainer/HBoxContainer/MarginContainer"] layout_mode = 2 size_flags_horizontal = 3 -text = "Change" +text = "View Profile" [node name="SubViewport" type="SubViewport" parent="."] size = Vector2i(1920, 1080) [node name="GridMap" parent="SubViewport" instance=ExtResource("3_l8r4a")] +enemy_pool = Array[ExtResource("5_u514r")]([SubResource("Resource_6t4jd"), ExtResource("9_hdp0s"), ExtResource("10_day26"), ExtResource("11_1mes0"), ExtResource("12_5vny5"), ExtResource("13_xb7gj")]) [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] stream = SubResource("AudioStreamRandomizer_2jyua") @@ -133,13 +196,436 @@ bus = &"SFX" transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 100, 0) current = true +[node name="GameSelectMenu" type="PanelContainer" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="GameSelectMenu"] +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="GameSelectMenu/VBoxContainer"] +layout_mode = 2 + +[node name="BackButton" type="Button" parent="GameSelectMenu/VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Back" + +[node name="Title" type="Label" parent="GameSelectMenu/VBoxContainer"] +layout_mode = 2 +text = "Select a game to begin" + +[node name="StandardButton" type="Button" parent="GameSelectMenu/VBoxContainer"] +layout_mode = 2 +text = "Standard (20 waves)" + +[node name="DailyButton" type="Button" parent="GameSelectMenu/VBoxContainer"] +layout_mode = 2 +text = "Daily Challenge" + +[node name="EndlessButton" type="Button" parent="GameSelectMenu/VBoxContainer"] +layout_mode = 2 +text = "Endless" + +[node name="HBoxContainer2" type="HBoxContainer" parent="GameSelectMenu/VBoxContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="GameSelectMenu/VBoxContainer/HBoxContainer2"] +layout_mode = 2 +text = "Seed:" + +[node name="LineEdit" type="LineEdit" parent="GameSelectMenu/VBoxContainer/HBoxContainer2"] +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "leave blank for random game" + +[node name="Changelog" type="PanelContainer" parent="."] +visible = false +layout_mode = 1 +anchors_preset = -1 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 200.0 +offset_top = 100.0 +offset_right = -200.0 +offset_bottom = -100.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="Changelog"] +layout_mode = 2 + +[node name="Label" type="Label" parent="Changelog/VBoxContainer"] +layout_mode = 2 +text = "Changelog" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="ScrollContainer" type="ScrollContainer" parent="Changelog/VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="Changelog/VBoxContainer/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +alignment = 1 + +[node name="Label6" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 + +[node name="Label10" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Added: New Mage card: Ascension" + +[node name="Label13" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Added: New Mechanic card: Overclock" + +[node name="Label11" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Fixed: Interaction text now properly disappears if the wave starts" + +[node name="Label3" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"] +visible = false +layout_mode = 2 +text = "Fixed: Refrigerator tower now applies cold to enemies" + +[node name="Label12" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"] +visible = false +layout_mode = 2 +text = "Fixed: Seed now correctly changes on consecutive random seed runs" + +[node name="Label4" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 + +[node name="Label5" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Balance: Increased Bubble movement speed 1.5 > 2.0" + +[node name="Label7" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Balance: Increased Spike health 9 > 12" + +[node name="Label8" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Balance: Increased Heavy Dog speed 0.8 > 0.9" + +[node name="Label14" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Balance: Decreased Boss Dog speed 1.0 > 0.8" + +[node name="Label15" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Balance: Increased Boss Dog health 1000 > 3000" + +[node name="Label16" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Balance: Increased Boss Dog spawn chance" + +[node name="Label9" type="Label" parent="Changelog/VBoxContainer/ScrollContainer/VBoxContainer"] +layout_mode = 2 +text = "Balance: Adjusted Glue Launcher rarity [Uncommon -> Common]" + +[node name="HBoxContainer" type="HBoxContainer" parent="Changelog/VBoxContainer"] +layout_mode = 2 +alignment = 2 + +[node name="Button" type="Button" parent="Changelog/VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Close" + +[node name="ProfileManager" type="PanelContainer" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="ProfileManager"] +layout_mode = 2 + +[node name="TitleBar" type="Label" parent="ProfileManager/VBoxContainer"] +layout_mode = 2 +text = "Profile Viewer" + +[node name="DisplayName" type="HBoxContainer" parent="ProfileManager/VBoxContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/DisplayName"] +layout_mode = 2 +text = "Display Name" + +[node name="LineEdit" type="LineEdit" parent="ProfileManager/VBoxContainer/DisplayName"] +layout_mode = 2 +size_flags_horizontal = 3 +placeholder_text = "Display name" +alignment = 1 + +[node name="Stats" type="VBoxContainer" parent="ProfileManager/VBoxContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats"] +layout_mode = 2 +text = "Stats" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Wins" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats"] +layout_mode = 2 + +[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/Wins"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Wins" +vertical_alignment = 1 + +[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/Wins"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "0" +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="Losses" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats"] +layout_mode = 2 + +[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/Losses"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Losses" +vertical_alignment = 1 + +[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/Losses"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "0" +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="Winrate" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats"] +layout_mode = 2 + +[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/Winrate"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Winrate (last 20 games)" +vertical_alignment = 1 + +[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/Winrate"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "0" +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="EngineerCardsBought" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats"] +layout_mode = 2 + +[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/EngineerCardsBought"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "plans bought" +vertical_alignment = 1 + +[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/EngineerCardsBought"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "0" +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="MageCardsBought" type="HBoxContainer" parent="ProfileManager/VBoxContainer/Stats"] +layout_mode = 2 + +[node name="Label" type="Label" parent="ProfileManager/VBoxContainer/Stats/MageCardsBought"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "scrolls bought" +vertical_alignment = 1 + +[node name="Label2" type="Label" parent="ProfileManager/VBoxContainer/Stats/MageCardsBought"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "0" +horizontal_alignment = 2 +vertical_alignment = 1 + +[node name="UnlockAll" type="Button" parent="ProfileManager/VBoxContainer"] +layout_mode = 2 +text = "Unlock All Content" + +[node name="LockAll" type="Button" parent="ProfileManager/VBoxContainer"] +layout_mode = 2 +text = "Lock All Content" + +[node name="AchievementsButton" type="Button" parent="ProfileManager/VBoxContainer"] +layout_mode = 2 +text = "View Achievements" + +[node name="Controls" type="HBoxContainer" parent="ProfileManager/VBoxContainer"] +layout_mode = 2 + +[node name="Cancel" type="Button" parent="ProfileManager/VBoxContainer/Controls"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Cancel" + +[node name="Confirm" type="Button" parent="ProfileManager/VBoxContainer/Controls"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Confirm" + +[node name="AchievementsMenu" type="PanelContainer" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("15_sv1gy") + +[node name="VBoxContainer" type="VBoxContainer" parent="AchievementsMenu"] +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="AchievementsMenu/VBoxContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="AchievementsMenu/VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +text = "Achievements" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Button" type="Button" parent="AchievementsMenu/VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Back" + +[node name="GridContainer" type="GridContainer" parent="AchievementsMenu/VBoxContainer"] +layout_mode = 2 +columns = 9 + +[node name="FirstWin" type="Button" parent="AchievementsMenu/VBoxContainer/GridContainer"] +custom_minimum_size = Vector2(140, 140) +layout_mode = 2 +tooltip_text = "What could I possibly have to do to earn this??" +icon = SubResource("AtlasTexture_y5bw6") +icon_alignment = 1 +expand_icon = true + +[node name="SeenMageCard" type="Button" parent="AchievementsMenu/VBoxContainer/GridContainer"] +custom_minimum_size = Vector2(140, 140) +layout_mode = 2 +tooltip_text = "Who would use this old thing anyway?" +icon = SubResource("AtlasTexture_q26na") +icon_alignment = 1 +expand_icon = true + +[node name="UnlockedMage" type="Button" parent="AchievementsMenu/VBoxContainer/GridContainer"] +custom_minimum_size = Vector2(140, 140) +layout_mode = 2 +tooltip_text = "Ok, here me out +" +icon = SubResource("AtlasTexture_3aj5m") +icon_alignment = 1 +expand_icon = true + +[node name="PanelContainer" type="PanelContainer" parent="."] +visible = false +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("19_6t4jd") + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] +layout_mode = 2 + +[node name="Label" type="Label" parent="PanelContainer/VBoxContainer"] +layout_mode = 2 +text = "Mods" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="ScrollContainer" type="ScrollContainer" parent="PanelContainer/VBoxContainer"] +custom_minimum_size = Vector2(800, 400) +layout_mode = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/ScrollContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"] +layout_mode = 2 +alignment = 2 + +[node name="CancelMods" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Confirm" + +[node name="ConfirmMods" type="Button" parent="PanelContainer/VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Confirm" + [connection signal="mouse_entered" from="MainControls/PlayButton" to="." method="_on_button_mouse_entered"] [connection signal="pressed" from="MainControls/PlayButton" to="." method="_on_play_button_pressed"] [connection signal="mouse_entered" from="MainControls/MultiplayerButton" to="." method="_on_button_mouse_entered"] [connection signal="pressed" from="MainControls/MultiplayerButton" to="." method="_on_multiplayer_button_pressed"] +[connection signal="mouse_entered" from="MainControls/ModsButton" to="." method="_on_button_mouse_entered"] +[connection signal="pressed" from="MainControls/ModsButton" to="." method="_on_mods_button_pressed"] [connection signal="mouse_entered" from="MainControls/OptionsButton" to="." method="_on_button_mouse_entered"] [connection signal="pressed" from="MainControls/OptionsButton" to="." method="_on_options_button_pressed"] [connection signal="mouse_entered" from="MainControls/QuitButton" to="." method="_on_button_mouse_entered"] [connection signal="pressed" from="MainControls/QuitButton" to="." method="_on_quit_button_pressed"] [connection signal="mouse_entered" from="ProfileEditor/VBoxContainer/HBoxContainer/MarginContainer/DisplayNameEdit" to="." method="_on_button_mouse_entered"] [connection signal="pressed" from="ProfileEditor/VBoxContainer/HBoxContainer/MarginContainer/DisplayNameEdit" to="." method="_on_display_name_edit_pressed"] +[connection signal="pressed" from="GameSelectMenu/VBoxContainer/HBoxContainer/BackButton" to="." method="_on_back_button_pressed"] +[connection signal="pressed" from="GameSelectMenu/VBoxContainer/StandardButton" to="." method="_on_standard_button_pressed"] +[connection signal="pressed" from="GameSelectMenu/VBoxContainer/DailyButton" to="." method="_on_daily_button_pressed"] +[connection signal="pressed" from="GameSelectMenu/VBoxContainer/EndlessButton" to="." method="_on_endless_button_pressed"] +[connection signal="pressed" from="Changelog/VBoxContainer/HBoxContainer/Button" to="." method="_on_changelog_button_pressed"] +[connection signal="pressed" from="ProfileManager/VBoxContainer/UnlockAll" to="." method="_on_unlock_all_pressed"] +[connection signal="pressed" from="ProfileManager/VBoxContainer/LockAll" to="." method="_on_lock_all_pressed"] +[connection signal="pressed" from="ProfileManager/VBoxContainer/AchievementsButton" to="." method="_on_achievements_button_pressed"] +[connection signal="pressed" from="ProfileManager/VBoxContainer/Controls/Cancel" to="." method="_on_profile_manager_cancel_pressed"] +[connection signal="pressed" from="ProfileManager/VBoxContainer/Controls/Confirm" to="." method="_on_profile_manager_confirm_pressed"] +[connection signal="pressed" from="AchievementsMenu/VBoxContainer/HBoxContainer/Button" to="." method="_on_achievements_back_button_pressed"] +[connection signal="pressed" from="PanelContainer/VBoxContainer/HBoxContainer/CancelMods" to="." method="_on_cancel_mods_pressed"] +[connection signal="pressed" from="PanelContainer/VBoxContainer/HBoxContainer/ConfirmMods" to="." method="_on_confirm_mods_pressed"] diff --git a/Scenes/Menus/PauseMenu/pause_menu.gd.uid b/Scenes/Menus/PauseMenu/pause_menu.gd.uid new file mode 100644 index 0000000..bf27e8e --- /dev/null +++ b/Scenes/Menus/PauseMenu/pause_menu.gd.uid @@ -0,0 +1 @@ +uid://cjyyepxaf4xl8 diff --git a/Scenes/Menus/PauseMenu/pause_menu.tscn b/Scenes/Menus/PauseMenu/pause_menu.tscn index b12ff28..ab80343 100644 --- a/Scenes/Menus/PauseMenu/pause_menu.tscn +++ b/Scenes/Menus/PauseMenu/pause_menu.tscn @@ -1,14 +1,13 @@ [gd_scene load_steps=5 format=3 uid="uid://buvgdem68wtev"] -[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://new_theme.tres" id="1_gaupv"] -[ext_resource type="Script" path="res://Scenes/Menus/PauseMenu/pause_menu.gd" id="2_4pn2l"] +[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://UI/new_theme.tres" id="1_gaupv"] +[ext_resource type="Script" uid="uid://cjyyepxaf4xl8" path="res://Scenes/Menus/PauseMenu/pause_menu.gd" id="2_4pn2l"] [ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="3_0bid7"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_n6ixr"] random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("3_0bid7") -stream_0/weight = 1.0 [node name="Control" type="Control"] layout_mode = 3 diff --git a/Scenes/Menus/alert_popup.tscn b/Scenes/Menus/alert_popup.tscn index fa271ea..1527de3 100644 --- a/Scenes/Menus/alert_popup.tscn +++ b/Scenes/Menus/alert_popup.tscn @@ -1,13 +1,12 @@ [gd_scene load_steps=4 format=3 uid="uid://6a277g802os0"] -[ext_resource type="Script" path="res://Scripts/alert_popup.gd" id="1_cac03"] +[ext_resource type="Script" uid="uid://4uwd40mavufi" path="res://Scripts/alert_popup.gd" id="1_cac03"] [ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="2_2mbtt"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_veol0"] random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("2_2mbtt") -stream_0/weight = 1.0 [node name="Control" type="PanelContainer"] anchors_preset = 8 diff --git a/Scenes/Menus/audio_options.tscn b/Scenes/Menus/audio_options.tscn index 658615c..a792cce 100644 --- a/Scenes/Menus/audio_options.tscn +++ b/Scenes/Menus/audio_options.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://bwc45ogto8thn"] -[ext_resource type="Script" path="res://Scripts/audio_options.gd" id="1_avc0j"] +[ext_resource type="Script" uid="uid://c4ljvgrb81du6" path="res://Scripts/audio_options.gd" id="1_avc0j"] [sub_resource type="ImageTexture" id="ImageTexture_hvvdd"] diff --git a/Scenes/Menus/confirmation_popup.tscn b/Scenes/Menus/confirmation_popup.tscn index 4963523..e1b5804 100644 --- a/Scenes/Menus/confirmation_popup.tscn +++ b/Scenes/Menus/confirmation_popup.tscn @@ -1,13 +1,12 @@ [gd_scene load_steps=4 format=3 uid="uid://f46qh73hrk4y"] -[ext_resource type="Script" path="res://Scripts/confirmation_popup.gd" id="1_x7akt"] +[ext_resource type="Script" uid="uid://bjt72v1wym5ie" path="res://Scripts/confirmation_popup.gd" id="1_x7akt"] [ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="2_3w36n"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_22wuj"] random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("2_3w36n") -stream_0/weight = 1.0 [node name="ConfirmationPopup" type="PanelContainer"] anchors_preset = 8 diff --git a/Scenes/Menus/gameplay_options.tscn b/Scenes/Menus/gameplay_options.tscn index fcb30b3..7fe023c 100644 --- a/Scenes/Menus/gameplay_options.tscn +++ b/Scenes/Menus/gameplay_options.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://bjk7jf0bau5lv"] -[ext_resource type="Script" path="res://Scripts/gameplay_options.gd" id="1_sy26f"] +[ext_resource type="Script" uid="uid://dtrjph756oq1f" path="res://Scripts/gameplay_options.gd" id="1_sy26f"] [sub_resource type="ImageTexture" id="ImageTexture_03x6q"] diff --git a/Scenes/Menus/graphics_options.tscn b/Scenes/Menus/graphics_options.tscn index 1c8f776..0637af1 100644 --- a/Scenes/Menus/graphics_options.tscn +++ b/Scenes/Menus/graphics_options.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://bmd4mawasoc11"] -[ext_resource type="Script" path="res://Scripts/graphics_options.gd" id="1_85rh6"] +[ext_resource type="Script" uid="uid://bpb5c5r1yi8um" path="res://Scripts/graphics_options.gd" id="1_85rh6"] [sub_resource type="ImageTexture" id="ImageTexture_03x6q"] diff --git a/Scenes/Menus/keybind_options.tscn b/Scenes/Menus/keybind_options.tscn index 41f2be4..1cdd8c7 100644 --- a/Scenes/Menus/keybind_options.tscn +++ b/Scenes/Menus/keybind_options.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://bf2nosqt5f82e"] -[ext_resource type="Script" path="res://Scripts/keybind_options.gd" id="1_oxg0p"] +[ext_resource type="Script" uid="uid://cxm67e833baex" path="res://Scripts/keybind_options.gd" id="1_oxg0p"] [node name="Keybinds" type="VBoxContainer"] anchors_preset = 15 diff --git a/Scenes/Menus/loadout_editor.tscn b/Scenes/Menus/loadout_editor.tscn deleted file mode 100644 index 31f0a41..0000000 --- a/Scenes/Menus/loadout_editor.tscn +++ /dev/null @@ -1,32 +0,0 @@ -[gd_scene load_steps=2 format=3 uid="uid://3kcl30sump8c"] - -[ext_resource type="Script" path="res://Scripts/loadout_editor.gd" id="1_y0cit"] - -[node name="Panel" type="Panel"] -anchors_preset = 4 -anchor_top = 0.5 -anchor_bottom = 0.5 -offset_left = 90.0 -offset_top = -142.5 -offset_right = 545.0 -offset_bottom = 142.5 -grow_vertical = 2 -script = ExtResource("1_y0cit") - -[node name="HBoxContainer" type="VBoxContainer" parent="."] -layout_mode = 1 -anchors_preset = 8 -anchor_left = 0.5 -anchor_top = 0.5 -anchor_right = 0.5 -anchor_bottom = 0.5 -offset_left = -20.0 -offset_top = -20.0 -offset_right = 20.0 -offset_bottom = 20.0 -grow_horizontal = 2 -grow_vertical = 2 - -[node name="Label" type="Label" parent="HBoxContainer"] -layout_mode = 2 -text = "Choose Character" diff --git a/Scenes/Menus/multiplayer_lobby.tscn b/Scenes/Menus/multiplayer_lobby.tscn index 8a8b046..23054c9 100644 --- a/Scenes/Menus/multiplayer_lobby.tscn +++ b/Scenes/Menus/multiplayer_lobby.tscn @@ -1,20 +1,19 @@ [gd_scene load_steps=9 format=3 uid="uid://cwvprrvk4l2k0"] -[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://new_theme.tres" id="1_l1spu"] -[ext_resource type="Script" path="res://Scripts/multiplayer_lobby.gd" id="2_nb860"] +[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://UI/new_theme.tres" id="1_l1spu"] +[ext_resource type="Script" uid="uid://cvm4lyhx1uh0w" path="res://Scripts/multiplayer_lobby.gd" id="2_nb860"] [ext_resource type="PackedScene" uid="uid://dpt3kpixawyby" path="res://Scenes/UI/scoreboard.tscn" id="3_f6bia"] [ext_resource type="PackedScene" uid="uid://bvfit0sy2tnw4" path="res://Scenes/Menus/server_form.tscn" id="5_bqbwv"] -[ext_resource type="PackedScene" uid="uid://dqqitmhu66a7d" path="res://Scenes/Menus/CharacterSelect/charselect.tscn" id="5_lvoo2"] [ext_resource type="PackedScene" uid="uid://ddmg342ff2qaq" path="res://Scenes/UI/chatbox.tscn" id="6_wtqwd"] [ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="7_6mhre"] +[ext_resource type="PackedScene" uid="uid://bc6m3cluulpis" path="res://Scenes/Menus/CharacterSelect/character_select.tscn" id="7_kawp7"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_cwnde"] random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("7_6mhre") -stream_0/weight = 1.0 -[node name="multiplayer_lobby" type="Control" node_paths=PackedStringArray("server_form", "scoreboard", "loadout_editor", "chatbox")] +[node name="multiplayer_lobby" type="Control" node_paths=PackedStringArray("server_form", "scoreboard", "chatbox", "ready_button", "audio_player")] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -25,9 +24,11 @@ mouse_filter = 2 theme = ExtResource("1_l1spu") script = ExtResource("2_nb860") server_form = NodePath("ServerForm") +character_select_screen = ExtResource("7_kawp7") scoreboard = NodePath("Scoreboard") -loadout_editor = NodePath("Control") chatbox = NodePath("Chatbox") +ready_button = NodePath("ReadyButton") +audio_player = NodePath("AudioStreamPlayer") [node name="ServerForm" parent="." instance=ExtResource("5_bqbwv")] layout_mode = 1 @@ -46,10 +47,6 @@ offset_left = -472.0 offset_right = -50.0 grow_horizontal = 0 -[node name="Control" parent="." instance=ExtResource("5_lvoo2")] -visible = false -layout_mode = 1 - [node name="ReadyButton" type="Button" parent="."] visible = false layout_mode = 1 @@ -81,4 +78,3 @@ bus = &"SFX" [connection signal="host_button_pressed" from="ServerForm" to="ServerForm" method="set_visible" binds= [false]] [connection signal="mouse_entered" from="ReadyButton" to="." method="_on_button_mouse_entered"] [connection signal="pressed" from="ReadyButton" to="." method="ready_player"] -[connection signal="pressed" from="ReadyButton" to="ReadyButton" method="set_visible" binds= [false]] diff --git a/Scenes/Menus/options_menu.tscn b/Scenes/Menus/options_menu.tscn index 5b81ba5..1594c65 100644 --- a/Scenes/Menus/options_menu.tscn +++ b/Scenes/Menus/options_menu.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=8 format=3 uid="uid://clulh7v8c7h85"] -[ext_resource type="Script" path="res://Scripts/options_menu.gd" id="1_bievw"] +[ext_resource type="Script" uid="uid://48rvmybi18wj" path="res://Scripts/options_menu.gd" id="1_bievw"] [ext_resource type="PackedScene" uid="uid://bjk7jf0bau5lv" path="res://Scenes/Menus/gameplay_options.tscn" id="3_25wuw"] [ext_resource type="PackedScene" uid="uid://bmd4mawasoc11" path="res://Scenes/Menus/graphics_options.tscn" id="4_ckcvq"] [ext_resource type="PackedScene" uid="uid://bf2nosqt5f82e" path="res://Scenes/Menus/keybind_options.tscn" id="5_4k33c"] @@ -11,7 +11,6 @@ random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("6_hhyef") -stream_0/weight = 1.0 [node name="OptionsMenu" type="PanelContainer" node_paths=PackedStringArray("gameplay", "graphics", "keybinds")] anchors_preset = 15 @@ -34,21 +33,26 @@ layout_mode = 2 [node name="TabContainer" type="TabContainer" parent="VBoxContainer"] layout_mode = 2 size_flags_vertical = 3 +current_tab = 3 [node name="Gameplay" parent="VBoxContainer/TabContainer" instance=ExtResource("3_25wuw")] +visible = false layout_mode = 2 +metadata/_tab_index = 0 [node name="Graphics" parent="VBoxContainer/TabContainer" instance=ExtResource("4_ckcvq")] visible = false layout_mode = 2 +metadata/_tab_index = 1 [node name="Keybinds" parent="VBoxContainer/TabContainer" instance=ExtResource("5_4k33c")] visible = false layout_mode = 2 +metadata/_tab_index = 2 [node name="Audio" parent="VBoxContainer/TabContainer" instance=ExtResource("6_4vs8p")] -visible = false layout_mode = 2 +metadata/_tab_index = 3 [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] layout_mode = 2 diff --git a/Scenes/Menus/server_form.tscn b/Scenes/Menus/server_form.tscn index 02a6b53..a59bcda 100644 --- a/Scenes/Menus/server_form.tscn +++ b/Scenes/Menus/server_form.tscn @@ -1,15 +1,15 @@ [gd_scene load_steps=4 format=3 uid="uid://bvfit0sy2tnw4"] -[ext_resource type="Script" path="res://Scripts/server_form.gd" id="1_43oaq"] +[ext_resource type="Script" uid="uid://dyyhbd2pbfygi" path="res://Scripts/server_form.gd" id="1_43oaq"] [ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="2_hirre"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_3o7ni"] random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("2_hirre") -stream_0/weight = 1.0 -[node name="ServerForm" type="PanelContainer"] +[node name="ServerForm" type="PanelContainer" node_paths=PackedStringArray("ip_entry", "port_entry", "host_button", "join_button", "ip_field", "port_field", "players_field", "start_button")] +custom_minimum_size = Vector2(500, 0) anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 @@ -22,54 +22,96 @@ offset_bottom = 85.5 grow_horizontal = 2 grow_vertical = 2 script = ExtResource("1_43oaq") +ip_entry = NodePath("VBoxContainer/IPField/ServerIP") +port_entry = NodePath("VBoxContainer/PortField/ServerPort") +host_button = NodePath("VBoxContainer/ModeContainer/HostButton") +join_button = NodePath("VBoxContainer/ModeContainer/JoinButton") +ip_field = NodePath("VBoxContainer/IPField") +port_field = NodePath("VBoxContainer/PortField") +players_field = NodePath("VBoxContainer/PlayersField") +start_button = NodePath("VBoxContainer/StartButton") [node name="VBoxContainer" type="VBoxContainer" parent="."] layout_mode = 2 alignment = 1 -[node name="Button" type="Button" parent="VBoxContainer"] +[node name="BackButton" type="Button" parent="VBoxContainer"] layout_mode = 2 text = "Back" -[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +[node name="ModeContainer" type="VBoxContainer" parent="VBoxContainer"] layout_mode = 2 -[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer"] +[node name="HostButton" type="Button" parent="VBoxContainer/ModeContainer"] +layout_mode = 2 +text = "Host Game" + +[node name="JoinButton" type="Button" parent="VBoxContainer/ModeContainer"] +layout_mode = 2 +text = "Join Game" + +[node name="IPField" type="HBoxContainer" parent="VBoxContainer"] +visible = false +layout_mode = 2 + +[node name="Label" type="Label" parent="VBoxContainer/IPField"] layout_mode = 2 text = "Server IP:" -[node name="ServerIP" type="LineEdit" parent="VBoxContainer/HBoxContainer"] +[node name="ServerIP" type="LineEdit" parent="VBoxContainer/IPField"] layout_mode = 2 size_flags_horizontal = 3 placeholder_text = "localhost" -[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer"] +[node name="PortField" type="HBoxContainer" parent="VBoxContainer"] +visible = false layout_mode = 2 -[node name="Label" type="Label" parent="VBoxContainer/HBoxContainer2"] +[node name="Label" type="Label" parent="VBoxContainer/PortField"] layout_mode = 2 text = "Server Port:" -[node name="ServerPort" type="LineEdit" parent="VBoxContainer/HBoxContainer2"] +[node name="ServerPort" type="LineEdit" parent="VBoxContainer/PortField"] layout_mode = 2 size_flags_horizontal = 3 placeholder_text = "default" -[node name="Connect" type="Button" parent="VBoxContainer"] +[node name="PlayersField" type="HBoxContainer" parent="VBoxContainer"] +visible = false layout_mode = 2 -text = "Connect" -[node name="Host" type="Button" parent="VBoxContainer"] +[node name="Label" type="Label" parent="VBoxContainer/PlayersField"] layout_mode = 2 -text = "Host" +text = "Max Players" + +[node name="HSlider" type="HSlider" parent="VBoxContainer/PlayersField"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 1 +max_value = 4.0 +value = 4.0 +tick_count = 5 +ticks_on_borders = true + +[node name="Label2" type="Label" parent="VBoxContainer/PlayersField"] +layout_mode = 2 +text = "4" + +[node name="StartButton" type="Button" parent="VBoxContainer"] +visible = false +layout_mode = 2 +text = "Start" [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] stream = SubResource("AudioStreamRandomizer_3o7ni") bus = &"SFX" -[connection signal="mouse_entered" from="VBoxContainer/Button" to="." method="_on_button_mouse_entered"] -[connection signal="pressed" from="VBoxContainer/Button" to="." method="_on_button_pressed"] -[connection signal="mouse_entered" from="VBoxContainer/Connect" to="." method="_on_button_mouse_entered"] -[connection signal="pressed" from="VBoxContainer/Connect" to="." method="_on_connect_pressed"] -[connection signal="mouse_entered" from="VBoxContainer/Host" to="." method="_on_button_mouse_entered"] -[connection signal="pressed" from="VBoxContainer/Host" to="." method="_on_host_pressed"] +[connection signal="mouse_entered" from="VBoxContainer/BackButton" to="." method="_on_button_mouse_entered"] +[connection signal="pressed" from="VBoxContainer/BackButton" to="." method="_on_button_pressed"] +[connection signal="mouse_entered" from="VBoxContainer/ModeContainer/HostButton" to="." method="_on_button_mouse_entered"] +[connection signal="pressed" from="VBoxContainer/ModeContainer/HostButton" to="." method="_on_host_button_pressed"] +[connection signal="mouse_entered" from="VBoxContainer/ModeContainer/JoinButton" to="." method="_on_button_mouse_entered"] +[connection signal="pressed" from="VBoxContainer/ModeContainer/JoinButton" to="." method="_on_join_button_pressed"] +[connection signal="value_changed" from="VBoxContainer/PlayersField/HSlider" to="." method="_on_h_slider_value_changed"] +[connection signal="mouse_entered" from="VBoxContainer/StartButton" to="." method="_on_button_mouse_entered"] +[connection signal="pressed" from="VBoxContainer/StartButton" to="." method="_on_start_button_pressed"] diff --git a/Scenes/Menus/singleplayer_lobby.tscn b/Scenes/Menus/singleplayer_lobby.tscn index 913b9a6..b036526 100644 --- a/Scenes/Menus/singleplayer_lobby.tscn +++ b/Scenes/Menus/singleplayer_lobby.tscn @@ -1,19 +1,17 @@ -[gd_scene load_steps=8 format=3 uid="uid://176c6fuhg5ic"] +[gd_scene load_steps=7 format=3 uid="uid://176c6fuhg5ic"] -[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://new_theme.tres" id="1_2aur6"] -[ext_resource type="PackedScene" uid="uid://dpt3kpixawyby" path="res://Scenes/UI/scoreboard.tscn" id="1_423py"] -[ext_resource type="Script" path="res://Scripts/singleplayer_lobby.gd" id="1_nd17k"] +[ext_resource type="Theme" uid="uid://b6a0ip4p72tgx" path="res://UI/new_theme.tres" id="1_2aur6"] +[ext_resource type="Script" uid="uid://e5gf7hd5jsw3" path="res://Scripts/singleplayer_lobby.gd" id="1_nd17k"] [ext_resource type="PackedScene" uid="uid://ddmg342ff2qaq" path="res://Scenes/UI/chatbox.tscn" id="3_l8xy3"] -[ext_resource type="PackedScene" uid="uid://dqqitmhu66a7d" path="res://Scenes/Menus/CharacterSelect/charselect.tscn" id="5_vg5y0"] [ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="6_6nu57"] +[ext_resource type="PackedScene" uid="uid://bc6m3cluulpis" path="res://Scenes/Menus/CharacterSelect/character_select.tscn" id="6_ltm04"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_g5har"] random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("6_6nu57") -stream_0/weight = 1.0 -[node name="singleplayer_lobby" type="Control" node_paths=PackedStringArray("scoreboard", "loadout_editor", "chatbox", "seed_entry", "ready_button", "daily_button")] +[node name="singleplayer_lobby" type="Control" node_paths=PackedStringArray("chatbox", "audio_player")] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -23,72 +21,13 @@ grow_vertical = 2 mouse_filter = 2 theme = ExtResource("1_2aur6") script = ExtResource("1_nd17k") -scoreboard = NodePath("Scoreboard") -loadout_editor = NodePath("Control") +character_select_screen = ExtResource("6_ltm04") chatbox = NodePath("Chatbox") -seed_entry = NodePath("LineEdit") -ready_button = NodePath("ReadyButton") -daily_button = NodePath("DailyButton") - -[node name="Scoreboard" parent="." instance=ExtResource("1_423py")] -visible = false -layout_mode = 1 -anchors_preset = -1 -anchor_left = 1.0 -anchor_right = 1.0 -offset_left = -472.0 -offset_right = -50.0 -grow_horizontal = 0 - -[node name="ReadyButton" type="Button" parent="."] -visible = false -layout_mode = 1 -anchors_preset = -1 -anchor_left = 1.0 -anchor_top = 0.5 -anchor_right = 1.0 -anchor_bottom = 0.5 -offset_left = -81.0 -offset_top = 311.0 -offset_right = -240.0 -offset_bottom = 19.0 -grow_horizontal = 0 -grow_vertical = 2 -text = "Ready" +audio_player = NodePath("AudioStreamPlayer") [node name="Chatbox" parent="." instance=ExtResource("3_l8xy3")] layout_mode = 1 -[node name="Control" parent="." instance=ExtResource("5_vg5y0")] -visible = false -layout_mode = 1 - [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] stream = SubResource("AudioStreamRandomizer_g5har") bus = &"SFX" - -[node name="LineEdit" type="LineEdit" parent="."] -visible = false -layout_mode = 0 -offset_right = 69.0625 -offset_bottom = 23.0 -placeholder_text = "seed" - -[node name="DailyButton" type="Button" parent="."] -visible = false -layout_mode = 1 -anchors_preset = 3 -anchor_left = 1.0 -anchor_top = 1.0 -anchor_right = 1.0 -anchor_bottom = 1.0 -offset_left = -276.0 -offset_top = -40.0 -grow_horizontal = 0 -grow_vertical = 0 -text = "Daily challenge" - -[connection signal="mouse_entered" from="ReadyButton" to="." method="_on_button_mouse_entered"] -[connection signal="pressed" from="ReadyButton" to="Scoreboard" method="set_player_ready_state" binds= [1, true]] -[connection signal="mouse_entered" from="DailyButton" to="." method="_on_button_mouse_entered"] -[connection signal="pressed" from="DailyButton" to="." method="_on_daily_button_pressed"] diff --git a/Scenes/Menus/text_input_popup.tscn b/Scenes/Menus/text_input_popup.tscn index f0e1028..a82dd51 100644 --- a/Scenes/Menus/text_input_popup.tscn +++ b/Scenes/Menus/text_input_popup.tscn @@ -1,13 +1,12 @@ [gd_scene load_steps=4 format=3 uid="uid://dccsyymk4uko6"] -[ext_resource type="Script" path="res://Scripts/text_input_popup.gd" id="1_ve6eb"] +[ext_resource type="Script" uid="uid://b0asb3pmu8pqb" path="res://Scripts/text_input_popup.gd" id="1_ve6eb"] [ext_resource type="AudioStream" uid="uid://cp6ph4ra7u5rk" path="res://Scenes/UI/drop_003.ogg" id="2_mec4u"] [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_w0x7l"] random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("2_mec4u") -stream_0/weight = 1.0 [node name="TextInputPopup" type="PanelContainer"] anchors_preset = 8 diff --git a/Scenes/Projectiles/explosive_projectile.tscn b/Scenes/Projectiles/explosive_projectile.tscn index 12a9c8d..9ecf17e 100644 --- a/Scenes/Projectiles/explosive_projectile.tscn +++ b/Scenes/Projectiles/explosive_projectile.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=8 format=3 uid="uid://7f4dfphgiswr"] [ext_resource type="PackedScene" uid="uid://c8qjlgam6wuo0" path="res://Scenes/Projectiles/projectile.tscn" id="1_136w8"] -[ext_resource type="Script" path="res://Scripts/Projectiles/explosive_projectile.gd" id="2_3adg2"] +[ext_resource type="Script" uid="uid://cubn2iabwg3" path="res://Scripts/Projectiles/explosive_projectile.gd" id="2_3adg2"] [sub_resource type="Gradient" id="Gradient_ia31t"] offsets = PackedFloat32Array(0, 0.3, 0.681818, 1) diff --git a/Scenes/Projectiles/homing_projectile.tscn b/Scenes/Projectiles/homing_projectile.tscn index 60af3b2..cb36d2f 100644 --- a/Scenes/Projectiles/homing_projectile.tscn +++ b/Scenes/Projectiles/homing_projectile.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://di2wwvkv4wov1"] [ext_resource type="PackedScene" uid="uid://7f4dfphgiswr" path="res://Scenes/Projectiles/explosive_projectile.tscn" id="1_it3tw"] -[ext_resource type="Script" path="res://Scripts/Projectiles/homing_projectile.gd" id="2_etdxg"] +[ext_resource type="Script" uid="uid://dwr38fukjqu7r" path="res://Scripts/Projectiles/homing_projectile.gd" id="2_etdxg"] [node name="HomingProjectile" instance=ExtResource("1_it3tw")] script = ExtResource("2_etdxg") diff --git a/Scenes/Projectiles/projectile.tscn b/Scenes/Projectiles/projectile.tscn index 1404b21..211e316 100644 --- a/Scenes/Projectiles/projectile.tscn +++ b/Scenes/Projectiles/projectile.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://c8qjlgam6wuo0"] -[ext_resource type="Script" path="res://Scripts/Projectiles/projectile.gd" id="1_k4v4y"] +[ext_resource type="Script" uid="uid://bifvnevs5y4nj" path="res://Scripts/Projectiles/projectile.gd" id="1_k4v4y"] [sub_resource type="SphereShape3D" id="SphereShape3D_fgj4t"] radius = 0.2 diff --git a/Scenes/Projectiles/status_applying_projectile.tscn b/Scenes/Projectiles/status_applying_projectile.tscn index 77e9bca..05fb2ee 100644 --- a/Scenes/Projectiles/status_applying_projectile.tscn +++ b/Scenes/Projectiles/status_applying_projectile.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://beq6rn0babncg"] [ext_resource type="PackedScene" uid="uid://7f4dfphgiswr" path="res://Scenes/Projectiles/explosive_projectile.tscn" id="1_atrjq"] -[ext_resource type="Script" path="res://Scripts/Projectiles/status_applying_projectile.gd" id="2_4p44n"] +[ext_resource type="Script" uid="uid://ba2aqn82wo747" path="res://Scripts/Projectiles/status_applying_projectile.gd" id="2_4p44n"] [node name="StatusApplyingProjectile" instance=ExtResource("1_atrjq")] script = ExtResource("2_4p44n") diff --git a/Scenes/ShopStand/shop_stand.gd b/Scenes/ShopStand/shop_stand.gd index 721b757..8054ee6 100644 --- a/Scenes/ShopStand/shop_stand.gd +++ b/Scenes/ShopStand/shop_stand.gd @@ -24,10 +24,14 @@ func close() -> void: func randomize_cards() -> void: + #TODO: use seeded randomness + var random_faction: int = randi_range(1, Card.Faction.values().size() - 1) var cheap_cards: Array[Card] = [] var medium_cards: Array[Card] = [] var pricey_cards: Array[Card] = [] for card: Card in Data.cards: + if card.faction != random_faction: + continue if card.rarity == Data.Rarity.UNCOMMON or card.rarity == Data.Rarity.RARE: cheap_cards.append(card) if card.rarity == Data.Rarity.RARE or card.rarity == Data.Rarity.EPIC: @@ -35,27 +39,46 @@ func randomize_cards() -> void: if card.rarity == Data.Rarity.EPIC or card.rarity == Data.Rarity.LEGENDARY: pricey_cards.append(card) + var chosen_card: Card = null for x: int in 3: - var chosen_card: Card = cheap_cards[Game.randi_in_range(12 * cards_generated, 0, cheap_cards.size() - 1)] + if cheap_cards.size() > 0: + chosen_card = cheap_cards[Game.randi_in_range(12 * cards_generated, 0, cheap_cards.size() - 1)] cards_generated += 1 - cards[x].set_card(chosen_card) - cards[x].view_tower() - choice_buttons[x].press_cost = price_dict[chosen_card.rarity] - choice_buttons[x].hover_text = "Spend $" + str(choice_buttons[x].press_cost) + " to acquire " + chosen_card.display_name + "?" + if chosen_card != null: + cards[x].set_card(chosen_card) + cards[x].view_tower() + choice_buttons[x].press_cost = price_dict[chosen_card.rarity] + choice_buttons[x].hover_text = "Spend $" + str(choice_buttons[x].press_cost) + " to acquire " + chosen_card.display_name + "?" + if chosen_card.faction == Card.Faction.MAGE: + Data.save_data.saw_mage_card_in_shop() for x: int in 2: - var chosen_card: Card = medium_cards[Game.randi_in_range(9 * cards_generated, 0, medium_cards.size() - 1)] + if medium_cards.size() > 0: + chosen_card = medium_cards[Game.randi_in_range(9 * cards_generated, 0, medium_cards.size() - 1)] + elif cheap_cards.size() > 0: + chosen_card = cheap_cards[Game.randi_in_range(9 * cards_generated, 0, cheap_cards.size() - 1)] cards_generated += 1 - cards[x+3].set_card(chosen_card) - cards[x+3].view_tower() - choice_buttons[x+3].press_cost = price_dict[chosen_card.rarity] - choice_buttons[x+3].hover_text = "Spend $" + str(choice_buttons[x+3].press_cost) + " to acquire " + chosen_card.display_name + "?" + if chosen_card != null: + cards[x+3].set_card(chosen_card) + cards[x+3].view_tower() + choice_buttons[x+3].press_cost = price_dict[chosen_card.rarity] + choice_buttons[x+3].hover_text = "Spend $" + str(choice_buttons[x+3].press_cost) + " to acquire " + chosen_card.display_name + "?" + if chosen_card.faction == Card.Faction.MAGE: + Data.save_data.saw_mage_card_in_shop() for x: int in 1: - var chosen_card: Card = pricey_cards[Game.randi_in_range(50 * cards_generated, 0, pricey_cards.size() - 1)] + if pricey_cards.size() > 0: + chosen_card = pricey_cards[Game.randi_in_range(50 * cards_generated, 0, pricey_cards.size() - 1)] + elif medium_cards.size() > 0: + chosen_card = medium_cards[Game.randi_in_range(50 * cards_generated, 0, medium_cards.size() - 1)] + elif cheap_cards.size() > 0: + chosen_card = cheap_cards[Game.randi_in_range(50 * cards_generated, 0, cheap_cards.size() - 1)] cards_generated += 1 - cards[x+5].set_card(chosen_card) - cards[x+5].view_tower() - choice_buttons[x+5].press_cost = price_dict[chosen_card.rarity] - choice_buttons[x+5].hover_text = "Spend $" + str(choice_buttons[x+5].press_cost) + " to acquire " + chosen_card.display_name + "?" + if chosen_card != null: + cards[x+5].set_card(chosen_card) + cards[x+5].view_tower() + choice_buttons[x+5].press_cost = price_dict[chosen_card.rarity] + choice_buttons[x+5].hover_text = "Spend $" + str(choice_buttons[x+5].press_cost) + " to acquire " + chosen_card.display_name + "?" + if chosen_card.faction == Card.Faction.MAGE: + Data.save_data.saw_mage_card_in_shop() for x: CollisionShape3D in choice_colliders: x.set_deferred("disabled", false) for x: Sprite3D in choice_sprites: @@ -67,6 +90,10 @@ func retrieve_card(i: int, callback: Hero) -> void: choice_colliders[i].disabled = true choice_sprites[i].set_visible(false) var card: Card = cards[i].stats + if card.faction == Card.Faction.ENGINEER: + Data.save_data.bought_engineer_card() + if card.faction == Card.Faction.MAGE: + Data.save_data.bought_mage_card() callback.add_card(card) #var item: ItemCard = item_card_scene.instantiate() as ItemCard #item.card = card diff --git a/Scenes/ShopStand/shop_stand.gd.uid b/Scenes/ShopStand/shop_stand.gd.uid new file mode 100644 index 0000000..1752597 --- /dev/null +++ b/Scenes/ShopStand/shop_stand.gd.uid @@ -0,0 +1 @@ +uid://colk6js4wet11 diff --git a/Scenes/ShopStand/shop_stand.tscn b/Scenes/ShopStand/shop_stand.tscn index 2fbfca2..e5c1090 100644 --- a/Scenes/ShopStand/shop_stand.tscn +++ b/Scenes/ShopStand/shop_stand.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=16 format=3 uid="uid://7g3jev3v6d3l"] -[ext_resource type="Script" path="res://Scenes/ShopStand/shop_stand.gd" id="1_4in53"] -[ext_resource type="Script" path="res://Scripts/interact_button.gd" id="1_x8sts"] +[ext_resource type="Script" uid="uid://colk6js4wet11" path="res://Scenes/ShopStand/shop_stand.gd" id="1_4in53"] +[ext_resource type="Script" uid="uid://dkfswql8ui0bt" path="res://Scripts/interact_button.gd" id="1_x8sts"] [ext_resource type="PackedScene" uid="uid://dsasunnk47n8o" path="res://Scenes/item_card.tscn" id="2_qh00w"] [ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://Scenes/UI/card_hand.tscn" id="3_u7x2f"] @@ -71,6 +71,7 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.08327, 0.835364, 0.235621) collision_layer = 16 collision_mask = 0 script = ExtResource("1_x8sts") +hover_text = "[center]#Interact# to [do thing]" [node name="CollisionShape3D" type="CollisionShape3D" parent="InteractButton"] shape = SubResource("BoxShape3D_3r1g8") @@ -82,6 +83,7 @@ collision_layer = 16 collision_mask = 0 script = ExtResource("1_x8sts") button_press_value = 1 +hover_text = "[center]#Interact# to [do thing]" [node name="CollisionShape3D2" type="CollisionShape3D" parent="InteractButton2"] shape = SubResource("BoxShape3D_3r1g8") @@ -93,6 +95,7 @@ collision_layer = 16 collision_mask = 0 script = ExtResource("1_x8sts") button_press_value = 2 +hover_text = "[center]#Interact# to [do thing]" [node name="CollisionShape3D3" type="CollisionShape3D" parent="InteractButton3"] shape = SubResource("BoxShape3D_3r1g8") @@ -104,6 +107,7 @@ collision_layer = 16 collision_mask = 0 script = ExtResource("1_x8sts") button_press_value = 5 +hover_text = "[center]#Interact# to [do thing]" [node name="CollisionShape3D4" type="CollisionShape3D" parent="InteractButton4"] shape = SubResource("BoxShape3D_3r1g8") @@ -115,6 +119,7 @@ collision_layer = 16 collision_mask = 0 script = ExtResource("1_x8sts") button_press_value = 4 +hover_text = "[center]#Interact# to [do thing]" [node name="CollisionShape3D5" type="CollisionShape3D" parent="InteractButton5"] shape = SubResource("BoxShape3D_3r1g8") @@ -126,6 +131,7 @@ collision_layer = 16 collision_mask = 0 script = ExtResource("1_x8sts") button_press_value = 3 +hover_text = "[center]#Interact# to [do thing]" [node name="CollisionShape3D6" type="CollisionShape3D" parent="InteractButton6"] shape = SubResource("BoxShape3D_3r1g8") diff --git a/Scenes/Shredder/shredder.gd.uid b/Scenes/Shredder/shredder.gd.uid new file mode 100644 index 0000000..7ca66ea --- /dev/null +++ b/Scenes/Shredder/shredder.gd.uid @@ -0,0 +1 @@ +uid://cu11aknhwt2qc diff --git a/Scenes/Shredder/shredder.tscn b/Scenes/Shredder/shredder.tscn index 3a57140..122a0c3 100644 --- a/Scenes/Shredder/shredder.tscn +++ b/Scenes/Shredder/shredder.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=7 format=3 uid="uid://c2avjln5vmr0y"] -[ext_resource type="Script" path="res://Scenes/Shredder/shredder.gd" id="1_diuqd"] -[ext_resource type="Script" path="res://Scripts/interact_button.gd" id="1_toyr6"] +[ext_resource type="Script" uid="uid://cu11aknhwt2qc" path="res://Scenes/Shredder/shredder.gd" id="1_diuqd"] +[ext_resource type="Script" uid="uid://dkfswql8ui0bt" path="res://Scripts/interact_button.gd" id="1_toyr6"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_waypt"] albedo_color = Color(0.909804, 0.113725, 0.113725, 1) diff --git a/dissolve.tres b/Scenes/TowerBase/dissolve.tres similarity index 96% rename from dissolve.tres rename to Scenes/TowerBase/dissolve.tres index 36c8495..530378e 100644 --- a/dissolve.tres +++ b/Scenes/TowerBase/dissolve.tres @@ -1,11 +1,11 @@ [gd_resource type="VisualShader" load_steps=17 format=3 uid="uid://dsi0ofa74tfc4"] -[ext_resource type="Texture2D" uid="uid://bmor4v4j7krgh" path="res://Scenes/TowerBase/funboxtex.png" id="1_h83w8"] -[ext_resource type="Texture2D" uid="uid://c4ytjp05u7auv" path="res://noisetex.tres" id="2_pgkht"] +[ext_resource type="Texture2D" uid="uid://bmor4v4j7krgh" path="res://Scenes/TowerBase/funboxtex.png" id="1_kau30"] +[ext_resource type="Texture2D" uid="uid://c4ytjp05u7auv" path="res://noisetex.tres" id="2_ow168"] [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_ugjxq"] source = 5 -texture = ExtResource("1_h83w8") +texture = ExtResource("1_kau30") [sub_resource type="VisualShaderNodeTexture2DParameter" id="VisualShaderNodeTexture2DParameter_hqcdo"] parameter_name = "Texture2DParameter" @@ -64,7 +64,7 @@ operator = 1 [sub_resource type="VisualShaderNodeTexture" id="VisualShaderNodeTexture_4c6mr"] output_port_for_preview = 0 -texture = ExtResource("2_pgkht") +texture = ExtResource("2_ow168") [sub_resource type="VisualShaderNodeFloatOp" id="VisualShaderNodeFloatOp_v8kd6"] output_port_for_preview = 0 @@ -80,7 +80,7 @@ render_mode blend_mix, depth_draw_always, cull_back, diffuse_lambert, specular_s uniform sampler2D Texture2DParameter : source_color, filter_nearest; uniform sampler2D tex_frg_7; -instance uniform float Float = 1; +instance uniform float Float = 1.0; instance uniform vec4 Color : source_color = vec4(0.000000, 1.000000, 0.000000, 0.752941); diff --git a/Scenes/TowerBase/funbox.glb.import b/Scenes/TowerBase/funbox.glb.import index b22f735..86cbe57 100644 --- a/Scenes/TowerBase/funbox.glb.import +++ b/Scenes/TowerBase/funbox.glb.import @@ -17,6 +17,8 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true @@ -28,6 +30,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={ "meshes": { diff --git a/Scenes/TowerBase/textmesh.res.depren b/Scenes/TowerBase/textmesh.res.depren new file mode 100644 index 0000000..49d1597 Binary files /dev/null and b/Scenes/TowerBase/textmesh.res.depren differ diff --git a/Scenes/TowerBase/tower_base.tscn b/Scenes/TowerBase/tower_base.tscn index 477a8a8..3218ebd 100644 --- a/Scenes/TowerBase/tower_base.tscn +++ b/Scenes/TowerBase/tower_base.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=10 format=3 uid="uid://ddbbwx0yy16lh"] -[ext_resource type="Script" path="res://Scripts/tower_base.gd" id="1_kalmg"] -[ext_resource type="Script" path="res://Scripts/inventory.gd" id="2_m0oxx"] +[ext_resource type="Script" uid="uid://si58bm4r7r2i" path="res://Scripts/tower_base.gd" id="1_kalmg"] +[ext_resource type="Script" uid="uid://do24iuot0j7d7" path="res://Scripts/inventory.gd" id="2_m0oxx"] [ext_resource type="ArrayMesh" uid="uid://cr83c74ys8rll" path="res://Scenes/TowerBase/textmesh.res" id="3_ly30x"] [ext_resource type="Texture2D" uid="uid://ba85u6i558x4w" path="res://Assets/Textures/minimap_node.png" id="4_lbvtm"] @@ -20,7 +20,7 @@ albedo_color = Color(0.462745, 0.439216, 0.415686, 1) [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_t32n1"] albedo_color = Color(0.462745, 0.439216, 0.415686, 1) -[node name="Node3D" type="StaticBody3D" node_paths=PackedStringArray("inventory", "block", "collider", "minimap_icon", "north_icon", "south_icon", "east_icon", "west_icon", "north_mesh", "south_mesh", "east_mesh", "west_mesh", "north_collider", "south_collider", "east_collider", "west_collider")] +[node name="Node3D" type="StaticBody3D" node_paths=PackedStringArray("inventory", "block", "collider", "minimap_icon", "north_icon", "south_icon", "east_icon", "west_icon", "north_mesh", "south_mesh", "east_mesh", "west_mesh", "north_collider", "south_collider", "east_collider", "west_collider") groups=["TowerBases"]] collision_layer = 17 script = ExtResource("1_kalmg") inventory = NodePath("Inventory") diff --git a/Scenes/Towers/area_tower.tscn b/Scenes/Towers/area_tower.tscn new file mode 100644 index 0000000..0e3428f --- /dev/null +++ b/Scenes/Towers/area_tower.tscn @@ -0,0 +1,67 @@ +[gd_scene load_steps=8 format=3 uid="uid://kioik38usbqj"] + +[ext_resource type="Script" uid="uid://ct24fjmc1ptd6" path="res://Towers/tower.gd" id="1_6jyob"] +[ext_resource type="Script" uid="uid://rvnacmxsrh4w" path="res://Scripts/target_finder.gd" id="2_e7wkg"] +[ext_resource type="Script" uid="uid://duvfverjdqodj" path="res://Scripts/Affectors/area_affector.gd" id="3_u832u"] + +[sub_resource type="Animation" id="Animation_vk4a8"] +resource_name = "shoot" + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_cebsq"] +_data = { +&"shoot": SubResource("Animation_vk4a8") +} + +[sub_resource type="BoxMesh" id="BoxMesh_42byu"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1ucq4"] +transparency = 1 +cull_mode = 1 +shading_mode = 0 +albedo_color = Color(1, 0, 0.415686, 0.223529) + +[node name="Tower" type="Node3D" node_paths=PackedStringArray("target_finder", "affector", "animator", "pitch_model", "yaw_model", "range_indicator", "audio_player")] +script = ExtResource("1_6jyob") +target_finder = NodePath("TargetFinder") +affector = NodePath("AreaAffector") +animator = NodePath("AnimationPlayer") +pitch_model = NodePath("Pitch") +yaw_model = NodePath("Yaw") +range_indicator = NodePath("CSGSphere3D") +audio_player = NodePath("Yaw/AudioStreamPlayer3D") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_cebsq") +} + +[node name="Pitch" type="MeshInstance3D" parent="."] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) +mesh = SubResource("BoxMesh_42byu") + +[node name="Yaw" type="MeshInstance3D" parent="."] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) +mesh = SubResource("BoxMesh_42byu") + +[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="Yaw"] +bus = &"SFX" + +[node name="MinimapIcon" type="Sprite3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0) +layers = 4 + +[node name="CSGSphere3D" type="CSGSphere3D" parent="."] +visible = false +layers = 5 +radius = 10.0 +radial_segments = 16 +rings = 16 +material = SubResource("StandardMaterial3D_1ucq4") + +[node name="TargetFinder" type="Node" parent="." node_paths=PackedStringArray("tower")] +script = ExtResource("2_e7wkg") +tower = NodePath("..") +max_targets = 0 + +[node name="AreaAffector" type="Node" parent="."] +script = ExtResource("3_u832u") diff --git a/Scenes/Towers/direct_affect_tower.tscn b/Scenes/Towers/direct_affect_tower.tscn new file mode 100644 index 0000000..72a1c4d --- /dev/null +++ b/Scenes/Towers/direct_affect_tower.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=3 uid="uid://43vmeyuurqfs"] + +[ext_resource type="PackedScene" uid="uid://bvqu1heobgboe" path="res://Scenes/Towers/tower.tscn" id="1_rp4eu"] +[ext_resource type="Script" uid="uid://8d0a4uc2i0ti" path="res://Scripts/Affectors/direct_affect.gd" id="2_f7mf6"] + +[node name="DirectAffectTower" node_paths=PackedStringArray("affector") instance=ExtResource("1_rp4eu")] +affector = NodePath("DirectAffect") + +[node name="DirectAffect" type="Node" parent="." index="6"] +script = ExtResource("2_f7mf6") diff --git a/Scenes/Towers/hitscan_tower.tscn b/Scenes/Towers/hitscan_tower.tscn deleted file mode 100644 index 0ab3f86..0000000 --- a/Scenes/Towers/hitscan_tower.tscn +++ /dev/null @@ -1,7 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://dumiyjlnea4gq"] - -[ext_resource type="PackedScene" uid="uid://bvqu1heobgboe" path="res://Scenes/Towers/tower.tscn" id="1_60g1i"] -[ext_resource type="Script" path="res://Scripts/Towers/hitscan_tower.gd" id="2_t6bcd"] - -[node name="HitscanTower" instance=ExtResource("1_60g1i")] -script = ExtResource("2_t6bcd") diff --git a/Scenes/Towers/projectile_tower.tscn b/Scenes/Towers/projectile_tower.tscn index 7dc253f..10f168f 100644 --- a/Scenes/Towers/projectile_tower.tscn +++ b/Scenes/Towers/projectile_tower.tscn @@ -1,8 +1,12 @@ -[gd_scene load_steps=3 format=3 uid="uid://t0b32qb8eub2"] +[gd_scene load_steps=3 format=3 uid="uid://bidr1m71pajma"] -[ext_resource type="PackedScene" uid="uid://bvqu1heobgboe" path="res://Scenes/Towers/tower.tscn" id="1_yagdr"] -[ext_resource type="Script" path="res://Scripts/Towers/projectile_tower.gd" id="2_fqi5p"] +[ext_resource type="PackedScene" uid="uid://bvqu1heobgboe" path="res://Scenes/Towers/tower.tscn" id="1_p8i8e"] +[ext_resource type="Script" uid="uid://ccu1u6nqkjxki" path="res://Scripts/Affectors/spawn_affect.gd" id="2_d8uyp"] -[node name="ProjectileTower" instance=ExtResource("1_yagdr")] -script = ExtResource("2_fqi5p") -projectile_scene = null +[node name="ProjectileTower" node_paths=PackedStringArray("affector") instance=ExtResource("1_p8i8e")] +affector = NodePath("SpawnAffect") + +[node name="SpawnAffect" type="Node" parent="." index="6" node_paths=PackedStringArray("tower")] +script = ExtResource("2_d8uyp") +tower = NodePath("..") +metadata/_custom_type_script = "uid://ccu1u6nqkjxki" diff --git a/Scenes/Towers/range_affecting_tower.tscn b/Scenes/Towers/range_affecting_tower.tscn deleted file mode 100644 index 3d00b32..0000000 --- a/Scenes/Towers/range_affecting_tower.tscn +++ /dev/null @@ -1,7 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://bi6b2r6wek7he"] - -[ext_resource type="PackedScene" uid="uid://dxwtlvv632ae8" path="res://Scenes/Towers/status_applying_tower.tscn" id="1_x852w"] -[ext_resource type="Script" path="res://Scripts/Towers/range_affecting_tower.gd" id="2_wc1xf"] - -[node name="RangeAffectingTower" instance=ExtResource("1_x852w")] -script = ExtResource("2_wc1xf") diff --git a/Scenes/Towers/shapecast_tower.tscn b/Scenes/Towers/shapecast_tower.tscn deleted file mode 100644 index 65d0e27..0000000 --- a/Scenes/Towers/shapecast_tower.tscn +++ /dev/null @@ -1,14 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://8uxu72vjo0cv"] - -[ext_resource type="PackedScene" uid="uid://bvqu1heobgboe" path="res://Scenes/Towers/tower.tscn" id="1_ljc02"] -[ext_resource type="Script" path="res://Scripts/Towers/shapecast_tower.gd" id="2_qh834"] - -[node name="ShapecastTower" node_paths=PackedStringArray("shapecast", "particlesystem") instance=ExtResource("1_ljc02")] -script = ExtResource("2_qh834") -shapecast = NodePath("Yaw/ShapeCast3D") -particlesystem = NodePath("Yaw/ShapeCast3D/GPUParticles3D") -status_stats = null - -[node name="ShapeCast3D" type="ShapeCast3D" parent="Yaw" index="0"] - -[node name="GPUParticles3D" type="GPUParticles3D" parent="Yaw/ShapeCast3D" index="0"] diff --git a/Scenes/Towers/status_applying_tower.tscn b/Scenes/Towers/status_applying_tower.tscn deleted file mode 100644 index 41566c5..0000000 --- a/Scenes/Towers/status_applying_tower.tscn +++ /dev/null @@ -1,8 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://dxwtlvv632ae8"] - -[ext_resource type="PackedScene" uid="uid://dumiyjlnea4gq" path="res://Scenes/Towers/hitscan_tower.tscn" id="1_suc1i"] -[ext_resource type="Script" path="res://Scripts/Towers/status_applying_tower.gd" id="2_rd0fq"] - -[node name="StatusApplyingTower" instance=ExtResource("1_suc1i")] -script = ExtResource("2_rd0fq") -status_stats = null diff --git a/Scenes/Towers/tower.tscn b/Scenes/Towers/tower.tscn index 0ee834a..bac81e0 100644 --- a/Scenes/Towers/tower.tscn +++ b/Scenes/Towers/tower.tscn @@ -1,14 +1,14 @@ [gd_scene load_steps=7 format=3 uid="uid://bvqu1heobgboe"] -[ext_resource type="Script" path="res://Scripts/Towers/tower.gd" id="1_u8bfo"] -[ext_resource type="Script" path="res://Scripts/target_finder.gd" id="2_txlxp"] +[ext_resource type="Script" uid="uid://ct24fjmc1ptd6" path="res://Towers/tower.gd" id="1_u8bfo"] +[ext_resource type="Script" uid="uid://rvnacmxsrh4w" path="res://Scripts/target_finder.gd" id="2_txlxp"] [sub_resource type="Animation" id="Animation_vk4a8"] resource_name = "shoot" [sub_resource type="AnimationLibrary" id="AnimationLibrary_cebsq"] _data = { -"shoot": SubResource("Animation_vk4a8") +&"shoot": SubResource("Animation_vk4a8") } [sub_resource type="BoxMesh" id="BoxMesh_42byu"] @@ -30,13 +30,15 @@ audio_player = NodePath("Yaw/AudioStreamPlayer3D") [node name="AnimationPlayer" type="AnimationPlayer" parent="."] libraries = { -"": SubResource("AnimationLibrary_cebsq") +&"": SubResource("AnimationLibrary_cebsq") } [node name="Pitch" type="MeshInstance3D" parent="."] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = SubResource("BoxMesh_42byu") [node name="Yaw" type="MeshInstance3D" parent="."] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) mesh = SubResource("BoxMesh_42byu") [node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="Yaw"] diff --git a/Scenes/UI/card_hand.tscn b/Scenes/UI/card_hand.tscn index 4d01a84..c1c56b7 100644 --- a/Scenes/UI/card_hand.tscn +++ b/Scenes/UI/card_hand.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=3 uid="uid://dixtx38u4jhd7"] -[ext_resource type="Script" path="res://Scripts/card_hand.gd" id="1_2cfmh"] +[ext_resource type="Script" uid="uid://d6ejaumcenmg" path="res://Scripts/card_hand.gd" id="1_2cfmh"] [ext_resource type="Texture2D" uid="uid://dlqnhs8or4ik2" path="res://Assets/Textures/cardhand.png" id="1_d5oo3"] [ext_resource type="Texture2D" uid="uid://buf8t5gc7iw3a" path="res://Assets/TextureAtlases/rarityborders.tres" id="3_pclfx"] diff --git a/Scenes/UI/chatbox.tscn b/Scenes/UI/chatbox.tscn index 7b78e6d..2b66d92 100644 --- a/Scenes/UI/chatbox.tscn +++ b/Scenes/UI/chatbox.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://ddmg342ff2qaq"] -[ext_resource type="Script" path="res://Scripts/chatbox.gd" id="1_k3g22"] +[ext_resource type="Script" uid="uid://dmdf7tbvc3bsg" path="res://Scripts/chatbox.gd" id="1_k3g22"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_c3kb6"] bg_color = Color(0.223529, 0.211765, 0.184314, 0.462745) diff --git a/Scenes/UI/hero_card.tscn b/Scenes/UI/hero_card.tscn index 34ac3a3..963ed6d 100644 --- a/Scenes/UI/hero_card.tscn +++ b/Scenes/UI/hero_card.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=8 format=3 uid="uid://bnsf2degj5tio"] -[ext_resource type="Script" path="res://hero_select_card.gd" id="1_rqutp"] +[ext_resource type="Script" uid="uid://v5y44744p7ie" path="res://UI/hero_select_card.gd" id="1_rqutp"] [ext_resource type="Texture2D" uid="uid://bskg4kgoi576f" path="res://Assets/Textures/Sprite-0001.png" id="2_gly1b"] [sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ihqrr"] diff --git a/Scenes/UI/keybind_entry.tscn b/Scenes/UI/keybind_entry.tscn index cc5837b..bfe0305 100644 --- a/Scenes/UI/keybind_entry.tscn +++ b/Scenes/UI/keybind_entry.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://ckuu2y4kymshy"] -[ext_resource type="Script" path="res://KeybindEntry.gd" id="1_it8q2"] +[ext_resource type="Script" uid="uid://y2pxkfjn0wa2" path="res://UI/KeybindEntry.gd" id="1_it8q2"] [node name="KeybindEntry" type="HBoxContainer"] anchors_preset = 15 diff --git a/Scenes/UI/keybind_popup.tscn b/Scenes/UI/keybind_popup.tscn index 26b6016..28ff601 100644 --- a/Scenes/UI/keybind_popup.tscn +++ b/Scenes/UI/keybind_popup.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://clsdko6ttudu8"] -[ext_resource type="Script" path="res://keybind_screen.gd" id="1_m5i0b"] +[ext_resource type="Script" uid="uid://d25hjwjdwv35i" path="res://UI/keybind_screen.gd" id="1_m5i0b"] [node name="Control" type="Control"] layout_mode = 3 diff --git a/Scenes/UI/lifebar_segment.tscn b/Scenes/UI/lifebar_segment.tscn index 947060c..e80f9fd 100644 --- a/Scenes/UI/lifebar_segment.tscn +++ b/Scenes/UI/lifebar_segment.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=11 format=3 uid="uid://dko38egcaxubd"] -[ext_resource type="Script" path="res://Scripts/lifebar_segment.gd" id="1_dvlcq"] +[ext_resource type="Script" uid="uid://c3ark32u3lct8" path="res://Scripts/lifebar_segment.gd" id="1_dvlcq"] [ext_resource type="Texture2D" uid="uid://0ey8r48lgjw1" path="res://Assets/Textures/lifebar_pip.png" id="1_pianw"] [sub_resource type="Animation" id="Animation_i18y2"] @@ -464,13 +464,13 @@ tracks/2/keys = { [sub_resource type="AnimationLibrary" id="AnimationLibrary_1s8yp"] _data = { -"RESET": SubResource("Animation_i18y2"), -"lose1": SubResource("Animation_a6tv4"), -"lose2": SubResource("Animation_t2ym0"), -"lose3": SubResource("Animation_ueyfw"), -"lose4": SubResource("Animation_r4h4h"), -"lose5": SubResource("Animation_defuy"), -"lose6": SubResource("Animation_rctjq") +&"RESET": SubResource("Animation_i18y2"), +&"lose1": SubResource("Animation_a6tv4"), +&"lose2": SubResource("Animation_t2ym0"), +&"lose3": SubResource("Animation_ueyfw"), +&"lose4": SubResource("Animation_r4h4h"), +&"lose5": SubResource("Animation_defuy"), +&"lose6": SubResource("Animation_rctjq") } [node name="Control" type="Control"] diff --git a/Scenes/UI/lives_bar.tscn b/Scenes/UI/lives_bar.tscn index 1db9219..4fd7533 100644 --- a/Scenes/UI/lives_bar.tscn +++ b/Scenes/UI/lives_bar.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=4 format=3 uid="uid://24x18qxqhy0i"] [ext_resource type="Texture2D" uid="uid://dvy2lvtotaxb3" path="res://Assets/Textures/lifebar_bg.png" id="1_x27cx"] -[ext_resource type="Script" path="res://Scripts/lives_bar.gd" id="2_lqe7s"] +[ext_resource type="Script" uid="uid://b3g3hofk5pbcp" path="res://Scripts/lives_bar.gd" id="2_lqe7s"] [ext_resource type="PackedScene" uid="uid://dko38egcaxubd" path="res://Scenes/UI/lifebar_segment.tscn" id="3_6hp86"] [node name="LivesBar" type="TextureRect" node_paths=PackedStringArray("segments")] diff --git a/Scenes/UI/pickup_notification.tscn b/Scenes/UI/pickup_notification.tscn index ebc5124..3986397 100644 --- a/Scenes/UI/pickup_notification.tscn +++ b/Scenes/UI/pickup_notification.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://chnj376d3lcjd"] -[ext_resource type="Script" path="res://Scripts/pickup_notification.gd" id="1_cgy5u"] +[ext_resource type="Script" uid="uid://b6vynawytkd0k" path="res://Scripts/pickup_notification.gd" id="1_cgy5u"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cdnv4"] resource_local_to_scene = true diff --git a/Scenes/UI/scoreboard.tscn b/Scenes/UI/scoreboard.tscn index 06300e6..f9cb538 100644 --- a/Scenes/UI/scoreboard.tscn +++ b/Scenes/UI/scoreboard.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://dpt3kpixawyby"] -[ext_resource type="Script" path="res://Scripts/scoreboard.gd" id="1_b5vdp"] +[ext_resource type="Script" uid="uid://k0jvsnqw4766" path="res://Scripts/scoreboard.gd" id="1_b5vdp"] [ext_resource type="PackedScene" uid="uid://bhri8mqjbme2t" path="res://Scenes/UI/scoreboard_entry.tscn" id="2_uer0b"] [node name="Scoreboard" type="PanelContainer"] diff --git a/Scenes/UI/scoreboard_entry.tscn b/Scenes/UI/scoreboard_entry.tscn index 5235c6b..2f513ce 100644 --- a/Scenes/UI/scoreboard_entry.tscn +++ b/Scenes/UI/scoreboard_entry.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=3 uid="uid://bhri8mqjbme2t"] -[ext_resource type="Script" path="res://Scripts/scoreboard_entry.gd" id="1_5xryr"] +[ext_resource type="Script" uid="uid://bmcym1lkp0j8f" path="res://Scripts/scoreboard_entry.gd" id="1_5xryr"] [ext_resource type="Texture2D" uid="uid://m4ehy5bahsup" path="res://Assets/Textures/ready.png" id="2_yxtr2"] [sub_resource type="AtlasTexture" id="AtlasTexture_qhkn8"] diff --git a/Scenes/Weapons/hitscan_weapon.tscn b/Scenes/Weapons/hitscan_weapon.tscn index efb28be..a0a650f 100644 --- a/Scenes/Weapons/hitscan_weapon.tscn +++ b/Scenes/Weapons/hitscan_weapon.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=4 format=3 uid="uid://difwo7wlyqr3h"] [ext_resource type="PackedScene" uid="uid://b7nargdyg28fj" path="res://Scenes/Weapons/weapon.tscn" id="1_s865l"] -[ext_resource type="Script" path="res://Scripts/Weapons/hitscan_weapon.gd" id="2_nyich"] +[ext_resource type="Script" uid="uid://bp3o5klntwmhd" path="res://Scripts/Weapons/hitscan_weapon.gd" id="2_nyich"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1ucq4"] transparency = 1 diff --git a/Scenes/Weapons/projectile_weapon.tscn b/Scenes/Weapons/projectile_weapon.tscn index e0f92a2..cd74c60 100644 --- a/Scenes/Weapons/projectile_weapon.tscn +++ b/Scenes/Weapons/projectile_weapon.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://bqdllitxbbpyp"] [ext_resource type="PackedScene" uid="uid://b7nargdyg28fj" path="res://Scenes/Weapons/weapon.tscn" id="1_nbhwa"] -[ext_resource type="Script" path="res://Scripts/Weapons/projectile_weapon.gd" id="2_5ekyi"] +[ext_resource type="Script" uid="uid://d2gdg2lcedfgg" path="res://Scripts/Weapons/projectile_weapon.gd" id="2_5ekyi"] [node name="ProjectileWeapon" instance=ExtResource("1_nbhwa")] script = ExtResource("2_5ekyi") diff --git a/Scenes/Weapons/shapecast_weapon.tscn b/Scenes/Weapons/shapecast_weapon.tscn index 2387863..75af0a5 100644 --- a/Scenes/Weapons/shapecast_weapon.tscn +++ b/Scenes/Weapons/shapecast_weapon.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=7 format=3 uid="uid://dp4gfr5h0tbcd"] [ext_resource type="PackedScene" uid="uid://b7nargdyg28fj" path="res://Scenes/Weapons/weapon.tscn" id="1_gfchc"] -[ext_resource type="Script" path="res://Scripts/Weapons/shapecast_weapon.gd" id="2_lg6v5"] +[ext_resource type="Script" uid="uid://1l1qccgmp5ih" path="res://Scripts/Weapons/shapecast_weapon.gd" id="2_lg6v5"] [sub_resource type="BoxShape3D" id="BoxShape3D_uk6ey"] size = Vector3(2, 2, 3) diff --git a/Scenes/Weapons/status_applying_weapon.tscn b/Scenes/Weapons/status_applying_weapon.tscn index c29da4d..7bc33d8 100644 --- a/Scenes/Weapons/status_applying_weapon.tscn +++ b/Scenes/Weapons/status_applying_weapon.tscn @@ -1,7 +1,7 @@ [gd_scene load_steps=3 format=3 uid="uid://nrdexcyatika"] [ext_resource type="PackedScene" uid="uid://difwo7wlyqr3h" path="res://Scenes/Weapons/hitscan_weapon.tscn" id="1_uolyx"] -[ext_resource type="Script" path="res://Scripts/Weapons/status_applying_weapon.gd" id="2_iq7bw"] +[ext_resource type="Script" uid="uid://dqcjfcecqhuec" path="res://Scripts/Weapons/status_applying_weapon.gd" id="2_iq7bw"] [node name="StatusApplyingWeapon" instance=ExtResource("1_uolyx")] script = ExtResource("2_iq7bw") diff --git a/Scenes/Weapons/weapon.tscn b/Scenes/Weapons/weapon.tscn index d77836e..04c53f0 100644 --- a/Scenes/Weapons/weapon.tscn +++ b/Scenes/Weapons/weapon.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=5 format=3 uid="uid://b7nargdyg28fj"] -[ext_resource type="Script" path="res://Scripts/Weapons/weapon.gd" id="1_yo2gh"] +[ext_resource type="Script" uid="uid://blh4s3v07ycwa" path="res://Scripts/Weapons/weapon.gd" id="1_yo2gh"] [sub_resource type="Animation" id="Animation_5krlx"] length = 0.001 @@ -35,8 +35,8 @@ tracks/0/keys = { [sub_resource type="AnimationLibrary" id="AnimationLibrary_fs82p"] _data = { -"RESET": SubResource("Animation_5krlx"), -"shoot": SubResource("Animation_0rgpe") +&"RESET": SubResource("Animation_5krlx"), +&"shoot": SubResource("Animation_0rgpe") } [node name="Weapon" type="Node3D" node_paths=PackedStringArray("animator", "audio_player", "recharge_timer")] @@ -52,11 +52,11 @@ texture_filter = 0 [node name="AnimationPlayer" type="AnimationPlayer" parent="."] libraries = { -"": SubResource("AnimationLibrary_fs82p") +&"": SubResource("AnimationLibrary_fs82p") } [node name="Timer" type="Timer" parent="."] -wait_time = 3.0 +wait_time = 2.0 one_shot = true [node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="."] diff --git a/Scenes/corpse.tscn b/Scenes/corpse.tscn index 8d6d491..7d3d277 100644 --- a/Scenes/corpse.tscn +++ b/Scenes/corpse.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=3 uid="uid://canrxnpxcugc2"] -[ext_resource type="Script" path="res://corpse.gd" id="1_hdqtp"] +[ext_resource type="Script" uid="uid://mm665gsfr23a" path="res://Scripts/corpse.gd" id="1_hdqtp"] [ext_resource type="Texture2D" uid="uid://cdnhe2mi5c5ln" path="res://Assets/Textures/dead_eye_dog.png" id="2_6ext7"] [sub_resource type="SphereShape3D" id="SphereShape3D_shai7"] diff --git a/Scenes/damage_particle.tscn b/Scenes/damage_particle.tscn index 180bc61..de8fef2 100644 --- a/Scenes/damage_particle.tscn +++ b/Scenes/damage_particle.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://cqtew0t8sttpm"] -[ext_resource type="Script" path="res://Scripts/damage_particle.gd" id="1_lgvaq"] +[ext_resource type="Script" uid="uid://blt7umrgo3tfh" path="res://Scripts/damage_particle.gd" id="1_lgvaq"] [sub_resource type="ViewportTexture" id="ViewportTexture_ppqlh"] viewport_path = NodePath("SubViewport") diff --git a/Scenes/enemy_spawner.tscn b/Scenes/enemy_spawner.tscn index 2fb334a..a234ca1 100644 --- a/Scenes/enemy_spawner.tscn +++ b/Scenes/enemy_spawner.tscn @@ -1,13 +1,20 @@ -[gd_scene load_steps=4 format=3 uid="uid://d2yv447trxkwt"] +[gd_scene load_steps=5 format=3 uid="uid://d2yv447trxkwt"] -[ext_resource type="Script" path="res://Scripts/enemy_spawner.gd" id="1_23wuv"] +[ext_resource type="Script" uid="uid://dkuxg6ek5us4f" path="res://Scripts/enemy_spawner.gd" id="1_23wuv"] [ext_resource type="PackedScene" uid="uid://b0nady5xm88bo" path="res://Worlds/GreenPlanet/Enemies/land_enemy.tscn" id="2_muaoj"] [ext_resource type="PackedScene" uid="uid://bjo2q6vca5qlv" path="res://Worlds/GreenPlanet/Enemies/air_enemy.tscn" id="3_nh55v"] +[ext_resource type="Script" uid="uid://cd500cyj1tdyw" path="res://Scripts/visualized_path.gd" id="4_tdwud"] -[node name="Node3D" type="Node3D"] +[node name="Node3D" type="Node3D" node_paths=PackedStringArray("path")] script = ExtResource("1_23wuv") land_enemy_scene = ExtResource("2_muaoj") air_enemy_scene = ExtResource("3_nh55v") +path = NodePath("VisualizedPath") [node name="CSGBox3D" type="CSGBox3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) +visible = false + +[node name="VisualizedPath" type="Path3D" parent="."] +script = ExtResource("4_tdwud") +metadata/_custom_type_script = "uid://cd500cyj1tdyw" diff --git a/Scenes/gauntlet.tscn b/Scenes/gauntlet.tscn index 9cbeead..5f653f7 100644 --- a/Scenes/gauntlet.tscn +++ b/Scenes/gauntlet.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=5 format=3 uid="uid://dqt1ggtkpkuhs"] -[ext_resource type="Script" path="res://Scripts/edit_tool.gd" id="1_yf8lt"] +[ext_resource type="Script" uid="uid://ckm02cx0ai624" path="res://Scripts/edit_tool.gd" id="1_yf8lt"] [ext_resource type="PackedScene" uid="uid://ddbbwx0yy16lh" path="res://Scenes/TowerBase/tower_base.tscn" id="2_r3632"] [ext_resource type="Texture2D" uid="uid://gh4yvnerf1f5" path="res://Assets/Textures/radial.png" id="3_a323w"] diff --git a/Scenes/health_bar.tscn b/Scenes/health_bar.tscn index d9a3386..d962dbf 100644 --- a/Scenes/health_bar.tscn +++ b/Scenes/health_bar.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=4 format=3 uid="uid://hjq3nrnumklp"] [ext_resource type="Texture2D" uid="uid://r202vo47jw1q" path="res://Assets/Textures/enemyhealth.png" id="1_x8m88"] -[ext_resource type="Script" path="res://Scripts/health_bar.gd" id="2_m8c1f"] -[ext_resource type="Gradient" uid="uid://dx7auy3oqw82t" path="res://health_bar_gradient.tres" id="3_dpmma"] +[ext_resource type="Script" uid="uid://bf06es50d0flv" path="res://Scripts/health_bar.gd" id="2_m8c1f"] +[ext_resource type="Gradient" uid="uid://dx7auy3oqw82t" path="res://UI/health_bar_gradient.tres" id="3_dpmma"] [node name="HealthBar" type="TextureProgressBar"] offset_right = 200.0 diff --git a/Scenes/item_card.tscn b/Scenes/item_card.tscn index 0ff0759..d658a1d 100644 --- a/Scenes/item_card.tscn +++ b/Scenes/item_card.tscn @@ -1,8 +1,8 @@ [gd_scene load_steps=7 format=3 uid="uid://dsasunnk47n8o"] -[ext_resource type="Script" path="res://Scripts/item_card.gd" id="1_f3ek5"] -[ext_resource type="Script" path="res://Scripts/float_and_spin.gd" id="2_yfdc3"] -[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://shot1.wav" id="3_om63b"] +[ext_resource type="Script" uid="uid://1l7xhsd5prk1" path="res://Scripts/item_card.gd" id="1_f3ek5"] +[ext_resource type="Script" uid="uid://cl2mi4bnpatwk" path="res://Scripts/float_and_spin.gd" id="2_yfdc3"] +[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="3_om63b"] [sub_resource type="Curve" id="Curve_qb7ge"] _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] @@ -15,7 +15,6 @@ height = 1.0 random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("3_om63b") -stream_0/weight = 1.0 [node name="Node3D" type="StaticBody3D"] collision_layer = 8 diff --git a/Scenes/item_container.tscn b/Scenes/item_container.tscn index 360fb5e..96e1c7c 100644 --- a/Scenes/item_container.tscn +++ b/Scenes/item_container.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=7 format=3 uid="uid://8d452unjpoiu"] +[gd_scene load_steps=8 format=3 uid="uid://8d452unjpoiu"] -[ext_resource type="Script" path="res://Scripts/inventory.gd" id="1_6ftnx"] -[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://PCs/Mechanic/ClassCards/Assault/card_assault.tres" id="2_hayav"] -[ext_resource type="Resource" uid="uid://bibx2my7igspq" path="res://PCs/Mage/ClassCards/Fireball/card_fireball.tres" id="3_sq8ai"] -[ext_resource type="Resource" uid="uid://b3o112jw3loiu" path="res://PCs/Mechanic/ClassCards/Reactor/card_reactor.tres" id="4_3jmlk"] +[ext_resource type="Script" uid="uid://do24iuot0j7d7" path="res://Scripts/inventory.gd" id="1_6ftnx"] +[ext_resource type="Script" uid="uid://uomjb4sj4enc" path="res://Scripts/Resources/item.gd" id="2_a0o80"] +[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://Cards/assault.tres" id="2_hayav"] +[ext_resource type="Resource" uid="uid://bibx2my7igspq" path="res://Cards/fireball.tres" id="3_sq8ai"] +[ext_resource type="Resource" uid="uid://b3o112jw3loiu" path="res://Cards/reactor.tres" id="4_3jmlk"] [sub_resource type="BoxShape3D" id="BoxShape3D_lscco"] @@ -14,7 +15,7 @@ albedo_color = Color(0.509804, 0.505882, 0, 1) [node name="Inventory" type="Node" parent="."] script = ExtResource("1_6ftnx") -contents = Array[Resource("res://Scripts/Resources/item.gd")]([ExtResource("2_hayav"), ExtResource("3_sq8ai"), ExtResource("4_3jmlk")]) +contents = Array[ExtResource("2_a0o80")]([ExtResource("2_hayav"), ExtResource("3_sq8ai"), ExtResource("4_3jmlk")]) [node name="CollisionShape3D" type="CollisionShape3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0) diff --git a/Scenes/path_visual_thing.tscn b/Scenes/path_visual_thing.tscn index 4f71883..4cf0d71 100644 --- a/Scenes/path_visual_thing.tscn +++ b/Scenes/path_visual_thing.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=4 format=3 uid="uid://clbw3osqy2ww2"] -[ext_resource type="Script" path="res://Scripts/path_visual_thing.gd" id="1_pgun7"] +[ext_resource type="Script" uid="uid://cr3sfjjo6l6n2" path="res://Scripts/path_visual_thing.gd" id="1_pgun7"] [ext_resource type="Texture2D" uid="uid://cy786nrpcdr5o" path="res://Assets/Textures/minimap_path_visual.png" id="2_0gsds"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lutld"] diff --git a/Scenes/visual_path.tscn b/Scenes/visual_path.tscn index fb06e92..ead9b72 100644 --- a/Scenes/visual_path.tscn +++ b/Scenes/visual_path.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=3 format=3 uid="uid://dtfw0tefhb6qq"] -[ext_resource type="Script" path="res://Scripts/visualized_path.gd" id="1_34oex"] +[ext_resource type="Script" uid="uid://cd500cyj1tdyw" path="res://Scripts/visualized_path.gd" id="1_34oex"] [sub_resource type="Curve3D" id="Curve3D_tcut2"] _data = { diff --git a/Scripts/Affectors/affector.gd b/Scripts/Affectors/affector.gd new file mode 100644 index 0000000..fe59263 --- /dev/null +++ b/Scripts/Affectors/affector.gd @@ -0,0 +1,14 @@ +class_name Affector extends Node + +var damage_particle_scene: PackedScene = preload("res://Scenes/damage_particle.tscn") + + +func apply_effect(effect: Effect, targets: Array[EnemyController]) -> void: + pass + + +func spawn_damage_indicator(damage: int, pos: Vector3) -> void: + var marker: Sprite3D = damage_particle_scene.instantiate() + get_tree().root.add_child(marker) + marker.set_number(damage) + marker.position = pos diff --git a/Scripts/Affectors/affector.gd.uid b/Scripts/Affectors/affector.gd.uid new file mode 100644 index 0000000..a25f6a7 --- /dev/null +++ b/Scripts/Affectors/affector.gd.uid @@ -0,0 +1 @@ +uid://5gl7yyrvjeow diff --git a/Scripts/Affectors/area_affector.gd b/Scripts/Affectors/area_affector.gd new file mode 100644 index 0000000..86dbb81 --- /dev/null +++ b/Scripts/Affectors/area_affector.gd @@ -0,0 +1,13 @@ +class_name AreaAffector extends Affector + +@export var shapecast: ShapeCast3D + + +func apply_effect(effect: Effect, targets: Array[EnemyController]) -> void: + for i: int in shapecast.get_collision_count(): + var enemy: EnemyController = shapecast.get_collider(i) as EnemyController + #print(shapecast.get_collider(i)) + if targets.has(enemy): + enemy.apply_effect(effect) + if Data.preferences.display_tower_damage_indicators and effect.damage > 0: + spawn_damage_indicator(effect.damage, enemy.sprite.global_position) diff --git a/Scripts/Affectors/area_affector.gd.uid b/Scripts/Affectors/area_affector.gd.uid new file mode 100644 index 0000000..c037e5c --- /dev/null +++ b/Scripts/Affectors/area_affector.gd.uid @@ -0,0 +1 @@ +uid://duvfverjdqodj diff --git a/Scripts/Affectors/direct_affect.gd b/Scripts/Affectors/direct_affect.gd new file mode 100644 index 0000000..45139dc --- /dev/null +++ b/Scripts/Affectors/direct_affect.gd @@ -0,0 +1,8 @@ +class_name DirectAffect extends Affector + + +func apply_effect(effect: Effect, targets: Array[EnemyController]) -> void: + for enemy: EnemyController in targets: + enemy.apply_effect(effect) + if Data.preferences.display_tower_damage_indicators and effect.damage > 0: + spawn_damage_indicator(effect.damage, enemy.sprite.global_position) diff --git a/Scripts/Affectors/direct_affect.gd.uid b/Scripts/Affectors/direct_affect.gd.uid new file mode 100644 index 0000000..ef8580a --- /dev/null +++ b/Scripts/Affectors/direct_affect.gd.uid @@ -0,0 +1 @@ +uid://8d0a4uc2i0ti diff --git a/Scripts/Affectors/spawn_affect.gd b/Scripts/Affectors/spawn_affect.gd new file mode 100644 index 0000000..e176431 --- /dev/null +++ b/Scripts/Affectors/spawn_affect.gd @@ -0,0 +1,21 @@ +class_name SpawnAffect extends Affector + +@export var spawn_scene: PackedScene +@export var tower: Tower + +var force: float = 150.0 +var projectile_id: int = 0 + + +func apply_effect(effect: Effect, targets: Array[EnemyController]) -> void: + for target: EnemyController in targets: + var projectile: Projectile = spawn_scene.instantiate() as Projectile + if projectile is HomingProjectile: + projectile.target = target + projectile.position = tower.yaw_model.global_position + projectile.effect = effect + projectile.direction = -tower.yaw_model.global_transform.basis.z + projectile.force = force + projectile.name = tower.base_name + str(tower.owner_id) + str(projectile_id) + get_tree().root.add_child(projectile) + projectile_id += 1 diff --git a/Scripts/Affectors/spawn_affect.gd.uid b/Scripts/Affectors/spawn_affect.gd.uid new file mode 100644 index 0000000..7f29095 --- /dev/null +++ b/Scripts/Affectors/spawn_affect.gd.uid @@ -0,0 +1 @@ +uid://ccu1u6nqkjxki diff --git a/Scripts/EnemyAI/beelining_controller.gd.uid b/Scripts/EnemyAI/beelining_controller.gd.uid new file mode 100644 index 0000000..a48d965 --- /dev/null +++ b/Scripts/EnemyAI/beelining_controller.gd.uid @@ -0,0 +1 @@ +uid://d147vuqksqhis diff --git a/Scripts/EnemyAI/enemy_movement.gd b/Scripts/EnemyAI/enemy_movement.gd index 30d8464..cb0ed2a 100644 --- a/Scripts/EnemyAI/enemy_movement.gd +++ b/Scripts/EnemyAI/enemy_movement.gd @@ -2,4 +2,5 @@ class_name EnemyMovement extends Node @export var character: CharacterBody3D +var astar: AStarGraph3D var distance_remaining: float = 0.0 diff --git a/Scripts/EnemyAI/enemy_movement.gd.uid b/Scripts/EnemyAI/enemy_movement.gd.uid new file mode 100644 index 0000000..7309951 --- /dev/null +++ b/Scripts/EnemyAI/enemy_movement.gd.uid @@ -0,0 +1 @@ +uid://cy0htr7710hnn diff --git a/Scripts/EnemyAI/leaping_controller.gd b/Scripts/EnemyAI/leaping_controller.gd new file mode 100644 index 0000000..f0a649a --- /dev/null +++ b/Scripts/EnemyAI/leaping_controller.gd @@ -0,0 +1,143 @@ +class_name LeapingController extends PathingController + +@export var eastl: Label +@export var westl: Label +@export var northl: Label +@export var southl: Label +@export var easts: Sprite3D +@export var wests: Sprite3D +@export var norths: Sprite3D +@export var souths: Sprite3D +@export var box: CSGBox3D + +var tolerance: float = 50.0 +var jumping: bool = false + + +func _process(delta: float) -> void: + tolerance = remap(character.health.current_health, 10, 50, character.health.max_health * 0.20, character.health.max_health) + + +func _physics_process(delta: float) -> void: + if !path or jumping: + return + var distance_travelled: float = (character.stats.movement_speed * clampf(character.movement_speed_penalty, 0.0, 1.0)) * delta + distance_remaining -= distance_travelled + path_progress += distance_travelled + var sample: Transform3D = path.sample_baked_with_rotation(path_progress, true) + character.global_position = sample.origin + character.look_at(character.global_position + -sample.basis.z) + var closest_point: int = astar.astar.get_closest_point(character.global_position, false) + box.global_position = astar.astar.get_point_position(closest_point) + var east: int = astar.get_east_point(closest_point) + var west: int = astar.get_west_point(closest_point) + var north: int = astar.get_north_point(closest_point) + var south: int = astar.get_south_point(closest_point) + #if east >= 0 and astar.astar.is_point_disabled(east): + #eastl.text = "fuck no" + #else: + #eastl.text = "yeah" + #if west >= 0 and astar.astar.is_point_disabled(west): + #westl.text = "fuck no" + #else: + #westl.text = "yeah" + #if north >= 0 and astar.astar.is_point_disabled(north): + #northl.text = "fuck no" + #else: + #northl.text = "yeah" + #if south >= 0 and astar.astar.is_point_disabled(south): + #southl.text = "fuck no" + #else: + #southl.text = "yeah" + norths.global_position = character.global_position + Vector3(-1.0, 1.0, 0.0) + souths.global_position = character.global_position + Vector3(1.0, 1.0, 0.0) + easts.global_position = character.global_position + Vector3(0.0, 1.0, -1.0) + wests.global_position = character.global_position + Vector3(0.0, 1.0, 1.0) + if east >= 0: + if astar.astar.is_point_disabled(east): + var further_point: int = astar.get_east_point(east) + if further_point >= 0 and !astar.astar.is_point_disabled(further_point): + var expected_offset: float = path.get_closest_offset(character.global_position + Vector3(0.0, 0.0, -4.0)) + var current_offset: float = path.get_closest_offset(character.global_position) + var gain: float = expected_offset - current_offset + if gain >= tolerance: + distance_remaining -= gain + path_progress += gain + leap(Vector3(0.0, 0.0, -4.0)) + #eastl.text = str(gain) + #easts.visible = true + else: + eastl.text = "cant" + else: + eastl.text = "clear" + else: + eastl.text = "invalid" + if west >= 0: + if astar.astar.is_point_disabled(west): + var further_point: int = astar.get_west_point(west) + if further_point >= 0 and !astar.astar.is_point_disabled(further_point): + var expected_offset: float = path.get_closest_offset(character.global_position + Vector3(0.0, 0.0, 4.0)) + var current_offset: float = path.get_closest_offset(character.global_position) + var gain: float = expected_offset - current_offset + if gain >= tolerance: + distance_remaining -= gain + path_progress += gain + leap(Vector3(0.0, 0.0, 4.0)) + #westl.text = str(gain) + #wests.visible = true + else: + westl.text = "cant" + else: + westl.text = "clear" + else: + westl.text = "invalid" + if north >= 0: + if astar.astar.is_point_disabled(north): + var further_point: int = astar.get_north_point(north) + if further_point >= 0 and !astar.astar.is_point_disabled(further_point): + var expected_offset: float = path.get_closest_offset(character.global_position + Vector3(-4.0, 0.0, 0.0)) + var current_offset: float = path.get_closest_offset(character.global_position) + var gain: float = expected_offset - current_offset + if gain >= tolerance: + distance_remaining -= gain + path_progress += gain + leap(Vector3(-4.0, 0.0, 0.0)) + #northl.text = str(gain) + #norths.visible = true + else: + northl.text = "cant" + else: + northl.text = "clear" + else: + northl.text = "invalid" + if south >= 0: + if astar.astar.is_point_disabled(south): + var further_point: int = astar.get_south_point(south) + if further_point >= 0 and !astar.astar.is_point_disabled(further_point): + var expected_offset: float = path.get_closest_offset(character.global_position + Vector3(4.0, 0.0, 0.0)) + var current_offset: float = path.get_closest_offset(character.global_position) + var gain: float = expected_offset - current_offset + if gain >= tolerance: + distance_remaining -= gain + path_progress += gain + leap(Vector3(4.0, 0.0, 0.0)) + #southl.text = str(gain) + #souths.visible = true + else: + southl.text = "cant" + else: + southl.text = "clear" + else: + southl.text = "invalid" + + +func finish_jump() -> void: + jumping = false + + +func leap(to_point: Vector3) -> void: + jumping = true + var tween: Tween = create_tween() + tween.tween_property(character, "global_position", character.global_position + (to_point / 2.0) + Vector3.UP, 1.0) + tween.tween_property(character, "global_position", character.global_position + to_point, 1.0) + tween.tween_callback(finish_jump) diff --git a/Scripts/EnemyAI/leaping_controller.gd.uid b/Scripts/EnemyAI/leaping_controller.gd.uid new file mode 100644 index 0000000..386b3f7 --- /dev/null +++ b/Scripts/EnemyAI/leaping_controller.gd.uid @@ -0,0 +1 @@ +uid://dqluvn05min37 diff --git a/Scripts/EnemyAI/pathing_controller.gd b/Scripts/EnemyAI/pathing_controller.gd index 239a343..4ebb4e6 100644 --- a/Scripts/EnemyAI/pathing_controller.gd +++ b/Scripts/EnemyAI/pathing_controller.gd @@ -18,3 +18,4 @@ func _physics_process(delta: float) -> void: var sample: Transform3D = path.sample_baked_with_rotation(path_progress, true) character.global_position = sample.origin character.look_at(character.global_position + -sample.basis.z) + var closest_point: Vector3 = path.get_closest_point(character.global_position) diff --git a/Scripts/EnemyAI/pathing_controller.gd.uid b/Scripts/EnemyAI/pathing_controller.gd.uid new file mode 100644 index 0000000..fe77d51 --- /dev/null +++ b/Scripts/EnemyAI/pathing_controller.gd.uid @@ -0,0 +1 @@ +uid://b62xnsbki8axa diff --git a/Scripts/Projectiles/explosive_projectile.gd b/Scripts/Projectiles/explosive_projectile.gd index 8b30ddb..f5f7bdc 100644 --- a/Scripts/Projectiles/explosive_projectile.gd +++ b/Scripts/Projectiles/explosive_projectile.gd @@ -33,7 +33,7 @@ func explode() -> void: func hit(target: CharacterBody3D) -> void: - target.damage(damage) + target.apply_effect(effect) if owner_id == 0: if Data.preferences.display_tower_damage_indicators: spawn_damage_indicator(target.sprite.global_position) diff --git a/Scripts/Projectiles/explosive_projectile.gd.uid b/Scripts/Projectiles/explosive_projectile.gd.uid new file mode 100644 index 0000000..bad49a7 --- /dev/null +++ b/Scripts/Projectiles/explosive_projectile.gd.uid @@ -0,0 +1 @@ +uid://cubn2iabwg3 diff --git a/Scripts/Projectiles/homing_projectile.gd.uid b/Scripts/Projectiles/homing_projectile.gd.uid new file mode 100644 index 0000000..f0ef062 --- /dev/null +++ b/Scripts/Projectiles/homing_projectile.gd.uid @@ -0,0 +1 @@ +uid://dwr38fukjqu7r diff --git a/Scripts/Projectiles/projectile.gd b/Scripts/Projectiles/projectile.gd index 3212766..59e8838 100644 --- a/Scripts/Projectiles/projectile.gd +++ b/Scripts/Projectiles/projectile.gd @@ -9,6 +9,7 @@ var force: float = 2.0 var damage: float = 0.0 var lifetime: float = 10.0 var time_alive: float = 0.0 +var effect: Effect func _ready() -> void: @@ -20,10 +21,10 @@ func _process(delta: float) -> void: func spawn_damage_indicator(pos: Vector3) -> void: - if damage > 0: + if effect.damage > 0: var marker: Node3D = damage_particle_scene.instantiate() get_tree().root.add_child(marker) - marker.set_number(damage) + marker.set_number(effect.damage) marker.position = pos diff --git a/Scripts/Projectiles/projectile.gd.uid b/Scripts/Projectiles/projectile.gd.uid new file mode 100644 index 0000000..a273e61 --- /dev/null +++ b/Scripts/Projectiles/projectile.gd.uid @@ -0,0 +1 @@ +uid://bifvnevs5y4nj diff --git a/Scripts/Projectiles/status_applying_projectile.gd.uid b/Scripts/Projectiles/status_applying_projectile.gd.uid new file mode 100644 index 0000000..6f3b478 --- /dev/null +++ b/Scripts/Projectiles/status_applying_projectile.gd.uid @@ -0,0 +1 @@ +uid://ba2aqn82wo747 diff --git a/Scripts/Resources/card.gd b/Scripts/Resources/card.gd index 135cf4f..bdaa975 100644 --- a/Scripts/Resources/card.gd +++ b/Scripts/Resources/card.gd @@ -1,6 +1,10 @@ class_name Card extends Item -enum Faction {GENERIC = 0} +enum Faction { + GENERIC = 0, + ENGINEER = 1, + MAGE = 2, + } @export var rarity: Data.Rarity @export var faction: Faction diff --git a/Scripts/Resources/card.gd.uid b/Scripts/Resources/card.gd.uid new file mode 100644 index 0000000..88aaf25 --- /dev/null +++ b/Scripts/Resources/card.gd.uid @@ -0,0 +1 @@ +uid://d40isem6w5d8 diff --git a/Scripts/Resources/card_text.gd b/Scripts/Resources/card_text.gd index 0ef405c..b9b6d3d 100644 --- a/Scripts/Resources/card_text.gd +++ b/Scripts/Resources/card_text.gd @@ -1,6 +1,7 @@ class_name CardText extends Resource @export var target_type: Data.TargetType +@export var energy_type: Data.EnergyType @export var attributes: Array[StatAttribute] @export_multiline var text: String diff --git a/Scripts/Resources/card_text.gd.uid b/Scripts/Resources/card_text.gd.uid new file mode 100644 index 0000000..45036f0 --- /dev/null +++ b/Scripts/Resources/card_text.gd.uid @@ -0,0 +1 @@ +uid://dg7gxxqfqxcmc diff --git a/Scripts/Resources/enemy.gd b/Scripts/Resources/enemy.gd index 7dfaaf2..8e1346b 100644 --- a/Scripts/Resources/enemy.gd +++ b/Scripts/Resources/enemy.gd @@ -10,3 +10,24 @@ class_name Enemy extends Resource @export var penalty: int = 10 @export var movement_speed: float = 0.5 @export var spawn_cooldown: float = 1.0 + +@export_group("Spawner Card") +@export_subgroup("Common") +@export var common_group: int = 1 +@export var common_cost: int = 1 + +@export_subgroup("Uncommon") +@export var uncommon_group: int = 1 +@export var uncommon_cost: int = 1 + +@export_subgroup("Rare") +@export var rare_group: int = 1 +@export var rare_cost: int = 1 + +@export_subgroup("Epic") +@export var epic_group: int = 1 +@export var epic_cost: int = 1 + +@export_subgroup("Legendary") +@export var legendary_group: int = 1 +@export var legendary_cost: int = 1 diff --git a/Scripts/Resources/enemy.gd.uid b/Scripts/Resources/enemy.gd.uid new file mode 100644 index 0000000..7d4800e --- /dev/null +++ b/Scripts/Resources/enemy.gd.uid @@ -0,0 +1 @@ +uid://cbwxa2a4hfcy4 diff --git a/Scripts/Resources/hero_class.gd b/Scripts/Resources/hero_class.gd index 5d79ff9..f6e069e 100644 --- a/Scripts/Resources/hero_class.gd +++ b/Scripts/Resources/hero_class.gd @@ -4,3 +4,5 @@ class_name HeroClass extends Resource @export var texture: Texture @export var hand_texture: Texture @export var deck: Array[Card] +@export var faction: Card.Faction +@export var podium: PackedScene diff --git a/Scripts/Resources/hero_class.gd.uid b/Scripts/Resources/hero_class.gd.uid new file mode 100644 index 0000000..1e03d53 --- /dev/null +++ b/Scripts/Resources/hero_class.gd.uid @@ -0,0 +1 @@ +uid://dcwtg2gev3uia diff --git a/Scripts/Resources/item.gd.uid b/Scripts/Resources/item.gd.uid new file mode 100644 index 0000000..9aade6b --- /dev/null +++ b/Scripts/Resources/item.gd.uid @@ -0,0 +1 @@ +uid://uomjb4sj4enc diff --git a/Scripts/Resources/player_audio_settings.gd.uid b/Scripts/Resources/player_audio_settings.gd.uid new file mode 100644 index 0000000..158af3b --- /dev/null +++ b/Scripts/Resources/player_audio_settings.gd.uid @@ -0,0 +1 @@ +uid://ctwk3deywlswg diff --git a/Scripts/Resources/player_graphics_settings.gd b/Scripts/Resources/player_graphics_settings.gd index 3465ee1..7a37035 100644 --- a/Scripts/Resources/player_graphics_settings.gd +++ b/Scripts/Resources/player_graphics_settings.gd @@ -9,7 +9,7 @@ const SAVE_PATH: String = "user://graphics_settings.tres" func apply_graphical_settings(viewport: Viewport) -> void: - DisplayServer.window_set_vsync_mode(vsync_mode) + #DisplayServer.window_set_vsync_mode(vsync_mode) match aa_mode: 0: viewport.use_taa = false diff --git a/Scripts/Resources/player_graphics_settings.gd.uid b/Scripts/Resources/player_graphics_settings.gd.uid new file mode 100644 index 0000000..d1db65c --- /dev/null +++ b/Scripts/Resources/player_graphics_settings.gd.uid @@ -0,0 +1 @@ +uid://bte0pj6bwedb0 diff --git a/Scripts/Resources/player_keymap.gd.uid b/Scripts/Resources/player_keymap.gd.uid new file mode 100644 index 0000000..cc19477 --- /dev/null +++ b/Scripts/Resources/player_keymap.gd.uid @@ -0,0 +1 @@ +uid://vkthiwr3vq4g diff --git a/Scripts/Resources/player_preferences.gd.uid b/Scripts/Resources/player_preferences.gd.uid new file mode 100644 index 0000000..4351702 --- /dev/null +++ b/Scripts/Resources/player_preferences.gd.uid @@ -0,0 +1 @@ +uid://c78bl6r5qlday diff --git a/Scripts/Resources/player_profile.gd.uid b/Scripts/Resources/player_profile.gd.uid new file mode 100644 index 0000000..d4f6be2 --- /dev/null +++ b/Scripts/Resources/player_profile.gd.uid @@ -0,0 +1 @@ +uid://b1s4nrql8i1sm diff --git a/Scripts/Resources/save_data.gd b/Scripts/Resources/save_data.gd new file mode 100644 index 0000000..c885c0d --- /dev/null +++ b/Scripts/Resources/save_data.gd @@ -0,0 +1,86 @@ +class_name SaveData extends RefCounted + +const SAVE_PATH: String = "user://save1.txt" + +#Game History +var twenty_game_history: Array[bool] = [] +var wins: int = 0 +var losses: int = 0 + +#Engineer +var engineer_cards_bought: int = 0 + + +#Unlocking the mage +var mage_card_seen_in_shop: bool = false +var mage_cards_bought: int = 0 +var mage_unlocked: bool = 0 + + +func add_game_outcome(outcome: bool) -> void: + if outcome: + wins += 1 + else: + losses += 1 + twenty_game_history.push_back(outcome) + if twenty_game_history.size() > 20: + twenty_game_history.pop_front() + + +func unlock_all_content() -> void: + mage_unlocked = true + + +func lock_all_content() -> void: + mage_unlocked = false + + +func bought_engineer_card() -> void: + engineer_cards_bought += 1 + + +func saw_mage_card_in_shop() -> void: + mage_card_seen_in_shop = true + save_to_disc() + + +func bought_mage_card() -> void: + mage_cards_bought += 1 + if mage_cards_bought >= 10: + mage_unlocked = true + save_to_disc() + + +func save_to_disc() -> void: + var save_file: FileAccess = FileAccess.open(SAVE_PATH, FileAccess.WRITE) + var dict: Dictionary = { + "wins" = wins, + "losses" = losses, + "twenty_game_history" = twenty_game_history, + "engineer_cards_bought" = engineer_cards_bought, + "mage_card_seen_in_shop" = mage_card_seen_in_shop, + "mage_cards_bought" = mage_cards_bought, + "mage_unlocked" = mage_unlocked, + } + var json_string: String = JSON.stringify(dict) + save_file.store_line(json_string) + + +static func load_profile_from_disk() -> SaveData: + if FileAccess.file_exists(SAVE_PATH): + var save_file: FileAccess = FileAccess.open(SAVE_PATH, FileAccess.READ) + var json_string: String = save_file.get_line() + var json: JSON = JSON.new() + var parse_result: Error = json.parse(json_string) + if parse_result == OK: + var dict: Dictionary = json.data + var stats: SaveData = SaveData.new() + stats.wins = dict["wins"] + stats.losses = dict["losses"] + stats.twenty_game_history.append_array(dict["twenty_game_history"]) + stats.engineer_cards_bought = dict["engineer_cards_bought"] + stats.mage_card_seen_in_shop = dict["mage_card_seen_in_shop"] + stats.mage_cards_bought = dict["mage_cards_bought"] + stats.mage_unlocked = dict["mage_unlocked"] + return stats + return SaveData.new() diff --git a/Scripts/Resources/save_data.gd.uid b/Scripts/Resources/save_data.gd.uid new file mode 100644 index 0000000..4a348a4 --- /dev/null +++ b/Scripts/Resources/save_data.gd.uid @@ -0,0 +1 @@ +uid://6tvi4ox481cp diff --git a/Scripts/Resources/save_stats.gd b/Scripts/Resources/save_stats.gd deleted file mode 100644 index e7cf95f..0000000 --- a/Scripts/Resources/save_stats.gd +++ /dev/null @@ -1,25 +0,0 @@ -class_name SaveStats extends Resource - -const SAVE_PATH: String = "user://save_stats.tres" - -@export var wins: int -@export var losses: int -@export var twenty_game_history: Array[bool] - - -func add_game_outcome(outcome: bool) -> void: - if outcome: - wins += 1 - else: - losses += 1 - twenty_game_history.push_back(outcome) - if twenty_game_history.size() > 20: - twenty_game_history.pop_front() - - -func save_profile_to_disk() -> void: - ResourceSaver.save(self, SAVE_PATH) -static func load_profile_from_disk() -> SaveStats: - if ResourceLoader.exists(SAVE_PATH): - return ResourceLoader.load(SAVE_PATH) - return SaveStats.new() diff --git a/Scripts/Resources/stat_attribute.gd.uid b/Scripts/Resources/stat_attribute.gd.uid new file mode 100644 index 0000000..175cbdc --- /dev/null +++ b/Scripts/Resources/stat_attribute.gd.uid @@ -0,0 +1 @@ +uid://yjb0uv6og430 diff --git a/Scripts/Resources/status_stats.gd.uid b/Scripts/Resources/status_stats.gd.uid new file mode 100644 index 0000000..3814ad9 --- /dev/null +++ b/Scripts/Resources/status_stats.gd.uid @@ -0,0 +1 @@ +uid://bq6jp8bwub6je diff --git a/Scripts/StatusEffects/status_dot.gd b/Scripts/StatusEffects/status_dot.gd index ba339ea..41a1408 100644 --- a/Scripts/StatusEffects/status_dot.gd +++ b/Scripts/StatusEffects/status_dot.gd @@ -2,4 +2,4 @@ class_name StatusDoT extends StatusEffect func proc(affected: EnemyController, stacks: int, _existing_effects: Dictionary) -> void: - affected.damage(stats.potency * stacks) + affected.health.take_damage(int(stats.potency * stacks)) diff --git a/Scripts/StatusEffects/status_dot.gd.uid b/Scripts/StatusEffects/status_dot.gd.uid new file mode 100644 index 0000000..cf1f916 --- /dev/null +++ b/Scripts/StatusEffects/status_dot.gd.uid @@ -0,0 +1 @@ +uid://c6eghujlaqhwi diff --git a/Scripts/StatusEffects/status_effect.gd b/Scripts/StatusEffects/status_effect.gd index 3f4e463..0e805eb 100644 --- a/Scripts/StatusEffects/status_effect.gd +++ b/Scripts/StatusEffects/status_effect.gd @@ -1,6 +1,6 @@ -class_name StatusEffect extends RefCounted +class_name StatusEffect extends Resource -var stats: StatusStats +@export var stats: StatusStats var time_since_proc: float = 0.0 var time_existed: float = 0.0 diff --git a/Scripts/StatusEffects/status_effect.gd.uid b/Scripts/StatusEffects/status_effect.gd.uid new file mode 100644 index 0000000..3a2c072 --- /dev/null +++ b/Scripts/StatusEffects/status_effect.gd.uid @@ -0,0 +1 @@ +uid://chy7bx8dlwgs0 diff --git a/Scripts/StatusEffects/status_slow.gd.uid b/Scripts/StatusEffects/status_slow.gd.uid new file mode 100644 index 0000000..9c7eb8b --- /dev/null +++ b/Scripts/StatusEffects/status_slow.gd.uid @@ -0,0 +1 @@ +uid://bh74uangqekuk diff --git a/Scripts/Towers/hitscan_tower.gd b/Scripts/Towers/hitscan_tower.gd deleted file mode 100644 index c4a9ad7..0000000 --- a/Scripts/Towers/hitscan_tower.gd +++ /dev/null @@ -1,13 +0,0 @@ -class_name HitscanTower extends Tower - - -func shoot() -> void: - super.shoot() - target_finder.get_target().damage(damage) - if Data.preferences.display_tower_damage_indicators: - spawn_damage_indicator(target_finder.get_target().sprite.global_position) - - -@rpc("reliable") -func networked_shoot() -> void: - super.networked_shoot() diff --git a/Scripts/Towers/projectile_tower.gd b/Scripts/Towers/projectile_tower.gd deleted file mode 100644 index a0163b7..0000000 --- a/Scripts/Towers/projectile_tower.gd +++ /dev/null @@ -1,30 +0,0 @@ -class_name ProjectileTower extends Tower - -@export var projectile_scene: PackedScene - -var force: float = 150.0 -var projectile_id: int = 0 - - -func shoot() -> void: - if is_multiplayer_authority(): - networked_spawn_projectile.rpc(multiplayer.get_unique_id()) - - -@rpc("reliable") -func networked_shoot() -> void: - super.networked_shoot() - shoot() - - -@rpc("reliable", "call_local") -func networked_spawn_projectile(peer_id: int) -> Projectile: - var projectile: Projectile = projectile_scene.instantiate() as Projectile - projectile.position = yaw_model.global_position - projectile.damage = damage - projectile.direction = -yaw_model.global_transform.basis.z - projectile.force = force - projectile.name = base_name + str(peer_id) + str(projectile_id) - get_tree().root.add_child(projectile) - projectile_id += 1 - return projectile diff --git a/Scripts/Towers/range_affecting_tower.gd b/Scripts/Towers/range_affecting_tower.gd deleted file mode 100644 index cdce2eb..0000000 --- a/Scripts/Towers/range_affecting_tower.gd +++ /dev/null @@ -1,36 +0,0 @@ -class_name RangeAffectingTower extends StatusApplyingTower - - -func _physics_process(_delta: float) -> void: - if !is_multiplayer_authority(): - return - var enemies_in_range: Array = [] - for enemy: EnemyController in get_tree().get_nodes_in_group("Enemies"): - if !is_instance_valid(enemy) or !enemy.alive or global_position.distance_to(enemy.global_position) > target_range: - continue - if enemy.stats.target_type & stats.target_type: - enemies_in_range.append(enemy) - if time_since_firing >= time_between_shots: - time_since_firing -= time_between_shots - for enemy: EnemyController in enemies_in_range: - fire(enemy) - - -func aim() -> void: - pass - - -func fire(target: EnemyController) -> void: - if is_instance_valid(target) and target.alive: - target.damage(damage) - target.status_manager.add_effect(build_status_object()) - if Data.preferences.display_tower_damage_indicators: - spawn_damage_indicator(target.sprite.global_position) - if is_multiplayer_authority(): - networked_fire.rpc(get_tree().root.get_path_to(target)) - - -@rpc("reliable") -func networked_fire(target_node_path: String) -> void: - var target: EnemyController = get_tree().root.get_node(target_node_path) - fire(target) diff --git a/Scripts/Towers/shapecast_tower.gd b/Scripts/Towers/shapecast_tower.gd deleted file mode 100644 index ad5536f..0000000 --- a/Scripts/Towers/shapecast_tower.gd +++ /dev/null @@ -1,47 +0,0 @@ -class_name ShapecastTower extends Tower - -@export var shapecast: ShapeCast3D -@export var particlesystem: GPUParticles3D -@export var status_stats: StatusStats - - -func _process(delta: float) -> void: - super._process(delta) - if target_finder.get_target(): - particlesystem.emitting = true - else: - particlesystem.emitting = false - - -func shoot() -> void: - for index: int in shapecast.get_collision_count(): - var target: CharacterBody3D = shapecast.get_collider(index) as CharacterBody3D - hit(target) - - -func aim() -> void: - yaw_model.look_at(target_finder.get_target().global_position) - pitch_model.look_at(target_finder.get_target().global_position) - pitch_model.rotation.x = 0.0 - - -func hit(target: CharacterBody3D) -> void: - if is_instance_valid(target) and target.alive: - target.damage(damage) - if Data.preferences.display_tower_damage_indicators: - spawn_damage_indicator(target.sprite.global_position) - target.status_manager.add_effect(build_status_object()) - if is_multiplayer_authority(): - networked_hit.rpc(get_tree().root.get_path_to(target)) - - -func build_status_object() -> StatusEffect: - var status: StatusEffect = StatusEffect.new() - status.stats = status_stats - return status - - -@rpc("reliable") -func networked_hit(target_node_path: String) -> void: - var target: CharacterBody3D = get_tree().root.get_node(target_node_path) as CharacterBody3D - hit(target) diff --git a/Scripts/Towers/status_applying_tower.gd b/Scripts/Towers/status_applying_tower.gd deleted file mode 100644 index 2de0e37..0000000 --- a/Scripts/Towers/status_applying_tower.gd +++ /dev/null @@ -1,21 +0,0 @@ -class_name StatusApplyingTower extends HitscanTower - -@export var status_stats: StatusStats - - -func shoot() -> void: - super.shoot() - if target_finder.get_target(): - target_finder.get_target().damage(damage) - target_finder.get_target().status_manager.add_effect(build_status_object()) - - -func build_status_object() -> StatusEffect: - var status: StatusEffect = StatusEffect.new() - status.stats = status_stats - return status - - -@rpc("reliable") -func networked_shoot() -> void: - super.networked_shoot() diff --git a/Scripts/Weapons/hitscan_weapon.gd b/Scripts/Weapons/hitscan_weapon.gd index ca81aec..f2e4527 100644 --- a/Scripts/Weapons/hitscan_weapon.gd +++ b/Scripts/Weapons/hitscan_weapon.gd @@ -19,7 +19,7 @@ func shoot() -> void: if raycast.is_colliding(): var target: CharacterBody3D = raycast.get_collider() if target != null: - var target_hitbox: Hitbox = target.shape_owner_get_owner(raycast.get_collider_shape()) + var target_hitbox: CollisionShape3D = target.shape_owner_get_owner(raycast.get_collider_shape()) if target_hitbox is Hitbox: hit(target, target_hitbox) if Data.preferences.display_self_damage_indicators: diff --git a/Scripts/Weapons/hitscan_weapon.gd.uid b/Scripts/Weapons/hitscan_weapon.gd.uid new file mode 100644 index 0000000..e3d324a --- /dev/null +++ b/Scripts/Weapons/hitscan_weapon.gd.uid @@ -0,0 +1 @@ +uid://bp3o5klntwmhd diff --git a/Scripts/Weapons/projectile_weapon.gd b/Scripts/Weapons/projectile_weapon.gd index 87390f9..8b9e7cd 100644 --- a/Scripts/Weapons/projectile_weapon.gd +++ b/Scripts/Weapons/projectile_weapon.gd @@ -20,7 +20,9 @@ func networked_shoot() -> void: func networked_spawn_projectile(peer_id: int, direction: Vector3) -> void: var projectile: Projectile = projectile_scene.instantiate() as Projectile projectile.position = global_position - projectile.damage = damage + var effect: Effect = Effect.new() + effect.damage = damage + projectile.effect = effect projectile.direction = direction projectile.force = force projectile.owner_id = peer_id diff --git a/Scripts/Weapons/projectile_weapon.gd.uid b/Scripts/Weapons/projectile_weapon.gd.uid new file mode 100644 index 0000000..c110758 --- /dev/null +++ b/Scripts/Weapons/projectile_weapon.gd.uid @@ -0,0 +1 @@ +uid://d2gdg2lcedfgg diff --git a/Scripts/Weapons/shapecast_weapon.gd.uid b/Scripts/Weapons/shapecast_weapon.gd.uid new file mode 100644 index 0000000..bbba0ff --- /dev/null +++ b/Scripts/Weapons/shapecast_weapon.gd.uid @@ -0,0 +1 @@ +uid://1l1qccgmp5ih diff --git a/Scripts/Weapons/status_applying_weapon.gd.uid b/Scripts/Weapons/status_applying_weapon.gd.uid new file mode 100644 index 0000000..c674227 --- /dev/null +++ b/Scripts/Weapons/status_applying_weapon.gd.uid @@ -0,0 +1 @@ +uid://dqcjfcecqhuec diff --git a/Scripts/Weapons/weapon.gd b/Scripts/Weapons/weapon.gd index c879a86..02ceaae 100644 --- a/Scripts/Weapons/weapon.gd +++ b/Scripts/Weapons/weapon.gd @@ -1,6 +1,7 @@ class_name Weapon extends Node3D -signal energy_changed(energy: int) +signal energy_spent(energy: int, type: Data.EnergyType) +signal energy_recharged(energy: int, type: Data.EnergyType) @export var stats: CardText @export var animator: AnimationPlayer @@ -13,7 +14,7 @@ var trigger_held: bool = false var second_trigger_held: bool = false var time_since_firing: float = 0.0 var time_between_shots: float = 0.0 -var damage: float = 0.0 +var damage: int = 0 var max_energy: float = 100.0 var current_energy: float = 100.0 var energy_cost: float = 1.0 @@ -21,12 +22,16 @@ var recharging: bool = false var recharge_speed: float = 0.0 var recharge_acceleration: float = 2.0 var recharge_max_speed: float = 25.0 +#var time_since_trigger: float = 0.0 +var prev_energy_int: int = 0.0 func _ready() -> void: time_between_shots = stats.get_attribute("Fire Delay") - damage = stats.get_attribute("Damage") - energy_cost = stats.get_attribute("Energy") + damage = int(stats.get_attribute("Damage")) + #energy_cost = stats.get_attribute("Energy") + max_energy = stats.get_attribute("Energy") + current_energy = max_energy func set_hero(value: Hero) -> void: @@ -41,22 +46,33 @@ func _process(delta: float) -> void: current_energy += recharge_speed * delta if current_energy >= max_energy: current_energy = max_energy - energy_changed.emit(current_energy) + recharging = false + if stats.energy_type == Data.EnergyType.CONTINUOUS: + energy_recharged.emit(recharge_speed * delta, stats.energy_type) + if stats.energy_type == Data.EnergyType.DISCRETE and int(current_energy) > prev_energy_int: + energy_recharged.emit(1, stats.energy_type) + prev_energy_int = int(current_energy) + #energy_changed.emit(current_energy) if time_since_firing < time_between_shots: time_since_firing += delta + if trigger_held and stats.energy_type == Data.EnergyType.CONTINUOUS: + current_energy -= delta + energy_spent.emit(delta, stats.energy_type) -func _physics_process(_delta: float) -> void: +func _physics_process(delta: float) -> void: if trigger_held and current_energy >= energy_cost and time_since_firing >= time_between_shots: + if stats.energy_type == Data.EnergyType.DISCRETE: + current_energy -= 1 + energy_spent.emit(1, stats.energy_type) time_since_firing -= time_between_shots - current_energy -= energy_cost - energy_changed.emit(current_energy) shoot() networked_shoot.rpc() func hold_trigger() -> void: trigger_held = true + recharge_timer.stop() func release_trigger() -> void: diff --git a/Scripts/Weapons/weapon.gd.uid b/Scripts/Weapons/weapon.gd.uid new file mode 100644 index 0000000..8a005f5 --- /dev/null +++ b/Scripts/Weapons/weapon.gd.uid @@ -0,0 +1 @@ +uid://blh4s3v07ycwa diff --git a/Scripts/a_star_graph_3d.gd b/Scripts/a_star_graph_3d.gd index 08ff8a6..18f68ab 100644 --- a/Scripts/a_star_graph_3d.gd +++ b/Scripts/a_star_graph_3d.gd @@ -6,10 +6,8 @@ var non_build_locations: Array = [] var astar: AStar3D = AStar3D.new() #TODO generalize this better -@export var start: Node3D @export var end: Node3D -@export var spawner: EnemySpawner -@export var visualized_path: VisualizedPath +@export var spawners: Array[EnemySpawner] @export var tower_path: Node var tower_base_scene: PackedScene = load("res://Scenes/TowerBase/tower_base.tscn") var tower_frame_scene: PackedScene = load("res://Scenes/tower_frame.tscn") @@ -19,6 +17,11 @@ var tower_frames: Array = [] var wall_id: int = 0 +func _ready() -> void: + for spawner: EnemySpawner in spawners: + spawner.astar = self + + func toggle_point(point_id: int, caller_id: int) -> void: networked_toggle_point.rpc(point_id, caller_id) @@ -210,15 +213,18 @@ func place_random_towers(tower_limit: int) -> void: func find_path() -> bool: - var path: PackedVector3Array = astar.get_point_path(astar.get_point_count() - 2, astar.get_point_count() - 1) - if !path.is_empty(): - var curve: Curve3D = Curve3D.new() - for point: Vector3 in path: - curve.add_point(point) - spawner.path.curve = curve - spawner.path.spawn_visualizer_points() - return true - return false + for spawn: EnemySpawner in spawners: + var path: PackedVector3Array = astar.get_point_path(spawn.astar_point_id, astar.get_point_count() - 1) + if !path.is_empty(): + var curve: Curve3D = Curve3D.new() + for point: Vector3 in path: + curve.add_point(point) + spawn.path.global_position = Vector3.ZERO + spawn.path.curve = curve + else: + return false + spawners[0].path.spawn_visualizer_points() + return true func make_grid() -> void: @@ -247,10 +253,12 @@ func make_grid() -> void: var west_point_id: int = grid_size.y * x + (y + 1) astar.connect_points(point_id, west_point_id, false) - non_build_locations.append(astar.get_point_count()) - astar.add_point(astar.get_point_count(), start.global_position) - for x: int in grid_size.y: - astar.connect_points(int(astar.get_point_count() - 1), x) + for spawn: EnemySpawner in spawners: + non_build_locations.append(astar.get_point_count()) + spawn.astar_point_id = astar.get_point_count() + astar.add_point(astar.get_point_count(), spawn.global_position) + for x: int in grid_size.y: + astar.connect_points(int(astar.get_point_count() - 1), x) non_build_locations.append(astar.get_point_count()) astar.add_point(astar.get_point_count(), end.global_position) for x: int in grid_size.y: diff --git a/Scripts/a_star_graph_3d.gd.uid b/Scripts/a_star_graph_3d.gd.uid new file mode 100644 index 0000000..58a6553 --- /dev/null +++ b/Scripts/a_star_graph_3d.gd.uid @@ -0,0 +1 @@ +uid://u404brdoaku diff --git a/Scripts/alert_popup.gd.uid b/Scripts/alert_popup.gd.uid new file mode 100644 index 0000000..9a9b883 --- /dev/null +++ b/Scripts/alert_popup.gd.uid @@ -0,0 +1 @@ +uid://4uwd40mavufi diff --git a/Scripts/audio_options.gd.uid b/Scripts/audio_options.gd.uid new file mode 100644 index 0000000..eb0c2cd --- /dev/null +++ b/Scripts/audio_options.gd.uid @@ -0,0 +1 @@ +uid://c4ljvgrb81du6 diff --git a/Scripts/card_hand.gd.uid b/Scripts/card_hand.gd.uid new file mode 100644 index 0000000..a01d411 --- /dev/null +++ b/Scripts/card_hand.gd.uid @@ -0,0 +1 @@ +uid://d6ejaumcenmg diff --git a/Scripts/chatbox.gd.uid b/Scripts/chatbox.gd.uid new file mode 100644 index 0000000..479a61f --- /dev/null +++ b/Scripts/chatbox.gd.uid @@ -0,0 +1 @@ +uid://dmdf7tbvc3bsg diff --git a/Scripts/cinema_cam.gd.uid b/Scripts/cinema_cam.gd.uid new file mode 100644 index 0000000..9756472 --- /dev/null +++ b/Scripts/cinema_cam.gd.uid @@ -0,0 +1 @@ +uid://yk54owkf7pgj diff --git a/Scripts/confirmation_popup.gd.uid b/Scripts/confirmation_popup.gd.uid new file mode 100644 index 0000000..199ff36 --- /dev/null +++ b/Scripts/confirmation_popup.gd.uid @@ -0,0 +1 @@ +uid://bjt72v1wym5ie diff --git a/corpse.gd b/Scripts/corpse.gd similarity index 100% rename from corpse.gd rename to Scripts/corpse.gd diff --git a/Scripts/corpse.gd.uid b/Scripts/corpse.gd.uid new file mode 100644 index 0000000..c9350bd --- /dev/null +++ b/Scripts/corpse.gd.uid @@ -0,0 +1 @@ +uid://mm665gsfr23a diff --git a/Scripts/damage_particle.gd.uid b/Scripts/damage_particle.gd.uid new file mode 100644 index 0000000..b7c7052 --- /dev/null +++ b/Scripts/damage_particle.gd.uid @@ -0,0 +1 @@ +uid://blt7umrgo3tfh diff --git a/Scripts/data.gd b/Scripts/data.gd index d12a7ec..11ba54e 100644 --- a/Scripts/data.gd +++ b/Scripts/data.gd @@ -4,16 +4,20 @@ var characters: Array[HeroClass] var cards: Array[Card] var enemies: Array[Enemy] var keymaps: Array[PlayerKeymap] +var mods: Dictionary[String, String] var graphics: PlayerGraphicsSettings var audio: PlayerAudioSettings var preferences: PlayerPreferences var player_profile: PlayerProfile var player_keymap: PlayerKeymap var player_controller_keymap: PlayerKeymap = preload("res://Resources/Keymaps/controller.tres") -var save_stats: SaveStats +var save_data: SaveData + +const DEFAULT_SERVER_PORT: int = 58008 var wall_cost: int = 1 var printer_cost: int = 15 +enum EnergyType {UNDEFINED = 0, DISCRETE = 1, CONTINUOUS = 2} enum TargetType {UNDEFINED = 0, LAND = 1, AIR = 2, BOTH = 3} enum EnemyType {UNDEFINED = 0, LAND = 1, AIR = 2} enum Rarity {COMMON = 0, UNCOMMON = 1, RARE = 2, EPIC = 3, LEGENDARY = 4} @@ -25,7 +29,80 @@ var rarity_weights: Dictionary = { "LEGENDARY" = 1 } + +## Recursively searches a folder for any Card resources and loads them +func load_cards(path: String) -> void: + cards = [] + var dir: DirAccess = DirAccess.open(path) + if dir: + dir.list_dir_begin() + var file_name: String = dir.get_next() + while file_name != "": + if dir.current_is_dir(): + load_cards(path + file_name) + else: + var card: Card = load(path + "/" + file_name) + if card: + cards.append(card) + file_name = dir.get_next() + + +func load_classes() -> void: + characters = [] + var dir: DirAccess = DirAccess.open("res://Classes") + if dir: + dir.list_dir_begin() + var folder_name: String = dir.get_next() + while folder_name != "": + if dir.current_is_dir(): + var dir2: DirAccess = DirAccess.open("res://Classes/" + folder_name) + if dir2: + dir2.list_dir_begin() + var folder_name2: String = dir2.get_next() + while folder_name2 != "": + if folder_name2 == "class.tres": + var hero_class: HeroClass = load("res://Classes/" + folder_name + "/" + folder_name2) + characters.append(hero_class) + folder_name2 = dir2.get_next() + else: + pass + folder_name = dir.get_next() + + +func load_mods(mod_list: Dictionary[String, bool]) -> void: + for mod_name: String in mod_list: + if mod_list[mod_name]: + var success: bool = ProjectSettings.load_resource_pack(mods[mod_name]) + if success: + print("Successfully loaded mod: " + mod_name + " at path: " + mods[mod_name]) + else: + print("Failed to load mod: " + mod_name + " at path: " + mods[mod_name]) + load_classes() + load_cards("res://Cards") + func _ready() -> void: + var mod_dir: DirAccess = DirAccess.open("res://Mods") + if mod_dir: + mod_dir.list_dir_begin() + var file_name: String = mod_dir.get_next() + while file_name != "": + if mod_dir.current_is_dir(): + var data_dir: DirAccess = DirAccess.open("res://Mods/" + file_name) + if data_dir: + data_dir.list_dir_begin() + var data_name: String = data_dir.get_next() + while data_name != "": + if data_name.ends_with(".json"): + var file: FileAccess = FileAccess.open("res://Mods/" + file_name + "/" + data_name, FileAccess.READ) + var json_string: String = file.get_line() + var json: JSON = JSON.new() + var parse_result: Error = json.parse(json_string) + if parse_result == OK: + var dict: Dictionary = json.data + mods[dict["display_name"]] = "res://Mods/" + file_name + "/" + dict["pck_path"] + data_name = data_dir.get_next() + file_name = mod_dir.get_next() + keymaps.append(preload("res://Resources/Keymaps/qwerty.tres")) keymaps.append(preload("res://Resources/Keymaps/azerty.tres")) keymaps.append(preload("res://Resources/Keymaps/dvorak.tres")) @@ -41,37 +118,15 @@ func _ready() -> void: player_keymap = PlayerKeymap.load_profile_from_disk() player_keymap.apply() player_controller_keymap.append_input_map() - save_stats = SaveStats.load_profile_from_disk() + save_data = SaveData.load_profile_from_disk() - characters.append(preload("res://PCs/Mechanic/red.tres")) - #characters.append(preload("res://PCs/Green/green.tres")) - characters.append(preload("res://PCs/Mage/blue.tres")) + load_classes() + load_cards("res://Cards") - #Common - cards.append(preload("res://PCs/Mechanic/ClassCards/Assault/card_assault.tres")) - cards.append(preload("res://PCs/Mechanic/ClassCards/BombLauncher/card_bomb_launcher.tres")) - cards.append(preload("res://PCs/Mechanic/ClassCards/Gatling/card_gatling.tres")) - cards.append(preload("res://PCs/Mechanic/ClassCards/RocketLauncher/card_rocket_launcher.tres")) - #Uncommon - cards.append(preload("res://PCs/Mechanic/ClassCards/Sniper/card_sniper.tres")) - cards.append(preload("res://PCs/Entomologist/ClassCards/Blowdart/card_blowdart.tres")) - cards.append(preload("res://PCs/Mage/ClassCards/Refrigerator/card_refrigerator.tres")) - cards.append(preload("res://PCs/Mechanic/ClassCards/GlueLauncher/card_glue_launcher.tres")) - #Rare - cards.append(preload("res://PCs/Mechanic/ClassCards/Flamethrower/card_flamethrower.tres")) - #cards.append(preload("res://PCs/Universal/ClassCards/DamageEnhancer/card_damage_enhancer.tres")) - #cards.append(preload("res://PCs/Universal/ClassCards/SpeedEnhancer/card_speed_enhancer.tres")) - #Epic - cards.append(preload("res://PCs/Mage/ClassCards/Icicle/card_icicle.tres")) - cards.append(preload("res://PCs/Mage/ClassCards/Fireball/card_fireball.tres")) - #cards.append(preload("res://PCs/Universal/ClassCards/GammaLaser/card_gamma_laser.tres")) - #Legendary - cards.append(preload("res://PCs/Mechanic/ClassCards/Reactor/card_reactor.tres")) - #cards.append(preload("res://PCs/Universal/ClassCards/Lightning/card_lightning.tres")) - - enemies.append(preload("res://Worlds/GreenPlanet/Enemies/dog.tres")) - enemies.append(preload("res://Worlds/GreenPlanet/Enemies/dog_fast.tres")) - enemies.append(preload("res://Worlds/GreenPlanet/Enemies/dog_heavy.tres")) - enemies.append(preload("res://Worlds/GreenPlanet/Enemies/dog_boss.tres")) - enemies.append(preload("res://Worlds/GreenPlanet/Enemies/airenemy.tres")) - enemies.append(preload("res://Worlds/GreenPlanet/Enemies/airenemy2.tres")) + enemies.append(preload("res://Resources/Enemies/dog.tres")) + enemies.append(preload("res://Resources/Enemies/dog_fast.tres")) + enemies.append(preload("res://Resources/Enemies/dog_heavy.tres")) + enemies.append(preload("res://Resources/Enemies/dog_boss.tres")) + enemies.append(preload("res://Resources/Enemies/airenemy.tres")) + enemies.append(preload("res://Resources/Enemies/airenemy2.tres")) + enemies.append(preload("res://Resources/Enemies/leapfrog.tres")) diff --git a/Scripts/data.gd.uid b/Scripts/data.gd.uid new file mode 100644 index 0000000..f00954a --- /dev/null +++ b/Scripts/data.gd.uid @@ -0,0 +1 @@ +uid://dod20lw3c8kqm diff --git a/Scripts/edit_tool.gd.uid b/Scripts/edit_tool.gd.uid new file mode 100644 index 0000000..ff3f28f --- /dev/null +++ b/Scripts/edit_tool.gd.uid @@ -0,0 +1 @@ +uid://ckm02cx0ai624 diff --git a/Scripts/effect.gd b/Scripts/effect.gd new file mode 100644 index 0000000..5db7028 --- /dev/null +++ b/Scripts/effect.gd @@ -0,0 +1,5 @@ +class_name Effect extends Resource + + +@export var damage: int = 0 +@export var status_effects: Array[StatusEffect] = [] diff --git a/Scripts/effect.gd.uid b/Scripts/effect.gd.uid new file mode 100644 index 0000000..3b60b14 --- /dev/null +++ b/Scripts/effect.gd.uid @@ -0,0 +1 @@ +uid://djp7tepdsda8w diff --git a/Scripts/eight_direction_sprite.gd.uid b/Scripts/eight_direction_sprite.gd.uid new file mode 100644 index 0000000..01c592a --- /dev/null +++ b/Scripts/eight_direction_sprite.gd.uid @@ -0,0 +1 @@ +uid://by8jxwui7chwl diff --git a/Scripts/enemy_card.gd b/Scripts/enemy_card.gd new file mode 100644 index 0000000..90772cd --- /dev/null +++ b/Scripts/enemy_card.gd @@ -0,0 +1,5 @@ +class_name EnemyCard extends RefCounted + + +var enemy: Enemy = null +var rarity: Data.Rarity = Data.Rarity.COMMON diff --git a/Scripts/enemy_card.gd.uid b/Scripts/enemy_card.gd.uid new file mode 100644 index 0000000..1faad26 --- /dev/null +++ b/Scripts/enemy_card.gd.uid @@ -0,0 +1 @@ +uid://brf6kradnuce8 diff --git a/Scripts/enemy_goal.gd.uid b/Scripts/enemy_goal.gd.uid new file mode 100644 index 0000000..85ec355 --- /dev/null +++ b/Scripts/enemy_goal.gd.uid @@ -0,0 +1 @@ +uid://cxwtuxytavfu5 diff --git a/Scripts/enemy_spawner.gd b/Scripts/enemy_spawner.gd index 66dda36..f741fa5 100644 --- a/Scripts/enemy_spawner.gd +++ b/Scripts/enemy_spawner.gd @@ -3,16 +3,20 @@ class_name EnemySpawner extends Node3D signal enemy_spawned() @export var land_enemy_scene: PackedScene +@export var leap_enemy_scene: PackedScene @export var air_enemy_scene: PackedScene -@export var own_id: int = 0 @export var path: VisualizedPath +var astar: AStarGraph3D +@export var own_id: int = 0 @export var type: Data.EnemyType @export var dest: Node3D @export var enemy_path: Node +var astar_point_id: int = 0 var enemy_died_callback: Callable var enemy_reached_goal_callback: Callable -var current_wave: Dictionary = {} +var current_wave: Array[EnemyCard] +var enemy_types_to_spawn: Dictionary = {} var enemy_spawn_timers: Dictionary = {} var enemies_spawned: Dictionary = {} var enemies_to_spawn: int = 0 @@ -26,7 +30,7 @@ func _process(delta: float) -> void: return for x: Enemy in enemy_spawn_timers: - if enemies_spawned[x] == current_wave[x]: + if enemies_spawned[x] == enemy_types_to_spawn[x]: continue var enemy_stats: Enemy = x @@ -35,12 +39,12 @@ func _process(delta: float) -> void: if enemy_spawn_timers[x] >= enemy_stats.spawn_cooldown: if is_multiplayer_authority(): if type == Data.EnemyType.LAND: - networked_spawn_land_enemy.rpc(var_to_str(enemy_stats), own_id, enemy_id) + networked_spawn_land_enemy.rpc(Data.enemies.find(enemy_stats), own_id, enemy_id) if type == Data.EnemyType.AIR: var radius: float = 10.0 var random_dir: Vector3 = Vector3(randf_range(-1, 1), randf_range(-1, 1), randf_range(-1, 1)) var random_pos: Vector3 = randf_range(0, radius) * random_dir.normalized() - networked_spawn_air_enemy.rpc(var_to_str(enemy_stats), random_pos, own_id, enemy_id) + networked_spawn_air_enemy.rpc(Data.enemies.find(enemy_stats), random_pos, own_id, enemy_id) enemy_spawn_timers[x] -= enemy_stats.spawn_cooldown enemy_spawned.emit() @@ -49,43 +53,64 @@ func _process(delta: float) -> void: enemies_to_spawn -= 1 +#TODO: not sure enemies need all this info over the network +#TODO: generalize enemy scene selection, i.e. store the scenes in the enemy +#card like towers do @rpc("reliable", "call_local") -func networked_spawn_land_enemy(enemy_stats: String, id1: int, id2: int) -> void: - var enemy: EnemyController = land_enemy_scene.instantiate() as EnemyController +func networked_spawn_land_enemy(enemy_stats: int, id1: int, id2: int) -> void: + var enemy: EnemyController + if enemy_stats != 6: + enemy = land_enemy_scene.instantiate() as EnemyController + else: + enemy = leap_enemy_scene.instantiate() as EnemyController enemy.name = str(id1) + str(id2) - enemy.stats = str_to_var(enemy_stats) + enemy.stats = Data.enemies[enemy_stats] enemy.died.connect(enemy_died_callback) enemy.reached_goal.connect(enemy_reached_goal_callback) enemy.movement_controller.path = path.curve + enemy.movement_controller.astar = astar enemy.position = global_position enemy_path.add_child(enemy) @rpc("reliable", "call_local") -func networked_spawn_air_enemy(enemy_stats: String, pos: Vector3, id1: int, id2: int) -> void: +func networked_spawn_air_enemy(enemy_stats: int, pos: Vector3, id1: int, id2: int) -> void: var enemy: EnemyController = air_enemy_scene.instantiate() as EnemyController enemy.name = str(id1) + str(id2) enemy.position = pos + global_position - enemy.stats = str_to_var(enemy_stats) + enemy.stats = Data.enemies[enemy_stats] enemy.died.connect(enemy_died_callback) enemy.reached_goal.connect(enemy_reached_goal_callback) enemy.movement_controller.goal = dest enemy_path.add_child(enemy) -func spawn_wave(value: Dictionary) -> void: - var relevant_enemies: Dictionary = {} - var wave: Dictionary = {} - for index: int in value: - wave[Data.enemies[index]] = value[index] - for x: Enemy in wave: - if x.target_type == type: - relevant_enemies[x] = wave[x] - current_wave = relevant_enemies +func spawn_wave() -> void: enemies_to_spawn = 0 enemy_spawn_timers = {} - for x: Enemy in current_wave: - enemies_to_spawn += current_wave[x] - enemy_spawn_timers[x] = 0.0 - enemies_spawned[x] = 0 + for card: EnemyCard in current_wave: + match(card.rarity): + Data.Rarity.COMMON: + enemy_types_to_spawn[card.enemy] += card.enemy.common_group + enemies_to_spawn += card.enemy.common_group + Data.Rarity.UNCOMMON: + enemy_types_to_spawn[card.enemy] += card.enemy.uncommon_group + enemies_to_spawn += card.enemy.uncommon_group + Data.Rarity.RARE: + enemy_types_to_spawn[card.enemy] += card.enemy.rare_group + enemies_to_spawn += card.enemy.rare_group + Data.Rarity.EPIC: + enemy_types_to_spawn[card.enemy] += card.enemy.epic_group + enemies_to_spawn += card.enemy.epic_group + Data.Rarity.LEGENDARY: + enemy_types_to_spawn[card.enemy] += card.enemy.legendary_group + enemies_to_spawn += card.enemy.legendary_group + enemy_spawn_timers[card.enemy] = 0.0 + enemies_spawned[card.enemy] = 0 + current_wave = [] done_spawning = false + + +func add_card(new_card: EnemyCard) -> void: + current_wave.append(new_card) + enemy_types_to_spawn[new_card.enemy] = 0 diff --git a/Scripts/enemy_spawner.gd.uid b/Scripts/enemy_spawner.gd.uid new file mode 100644 index 0000000..cf7e48e --- /dev/null +++ b/Scripts/enemy_spawner.gd.uid @@ -0,0 +1 @@ +uid://dkuxg6ek5us4f diff --git a/Scripts/float_and_spin.gd.uid b/Scripts/float_and_spin.gd.uid new file mode 100644 index 0000000..3d83b4e --- /dev/null +++ b/Scripts/float_and_spin.gd.uid @@ -0,0 +1 @@ +uid://cl2mi4bnpatwk diff --git a/Scripts/game.gd b/Scripts/game.gd index 409b15f..ee258e7 100644 --- a/Scripts/game.gd +++ b/Scripts/game.gd @@ -17,17 +17,16 @@ var singleplayer_lobby_scene_path: String = "res://Scenes/Menus/singleplayer_lob var game_end_scene: PackedScene = load("res://Scenes/Menus/GameEndScreen/game_end_screen.tscn") var connected_players_nodes: Dictionary = {} var game_active: bool = false +var gamemode: GameMode = null var level: Level var enemies: int = 0 var objective_health: int = 120 var wave: int = 0 -var endless_mode: bool = false -var upcoming_wave: Dictionary var pot: float var UILayer: CanvasLayer var chatbox: Chatbox var wave_limit: int = 20 -var starting_cash: int = 16 +var starting_cash: int = 25 var shop_chance: float = 0.0 var stats: RoundStats var rng: FastNoiseLite @@ -171,32 +170,41 @@ func spawn_enemy_wave() -> void: level.shop.close() wave += 1 level.a_star_graph_3d.find_path() - level.a_star_graph_3d.visualized_path.disable_visualization() level.a_star_graph_3d.disable_all_tower_frames() for spawn: EnemySpawner in level.enemy_spawns: - spawn.spawn_wave(upcoming_wave) + spawn.path.disable_visualization() + spawn.spawn_wave() wave_started.emit(wave) func set_upcoming_wave() -> void: if is_multiplayer_authority(): var spawn_power: int = WaveManager.calculate_spawn_power(wave + 1, connected_players_nodes.size()) - var new_wave: Dictionary = WaveManager.generate_wave(spawn_power, level.enemy_pool) - networked_set_upcoming_wave.rpc(new_wave, 6 + floori(spawn_power / 70.0)) + #var new_wave: Dictionary = WaveManager.generate_wave(spawn_power, level.enemy_pool) + var new_wave: Wave = WaveManager.generate_wave(spawn_power, level.enemy_pool, level.enemy_spawns) + temp_set_upcoming_wave(new_wave, floori(WaveManager.calculate_pot(wave + 1, connected_players_nodes.size()) / 20.0)) + #networked_set_upcoming_wave.rpc(new_wave, 6 + floori(spawn_power / 70.0)) -@rpc("reliable", "call_local") -func networked_set_upcoming_wave(wave_dict: Dictionary, coins: int) -> void: - upcoming_wave = wave_dict +func temp_set_upcoming_wave(wave: Wave, coins: int) -> void: pot = coins - for key: int in connected_players_nodes: - connected_players_nodes[key].hud.set_upcoming_wave(upcoming_wave) + connected_players_nodes[multiplayer.get_unique_id()].hud.show_wave_generation_anim(wave) + connected_players_nodes[multiplayer.get_unique_id()].hud.set_upcoming_wave(wave.to_dict()) + +#TODO: You'll probably have to write a to_dict function for the new wave system +#before any of this shit works in multiplayer +#@rpc("reliable", "call_local") +#func networked_set_upcoming_wave(wave_dict: Dictionary, coins: int) -> void: + #upcoming_wave = wave_dict + #pot = coins + #for key: int in connected_players_nodes: + #connected_players_nodes[key].hud.set_upcoming_wave(upcoming_wave) @rpc("reliable", "call_local") func networked_set_endless(value: bool) -> void: - endless_mode = value - if endless_mode: + gamemode.endless = value + if gamemode.endless: chatbox.append_message("SERVER", Color.TOMATO, "Endless mode enabled!") else: chatbox.append_message("SERVER", Color.TOMATO, "Endless mode disabled!") @@ -215,7 +223,7 @@ func enemy_died(enemy: Enemy) -> void: return if enemies == 0: end_wave() - if !endless_mode and wave >= wave_limit: + if !gamemode.endless and wave >= wave_limit: end(true) @@ -230,7 +238,7 @@ func damage_goal(enemy: Enemy, penalty: int) -> void: end(false) elif enemies == 0: end_wave() - if !endless_mode and wave >= wave_limit: + if !gamemode.endless and wave >= wave_limit: end(true) @@ -238,7 +246,8 @@ func end_wave() -> void: for peer_id: int in connected_players_nodes: connected_players_nodes[peer_id].currency += ceili(pot / connected_players_nodes.size()) connected_players_nodes[peer_id].unready_self() - level.a_star_graph_3d.visualized_path.enable_visualization() + for spawn: EnemySpawner in level.enemy_spawns: + spawn.path.enable_visualization() level.a_star_graph_3d.enable_non_path_tower_frames() if is_multiplayer_authority(): if randf_in_range(23 * wave, 0.0, 1.0) <= shop_chance: @@ -282,9 +291,9 @@ func setup() -> void: game_setup.emit() -func start(rng_seed: int = randi()) -> void: +func start() -> void: if is_multiplayer_authority(): - set_seed.rpc(rng_seed) + set_seed.rpc(gamemode.rng_seed) else: await rng_seeded @@ -305,14 +314,15 @@ func start(rng_seed: int = randi()) -> void: game_active = true chatbox.append_message("SERVER", Color.TOMATO, "Started with seed: " + str(rng.seed)) game_started.emit() + #print("started game with seed: " + str(gamemode.rng_seed)) func end(outcome: bool) -> void: if game_active == false: return game_active = false - Data.save_stats.add_game_outcome(outcome) - Data.save_stats.save_profile_to_disk() + Data.save_data.add_game_outcome(outcome) + Data.save_data.save_to_disc() var menu: GameEndScreen = game_end_scene.instantiate() as GameEndScreen match outcome: false: diff --git a/Scripts/game.gd.uid b/Scripts/game.gd.uid new file mode 100644 index 0000000..103dfb9 --- /dev/null +++ b/Scripts/game.gd.uid @@ -0,0 +1 @@ +uid://ocgd16bqo81s diff --git a/Scripts/game_mode.gd b/Scripts/game_mode.gd new file mode 100644 index 0000000..16c409d --- /dev/null +++ b/Scripts/game_mode.gd @@ -0,0 +1,7 @@ +class_name GameMode extends RefCounted + +var multiplayer: bool = false +var seeded: bool = false +var rng_seed: int = 0 +var endless: bool = false +var daily: bool = false diff --git a/Scripts/game_mode.gd.uid b/Scripts/game_mode.gd.uid new file mode 100644 index 0000000..338a092 --- /dev/null +++ b/Scripts/game_mode.gd.uid @@ -0,0 +1 @@ +uid://cbqxwt57eglct diff --git a/Scripts/gameplay_options.gd.uid b/Scripts/gameplay_options.gd.uid new file mode 100644 index 0000000..dc2ecd2 --- /dev/null +++ b/Scripts/gameplay_options.gd.uid @@ -0,0 +1 @@ +uid://dtrjph756oq1f diff --git a/Scripts/graphics_options.gd.uid b/Scripts/graphics_options.gd.uid new file mode 100644 index 0000000..eedee80 --- /dev/null +++ b/Scripts/graphics_options.gd.uid @@ -0,0 +1 @@ +uid://bpb5c5r1yi8um diff --git a/Scripts/health.gd b/Scripts/health.gd index b9b58ec..5da538c 100644 --- a/Scripts/health.gd +++ b/Scripts/health.gd @@ -8,6 +8,7 @@ signal health_changed(health: int) var current_health: int + func take_damage(damage: int) -> void: current_health -= damage health_changed.emit(current_health) diff --git a/Scripts/health.gd.uid b/Scripts/health.gd.uid new file mode 100644 index 0000000..1c78faf --- /dev/null +++ b/Scripts/health.gd.uid @@ -0,0 +1 @@ +uid://bamhci3kawuyt diff --git a/Scripts/health_bar.gd.uid b/Scripts/health_bar.gd.uid new file mode 100644 index 0000000..80a3333 --- /dev/null +++ b/Scripts/health_bar.gd.uid @@ -0,0 +1 @@ +uid://bf06es50d0flv diff --git a/Scripts/hitbox.gd b/Scripts/hitbox.gd index 44dc581..48fcfef 100644 --- a/Scripts/hitbox.gd +++ b/Scripts/hitbox.gd @@ -1,7 +1,7 @@ class_name Hitbox extends CollisionShape3D -signal took_damage(amount: float) +signal took_damage(amount: int) -func damage(amount: float) -> void: +func damage(amount: int) -> void: took_damage.emit(amount) diff --git a/Scripts/hitbox.gd.uid b/Scripts/hitbox.gd.uid new file mode 100644 index 0000000..a839ffd --- /dev/null +++ b/Scripts/hitbox.gd.uid @@ -0,0 +1 @@ +uid://cummt2be3r1gq diff --git a/Scripts/interact_button.gd b/Scripts/interact_button.gd index 3e29814..59e0d2b 100644 --- a/Scripts/interact_button.gd +++ b/Scripts/interact_button.gd @@ -4,8 +4,16 @@ signal button_interacted(value: int, callback: Hero) @export var button_press_value: int = 0 @export var press_cost: int = 0 -@export var hover_text: String = "#Interact# to [do thing]" +@export var hover_text: String = "[center]#Interact# to [do thing]" func press(callback_player: Hero) -> void: button_interacted.emit(button_press_value, callback_player) + + +func enable_hover_effect() -> void: + pass + + +func disable_hover_effect() -> void: + pass diff --git a/Scripts/interact_button.gd.uid b/Scripts/interact_button.gd.uid new file mode 100644 index 0000000..a1de94e --- /dev/null +++ b/Scripts/interact_button.gd.uid @@ -0,0 +1 @@ +uid://dkfswql8ui0bt diff --git a/Scripts/inventory.gd.uid b/Scripts/inventory.gd.uid new file mode 100644 index 0000000..52f4c7b --- /dev/null +++ b/Scripts/inventory.gd.uid @@ -0,0 +1 @@ +uid://do24iuot0j7d7 diff --git a/Scripts/item_card.gd.uid b/Scripts/item_card.gd.uid new file mode 100644 index 0000000..40a0eb3 --- /dev/null +++ b/Scripts/item_card.gd.uid @@ -0,0 +1 @@ +uid://1l7xhsd5prk1 diff --git a/Scripts/item_container.gd.uid b/Scripts/item_container.gd.uid new file mode 100644 index 0000000..050dbaa --- /dev/null +++ b/Scripts/item_container.gd.uid @@ -0,0 +1 @@ +uid://c0pqprebrhakh diff --git a/Scripts/key_icon_map.gd.uid b/Scripts/key_icon_map.gd.uid new file mode 100644 index 0000000..2c9b9e4 --- /dev/null +++ b/Scripts/key_icon_map.gd.uid @@ -0,0 +1 @@ +uid://nambgchluofc diff --git a/Scripts/keybind_options.gd.uid b/Scripts/keybind_options.gd.uid new file mode 100644 index 0000000..035a9c8 --- /dev/null +++ b/Scripts/keybind_options.gd.uid @@ -0,0 +1 @@ +uid://cxm67e833baex diff --git a/Scripts/killbox.gd.uid b/Scripts/killbox.gd.uid new file mode 100644 index 0000000..e2f483c --- /dev/null +++ b/Scripts/killbox.gd.uid @@ -0,0 +1 @@ +uid://cy6oj2hr8q8br diff --git a/Scripts/level.gd b/Scripts/level.gd index 5237e0b..184486a 100644 --- a/Scripts/level.gd +++ b/Scripts/level.gd @@ -2,7 +2,7 @@ class_name Level extends GridMap @export var enemy_pool: Array[Enemy] @export var player_spawns: Array[Node3D] -@export var enemy_spawns: Array[Node3D] +@export var enemy_spawns: Array[EnemySpawner] @export var enemy_goals: Array[Node3D] @export var corpses: Node3D @export var a_star_graph_3d: AStarGraph3D @@ -15,6 +15,7 @@ class_name Level extends GridMap func generate_obstacles() -> void: #print(str(multiplayer.get_unique_id()) + " spawning obstacles with seed: " + str(Game.rng.seed)) var obstacle_count: int = Game.randi_in_range(1, 0, 5) + obstacle_count = 0 for index: int in obstacle_count: var x: int = Game.randi_in_range(10 * index, 1 - a_star_graph_3d.grid_size.x, a_star_graph_3d.grid_size.x - 1) var y: int = Game.randi_in_range(32 * index, 1 - a_star_graph_3d.grid_size.y, a_star_graph_3d.grid_size.y - 1) @@ -34,7 +35,7 @@ func generate_obstacles() -> void: func cell_coord_to_astar_point(x: int, y: int) -> int: var center_point_x: int = floori(a_star_graph_3d.grid_size.x / 2.0) * a_star_graph_3d.grid_size.y var center_point_y: int = floori(a_star_graph_3d.grid_size.y / 2.0) - return (center_point_x + ((x / 2.0) * a_star_graph_3d.grid_size.y)) + (center_point_y + (y / 2.0)) + return (center_point_x + (int(x / 2.0) * a_star_graph_3d.grid_size.y)) + (center_point_y + int(y / 2.0)) func remove_world_tile(x: int, y: int) -> void: diff --git a/Scripts/level.gd.uid b/Scripts/level.gd.uid new file mode 100644 index 0000000..9ea279e --- /dev/null +++ b/Scripts/level.gd.uid @@ -0,0 +1 @@ +uid://cvejbo3srx8py diff --git a/Scripts/lifebar_segment.gd.uid b/Scripts/lifebar_segment.gd.uid new file mode 100644 index 0000000..11a58fe --- /dev/null +++ b/Scripts/lifebar_segment.gd.uid @@ -0,0 +1 @@ +uid://c3ark32u3lct8 diff --git a/Scripts/lives_bar.gd.uid b/Scripts/lives_bar.gd.uid new file mode 100644 index 0000000..63ac42c --- /dev/null +++ b/Scripts/lives_bar.gd.uid @@ -0,0 +1 @@ +uid://b3g3hofk5pbcp diff --git a/Scripts/loadout_editor.gd b/Scripts/loadout_editor.gd deleted file mode 100644 index 1035445..0000000 --- a/Scripts/loadout_editor.gd +++ /dev/null @@ -1,15 +0,0 @@ -class_name LoadoutEditor extends Panel - -signal character_selected(character: int) - - -func _ready() -> void: - for i: int in Data.characters.size(): - var button: Button = Button.new() - button.text = Data.characters[i].hero_name - button.pressed.connect(set_character.bind(i)) - $HBoxContainer.add_child(button) - - -func set_character(i: int) -> void: - character_selected.emit(i) diff --git a/Scripts/lobby.gd b/Scripts/lobby.gd new file mode 100644 index 0000000..26d38cf --- /dev/null +++ b/Scripts/lobby.gd @@ -0,0 +1,32 @@ +class_name Lobby extends Control + +@export var character_select_screen: PackedScene +#@export var scoreboard: Scoreboard +@export var chatbox: Chatbox +#@export var ready_button: Button +@export var audio_player: AudioStreamPlayer + +var gamemode: GameMode = null +var loadout_editor: CharacterSelect = null +var connected_players_profiles: Dictionary = {} +var enet_peer: ENetMultiplayerPeer = ENetMultiplayerPeer.new() + +func setup_the_ui() -> void: + #scoreboard.unready_all_players() + #scoreboard.set_visible(true) + loadout_editor.set_visible(true) + chatbox.set_visible(true) + #ready_button.set_visible(true) + + +func start_game() -> void: + Game.setup() + #scoreboard.set_visible(false) + loadout_editor.queue_free() + #ready_button.set_visible(false) + Game.connected_player_profiles = connected_players_profiles + Game.start() + + +func _on_button_mouse_entered() -> void: + audio_player.play() diff --git a/Scripts/lobby.gd.uid b/Scripts/lobby.gd.uid new file mode 100644 index 0000000..09cca14 --- /dev/null +++ b/Scripts/lobby.gd.uid @@ -0,0 +1 @@ +uid://5urxtxeml3pq diff --git a/Scripts/minimap_cam.gd.uid b/Scripts/minimap_cam.gd.uid new file mode 100644 index 0000000..d80292b --- /dev/null +++ b/Scripts/minimap_cam.gd.uid @@ -0,0 +1 @@ +uid://ckkioruqgbs8p diff --git a/Scripts/multiplayer_lobby.gd b/Scripts/multiplayer_lobby.gd index dacbf60..21c2075 100644 --- a/Scripts/multiplayer_lobby.gd +++ b/Scripts/multiplayer_lobby.gd @@ -1,20 +1,12 @@ -class_name MultiplayerLobby extends Control +class_name MultiplayerLobby extends Lobby signal player_connected(peer_id: int, player_profile: PlayerProfile) signal player_disconnected(peer_id: int) signal disconnected_from_server -const SERVER_PORT: int = 58008 -const MAX_PLAYERS: int = 4 - @export var server_form: ServerForm -@export var scoreboard: Scoreboard -@export var loadout_editor: HeroSelector -@export var chatbox: Chatbox -var enet_peer: ENetMultiplayerPeer = ENetMultiplayerPeer.new() var alert_popup_scene: PackedScene = preload("res://Scenes/Menus/alert_popup.tscn") -var connected_players_profiles: Dictionary = {} func _ready() -> void: @@ -53,15 +45,16 @@ func _on_server_disconnected() -> void: func create_server() -> void: - enet_peer.create_server(SERVER_PORT, MAX_PLAYERS) + enet_peer.create_server(server_form.port, server_form.max_players) multiplayer.multiplayer_peer = enet_peer setup_game(1) func setup_game(peer_id: int) -> void: + loadout_editor = character_select_screen.instantiate() as CharacterSelect + add_child(loadout_editor) player_disconnected.connect(Game.remove_player) scoreboard.all_players_ready.connect(start_game) - Game.game_setup.connect(setup_the_ui) Game.chatbox = chatbox chatbox.username = Data.player_profile.display_name Data.player_profile.display_name_changed.connect(chatbox.change_username) @@ -69,21 +62,11 @@ func setup_game(peer_id: int) -> void: loadout_editor.hero_selected.connect(edit_player_profile) connected_players_profiles[peer_id] = Data.player_profile player_connected.emit(peer_id, Data.player_profile) - Game.setup() - - -func setup_the_ui() -> void: - scoreboard.unready_all_players() - scoreboard.set_visible(true) - loadout_editor.set_visible(true) - $ReadyButton.set_visible(true) - chatbox.set_visible(true) + setup_the_ui() func connect_to_server() -> void: - var ip: String = server_form.get_server_ip() if server_form.get_server_ip() else "localhost" - var port: String = server_form.get_server_port() if server_form.get_server_port() else str(SERVER_PORT) - enet_peer.create_client(ip, int(port)) + enet_peer.create_client(server_form.ip, server_form.port) multiplayer.multiplayer_peer = enet_peer @@ -94,10 +77,7 @@ func ready_player() -> void: func start_game() -> void: enet_peer.refuse_new_connections = true - scoreboard.set_visible(false) - loadout_editor.set_visible(false) - Game.connected_player_profiles = connected_players_profiles - Game.start() + super.start_game() #TODO: what the fuck is this doing lol @@ -125,7 +105,3 @@ func add_player(new_player_profile_dict: Dictionary) -> void: @rpc("any_peer", "reliable", "call_local") func networked_ready_player(peer_id: int) -> void: scoreboard.set_player_ready_state(peer_id, true) - - -func _on_button_mouse_entered() -> void: - $AudioStreamPlayer.play() diff --git a/Scripts/multiplayer_lobby.gd.uid b/Scripts/multiplayer_lobby.gd.uid new file mode 100644 index 0000000..4176f39 --- /dev/null +++ b/Scripts/multiplayer_lobby.gd.uid @@ -0,0 +1 @@ +uid://cvm4lyhx1uh0w diff --git a/Scripts/on_top_camera.gd.uid b/Scripts/on_top_camera.gd.uid new file mode 100644 index 0000000..45b4297 --- /dev/null +++ b/Scripts/on_top_camera.gd.uid @@ -0,0 +1 @@ +uid://hy51bq7x0fy8 diff --git a/Scripts/options_menu.gd.uid b/Scripts/options_menu.gd.uid new file mode 100644 index 0000000..5edf961 --- /dev/null +++ b/Scripts/options_menu.gd.uid @@ -0,0 +1 @@ +uid://48rvmybi18wj diff --git a/Scripts/path_visual_thing.gd.uid b/Scripts/path_visual_thing.gd.uid new file mode 100644 index 0000000..66e6336 --- /dev/null +++ b/Scripts/path_visual_thing.gd.uid @@ -0,0 +1 @@ +uid://cr3sfjjo6l6n2 diff --git a/Scripts/pickup_notification.gd.uid b/Scripts/pickup_notification.gd.uid new file mode 100644 index 0000000..25ec7af --- /dev/null +++ b/Scripts/pickup_notification.gd.uid @@ -0,0 +1 @@ +uid://b6vynawytkd0k diff --git a/Scripts/round_stats.gd.uid b/Scripts/round_stats.gd.uid new file mode 100644 index 0000000..4758e09 --- /dev/null +++ b/Scripts/round_stats.gd.uid @@ -0,0 +1 @@ +uid://ca4me0i6h2xml diff --git a/Scripts/scoreboard.gd.uid b/Scripts/scoreboard.gd.uid new file mode 100644 index 0000000..059cda6 --- /dev/null +++ b/Scripts/scoreboard.gd.uid @@ -0,0 +1 @@ +uid://k0jvsnqw4766 diff --git a/Scripts/scoreboard_entry.gd.uid b/Scripts/scoreboard_entry.gd.uid new file mode 100644 index 0000000..9cbd7ce --- /dev/null +++ b/Scripts/scoreboard_entry.gd.uid @@ -0,0 +1 @@ +uid://bmcym1lkp0j8f diff --git a/Scripts/server_form.gd b/Scripts/server_form.gd index 62ea927..aa424b1 100644 --- a/Scripts/server_form.gd +++ b/Scripts/server_form.gd @@ -3,18 +3,35 @@ class_name ServerForm extends PanelContainer signal connect_button_pressed signal host_button_pressed +@export var ip_entry: LineEdit +@export var port_entry: LineEdit +@export var host_button: Button +@export var join_button: Button +@export var ip_field: HBoxContainer +@export var port_field: HBoxContainer +@export var players_field: HBoxContainer +@export var start_button: Button -func _on_host_pressed() -> void: - host_button_pressed.emit() - queue_free() -func _on_connect_pressed() -> void: - connect_button_pressed.emit() - queue_free() +var menu: int = 0 +var hosting: bool = false -func get_server_ip() -> String: - return $VBoxContainer/HBoxContainer/ServerIP.text -func get_server_port() -> String: - return $VBoxContainer/HBoxContainer2/ServerPort.text +var ip: String : + get: + return ip_entry.text if ip_entry.text != "" else "localhost" + set(_value): + return + +var port: int : + get: + return int(port_entry.text) if port_entry.text != "" and port_entry.text.is_valid_int() else Data.DEFAULT_SERVER_PORT + set(_value): + return + +var max_players: int : + get: + return int($VBoxContainer/PlayersField/HSlider.value) + set(_value): + return func _on_button_mouse_entered() -> void: @@ -22,4 +39,47 @@ func _on_button_mouse_entered() -> void: func _on_button_pressed() -> void: - Game.scene_switch_main_menu() + if menu == 0: + Game.scene_switch_main_menu() + else: + menu -= 1 + host_button.visible = true + join_button.visible = true + ip_field.visible = false + port_field.visible = false + players_field.visible = false + start_button.visible = false + ip_entry.clear() + port_entry.clear() + + +func _on_host_button_pressed() -> void: + menu += 1 + hosting = true + host_button.visible = false + join_button.visible = false + port_field.visible = true + players_field.visible = true + start_button.visible = true + + +func _on_join_button_pressed() -> void: + menu += 1 + hosting = false + host_button.visible = false + join_button.visible = false + ip_field.visible = true + port_field.visible = true + start_button.visible = true + + +func _on_start_button_pressed() -> void: + if hosting: + host_button_pressed.emit() + else: + connect_button_pressed.emit() + queue_free() + + +func _on_h_slider_value_changed(value: float) -> void: + $VBoxContainer/PlayersField/Label2.text = str(int(value)) diff --git a/Scripts/server_form.gd.uid b/Scripts/server_form.gd.uid new file mode 100644 index 0000000..3cea80b --- /dev/null +++ b/Scripts/server_form.gd.uid @@ -0,0 +1 @@ +uid://dyyhbd2pbfygi diff --git a/Scripts/singleplayer_lobby.gd b/Scripts/singleplayer_lobby.gd index d1b1c14..d358609 100644 --- a/Scripts/singleplayer_lobby.gd +++ b/Scripts/singleplayer_lobby.gd @@ -1,73 +1,20 @@ -class_name SinglePlayerLobby extends Control - -@export var scoreboard: Scoreboard -@export var loadout_editor: HeroSelector -@export var chatbox: Chatbox -@export var seed_entry: LineEdit -@export var ready_button: Button -@export var daily_button: Button - -var connected_players_profiles: Dictionary = {} -var enet_peer: ENetMultiplayerPeer = ENetMultiplayerPeer.new() +class_name SinglePlayerLobby extends Lobby func _ready() -> void: - enet_peer.create_server(58008, 1) + enet_peer.create_server(Data.DEFAULT_SERVER_PORT, 1) multiplayer.multiplayer_peer = enet_peer enet_peer.refuse_new_connections = true setup_game() func setup_game() -> void: - scoreboard.add_player(1, Data.player_profile) - scoreboard.all_players_ready.connect(start_game) - Game.game_setup.connect(setup_the_ui) + loadout_editor = character_select_screen.instantiate() as CharacterSelect + loadout_editor.hero_confirmed.connect(start_game) + add_child(loadout_editor) Game.chatbox = chatbox chatbox.username = Data.player_profile.display_name Data.player_profile.display_name_changed.connect(chatbox.change_username) loadout_editor.hero_selected.connect(Data.player_profile.set_preferred_class) connected_players_profiles[1] = Data.player_profile - Game.setup() - - -func start_game() -> void: - scoreboard.set_visible(false) - loadout_editor.set_visible(false) - seed_entry.set_visible(false) - daily_button.set_visible(false) - ready_button.set_visible(false) - Game.connected_player_profiles = connected_players_profiles - var chosen_seed: int - if seed_entry.text != "": - if seed_entry.text.is_valid_int(): - chosen_seed = int(seed_entry.text) - else: - chosen_seed = hash(seed_entry.text) - Game.start(chosen_seed) - else: - Game.start() - - -func setup_the_ui() -> void: - scoreboard.unready_all_players() - scoreboard.set_visible(true) - loadout_editor.set_visible(true) - $ReadyButton.set_visible(true) - chatbox.set_visible(true) - seed_entry.set_visible(true) - daily_button.set_visible(true) - ready_button.set_visible(true) - - -func _on_button_mouse_entered() -> void: - $AudioStreamPlayer.play() - - -func _on_daily_button_pressed() -> void: - scoreboard.set_visible(false) - loadout_editor.set_visible(false) - seed_entry.set_visible(false) - daily_button.set_visible(false) - ready_button.set_visible(false) - Game.connected_player_profiles = connected_players_profiles - Game.start(hash(Time.get_date_string_from_system(true))) + setup_the_ui() diff --git a/Scripts/singleplayer_lobby.gd.uid b/Scripts/singleplayer_lobby.gd.uid new file mode 100644 index 0000000..1b398d3 --- /dev/null +++ b/Scripts/singleplayer_lobby.gd.uid @@ -0,0 +1 @@ +uid://e5gf7hd5jsw3 diff --git a/Scripts/sprite_bobber.gd.uid b/Scripts/sprite_bobber.gd.uid new file mode 100644 index 0000000..5b7664f --- /dev/null +++ b/Scripts/sprite_bobber.gd.uid @@ -0,0 +1 @@ +uid://cp77etg1m1hc2 diff --git a/Scripts/status_effector.gd.uid b/Scripts/status_effector.gd.uid new file mode 100644 index 0000000..3dc1e61 --- /dev/null +++ b/Scripts/status_effector.gd.uid @@ -0,0 +1 @@ +uid://cojjgevmbhwal diff --git a/Scripts/target_dummy.gd.uid b/Scripts/target_dummy.gd.uid new file mode 100644 index 0000000..f73116c --- /dev/null +++ b/Scripts/target_dummy.gd.uid @@ -0,0 +1 @@ +uid://du13pv0e5fah diff --git a/Scripts/target_finder.gd b/Scripts/target_finder.gd index e74ff51..e8cf771 100644 --- a/Scripts/target_finder.gd +++ b/Scripts/target_finder.gd @@ -1,45 +1,47 @@ class_name TargetFinder extends Node +enum TARGETING_STRATEGY { + RANDOM = 0, + MOST_PROGRESSED = 1, +} + @export var tower: Tower @export var max_targets: int = 1 +@export var targeting_strategy: TARGETING_STRATEGY = TARGETING_STRATEGY.MOST_PROGRESSED -var target_cache: EnemyController -var multiple_targets_cache: Array[EnemyController] +#TODO: this was the quantum cache, so uh, maybe thats a godot bug ? +#var multiple_targets_cache: Array[EnemyController] +#var has_target: bool : + #get: + #return targets.size() > 0 + #set(_value): + #return +# +#var targets: Array[EnemyController] : + #get: + #return get_multiple_targets() + #set(_value): + #return +# +# +#func get_multiple_targets() -> Array[EnemyController]: + #var new_cache: Array[EnemyController] = [] + #for enemy: EnemyController in multiple_targets_cache: + #if is_instance_valid(enemy) and enemy.alive and enemy.global_position.distance_to(tower.global_position) <= tower.target_range: + #new_cache.append(enemy) + #if max_targets == 0 or new_cache.size() < max_targets: + #multiple_targets_cache = find_multiple_targets(new_cache) + #return multiple_targets_cache + +var targets: Array[EnemyController] : + get: + return find_multiple_targets() + set(_value): + return -func get_multiple_targets() -> Array[EnemyController]: - var new_cache: Array[EnemyController] = [] - for enemy: EnemyController in multiple_targets_cache: - if is_instance_valid(enemy) and enemy.alive and enemy.global_position.distance_to(tower.global_position) <= tower.target_range: - new_cache.append(enemy) - if new_cache.size() < max_targets: - multiple_targets_cache = find_multiple_targets(new_cache) - return multiple_targets_cache - - -func get_target() -> EnemyController: - if !is_instance_valid(target_cache) or !target_cache.alive or tower.global_position.distance_to(target_cache.global_position) > tower.target_range: - target_cache = find_enemy() - return target_cache - - -func find_enemy() -> EnemyController: - var most_progressed_enemy: EnemyController = null - for enemy: EnemyController in get_tree().get_nodes_in_group("Enemies"): - if tower.global_position.distance_to(enemy.global_position) > tower.target_range: - continue - var em_1: EnemyMovement = enemy.movement_controller as EnemyMovement - var em_2: EnemyMovement - if most_progressed_enemy != null: - em_2 = most_progressed_enemy.movement_controller as EnemyMovement - if (most_progressed_enemy == null or em_1.distance_remaining < em_2.distance_remaining) and enemy.stats.target_type & tower.stats.target_type: - most_progressed_enemy = enemy - return most_progressed_enemy - #TODO: Figure out how to multiplayer-ize this - #networked_acquire_target.rpc(get_tree().root.get_path_to(most_progressed_enemy)) - - -func find_multiple_targets(existing_cache: Array[EnemyController]) -> Array[EnemyController]: +#func find_multiple_targets(existing_cache: Array[EnemyController]) -> Array[EnemyController]: +func find_multiple_targets() -> Array[EnemyController]: var possible_enemies: Array[EnemyController] = [] for enemy: EnemyController in get_tree().get_nodes_in_group("Enemies"): if !is_instance_valid(enemy): @@ -48,15 +50,43 @@ func find_multiple_targets(existing_cache: Array[EnemyController]) -> Array[Enem continue if !(enemy.stats.target_type & tower.stats.target_type): continue - if multiple_targets_cache.has(enemy): - continue + #if multiple_targets_cache.has(enemy): + # continue possible_enemies.append(enemy) - for x: int in max_targets - existing_cache.size(): + #var enemies_to_select: int = max_targets - existing_cache.size() + var enemies: Array[EnemyController] = [] # temp cache, see above todo + var enemies_to_select: int = max_targets + if max_targets == 0: + enemies_to_select = possible_enemies.size() + for x: int in enemies_to_select: if possible_enemies.size() == 0: break - var chosen: EnemyController = possible_enemies.pick_random() + var chosen: EnemyController = null + match targeting_strategy: + TARGETING_STRATEGY.RANDOM: + chosen = select_random(possible_enemies) + TARGETING_STRATEGY.MOST_PROGRESSED: + chosen = select_most_progressed(possible_enemies) possible_enemies.erase(chosen) - existing_cache.append(chosen) + #existing_cache.append(chosen) + enemies.append(chosen) - return existing_cache + #return existing_cache + return enemies + + +func select_random(choices: Array[EnemyController]) -> EnemyController: + return choices.pick_random() + + +func select_most_progressed(choices: Array[EnemyController]) -> EnemyController: + var most_progressed_enemy: EnemyController = null + for enemy: EnemyController in choices: + var em_1: EnemyMovement = enemy.movement_controller as EnemyMovement + var em_2: EnemyMovement = null + if most_progressed_enemy != null: + em_2 = most_progressed_enemy.movement_controller as EnemyMovement + if (most_progressed_enemy == null or em_1.distance_remaining < em_2.distance_remaining): + most_progressed_enemy = enemy + return most_progressed_enemy diff --git a/Scripts/target_finder.gd.uid b/Scripts/target_finder.gd.uid new file mode 100644 index 0000000..14f1679 --- /dev/null +++ b/Scripts/target_finder.gd.uid @@ -0,0 +1 @@ +uid://rvnacmxsrh4w diff --git a/Scripts/text_input_popup.gd.uid b/Scripts/text_input_popup.gd.uid new file mode 100644 index 0000000..51e9e57 --- /dev/null +++ b/Scripts/text_input_popup.gd.uid @@ -0,0 +1 @@ +uid://b0asb3pmu8pqb diff --git a/Scripts/tower_base.gd.uid b/Scripts/tower_base.gd.uid new file mode 100644 index 0000000..67e9bd1 --- /dev/null +++ b/Scripts/tower_base.gd.uid @@ -0,0 +1 @@ +uid://si58bm4r7r2i diff --git a/Scripts/visualized_path.gd b/Scripts/visualized_path.gd index 0c63e97..2c463ef 100644 --- a/Scripts/visualized_path.gd +++ b/Scripts/visualized_path.gd @@ -15,6 +15,7 @@ func spawn_visualizer_points() -> void: #print(str(int(length)) + " / " + str(visualizer_points.size()) + ", diff: " + str(visualizer_points.size() - length)) for x: int in visualizer_points.size(): visualizer_points[x].progress_ratio = float(x) / visualizer_points.size() + enable_visualization() func disable_visualization() -> void: diff --git a/Scripts/visualized_path.gd.uid b/Scripts/visualized_path.gd.uid new file mode 100644 index 0000000..23f0bfe --- /dev/null +++ b/Scripts/visualized_path.gd.uid @@ -0,0 +1 @@ +uid://cd500cyj1tdyw diff --git a/Scripts/wave.gd b/Scripts/wave.gd new file mode 100644 index 0000000..0c5187e --- /dev/null +++ b/Scripts/wave.gd @@ -0,0 +1,24 @@ +class_name Wave extends RefCounted + + +var enemy_groups: Array[EnemyCard] + + +func to_dict() -> Dictionary: + var dict: Dictionary = {} + for group: EnemyCard in enemy_groups: + var enemy_count: int = 0 + if group.rarity == Data.Rarity.COMMON: + enemy_count = group.enemy.common_group + elif group.rarity == Data.Rarity.UNCOMMON: + enemy_count = group.enemy.uncommon_group + elif group.rarity == Data.Rarity.RARE: + enemy_count = group.enemy.rare_group + elif group.rarity == Data.Rarity.EPIC: + enemy_count = group.enemy.epic_group + elif group.rarity == Data.Rarity.LEGENDARY: + enemy_count = group.enemy.legendary_group + if !dict.has(Data.enemies.find(group.enemy)): + dict[Data.enemies.find(group.enemy)] = 0 + dict[Data.enemies.find(group.enemy)] += enemy_count + return dict diff --git a/Scripts/wave.gd.uid b/Scripts/wave.gd.uid new file mode 100644 index 0000000..f4fdab3 --- /dev/null +++ b/Scripts/wave.gd.uid @@ -0,0 +1 @@ +uid://demkh5cq1f2bo diff --git a/Scripts/wave_manager.gd b/Scripts/wave_manager.gd index ba9aacb..3f832bb 100644 --- a/Scripts/wave_manager.gd +++ b/Scripts/wave_manager.gd @@ -2,20 +2,110 @@ extends Node func calculate_spawn_power(wave_number: int, number_of_players: int) -> int: - return 20 + (50 * number_of_players) + (30 * wave_number) + return (20 * number_of_players) + (5 * wave_number) -func generate_wave(spawn_power: int, spawn_pool: Array[Enemy]) -> Dictionary: - var wave: Dictionary = {} - #var sp_used = 0 - var enemy_types: int = randi_range(1, 5) - var enemy_choices: Array[Enemy] = spawn_pool.duplicate() - var sp_allotment: int = floori(float(spawn_power) / float(enemy_types)) - for x: int in enemy_types: - var choice: Enemy = enemy_choices.pick_random() - enemy_choices.erase(choice) - if floori(float(sp_allotment) / float(choice.spawn_power)) > 0: - wave[Data.enemies.find(choice)] = floori(float(sp_allotment) / float(choice.spawn_power)) - #sp_used += wave[Data.enemies.find(choice)] * choice.spawn_power - #print("Generated wave with spawn power: " + str(sp_used) + "/" + str(spawn_power)) +func calculate_pot(wave_number: int, number_of_players: int) -> int: + return 20 + (50 * number_of_players) + (15 * wave_number) + + +#func generate_wave(spawn_power: int, spawn_pool: Array[Enemy]) -> Dictionary: + #var wave: Dictionary = {} + ##var sp_used = 0 + #var enemy_types: int = randi_range(1, 5) + #var enemy_choices: Array[Enemy] = spawn_pool.duplicate() + #var sp_allotment: int = floori(float(spawn_power) / float(enemy_types)) + #for x: int in enemy_types: + #var choice: Enemy = enemy_choices.pick_random() + #enemy_choices.erase(choice) + #if floori(float(sp_allotment) / float(choice.spawn_power)) > 0: + #wave[Data.enemies.find(choice)] = floori(float(sp_allotment) / float(choice.spawn_power)) + ##sp_used += wave[Data.enemies.find(choice)] * choice.spawn_power + ##print("Generated wave with spawn power: " + str(sp_used) + "/" + str(spawn_power)) + #return wave + + +#func generate_wave(spawn_power: int, spawn_pool: Array[Enemy], spawners: Array[EnemySpawner]) -> Wave: + #var wave: Wave = Wave.new() + #var new_card: EnemyCard = EnemyCard.new() + #new_card.enemy = Data.enemies[6] + #new_card.rarity = Data.Rarity.COMMON + #wave.enemy_groups.append(new_card) + #spawners[1].add_card(new_card) + #return wave + + +func generate_wave(spawn_power: int, spawn_pool: Array[Enemy], spawners: Array[EnemySpawner]) -> Wave: + var wave: Wave = Wave.new() + + var points: int = spawn_power / 10.0 + #print("Generating wave with " + str(points) + " points to spend") + while points > 0: + var new_card: EnemyCard = EnemyCard.new() + + #First, choose an enemy at random + new_card.enemy = Data.enemies.pick_random() + + #Next, we have to figure out if we can actually buy that enemy + #and, if not, then we have to pick a different enemy, repeat until + #we've successfully chosen one we can actually afford + var enemy_chosen: bool = false + var highest_rarity: Data.Rarity = Data.Rarity.COMMON + while !enemy_chosen: + #Next, determine which is the most expensive rarity we can afford + if new_card.enemy.legendary_cost <= points: + highest_rarity = Data.Rarity.LEGENDARY + enemy_chosen = true + elif new_card.enemy.epic_cost <= points: + highest_rarity = Data.Rarity.EPIC + enemy_chosen = true + elif new_card.enemy.rare_cost <= points: + highest_rarity = Data.Rarity.RARE + enemy_chosen = true + elif new_card.enemy.uncommon_cost <= points: + highest_rarity = Data.Rarity.UNCOMMON + enemy_chosen = true + elif new_card.enemy.common_cost <= points: + highest_rarity = Data.Rarity.COMMON + enemy_chosen = true + else: + #Even the common rarity was too expensive, so we have to choose + #a different enemy and try this process again + var enemy_id: int = Data.enemies.find(new_card.enemy) + if enemy_id <= 0: + new_card.enemy = Data.enemies[Data.enemies.size() - 1] + else: + new_card.enemy = Data.enemies[enemy_id - 1] + + #Now that we know which rarities we could afford, lets just choose a + #random one + var chosen_rarity: int = randi_range(0, highest_rarity) + new_card.rarity = chosen_rarity + + #Add that new enemy to the wave and spend the points! + wave.enemy_groups.append(new_card) + if chosen_rarity == Data.Rarity.COMMON: + points -= new_card.enemy.common_cost + elif chosen_rarity == Data.Rarity.UNCOMMON: + points -= new_card.enemy.uncommon_cost + elif chosen_rarity == Data.Rarity.RARE: + points -= new_card.enemy.rare_cost + elif chosen_rarity == Data.Rarity.EPIC: + points -= new_card.enemy.epic_cost + elif chosen_rarity == Data.Rarity.LEGENDARY: + points -= new_card.enemy.legendary_cost + + var ground_spawners: Array[EnemySpawner] = [] + var air_spawners: Array[EnemySpawner] = [] + for spawner: EnemySpawner in spawners: + if spawner.type == Data.EnemyType.LAND: + ground_spawners.append(spawner) + else: + air_spawners.append(spawner) + for card: EnemyCard in wave.enemy_groups: + if card.enemy.target_type == Data.EnemyType.LAND: + #TODO: make this use determinisic noise rng + ground_spawners.pick_random().add_card(card) + else: + air_spawners.pick_random().add_card(card) return wave diff --git a/Scripts/wave_manager.gd.uid b/Scripts/wave_manager.gd.uid new file mode 100644 index 0000000..00b87ab --- /dev/null +++ b/Scripts/wave_manager.gd.uid @@ -0,0 +1 @@ +uid://calubgxxr0ynw diff --git a/Towers/Ascension/tower.tscn b/Towers/Ascension/tower.tscn new file mode 100644 index 0000000..9ac935a --- /dev/null +++ b/Towers/Ascension/tower.tscn @@ -0,0 +1,86 @@ +[gd_scene load_steps=10 format=3 uid="uid://dk1pt2f1qya1m"] + +[ext_resource type="PackedScene" uid="uid://bvqu1heobgboe" path="res://Scenes/Towers/tower.tscn" id="1_stebd"] +[ext_resource type="Script" uid="uid://djp7tepdsda8w" path="res://Scripts/effect.gd" id="2_jbe1c"] +[ext_resource type="Script" uid="uid://chy7bx8dlwgs0" path="res://Scripts/StatusEffects/status_effect.gd" id="3_vxmma"] +[ext_resource type="PackedScene" uid="uid://cx8f6tsipvmls" path="res://ladder.tscn" id="4_eys8f"] +[ext_resource type="Material" uid="uid://chxjofsr2lq1r" path="res://new_standard_material_3d.tres" id="5_lny5m"] + +[sub_resource type="Resource" id="Resource_lny5m"] +script = ExtResource("2_jbe1c") +damage = 0 +status_effects = Array[ExtResource("3_vxmma")]([]) +metadata/_custom_type_script = "uid://djp7tepdsda8w" + +[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_4ibu2"] +height = 10.0 + +[sub_resource type="BoxShape3D" id="BoxShape3D_tdbe0"] +size = Vector3(3, 1, 3) + +[sub_resource type="BoxShape3D" id="BoxShape3D_iwla6"] +size = Vector3(7, 1, 3) + +[node name="Tower" instance=ExtResource("1_stebd")] +effect = SubResource("Resource_lny5m") + +[node name="Pitch" parent="." index="1"] +visible = false + +[node name="Yaw" parent="." index="2"] +visible = false + +[node name="Ladder2" parent="." index="6" instance=ExtResource("4_eys8f")] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="Ladder2" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.72894, 0) +shape = SubResource("CapsuleShape3D_4ibu2") + +[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Ladder2" index="1"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4.58316, 0) +material_override = ExtResource("5_lny5m") +height = 9.12903 + +[node name="StaticBody3D" type="StaticBody3D" parent="." index="7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 8.5, 0) +collision_layer = 32 + +[node name="CSGBox3D" type="CSGBox3D" parent="StaticBody3D" index="0"] +material_override = ExtResource("5_lny5m") +size = Vector3(3, 1, 1) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D" index="1"] +shape = SubResource("BoxShape3D_tdbe0") + +[node name="StaticBody3D2" type="StaticBody3D" parent="." index="8"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 8.5, 0) +collision_layer = 32 + +[node name="CSGBox3D" type="CSGBox3D" parent="StaticBody3D2" index="0"] +material_override = ExtResource("5_lny5m") +size = Vector3(3, 1, 1) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D2" index="1"] +shape = SubResource("BoxShape3D_tdbe0") + +[node name="StaticBody3D3" type="StaticBody3D" parent="." index="9"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 8.5, 2) +collision_layer = 32 + +[node name="CSGBox3D" type="CSGBox3D" parent="StaticBody3D3" index="0"] +material_override = ExtResource("5_lny5m") +size = Vector3(7, 1, 3) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D3" index="1"] +shape = SubResource("BoxShape3D_iwla6") + +[node name="StaticBody3D4" type="StaticBody3D" parent="." index="10"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 8.5, -2) +collision_layer = 32 + +[node name="CSGBox3D" type="CSGBox3D" parent="StaticBody3D4" index="0"] +material_override = ExtResource("5_lny5m") +size = Vector3(7, 1, 3) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D4" index="1"] +shape = SubResource("BoxShape3D_iwla6") diff --git a/Towers/Ascension/tower_stats.tres b/Towers/Ascension/tower_stats.tres new file mode 100644 index 0000000..4b5d7eb --- /dev/null +++ b/Towers/Ascension/tower_stats.tres @@ -0,0 +1,29 @@ +[gd_resource type="Resource" script_class="CardText" load_steps=6 format=3 uid="uid://c756rtt7ujowk"] + +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_tiqmf"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_bpl71"] + +[sub_resource type="Resource" id="Resource_tiqmf"] +script = ExtResource("1_tiqmf") +key = "Fire Delay" +value = 9999.0 +metadata/_custom_type_script = "uid://yjb0uv6og430" + +[sub_resource type="Resource" id="Resource_bpl71"] +script = ExtResource("1_tiqmf") +key = "Damage" +value = 0.0 +metadata/_custom_type_script = "uid://yjb0uv6og430" + +[sub_resource type="Resource" id="Resource_imnjp"] +script = ExtResource("1_tiqmf") +key = "Range " +value = 1.0 +metadata/_custom_type_script = "uid://yjb0uv6og430" + +[resource] +script = ExtResource("2_bpl71") +target_type = 2 +attributes = Array[ExtResource("1_tiqmf")]([SubResource("Resource_tiqmf"), SubResource("Resource_bpl71"), SubResource("Resource_imnjp")]) +text = "Grants access to a stable high canopy" +metadata/_custom_type_script = "uid://dg7gxxqfqxcmc" diff --git a/PCs/Mechanic/ClassCards/Assault/assaultmod.res b/Towers/Assault/assaultmod.res similarity index 100% rename from PCs/Mechanic/ClassCards/Assault/assaultmod.res rename to Towers/Assault/assaultmod.res diff --git a/Towers/Assault/assaultmod.res.depren b/Towers/Assault/assaultmod.res.depren new file mode 100644 index 0000000..e36bed5 Binary files /dev/null and b/Towers/Assault/assaultmod.res.depren differ diff --git a/PCs/Mechanic/ClassCards/Assault/assaultmodel.glb b/Towers/Assault/assaultmodel.glb similarity index 100% rename from PCs/Mechanic/ClassCards/Assault/assaultmodel.glb rename to Towers/Assault/assaultmodel.glb diff --git a/PCs/Mechanic/ClassCards/Assault/assaultmodel.glb.import b/Towers/Assault/assaultmodel.glb.import similarity index 73% rename from PCs/Mechanic/ClassCards/Assault/assaultmodel.glb.import rename to Towers/Assault/assaultmodel.glb.import index 9cbeb53..473ac4d 100644 --- a/PCs/Mechanic/ClassCards/Assault/assaultmodel.glb.import +++ b/Towers/Assault/assaultmodel.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://ciu2crn0o7htc" -path="res://.godot/imported/assaultmodel.glb-073600f1438ee9835f657eb91f1c5485.scn" +path="res://.godot/imported/assaultmodel.glb-c10acce7564bc135e02030461d695929.scn" [deps] -source_file="res://PCs/Mechanic/ClassCards/Assault/assaultmodel.glb" -dest_files=["res://.godot/imported/assaultmodel.glb-073600f1438ee9835f657eb91f1c5485.scn"] +source_file="res://Towers/Assault/assaultmodel.glb" +dest_files=["res://.godot/imported/assaultmodel.glb-c10acce7564bc135e02030461d695929.scn"] [params] @@ -17,6 +17,8 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true @@ -28,6 +30,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={ "meshes": { diff --git a/PCs/Mechanic/ClassCards/Assault/assaulttex.png b/Towers/Assault/assaulttex.png similarity index 100% rename from PCs/Mechanic/ClassCards/Assault/assaulttex.png rename to Towers/Assault/assaulttex.png diff --git a/PCs/Mechanic/ClassCards/Assault/assaulttex.png.import b/Towers/Assault/assaulttex.png.import similarity index 69% rename from PCs/Mechanic/ClassCards/Assault/assaulttex.png.import rename to Towers/Assault/assaulttex.png.import index 0b5b06d..df4cdb5 100644 --- a/PCs/Mechanic/ClassCards/Assault/assaulttex.png.import +++ b/Towers/Assault/assaulttex.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ndhxw3xc8gxq" -path="res://.godot/imported/assaulttex.png-08b38f9d8284c97f25704f353f842c2e.ctex" +path="res://.godot/imported/assaulttex.png-64041db54a52629948ed53cec383b97f.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/Assault/assaulttex.png" -dest_files=["res://.godot/imported/assaulttex.png-08b38f9d8284c97f25704f353f842c2e.ctex"] +source_file="res://Towers/Assault/assaulttex.png" +dest_files=["res://.godot/imported/assaulttex.png-64041db54a52629948ed53cec383b97f.ctex"] [params] diff --git a/Towers/Assault/tower_assault.tscn b/Towers/Assault/tower_assault.tscn new file mode 100644 index 0000000..4bde284 --- /dev/null +++ b/Towers/Assault/tower_assault.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=7 format=3 uid="uid://chbmp1ap8jc7"] + +[ext_resource type="PackedScene" uid="uid://43vmeyuurqfs" path="res://Scenes/Towers/direct_affect_tower.tscn" id="1_cn3qe"] +[ext_resource type="Resource" uid="uid://bdmsiw45xxhiv" path="res://Towers/Assault/tower_stats.tres" id="2_gg1gn"] +[ext_resource type="Script" uid="uid://djp7tepdsda8w" path="res://Scripts/effect.gd" id="3_75shm"] +[ext_resource type="ArrayMesh" uid="uid://oxjhqfwlcx5l" path="res://Towers/Assault/assaultmod.res" id="4_1d5pl"] +[ext_resource type="Script" uid="uid://chy7bx8dlwgs0" path="res://Scripts/StatusEffects/status_effect.gd" id="4_lkplr"] + +[sub_resource type="Resource" id="Resource_c6gqc"] +script = ExtResource("3_75shm") +damage = 0 +status_effects = Array[ExtResource("4_lkplr")]([]) + +[node name="DirectAffectTower" instance=ExtResource("1_cn3qe")] +stats = ExtResource("2_gg1gn") +effect = SubResource("Resource_c6gqc") + +[node name="Pitch" parent="." index="1"] +visible = false + +[node name="Yaw" parent="." index="2"] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 1.2058, 0) +mesh = ExtResource("4_1d5pl") diff --git a/PCs/Mechanic/ClassCards/Assault/tower_stats.tres b/Towers/Assault/tower_stats.tres similarity index 75% rename from PCs/Mechanic/ClassCards/Assault/tower_stats.tres rename to Towers/Assault/tower_stats.tres index 4195cec..5b77b45 100644 --- a/PCs/Mechanic/ClassCards/Assault/tower_stats.tres +++ b/Towers/Assault/tower_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=6 format=3 uid="uid://bdmsiw45xxhiv"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_qgv2j"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_7wr4x"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_qgv2j"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_7wr4x"] [sub_resource type="Resource" id="Resource_bukji"] script = ExtResource("1_qgv2j") @@ -21,5 +21,6 @@ value = 10.0 [resource] script = ExtResource("2_7wr4x") target_type = 1 +energy_type = 0 attributes = Array[ExtResource("1_qgv2j")]([SubResource("Resource_bukji"), SubResource("Resource_2e75s"), SubResource("Resource_1vpnf")]) text = "Fires a shot every /Fire Delay\\ seconds dealing /Damage\\ damage at a range of /Range\\m" diff --git a/PCs/Entomologist/ClassCards/Blowdart/blowdart.glb b/Towers/Blowdart/blowdart.glb similarity index 100% rename from PCs/Entomologist/ClassCards/Blowdart/blowdart.glb rename to Towers/Blowdart/blowdart.glb diff --git a/PCs/Entomologist/ClassCards/Blowdart/blowdart.glb.import b/Towers/Blowdart/blowdart.glb.import similarity index 73% rename from PCs/Entomologist/ClassCards/Blowdart/blowdart.glb.import rename to Towers/Blowdart/blowdart.glb.import index 6751344..e7ae94b 100644 --- a/PCs/Entomologist/ClassCards/Blowdart/blowdart.glb.import +++ b/Towers/Blowdart/blowdart.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://nhkh1qnqtll6" -path="res://.godot/imported/blowdart.glb-1332d0a1c6ed04bb994fd217aa768bc9.scn" +path="res://.godot/imported/blowdart.glb-b661790394110324296923c044d93a7b.scn" [deps] -source_file="res://PCs/Entomologist/ClassCards/Blowdart/blowdart.glb" -dest_files=["res://.godot/imported/blowdart.glb-1332d0a1c6ed04bb994fd217aa768bc9.scn"] +source_file="res://Towers/Blowdart/blowdart.glb" +dest_files=["res://.godot/imported/blowdart.glb-b661790394110324296923c044d93a7b.scn"] [params] @@ -17,6 +17,8 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true @@ -28,6 +30,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={ "meshes": { diff --git a/PCs/Entomologist/ClassCards/Blowdart/blowdart.res b/Towers/Blowdart/blowdart.res similarity index 100% rename from PCs/Entomologist/ClassCards/Blowdart/blowdart.res rename to Towers/Blowdart/blowdart.res diff --git a/Towers/Blowdart/blowdart.res.depren b/Towers/Blowdart/blowdart.res.depren new file mode 100644 index 0000000..6207daf Binary files /dev/null and b/Towers/Blowdart/blowdart.res.depren differ diff --git a/PCs/Entomologist/ClassCards/Blowdart/blowdarttex.png b/Towers/Blowdart/blowdarttex.png similarity index 100% rename from PCs/Entomologist/ClassCards/Blowdart/blowdarttex.png rename to Towers/Blowdart/blowdarttex.png diff --git a/PCs/Entomologist/ClassCards/Blowdart/blowdarttex.png.import b/Towers/Blowdart/blowdarttex.png.import similarity index 69% rename from PCs/Entomologist/ClassCards/Blowdart/blowdarttex.png.import rename to Towers/Blowdart/blowdarttex.png.import index 725c53a..f3f1082 100644 --- a/PCs/Entomologist/ClassCards/Blowdart/blowdarttex.png.import +++ b/Towers/Blowdart/blowdarttex.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cmgtiw6p50bbi" -path="res://.godot/imported/blowdarttex.png-a3f94d9ba5eca9577b641eb1a17d6997.ctex" +path="res://.godot/imported/blowdarttex.png-217bba6cc5b0ebe0adf1bfc9f0677e91.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Entomologist/ClassCards/Blowdart/blowdarttex.png" -dest_files=["res://.godot/imported/blowdarttex.png-a3f94d9ba5eca9577b641eb1a17d6997.ctex"] +source_file="res://Towers/Blowdart/blowdarttex.png" +dest_files=["res://.godot/imported/blowdarttex.png-217bba6cc5b0ebe0adf1bfc9f0677e91.ctex"] [params] diff --git a/Towers/Blowdart/tower_blowdart.tscn b/Towers/Blowdart/tower_blowdart.tscn new file mode 100644 index 0000000..96b2418 --- /dev/null +++ b/Towers/Blowdart/tower_blowdart.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=10 format=3 uid="uid://byyndhj0xoouf"] + +[ext_resource type="PackedScene" uid="uid://43vmeyuurqfs" path="res://Scenes/Towers/direct_affect_tower.tscn" id="1_u1o4e"] +[ext_resource type="Script" uid="uid://djp7tepdsda8w" path="res://Scripts/effect.gd" id="2_go6cw"] +[ext_resource type="Resource" uid="uid://cbskijhnnj3kw" path="res://Resources/StatusEffects/poisoned.tres" id="3_ix50y"] +[ext_resource type="Script" uid="uid://c6eghujlaqhwi" path="res://Scripts/StatusEffects/status_dot.gd" id="3_thmml"] +[ext_resource type="Resource" uid="uid://cfbap4o68urti" path="res://Towers/Blowdart/tower_stats.tres" id="4_1w7pa"] +[ext_resource type="Script" uid="uid://chy7bx8dlwgs0" path="res://Scripts/StatusEffects/status_effect.gd" id="4_3yh87"] +[ext_resource type="ArrayMesh" uid="uid://yxho5jipkwi2" path="res://Towers/Blowdart/blowdart.res" id="5_2kqqw"] + +[sub_resource type="Resource" id="Resource_075vp"] +script = ExtResource("3_thmml") +stats = ExtResource("3_ix50y") + +[sub_resource type="Resource" id="Resource_bwxwl"] +script = ExtResource("2_go6cw") +damage = 0 +status_effects = Array[ExtResource("4_3yh87")]([SubResource("Resource_075vp")]) + +[node name="DirectAffectTower" instance=ExtResource("1_u1o4e")] +stats = ExtResource("4_1w7pa") +effect = SubResource("Resource_bwxwl") + +[node name="Pitch" parent="." index="1"] +visible = false + +[node name="Yaw" parent="." index="2"] +transform = Transform3D(0.19, 0, 0, 0, 0.19, 0, 0, 0, 0.19, 0, 0.842628, 0) +mesh = ExtResource("5_2kqqw") diff --git a/PCs/Entomologist/ClassCards/Blowdart/tower_stats.tres b/Towers/Blowdart/tower_stats.tres similarity index 76% rename from PCs/Entomologist/ClassCards/Blowdart/tower_stats.tres rename to Towers/Blowdart/tower_stats.tres index c846cb8..cc35ab9 100644 --- a/PCs/Entomologist/ClassCards/Blowdart/tower_stats.tres +++ b/Towers/Blowdart/tower_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=6 format=3 uid="uid://cfbap4o68urti"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_otqsh"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_2k5i0"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_otqsh"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_2k5i0"] [sub_resource type="Resource" id="Resource_1txa7"] script = ExtResource("1_otqsh") diff --git a/PCs/Mechanic/ClassCards/BombLauncher/bombamod.glb b/Towers/BombLauncher/bombamod.glb similarity index 100% rename from PCs/Mechanic/ClassCards/BombLauncher/bombamod.glb rename to Towers/BombLauncher/bombamod.glb diff --git a/PCs/Mechanic/ClassCards/BombLauncher/bombamod.glb.import b/Towers/BombLauncher/bombamod.glb.import similarity index 73% rename from PCs/Mechanic/ClassCards/BombLauncher/bombamod.glb.import rename to Towers/BombLauncher/bombamod.glb.import index 21e81fb..80955e7 100644 --- a/PCs/Mechanic/ClassCards/BombLauncher/bombamod.glb.import +++ b/Towers/BombLauncher/bombamod.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://c7oec0i1k76et" -path="res://.godot/imported/bombamod.glb-ec24c701df24ed2f5be5a049d326f0e0.scn" +path="res://.godot/imported/bombamod.glb-117802fd80272dd9feeffac01483d192.scn" [deps] -source_file="res://PCs/Mechanic/ClassCards/BombLauncher/bombamod.glb" -dest_files=["res://.godot/imported/bombamod.glb-ec24c701df24ed2f5be5a049d326f0e0.scn"] +source_file="res://Towers/BombLauncher/bombamod.glb" +dest_files=["res://.godot/imported/bombamod.glb-117802fd80272dd9feeffac01483d192.scn"] [params] @@ -17,6 +17,8 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true @@ -28,6 +30,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={ "meshes": { diff --git a/PCs/Mechanic/ClassCards/BombLauncher/bombamodel.res b/Towers/BombLauncher/bombamodel.res similarity index 100% rename from PCs/Mechanic/ClassCards/BombLauncher/bombamodel.res rename to Towers/BombLauncher/bombamodel.res diff --git a/Towers/BombLauncher/bombamodel.res.depren b/Towers/BombLauncher/bombamodel.res.depren new file mode 100644 index 0000000..31f218c Binary files /dev/null and b/Towers/BombLauncher/bombamodel.res.depren differ diff --git a/PCs/Mechanic/ClassCards/BombLauncher/bombatex.png b/Towers/BombLauncher/bombatex.png similarity index 100% rename from PCs/Mechanic/ClassCards/BombLauncher/bombatex.png rename to Towers/BombLauncher/bombatex.png diff --git a/PCs/Mechanic/ClassCards/BombLauncher/bombatex.png.import b/Towers/BombLauncher/bombatex.png.import similarity index 70% rename from PCs/Mechanic/ClassCards/BombLauncher/bombatex.png.import rename to Towers/BombLauncher/bombatex.png.import index 6919e63..0b88360 100644 --- a/PCs/Mechanic/ClassCards/BombLauncher/bombatex.png.import +++ b/Towers/BombLauncher/bombatex.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cxwtwh2al18cb" -path="res://.godot/imported/bombatex.png-11a28bcdce03a3a9cf1fd79845aeb32c.ctex" +path="res://.godot/imported/bombatex.png-df385163499382b24d471f4ddfe7bd23.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/BombLauncher/bombatex.png" -dest_files=["res://.godot/imported/bombatex.png-11a28bcdce03a3a9cf1fd79845aeb32c.ctex"] +source_file="res://Towers/BombLauncher/bombatex.png" +dest_files=["res://.godot/imported/bombatex.png-df385163499382b24d471f4ddfe7bd23.ctex"] [params] diff --git a/Towers/BombLauncher/bombtower.tscn b/Towers/BombLauncher/bombtower.tscn new file mode 100644 index 0000000..53cbaf9 --- /dev/null +++ b/Towers/BombLauncher/bombtower.tscn @@ -0,0 +1,28 @@ +[gd_scene load_steps=8 format=3 uid="uid://bod84abxnnmdo"] + +[ext_resource type="PackedScene" uid="uid://bidr1m71pajma" path="res://Scenes/Towers/projectile_tower.tscn" id="1_b7osn"] +[ext_resource type="ArrayMesh" uid="uid://cbuu5w43qins8" path="res://Towers/BombLauncher/bombamodel.res" id="2_8yc3r"] +[ext_resource type="Script" uid="uid://djp7tepdsda8w" path="res://Scripts/effect.gd" id="2_kdbmn"] +[ext_resource type="Script" uid="uid://bs020rluyw3hs" path="res://Towers/BombLauncher/tower_bomb_launcher.gd" id="2_qwant"] +[ext_resource type="PackedScene" uid="uid://c8oq5unisjqne" path="res://Projectiles/Bomb/bomb_projectile.tscn" id="3_kdbmn"] +[ext_resource type="Script" uid="uid://chy7bx8dlwgs0" path="res://Scripts/StatusEffects/status_effect.gd" id="3_qwant"] + +[sub_resource type="Resource" id="Resource_twicp"] +script = ExtResource("2_kdbmn") +damage = 0 +status_effects = Array[ExtResource("3_qwant")]([]) +metadata/_custom_type_script = "uid://djp7tepdsda8w" + +[node name="ProjectileTower" instance=ExtResource("1_b7osn")] +script = ExtResource("2_qwant") +effect = SubResource("Resource_twicp") + +[node name="Pitch" parent="." index="1"] +visible = false + +[node name="Yaw" parent="." index="2"] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0.386736, 0) +mesh = ExtResource("2_8yc3r") + +[node name="SpawnAffect" parent="." index="6"] +spawn_scene = ExtResource("3_kdbmn") diff --git a/PCs/Mechanic/ClassCards/BombLauncher/tower_bomb_launcher.gd b/Towers/BombLauncher/tower_bomb_launcher.gd similarity index 51% rename from PCs/Mechanic/ClassCards/BombLauncher/tower_bomb_launcher.gd rename to Towers/BombLauncher/tower_bomb_launcher.gd index 7323d60..cd02cac 100644 --- a/PCs/Mechanic/ClassCards/BombLauncher/tower_bomb_launcher.gd +++ b/Towers/BombLauncher/tower_bomb_launcher.gd @@ -1,18 +1,20 @@ -class_name BombLauncherTower extends ProjectileTower +class_name BombLauncherTower extends Tower func _ready() -> void: super._ready() - force = sqrt((target_range * ProjectSettings.get_setting("physics/3d/default_gravity")) / sin(2 * 45)) + #TODO: this needs a getter/setter on target_range to make sure force is + #recalculated if target_range changes + affector.force = sqrt((target_range * ProjectSettings.get_setting("physics/3d/default_gravity")) / sin(2 * 45)) func aim() -> void: super.aim() var pos: Vector2 = Vector2(global_position.x, global_position.z) - var t_pos: Vector2 = Vector2(target_finder.get_target().global_position.x, target_finder.get_target().global_position.z) + var t_pos: Vector2 = Vector2(target_finder.targets[0].global_position.x, target_finder.targets[0].global_position.z) var x: float = pos.distance_to(t_pos) - var y: float = target_finder.get_target().global_position.y - yaw_model.global_position.y - var v: float = force + var y: float = target_finder.targets[0].global_position.y - yaw_model.global_position.y + var v: float = affector.force var g: float = ProjectSettings.get_setting("physics/3d/default_gravity") var v2: float = pow(v, 2) var angle: float = atan((v2 + sqrt(pow(v, 4) - g * ((g * pow(x, 2)) + (2 * y * v2)))) / (g * x)) diff --git a/Towers/BombLauncher/tower_bomb_launcher.gd.uid b/Towers/BombLauncher/tower_bomb_launcher.gd.uid new file mode 100644 index 0000000..3dc8992 --- /dev/null +++ b/Towers/BombLauncher/tower_bomb_launcher.gd.uid @@ -0,0 +1 @@ +uid://bs020rluyw3hs diff --git a/PCs/Mechanic/ClassCards/BombLauncher/tower_stats.tres b/Towers/BombLauncher/tower_stats.tres similarity index 75% rename from PCs/Mechanic/ClassCards/BombLauncher/tower_stats.tres rename to Towers/BombLauncher/tower_stats.tres index 85fe645..3b9790e 100644 --- a/PCs/Mechanic/ClassCards/BombLauncher/tower_stats.tres +++ b/Towers/BombLauncher/tower_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=6 format=3 uid="uid://8eaecilvan23"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_eglp5"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_1vuma"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_eglp5"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_1vuma"] [sub_resource type="Resource" id="Resource_yb48y"] script = ExtResource("1_eglp5") diff --git a/Towers/Fireball/fireballtower.tscn b/Towers/Fireball/fireballtower.tscn new file mode 100644 index 0000000..5f24f74 --- /dev/null +++ b/Towers/Fireball/fireballtower.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=10 format=3 uid="uid://bhbfd3prwqmyx"] + +[ext_resource type="PackedScene" uid="uid://bidr1m71pajma" path="res://Scenes/Towers/projectile_tower.tscn" id="1_hqry2"] +[ext_resource type="Script" uid="uid://djp7tepdsda8w" path="res://Scripts/effect.gd" id="2_rtffu"] +[ext_resource type="Script" uid="uid://chy7bx8dlwgs0" path="res://Scripts/StatusEffects/status_effect.gd" id="3_nwd61"] +[ext_resource type="Script" uid="uid://c6eghujlaqhwi" path="res://Scripts/StatusEffects/status_dot.gd" id="4_8dphr"] +[ext_resource type="Resource" uid="uid://dbanx8taicddm" path="res://Resources/StatusEffects/on_fire.tres" id="5_hih6e"] +[ext_resource type="ArrayMesh" uid="uid://d34yiqnnaie8r" path="res://Towers/Fireball/magetowermesh.res" id="6_yphct"] +[ext_resource type="PackedScene" uid="uid://ddpixntjsbpqp" path="res://Projectiles/Fireball/fireball_projectile.tscn" id="7_i3p2x"] + +[sub_resource type="Resource" id="Resource_sr3we"] +script = ExtResource("4_8dphr") +stats = ExtResource("5_hih6e") +metadata/_custom_type_script = "uid://c6eghujlaqhwi" + +[sub_resource type="Resource" id="Resource_bxn1b"] +script = ExtResource("2_rtffu") +damage = 0 +status_effects = Array[ExtResource("3_nwd61")]([SubResource("Resource_sr3we")]) +metadata/_custom_type_script = "uid://djp7tepdsda8w" + +[node name="ProjectileTower" instance=ExtResource("1_hqry2")] +effect = SubResource("Resource_bxn1b") + +[node name="Pitch" parent="." index="1"] +mesh = ExtResource("6_yphct") + +[node name="Yaw" parent="." index="2"] +transform = Transform3D(0.165, 0, 0, 0, 0.165, 0, 0, 0, 0.165, 0, 1.76777, 0) + +[node name="SpawnAffect" parent="." index="6"] +spawn_scene = ExtResource("7_i3p2x") diff --git a/PCs/Mage/ClassCards/Fireball/magetower.glb b/Towers/Fireball/magetower.glb similarity index 100% rename from PCs/Mage/ClassCards/Fireball/magetower.glb rename to Towers/Fireball/magetower.glb diff --git a/PCs/Mage/ClassCards/Fireball/magetower.glb.import b/Towers/Fireball/magetower.glb.import similarity index 73% rename from PCs/Mage/ClassCards/Fireball/magetower.glb.import rename to Towers/Fireball/magetower.glb.import index eefe857..93b286f 100644 --- a/PCs/Mage/ClassCards/Fireball/magetower.glb.import +++ b/Towers/Fireball/magetower.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://c4uxuc6cld2nq" -path="res://.godot/imported/magetower.glb-d2d2500e485613060f8b800e7c02de19.scn" +path="res://.godot/imported/magetower.glb-a9140869908a4a11a308886b478c3424.scn" [deps] -source_file="res://PCs/Mage/ClassCards/Fireball/magetower.glb" -dest_files=["res://.godot/imported/magetower.glb-d2d2500e485613060f8b800e7c02de19.scn"] +source_file="res://Towers/Fireball/magetower.glb" +dest_files=["res://.godot/imported/magetower.glb-a9140869908a4a11a308886b478c3424.scn"] [params] @@ -17,6 +17,8 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true @@ -28,6 +30,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={ "meshes": { diff --git a/PCs/Mage/ClassCards/Fireball/magetower.png b/Towers/Fireball/magetower.png similarity index 100% rename from PCs/Mage/ClassCards/Fireball/magetower.png rename to Towers/Fireball/magetower.png diff --git a/PCs/Mage/ClassCards/Fireball/magetower.png.import b/Towers/Fireball/magetower.png.import similarity index 70% rename from PCs/Mage/ClassCards/Fireball/magetower.png.import rename to Towers/Fireball/magetower.png.import index 5bf8642..8a1962d 100644 --- a/PCs/Mage/ClassCards/Fireball/magetower.png.import +++ b/Towers/Fireball/magetower.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ckqne5s30ifgb" -path="res://.godot/imported/magetower.png-563f4a98d6510c42d1706ee00b0930d2.ctex" +path="res://.godot/imported/magetower.png-41b8ad4b23ed898a3be91cee65c3f2a6.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mage/ClassCards/Fireball/magetower.png" -dest_files=["res://.godot/imported/magetower.png-563f4a98d6510c42d1706ee00b0930d2.ctex"] +source_file="res://Towers/Fireball/magetower.png" +dest_files=["res://.godot/imported/magetower.png-41b8ad4b23ed898a3be91cee65c3f2a6.ctex"] [params] diff --git a/PCs/Mage/ClassCards/Fireball/magetowermesh.res b/Towers/Fireball/magetowermesh.res similarity index 100% rename from PCs/Mage/ClassCards/Fireball/magetowermesh.res rename to Towers/Fireball/magetowermesh.res diff --git a/Towers/Fireball/magetowermesh.res.depren b/Towers/Fireball/magetowermesh.res.depren new file mode 100644 index 0000000..e92f0db Binary files /dev/null and b/Towers/Fireball/magetowermesh.res.depren differ diff --git a/PCs/Mage/ClassCards/Fireball/tower_stats.tres b/Towers/Fireball/tower_stats.tres similarity index 76% rename from PCs/Mage/ClassCards/Fireball/tower_stats.tres rename to Towers/Fireball/tower_stats.tres index a49f1e1..4ef49ea 100644 --- a/PCs/Mage/ClassCards/Fireball/tower_stats.tres +++ b/Towers/Fireball/tower_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=6 format=3 uid="uid://dnvqghpwyuw84"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_wvk31"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_nconk"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_wvk31"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_nconk"] [sub_resource type="Resource" id="Resource_68ba3"] script = ExtResource("1_wvk31") diff --git a/PCs/Mechanic/ClassCards/Flamethrower/flamethrower.png b/Towers/Flamethrower/flamethrower.png similarity index 100% rename from PCs/Mechanic/ClassCards/Flamethrower/flamethrower.png rename to Towers/Flamethrower/flamethrower.png diff --git a/PCs/Mechanic/ClassCards/Flamethrower/flamethrower.png.import b/Towers/Flamethrower/flamethrower.png.import similarity index 68% rename from PCs/Mechanic/ClassCards/Flamethrower/flamethrower.png.import rename to Towers/Flamethrower/flamethrower.png.import index fbc7bfa..b82097d 100644 --- a/PCs/Mechanic/ClassCards/Flamethrower/flamethrower.png.import +++ b/Towers/Flamethrower/flamethrower.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://33ebstkmuw2s" -path="res://.godot/imported/flamethrower.png-4e0bfe40fbd4f77b77136006bb324ee0.ctex" +path="res://.godot/imported/flamethrower.png-7a7db84bd3ba1dec3f2a68a5e37bb99c.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/Flamethrower/flamethrower.png" -dest_files=["res://.godot/imported/flamethrower.png-4e0bfe40fbd4f77b77136006bb324ee0.ctex"] +source_file="res://Towers/Flamethrower/flamethrower.png" +dest_files=["res://.godot/imported/flamethrower.png-7a7db84bd3ba1dec3f2a68a5e37bb99c.ctex"] [params] diff --git a/PCs/Mechanic/ClassCards/Flamethrower/flamethrower_mesh.res b/Towers/Flamethrower/flamethrower_mesh.res similarity index 100% rename from PCs/Mechanic/ClassCards/Flamethrower/flamethrower_mesh.res rename to Towers/Flamethrower/flamethrower_mesh.res diff --git a/Towers/Flamethrower/flamethrower_mesh.res.depren b/Towers/Flamethrower/flamethrower_mesh.res.depren new file mode 100644 index 0000000..97c4d93 Binary files /dev/null and b/Towers/Flamethrower/flamethrower_mesh.res.depren differ diff --git a/Towers/Flamethrower/tower_flamethrower.tscn b/Towers/Flamethrower/tower_flamethrower.tscn new file mode 100644 index 0000000..8fcc3f8 --- /dev/null +++ b/Towers/Flamethrower/tower_flamethrower.tscn @@ -0,0 +1,38 @@ +[gd_scene load_steps=11 format=3 uid="uid://h34khfekaemi"] + +[ext_resource type="PackedScene" uid="uid://kioik38usbqj" path="res://Scenes/Towers/area_tower.tscn" id="1_m6l05"] +[ext_resource type="Script" uid="uid://djp7tepdsda8w" path="res://Scripts/effect.gd" id="2_gkn1q"] +[ext_resource type="Script" uid="uid://chy7bx8dlwgs0" path="res://Scripts/StatusEffects/status_effect.gd" id="3_4h7vt"] +[ext_resource type="Resource" uid="uid://dbanx8taicddm" path="res://Resources/StatusEffects/on_fire.tres" id="3_aop2h"] +[ext_resource type="Resource" uid="uid://cdtjbxs21peqg" path="res://Towers/Flamethrower/tower_stats.tres" id="4_by7c8"] +[ext_resource type="Script" uid="uid://c6eghujlaqhwi" path="res://Scripts/StatusEffects/status_dot.gd" id="4_p8owx"] +[ext_resource type="ArrayMesh" uid="uid://b4p0d4y8fdeox" path="res://Towers/Flamethrower/flamethrower_mesh.res" id="5_tc7nr"] + +[sub_resource type="Resource" id="Resource_f5usv"] +script = ExtResource("4_p8owx") +stats = ExtResource("3_aop2h") + +[sub_resource type="Resource" id="Resource_wvbdd"] +script = ExtResource("2_gkn1q") +damage = 0 +status_effects = Array[ExtResource("3_4h7vt")]([SubResource("Resource_f5usv")]) + +[sub_resource type="SphereShape3D" id="SphereShape3D_tyf6m"] +radius = 3.0 + +[node name="FlamethrowerTower" instance=ExtResource("1_m6l05")] +stats = ExtResource("4_by7c8") +effect = SubResource("Resource_wvbdd") + +[node name="Pitch" parent="." index="1"] +transform = Transform3D(0.42, 0, 0, 0, 0.42, 0, 0, 0, 0.42, 0, 0.389397, 0) +mesh = ExtResource("5_tc7nr") + +[node name="ShapeCast3D" type="ShapeCast3D" parent="Pitch" index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.896251, 0) +shape = SubResource("SphereShape3D_tyf6m") +target_position = Vector3(0, 0, -3) +collision_mask = 4 + +[node name="AreaAffector" parent="." index="6" node_paths=PackedStringArray("shapecast")] +shapecast = NodePath("../Pitch/ShapeCast3D") diff --git a/PCs/Mechanic/ClassCards/Flamethrower/tower_stats.tres b/Towers/Flamethrower/tower_stats.tres similarity index 75% rename from PCs/Mechanic/ClassCards/Flamethrower/tower_stats.tres rename to Towers/Flamethrower/tower_stats.tres index 1655d00..46d6cb9 100644 --- a/PCs/Mechanic/ClassCards/Flamethrower/tower_stats.tres +++ b/Towers/Flamethrower/tower_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=6 format=3 uid="uid://cdtjbxs21peqg"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_ikp33"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_wptab"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_ikp33"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_wptab"] [sub_resource type="Resource" id="Resource_j28f4"] script = ExtResource("1_ikp33") diff --git a/PCs/Mechanic/ClassCards/Flamethrower/untirastflametled.glb b/Towers/Flamethrower/untirastflametled.glb similarity index 100% rename from PCs/Mechanic/ClassCards/Flamethrower/untirastflametled.glb rename to Towers/Flamethrower/untirastflametled.glb diff --git a/PCs/Mechanic/ClassCards/Flamethrower/untirastflametled.glb.import b/Towers/Flamethrower/untirastflametled.glb.import similarity index 72% rename from PCs/Mechanic/ClassCards/Flamethrower/untirastflametled.glb.import rename to Towers/Flamethrower/untirastflametled.glb.import index 3b83d2a..7b6ac9a 100644 --- a/PCs/Mechanic/ClassCards/Flamethrower/untirastflametled.glb.import +++ b/Towers/Flamethrower/untirastflametled.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://dw1inygy0r6l6" -path="res://.godot/imported/untirastflametled.glb-12e913b5d762efa0d6fd03caa51bf325.scn" +path="res://.godot/imported/untirastflametled.glb-3e525e34dfafc785ba26734cf1c5ce7f.scn" [deps] -source_file="res://PCs/Mechanic/ClassCards/Flamethrower/untirastflametled.glb" -dest_files=["res://.godot/imported/untirastflametled.glb-12e913b5d762efa0d6fd03caa51bf325.scn"] +source_file="res://Towers/Flamethrower/untirastflametled.glb" +dest_files=["res://.godot/imported/untirastflametled.glb-3e525e34dfafc785ba26734cf1c5ce7f.scn"] [params] @@ -17,6 +17,8 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true @@ -28,6 +30,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={ "meshes": { diff --git a/PCs/Mechanic/ClassCards/Gatling/gatling.glb b/Towers/Gatling/gatling.glb similarity index 100% rename from PCs/Mechanic/ClassCards/Gatling/gatling.glb rename to Towers/Gatling/gatling.glb diff --git a/PCs/Mechanic/ClassCards/Gatling/gatling.glb.import b/Towers/Gatling/gatling.glb.import similarity index 73% rename from PCs/Mechanic/ClassCards/Gatling/gatling.glb.import rename to Towers/Gatling/gatling.glb.import index 113c796..7595534 100644 --- a/PCs/Mechanic/ClassCards/Gatling/gatling.glb.import +++ b/Towers/Gatling/gatling.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://c8l43de2o07kb" -path="res://.godot/imported/gatling.glb-b1cdb057de83f85b535d782b44473471.scn" +path="res://.godot/imported/gatling.glb-9b04db40ae4eb581b3e55543c00cd70d.scn" [deps] -source_file="res://PCs/Mechanic/ClassCards/Gatling/gatling.glb" -dest_files=["res://.godot/imported/gatling.glb-b1cdb057de83f85b535d782b44473471.scn"] +source_file="res://Towers/Gatling/gatling.glb" +dest_files=["res://.godot/imported/gatling.glb-9b04db40ae4eb581b3e55543c00cd70d.scn"] [params] @@ -17,6 +17,8 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true @@ -28,6 +30,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={ "meshes": { diff --git a/PCs/Mechanic/ClassCards/Gatling/gatling.png b/Towers/Gatling/gatling.png similarity index 100% rename from PCs/Mechanic/ClassCards/Gatling/gatling.png rename to Towers/Gatling/gatling.png diff --git a/PCs/Mechanic/ClassCards/Gatling/gatling.png.import b/Towers/Gatling/gatling.png.import similarity index 70% rename from PCs/Mechanic/ClassCards/Gatling/gatling.png.import rename to Towers/Gatling/gatling.png.import index 3f07d04..5bb8354 100644 --- a/PCs/Mechanic/ClassCards/Gatling/gatling.png.import +++ b/Towers/Gatling/gatling.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bjh6e8t8br6rq" -path="res://.godot/imported/gatling.png-5b9cafa84c7fff64bbbb5f97ee9dcdd4.ctex" +path="res://.godot/imported/gatling.png-3c782a94494355068a82b7d51ccf2fce.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/Gatling/gatling.png" -dest_files=["res://.godot/imported/gatling.png-5b9cafa84c7fff64bbbb5f97ee9dcdd4.ctex"] +source_file="res://Towers/Gatling/gatling.png" +dest_files=["res://.godot/imported/gatling.png-3c782a94494355068a82b7d51ccf2fce.ctex"] [params] diff --git a/PCs/Mechanic/ClassCards/Gatling/gattlemesh.res b/Towers/Gatling/gattlemesh.res similarity index 100% rename from PCs/Mechanic/ClassCards/Gatling/gattlemesh.res rename to Towers/Gatling/gattlemesh.res diff --git a/Towers/Gatling/gattlemesh.res.depren b/Towers/Gatling/gattlemesh.res.depren new file mode 100644 index 0000000..807b5cd Binary files /dev/null and b/Towers/Gatling/gattlemesh.res.depren differ diff --git a/PCs/Mechanic/ClassCards/Gatling/tower_gatling.gd b/Towers/Gatling/tower_gatling.gd similarity index 93% rename from PCs/Mechanic/ClassCards/Gatling/tower_gatling.gd rename to Towers/Gatling/tower_gatling.gd index 95eb47b..d789027 100644 --- a/PCs/Mechanic/ClassCards/Gatling/tower_gatling.gd +++ b/Towers/Gatling/tower_gatling.gd @@ -1,4 +1,4 @@ -class_name GatlingTower extends HitscanTower +class_name GatlingTower extends Tower var time_since_firing_started: float = 0.0 var time_to_reach_max_speed: float = 0.0 @@ -20,7 +20,7 @@ func _process(delta: float) -> void: func _physics_process(delta: float) -> void: - if !target_finder.get_target(): + if !target_finder.targets.size() > 0: time_since_firing_started = 0.0 current_time_between_shots = time_between_shots else: diff --git a/Towers/Gatling/tower_gatling.gd.uid b/Towers/Gatling/tower_gatling.gd.uid new file mode 100644 index 0000000..27e8cbb --- /dev/null +++ b/Towers/Gatling/tower_gatling.gd.uid @@ -0,0 +1 @@ +uid://b43lbaanefmj3 diff --git a/Towers/Gatling/tower_gatling.tscn b/Towers/Gatling/tower_gatling.tscn new file mode 100644 index 0000000..279e705 --- /dev/null +++ b/Towers/Gatling/tower_gatling.tscn @@ -0,0 +1,77 @@ +[gd_scene load_steps=13 format=3 uid="uid://ci822ash3mbhi"] + +[ext_resource type="Script" uid="uid://b43lbaanefmj3" path="res://Towers/Gatling/tower_gatling.gd" id="2_ipjp1"] +[ext_resource type="Script" uid="uid://rvnacmxsrh4w" path="res://Scripts/target_finder.gd" id="3_co24a"] +[ext_resource type="Resource" uid="uid://nxl5wabgl36t" path="res://Towers/Gatling/tower_stats.tres" id="3_oicqw"] +[ext_resource type="Script" uid="uid://djp7tepdsda8w" path="res://Scripts/effect.gd" id="3_tykap"] +[ext_resource type="Script" uid="uid://chy7bx8dlwgs0" path="res://Scripts/StatusEffects/status_effect.gd" id="4_sc4bm"] +[ext_resource type="Script" uid="uid://8d0a4uc2i0ti" path="res://Scripts/Affectors/direct_affect.gd" id="4_v2roj"] +[ext_resource type="ArrayMesh" uid="uid://dler7wcqj0bm6" path="res://Towers/Gatling/gattlemesh.res" id="4_wihc0"] + +[sub_resource type="Resource" id="Resource_7ovr8"] +script = ExtResource("3_tykap") +damage = 0 +status_effects = Array[ExtResource("4_sc4bm")]([]) + +[sub_resource type="Animation" id="Animation_vk4a8"] +resource_name = "shoot" + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_cebsq"] +_data = { +&"shoot": SubResource("Animation_vk4a8") +} + +[sub_resource type="BoxMesh" id="BoxMesh_42byu"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1ucq4"] +transparency = 1 +cull_mode = 1 +shading_mode = 0 +albedo_color = Color(1, 0, 0.415686, 0.223529) + +[node name="DirectAffectTower" type="Node3D" node_paths=PackedStringArray("target_finder", "affector", "animator", "pitch_model", "yaw_model", "range_indicator", "audio_player")] +script = ExtResource("2_ipjp1") +stats = ExtResource("3_oicqw") +target_finder = NodePath("TargetFinder") +affector = NodePath("DirectAffect") +animator = NodePath("AnimationPlayer") +pitch_model = NodePath("Pitch") +yaw_model = NodePath("Yaw") +range_indicator = NodePath("CSGSphere3D") +audio_player = NodePath("Yaw/AudioStreamPlayer3D") +effect = SubResource("Resource_7ovr8") + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_cebsq") +} + +[node name="Pitch" type="MeshInstance3D" parent="."] +visible = false +mesh = SubResource("BoxMesh_42byu") + +[node name="Yaw" type="MeshInstance3D" parent="."] +transform = Transform3D(0.3, 0, 0, 0, 0.3, 0, 0, 0, 0.3, 0, 0.515143, 0) +mesh = ExtResource("4_wihc0") + +[node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="Yaw"] +bus = &"SFX" + +[node name="MinimapIcon" type="Sprite3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0) +layers = 4 + +[node name="CSGSphere3D" type="CSGSphere3D" parent="."] +visible = false +layers = 5 +radius = 10.0 +radial_segments = 16 +rings = 16 +material = SubResource("StandardMaterial3D_1ucq4") + +[node name="TargetFinder" type="Node" parent="." node_paths=PackedStringArray("tower")] +script = ExtResource("3_co24a") +tower = NodePath("..") + +[node name="DirectAffect" type="Node" parent="."] +script = ExtResource("4_v2roj") diff --git a/PCs/Mechanic/ClassCards/Gatling/tower_stats.tres b/Towers/Gatling/tower_stats.tres similarity index 82% rename from PCs/Mechanic/ClassCards/Gatling/tower_stats.tres rename to Towers/Gatling/tower_stats.tres index 205e294..899330d 100644 --- a/PCs/Mechanic/ClassCards/Gatling/tower_stats.tres +++ b/Towers/Gatling/tower_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=8 format=3 uid="uid://nxl5wabgl36t"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_w20qq"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_ky46y"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_w20qq"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_ky46y"] [sub_resource type="Resource" id="Resource_oayfg"] script = ExtResource("1_w20qq") @@ -31,6 +31,7 @@ value = 3.0 [resource] script = ExtResource("2_ky46y") target_type = 1 +energy_type = 0 attributes = Array[ExtResource("1_w20qq")]([SubResource("Resource_oayfg"), SubResource("Resource_fekle"), SubResource("Resource_ud8xi"), SubResource("Resource_cvkxf"), SubResource("Resource_pivwn")]) text = "Fires a shot every /Fire Delay\\ seconds dealing /Damage\\ damage at a range of /Range\\m diff --git a/PCs/Mechanic/ClassCards/GlueLauncher/glue_launcher_model.res b/Towers/GlueLauncher/glue_launcher_model.res similarity index 100% rename from PCs/Mechanic/ClassCards/GlueLauncher/glue_launcher_model.res rename to Towers/GlueLauncher/glue_launcher_model.res diff --git a/Towers/GlueLauncher/glue_launcher_model.res.depren b/Towers/GlueLauncher/glue_launcher_model.res.depren new file mode 100644 index 0000000..65d0287 Binary files /dev/null and b/Towers/GlueLauncher/glue_launcher_model.res.depren differ diff --git a/PCs/Mechanic/ClassCards/GlueLauncher/gluegun.glb b/Towers/GlueLauncher/gluegun.glb similarity index 100% rename from PCs/Mechanic/ClassCards/GlueLauncher/gluegun.glb rename to Towers/GlueLauncher/gluegun.glb diff --git a/PCs/Mechanic/ClassCards/GlueLauncher/gluegun.glb.import b/Towers/GlueLauncher/gluegun.glb.import similarity index 73% rename from PCs/Mechanic/ClassCards/GlueLauncher/gluegun.glb.import rename to Towers/GlueLauncher/gluegun.glb.import index 89a0bf3..cc1d90f 100644 --- a/PCs/Mechanic/ClassCards/GlueLauncher/gluegun.glb.import +++ b/Towers/GlueLauncher/gluegun.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://dd2lht485rtdu" -path="res://.godot/imported/gluegun.glb-a62ec3086901b47fbe2d5360451456ee.scn" +path="res://.godot/imported/gluegun.glb-09984f582a191dc2416989c9e2ab39bd.scn" [deps] -source_file="res://PCs/Mechanic/ClassCards/GlueLauncher/gluegun.glb" -dest_files=["res://.godot/imported/gluegun.glb-a62ec3086901b47fbe2d5360451456ee.scn"] +source_file="res://Towers/GlueLauncher/gluegun.glb" +dest_files=["res://.godot/imported/gluegun.glb-09984f582a191dc2416989c9e2ab39bd.scn"] [params] @@ -17,6 +17,8 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true @@ -28,6 +30,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={ "meshes": { diff --git a/PCs/Mechanic/ClassCards/GlueLauncher/glueguntex.png b/Towers/GlueLauncher/glueguntex.png similarity index 100% rename from PCs/Mechanic/ClassCards/GlueLauncher/glueguntex.png rename to Towers/GlueLauncher/glueguntex.png diff --git a/PCs/Mechanic/ClassCards/GlueLauncher/glueguntex.png.import b/Towers/GlueLauncher/glueguntex.png.import similarity index 69% rename from PCs/Mechanic/ClassCards/GlueLauncher/glueguntex.png.import rename to Towers/GlueLauncher/glueguntex.png.import index eebca5d..b5d1cfc 100644 --- a/PCs/Mechanic/ClassCards/GlueLauncher/glueguntex.png.import +++ b/Towers/GlueLauncher/glueguntex.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://ukdbh416xfrl" -path="res://.godot/imported/glueguntex.png-07f9d2cd55a7bc474ea1c2a9c9004c28.ctex" +path="res://.godot/imported/glueguntex.png-5bf9987ae8ced3d972e0169f67854db8.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/GlueLauncher/glueguntex.png" -dest_files=["res://.godot/imported/glueguntex.png-07f9d2cd55a7bc474ea1c2a9c9004c28.ctex"] +source_file="res://Towers/GlueLauncher/glueguntex.png" +dest_files=["res://.godot/imported/glueguntex.png-5bf9987ae8ced3d972e0169f67854db8.ctex"] [params] diff --git a/Towers/GlueLauncher/tower_glue_launcher.tscn b/Towers/GlueLauncher/tower_glue_launcher.tscn new file mode 100644 index 0000000..d6f177e --- /dev/null +++ b/Towers/GlueLauncher/tower_glue_launcher.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=10 format=3 uid="uid://bfdg32wymhoj1"] + +[ext_resource type="PackedScene" uid="uid://43vmeyuurqfs" path="res://Scenes/Towers/direct_affect_tower.tscn" id="1_v06tq"] +[ext_resource type="Resource" uid="uid://d0643gfp52x3s" path="res://Resources/StatusEffects/sticky.tres" id="3_ibb53"] +[ext_resource type="Script" uid="uid://djp7tepdsda8w" path="res://Scripts/effect.gd" id="3_v7ope"] +[ext_resource type="Resource" uid="uid://bvkwgmbxje0dp" path="res://Towers/GlueLauncher/tower_stats.tres" id="4_etcd4"] +[ext_resource type="Script" uid="uid://bh74uangqekuk" path="res://Scripts/StatusEffects/status_slow.gd" id="4_gk1x5"] +[ext_resource type="Script" uid="uid://chy7bx8dlwgs0" path="res://Scripts/StatusEffects/status_effect.gd" id="4_ubc07"] +[ext_resource type="ArrayMesh" uid="uid://cehyrhbd7pu83" path="res://Towers/GlueLauncher/glue_launcher_model.res" id="5_dsftx"] + +[sub_resource type="Resource" id="Resource_4e51e"] +script = ExtResource("4_gk1x5") +stats = ExtResource("3_ibb53") + +[sub_resource type="Resource" id="Resource_mgak2"] +script = ExtResource("3_v7ope") +damage = 0 +status_effects = Array[ExtResource("4_ubc07")]([SubResource("Resource_4e51e")]) + +[node name="DirectAffectTower" instance=ExtResource("1_v06tq")] +stats = ExtResource("4_etcd4") +effect = SubResource("Resource_mgak2") + +[node name="Pitch" parent="." index="1"] +visible = false + +[node name="Yaw" parent="." index="2"] +transform = Transform3D(0.22, 0, 0, 0, 0.22, 0, 0, 0, 0.22, 0, 0.461018, 0) +mesh = ExtResource("5_dsftx") diff --git a/PCs/Mechanic/ClassCards/GlueLauncher/tower_stats.tres b/Towers/GlueLauncher/tower_stats.tres similarity index 76% rename from PCs/Mechanic/ClassCards/GlueLauncher/tower_stats.tres rename to Towers/GlueLauncher/tower_stats.tres index 11478e8..707a55b 100644 --- a/PCs/Mechanic/ClassCards/GlueLauncher/tower_stats.tres +++ b/Towers/GlueLauncher/tower_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=6 format=3 uid="uid://bvkwgmbxje0dp"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_ytycf"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_226sm"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_ytycf"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_226sm"] [sub_resource type="Resource" id="Resource_gbocu"] script = ExtResource("1_ytycf") diff --git a/Towers/Icicle/icicletower.tscn b/Towers/Icicle/icicletower.tscn new file mode 100644 index 0000000..dfb8196 --- /dev/null +++ b/Towers/Icicle/icicletower.tscn @@ -0,0 +1,32 @@ +[gd_scene load_steps=10 format=3 uid="uid://bk73g30y8kri4"] + +[ext_resource type="PackedScene" uid="uid://bidr1m71pajma" path="res://Scenes/Towers/projectile_tower.tscn" id="1_2424i"] +[ext_resource type="Script" uid="uid://djp7tepdsda8w" path="res://Scripts/effect.gd" id="2_5bkvv"] +[ext_resource type="Script" uid="uid://chy7bx8dlwgs0" path="res://Scripts/StatusEffects/status_effect.gd" id="3_e2nh7"] +[ext_resource type="Script" uid="uid://bh74uangqekuk" path="res://Scripts/StatusEffects/status_slow.gd" id="4_pgkre"] +[ext_resource type="Resource" uid="uid://fed6kimfbcwv" path="res://Resources/StatusEffects/cold.tres" id="5_5fymo"] +[ext_resource type="ArrayMesh" uid="uid://d34yiqnnaie8r" path="res://Towers/Fireball/magetowermesh.res" id="6_tyyed"] +[ext_resource type="PackedScene" uid="uid://dyurjxotdkf1u" path="res://Projectiles/Icicle/icicle_projectile.tscn" id="7_goltw"] + +[sub_resource type="Resource" id="Resource_t3ens"] +script = ExtResource("4_pgkre") +stats = ExtResource("5_5fymo") +metadata/_custom_type_script = "uid://bh74uangqekuk" + +[sub_resource type="Resource" id="Resource_woy0n"] +script = ExtResource("2_5bkvv") +damage = 0 +status_effects = Array[ExtResource("3_e2nh7")]([SubResource("Resource_t3ens")]) +metadata/_custom_type_script = "uid://djp7tepdsda8w" + +[node name="ProjectileTower" instance=ExtResource("1_2424i")] +effect = SubResource("Resource_woy0n") + +[node name="Pitch" parent="." index="1"] +mesh = ExtResource("6_tyyed") + +[node name="Yaw" parent="." index="2"] +transform = Transform3D(0.195, 0, 0, 0, 0.195, 0, 0, 0, 0.195, 0, 1.72661, 0) + +[node name="SpawnAffect" parent="." index="6"] +spawn_scene = ExtResource("7_goltw") diff --git a/PCs/Mage/ClassCards/Icicle/tower_stats.tres b/Towers/Icicle/tower_stats.tres similarity index 76% rename from PCs/Mage/ClassCards/Icicle/tower_stats.tres rename to Towers/Icicle/tower_stats.tres index 6bf31c3..3ffd0ee 100644 --- a/PCs/Mage/ClassCards/Icicle/tower_stats.tres +++ b/Towers/Icicle/tower_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=6 format=3 uid="uid://d34bfj5togyyt"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_wgjcy"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_dorn5"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_wgjcy"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_dorn5"] [sub_resource type="Resource" id="Resource_68ba3"] script = ExtResource("1_wgjcy") diff --git a/Towers/Overclock/overclock_tower.gd b/Towers/Overclock/overclock_tower.gd new file mode 100644 index 0000000..3542081 --- /dev/null +++ b/Towers/Overclock/overclock_tower.gd @@ -0,0 +1,12 @@ +class_name OverclockTower extends Tower + +func shoot() -> void: + #affector.apply_effect(effect, target_finder.targets) + for tower: TowerBase in get_tree().get_nodes_in_group("TowerBases"): + if tower.tower and tower.tower.stats != stats: + if tower.global_position.distance_to(global_position) <= target_range: + tower.tower.small_speed_buff_timer += time_between_shots + animator.play("shoot") + audio_player.play() + if is_multiplayer_authority(): + networked_shoot.rpc() diff --git a/Towers/Overclock/overclock_tower.gd.uid b/Towers/Overclock/overclock_tower.gd.uid new file mode 100644 index 0000000..2f3394e --- /dev/null +++ b/Towers/Overclock/overclock_tower.gd.uid @@ -0,0 +1 @@ +uid://c4bu4hlgifqom diff --git a/Towers/Overclock/tower.tscn b/Towers/Overclock/tower.tscn new file mode 100644 index 0000000..b2f5b7d --- /dev/null +++ b/Towers/Overclock/tower.tscn @@ -0,0 +1,27 @@ +[gd_scene load_steps=6 format=3 uid="uid://d3qabcosmk2q5"] + +[ext_resource type="PackedScene" uid="uid://kioik38usbqj" path="res://Scenes/Towers/area_tower.tscn" id="1_85dnw"] +[ext_resource type="Script" uid="uid://c4bu4hlgifqom" path="res://Towers/Overclock/overclock_tower.gd" id="2_uhx1y"] +[ext_resource type="Script" uid="uid://djp7tepdsda8w" path="res://Scripts/effect.gd" id="3_gt5qf"] +[ext_resource type="Script" uid="uid://chy7bx8dlwgs0" path="res://Scripts/StatusEffects/status_effect.gd" id="4_d15h4"] + +[sub_resource type="Resource" id="Resource_50mhx"] +script = ExtResource("3_gt5qf") +damage = 0 +status_effects = Array[ExtResource("4_d15h4")]([]) +metadata/_custom_type_script = "uid://djp7tepdsda8w" + +[node name="Tower" instance=ExtResource("1_85dnw")] +script = ExtResource("2_uhx1y") +turns_to_aim = false +effect = SubResource("Resource_50mhx") + +[node name="Pitch" parent="." index="1"] +visible = false + +[node name="Yaw" parent="." index="2"] +visible = false + +[node name="CSGBox3D" type="CSGBox3D" parent="." index="7"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.51387, 0) +size = Vector3(1, 2.02774, 1) diff --git a/Towers/Overclock/tower_stats.tres b/Towers/Overclock/tower_stats.tres new file mode 100644 index 0000000..5efcf41 --- /dev/null +++ b/Towers/Overclock/tower_stats.tres @@ -0,0 +1,30 @@ +[gd_resource type="Resource" script_class="CardText" load_steps=6 format=3 uid="uid://v13yoous66bc"] + +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_0swcp"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_fax6y"] + +[sub_resource type="Resource" id="Resource_0swcp"] +script = ExtResource("1_0swcp") +key = "Fire Delay" +value = 0.0 +metadata/_custom_type_script = "uid://yjb0uv6og430" + +[sub_resource type="Resource" id="Resource_fax6y"] +script = ExtResource("1_0swcp") +key = "Damage" +value = 0.0 +metadata/_custom_type_script = "uid://yjb0uv6og430" + +[sub_resource type="Resource" id="Resource_v0e26"] +script = ExtResource("1_0swcp") +key = "Range" +value = 4.0 +metadata/_custom_type_script = "uid://yjb0uv6og430" + +[resource] +script = ExtResource("2_fax6y") +target_type = 1 +energy_type = 0 +attributes = Array[ExtResource("1_0swcp")]([SubResource("Resource_0swcp"), SubResource("Resource_fax6y"), SubResource("Resource_v0e26")]) +text = "Speeds up the fire rate of towers within /Range\\m by 10%" +metadata/_custom_type_script = "uid://dg7gxxqfqxcmc" diff --git a/PCs/Mechanic/ClassCards/Reactor/reactor.glb b/Towers/Reactor/reactor.glb similarity index 100% rename from PCs/Mechanic/ClassCards/Reactor/reactor.glb rename to Towers/Reactor/reactor.glb diff --git a/PCs/Mechanic/ClassCards/Reactor/reactor.glb.import b/Towers/Reactor/reactor.glb.import similarity index 73% rename from PCs/Mechanic/ClassCards/Reactor/reactor.glb.import rename to Towers/Reactor/reactor.glb.import index ad0c4c7..be615ce 100644 --- a/PCs/Mechanic/ClassCards/Reactor/reactor.glb.import +++ b/Towers/Reactor/reactor.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://ck330svnmd13b" -path="res://.godot/imported/reactor.glb-78f0454309e4a59542393d127446955d.scn" +path="res://.godot/imported/reactor.glb-d5832fa37bbb50b548020c0cdea63120.scn" [deps] -source_file="res://PCs/Mechanic/ClassCards/Reactor/reactor.glb" -dest_files=["res://.godot/imported/reactor.glb-78f0454309e4a59542393d127446955d.scn"] +source_file="res://Towers/Reactor/reactor.glb" +dest_files=["res://.godot/imported/reactor.glb-d5832fa37bbb50b548020c0cdea63120.scn"] [params] @@ -17,6 +17,8 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true @@ -28,6 +30,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={ "meshes": { diff --git a/PCs/Mechanic/ClassCards/Reactor/reactor.png b/Towers/Reactor/reactor.png similarity index 100% rename from PCs/Mechanic/ClassCards/Reactor/reactor.png rename to Towers/Reactor/reactor.png diff --git a/PCs/Mechanic/ClassCards/Reactor/reactor.png.import b/Towers/Reactor/reactor.png.import similarity index 70% rename from PCs/Mechanic/ClassCards/Reactor/reactor.png.import rename to Towers/Reactor/reactor.png.import index d08981d..9aeedac 100644 --- a/PCs/Mechanic/ClassCards/Reactor/reactor.png.import +++ b/Towers/Reactor/reactor.png.import @@ -3,7 +3,7 @@ importer="texture" type="CompressedTexture2D" uid="uid://b87fn56wyiqmj" -path.s3tc="res://.godot/imported/reactor.png-3367435042a21b2db8f09b5b2802c987.s3tc.ctex" +path.s3tc="res://.godot/imported/reactor.png-6cccb27d4ef196e98f39928aa1a0cc59.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], "vram_texture": true @@ -11,8 +11,8 @@ metadata={ [deps] -source_file="res://PCs/Mechanic/ClassCards/Reactor/reactor.png" -dest_files=["res://.godot/imported/reactor.png-3367435042a21b2db8f09b5b2802c987.s3tc.ctex"] +source_file="res://Towers/Reactor/reactor.png" +dest_files=["res://.godot/imported/reactor.png-6cccb27d4ef196e98f39928aa1a0cc59.s3tc.ctex"] [params] diff --git a/PCs/Mechanic/ClassCards/Reactor/reactor_mesh.res b/Towers/Reactor/reactor_mesh.res similarity index 100% rename from PCs/Mechanic/ClassCards/Reactor/reactor_mesh.res rename to Towers/Reactor/reactor_mesh.res diff --git a/Towers/Reactor/reactor_mesh.res.depren b/Towers/Reactor/reactor_mesh.res.depren new file mode 100644 index 0000000..2c07d3f Binary files /dev/null and b/Towers/Reactor/reactor_mesh.res.depren differ diff --git a/Towers/Reactor/reactortower.tscn b/Towers/Reactor/reactortower.tscn new file mode 100644 index 0000000..873fc2a --- /dev/null +++ b/Towers/Reactor/reactortower.tscn @@ -0,0 +1,37 @@ +[gd_scene load_steps=10 format=3 uid="uid://b7idyi1c67ou4"] + +[ext_resource type="PackedScene" uid="uid://kioik38usbqj" path="res://Scenes/Towers/area_tower.tscn" id="1_0qp3f"] +[ext_resource type="Script" uid="uid://djp7tepdsda8w" path="res://Scripts/effect.gd" id="2_v1m7x"] +[ext_resource type="Script" uid="uid://chy7bx8dlwgs0" path="res://Scripts/StatusEffects/status_effect.gd" id="3_amg2o"] +[ext_resource type="Script" uid="uid://c6eghujlaqhwi" path="res://Scripts/StatusEffects/status_dot.gd" id="4_dcmuu"] +[ext_resource type="Resource" uid="uid://dxlisoas4xlmo" path="res://Resources/StatusEffects/radioactive.tres" id="5_0b26j"] +[ext_resource type="ArrayMesh" uid="uid://d280k3kx6hh7h" path="res://Towers/Reactor/reactor_mesh.res" id="6_7kedu"] + +[sub_resource type="Resource" id="Resource_ltmnh"] +script = ExtResource("4_dcmuu") +stats = ExtResource("5_0b26j") +metadata/_custom_type_script = "uid://c6eghujlaqhwi" + +[sub_resource type="Resource" id="Resource_joohe"] +script = ExtResource("2_v1m7x") +damage = 0 +status_effects = Array[ExtResource("3_amg2o")]([SubResource("Resource_ltmnh")]) +metadata/_custom_type_script = "uid://djp7tepdsda8w" + +[sub_resource type="SphereShape3D" id="SphereShape3D_v6dih"] +radius = 30.0 + +[node name="Tower" instance=ExtResource("1_0qp3f")] +turns_to_aim = false +effect = SubResource("Resource_joohe") + +[node name="ShapeCast3D" type="ShapeCast3D" parent="Pitch" index="0"] +shape = SubResource("SphereShape3D_v6dih") +target_position = Vector3(0, 0, 0) +collision_mask = 4 + +[node name="Yaw" parent="." index="2"] +mesh = ExtResource("6_7kedu") + +[node name="AreaAffector" parent="." index="6" node_paths=PackedStringArray("shapecast")] +shapecast = NodePath("../Pitch/ShapeCast3D") diff --git a/Towers/Reactor/tower_reactor.gd b/Towers/Reactor/tower_reactor.gd new file mode 100644 index 0000000..939c55c --- /dev/null +++ b/Towers/Reactor/tower_reactor.gd @@ -0,0 +1,8 @@ +class_name ReactorTower extends Tower + +@export var particles: GPUParticles3D + + +func _ready() -> void: + super._ready() + particles.process_material.emission_ring_radius = target_range diff --git a/Towers/Reactor/tower_reactor.gd.uid b/Towers/Reactor/tower_reactor.gd.uid new file mode 100644 index 0000000..b6a0c35 --- /dev/null +++ b/Towers/Reactor/tower_reactor.gd.uid @@ -0,0 +1 @@ +uid://dja4lljntha8r diff --git a/PCs/Mechanic/ClassCards/Reactor/tower_stats.tres b/Towers/Reactor/tower_stats.tres similarity index 71% rename from PCs/Mechanic/ClassCards/Reactor/tower_stats.tres rename to Towers/Reactor/tower_stats.tres index e03481b..daef4fb 100644 --- a/PCs/Mechanic/ClassCards/Reactor/tower_stats.tres +++ b/Towers/Reactor/tower_stats.tres @@ -1,12 +1,12 @@ [gd_resource type="Resource" script_class="CardText" load_steps=6 format=3 uid="uid://cssdyxk8oefsd"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_peekg"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_8w61k"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_peekg"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_8w61k"] [sub_resource type="Resource" id="Resource_j28f4"] script = ExtResource("1_peekg") key = "Fire Delay" -value = 2.5 +value = 4.0 [sub_resource type="Resource" id="Resource_likes"] script = ExtResource("1_peekg") @@ -16,10 +16,10 @@ value = 0.0 [sub_resource type="Resource" id="Resource_b65mk"] script = ExtResource("1_peekg") key = "Range" -value = 20.0 +value = 30.0 [resource] script = ExtResource("2_8w61k") -target_type = 1 +target_type = 3 attributes = Array[ExtResource("1_peekg")]([SubResource("Resource_j28f4"), SubResource("Resource_likes"), SubResource("Resource_b65mk")]) text = "Slowly applies Radioactive to enemies around itself at a range of /Range\\m" diff --git a/PCs/Mage/ClassCards/Refrigerator/fridge.glb b/Towers/Refrigerator/fridge.glb similarity index 100% rename from PCs/Mage/ClassCards/Refrigerator/fridge.glb rename to Towers/Refrigerator/fridge.glb diff --git a/PCs/Mage/ClassCards/Refrigerator/fridge.glb.import b/Towers/Refrigerator/fridge.glb.import similarity index 73% rename from PCs/Mage/ClassCards/Refrigerator/fridge.glb.import rename to Towers/Refrigerator/fridge.glb.import index f255006..572b592 100644 --- a/PCs/Mage/ClassCards/Refrigerator/fridge.glb.import +++ b/Towers/Refrigerator/fridge.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://c6bawh1fc8dpm" -path="res://.godot/imported/fridge.glb-47f211bbe32ad1ebb3be936755294b64.scn" +path="res://.godot/imported/fridge.glb-69dc9fb49196363329aba6b841ca5b42.scn" [deps] -source_file="res://PCs/Mage/ClassCards/Refrigerator/fridge.glb" -dest_files=["res://.godot/imported/fridge.glb-47f211bbe32ad1ebb3be936755294b64.scn"] +source_file="res://Towers/Refrigerator/fridge.glb" +dest_files=["res://.godot/imported/fridge.glb-69dc9fb49196363329aba6b841ca5b42.scn"] [params] @@ -17,6 +17,8 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true @@ -28,6 +30,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={ "meshes": { diff --git a/PCs/Mage/ClassCards/Refrigerator/fridge.png b/Towers/Refrigerator/fridge.png similarity index 100% rename from PCs/Mage/ClassCards/Refrigerator/fridge.png rename to Towers/Refrigerator/fridge.png diff --git a/PCs/Mage/ClassCards/Refrigerator/fridge.png.import b/Towers/Refrigerator/fridge.png.import similarity index 70% rename from PCs/Mage/ClassCards/Refrigerator/fridge.png.import rename to Towers/Refrigerator/fridge.png.import index 64831b4..8e64467 100644 --- a/PCs/Mage/ClassCards/Refrigerator/fridge.png.import +++ b/Towers/Refrigerator/fridge.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cs77k4nnd1tql" -path="res://.godot/imported/fridge.png-fdbc4474eea208805709cb42c2d462ad.ctex" +path="res://.godot/imported/fridge.png-dd549cd990b2de8211961cfb961cde6e.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mage/ClassCards/Refrigerator/fridge.png" -dest_files=["res://.godot/imported/fridge.png-fdbc4474eea208805709cb42c2d462ad.ctex"] +source_file="res://Towers/Refrigerator/fridge.png" +dest_files=["res://.godot/imported/fridge.png-dd549cd990b2de8211961cfb961cde6e.ctex"] [params] diff --git a/PCs/Mage/ClassCards/Refrigerator/fridge_mesh.res b/Towers/Refrigerator/fridge_mesh.res similarity index 100% rename from PCs/Mage/ClassCards/Refrigerator/fridge_mesh.res rename to Towers/Refrigerator/fridge_mesh.res diff --git a/Towers/Refrigerator/fridge_mesh.res.depren b/Towers/Refrigerator/fridge_mesh.res.depren new file mode 100644 index 0000000..c0a8c74 Binary files /dev/null and b/Towers/Refrigerator/fridge_mesh.res.depren differ diff --git a/Towers/Refrigerator/fridgetower.tscn b/Towers/Refrigerator/fridgetower.tscn new file mode 100644 index 0000000..60f2d8a --- /dev/null +++ b/Towers/Refrigerator/fridgetower.tscn @@ -0,0 +1,36 @@ +[gd_scene load_steps=10 format=3 uid="uid://dfgxf88kk2nhn"] + +[ext_resource type="PackedScene" uid="uid://kioik38usbqj" path="res://Scenes/Towers/area_tower.tscn" id="1_3igso"] +[ext_resource type="Script" uid="uid://djp7tepdsda8w" path="res://Scripts/effect.gd" id="2_npue5"] +[ext_resource type="Script" uid="uid://chy7bx8dlwgs0" path="res://Scripts/StatusEffects/status_effect.gd" id="3_frvi8"] +[ext_resource type="Script" uid="uid://bh74uangqekuk" path="res://Scripts/StatusEffects/status_slow.gd" id="4_cirat"] +[ext_resource type="Resource" uid="uid://fed6kimfbcwv" path="res://Resources/StatusEffects/cold.tres" id="5_qnnuv"] +[ext_resource type="ArrayMesh" uid="uid://bwvls7rj0oqyv" path="res://Towers/Refrigerator/fridge_mesh.res" id="6_bb4hb"] + +[sub_resource type="Resource" id="Resource_d3abg"] +script = ExtResource("4_cirat") +stats = ExtResource("5_qnnuv") +metadata/_custom_type_script = "uid://bh74uangqekuk" + +[sub_resource type="Resource" id="Resource_yoqmb"] +script = ExtResource("2_npue5") +damage = 0 +status_effects = Array[ExtResource("3_frvi8")]([SubResource("Resource_d3abg")]) +metadata/_custom_type_script = "uid://djp7tepdsda8w" + +[sub_resource type="SphereShape3D" id="SphereShape3D_jc2g4"] +radius = 3.0 + +[node name="Tower" instance=ExtResource("1_3igso")] +turns_to_aim = false +effect = SubResource("Resource_yoqmb") + +[node name="ShapeCast3D" type="ShapeCast3D" parent="Pitch" index="0"] +shape = SubResource("SphereShape3D_jc2g4") +collision_mask = 4 + +[node name="Yaw" parent="." index="2"] +mesh = ExtResource("6_bb4hb") + +[node name="AreaAffector" parent="." index="6" node_paths=PackedStringArray("shapecast")] +shapecast = NodePath("../Pitch/ShapeCast3D") diff --git a/PCs/Mage/ClassCards/Refrigerator/tower_stats.tres b/Towers/Refrigerator/tower_stats.tres similarity index 74% rename from PCs/Mage/ClassCards/Refrigerator/tower_stats.tres rename to Towers/Refrigerator/tower_stats.tres index c13c0be..b72361f 100644 --- a/PCs/Mage/ClassCards/Refrigerator/tower_stats.tres +++ b/Towers/Refrigerator/tower_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=6 format=3 uid="uid://st0qrut5nxrm"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_wa26m"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_w4q6a"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_wa26m"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_w4q6a"] [sub_resource type="Resource" id="Resource_j28f4"] script = ExtResource("1_wa26m") diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher.glb b/Towers/RocketLauncher/rocket_launcher.glb similarity index 100% rename from PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher.glb rename to Towers/RocketLauncher/rocket_launcher.glb diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher.glb.import b/Towers/RocketLauncher/rocket_launcher.glb.import similarity index 72% rename from PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher.glb.import rename to Towers/RocketLauncher/rocket_launcher.glb.import index ce33d13..5832cbd 100644 --- a/PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher.glb.import +++ b/Towers/RocketLauncher/rocket_launcher.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://buyx8g4vlh7g7" -path="res://.godot/imported/rocket_launcher.glb-37982edba72c4d23ecb61dd773429a36.scn" +path="res://.godot/imported/rocket_launcher.glb-577955e11dbf20a1138873ba22eb3ebc.scn" [deps] -source_file="res://PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher.glb" -dest_files=["res://.godot/imported/rocket_launcher.glb-37982edba72c4d23ecb61dd773429a36.scn"] +source_file="res://Towers/RocketLauncher/rocket_launcher.glb" +dest_files=["res://.godot/imported/rocket_launcher.glb-577955e11dbf20a1138873ba22eb3ebc.scn"] [params] @@ -17,6 +17,8 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true @@ -28,6 +30,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={ "meshes": { diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher_model.res b/Towers/RocketLauncher/rocket_launcher_model.res similarity index 100% rename from PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher_model.res rename to Towers/RocketLauncher/rocket_launcher_model.res diff --git a/Towers/RocketLauncher/rocket_launcher_model.res.depren b/Towers/RocketLauncher/rocket_launcher_model.res.depren new file mode 100644 index 0000000..d826e2e Binary files /dev/null and b/Towers/RocketLauncher/rocket_launcher_model.res.depren differ diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher_tex.png b/Towers/RocketLauncher/rocket_launcher_tex.png similarity index 100% rename from PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher_tex.png rename to Towers/RocketLauncher/rocket_launcher_tex.png diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher_tex.png.import b/Towers/RocketLauncher/rocket_launcher_tex.png.import similarity index 67% rename from PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher_tex.png.import rename to Towers/RocketLauncher/rocket_launcher_tex.png.import index 8aec5ae..29ba2be 100644 --- a/PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher_tex.png.import +++ b/Towers/RocketLauncher/rocket_launcher_tex.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cwou52extvihw" -path="res://.godot/imported/rocket_launcher_tex.png-2047ab318b8a45520e5c36182b4b8678.ctex" +path="res://.godot/imported/rocket_launcher_tex.png-3dbab084120db37e20b56f7c6411d76b.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher_tex.png" -dest_files=["res://.godot/imported/rocket_launcher_tex.png-2047ab318b8a45520e5c36182b4b8678.ctex"] +source_file="res://Towers/RocketLauncher/rocket_launcher_tex.png" +dest_files=["res://.godot/imported/rocket_launcher_tex.png-3dbab084120db37e20b56f7c6411d76b.ctex"] [params] diff --git a/Towers/RocketLauncher/rocket_tower.tscn b/Towers/RocketLauncher/rocket_tower.tscn new file mode 100644 index 0000000..918488f --- /dev/null +++ b/Towers/RocketLauncher/rocket_tower.tscn @@ -0,0 +1,29 @@ +[gd_scene load_steps=7 format=3 uid="uid://clunpgm4plkar"] + +[ext_resource type="PackedScene" uid="uid://bidr1m71pajma" path="res://Scenes/Towers/projectile_tower.tscn" id="1_743vv"] +[ext_resource type="Script" uid="uid://djp7tepdsda8w" path="res://Scripts/effect.gd" id="2_exq6d"] +[ext_resource type="Script" uid="uid://chy7bx8dlwgs0" path="res://Scripts/StatusEffects/status_effect.gd" id="3_11qtm"] +[ext_resource type="ArrayMesh" uid="uid://dltxsh8ppubj3" path="res://Towers/RocketLauncher/rocket_launcher_model.res" id="4_exq6d"] +[ext_resource type="PackedScene" uid="uid://p2vwo8ivben6" path="res://Projectiles/Rocket/rocket_projectile.tscn" id="4_vxjrf"] + +[sub_resource type="Resource" id="Resource_idxp2"] +script = ExtResource("2_exq6d") +damage = 0 +status_effects = Array[ExtResource("3_11qtm")]([]) +metadata/_custom_type_script = "uid://djp7tepdsda8w" + +[node name="ProjectileTower" instance=ExtResource("1_743vv")] +effect = SubResource("Resource_idxp2") + +[node name="Pitch" parent="." index="1"] +visible = false + +[node name="Yaw" parent="." index="2"] +transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0.55964, 0) +mesh = ExtResource("4_exq6d") + +[node name="TargetFinder" parent="." index="5"] +max_targets = 3 + +[node name="SpawnAffect" parent="." index="6"] +spawn_scene = ExtResource("4_vxjrf") diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/tower_stats.tres b/Towers/RocketLauncher/tower_stats.tres similarity index 80% rename from PCs/Mechanic/ClassCards/RocketLauncher/tower_stats.tres rename to Towers/RocketLauncher/tower_stats.tres index 6df0542..a3bd957 100644 --- a/PCs/Mechanic/ClassCards/RocketLauncher/tower_stats.tres +++ b/Towers/RocketLauncher/tower_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://c65rq455ma8f6"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_jajj0"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_lag26"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_jajj0"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_lag26"] [sub_resource type="Resource" id="Resource_4fjm2"] script = ExtResource("1_jajj0") diff --git a/PCs/Mechanic/ClassCards/Sniper/sniper.glb b/Towers/Sniper/sniper.glb similarity index 100% rename from PCs/Mechanic/ClassCards/Sniper/sniper.glb rename to Towers/Sniper/sniper.glb diff --git a/PCs/Mechanic/ClassCards/Sniper/sniper.glb.import b/Towers/Sniper/sniper.glb.import similarity index 74% rename from PCs/Mechanic/ClassCards/Sniper/sniper.glb.import rename to Towers/Sniper/sniper.glb.import index 4ba9363..02960c6 100644 --- a/PCs/Mechanic/ClassCards/Sniper/sniper.glb.import +++ b/Towers/Sniper/sniper.glb.import @@ -4,12 +4,12 @@ importer="scene" importer_version=1 type="PackedScene" uid="uid://b4vwe267lt1ua" -path="res://.godot/imported/sniper.glb-512a4558b893612b9b65b5b15cadc1c6.scn" +path="res://.godot/imported/sniper.glb-b7ef8a65504da7ca64186fee199a9b79.scn" [deps] -source_file="res://PCs/Mechanic/ClassCards/Sniper/sniper.glb" -dest_files=["res://.godot/imported/sniper.glb-512a4558b893612b9b65b5b15cadc1c6.scn"] +source_file="res://Towers/Sniper/sniper.glb" +dest_files=["res://.godot/imported/sniper.glb-b7ef8a65504da7ca64186fee199a9b79.scn"] [params] @@ -17,6 +17,8 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true @@ -28,6 +30,7 @@ animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={ "meshes": { diff --git a/PCs/Mechanic/ClassCards/Sniper/snipermodel.res b/Towers/Sniper/snipermodel.res similarity index 100% rename from PCs/Mechanic/ClassCards/Sniper/snipermodel.res rename to Towers/Sniper/snipermodel.res diff --git a/Towers/Sniper/snipermodel.res.depren b/Towers/Sniper/snipermodel.res.depren new file mode 100644 index 0000000..dec3717 Binary files /dev/null and b/Towers/Sniper/snipermodel.res.depren differ diff --git a/PCs/Mechanic/ClassCards/Sniper/snipertex.png b/Towers/Sniper/snipertex.png similarity index 100% rename from PCs/Mechanic/ClassCards/Sniper/snipertex.png rename to Towers/Sniper/snipertex.png diff --git a/PCs/Mechanic/ClassCards/Sniper/snipertex.png.import b/Towers/Sniper/snipertex.png.import similarity index 70% rename from PCs/Mechanic/ClassCards/Sniper/snipertex.png.import rename to Towers/Sniper/snipertex.png.import index 2f59b05..aa5ec14 100644 --- a/PCs/Mechanic/ClassCards/Sniper/snipertex.png.import +++ b/Towers/Sniper/snipertex.png.import @@ -3,7 +3,7 @@ importer="texture" type="CompressedTexture2D" uid="uid://dltijooiriwyj" -path.s3tc="res://.godot/imported/snipertex.png-5c6f191f09e04f789f6350427d96bf70.s3tc.ctex" +path.s3tc="res://.godot/imported/snipertex.png-63879b30e7c396a57a3b1dc994dfea11.s3tc.ctex" metadata={ "imported_formats": ["s3tc_bptc"], "vram_texture": true @@ -11,8 +11,8 @@ metadata={ [deps] -source_file="res://PCs/Mechanic/ClassCards/Sniper/snipertex.png" -dest_files=["res://.godot/imported/snipertex.png-5c6f191f09e04f789f6350427d96bf70.s3tc.ctex"] +source_file="res://Towers/Sniper/snipertex.png" +dest_files=["res://.godot/imported/snipertex.png-63879b30e7c396a57a3b1dc994dfea11.s3tc.ctex"] [params] diff --git a/Towers/Sniper/tower_sniper.tscn b/Towers/Sniper/tower_sniper.tscn new file mode 100644 index 0000000..1035937 --- /dev/null +++ b/Towers/Sniper/tower_sniper.tscn @@ -0,0 +1,23 @@ +[gd_scene load_steps=7 format=3 uid="uid://0ucn7wvbq034"] + +[ext_resource type="PackedScene" uid="uid://43vmeyuurqfs" path="res://Scenes/Towers/direct_affect_tower.tscn" id="1_efbw8"] +[ext_resource type="Resource" uid="uid://eb0by6ba1d43" path="res://Towers/Sniper/tower_stats.tres" id="3_a0vis"] +[ext_resource type="Script" uid="uid://djp7tepdsda8w" path="res://Scripts/effect.gd" id="3_pq66h"] +[ext_resource type="Script" uid="uid://chy7bx8dlwgs0" path="res://Scripts/StatusEffects/status_effect.gd" id="4_6u8dx"] +[ext_resource type="ArrayMesh" uid="uid://bu35or5yc5j4c" path="res://Towers/Sniper/snipermodel.res" id="4_156p4"] + +[sub_resource type="Resource" id="Resource_v635x"] +script = ExtResource("3_pq66h") +damage = 0 +status_effects = Array[ExtResource("4_6u8dx")]([]) + +[node name="DirectAffectTower" instance=ExtResource("1_efbw8")] +stats = ExtResource("3_a0vis") +effect = SubResource("Resource_v635x") + +[node name="Pitch" parent="." index="1"] +visible = false + +[node name="Yaw" parent="." index="2"] +transform = Transform3D(0.48, 0, 0, 0, 0.48, 0, 0, 0, 0.48, 0, 3.0962, 0) +mesh = ExtResource("4_156p4") diff --git a/PCs/Mechanic/ClassCards/Sniper/tower_stats.tres b/Towers/Sniper/tower_stats.tres similarity index 75% rename from PCs/Mechanic/ClassCards/Sniper/tower_stats.tres rename to Towers/Sniper/tower_stats.tres index 17cf0b9..4b94b60 100644 --- a/PCs/Mechanic/ClassCards/Sniper/tower_stats.tres +++ b/Towers/Sniper/tower_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=6 format=3 uid="uid://eb0by6ba1d43"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_5wjgg"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_5j62t"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_5wjgg"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_5j62t"] [sub_resource type="Resource" id="Resource_1ct8q"] script = ExtResource("1_5wjgg") @@ -21,5 +21,6 @@ value = 50.0 [resource] script = ExtResource("2_5j62t") target_type = 3 +energy_type = 0 attributes = Array[ExtResource("1_5wjgg")]([SubResource("Resource_1ct8q"), SubResource("Resource_erx05"), SubResource("Resource_vfpmb")]) text = "Fires a shot every /Fire Delay\\ seconds dealing /Damage\\ damage at a range of /Range\\m" diff --git a/Scripts/Towers/tower.gd b/Towers/tower.gd similarity index 56% rename from Scripts/Towers/tower.gd rename to Towers/tower.gd index 123e058..ecd04f2 100644 --- a/Scripts/Towers/tower.gd +++ b/Towers/tower.gd @@ -1,28 +1,32 @@ class_name Tower extends Node3D +@export var turns_to_aim: bool = true @export var stats: CardText @export var target_finder: TargetFinder +@export var affector: Affector @export var animator: AnimationPlayer @export var pitch_model: MeshInstance3D @export var yaw_model: MeshInstance3D @export var range_indicator: CSGSphere3D @export var audio_player: AudioStreamPlayer3D +@export var effect: Effect var owner_id: int -var damage_particle_scene: PackedScene = preload("res://Scenes/damage_particle.tscn") var base_name: String -#var targeted_enemy: EnemyController var time_since_firing: float = 0.0 var time_between_shots: float = 0.0 -var damage: float = 0.0 var target_range: float = 0.0 +#TODO: there needs to be a proper status effect system for towers +var big_speed_buff_timer: float = 0.0 +var small_speed_buff_timer: float = 0.0 + func _ready() -> void: time_between_shots = stats.get_attribute("Fire Delay") - damage = stats.get_attribute("Damage") + effect.damage = int(stats.get_attribute("Damage")) target_range = stats.get_attribute("Range") - range_indicator.radius = target_range + range_indicator.radius = target_range if target_range > 0 else 0.1 func preview_range(value: bool) -> void: @@ -34,47 +38,44 @@ func _process(delta: float) -> void: return if time_since_firing < time_between_shots: time_since_firing += delta + if small_speed_buff_timer > 0.0: + small_speed_buff_timer -= delta + time_since_firing += delta * 0.10 + if big_speed_buff_timer > 0.0: + big_speed_buff_timer -= delta + time_since_firing += delta * 0.35 func _physics_process(_delta: float) -> void: if !is_multiplayer_authority(): #only doing the graphical sort of stuff but not shoot logic - if target_finder.get_target(): + if target_finder.targets.size() > 0 && turns_to_aim: aim() return - if target_finder.get_target(): - aim() + if target_finder.targets.size() > 0: + #print("value is " + str(target_finder.targets.size() > 0) + ", getter retrieved " + str(target_finder.has_target)) + if turns_to_aim: + aim() if time_since_firing >= time_between_shots: time_since_firing -= time_between_shots - shoot() + if affector: + shoot() func aim() -> void: - yaw_model.look_at(target_finder.get_target().global_position) - pitch_model.look_at(target_finder.get_target().global_position) + yaw_model.look_at(target_finder.targets[0].global_position) + pitch_model.look_at(target_finder.targets[0].global_position) pitch_model.rotation.x = 0.0 func shoot() -> void: + affector.apply_effect(effect, target_finder.targets) animator.play("shoot") audio_player.play() if is_multiplayer_authority(): networked_shoot.rpc() -func spawn_damage_indicator(pos: Vector3) -> void: - if damage > 0: - var marker: Sprite3D = damage_particle_scene.instantiate() - get_tree().root.add_child(marker) - marker.set_number(damage) - marker.position = pos - - @rpc("reliable") func networked_shoot() -> void: shoot() - - -#@rpc("reliable") -#func networked_acquire_target(target_node_path: String) -> void: - #targeted_enemy = get_tree().root.get_node(target_node_path) diff --git a/Towers/tower.gd.uid b/Towers/tower.gd.uid new file mode 100644 index 0000000..8dc0048 --- /dev/null +++ b/Towers/tower.gd.uid @@ -0,0 +1 @@ +uid://ct24fjmc1ptd6 diff --git a/KeybindEntry.gd b/UI/KeybindEntry.gd similarity index 100% rename from KeybindEntry.gd rename to UI/KeybindEntry.gd diff --git a/UI/KeybindEntry.gd.uid b/UI/KeybindEntry.gd.uid new file mode 100644 index 0000000..08b533d --- /dev/null +++ b/UI/KeybindEntry.gd.uid @@ -0,0 +1 @@ +uid://y2pxkfjn0wa2 diff --git a/button_stylebox.tres b/UI/button_stylebox.tres similarity index 100% rename from button_stylebox.tres rename to UI/button_stylebox.tres diff --git a/crosshair.gdshader b/UI/crosshair.gdshader similarity index 100% rename from crosshair.gdshader rename to UI/crosshair.gdshader diff --git a/UI/crosshair.gdshader.uid b/UI/crosshair.gdshader.uid new file mode 100644 index 0000000..724a7df --- /dev/null +++ b/UI/crosshair.gdshader.uid @@ -0,0 +1 @@ +uid://dhtylicctk3g4 diff --git a/enemybox.gd b/UI/enemybox.gd similarity index 100% rename from enemybox.gd rename to UI/enemybox.gd diff --git a/UI/enemybox.gd.uid b/UI/enemybox.gd.uid new file mode 100644 index 0000000..f456223 --- /dev/null +++ b/UI/enemybox.gd.uid @@ -0,0 +1 @@ +uid://b0h5oewxd48lv diff --git a/h_box_container.tscn b/UI/h_box_container.tscn similarity index 70% rename from h_box_container.tscn rename to UI/h_box_container.tscn index f78579f..caeb602 100644 --- a/h_box_container.tscn +++ b/UI/h_box_container.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://b5hp43bm07b8a"] -[ext_resource type="Script" path="res://enemybox.gd" id="1_lcu0c"] +[ext_resource type="Script" uid="uid://b0h5oewxd48lv" path="res://UI/enemybox.gd" id="1_lcu0c"] [node name="HBoxContainer" type="HBoxContainer"] script = ExtResource("1_lcu0c") diff --git a/health_bar_gradient.tres b/UI/health_bar_gradient.tres similarity index 100% rename from health_bar_gradient.tres rename to UI/health_bar_gradient.tres diff --git a/hero_select_card.gd b/UI/hero_select_card.gd similarity index 100% rename from hero_select_card.gd rename to UI/hero_select_card.gd diff --git a/UI/hero_select_card.gd.uid b/UI/hero_select_card.gd.uid new file mode 100644 index 0000000..beaba13 --- /dev/null +++ b/UI/hero_select_card.gd.uid @@ -0,0 +1 @@ +uid://v5y44744p7ie diff --git a/hover_button_stylebox.tres b/UI/hover_button_stylebox.tres similarity index 100% rename from hover_button_stylebox.tres rename to UI/hover_button_stylebox.tres diff --git a/keybind_screen.gd b/UI/keybind_screen.gd similarity index 100% rename from keybind_screen.gd rename to UI/keybind_screen.gd diff --git a/UI/keybind_screen.gd.uid b/UI/keybind_screen.gd.uid new file mode 100644 index 0000000..a639ec0 --- /dev/null +++ b/UI/keybind_screen.gd.uid @@ -0,0 +1 @@ +uid://d25hjwjdwv35i diff --git a/UI/new_theme.tres b/UI/new_theme.tres new file mode 100644 index 0000000..65fad9f --- /dev/null +++ b/UI/new_theme.tres @@ -0,0 +1,108 @@ +[gd_resource type="Theme" load_steps=15 format=3 uid="uid://b6a0ip4p72tgx"] + +[ext_resource type="StyleBox" uid="uid://lpof3jdy7hr7" path="res://new_style_box_flat.tres" id="4_o03gw"] +[ext_resource type="FontFile" uid="uid://c17ml15e2qan0" path="res://Assets/Fonts/TrueType (.ttf)/Sagewold-Regular.ttf" id="4_v3wda"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_pyjol"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_i4k6b"] +content_margin_left = 12.0 +content_margin_right = 12.0 +bg_color = Color(0.470588, 0.462745, 0.411765, 1) +border_width_top = 2 +border_width_bottom = 2 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_o03gw"] +bg_color = Color(0.364084, 0.357361, 0.313855, 1) +border_width_top = 2 +border_width_bottom = 2 + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_v3wda"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_v4c6d"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_pdxi3"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_8epi8"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_o02xp"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_s5vy1"] +bg_color = Color(0.579938, 0.571628, 0.517202, 1) +border_width_top = 2 +border_width_bottom = 2 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ic3v0"] +content_margin_left = 20.0 +content_margin_top = 20.0 +content_margin_right = 20.0 +content_margin_bottom = 20.0 +bg_color = Color(0.47, 0.46154, 0.4136, 1) +border_width_top = 6 +border_width_bottom = 6 +border_color = Color(0.35, 0.2926, 0.2065, 1) +shadow_color = Color(0, 0, 0, 0) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ehga6"] +content_margin_left = 16.0 +content_margin_top = 8.0 +content_margin_right = 16.0 +content_margin_bottom = 0.0 +bg_color = Color(0.470588, 0.462745, 0.411765, 1) +border_width_left = 6 +border_width_top = 6 +border_width_right = 6 +border_color = Color(0.34902, 0.294118, 0.207843, 1) +expand_margin_bottom = 6.0 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_tuxkj"] +content_margin_left = 16.0 +content_margin_top = 8.0 +content_margin_right = 16.0 +content_margin_bottom = 0.0 +bg_color = Color(0.292324, 0.286585, 0.24951, 1) +border_width_left = 4 +border_width_top = 4 +border_width_right = 4 +border_color = Color(0.212821, 0.203554, 0.148015, 1) +shadow_color = Color(0, 0, 0, 0) + +[resource] +Button/colors/font_color = Color(1, 1, 1, 1) +Button/colors/font_hover_color = Color(0.105882, 0.105882, 0.105882, 1) +Button/font_sizes/font_size = 48 +Button/fonts/font = ExtResource("4_v3wda") +Button/styles/disabled = SubResource("StyleBoxEmpty_pyjol") +Button/styles/focus = SubResource("StyleBoxFlat_i4k6b") +Button/styles/hover = SubResource("StyleBoxFlat_o03gw") +Button/styles/hover_pressed = SubResource("StyleBoxFlat_o03gw") +Button/styles/normal = SubResource("StyleBoxFlat_i4k6b") +Button/styles/pressed = SubResource("StyleBoxFlat_o03gw") +CheckButton/styles/disabled = SubResource("StyleBoxEmpty_v3wda") +CheckButton/styles/hover = SubResource("StyleBoxEmpty_v4c6d") +CheckButton/styles/hover_pressed = SubResource("StyleBoxEmpty_pdxi3") +CheckButton/styles/normal = SubResource("StyleBoxEmpty_8epi8") +CheckButton/styles/pressed = SubResource("StyleBoxEmpty_o02xp") +HBoxContainer/constants/separation = 10 +Label/colors/font_color = Color(0.941129, 0.938917, 0.927802, 1) +Label/font_sizes/font_size = 34 +Label/fonts/font = ExtResource("4_v3wda") +LineEdit/colors/font_color = Color(0.113725, 0.113725, 0.113725, 1) +LineEdit/colors/font_placeholder_color = Color(0.243137, 0.243137, 0.243137, 0.6) +LineEdit/font_sizes/font_size = 28 +LineEdit/fonts/font = ExtResource("4_v3wda") +LineEdit/styles/focus = SubResource("StyleBoxFlat_s5vy1") +LineEdit/styles/normal = SubResource("StyleBoxFlat_s5vy1") +PanelContainer/styles/panel = ExtResource("4_o03gw") +TabBar/fonts/font = ExtResource("4_v3wda") +TabContainer/colors/font_hovered_color = Color(0.894118, 0.890196, 0.870588, 1) +TabContainer/colors/font_selected_color = Color(0.895148, 0.891833, 0.869117, 1) +TabContainer/colors/font_unselected_color = Color(0.636428, 0.628262, 0.574486, 1) +TabContainer/constants/side_margin = 32 +TabContainer/font_sizes/font_size = 36 +TabContainer/fonts/font = ExtResource("4_v3wda") +TabContainer/styles/panel = SubResource("StyleBoxFlat_ic3v0") +TabContainer/styles/tab_focus = SubResource("StyleBoxFlat_ehga6") +TabContainer/styles/tab_hovered = SubResource("StyleBoxFlat_tuxkj") +TabContainer/styles/tab_selected = SubResource("StyleBoxFlat_ehga6") +TabContainer/styles/tab_unselected = SubResource("StyleBoxFlat_tuxkj") diff --git a/UI/tower_label.gd b/UI/tower_label.gd new file mode 100644 index 0000000..1511d09 --- /dev/null +++ b/UI/tower_label.gd @@ -0,0 +1,9 @@ +class_name TowerLabel extends HBoxContainer + +@export var tower_name: Label +@export var tower_amount: Label + + +func change_label(new_name: String, new_amount: String) -> void: + tower_name.text = new_name + tower_amount.text = new_amount diff --git a/UI/tower_label.gd.uid b/UI/tower_label.gd.uid new file mode 100644 index 0000000..a9e1f50 --- /dev/null +++ b/UI/tower_label.gd.uid @@ -0,0 +1 @@ +uid://b5iw4ig76ws7l diff --git a/UI/tower_label.tscn b/UI/tower_label.tscn new file mode 100644 index 0000000..5fc4602 --- /dev/null +++ b/UI/tower_label.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=2 format=3 uid="uid://clabkhnbn75rf"] + +[ext_resource type="Script" uid="uid://b5iw4ig76ws7l" path="res://UI/tower_label.gd" id="1_kjcmy"] + +[node name="HBoxContainer" type="HBoxContainer" node_paths=PackedStringArray("tower_name", "tower_amount")] +script = ExtResource("1_kjcmy") +tower_name = NodePath("Label") +tower_amount = NodePath("Label3") + +[node name="Label" type="Label" parent="."] +layout_mode = 2 +text = "tower name" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Label2" type="Label" parent="."] +layout_mode = 2 +text = " | " +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Label3" type="Label" parent="."] +layout_mode = 2 +text = "2" +horizontal_alignment = 1 +vertical_alignment = 1 diff --git a/Weapons/Ascension/ascension.tscn b/Weapons/Ascension/ascension.tscn new file mode 100644 index 0000000..583943c --- /dev/null +++ b/Weapons/Ascension/ascension.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=6 format=3 uid="uid://df27vi4stdgjx"] + +[ext_resource type="PackedScene" uid="uid://b7nargdyg28fj" path="res://Scenes/Weapons/weapon.tscn" id="1_533eh"] +[ext_resource type="Script" uid="uid://bg8jqsqf83tbf" path="res://Weapons/Ascension/ascension_weapon.gd" id="2_s1gtk"] +[ext_resource type="Resource" uid="uid://do05i1xtdwfqk" path="res://Weapons/Ascension/weapon_stats.tres" id="3_s1gtk"] +[ext_resource type="Texture2D" uid="uid://dc6g4iw3eje0e" path="res://Weapons/Ascension/ascension_export.png" id="4_evfnb"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_4kfie"] +atlas = ExtResource("4_evfnb") +region = Rect2(0, 0, 64, 64) + +[node name="Weapon" instance=ExtResource("1_533eh")] +script = ExtResource("2_s1gtk") +stats = ExtResource("3_s1gtk") + +[node name="Sprite3D" parent="." index="0"] +texture = SubResource("AtlasTexture_4kfie") diff --git a/Weapons/Ascension/ascension_export.png b/Weapons/Ascension/ascension_export.png new file mode 100644 index 0000000..a8cc804 Binary files /dev/null and b/Weapons/Ascension/ascension_export.png differ diff --git a/Weapons/Ascension/ascension_export.png.import b/Weapons/Ascension/ascension_export.png.import new file mode 100644 index 0000000..f20165e --- /dev/null +++ b/Weapons/Ascension/ascension_export.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dc6g4iw3eje0e" +path.s3tc="res://.godot/imported/ascension_export.png-f435b49fb5a6cc70d59171b329503da5.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://Weapons/Ascension/ascension_export.png" +dest_files=["res://.godot/imported/ascension_export.png-f435b49fb5a6cc70d59171b329503da5.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Weapons/Ascension/ascension_weapon.gd b/Weapons/Ascension/ascension_weapon.gd new file mode 100644 index 0000000..7df6535 --- /dev/null +++ b/Weapons/Ascension/ascension_weapon.gd @@ -0,0 +1,6 @@ +class_name AscensionWeapon extends Weapon + + +func shoot() -> void: + super.shoot() + hero.movement.apply_ragdoll(-hero.camera.global_basis.z * 14.0) diff --git a/Weapons/Ascension/ascension_weapon.gd.uid b/Weapons/Ascension/ascension_weapon.gd.uid new file mode 100644 index 0000000..b80c05a --- /dev/null +++ b/Weapons/Ascension/ascension_weapon.gd.uid @@ -0,0 +1 @@ +uid://bg8jqsqf83tbf diff --git a/Weapons/Ascension/weapon_stats.tres b/Weapons/Ascension/weapon_stats.tres new file mode 100644 index 0000000..d3087d6 --- /dev/null +++ b/Weapons/Ascension/weapon_stats.tres @@ -0,0 +1,30 @@ +[gd_resource type="Resource" script_class="CardText" load_steps=6 format=3 uid="uid://do05i1xtdwfqk"] + +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_c5ghd"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_hwijr"] + +[sub_resource type="Resource" id="Resource_c5ghd"] +script = ExtResource("1_c5ghd") +key = "Fire Delay" +value = 2.0 +metadata/_custom_type_script = "uid://yjb0uv6og430" + +[sub_resource type="Resource" id="Resource_hwijr"] +script = ExtResource("1_c5ghd") +key = "Damage" +value = 0.0 +metadata/_custom_type_script = "uid://yjb0uv6og430" + +[sub_resource type="Resource" id="Resource_5pac0"] +script = ExtResource("1_c5ghd") +key = "Energy" +value = 5.0 +metadata/_custom_type_script = "uid://yjb0uv6og430" + +[resource] +script = ExtResource("2_hwijr") +target_type = 2 +energy_type = 1 +attributes = Array[ExtResource("1_c5ghd")]([SubResource("Resource_c5ghd"), SubResource("Resource_hwijr"), SubResource("Resource_5pac0")]) +text = "Send yourself flying" +metadata/_custom_type_script = "uid://dg7gxxqfqxcmc" diff --git a/PCs/Mechanic/ClassCards/Assault/g_assault.png b/Weapons/Assault/g_assault.png similarity index 100% rename from PCs/Mechanic/ClassCards/Assault/g_assault.png rename to Weapons/Assault/g_assault.png diff --git a/PCs/Mechanic/ClassCards/Assault/g_assault.png.import b/Weapons/Assault/g_assault.png.import similarity index 70% rename from PCs/Mechanic/ClassCards/Assault/g_assault.png.import rename to Weapons/Assault/g_assault.png.import index 70cf4b0..b782a6d 100644 --- a/PCs/Mechanic/ClassCards/Assault/g_assault.png.import +++ b/Weapons/Assault/g_assault.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://celay30i4soud" -path="res://.godot/imported/g_assault.png-0ca3df6e10c02c70c867c99ade5c81da.ctex" +path="res://.godot/imported/g_assault.png-ac036fe68b061c3981bb7c49d4a5a4cc.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/Assault/g_assault.png" -dest_files=["res://.godot/imported/g_assault.png-0ca3df6e10c02c70c867c99ade5c81da.ctex"] +source_file="res://Weapons/Assault/g_assault.png" +dest_files=["res://.godot/imported/g_assault.png-ac036fe68b061c3981bb7c49d4a5a4cc.ctex"] [params] diff --git a/PCs/Mechanic/ClassCards/Assault/weapon_assault.gd b/Weapons/Assault/weapon_assault.gd similarity index 100% rename from PCs/Mechanic/ClassCards/Assault/weapon_assault.gd rename to Weapons/Assault/weapon_assault.gd diff --git a/Weapons/Assault/weapon_assault.gd.uid b/Weapons/Assault/weapon_assault.gd.uid new file mode 100644 index 0000000..d983079 --- /dev/null +++ b/Weapons/Assault/weapon_assault.gd.uid @@ -0,0 +1 @@ +uid://yi5gkkyhkbgw diff --git a/PCs/Mechanic/ClassCards/Assault/weapon_assault.tscn b/Weapons/Assault/weapon_assault.tscn similarity index 76% rename from PCs/Mechanic/ClassCards/Assault/weapon_assault.tscn rename to Weapons/Assault/weapon_assault.tscn index bf94cef..d0907b6 100644 --- a/PCs/Mechanic/ClassCards/Assault/weapon_assault.tscn +++ b/Weapons/Assault/weapon_assault.tscn @@ -1,9 +1,9 @@ [gd_scene load_steps=7 format=3 uid="uid://2eehfcrsednw"] [ext_resource type="PackedScene" uid="uid://difwo7wlyqr3h" path="res://Scenes/Weapons/hitscan_weapon.tscn" id="1_wkxf7"] -[ext_resource type="Resource" uid="uid://smctw4ogm4rx" path="res://PCs/Mechanic/ClassCards/Assault/weapon_stats.tres" id="2_fnp5x"] -[ext_resource type="Texture2D" uid="uid://celay30i4soud" path="res://PCs/Mechanic/ClassCards/Assault/g_assault.png" id="3_kuj4t"] -[ext_resource type="AudioStream" uid="uid://chrf1dcq2ujw0" path="res://PCs/Mechanic/ClassCards/Assault/shot1.wav" id="4_gdaci"] +[ext_resource type="Resource" uid="uid://smctw4ogm4rx" path="res://Weapons/Assault/weapon_stats.tres" id="2_fnp5x"] +[ext_resource type="Texture2D" uid="uid://celay30i4soud" path="res://Weapons/Assault/g_assault.png" id="3_kuj4t"] +[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="4_gdaci"] [sub_resource type="AtlasTexture" id="AtlasTexture_604rb"] resource_local_to_scene = true @@ -14,7 +14,6 @@ region = Rect2(0, 0, 64, 64) random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("4_gdaci") -stream_0/weight = 1.0 [node name="HitscanWeapon" instance=ExtResource("1_wkxf7")] stats = ExtResource("2_fnp5x") diff --git a/PCs/Mechanic/ClassCards/Assault/weapon_stats.tres b/Weapons/Assault/weapon_stats.tres similarity index 77% rename from PCs/Mechanic/ClassCards/Assault/weapon_stats.tres rename to Weapons/Assault/weapon_stats.tres index 85924a5..50f1262 100644 --- a/PCs/Mechanic/ClassCards/Assault/weapon_stats.tres +++ b/Weapons/Assault/weapon_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://smctw4ogm4rx"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_rbqj6"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_k26ta"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_rbqj6"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_k26ta"] [sub_resource type="Resource" id="Resource_bcrtt"] script = ExtResource("1_rbqj6") @@ -21,10 +21,11 @@ value = 0.2 [sub_resource type="Resource" id="Resource_8cirl"] script = ExtResource("1_rbqj6") key = "Energy" -value = 1.0 +value = 100.0 [resource] script = ExtResource("2_k26ta") target_type = 0 +energy_type = 2 attributes = Array[ExtResource("1_rbqj6")]([SubResource("Resource_bcrtt"), SubResource("Resource_llper"), SubResource("Resource_7i2dt"), SubResource("Resource_8cirl")]) text = "Fires a shot every /Fire Delay\\ seconds dealing /Damage\\ damage at a range of /Range\\m" diff --git a/PCs/Entomologist/ClassCards/Blowdart/blowdart.png b/Weapons/Blowdart/blowdart.png similarity index 100% rename from PCs/Entomologist/ClassCards/Blowdart/blowdart.png rename to Weapons/Blowdart/blowdart.png diff --git a/PCs/Entomologist/ClassCards/Blowdart/blowdart.png.import b/Weapons/Blowdart/blowdart.png.import similarity index 70% rename from PCs/Entomologist/ClassCards/Blowdart/blowdart.png.import rename to Weapons/Blowdart/blowdart.png.import index e308462..99e59be 100644 --- a/PCs/Entomologist/ClassCards/Blowdart/blowdart.png.import +++ b/Weapons/Blowdart/blowdart.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dnlplq8duves3" -path="res://.godot/imported/blowdart.png-1af42dfbdf55db747efb063e147b78e8.ctex" +path="res://.godot/imported/blowdart.png-7b4816e5e13e5e0b6c722c97d0282c06.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Entomologist/ClassCards/Blowdart/blowdart.png" -dest_files=["res://.godot/imported/blowdart.png-1af42dfbdf55db747efb063e147b78e8.ctex"] +source_file="res://Weapons/Blowdart/blowdart.png" +dest_files=["res://.godot/imported/blowdart.png-7b4816e5e13e5e0b6c722c97d0282c06.ctex"] [params] diff --git a/PCs/Entomologist/ClassCards/Blowdart/weapon_blowdart.gd b/Weapons/Blowdart/weapon_blowdart.gd similarity index 100% rename from PCs/Entomologist/ClassCards/Blowdart/weapon_blowdart.gd rename to Weapons/Blowdart/weapon_blowdart.gd diff --git a/Weapons/Blowdart/weapon_blowdart.gd.uid b/Weapons/Blowdart/weapon_blowdart.gd.uid new file mode 100644 index 0000000..68064b9 --- /dev/null +++ b/Weapons/Blowdart/weapon_blowdart.gd.uid @@ -0,0 +1 @@ +uid://b2jmy4bpt3n40 diff --git a/PCs/Entomologist/ClassCards/Blowdart/weapon_blowdart.tscn b/Weapons/Blowdart/weapon_blowdart.tscn similarity index 72% rename from PCs/Entomologist/ClassCards/Blowdart/weapon_blowdart.tscn rename to Weapons/Blowdart/weapon_blowdart.tscn index 2c70faa..0cd69a6 100644 --- a/PCs/Entomologist/ClassCards/Blowdart/weapon_blowdart.tscn +++ b/Weapons/Blowdart/weapon_blowdart.tscn @@ -1,11 +1,11 @@ [gd_scene load_steps=9 format=3 uid="uid://cy05ssd52exf0"] [ext_resource type="PackedScene" uid="uid://nrdexcyatika" path="res://Scenes/Weapons/status_applying_weapon.tscn" id="1_t3gfv"] -[ext_resource type="Script" path="res://PCs/Entomologist/ClassCards/Blowdart/weapon_blowdart.gd" id="2_g1m1f"] +[ext_resource type="Script" uid="uid://b2jmy4bpt3n40" path="res://Weapons/Blowdart/weapon_blowdart.gd" id="2_g1m1f"] [ext_resource type="Resource" uid="uid://cbskijhnnj3kw" path="res://Resources/StatusEffects/poisoned.tres" id="3_wculg"] -[ext_resource type="Resource" uid="uid://c6e50linnk2i7" path="res://PCs/Entomologist/ClassCards/Blowdart/weapon_stats.tres" id="4_dwqec"] -[ext_resource type="Texture2D" uid="uid://dnlplq8duves3" path="res://PCs/Entomologist/ClassCards/Blowdart/blowdart.png" id="5_rvf06"] -[ext_resource type="AudioStream" uid="uid://cu654fn5nke3n" path="res://PCs/Entomologist/ClassCards/Blowdart/shot1.wav" id="6_bfygd"] +[ext_resource type="Resource" uid="uid://c6e50linnk2i7" path="res://Weapons/Blowdart/weapon_stats.tres" id="4_dwqec"] +[ext_resource type="Texture2D" uid="uid://dnlplq8duves3" path="res://Weapons/Blowdart/blowdart.png" id="5_rvf06"] +[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="6_bfygd"] [sub_resource type="AtlasTexture" id="AtlasTexture_85web"] resource_local_to_scene = true @@ -16,7 +16,6 @@ region = Rect2(0, 0, 64, 64) random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("6_bfygd") -stream_0/weight = 1.0 [node name="BlowdartWeapon" instance=ExtResource("1_t3gfv")] script = ExtResource("2_g1m1f") diff --git a/PCs/Entomologist/ClassCards/Blowdart/weapon_stats.tres b/Weapons/Blowdart/weapon_stats.tres similarity index 77% rename from PCs/Entomologist/ClassCards/Blowdart/weapon_stats.tres rename to Weapons/Blowdart/weapon_stats.tres index 7a39285..6e306ec 100644 --- a/PCs/Entomologist/ClassCards/Blowdart/weapon_stats.tres +++ b/Weapons/Blowdart/weapon_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://c6e50linnk2i7"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_3nyhi"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_lbj0i"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_3nyhi"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_lbj0i"] [sub_resource type="Resource" id="Resource_1txa7"] script = ExtResource("1_3nyhi") @@ -21,10 +21,11 @@ value = 0.8 [sub_resource type="Resource" id="Resource_dtjel"] script = ExtResource("1_3nyhi") key = "Energy" -value = 15.0 +value = 8.0 [resource] script = ExtResource("2_lbj0i") target_type = 0 +energy_type = 1 attributes = Array[ExtResource("1_3nyhi")]([SubResource("Resource_1txa7"), SubResource("Resource_46kv2"), SubResource("Resource_gb76x"), SubResource("Resource_dtjel")]) text = "Fires every /Fire Delay\\s, applying one stack of Poison at a range of /Range\\m" diff --git a/PCs/Mechanic/ClassCards/BombLauncher/grenade_launcher.png b/Weapons/BombLauncher/grenade_launcher.png similarity index 100% rename from PCs/Mechanic/ClassCards/BombLauncher/grenade_launcher.png rename to Weapons/BombLauncher/grenade_launcher.png diff --git a/PCs/Mechanic/ClassCards/BombLauncher/grenade_launcher.png.import b/Weapons/BombLauncher/grenade_launcher.png.import similarity index 67% rename from PCs/Mechanic/ClassCards/BombLauncher/grenade_launcher.png.import rename to Weapons/BombLauncher/grenade_launcher.png.import index 84e225d..0504da0 100644 --- a/PCs/Mechanic/ClassCards/BombLauncher/grenade_launcher.png.import +++ b/Weapons/BombLauncher/grenade_launcher.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://3qcdx7n440sc" -path="res://.godot/imported/grenade_launcher.png-233e235e73731bd49fc11367e78b190d.ctex" +path="res://.godot/imported/grenade_launcher.png-8845c18be7f0ebba3854285b6d021f1f.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/BombLauncher/grenade_launcher.png" -dest_files=["res://.godot/imported/grenade_launcher.png-233e235e73731bd49fc11367e78b190d.ctex"] +source_file="res://Weapons/BombLauncher/grenade_launcher.png" +dest_files=["res://.godot/imported/grenade_launcher.png-8845c18be7f0ebba3854285b6d021f1f.ctex"] [params] diff --git a/PCs/Mechanic/ClassCards/BombLauncher/weapon_bomb_launcher.gd b/Weapons/BombLauncher/weapon_bomb_launcher.gd similarity index 100% rename from PCs/Mechanic/ClassCards/BombLauncher/weapon_bomb_launcher.gd rename to Weapons/BombLauncher/weapon_bomb_launcher.gd diff --git a/Weapons/BombLauncher/weapon_bomb_launcher.gd.uid b/Weapons/BombLauncher/weapon_bomb_launcher.gd.uid new file mode 100644 index 0000000..547811c --- /dev/null +++ b/Weapons/BombLauncher/weapon_bomb_launcher.gd.uid @@ -0,0 +1 @@ +uid://d2uo2cp7cdhdu diff --git a/PCs/Mechanic/ClassCards/BombLauncher/weapon_bomb_launcher.tscn b/Weapons/BombLauncher/weapon_bomb_launcher.tscn similarity index 67% rename from PCs/Mechanic/ClassCards/BombLauncher/weapon_bomb_launcher.tscn rename to Weapons/BombLauncher/weapon_bomb_launcher.tscn index 84f743a..0aae208 100644 --- a/PCs/Mechanic/ClassCards/BombLauncher/weapon_bomb_launcher.tscn +++ b/Weapons/BombLauncher/weapon_bomb_launcher.tscn @@ -1,11 +1,11 @@ [gd_scene load_steps=9 format=3 uid="uid://c3fqlkytyc62u"] [ext_resource type="PackedScene" uid="uid://bqdllitxbbpyp" path="res://Scenes/Weapons/projectile_weapon.tscn" id="1_gbycb"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/BombLauncher/weapon_bomb_launcher.gd" id="2_g5ihb"] -[ext_resource type="Resource" uid="uid://co6eorobj1xuu" path="res://PCs/Mechanic/ClassCards/BombLauncher/weapon_stats.tres" id="3_73ol1"] -[ext_resource type="PackedScene" uid="uid://c8oq5unisjqne" path="res://PCs/Mechanic/ClassCards/BombLauncher/bomb_projectile.tscn" id="3_jxt6m"] -[ext_resource type="Texture2D" uid="uid://3qcdx7n440sc" path="res://PCs/Mechanic/ClassCards/BombLauncher/grenade_launcher.png" id="5_iyrt8"] -[ext_resource type="AudioStream" uid="uid://qeav4v23p0dd" path="res://PCs/Mechanic/ClassCards/BombLauncher/shot1.wav" id="6_rg62n"] +[ext_resource type="Script" uid="uid://d2uo2cp7cdhdu" path="res://Weapons/BombLauncher/weapon_bomb_launcher.gd" id="2_g5ihb"] +[ext_resource type="Resource" uid="uid://co6eorobj1xuu" path="res://Weapons/BombLauncher/weapon_stats.tres" id="3_73ol1"] +[ext_resource type="PackedScene" uid="uid://c8oq5unisjqne" path="res://Projectiles/Bomb/bomb_projectile.tscn" id="3_jxt6m"] +[ext_resource type="Texture2D" uid="uid://3qcdx7n440sc" path="res://Weapons/BombLauncher/grenade_launcher.png" id="5_iyrt8"] +[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="6_rg62n"] [sub_resource type="AtlasTexture" id="AtlasTexture_4fobv"] resource_local_to_scene = true @@ -16,7 +16,6 @@ region = Rect2(0, 0, 64, 64) random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("6_rg62n") -stream_0/weight = 1.0 [node name="BombLauncherWeapon" instance=ExtResource("1_gbycb")] script = ExtResource("2_g5ihb") diff --git a/PCs/Mechanic/ClassCards/BombLauncher/weapon_stats.tres b/Weapons/BombLauncher/weapon_stats.tres similarity index 77% rename from PCs/Mechanic/ClassCards/BombLauncher/weapon_stats.tres rename to Weapons/BombLauncher/weapon_stats.tres index bf3f8b8..621782d 100644 --- a/PCs/Mechanic/ClassCards/BombLauncher/weapon_stats.tres +++ b/Weapons/BombLauncher/weapon_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://co6eorobj1xuu"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_vg7y2"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_fe8lx"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_vg7y2"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_fe8lx"] [sub_resource type="Resource" id="Resource_yb48y"] script = ExtResource("1_vg7y2") @@ -26,5 +26,6 @@ value = 10.0 [resource] script = ExtResource("2_fe8lx") target_type = 0 +energy_type = 1 attributes = Array[ExtResource("1_vg7y2")]([SubResource("Resource_yb48y"), SubResource("Resource_ewwvw"), SubResource("Resource_qu5dv"), SubResource("Resource_67t30")]) text = "Launch a bomb that deals /Damage\\ damage every /Fire Delay\\ seconds" diff --git a/PCs/Mage/ClassCards/Fireball/fireball.png b/Weapons/Fireball/fireball.png similarity index 100% rename from PCs/Mage/ClassCards/Fireball/fireball.png rename to Weapons/Fireball/fireball.png diff --git a/PCs/Mage/ClassCards/Fireball/fireball.png.import b/Weapons/Fireball/fireball.png.import similarity index 70% rename from PCs/Mage/ClassCards/Fireball/fireball.png.import rename to Weapons/Fireball/fireball.png.import index 6c90c69..1b0662c 100644 --- a/PCs/Mage/ClassCards/Fireball/fireball.png.import +++ b/Weapons/Fireball/fireball.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://mwgpnnm3g3re" -path="res://.godot/imported/fireball.png-a8e6046d0a910e165a4f466e04a553ce.ctex" +path="res://.godot/imported/fireball.png-ca2a9f79a1b748ed1d541f020b0c8375.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mage/ClassCards/Fireball/fireball.png" -dest_files=["res://.godot/imported/fireball.png-a8e6046d0a910e165a4f466e04a553ce.ctex"] +source_file="res://Weapons/Fireball/fireball.png" +dest_files=["res://.godot/imported/fireball.png-ca2a9f79a1b748ed1d541f020b0c8375.ctex"] [params] diff --git a/PCs/Mage/ClassCards/Fireball/weapon_fireball.gd b/Weapons/Fireball/weapon_fireball.gd similarity index 100% rename from PCs/Mage/ClassCards/Fireball/weapon_fireball.gd rename to Weapons/Fireball/weapon_fireball.gd diff --git a/Weapons/Fireball/weapon_fireball.gd.uid b/Weapons/Fireball/weapon_fireball.gd.uid new file mode 100644 index 0000000..d5579d1 --- /dev/null +++ b/Weapons/Fireball/weapon_fireball.gd.uid @@ -0,0 +1 @@ +uid://b31wq61g2i5vt diff --git a/PCs/Mage/ClassCards/Fireball/weapon_fireball.tscn b/Weapons/Fireball/weapon_fireball.tscn similarity index 69% rename from PCs/Mage/ClassCards/Fireball/weapon_fireball.tscn rename to Weapons/Fireball/weapon_fireball.tscn index 9f9588c..6cea5a0 100644 --- a/PCs/Mage/ClassCards/Fireball/weapon_fireball.tscn +++ b/Weapons/Fireball/weapon_fireball.tscn @@ -1,11 +1,11 @@ [gd_scene load_steps=9 format=3 uid="uid://dnwjfb4fexr0o"] [ext_resource type="PackedScene" uid="uid://bqdllitxbbpyp" path="res://Scenes/Weapons/projectile_weapon.tscn" id="1_7k6fb"] -[ext_resource type="Script" path="res://PCs/Mage/ClassCards/Fireball/weapon_fireball.gd" id="2_nprco"] -[ext_resource type="PackedScene" uid="uid://ddpixntjsbpqp" path="res://PCs/Mage/ClassCards/Fireball/fireball_projectile.tscn" id="3_2j1mm"] -[ext_resource type="Resource" uid="uid://dhwhwicgpw7yh" path="res://PCs/Mage/ClassCards/Fireball/weapon_stats.tres" id="4_rqdnu"] -[ext_resource type="Texture2D" uid="uid://mwgpnnm3g3re" path="res://PCs/Mage/ClassCards/Fireball/fireball.png" id="5_r42ic"] -[ext_resource type="AudioStream" uid="uid://cxiluyamsxson" path="res://PCs/Mage/ClassCards/Fireball/shot1.wav" id="6_o5rjg"] +[ext_resource type="Script" uid="uid://b31wq61g2i5vt" path="res://Weapons/Fireball/weapon_fireball.gd" id="2_nprco"] +[ext_resource type="PackedScene" uid="uid://ddpixntjsbpqp" path="res://Projectiles/Fireball/fireball_projectile.tscn" id="3_2j1mm"] +[ext_resource type="Resource" uid="uid://dhwhwicgpw7yh" path="res://Weapons/Fireball/weapon_stats.tres" id="4_rqdnu"] +[ext_resource type="Texture2D" uid="uid://mwgpnnm3g3re" path="res://Weapons/Fireball/fireball.png" id="5_r42ic"] +[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="6_o5rjg"] [sub_resource type="AtlasTexture" id="AtlasTexture_hfmm6"] resource_local_to_scene = true @@ -16,7 +16,6 @@ region = Rect2(0, 0, 64, 64) random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("6_o5rjg") -stream_0/weight = 1.0 [node name="FireballWeapon" instance=ExtResource("1_7k6fb")] script = ExtResource("2_nprco") diff --git a/PCs/Mage/ClassCards/Fireball/weapon_stats.tres b/Weapons/Fireball/weapon_stats.tres similarity index 77% rename from PCs/Mage/ClassCards/Fireball/weapon_stats.tres rename to Weapons/Fireball/weapon_stats.tres index c7ace8f..db236f6 100644 --- a/PCs/Mage/ClassCards/Fireball/weapon_stats.tres +++ b/Weapons/Fireball/weapon_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://dhwhwicgpw7yh"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_kqy5w"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_yto3f"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_kqy5w"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_yto3f"] [sub_resource type="Resource" id="Resource_68ba3"] script = ExtResource("1_kqy5w") @@ -21,10 +21,11 @@ value = 15.0 [sub_resource type="Resource" id="Resource_y1gjj"] script = ExtResource("1_kqy5w") key = "Energy" -value = 20.0 +value = 5.0 [resource] script = ExtResource("2_yto3f") target_type = 0 +energy_type = 1 attributes = Array[ExtResource("1_kqy5w")]([SubResource("Resource_68ba3"), SubResource("Resource_gogvm"), SubResource("Resource_pswb4"), SubResource("Resource_y1gjj")]) text = "Conjure a fireball every /Fire Delay\\s that can be thrown to deal /Damage\\ and apply Burning to enemies caught in its blast" diff --git a/PCs/Mechanic/ClassCards/Flamethrower/flame_particles.tres b/Weapons/Flamethrower/flame_particles.tres similarity index 100% rename from PCs/Mechanic/ClassCards/Flamethrower/flame_particles.tres rename to Weapons/Flamethrower/flame_particles.tres diff --git a/PCs/Mechanic/ClassCards/Flamethrower/weapon_flamethrower.gd b/Weapons/Flamethrower/weapon_flamethrower.gd similarity index 100% rename from PCs/Mechanic/ClassCards/Flamethrower/weapon_flamethrower.gd rename to Weapons/Flamethrower/weapon_flamethrower.gd diff --git a/Weapons/Flamethrower/weapon_flamethrower.gd.uid b/Weapons/Flamethrower/weapon_flamethrower.gd.uid new file mode 100644 index 0000000..31dcbfc --- /dev/null +++ b/Weapons/Flamethrower/weapon_flamethrower.gd.uid @@ -0,0 +1 @@ +uid://bf4aoeoumhnc6 diff --git a/PCs/Mechanic/ClassCards/Flamethrower/weapon_flamethrower.tscn b/Weapons/Flamethrower/weapon_flamethrower.tscn similarity index 75% rename from PCs/Mechanic/ClassCards/Flamethrower/weapon_flamethrower.tscn rename to Weapons/Flamethrower/weapon_flamethrower.tscn index 0f6264f..44b3edc 100644 --- a/PCs/Mechanic/ClassCards/Flamethrower/weapon_flamethrower.tscn +++ b/Weapons/Flamethrower/weapon_flamethrower.tscn @@ -1,11 +1,11 @@ [gd_scene load_steps=8 format=3 uid="uid://dhv7m4lky7bd8"] [ext_resource type="PackedScene" uid="uid://dp4gfr5h0tbcd" path="res://Scenes/Weapons/shapecast_weapon.tscn" id="1_ovmdp"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/Flamethrower/weapon_flamethrower.gd" id="2_227rf"] +[ext_resource type="Script" uid="uid://bf4aoeoumhnc6" path="res://Weapons/Flamethrower/weapon_flamethrower.gd" id="2_227rf"] [ext_resource type="Resource" uid="uid://dbanx8taicddm" path="res://Resources/StatusEffects/on_fire.tres" id="3_fqch8"] -[ext_resource type="Resource" uid="uid://yjknwdimtm8g" path="res://PCs/Mechanic/ClassCards/Flamethrower/weapon_stats.tres" id="4_oafdt"] -[ext_resource type="Texture2D" uid="uid://oblavj8vj30n" path="res://PCs/Mechanic/ClassCards/GlueLauncher/glue_gun.png" id="5_wdw3e"] -[ext_resource type="Material" uid="uid://gyeamtekshor" path="res://PCs/Mechanic/ClassCards/Flamethrower/flame_particles.tres" id="6_idhp2"] +[ext_resource type="Resource" uid="uid://yjknwdimtm8g" path="res://Weapons/Flamethrower/weapon_stats.tres" id="4_oafdt"] +[ext_resource type="Texture2D" uid="uid://oblavj8vj30n" path="res://Weapons/GlueLauncher/glue_gun.png" id="5_wdw3e"] +[ext_resource type="Material" uid="uid://gyeamtekshor" path="res://Weapons/Flamethrower/flame_particles.tres" id="6_idhp2"] [sub_resource type="AtlasTexture" id="AtlasTexture_3hank"] resource_local_to_scene = true diff --git a/PCs/Mechanic/ClassCards/Flamethrower/weapon_stats.tres b/Weapons/Flamethrower/weapon_stats.tres similarity index 76% rename from PCs/Mechanic/ClassCards/Flamethrower/weapon_stats.tres rename to Weapons/Flamethrower/weapon_stats.tres index d864f45..84153ef 100644 --- a/PCs/Mechanic/ClassCards/Flamethrower/weapon_stats.tres +++ b/Weapons/Flamethrower/weapon_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://yjknwdimtm8g"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_xqcf3"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_drgp3"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_xqcf3"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_drgp3"] [sub_resource type="Resource" id="Resource_j28f4"] script = ExtResource("1_xqcf3") @@ -21,10 +21,11 @@ value = 3.0 [sub_resource type="Resource" id="Resource_rjpjf"] script = ExtResource("1_xqcf3") key = "Energy" -value = 6.0 +value = 15.0 [resource] script = ExtResource("2_drgp3") target_type = 0 +energy_type = 2 attributes = Array[ExtResource("1_xqcf3")]([SubResource("Resource_j28f4"), SubResource("Resource_likes"), SubResource("Resource_b65mk"), SubResource("Resource_rjpjf")]) text = "Hold to apply Burning to enemies in front of you" diff --git a/PCs/Mechanic/ClassCards/Gatling/accelerator.png b/Weapons/Gatling/accelerator.png similarity index 100% rename from PCs/Mechanic/ClassCards/Gatling/accelerator.png rename to Weapons/Gatling/accelerator.png diff --git a/PCs/Mechanic/ClassCards/Gatling/accelerator.png.import b/Weapons/Gatling/accelerator.png.import similarity index 69% rename from PCs/Mechanic/ClassCards/Gatling/accelerator.png.import rename to Weapons/Gatling/accelerator.png.import index 2ba7a57..140884a 100644 --- a/PCs/Mechanic/ClassCards/Gatling/accelerator.png.import +++ b/Weapons/Gatling/accelerator.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://dkb8e0uu5vikw" -path="res://.godot/imported/accelerator.png-a0973046062ee4662a163fa426169703.ctex" +path="res://.godot/imported/accelerator.png-4c158c4ff4c604bf3c46c9349d25da93.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/Gatling/accelerator.png" -dest_files=["res://.godot/imported/accelerator.png-a0973046062ee4662a163fa426169703.ctex"] +source_file="res://Weapons/Gatling/accelerator.png" +dest_files=["res://.godot/imported/accelerator.png-4c158c4ff4c604bf3c46c9349d25da93.ctex"] [params] diff --git a/PCs/Mechanic/ClassCards/Gatling/weapon_gatling.gd b/Weapons/Gatling/weapon_gatling.gd similarity index 86% rename from PCs/Mechanic/ClassCards/Gatling/weapon_gatling.gd rename to Weapons/Gatling/weapon_gatling.gd index 5d2a86f..8729ca8 100644 --- a/PCs/Mechanic/ClassCards/Gatling/weapon_gatling.gd +++ b/Weapons/Gatling/weapon_gatling.gd @@ -17,6 +17,9 @@ func _ready() -> void: func _process(delta: float) -> void: super._process(delta) if trigger_held: + if stats.energy_type == Data.EnergyType.CONTINUOUS: + current_energy -= delta + energy_spent.emit(delta, stats.energy_type) time_since_firing_started += delta var progress: float = clamp(time_since_firing_started / time_to_reach_max_speed, 0.0, 1.0) current_time_between_shots = lerpf(time_between_shots, final_time_between_shots, progress) @@ -28,8 +31,8 @@ func _process(delta: float) -> void: func _physics_process(_delta: float) -> void: if trigger_held and current_energy >= energy_cost and time_since_firing >= current_time_between_shots: time_since_firing -= current_time_between_shots - current_energy -= energy_cost - energy_changed.emit(current_energy) + #current_energy -= energy_cost + #energy_spent.emit(current_energy) shoot() networked_shoot.rpc() diff --git a/Weapons/Gatling/weapon_gatling.gd.uid b/Weapons/Gatling/weapon_gatling.gd.uid new file mode 100644 index 0000000..9dce793 --- /dev/null +++ b/Weapons/Gatling/weapon_gatling.gd.uid @@ -0,0 +1 @@ +uid://iajcv516mpcg diff --git a/PCs/Mechanic/ClassCards/Gatling/weapon_gatling.tscn b/Weapons/Gatling/weapon_gatling.tscn similarity index 70% rename from PCs/Mechanic/ClassCards/Gatling/weapon_gatling.tscn rename to Weapons/Gatling/weapon_gatling.tscn index 4e8ed5f..fe19cfa 100644 --- a/PCs/Mechanic/ClassCards/Gatling/weapon_gatling.tscn +++ b/Weapons/Gatling/weapon_gatling.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=8 format=3 uid="uid://dkxi1ssoa44jn"] [ext_resource type="PackedScene" uid="uid://difwo7wlyqr3h" path="res://Scenes/Weapons/hitscan_weapon.tscn" id="1_fwlu5"] -[ext_resource type="Resource" uid="uid://cj2x1jvo8l4ot" path="res://PCs/Mechanic/ClassCards/Gatling/weapon_stats.tres" id="2_fnyjd"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/Gatling/weapon_gatling.gd" id="2_wm4al"] -[ext_resource type="Texture2D" uid="uid://dkb8e0uu5vikw" path="res://PCs/Mechanic/ClassCards/Gatling/accelerator.png" id="4_gi42y"] -[ext_resource type="AudioStream" uid="uid://1j0rquv4awjs" path="res://PCs/Mechanic/ClassCards/Gatling/shot1.wav" id="5_gelfi"] +[ext_resource type="Resource" uid="uid://cj2x1jvo8l4ot" path="res://Weapons/Gatling/weapon_stats.tres" id="2_fnyjd"] +[ext_resource type="Script" uid="uid://iajcv516mpcg" path="res://Weapons/Gatling/weapon_gatling.gd" id="2_wm4al"] +[ext_resource type="Texture2D" uid="uid://dkb8e0uu5vikw" path="res://Weapons/Gatling/accelerator.png" id="4_gi42y"] +[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="5_gelfi"] [sub_resource type="AtlasTexture" id="AtlasTexture_0im1y"] resource_local_to_scene = true @@ -15,7 +15,6 @@ region = Rect2(0, 0, 64, 64) random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("5_gelfi") -stream_0/weight = 1.0 [node name="WeaponGatling" instance=ExtResource("1_fwlu5")] script = ExtResource("2_wm4al") diff --git a/PCs/Mechanic/ClassCards/Gatling/weapon_stats.tres b/Weapons/Gatling/weapon_stats.tres similarity index 82% rename from PCs/Mechanic/ClassCards/Gatling/weapon_stats.tres rename to Weapons/Gatling/weapon_stats.tres index 4b5c936..058a4a8 100644 --- a/PCs/Mechanic/ClassCards/Gatling/weapon_stats.tres +++ b/Weapons/Gatling/weapon_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=9 format=3 uid="uid://cj2x1jvo8l4ot"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_7oh83"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_y36gr"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_7oh83"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_y36gr"] [sub_resource type="Resource" id="Resource_fi7tc"] script = ExtResource("1_7oh83") @@ -31,11 +31,12 @@ value = 4.0 [sub_resource type="Resource" id="Resource_d1lvi"] script = ExtResource("1_7oh83") key = "Energy" -value = 1.0 +value = 100.0 [resource] script = ExtResource("2_y36gr") target_type = 0 +energy_type = 2 attributes = Array[ExtResource("1_7oh83")]([SubResource("Resource_fi7tc"), SubResource("Resource_r6h5d"), SubResource("Resource_gwg1i"), SubResource("Resource_ogk1x"), SubResource("Resource_wdp3h"), SubResource("Resource_d1lvi")]) text = "Fires a shot every /Fire Delay\\ seconds dealing /Damage\\ damage at a range of /Range\\m diff --git a/PCs/Mechanic/ClassCards/GlueLauncher/glue_gun.png b/Weapons/GlueLauncher/glue_gun.png similarity index 100% rename from PCs/Mechanic/ClassCards/GlueLauncher/glue_gun.png rename to Weapons/GlueLauncher/glue_gun.png diff --git a/PCs/Mechanic/ClassCards/GlueLauncher/glue_gun.png.import b/Weapons/GlueLauncher/glue_gun.png.import similarity index 69% rename from PCs/Mechanic/ClassCards/GlueLauncher/glue_gun.png.import rename to Weapons/GlueLauncher/glue_gun.png.import index 27180ca..76ca88f 100644 --- a/PCs/Mechanic/ClassCards/GlueLauncher/glue_gun.png.import +++ b/Weapons/GlueLauncher/glue_gun.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://oblavj8vj30n" -path="res://.godot/imported/glue_gun.png-a2acb2baa6297047565493c79f3e6176.ctex" +path="res://.godot/imported/glue_gun.png-3a7daf5c437b562a7991221d00f42c09.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/GlueLauncher/glue_gun.png" -dest_files=["res://.godot/imported/glue_gun.png-a2acb2baa6297047565493c79f3e6176.ctex"] +source_file="res://Weapons/GlueLauncher/glue_gun.png" +dest_files=["res://.godot/imported/glue_gun.png-3a7daf5c437b562a7991221d00f42c09.ctex"] [params] diff --git a/PCs/Mechanic/ClassCards/GlueLauncher/weapon_glue_launcher.gd b/Weapons/GlueLauncher/weapon_glue_launcher.gd similarity index 100% rename from PCs/Mechanic/ClassCards/GlueLauncher/weapon_glue_launcher.gd rename to Weapons/GlueLauncher/weapon_glue_launcher.gd diff --git a/Weapons/GlueLauncher/weapon_glue_launcher.gd.uid b/Weapons/GlueLauncher/weapon_glue_launcher.gd.uid new file mode 100644 index 0000000..23fac4c --- /dev/null +++ b/Weapons/GlueLauncher/weapon_glue_launcher.gd.uid @@ -0,0 +1 @@ +uid://cen0646abxvb8 diff --git a/PCs/Mechanic/ClassCards/GlueLauncher/weapon_glue_launcher.tscn b/Weapons/GlueLauncher/weapon_glue_launcher.tscn similarity index 72% rename from PCs/Mechanic/ClassCards/GlueLauncher/weapon_glue_launcher.tscn rename to Weapons/GlueLauncher/weapon_glue_launcher.tscn index ee0fe52..dba034e 100644 --- a/PCs/Mechanic/ClassCards/GlueLauncher/weapon_glue_launcher.tscn +++ b/Weapons/GlueLauncher/weapon_glue_launcher.tscn @@ -1,11 +1,11 @@ [gd_scene load_steps=9 format=3 uid="uid://takm6diuy71m"] [ext_resource type="PackedScene" uid="uid://nrdexcyatika" path="res://Scenes/Weapons/status_applying_weapon.tscn" id="1_7v0k2"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/GlueLauncher/weapon_glue_launcher.gd" id="2_12ex2"] +[ext_resource type="Script" uid="uid://cen0646abxvb8" path="res://Weapons/GlueLauncher/weapon_glue_launcher.gd" id="2_12ex2"] [ext_resource type="Resource" uid="uid://d0643gfp52x3s" path="res://Resources/StatusEffects/sticky.tres" id="3_xtk6n"] -[ext_resource type="Resource" uid="uid://boj1ho5x0sxtq" path="res://PCs/Mechanic/ClassCards/GlueLauncher/weapon_stats.tres" id="4_c3ve8"] -[ext_resource type="Texture2D" uid="uid://oblavj8vj30n" path="res://PCs/Mechanic/ClassCards/GlueLauncher/glue_gun.png" id="5_obawu"] -[ext_resource type="AudioStream" uid="uid://v3j5lw827y85" path="res://PCs/Mechanic/ClassCards/GlueLauncher/shot1.wav" id="6_6qk7c"] +[ext_resource type="Resource" uid="uid://boj1ho5x0sxtq" path="res://Weapons/GlueLauncher/weapon_stats.tres" id="4_c3ve8"] +[ext_resource type="Texture2D" uid="uid://oblavj8vj30n" path="res://Weapons/GlueLauncher/glue_gun.png" id="5_obawu"] +[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="6_6qk7c"] [sub_resource type="AtlasTexture" id="AtlasTexture_ehcsl"] resource_local_to_scene = true @@ -16,7 +16,6 @@ region = Rect2(0, 0, 64, 64) random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("6_6qk7c") -stream_0/weight = 1.0 [node name="GlueLauncherWeapon" instance=ExtResource("1_7v0k2")] script = ExtResource("2_12ex2") diff --git a/PCs/Mechanic/ClassCards/GlueLauncher/weapon_stats.tres b/Weapons/GlueLauncher/weapon_stats.tres similarity index 76% rename from PCs/Mechanic/ClassCards/GlueLauncher/weapon_stats.tres rename to Weapons/GlueLauncher/weapon_stats.tres index 090277d..030262f 100644 --- a/PCs/Mechanic/ClassCards/GlueLauncher/weapon_stats.tres +++ b/Weapons/GlueLauncher/weapon_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://boj1ho5x0sxtq"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_8ysxs"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_nlx26"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_8ysxs"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_nlx26"] [sub_resource type="Resource" id="Resource_gbocu"] script = ExtResource("1_8ysxs") @@ -21,10 +21,11 @@ value = 0.5 [sub_resource type="Resource" id="Resource_o1b5x"] script = ExtResource("1_8ysxs") key = "Energy" -value = 8.0 +value = 12.0 [resource] script = ExtResource("2_nlx26") target_type = 0 +energy_type = 1 attributes = Array[ExtResource("1_8ysxs")]([SubResource("Resource_gbocu"), SubResource("Resource_6a2im"), SubResource("Resource_7npe0"), SubResource("Resource_o1b5x")]) text = "Fires every /Fire Delay\\s, making the target Sticky at a range of /Range\\m" diff --git a/PCs/Mage/ClassCards/Icicle/icicle.png b/Weapons/Icicle/icicle.png similarity index 100% rename from PCs/Mage/ClassCards/Icicle/icicle.png rename to Weapons/Icicle/icicle.png diff --git a/PCs/Mage/ClassCards/Icicle/icicle.png.import b/Weapons/Icicle/icicle.png.import similarity index 71% rename from PCs/Mage/ClassCards/Icicle/icicle.png.import rename to Weapons/Icicle/icicle.png.import index 12c77fe..696a4cf 100644 --- a/PCs/Mage/ClassCards/Icicle/icicle.png.import +++ b/Weapons/Icicle/icicle.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://mqo5qcghfit8" -path="res://.godot/imported/icicle.png-63ef7ea52dbc926a22a2e498f8f4b1bc.ctex" +path="res://.godot/imported/icicle.png-c9b1486012d89be0210aa46f82236f7a.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mage/ClassCards/Icicle/icicle.png" -dest_files=["res://.godot/imported/icicle.png-63ef7ea52dbc926a22a2e498f8f4b1bc.ctex"] +source_file="res://Weapons/Icicle/icicle.png" +dest_files=["res://.godot/imported/icicle.png-c9b1486012d89be0210aa46f82236f7a.ctex"] [params] diff --git a/PCs/Mage/ClassCards/Icicle/weapon_icicle.gd b/Weapons/Icicle/weapon_icicle.gd similarity index 100% rename from PCs/Mage/ClassCards/Icicle/weapon_icicle.gd rename to Weapons/Icicle/weapon_icicle.gd diff --git a/Weapons/Icicle/weapon_icicle.gd.uid b/Weapons/Icicle/weapon_icicle.gd.uid new file mode 100644 index 0000000..cfa0a35 --- /dev/null +++ b/Weapons/Icicle/weapon_icicle.gd.uid @@ -0,0 +1 @@ +uid://b8kfsaxc738dr diff --git a/PCs/Mage/ClassCards/Icicle/weapon_icicle.tscn b/Weapons/Icicle/weapon_icicle.tscn similarity index 70% rename from PCs/Mage/ClassCards/Icicle/weapon_icicle.tscn rename to Weapons/Icicle/weapon_icicle.tscn index 56637e2..52e9bf3 100644 --- a/PCs/Mage/ClassCards/Icicle/weapon_icicle.tscn +++ b/Weapons/Icicle/weapon_icicle.tscn @@ -1,11 +1,11 @@ [gd_scene load_steps=9 format=3 uid="uid://v3iuf4lt2iff"] [ext_resource type="PackedScene" uid="uid://bqdllitxbbpyp" path="res://Scenes/Weapons/projectile_weapon.tscn" id="1_oi7x1"] -[ext_resource type="Script" path="res://PCs/Mage/ClassCards/Icicle/weapon_icicle.gd" id="2_6wbx0"] -[ext_resource type="PackedScene" uid="uid://dyurjxotdkf1u" path="res://PCs/Mage/ClassCards/Icicle/icicle_projectile.tscn" id="3_cwl2u"] -[ext_resource type="Resource" uid="uid://ckjmym1ofww4" path="res://PCs/Mage/ClassCards/Icicle/weapon_stats.tres" id="4_r8ss5"] -[ext_resource type="Texture2D" uid="uid://mqo5qcghfit8" path="res://PCs/Mage/ClassCards/Icicle/icicle.png" id="5_iremk"] -[ext_resource type="AudioStream" uid="uid://dgqmtmty7ekmc" path="res://PCs/Mage/ClassCards/Icicle/shot1.wav" id="6_ilpsp"] +[ext_resource type="Script" uid="uid://b8kfsaxc738dr" path="res://Weapons/Icicle/weapon_icicle.gd" id="2_6wbx0"] +[ext_resource type="PackedScene" uid="uid://dyurjxotdkf1u" path="res://Projectiles/Icicle/icicle_projectile.tscn" id="3_cwl2u"] +[ext_resource type="Resource" uid="uid://ckjmym1ofww4" path="res://Weapons/Icicle/weapon_stats.tres" id="4_r8ss5"] +[ext_resource type="Texture2D" uid="uid://mqo5qcghfit8" path="res://Weapons/Icicle/icicle.png" id="5_iremk"] +[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="6_ilpsp"] [sub_resource type="AtlasTexture" id="AtlasTexture_7uf3s"] resource_local_to_scene = true @@ -16,7 +16,6 @@ region = Rect2(0, 0, 64, 64) random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("6_ilpsp") -stream_0/weight = 1.0 [node name="IcicleWeapon" instance=ExtResource("1_oi7x1")] script = ExtResource("2_6wbx0") diff --git a/PCs/Mage/ClassCards/Icicle/weapon_stats.tres b/Weapons/Icicle/weapon_stats.tres similarity index 77% rename from PCs/Mage/ClassCards/Icicle/weapon_stats.tres rename to Weapons/Icicle/weapon_stats.tres index 7a68867..5cfd7a4 100644 --- a/PCs/Mage/ClassCards/Icicle/weapon_stats.tres +++ b/Weapons/Icicle/weapon_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://ckjmym1ofww4"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_nkpmf"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_5m6w7"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_nkpmf"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_5m6w7"] [sub_resource type="Resource" id="Resource_68ba3"] script = ExtResource("1_nkpmf") @@ -21,10 +21,11 @@ value = 15.0 [sub_resource type="Resource" id="Resource_cfu7u"] script = ExtResource("1_nkpmf") key = "Energy" -value = 20.0 +value = 5.0 [resource] script = ExtResource("2_5m6w7") target_type = 0 +energy_type = 1 attributes = Array[ExtResource("1_nkpmf")]([SubResource("Resource_68ba3"), SubResource("Resource_gogvm"), SubResource("Resource_pswb4"), SubResource("Resource_cfu7u")]) text = "Conjure an icicle every /Fire Delay\\s that can be thrown to deal /Damage\\ and apply Cold to enemies caught in its blast" diff --git a/Weapons/Overclock/g_asssrault-export.png b/Weapons/Overclock/g_asssrault-export.png new file mode 100644 index 0000000..60a636b Binary files /dev/null and b/Weapons/Overclock/g_asssrault-export.png differ diff --git a/Weapons/Overclock/g_asssrault-export.png.import b/Weapons/Overclock/g_asssrault-export.png.import new file mode 100644 index 0000000..7e51e0d --- /dev/null +++ b/Weapons/Overclock/g_asssrault-export.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cufk22apg8kqv" +path.s3tc="res://.godot/imported/g_asssrault-export.png-58b6525a5c474bc76f125375a72b58c0.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://Weapons/Overclock/g_asssrault-export.png" +dest_files=["res://.godot/imported/g_asssrault-export.png-58b6525a5c474bc76f125375a72b58c0.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/Weapons/Overclock/overclock_weapon.gd b/Weapons/Overclock/overclock_weapon.gd new file mode 100644 index 0000000..841bd9b --- /dev/null +++ b/Weapons/Overclock/overclock_weapon.gd @@ -0,0 +1,45 @@ +class_name OverclockWeapon extends Weapon + + +@export var raycast: RayCast3D +@export var range_debug_indicator: CSGSphere3D + +var attack_range: float = 0.0 +var effect_duration: float = 0.0 + + +func _ready() -> void: + super._ready() + attack_range = stats.get_attribute("Range") + effect_duration = stats.get_attribute("EffectDuration") + raycast.target_position = Vector3(0, 0, -attack_range) + range_debug_indicator.radius = attack_range + raycast.global_position = hero.camera.global_position + + +func shoot() -> void: + super.shoot() + if raycast.is_colliding(): + var target: CharacterBody3D = raycast.get_collider() + if target != null: + var target_hitbox: CollisionShape3D = target.shape_owner_get_owner(raycast.get_collider_shape()) + if target_hitbox.get_parent() is TowerBase: + hit(target, target_hitbox.get_parent()) + #if Data.preferences.display_self_damage_indicators: + #spawn_damage_indicator(raycast.get_collision_point()) + networked_hit.rpc(get_tree().root.get_path_to(target), get_tree().root.get_path_to(target_hitbox.get_parent())) + + +func hit(_target: CharacterBody3D, target_hitbox: TowerBase) -> void: + #target_hitbox.damage(damage) + if target_hitbox.tower: + target_hitbox.tower.big_speed_buff_timer += effect_duration + + +@rpc("reliable") +func networked_hit(target_path: String, target_hitbox_path: String) -> void: + #var target: CharacterBody3D = get_tree().root.get_node(target_path) + var target_hitbox: TowerBase = get_tree().root.get_node(target_hitbox_path) as TowerBase + hit(null, target_hitbox) + #if Data.preferences.display_party_damage_indicators: + #spawn_damage_indicator(target.sprite.global_position) diff --git a/Weapons/Overclock/overclock_weapon.gd.uid b/Weapons/Overclock/overclock_weapon.gd.uid new file mode 100644 index 0000000..48f192e --- /dev/null +++ b/Weapons/Overclock/overclock_weapon.gd.uid @@ -0,0 +1 @@ +uid://bxqellvwo4d7n diff --git a/Weapons/Overclock/overclock_weapon.tscn b/Weapons/Overclock/overclock_weapon.tscn new file mode 100644 index 0000000..5d5adc9 --- /dev/null +++ b/Weapons/Overclock/overclock_weapon.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=6 format=3 uid="uid://dmbd7ivisjm3w"] + +[ext_resource type="PackedScene" uid="uid://difwo7wlyqr3h" path="res://Scenes/Weapons/hitscan_weapon.tscn" id="1_y7piy"] +[ext_resource type="Script" uid="uid://bxqellvwo4d7n" path="res://Weapons/Overclock/overclock_weapon.gd" id="2_5uumc"] +[ext_resource type="Resource" uid="uid://d3qmy6puuh1gl" path="res://Weapons/Overclock/weapon_stats.tres" id="3_tptkd"] +[ext_resource type="Texture2D" uid="uid://cufk22apg8kqv" path="res://Weapons/Overclock/g_asssrault-export.png" id="4_5uumc"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_tptkd"] +atlas = ExtResource("4_5uumc") +region = Rect2(0, 0, 64, 64) + +[node name="HitscanWeapon" instance=ExtResource("1_y7piy")] +script = ExtResource("2_5uumc") +stats = ExtResource("3_tptkd") + +[node name="Sprite3D" parent="." index="0"] +texture = SubResource("AtlasTexture_tptkd") diff --git a/Weapons/Overclock/weapon_stats.tres b/Weapons/Overclock/weapon_stats.tres new file mode 100644 index 0000000..e8d8d1f --- /dev/null +++ b/Weapons/Overclock/weapon_stats.tres @@ -0,0 +1,42 @@ +[gd_resource type="Resource" script_class="CardText" load_steps=8 format=3 uid="uid://d3qmy6puuh1gl"] + +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_m84e5"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_rl1ek"] + +[sub_resource type="Resource" id="Resource_m84e5"] +script = ExtResource("1_m84e5") +key = "Fire Delay" +value = 0.3 +metadata/_custom_type_script = "uid://yjb0uv6og430" + +[sub_resource type="Resource" id="Resource_rl1ek"] +script = ExtResource("1_m84e5") +key = "Damage" +value = 0.0 +metadata/_custom_type_script = "uid://yjb0uv6og430" + +[sub_resource type="Resource" id="Resource_gglou"] +script = ExtResource("1_m84e5") +key = "Energy" +value = 20.0 +metadata/_custom_type_script = "uid://yjb0uv6og430" + +[sub_resource type="Resource" id="Resource_0g051"] +script = ExtResource("1_m84e5") +key = "Range" +value = 100.0 +metadata/_custom_type_script = "uid://yjb0uv6og430" + +[sub_resource type="Resource" id="Resource_uq2yv"] +script = ExtResource("1_m84e5") +key = "EffectDuration" +value = 1.0 +metadata/_custom_type_script = "uid://yjb0uv6og430" + +[resource] +script = ExtResource("2_rl1ek") +target_type = 1 +energy_type = 2 +attributes = Array[ExtResource("1_m84e5")]([SubResource("Resource_m84e5"), SubResource("Resource_rl1ek"), SubResource("Resource_gglou"), SubResource("Resource_0g051"), SubResource("Resource_uq2yv")]) +text = "Fire a machine-energizing pellet every /Fire Delay\\ seconds that speeds up tower fire rate by 35% for /EffectDuration\\ seconds at a range of /Range\\m" +metadata/_custom_type_script = "uid://dg7gxxqfqxcmc" diff --git a/PCs/Mechanic/ClassCards/Reactor/radiation_particles.tres b/Weapons/Reactor/radiation_particles.tres similarity index 78% rename from PCs/Mechanic/ClassCards/Reactor/radiation_particles.tres rename to Weapons/Reactor/radiation_particles.tres index d850985..966ec40 100644 --- a/PCs/Mechanic/ClassCards/Reactor/radiation_particles.tres +++ b/Weapons/Reactor/radiation_particles.tres @@ -9,6 +9,12 @@ colors = PackedColorArray(0, 0.831373, 0, 1, 4.21144e-08, 0.320987, -4.81308e-08 gradient = SubResource("Gradient_eiw3y") [resource] +emission_shape = 6 +emission_ring_axis = Vector3(0, -1, 0) +emission_ring_height = 1.0 +emission_ring_radius = 1.0 +emission_ring_inner_radius = 0.0 +emission_ring_cone_angle = 90.0 direction = Vector3(0, 0, -1) spread = 15.0 initial_velocity_min = 3.0 diff --git a/PCs/Mechanic/ClassCards/Reactor/weapon_reactor.gd b/Weapons/Reactor/weapon_reactor.gd similarity index 100% rename from PCs/Mechanic/ClassCards/Reactor/weapon_reactor.gd rename to Weapons/Reactor/weapon_reactor.gd diff --git a/Weapons/Reactor/weapon_reactor.gd.uid b/Weapons/Reactor/weapon_reactor.gd.uid new file mode 100644 index 0000000..02dc1a7 --- /dev/null +++ b/Weapons/Reactor/weapon_reactor.gd.uid @@ -0,0 +1 @@ +uid://d1lqdrh65prrr diff --git a/PCs/Mechanic/ClassCards/Reactor/weapon_reactor.tscn b/Weapons/Reactor/weapon_reactor.tscn similarity index 79% rename from PCs/Mechanic/ClassCards/Reactor/weapon_reactor.tscn rename to Weapons/Reactor/weapon_reactor.tscn index f2eb0c3..409647b 100644 --- a/PCs/Mechanic/ClassCards/Reactor/weapon_reactor.tscn +++ b/Weapons/Reactor/weapon_reactor.tscn @@ -1,11 +1,11 @@ [gd_scene load_steps=10 format=3 uid="uid://yymj42pp6v1t"] [ext_resource type="PackedScene" uid="uid://dp4gfr5h0tbcd" path="res://Scenes/Weapons/shapecast_weapon.tscn" id="1_du35a"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/Reactor/weapon_reactor.gd" id="2_oe7hd"] +[ext_resource type="Script" uid="uid://d1lqdrh65prrr" path="res://Weapons/Reactor/weapon_reactor.gd" id="2_oe7hd"] [ext_resource type="Resource" uid="uid://dxlisoas4xlmo" path="res://Resources/StatusEffects/radioactive.tres" id="3_hsfwd"] -[ext_resource type="Resource" uid="uid://ipfr7emuarbj" path="res://PCs/Mechanic/ClassCards/Reactor/weapon_stats.tres" id="4_83mkk"] -[ext_resource type="Texture2D" uid="uid://oblavj8vj30n" path="res://PCs/Mechanic/ClassCards/GlueLauncher/glue_gun.png" id="5_bawfy"] -[ext_resource type="Material" uid="uid://bjab6t4n0s5ac" path="res://PCs/Mechanic/ClassCards/Reactor/radiation_particles.tres" id="6_0sgt1"] +[ext_resource type="Resource" uid="uid://ipfr7emuarbj" path="res://Weapons/Reactor/weapon_stats.tres" id="4_83mkk"] +[ext_resource type="Texture2D" uid="uid://oblavj8vj30n" path="res://Weapons/GlueLauncher/glue_gun.png" id="5_bawfy"] +[ext_resource type="Material" uid="uid://bjab6t4n0s5ac" path="res://Weapons/Reactor/radiation_particles.tres" id="6_0sgt1"] [sub_resource type="AtlasTexture" id="AtlasTexture_0dpt5"] resource_local_to_scene = true diff --git a/PCs/Mechanic/ClassCards/Reactor/weapon_stats.tres b/Weapons/Reactor/weapon_stats.tres similarity index 76% rename from PCs/Mechanic/ClassCards/Reactor/weapon_stats.tres rename to Weapons/Reactor/weapon_stats.tres index 89bbbbe..01bff92 100644 --- a/PCs/Mechanic/ClassCards/Reactor/weapon_stats.tres +++ b/Weapons/Reactor/weapon_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://ipfr7emuarbj"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_b6ubt"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_ahbcx"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_b6ubt"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_ahbcx"] [sub_resource type="Resource" id="Resource_j28f4"] script = ExtResource("1_b6ubt") @@ -21,10 +21,11 @@ value = 3.0 [sub_resource type="Resource" id="Resource_b4805"] script = ExtResource("1_b6ubt") key = "Energy" -value = 11.0 +value = 9.0 [resource] script = ExtResource("2_ahbcx") target_type = 0 +energy_type = 2 attributes = Array[ExtResource("1_b6ubt")]([SubResource("Resource_j28f4"), SubResource("Resource_likes"), SubResource("Resource_b65mk"), SubResource("Resource_b4805")]) text = "Hold to apply Radioactive to enemies in front of you" diff --git a/PCs/Mage/ClassCards/Refrigerator/cold_particles.tres b/Weapons/Refrigerator/cold_particles.tres similarity index 100% rename from PCs/Mage/ClassCards/Refrigerator/cold_particles.tres rename to Weapons/Refrigerator/cold_particles.tres diff --git a/PCs/Mage/ClassCards/Refrigerator/weapon_refrigerator.tscn b/Weapons/Refrigerator/weapon_refrigerator.tscn similarity index 82% rename from PCs/Mage/ClassCards/Refrigerator/weapon_refrigerator.tscn rename to Weapons/Refrigerator/weapon_refrigerator.tscn index 6762a13..8f2ca18 100644 --- a/PCs/Mage/ClassCards/Refrigerator/weapon_refrigerator.tscn +++ b/Weapons/Refrigerator/weapon_refrigerator.tscn @@ -2,9 +2,9 @@ [ext_resource type="PackedScene" uid="uid://dp4gfr5h0tbcd" path="res://Scenes/Weapons/shapecast_weapon.tscn" id="1_g3e4a"] [ext_resource type="Resource" uid="uid://fed6kimfbcwv" path="res://Resources/StatusEffects/cold.tres" id="2_pranv"] -[ext_resource type="Resource" uid="uid://5l758yxfpi1e" path="res://PCs/Mage/ClassCards/Refrigerator/weapon_stats.tres" id="3_ihljm"] -[ext_resource type="Texture2D" uid="uid://oblavj8vj30n" path="res://PCs/Mechanic/ClassCards/GlueLauncher/glue_gun.png" id="4_y5ps0"] -[ext_resource type="Material" uid="uid://ckung57mij7ue" path="res://PCs/Mage/ClassCards/Refrigerator/cold_particles.tres" id="5_8q1lc"] +[ext_resource type="Resource" uid="uid://5l758yxfpi1e" path="res://Weapons/Refrigerator/weapon_stats.tres" id="3_ihljm"] +[ext_resource type="Texture2D" uid="uid://oblavj8vj30n" path="res://Weapons/GlueLauncher/glue_gun.png" id="4_y5ps0"] +[ext_resource type="Material" uid="uid://ckung57mij7ue" path="res://Weapons/Refrigerator/cold_particles.tres" id="5_8q1lc"] [sub_resource type="AtlasTexture" id="AtlasTexture_0yua2"] resource_local_to_scene = true diff --git a/PCs/Mage/ClassCards/Refrigerator/weapon_stats.tres b/Weapons/Refrigerator/weapon_stats.tres similarity index 76% rename from PCs/Mage/ClassCards/Refrigerator/weapon_stats.tres rename to Weapons/Refrigerator/weapon_stats.tres index faeda0d..3e613fb 100644 --- a/PCs/Mage/ClassCards/Refrigerator/weapon_stats.tres +++ b/Weapons/Refrigerator/weapon_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://5l758yxfpi1e"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_dxffl"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_wny82"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_dxffl"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_wny82"] [sub_resource type="Resource" id="Resource_j28f4"] script = ExtResource("1_dxffl") @@ -21,10 +21,11 @@ value = 3.0 [sub_resource type="Resource" id="Resource_voaa5"] script = ExtResource("1_dxffl") key = "Energy" -value = 7.0 +value = 14.0 [resource] script = ExtResource("2_wny82") target_type = 0 +energy_type = 2 attributes = Array[ExtResource("1_dxffl")]([SubResource("Resource_j28f4"), SubResource("Resource_likes"), SubResource("Resource_b65mk"), SubResource("Resource_voaa5")]) text = "Hold to apply Cold to enemies in front of you" diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher.png b/Weapons/RocketLauncher/rocket_launcher.png similarity index 100% rename from PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher.png rename to Weapons/RocketLauncher/rocket_launcher.png diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher.png.import b/Weapons/RocketLauncher/rocket_launcher.png.import similarity index 68% rename from PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher.png.import rename to Weapons/RocketLauncher/rocket_launcher.png.import index 5c0bd34..8900f7f 100644 --- a/PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher.png.import +++ b/Weapons/RocketLauncher/rocket_launcher.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://by1y15lm0bppe" -path="res://.godot/imported/rocket_launcher.png-89f364514f7ef0b363fc8ad5d17ac350.ctex" +path="res://.godot/imported/rocket_launcher.png-46d46e1e1165d4d8f368275130d46ec7.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher.png" -dest_files=["res://.godot/imported/rocket_launcher.png-89f364514f7ef0b363fc8ad5d17ac350.ctex"] +source_file="res://Weapons/RocketLauncher/rocket_launcher.png" +dest_files=["res://.godot/imported/rocket_launcher.png-46d46e1e1165d4d8f368275130d46ec7.ctex"] [params] diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/target_icon.png b/Weapons/RocketLauncher/target_icon.png similarity index 100% rename from PCs/Mechanic/ClassCards/RocketLauncher/target_icon.png rename to Weapons/RocketLauncher/target_icon.png diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/target_icon.png.import b/Weapons/RocketLauncher/target_icon.png.import similarity index 68% rename from PCs/Mechanic/ClassCards/RocketLauncher/target_icon.png.import rename to Weapons/RocketLauncher/target_icon.png.import index 9057ab4..4f8b149 100644 --- a/PCs/Mechanic/ClassCards/RocketLauncher/target_icon.png.import +++ b/Weapons/RocketLauncher/target_icon.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://hnfa76d6tdi" -path="res://.godot/imported/target_icon.png-88a8c3cbac1c3c0f8fa9cc14c20caa64.ctex" +path="res://.godot/imported/target_icon.png-fdb073988a655736b50ac44c55c9a9e4.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/RocketLauncher/target_icon.png" -dest_files=["res://.godot/imported/target_icon.png-88a8c3cbac1c3c0f8fa9cc14c20caa64.ctex"] +source_file="res://Weapons/RocketLauncher/target_icon.png" +dest_files=["res://.godot/imported/target_icon.png-fdb073988a655736b50ac44c55c9a9e4.ctex"] [params] diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/target_icon.tscn b/Weapons/RocketLauncher/target_icon.tscn similarity index 80% rename from PCs/Mechanic/ClassCards/RocketLauncher/target_icon.tscn rename to Weapons/RocketLauncher/target_icon.tscn index 10b3865..b256838 100644 --- a/PCs/Mechanic/ClassCards/RocketLauncher/target_icon.tscn +++ b/Weapons/RocketLauncher/target_icon.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=2 format=3 uid="uid://csufsbi64asau"] -[ext_resource type="Texture2D" uid="uid://hnfa76d6tdi" path="res://PCs/Mechanic/ClassCards/RocketLauncher/target_icon.png" id="1_r4a3f"] +[ext_resource type="Texture2D" uid="uid://hnfa76d6tdi" path="res://Weapons/RocketLauncher/target_icon.png" id="1_r4a3f"] [node name="Node3D" type="Sprite3D"] sorting_offset = 20.0 diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/target_list.png b/Weapons/RocketLauncher/target_list.png similarity index 100% rename from PCs/Mechanic/ClassCards/RocketLauncher/target_list.png rename to Weapons/RocketLauncher/target_list.png diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/target_list.png.import b/Weapons/RocketLauncher/target_list.png.import similarity index 69% rename from PCs/Mechanic/ClassCards/RocketLauncher/target_list.png.import rename to Weapons/RocketLauncher/target_list.png.import index 09dfa6f..2d4b501 100644 --- a/PCs/Mechanic/ClassCards/RocketLauncher/target_list.png.import +++ b/Weapons/RocketLauncher/target_list.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cc2umukpibmx1" -path="res://.godot/imported/target_list.png-22916b59d069390b66a4bbdfb4754966.ctex" +path="res://.godot/imported/target_list.png-8dceb321dce44756cc7d567683ca010a.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/RocketLauncher/target_list.png" -dest_files=["res://.godot/imported/target_list.png-22916b59d069390b66a4bbdfb4754966.ctex"] +source_file="res://Weapons/RocketLauncher/target_list.png" +dest_files=["res://.godot/imported/target_list.png-8dceb321dce44756cc7d567683ca010a.ctex"] [params] diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/weapon_rocket_launcher.gd b/Weapons/RocketLauncher/weapon_rocket_launcher.gd similarity index 92% rename from PCs/Mechanic/ClassCards/RocketLauncher/weapon_rocket_launcher.gd rename to Weapons/RocketLauncher/weapon_rocket_launcher.gd index 1f5669f..59c0c54 100644 --- a/PCs/Mechanic/ClassCards/RocketLauncher/weapon_rocket_launcher.gd +++ b/Weapons/RocketLauncher/weapon_rocket_launcher.gd @@ -44,8 +44,9 @@ func _process(delta: float) -> void: func release_trigger() -> void: super.release_trigger() if targets.size() > 0 and current_energy >= energy_cost and time_since_firing >= time_between_shots: - current_energy -= energy_cost - energy_changed.emit(current_energy) + #TODO: make it "rockets fired" not "targets" + current_energy -= targets.size() + energy_spent.emit(targets.size(), stats.energy_type) time_since_firing -= time_between_shots shoot() @@ -67,7 +68,9 @@ func networked_spawn_rocket(target_node_path: String, peer_id: int) -> void: var target: EnemyController = get_tree().root.get_node(target_node_path) var projectile: RocketProjectile = projectile_scene.instantiate() as RocketProjectile projectile.position = global_position - projectile.damage = damage + var effect: Effect = Effect.new() + effect.damage = damage + projectile.effect = effect projectile.target = target projectile.owner_id = peer_id projectile.name = str(peer_id) + str(projectile_id) diff --git a/Weapons/RocketLauncher/weapon_rocket_launcher.gd.uid b/Weapons/RocketLauncher/weapon_rocket_launcher.gd.uid new file mode 100644 index 0000000..480249a --- /dev/null +++ b/Weapons/RocketLauncher/weapon_rocket_launcher.gd.uid @@ -0,0 +1 @@ +uid://cuxi02s34ohs diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/weapon_rocket_launcher.tscn b/Weapons/RocketLauncher/weapon_rocket_launcher.tscn similarity index 74% rename from PCs/Mechanic/ClassCards/RocketLauncher/weapon_rocket_launcher.tscn rename to Weapons/RocketLauncher/weapon_rocket_launcher.tscn index 1647743..df65314 100644 --- a/PCs/Mechanic/ClassCards/RocketLauncher/weapon_rocket_launcher.tscn +++ b/Weapons/RocketLauncher/weapon_rocket_launcher.tscn @@ -1,13 +1,13 @@ [gd_scene load_steps=12 format=3 uid="uid://bdp7icdejayvr"] [ext_resource type="PackedScene" uid="uid://bqdllitxbbpyp" path="res://Scenes/Weapons/projectile_weapon.tscn" id="1_gxaua"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/RocketLauncher/weapon_rocket_launcher.gd" id="2_8x1tf"] -[ext_resource type="PackedScene" uid="uid://p2vwo8ivben6" path="res://PCs/Mechanic/ClassCards/RocketLauncher/rocket_projectile.tscn" id="2_lfuvh"] -[ext_resource type="PackedScene" uid="uid://csufsbi64asau" path="res://PCs/Mechanic/ClassCards/RocketLauncher/target_icon.tscn" id="3_2x5va"] -[ext_resource type="Resource" uid="uid://d2yo07m2mp2mp" path="res://PCs/Mechanic/ClassCards/RocketLauncher/weapon_stats.tres" id="3_i1hxj"] -[ext_resource type="Texture2D" uid="uid://by1y15lm0bppe" path="res://PCs/Mechanic/ClassCards/RocketLauncher/rocket_launcher.png" id="4_iygkf"] -[ext_resource type="Texture2D" uid="uid://cc2umukpibmx1" path="res://PCs/Mechanic/ClassCards/RocketLauncher/target_list.png" id="6_jlv88"] -[ext_resource type="AudioStream" uid="uid://n0w2kj5j2x4e" path="res://PCs/Mechanic/ClassCards/RocketLauncher/shot1.wav" id="8_genbv"] +[ext_resource type="Script" uid="uid://cuxi02s34ohs" path="res://Weapons/RocketLauncher/weapon_rocket_launcher.gd" id="2_8x1tf"] +[ext_resource type="PackedScene" uid="uid://p2vwo8ivben6" path="res://Projectiles/Rocket/rocket_projectile.tscn" id="2_lfuvh"] +[ext_resource type="PackedScene" uid="uid://csufsbi64asau" path="res://Weapons/RocketLauncher/target_icon.tscn" id="3_2x5va"] +[ext_resource type="Resource" uid="uid://d2yo07m2mp2mp" path="res://Weapons/RocketLauncher/weapon_stats.tres" id="3_i1hxj"] +[ext_resource type="Texture2D" uid="uid://by1y15lm0bppe" path="res://Weapons/RocketLauncher/rocket_launcher.png" id="4_iygkf"] +[ext_resource type="Texture2D" uid="uid://cc2umukpibmx1" path="res://Weapons/RocketLauncher/target_list.png" id="6_jlv88"] +[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="8_genbv"] [sub_resource type="AtlasTexture" id="AtlasTexture_f4p4w"] resource_local_to_scene = true @@ -22,7 +22,6 @@ region = Rect2(0, 0, 128, 128) random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("8_genbv") -stream_0/weight = 1.0 [node name="RocketLauncher" node_paths=PackedStringArray("targeting_raycast", "targeting_ui_rect") instance=ExtResource("1_gxaua")] script = ExtResource("2_8x1tf") diff --git a/PCs/Mechanic/ClassCards/RocketLauncher/weapon_stats.tres b/Weapons/RocketLauncher/weapon_stats.tres similarity index 78% rename from PCs/Mechanic/ClassCards/RocketLauncher/weapon_stats.tres rename to Weapons/RocketLauncher/weapon_stats.tres index 19ca0ef..3823082 100644 --- a/PCs/Mechanic/ClassCards/RocketLauncher/weapon_stats.tres +++ b/Weapons/RocketLauncher/weapon_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://d2yo07m2mp2mp"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_5gy7w"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_ow0r7"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_5gy7w"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_ow0r7"] [sub_resource type="Resource" id="Resource_4fjm2"] script = ExtResource("1_5gy7w") @@ -21,10 +21,11 @@ value = 8.0 [sub_resource type="Resource" id="Resource_ymyed"] script = ExtResource("1_5gy7w") key = "Energy" -value = 30.0 +value = 12.0 [resource] script = ExtResource("2_ow0r7") target_type = 0 +energy_type = 1 attributes = Array[ExtResource("1_5gy7w")]([SubResource("Resource_4fjm2"), SubResource("Resource_uwj4j"), SubResource("Resource_6qv5v"), SubResource("Resource_ymyed")]) text = "Every /Fire Delay\\s, hold to target up to /Target Limit\\ enemies and release to fire homing rockets that deal /Damage\\ damage" diff --git a/PCs/Mechanic/ClassCards/Sniper/g_sniper.png b/Weapons/Sniper/g_sniper.png similarity index 100% rename from PCs/Mechanic/ClassCards/Sniper/g_sniper.png rename to Weapons/Sniper/g_sniper.png diff --git a/PCs/Mechanic/ClassCards/Sniper/g_sniper.png.import b/Weapons/Sniper/g_sniper.png.import similarity index 70% rename from PCs/Mechanic/ClassCards/Sniper/g_sniper.png.import rename to Weapons/Sniper/g_sniper.png.import index 4d8e3b1..089f293 100644 --- a/PCs/Mechanic/ClassCards/Sniper/g_sniper.png.import +++ b/Weapons/Sniper/g_sniper.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://cv2eycs1j0ho7" -path="res://.godot/imported/g_sniper.png-68cb4f91443d86f21cbca8366d942a9f.ctex" +path="res://.godot/imported/g_sniper.png-2b3a8ea861323cdaab1d9d72be3197bc.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/Sniper/g_sniper.png" -dest_files=["res://.godot/imported/g_sniper.png-68cb4f91443d86f21cbca8366d942a9f.ctex"] +source_file="res://Weapons/Sniper/g_sniper.png" +dest_files=["res://.godot/imported/g_sniper.png-2b3a8ea861323cdaab1d9d72be3197bc.ctex"] [params] diff --git a/PCs/Mechanic/ClassCards/Sniper/scopetest.png b/Weapons/Sniper/scopetest.png similarity index 100% rename from PCs/Mechanic/ClassCards/Sniper/scopetest.png rename to Weapons/Sniper/scopetest.png diff --git a/PCs/Mechanic/ClassCards/Sniper/scopetest.png.import b/Weapons/Sniper/scopetest.png.import similarity index 70% rename from PCs/Mechanic/ClassCards/Sniper/scopetest.png.import rename to Weapons/Sniper/scopetest.png.import index 6acf6f8..99e7211 100644 --- a/PCs/Mechanic/ClassCards/Sniper/scopetest.png.import +++ b/Weapons/Sniper/scopetest.png.import @@ -3,15 +3,15 @@ importer="texture" type="CompressedTexture2D" uid="uid://bepgxu7wtcl1i" -path="res://.godot/imported/scopetest.png-708ac19c494f9ab0f7c5e41c6a47585a.ctex" +path="res://.godot/imported/scopetest.png-59758f0880f30a35ecf65fe229e87dae.ctex" metadata={ "vram_texture": false } [deps] -source_file="res://PCs/Mechanic/ClassCards/Sniper/scopetest.png" -dest_files=["res://.godot/imported/scopetest.png-708ac19c494f9ab0f7c5e41c6a47585a.ctex"] +source_file="res://Weapons/Sniper/scopetest.png" +dest_files=["res://.godot/imported/scopetest.png-59758f0880f30a35ecf65fe229e87dae.ctex"] [params] diff --git a/PCs/Mechanic/ClassCards/Sniper/weapon_sniper.gd b/Weapons/Sniper/weapon_sniper.gd similarity index 100% rename from PCs/Mechanic/ClassCards/Sniper/weapon_sniper.gd rename to Weapons/Sniper/weapon_sniper.gd diff --git a/Weapons/Sniper/weapon_sniper.gd.uid b/Weapons/Sniper/weapon_sniper.gd.uid new file mode 100644 index 0000000..daf1a14 --- /dev/null +++ b/Weapons/Sniper/weapon_sniper.gd.uid @@ -0,0 +1 @@ +uid://q3tg4ygw1ro7 diff --git a/PCs/Mechanic/ClassCards/Sniper/weapon_sniper.tscn b/Weapons/Sniper/weapon_sniper.tscn similarity index 75% rename from PCs/Mechanic/ClassCards/Sniper/weapon_sniper.tscn rename to Weapons/Sniper/weapon_sniper.tscn index 3cebc4c..a55e999 100644 --- a/PCs/Mechanic/ClassCards/Sniper/weapon_sniper.tscn +++ b/Weapons/Sniper/weapon_sniper.tscn @@ -1,11 +1,11 @@ [gd_scene load_steps=9 format=3 uid="uid://bd65e03fscyxr"] [ext_resource type="PackedScene" uid="uid://difwo7wlyqr3h" path="res://Scenes/Weapons/hitscan_weapon.tscn" id="1_6ph0d"] -[ext_resource type="Script" path="res://PCs/Mechanic/ClassCards/Sniper/weapon_sniper.gd" id="2_r0w4v"] -[ext_resource type="Texture2D" uid="uid://bepgxu7wtcl1i" path="res://PCs/Mechanic/ClassCards/Sniper/scopetest.png" id="3_fhx8q"] -[ext_resource type="Resource" uid="uid://3y7n1vdvf822" path="res://PCs/Mechanic/ClassCards/Sniper/weapon_stats.tres" id="3_mmfq3"] -[ext_resource type="Texture2D" uid="uid://cv2eycs1j0ho7" path="res://PCs/Mechanic/ClassCards/Sniper/g_sniper.png" id="4_ub37g"] -[ext_resource type="AudioStream" uid="uid://bixe14jkki8be" path="res://PCs/Mechanic/ClassCards/Sniper/shot1.wav" id="6_pd8iu"] +[ext_resource type="Script" uid="uid://q3tg4ygw1ro7" path="res://Weapons/Sniper/weapon_sniper.gd" id="2_r0w4v"] +[ext_resource type="Texture2D" uid="uid://bepgxu7wtcl1i" path="res://Weapons/Sniper/scopetest.png" id="3_fhx8q"] +[ext_resource type="Resource" uid="uid://3y7n1vdvf822" path="res://Weapons/Sniper/weapon_stats.tres" id="3_mmfq3"] +[ext_resource type="Texture2D" uid="uid://cv2eycs1j0ho7" path="res://Weapons/Sniper/g_sniper.png" id="4_ub37g"] +[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="6_pd8iu"] [sub_resource type="AtlasTexture" id="AtlasTexture_cussn"] resource_local_to_scene = true @@ -16,7 +16,6 @@ region = Rect2(0, 0, 64, 64) random_pitch = 1.1 streams_count = 1 stream_0/stream = ExtResource("6_pd8iu") -stream_0/weight = 1.0 [node name="HitscanWeapon" node_paths=PackedStringArray("scope_mask") instance=ExtResource("1_6ph0d")] script = ExtResource("2_r0w4v") diff --git a/PCs/Mechanic/ClassCards/Sniper/weapon_stats.tres b/Weapons/Sniper/weapon_stats.tres similarity index 78% rename from PCs/Mechanic/ClassCards/Sniper/weapon_stats.tres rename to Weapons/Sniper/weapon_stats.tres index ac7e3a2..d430cf0 100644 --- a/PCs/Mechanic/ClassCards/Sniper/weapon_stats.tres +++ b/Weapons/Sniper/weapon_stats.tres @@ -1,7 +1,7 @@ [gd_resource type="Resource" script_class="CardText" load_steps=7 format=3 uid="uid://3y7n1vdvf822"] -[ext_resource type="Script" path="res://Scripts/Resources/stat_attribute.gd" id="1_aub52"] -[ext_resource type="Script" path="res://Scripts/Resources/card_text.gd" id="2_qyvv8"] +[ext_resource type="Script" uid="uid://yjb0uv6og430" path="res://Scripts/Resources/stat_attribute.gd" id="1_aub52"] +[ext_resource type="Script" uid="uid://dg7gxxqfqxcmc" path="res://Scripts/Resources/card_text.gd" id="2_qyvv8"] [sub_resource type="Resource" id="Resource_58kde"] script = ExtResource("1_aub52") @@ -26,5 +26,6 @@ value = 10.0 [resource] script = ExtResource("2_qyvv8") target_type = 0 +energy_type = 1 attributes = Array[ExtResource("1_aub52")]([SubResource("Resource_58kde"), SubResource("Resource_jl4jv"), SubResource("Resource_28kyj"), SubResource("Resource_7pvmq")]) text = "Fires a shot every /Fire Delay\\ seconds dealing /Damage\\ damage at a range of /Range\\m" diff --git a/Worlds/GreenPlanet/Enemies/air_enemy.tscn b/Worlds/GreenPlanet/Enemies/air_enemy.tscn index ced329e..7a7183f 100644 --- a/Worlds/GreenPlanet/Enemies/air_enemy.tscn +++ b/Worlds/GreenPlanet/Enemies/air_enemy.tscn @@ -1,17 +1,17 @@ [gd_scene load_steps=13 format=3 uid="uid://bjo2q6vca5qlv"] -[ext_resource type="Script" path="res://Worlds/GreenPlanet/Enemies/enemy_controller.gd" id="1_m83kr"] +[ext_resource type="Script" uid="uid://ejqql2660u6h" path="res://Worlds/GreenPlanet/Enemies/enemy_controller.gd" id="1_m83kr"] [ext_resource type="PackedScene" uid="uid://canrxnpxcugc2" path="res://Scenes/corpse.tscn" id="2_aed6c"] -[ext_resource type="Script" path="res://Scripts/health.gd" id="3_wiose"] +[ext_resource type="Script" uid="uid://bamhci3kawuyt" path="res://Scripts/health.gd" id="3_wiose"] [ext_resource type="PackedScene" uid="uid://cqtew0t8sttpm" path="res://Scenes/damage_particle.tscn" id="4_mhq3m"] -[ext_resource type="Script" path="res://Scripts/hitbox.gd" id="5_433ie"] [ext_resource type="Texture2D" uid="uid://chhmkmlfrobhu" path="res://Assets/Textures/bubble.png" id="6_ke2c8"] [ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://Scenes/health_bar.tscn" id="9_4xla1"] -[ext_resource type="Script" path="res://Scripts/status_effector.gd" id="9_7hati"] +[ext_resource type="Script" uid="uid://cojjgevmbhwal" path="res://Scripts/status_effector.gd" id="9_7hati"] [ext_resource type="Texture2D" uid="uid://b1fn60m6xfcsq" path="res://Assets/Textures/minimap_enemy.png" id="9_7yfyh"] -[ext_resource type="Script" path="res://Scripts/EnemyAI/beelining_controller.gd" id="9_cx8mv"] +[ext_resource type="Script" uid="uid://d147vuqksqhis" path="res://Scripts/EnemyAI/beelining_controller.gd" id="9_cx8mv"] +[ext_resource type="Script" uid="uid://cummt2be3r1gq" path="res://Scripts/hitbox.gd" id="10_4ayno"] -[sub_resource type="SphereShape3D" id="SphereShape3D_21dgw"] +[sub_resource type="SphereShape3D" id="SphereShape3D_yxqm6"] [sub_resource type="ViewportTexture" id="ViewportTexture_ss5ir"] viewport_path = NodePath("SubViewport") @@ -32,9 +32,9 @@ script = ExtResource("3_wiose") damage_particle_scene = ExtResource("4_mhq3m") [node name="Hitbox" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.00571543, 0) -shape = SubResource("SphereShape3D_21dgw") -script = ExtResource("5_433ie") +shape = SubResource("SphereShape3D_yxqm6") +script = ExtResource("10_4ayno") +metadata/_custom_type_script = "uid://cummt2be3r1gq" [node name="DirectionSprite" type="Sprite3D" parent="."] transform = Transform3D(1.56, 0, 0, 0, 1.56, 0, 0, 0, 1.56, 0, 0.0251125, 0) diff --git a/Worlds/GreenPlanet/Enemies/enemy_controller.gd b/Worlds/GreenPlanet/Enemies/enemy_controller.gd index 7adbd25..f5c5d01 100644 --- a/Worlds/GreenPlanet/Enemies/enemy_controller.gd +++ b/Worlds/GreenPlanet/Enemies/enemy_controller.gd @@ -24,8 +24,10 @@ func _ready() -> void: movement_speed = stats.movement_speed -func damage(amount: float) -> void: - $Hitbox.damage(amount) +func apply_effect(effect: Effect) -> void: + health.take_damage(effect.damage) + for status: StatusEffect in effect.status_effects: + status_manager.add_effect(status) func goal_entered() -> void: diff --git a/Worlds/GreenPlanet/Enemies/enemy_controller.gd.uid b/Worlds/GreenPlanet/Enemies/enemy_controller.gd.uid new file mode 100644 index 0000000..7aeaf45 --- /dev/null +++ b/Worlds/GreenPlanet/Enemies/enemy_controller.gd.uid @@ -0,0 +1 @@ +uid://ejqql2660u6h diff --git a/Worlds/GreenPlanet/Enemies/land_enemy.tscn b/Worlds/GreenPlanet/Enemies/land_enemy.tscn index 6a85a6b..a8af815 100644 --- a/Worlds/GreenPlanet/Enemies/land_enemy.tscn +++ b/Worlds/GreenPlanet/Enemies/land_enemy.tscn @@ -1,25 +1,25 @@ [gd_scene load_steps=16 format=3 uid="uid://b0nady5xm88bo"] -[ext_resource type="Script" path="res://Worlds/GreenPlanet/Enemies/enemy_controller.gd" id="1_fwsjt"] -[ext_resource type="Script" path="res://Scripts/hitbox.gd" id="2_j8yin"] +[ext_resource type="Script" uid="uid://ejqql2660u6h" path="res://Worlds/GreenPlanet/Enemies/enemy_controller.gd" id="1_fwsjt"] [ext_resource type="PackedScene" uid="uid://ri8r03wqy80t" path="res://Scenes/8_direction_sprite.tscn" id="2_o7jmg"] -[ext_resource type="Script" path="res://Scripts/health.gd" id="2_swu53"] +[ext_resource type="Script" uid="uid://bamhci3kawuyt" path="res://Scripts/health.gd" id="2_swu53"] [ext_resource type="PackedScene" uid="uid://canrxnpxcugc2" path="res://Scenes/corpse.tscn" id="2_y7h25"] [ext_resource type="Texture2D" uid="uid://dj13g1w14mekw" path="res://Assets/Textures/eye_dog.png" id="3_naknq"] [ext_resource type="PackedScene" uid="uid://cqtew0t8sttpm" path="res://Scenes/damage_particle.tscn" id="4_tn1tu"] +[ext_resource type="Script" uid="uid://cummt2be3r1gq" path="res://Scripts/hitbox.gd" id="7_5eo4w"] [ext_resource type="Texture2D" uid="uid://b1fn60m6xfcsq" path="res://Assets/Textures/minimap_enemy.png" id="9_f8btv"] -[ext_resource type="Script" path="res://Scripts/EnemyAI/pathing_controller.gd" id="10_gljle"] +[ext_resource type="Script" uid="uid://b62xnsbki8axa" path="res://Scripts/EnemyAI/pathing_controller.gd" id="10_gljle"] [ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://Scenes/health_bar.tscn" id="10_or8n6"] -[ext_resource type="Script" path="res://Scripts/status_effector.gd" id="10_txouh"] -[ext_resource type="Script" path="res://Scripts/sprite_bobber.gd" id="12_2nmk0"] - -[sub_resource type="SphereShape3D" id="SphereShape3D_21dgw"] +[ext_resource type="Script" uid="uid://cojjgevmbhwal" path="res://Scripts/status_effector.gd" id="10_txouh"] +[ext_resource type="Script" uid="uid://cp77etg1m1hc2" path="res://Scripts/sprite_bobber.gd" id="12_2nmk0"] [sub_resource type="AtlasTexture" id="AtlasTexture_o3ikr"] resource_local_to_scene = true atlas = ExtResource("3_naknq") region = Rect2(0, 0, 32, 32) +[sub_resource type="SphereShape3D" id="SphereShape3D_132sr"] + [sub_resource type="ViewportTexture" id="ViewportTexture_4tj6k"] viewport_path = NodePath("SubViewport") @@ -37,16 +37,17 @@ corpse_scene = ExtResource("2_y7h25") script = ExtResource("2_swu53") damage_particle_scene = ExtResource("4_tn1tu") -[node name="Hitbox" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.527022, 0) -shape = SubResource("SphereShape3D_21dgw") -script = ExtResource("2_j8yin") - [node name="DirectionSprite" parent="." instance=ExtResource("2_o7jmg")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.585, 0) pixel_size = 0.04 texture = SubResource("AtlasTexture_o3ikr") +[node name="Hitbox" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.441355, 0) +shape = SubResource("SphereShape3D_132sr") +script = ExtResource("7_5eo4w") +metadata/_custom_type_script = "uid://cummt2be3r1gq" + [node name="HealthBar" type="Sprite3D" parent="."] transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, 1.20821, 0) sorting_offset = 1.0 diff --git a/Worlds/GreenPlanet/Enemies/leaping_enemy.tscn b/Worlds/GreenPlanet/Enemies/leaping_enemy.tscn new file mode 100644 index 0000000..ef6a143 --- /dev/null +++ b/Worlds/GreenPlanet/Enemies/leaping_enemy.tscn @@ -0,0 +1,206 @@ +[gd_scene load_steps=20 format=3 uid="uid://cmneu5o0m02l8"] + +[ext_resource type="Script" uid="uid://ejqql2660u6h" path="res://Worlds/GreenPlanet/Enemies/enemy_controller.gd" id="1_joiuq"] +[ext_resource type="PackedScene" uid="uid://canrxnpxcugc2" path="res://Scenes/corpse.tscn" id="2_ssgps"] +[ext_resource type="Script" uid="uid://bamhci3kawuyt" path="res://Scripts/health.gd" id="3_dhcpw"] +[ext_resource type="PackedScene" uid="uid://cqtew0t8sttpm" path="res://Scenes/damage_particle.tscn" id="4_yref6"] +[ext_resource type="PackedScene" uid="uid://ri8r03wqy80t" path="res://Scenes/8_direction_sprite.tscn" id="5_5u3uw"] +[ext_resource type="Texture2D" uid="uid://dj13g1w14mekw" path="res://Assets/Textures/eye_dog.png" id="6_h3ov4"] +[ext_resource type="Script" uid="uid://cummt2be3r1gq" path="res://Scripts/hitbox.gd" id="7_72t32"] +[ext_resource type="Texture2D" uid="uid://b1fn60m6xfcsq" path="res://Assets/Textures/minimap_enemy.png" id="8_egpbw"] +[ext_resource type="Script" uid="uid://cojjgevmbhwal" path="res://Scripts/status_effector.gd" id="9_47ywr"] +[ext_resource type="PackedScene" uid="uid://hjq3nrnumklp" path="res://Scenes/health_bar.tscn" id="10_lce6w"] +[ext_resource type="Script" uid="uid://cp77etg1m1hc2" path="res://Scripts/sprite_bobber.gd" id="12_g2knp"] +[ext_resource type="Script" uid="uid://dqluvn05min37" path="res://Scripts/EnemyAI/leaping_controller.gd" id="12_joiuq"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_o3ikr"] +resource_local_to_scene = true +atlas = ExtResource("6_h3ov4") +region = Rect2(0, 0, 32, 32) + +[sub_resource type="SphereShape3D" id="SphereShape3D_132sr"] + +[sub_resource type="ViewportTexture" id="ViewportTexture_4tj6k"] +viewport_path = NodePath("SubViewport") + +[sub_resource type="ViewportTexture" id="ViewportTexture_joiuq"] +viewport_path = NodePath("SubViewport2") + +[sub_resource type="ViewportTexture" id="ViewportTexture_ssgps"] +viewport_path = NodePath("SubViewport3") + +[sub_resource type="ViewportTexture" id="ViewportTexture_dhcpw"] +viewport_path = NodePath("SubViewport4") + +[sub_resource type="ViewportTexture" id="ViewportTexture_yref6"] +viewport_path = NodePath("SubViewport5") + +[node name="LeapingEnemy" type="CharacterBody3D" node_paths=PackedStringArray("status_manager", "movement_controller", "health", "sprite") groups=["Enemies"]] +collision_layer = 4 +collision_mask = 3 +script = ExtResource("1_joiuq") +status_manager = NodePath("StatusEffector") +movement_controller = NodePath("LeapingController") +health = NodePath("Health") +sprite = NodePath("DirectionSprite") +corpse_scene = ExtResource("2_ssgps") + +[node name="Health" type="Node" parent="."] +script = ExtResource("3_dhcpw") +damage_particle_scene = ExtResource("4_yref6") + +[node name="DirectionSprite" parent="." instance=ExtResource("5_5u3uw")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.585, 0) +pixel_size = 0.04 +texture = SubResource("AtlasTexture_o3ikr") + +[node name="Hitbox" type="CollisionShape3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.441355, 0) +shape = SubResource("SphereShape3D_132sr") +script = ExtResource("7_72t32") +metadata/_custom_type_script = "uid://cummt2be3r1gq" + +[node name="HealthBar" type="Sprite3D" parent="."] +transform = Transform3D(0.2, 0, 0, 0, 0.2, 0, 0, 0, 0.2, 0, 1.20821, 0) +sorting_offset = 1.0 +pixel_size = 0.02 +billboard = 1 +texture_filter = 0 +texture = SubResource("ViewportTexture_4tj6k") + +[node name="MinimapIcon" type="Sprite3D" parent="."] +transform = Transform3D(2, 0, 0, 0, -8.74228e-08, 2, 0, -2, -8.74228e-08, 0, 1.40824, 0) +layers = 4 +texture_filter = 0 +texture = ExtResource("8_egpbw") + +[node name="StatusEffector" type="Node3D" parent="." node_paths=PackedStringArray("hbox", "enemy")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.18114, 0) +script = ExtResource("9_47ywr") +hbox = NodePath("../SubViewport/HBoxContainer") +enemy = NodePath("..") + +[node name="SubViewport" type="SubViewport" parent="."] +transparent_bg = true +size = Vector2i(200, 55) +render_target_update_mode = 4 + +[node name="HBoxContainer" type="HBoxContainer" parent="SubViewport"] +anchors_preset = 10 +anchor_right = 1.0 +offset_bottom = 32.0 +grow_horizontal = 2 +alignment = 1 + +[node name="HealthBar" parent="SubViewport" instance=ExtResource("10_lce6w")] +visible = false +offset_top = 36.0 +offset_bottom = 236.0 + +[node name="SpriteBobber" type="Node" parent="." node_paths=PackedStringArray("character", "sprite")] +script = ExtResource("12_g2knp") +character = NodePath("..") +sprite = NodePath("../DirectionSprite") + +[node name="LeapingController" type="Node" parent="." node_paths=PackedStringArray("eastl", "westl", "northl", "southl", "easts", "wests", "norths", "souths", "box", "character")] +script = ExtResource("12_joiuq") +eastl = NodePath("../SubViewport2/East") +westl = NodePath("../SubViewport3/West") +northl = NodePath("../SubViewport5/North") +southl = NodePath("../SubViewport4/South") +easts = NodePath("../east") +wests = NodePath("../west") +norths = NodePath("../north") +souths = NodePath("../south") +box = NodePath("../CSGBox3D") +character = NodePath("..") +metadata/_custom_type_script = "uid://dqluvn05min37" + +[node name="SubViewport2" type="SubViewport" parent="."] +transparent_bg = true +size = Vector2i(277, 52) + +[node name="East" type="Label" parent="SubViewport2"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "east" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="SubViewport3" type="SubViewport" parent="."] +transparent_bg = true +size = Vector2i(277, 52) + +[node name="West" type="Label" parent="SubViewport3"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "west" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="SubViewport4" type="SubViewport" parent="."] +transparent_bg = true +size = Vector2i(277, 52) + +[node name="South" type="Label" parent="SubViewport4"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "south" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="SubViewport5" type="SubViewport" parent="."] +transparent_bg = true +size = Vector2i(277, 52) + +[node name="North" type="Label" parent="SubViewport5"] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +text = "north" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="east" type="Sprite3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.955188, 0.919993, 0) +visible = false +billboard = 1 +texture = SubResource("ViewportTexture_joiuq") + +[node name="west" type="Sprite3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.366, 0.919993, 0) +visible = false +billboard = 1 +texture = SubResource("ViewportTexture_ssgps") + +[node name="south" type="Sprite3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.919993, 1.05626) +visible = false +billboard = 1 +texture = SubResource("ViewportTexture_dhcpw") + +[node name="north" type="Sprite3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.919993, -1.24258) +visible = false +billboard = 1 +texture = SubResource("ViewportTexture_yref6") + +[node name="CSGBox3D" type="CSGBox3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.141846, 0) +visible = false +size = Vector3(0.5, 0.783691, 0.5) + +[connection signal="health_changed" from="Health" to="SubViewport/HealthBar" method="on_health_changed"] +[connection signal="health_depleted" from="Health" to="." method="die"] +[connection signal="took_damage" from="Hitbox" to="Health" method="take_damage"] diff --git a/Worlds/GreenPlanet/Levels/first_level.tscn b/Worlds/GreenPlanet/Levels/first_level.tscn index bd2c949..052a291 100644 --- a/Worlds/GreenPlanet/Levels/first_level.tscn +++ b/Worlds/GreenPlanet/Levels/first_level.tscn @@ -1,33 +1,65 @@ -[gd_scene load_steps=49 format=3 uid="uid://y1qa1g3ic8sp"] +[gd_scene load_steps=54 format=3 uid="uid://y1qa1g3ic8sp"] -[ext_resource type="Script" path="res://Scripts/level.gd" id="1_ws6nn"] +[ext_resource type="Script" uid="uid://cvejbo3srx8py" path="res://Scripts/level.gd" id="1_ws6nn"] [ext_resource type="PackedScene" uid="uid://d2yv447trxkwt" path="res://Scenes/enemy_spawner.tscn" id="3_5imwp"] -[ext_resource type="Resource" uid="uid://8eba45hql7bo" path="res://Worlds/GreenPlanet/Enemies/dog.tres" id="3_l3ehn"] -[ext_resource type="Resource" uid="uid://cvehqh4tt28g7" path="res://Worlds/GreenPlanet/Enemies/dog_fast.tres" id="4_0gtw5"] -[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Worlds/GreenPlanet/Enemies/dog_heavy.tres" id="5_hppyg"] -[ext_resource type="Resource" uid="uid://boik1gnpl4v0a" path="res://Worlds/GreenPlanet/Enemies/dog_boss.tres" id="6_oty0h"] -[ext_resource type="Resource" uid="uid://dsgkwh3opyqtx" path="res://Worlds/GreenPlanet/Enemies/airenemy.tres" id="7_07st7"] -[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Worlds/GreenPlanet/Enemies/airenemy2.tres" id="8_sf1ao"] +[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="3_6od8s"] +[ext_resource type="Resource" uid="uid://cvehqh4tt28g7" path="res://Resources/Enemies/dog_fast.tres" id="4_0gtw5"] +[ext_resource type="Texture2D" uid="uid://cdnhe2mi5c5ln" path="res://Assets/Textures/dead_eye_dog.png" id="4_ttr7n"] +[ext_resource type="Resource" uid="uid://dxi17xvdlhkvc" path="res://Resources/Enemies/dog_heavy.tres" id="5_hppyg"] +[ext_resource type="Texture2D" uid="uid://g00wwrlxxdc5" path="res://Assets/Textures/icon_eye_dog.png" id="5_r4es0"] +[ext_resource type="Texture2D" uid="uid://dj13g1w14mekw" path="res://Assets/Textures/eye_dog.png" id="6_4gdda"] +[ext_resource type="Resource" uid="uid://boik1gnpl4v0a" path="res://Resources/Enemies/dog_boss.tres" id="6_oty0h"] +[ext_resource type="Resource" uid="uid://dsgkwh3opyqtx" path="res://Resources/Enemies/airenemy.tres" id="7_07st7"] +[ext_resource type="Resource" uid="uid://bffhb5krs5elm" path="res://Resources/Enemies/airenemy2.tres" id="8_sf1ao"] [ext_resource type="PackedScene" uid="uid://cjvgqek2phoq1" path="res://obstacle1.tscn" id="9_luxf3"] [ext_resource type="PackedScene" uid="uid://1b2ikdanl66b" path="res://Scenes/CardPrinter/card_printer.tscn" id="9_r25gu"] -[ext_resource type="Script" path="res://Scripts/enemy_goal.gd" id="9_s3rd7"] -[ext_resource type="Script" path="res://Scripts/cinema_cam.gd" id="9_xuyhn"] +[ext_resource type="Script" uid="uid://cxwtuxytavfu5" path="res://Scripts/enemy_goal.gd" id="9_s3rd7"] +[ext_resource type="Script" uid="uid://yk54owkf7pgj" path="res://Scripts/cinema_cam.gd" id="9_xuyhn"] [ext_resource type="PackedScene" uid="uid://iohlxrso4bl8" path="res://Worlds/GreenPlanet/Decorations/tree.tscn" id="10_7v1co"] [ext_resource type="PackedScene" uid="uid://dk0k7ndwhaenh" path="res://obstacle2.tscn" id="10_dsyfh"] -[ext_resource type="Script" path="res://Scripts/a_star_graph_3d.gd" id="11_07ukk"] -[ext_resource type="Script" path="res://Scripts/visualized_path.gd" id="11_d7ofl"] +[ext_resource type="Script" uid="uid://u404brdoaku" path="res://Scripts/a_star_graph_3d.gd" id="11_07ukk"] [ext_resource type="PackedScene" uid="uid://ds4sa5xyfgyo0" path="res://obstacle3.tscn" id="11_dfexu"] -[ext_resource type="AudioStream" uid="uid://chrf1dcq2ujw0" path="res://PCs/Mechanic/ClassCards/Assault/shot1.wav" id="11_l537x"] +[ext_resource type="AudioStream" uid="uid://dknygn5eyuhxt" path="res://Audio/shot1.wav" id="11_l537x"] [ext_resource type="PackedScene" uid="uid://sud13mytdwhv" path="res://obstacle4.tscn" id="12_mctwo"] [ext_resource type="MeshLibrary" uid="uid://jfr8j8kycfa5" path="res://Worlds/GreenPlanet/tilemap.tres" id="12_ywwug"] [ext_resource type="Texture2D" uid="uid://4gff4l03ibpm" path="res://Assets/Textures/scaffold.png" id="15_61y1c"] [ext_resource type="PackedScene" uid="uid://d3h3lmlf3hljl" path="res://Worlds/GreenPlanet/Decorations/bush.tscn" id="16_lhsvw"] [ext_resource type="Texture2D" uid="uid://cnvndwp3q7rke" path="res://Assets/Textures/dirt.png" id="17_oq0rj"] [ext_resource type="PackedScene" uid="uid://7g3jev3v6d3l" path="res://Scenes/ShopStand/shop_stand.tscn" id="19_h6brl"] +[ext_resource type="PackedScene" uid="uid://cmneu5o0m02l8" path="res://Worlds/GreenPlanet/Enemies/leaping_enemy.tscn" id="20_ttr7n"] [ext_resource type="Texture2D" uid="uid://r202vo47jw1q" path="res://Assets/Textures/enemyhealth.png" id="21_flsqn"] -[ext_resource type="Script" path="res://Scripts/killbox.gd" id="26_tuncf"] +[ext_resource type="Script" uid="uid://cy6oj2hr8q8br" path="res://Scripts/killbox.gd" id="26_tuncf"] [ext_resource type="PackedScene" uid="uid://c2avjln5vmr0y" path="res://Scenes/Shredder/shredder.tscn" id="27_gppb4"] +[sub_resource type="AtlasTexture" id="AtlasTexture_dj4cy"] +resource_local_to_scene = true +atlas = ExtResource("6_4gdda") +region = Rect2(0, 0, 32, 32) + +[sub_resource type="Resource" id="Resource_ttr7n"] +resource_local_to_scene = true +script = ExtResource("3_6od8s") +title = "dog" +target_type = 1 +icon = ExtResource("5_r4es0") +death_sprite = ExtResource("4_ttr7n") +sprite = SubResource("AtlasTexture_dj4cy") +spawn_power = 10 +health = 180 +penalty = 10 +movement_speed = 1.2 +spawn_cooldown = 1.2 +common_group = 4 +common_cost = 1 +uncommon_group = 6 +uncommon_cost = 2 +rare_group = 8 +rare_cost = 3 +epic_group = 10 +epic_cost = 4 +legendary_group = 12 +legendary_cost = 5 + [sub_resource type="Curve3D" id="Curve3D_3rdl2"] _data = { "points": PackedVector3Array(0, 0, 0, 0, 0, 0, 12.3765, 1.00006, -13.0874, 0, 0, 0, 0, 0, 0, -13.1528, 5.17887, -14.4739), @@ -66,8 +98,6 @@ adjustment_contrast = 2.18 [sub_resource type="BoxShape3D" id="BoxShape3D_awjk1"] -[sub_resource type="Curve3D" id="Curve3D_suxqu"] - [sub_resource type="BoxShape3D" id="BoxShape3D_kkwvm"] size = Vector3(58.5693, 9.50003, 1) @@ -85,6 +115,9 @@ texture_filter = 0 material = SubResource("StandardMaterial3D_iqnu2") size = Vector2(8, 29) +[sub_resource type="BoxShape3D" id="BoxShape3D_gmgg4"] +size = Vector3(8, 29, 0.3) + [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4y4yr"] transparency = 1 cull_mode = 2 @@ -135,9 +168,9 @@ data = { "cells": PackedInt32Array(65490, 65504, 0, 65490, 65505, 0, 65490, 65506, 0, 65490, 65507, 0, 65490, 65508, 0, 65490, 65509, 0, 65490, 65510, 0, 65490, 65511, 0, 65490, 65512, 0, 65490, 65513, 0, 65490, 65514, 0, 65490, 65515, 0, 65490, 65516, 0, 65490, 65517, 0, 65490, 65518, 0, 65490, 65519, 0, 65490, 65520, 0, 65490, 65521, 0, 65490, 65522, 0, 65490, 65523, 0, 65490, 65524, 0, 65490, 65525, 0, 65490, 65526, 0, 65490, 65527, 0, 65490, 65528, 0, 65490, 65529, 0, 65490, 65530, 0, 65490, 65531, 0, 65490, 65532, 0, 65490, 65533, 0, 65490, 65534, 0, 65490, 65535, 0, 65490, 0, 0, 65490, 1, 0, 65490, 2, 0, 65490, 3, 0, 65490, 4, 0, 65490, 5, 0, 65490, 6, 0, 65490, 7, 0, 65490, 8, 0, 65490, 9, 0, 65490, 10, 0, 65490, 11, 0, 65490, 12, 0, 65490, 13, 0, 65490, 14, 0, 65490, 15, 0, 65490, 16, 0, 65490, 17, 0, 65490, 18, 0, 65490, 19, 0, 65490, 20, 0, 65490, 21, 0, 65490, 22, 0, 65490, 23, 0, 65490, 24, 0, 65490, 25, 0, 65490, 26, 0, 65490, 27, 0, 65490, 28, 0, 65490, 29, 0, 65490, 30, 0, 65490, 31, 0, 65490, 32, 0, 65490, 33, 0, 65490, 34, 0, 65490, 35, 0, 65491, 65504, 0, 65491, 65505, 0, 65491, 65506, 0, 65491, 65507, 0, 65491, 65508, 0, 65491, 65509, 0, 65491, 65510, 0, 65491, 65511, 0, 65491, 65512, 0, 65491, 65513, 0, 65491, 65514, 0, 65491, 65515, 0, 65491, 65516, 0, 65491, 65517, 0, 65491, 65518, 0, 65491, 65519, 0, 65491, 65520, 0, 65491, 65521, 0, 65491, 65522, 0, 65491, 65523, 0, 65491, 65524, 0, 65491, 65525, 0, 65491, 65526, 0, 65491, 65527, 0, 65491, 65528, 0, 65491, 65529, 0, 65491, 65530, 0, 65491, 65531, 0, 65491, 65532, 0, 65491, 65533, 0, 65491, 65534, 0, 65491, 65535, 0, 65491, 0, 0, 65491, 1, 0, 65491, 2, 0, 65491, 3, 0, 65491, 4, 0, 65491, 5, 0, 65491, 6, 0, 65491, 7, 0, 65491, 8, 0, 65491, 9, 0, 65491, 10, 0, 65491, 11, 0, 65491, 12, 0, 65491, 13, 0, 65491, 14, 0, 65491, 15, 0, 65491, 16, 0, 65491, 17, 0, 65491, 18, 0, 65491, 19, 0, 65491, 20, 0, 65491, 21, 0, 65491, 22, 0, 65491, 23, 0, 65491, 24, 0, 65491, 25, 0, 65491, 26, 0, 65491, 27, 0, 65491, 28, 0, 65491, 29, 0, 65491, 30, 0, 65491, 31, 0, 65491, 32, 0, 65491, 33, 0, 65491, 34, 0, 65491, 35, 0, 65492, 65504, 0, 65492, 65505, 0, 65492, 65506, 0, 65492, 65507, 0, 65492, 65508, 0, 65492, 65509, 0, 65492, 65510, 0, 65492, 65511, 0, 65492, 65512, 0, 65492, 65513, 0, 65492, 65514, 0, 65492, 65515, 0, 65492, 65516, 0, 65492, 65517, 0, 65492, 65518, 0, 65492, 65519, 0, 65492, 65520, 0, 65492, 65521, 0, 65492, 65522, 0, 65492, 65523, 0, 65492, 65524, 0, 65492, 65525, 0, 65492, 65526, 0, 65492, 65527, 0, 65492, 65528, 0, 65492, 65529, 0, 65492, 65530, 0, 65492, 65531, 0, 65492, 65532, 0, 65492, 65533, 0, 65492, 65534, 0, 65492, 65535, 0, 65492, 0, 0, 65492, 1, 0, 65492, 2, 0, 65492, 3, 0, 65492, 4, 0, 65492, 5, 0, 65492, 6, 0, 65492, 7, 0, 65492, 8, 0, 65492, 9, 0, 65492, 10, 0, 65492, 11, 0, 65492, 12, 0, 65492, 13, 0, 65492, 14, 0, 65492, 15, 0, 65492, 16, 0, 65492, 17, 0, 65492, 18, 0, 65492, 19, 0, 65492, 20, 0, 65492, 21, 0, 65492, 22, 0, 65492, 23, 0, 65492, 24, 0, 65492, 25, 0, 65492, 26, 0, 65492, 27, 0, 65492, 28, 0, 65492, 29, 0, 65492, 30, 0, 65492, 31, 0, 65492, 32, 0, 65492, 33, 0, 65492, 34, 0, 65492, 35, 0, 65493, 65504, 0, 65493, 65505, 0, 65493, 65506, 0, 65493, 65507, 0, 65493, 65508, 0, 65493, 65509, 0, 65493, 65510, 0, 65493, 65511, 0, 65493, 65512, 0, 65493, 65513, 0, 65493, 65514, 0, 65493, 65515, 0, 65493, 65516, 0, 65493, 65517, 0, 65493, 65518, 0, 65493, 65519, 0, 65493, 65520, 0, 65493, 65521, 0, 65493, 65522, 0, 65493, 65523, 0, 65493, 65524, 0, 65493, 65525, 0, 65493, 65526, 0, 65493, 65527, 0, 65493, 65528, 0, 65493, 65529, 0, 65493, 65530, 0, 65493, 65531, 0, 65493, 65532, 0, 65493, 65533, 0, 65493, 65534, 0, 65493, 65535, 0, 65493, 0, 0, 65493, 1, 0, 65493, 2, 0, 65493, 3, 0, 65493, 4, 0, 65493, 5, 0, 65493, 6, 0, 65493, 7, 0, 65493, 8, 0, 65493, 9, 0, 65493, 10, 0, 65493, 11, 0, 65493, 12, 0, 65493, 13, 0, 65493, 14, 0, 65493, 15, 0, 65493, 16, 0, 65493, 17, 0, 65493, 18, 0, 65493, 19, 0, 65493, 20, 0, 65493, 21, 0, 65493, 22, 0, 65493, 23, 0, 65493, 24, 0, 65493, 25, 0, 65493, 26, 0, 65493, 27, 0, 65493, 28, 0, 65493, 29, 0, 65493, 30, 0, 65493, 31, 0, 65493, 32, 0, 65493, 33, 0, 65493, 34, 0, 65493, 35, 0, 65494, 65504, 0, 65494, 65505, 0, 65494, 65506, 0, 65494, 65507, 0, 65494, 65508, 0, 65494, 65509, 0, 65494, 65510, 0, 65494, 65511, 0, 65494, 65512, 0, 65494, 65513, 0, 65494, 65514, 0, 65494, 65515, 0, 65494, 65516, 0, 65494, 65517, 0, 65494, 65518, 0, 65494, 65519, 0, 65494, 65520, 0, 65494, 65521, 0, 65494, 65522, 0, 65494, 65523, 0, 65494, 65524, 0, 65494, 65525, 0, 65494, 65526, 0, 65494, 65527, 0, 65494, 65528, 0, 65494, 65529, 0, 65494, 65530, 0, 65494, 65531, 0, 65494, 65532, 0, 65494, 65533, 0, 65494, 65534, 0, 65494, 65535, 0, 65494, 0, 0, 65494, 1, 0, 65494, 2, 0, 65494, 3, 0, 65494, 4, 0, 65494, 5, 0, 65494, 6, 0, 65494, 7, 0, 65494, 8, 0, 65494, 9, 0, 65494, 10, 0, 65494, 11, 0, 65494, 12, 0, 65494, 13, 0, 65494, 14, 0, 65494, 15, 0, 65494, 16, 0, 65494, 17, 0, 65494, 18, 0, 65494, 19, 0, 65494, 20, 0, 65494, 21, 0, 65494, 22, 0, 65494, 23, 0, 65494, 24, 0, 65494, 25, 0, 65494, 26, 0, 65494, 27, 0, 65494, 28, 0, 65494, 29, 0, 65494, 30, 0, 65494, 31, 0, 65494, 32, 0, 65494, 33, 0, 65494, 34, 0, 65494, 35, 0, 65495, 65504, 0, 65495, 65505, 0, 65495, 65506, 0, 65495, 65507, 0, 65495, 65508, 0, 65495, 65509, 0, 65495, 65510, 0, 65495, 65511, 0, 65495, 65512, 0, 65495, 65513, 0, 65495, 65514, 0, 65495, 65515, 0, 65495, 65516, 0, 65495, 65517, 0, 65495, 65518, 0, 65495, 65519, 0, 65495, 65520, 0, 65495, 65521, 0, 65495, 65522, 0, 65495, 65523, 0, 65495, 65524, 0, 65495, 65525, 0, 65495, 65526, 0, 65495, 65527, 0, 65495, 65528, 0, 65495, 65529, 0, 65495, 65530, 0, 65495, 65531, 0, 65495, 65532, 0, 65495, 65533, 0, 65495, 65534, 0, 65495, 65535, 0, 65495, 0, 0, 65495, 1, 0, 65495, 2, 0, 65495, 3, 0, 65495, 4, 0, 65495, 5, 0, 65495, 6, 0, 65495, 7, 0, 65495, 8, 0, 65495, 9, 0, 65495, 10, 0, 65495, 11, 0, 65495, 12, 0, 65495, 13, 0, 65495, 14, 0, 65495, 15, 0, 65495, 16, 0, 65495, 17, 0, 65495, 18, 0, 65495, 19, 0, 65495, 20, 0, 65495, 21, 0, 65495, 22, 0, 65495, 23, 0, 65495, 24, 0, 65495, 25, 0, 65495, 26, 0, 65495, 27, 0, 65495, 28, 0, 65495, 29, 0, 65495, 30, 0, 65495, 31, 0, 65495, 32, 0, 65495, 33, 0, 65495, 34, 0, 65495, 35, 0, 65496, 65504, 0, 65496, 65505, 0, 65496, 65506, 0, 65496, 65507, 0, 65496, 65508, 0, 65496, 65509, 0, 65496, 65510, 0, 65496, 65511, 0, 65496, 65512, 0, 65496, 65513, 0, 65496, 65514, 0, 65496, 65515, 0, 65496, 65516, 0, 65496, 65517, 0, 65496, 65518, 0, 65496, 65519, 0, 65496, 65520, 0, 65496, 65521, 0, 65496, 65522, 0, 65496, 65523, 0, 65496, 65524, 0, 65496, 65525, 0, 65496, 65526, 0, 65496, 65527, 0, 65496, 65528, 0, 65496, 65529, 0, 65496, 65530, 0, 65496, 65531, 0, 65496, 65532, 0, 65496, 65533, 0, 65496, 65534, 0, 65496, 65535, 0, 65496, 0, 0, 65496, 1, 0, 65496, 2, 0, 65496, 3, 0, 65496, 4, 0, 65496, 5, 0, 65496, 6, 0, 65496, 7, 0, 65496, 8, 0, 65496, 9, 0, 65496, 10, 0, 65496, 11, 0, 65496, 12, 0, 65496, 13, 0, 65496, 14, 0, 65496, 15, 0, 65496, 16, 0, 65496, 17, 0, 65496, 18, 0, 65496, 19, 0, 65496, 20, 0, 65496, 21, 0, 65496, 22, 0, 65496, 23, 0, 65496, 24, 0, 65496, 25, 0, 65496, 26, 0, 65496, 27, 0, 65496, 28, 0, 65496, 29, 0, 65496, 30, 0, 65496, 31, 0, 65496, 32, 0, 65496, 33, 0, 65496, 34, 0, 65496, 35, 0, 65497, 65504, 0, 65497, 65505, 0, 65497, 65506, 0, 65497, 65507, 0, 65497, 65508, 0, 65497, 65509, 0, 65497, 65510, 0, 65497, 65511, 0, 65497, 65512, 0, 65497, 65513, 0, 65497, 65514, 0, 65497, 65515, 0, 65497, 65516, 0, 65497, 65517, 0, 65497, 65518, 0, 65497, 65519, 0, 65497, 65520, 0, 65497, 65521, 0, 65497, 65522, 0, 65497, 65523, 0, 65497, 65524, 0, 65497, 65525, 0, 65497, 65526, 0, 65497, 65527, 0, 65497, 65528, 0, 65497, 65529, 0, 65497, 65530, 0, 65497, 65531, 0, 65497, 65532, 0, 65497, 65533, 0, 65497, 65534, 0, 65497, 65535, 0, 65497, 0, 0, 65497, 1, 0, 65497, 2, 0, 65497, 3, 0, 65497, 4, 0, 65497, 5, 0, 65497, 6, 0, 65497, 7, 0, 65497, 8, 0, 65497, 9, 0, 65497, 10, 0, 65497, 11, 0, 65497, 12, 0, 65497, 13, 0, 65497, 14, 0, 65497, 15, 0, 65497, 16, 0, 65497, 17, 0, 65497, 18, 0, 65497, 19, 0, 65497, 20, 0, 65497, 21, 0, 65497, 22, 0, 65497, 23, 0, 65497, 24, 0, 65497, 25, 0, 65497, 26, 0, 65497, 27, 0, 65497, 28, 0, 65497, 29, 0, 65497, 30, 0, 65497, 31, 0, 65497, 32, 0, 65497, 33, 0, 65497, 34, 0, 65497, 35, 0, 65498, 65504, 0, 65498, 65505, 0, 65498, 65506, 0, 65498, 65507, 0, 65498, 65508, 0, 65498, 65509, 0, 65498, 65510, 0, 65498, 65511, 0, 65498, 65512, 0, 65498, 65513, 0, 65498, 65514, 0, 65498, 65515, 0, 65498, 65516, 0, 65498, 65517, 0, 65498, 65518, 0, 65498, 65519, 0, 65498, 65520, 0, 65498, 65521, 0, 65498, 65522, 0, 65498, 65523, 0, 65498, 65524, 0, 65498, 65525, 0, 65498, 65526, 0, 65498, 65527, 0, 65498, 65528, 0, 65498, 65529, 0, 65498, 65530, 0, 65498, 65531, 0, 65498, 65532, 0, 65498, 65533, 0, 65498, 65534, 0, 65498, 65535, 0, 65498, 0, 0, 65498, 1, 0, 65498, 2, 0, 65498, 3, 0, 65498, 4, 0, 65498, 5, 0, 65498, 6, 0, 65498, 7, 0, 65498, 8, 0, 65498, 9, 0, 65498, 10, 0, 65498, 11, 0, 65498, 12, 0, 65498, 13, 0, 65498, 14, 0, 65498, 15, 0, 65498, 16, 0, 65498, 17, 0, 65498, 18, 0, 65498, 19, 0, 65498, 20, 0, 65498, 21, 0, 65498, 22, 0, 65498, 23, 0, 65498, 24, 0, 65498, 25, 0, 65498, 26, 0, 65498, 27, 0, 65498, 28, 0, 65498, 29, 0, 65498, 30, 0, 65498, 31, 0, 65498, 32, 0, 65498, 33, 0, 65498, 34, 0, 65498, 35, 0, 65499, 65504, 0, 65499, 65505, 0, 65499, 65506, 0, 65499, 65507, 0, 65499, 65508, 0, 65499, 65509, 0, 65499, 65510, 0, 65499, 65511, 0, 65499, 65512, 0, 65499, 65513, 0, 65499, 65514, 0, 65499, 65515, 0, 65499, 65516, 0, 65499, 65517, 0, 65499, 65518, 0, 65499, 65519, 0, 65499, 65520, 0, 65499, 65521, 0, 65499, 65522, 0, 65499, 65523, 0, 65499, 65524, 0, 65499, 65525, 0, 65499, 65526, 0, 65499, 65527, 0, 65499, 65528, 0, 65499, 65529, 0, 65499, 65530, 0, 65499, 65531, 0, 65499, 65532, 0, 65499, 65533, 0, 65499, 65534, 0, 65499, 65535, 0, 65499, 0, 0, 65499, 1, 0, 65499, 2, 0, 65499, 3, 0, 65499, 4, 0, 65499, 5, 0, 65499, 6, 0, 65499, 7, 0, 65499, 8, 0, 65499, 9, 0, 65499, 10, 0, 65499, 11, 0, 65499, 12, 0, 65499, 13, 0, 65499, 14, 0, 65499, 15, 0, 65499, 16, 0, 65499, 17, 0, 65499, 18, 0, 65499, 19, 0, 65499, 20, 0, 65499, 21, 0, 65499, 22, 0, 65499, 23, 0, 65499, 24, 0, 65499, 25, 0, 65499, 26, 0, 65499, 27, 0, 65499, 28, 0, 65499, 29, 0, 65499, 30, 0, 65499, 31, 0, 65499, 32, 0, 65499, 33, 0, 65499, 34, 0, 65499, 35, 0, 65500, 65504, 0, 65500, 65505, 0, 65500, 65506, 0, 65500, 65507, 0, 65500, 65508, 0, 65500, 65509, 0, 65500, 65510, 0, 65500, 65511, 0, 65500, 65512, 0, 65500, 65513, 0, 65500, 65514, 0, 65500, 65515, 0, 65500, 65516, 0, 65500, 65517, 0, 65500, 65518, 0, 65500, 65519, 0, 65500, 65520, 0, 65500, 65521, 0, 65500, 65522, 0, 65500, 65523, 0, 65500, 65524, 0, 65500, 65525, 0, 65500, 65526, 0, 65500, 65527, 0, 65500, 65528, 0, 65500, 65529, 0, 65500, 65530, 0, 65500, 65531, 0, 65500, 65532, 0, 65500, 65533, 0, 65500, 65534, 0, 65500, 65535, 0, 65500, 0, 0, 65500, 1, 0, 65500, 2, 0, 65500, 3, 0, 65500, 4, 0, 65500, 5, 0, 65500, 6, 0, 65500, 7, 0, 65500, 8, 0, 65500, 9, 0, 65500, 10, 0, 65500, 11, 0, 65500, 12, 0, 65500, 13, 0, 65500, 14, 0, 65500, 15, 0, 65500, 16, 0, 65500, 17, 0, 65500, 18, 0, 65500, 19, 0, 65500, 20, 0, 65500, 21, 0, 65500, 22, 0, 65500, 23, 0, 65500, 24, 0, 65500, 25, 0, 65500, 26, 0, 65500, 27, 0, 65500, 28, 0, 65500, 29, 0, 65500, 30, 0, 65500, 31, 0, 65500, 32, 0, 65500, 33, 0, 65500, 34, 0, 65500, 35, 0, 65501, 65504, 0, 65501, 65505, 0, 65501, 65506, 0, 65501, 65507, 0, 65501, 65508, 0, 65501, 65509, 0, 65501, 65510, 0, 65501, 65511, 0, 65501, 65512, 0, 65501, 65513, 0, 65501, 65514, 0, 65501, 65515, 0, 65501, 65516, 0, 65501, 65517, 0, 65501, 65518, 0, 65501, 65519, 0, 65501, 65520, 0, 65501, 65521, 0, 65501, 65522, 0, 65501, 65523, 0, 65501, 65524, 0, 65501, 65525, 0, 65501, 65526, 0, 65501, 65527, 0, 65501, 65528, 0, 65501, 65529, 0, 65501, 65530, 0, 65501, 65531, 0, 65501, 65532, 0, 65501, 65533, 0, 65501, 65534, 0, 65501, 65535, 0, 65501, 0, 0, 65501, 1, 0, 65501, 2, 0, 65501, 3, 0, 65501, 4, 0, 65501, 5, 0, 65501, 6, 0, 65501, 7, 0, 65501, 8, 0, 65501, 9, 0, 65501, 10, 0, 65501, 11, 0, 65501, 12, 0, 65501, 13, 0, 65501, 14, 0, 65501, 15, 0, 65501, 16, 0, 65501, 17, 0, 65501, 18, 0, 65501, 19, 0, 65501, 20, 0, 65501, 21, 0, 65501, 22, 0, 65501, 23, 0, 65501, 24, 0, 65501, 25, 0, 65501, 26, 0, 65501, 27, 0, 65501, 28, 0, 65501, 29, 0, 65501, 30, 0, 65501, 31, 0, 65501, 32, 0, 65501, 33, 0, 65501, 34, 0, 65501, 35, 0, 65502, 65504, 0, 65502, 65505, 0, 65502, 65506, 0, 65502, 65507, 0, 65502, 65508, 0, 65502, 65509, 0, 65502, 65510, 0, 65502, 65511, 0, 65502, 65512, 0, 65502, 65513, 0, 65502, 65514, 0, 65502, 65515, 0, 65502, 65516, 0, 65502, 65517, 0, 65502, 65518, 0, 65502, 65519, 0, 65502, 65520, 0, 65502, 65521, 0, 65502, 65522, 0, 65502, 65523, 0, 65502, 65524, 0, 65502, 65525, 0, 65502, 65526, 0, 65502, 65527, 0, 65502, 65528, 0, 65502, 65529, 0, 65502, 65530, 0, 65502, 65531, 0, 65502, 65532, 0, 65502, 65533, 0, 65502, 65534, 0, 65502, 65535, 0, 65502, 0, 0, 65502, 1, 0, 65502, 2, 0, 65502, 3, 0, 65502, 4, 0, 65502, 5, 0, 65502, 6, 0, 65502, 7, 0, 65502, 8, 0, 65502, 9, 0, 65502, 10, 0, 65502, 11, 0, 65502, 12, 0, 65502, 13, 0, 65502, 14, 0, 65502, 15, 0, 65502, 16, 0, 65502, 17, 0, 65502, 18, 0, 65502, 19, 0, 65502, 20, 0, 65502, 21, 0, 65502, 22, 0, 65502, 23, 0, 65502, 24, 0, 65502, 25, 0, 65502, 26, 0, 65502, 27, 0, 65502, 28, 0, 65502, 29, 0, 65502, 30, 0, 65502, 31, 0, 65502, 32, 0, 65502, 33, 0, 65502, 34, 0, 65502, 35, 0, 65503, 65504, 0, 65503, 65505, 0, 65503, 65506, 0, 65503, 65507, 0, 65503, 65508, 0, 65503, 65509, 0, 65503, 65510, 0, 65503, 65511, 0, 65503, 65512, 0, 65503, 65513, 0, 65503, 65514, 0, 65503, 65515, 0, 65503, 65516, 0, 65503, 65517, 0, 65503, 65518, 0, 65503, 65519, 0, 65503, 65520, 0, 65503, 65521, 0, 65503, 65522, 0, 65503, 65523, 0, 65503, 65524, 0, 65503, 65525, 0, 65503, 65526, 0, 65503, 65527, 0, 65503, 65528, 0, 65503, 65529, 0, 65503, 65530, 0, 65503, 65531, 0, 65503, 65532, 0, 65503, 65533, 0, 65503, 65534, 0, 65503, 65535, 0, 65503, 0, 0, 65503, 1, 0, 65503, 2, 0, 65503, 3, 0, 65503, 4, 0, 65503, 5, 0, 65503, 6, 0, 65503, 7, 0, 65503, 8, 0, 65503, 9, 0, 65503, 10, 0, 65503, 11, 0, 65503, 12, 0, 65503, 13, 0, 65503, 14, 0, 65503, 15, 0, 65503, 16, 0, 65503, 17, 0, 65503, 18, 0, 65503, 19, 0, 65503, 20, 0, 65503, 21, 0, 65503, 22, 0, 65503, 23, 0, 65503, 24, 0, 65503, 25, 0, 65503, 26, 0, 65503, 27, 0, 65503, 28, 0, 65503, 29, 0, 65503, 30, 0, 65503, 31, 0, 65503, 32, 0, 65503, 33, 0, 65503, 34, 0, 65503, 35, 0, 65504, 65504, 0, 65504, 65505, 0, 65504, 65506, 0, 65504, 65507, 0, 65504, 65508, 0, 65504, 65509, 0, 65504, 65510, 0, 65504, 65511, 0, 65504, 65512, 0, 65504, 65513, 0, 65504, 65514, 0, 65504, 65515, 0, 65504, 65516, 0, 65504, 65517, 0, 65504, 65518, 0, 65504, 65519, 0, 65504, 65520, 0, 65504, 65521, 0, 65504, 65522, 0, 65504, 65523, 0, 65504, 65524, 0, 65504, 65525, 0, 65504, 65526, 0, 65504, 65527, 0, 65504, 65528, 0, 65504, 65529, 0, 65504, 65530, 0, 65504, 65531, 0, 65504, 65532, 0, 65504, 65533, 0, 65504, 65534, 0, 65504, 65535, 0, 65504, 0, 0, 65504, 1, 0, 65504, 2, 0, 65504, 3, 0, 65504, 4, 0, 65504, 5, 0, 65504, 6, 0, 65504, 7, 0, 65504, 8, 0, 65504, 9, 0, 65504, 10, 0, 65504, 11, 0, 65504, 12, 0, 65504, 13, 0, 65504, 14, 0, 65504, 15, 0, 65504, 16, 0, 65504, 17, 0, 65504, 18, 0, 65504, 19, 0, 65504, 20, 0, 65504, 21, 0, 65504, 22, 0, 65504, 23, 0, 65504, 24, 0, 65504, 25, 0, 65504, 26, 0, 65504, 27, 0, 65504, 28, 0, 65504, 29, 0, 65504, 30, 0, 65504, 31, 0, 65504, 32, 0, 65504, 33, 0, 65504, 34, 0, 65504, 35, 0, 65505, 65504, 0, 65505, 65505, 0, 65505, 65506, 0, 65505, 65507, 0, 65505, 65508, 0, 65505, 65509, 0, 65505, 65510, 0, 65505, 65511, 0, 65505, 65512, 0, 65505, 65513, 0, 65505, 65514, 0, 65505, 65515, 0, 65505, 65516, 0, 65505, 65517, 0, 65505, 65518, 0, 65505, 65519, 0, 65505, 65520, 0, 65505, 65521, 0, 65505, 65522, 0, 65505, 65523, 0, 65505, 65524, 0, 65505, 65525, 0, 65505, 65526, 0, 65505, 65527, 0, 65505, 65528, 0, 65505, 65529, 0, 65505, 65530, 0, 65505, 65531, 0, 65505, 65532, 0, 65505, 65533, 0, 65505, 65534, 0, 65505, 65535, 0, 65505, 0, 0, 65505, 1, 0, 65505, 2, 0, 65505, 3, 0, 65505, 4, 0, 65505, 5, 0, 65505, 6, 0, 65505, 7, 0, 65505, 8, 0, 65505, 9, 0, 65505, 10, 0, 65505, 11, 0, 65505, 12, 0, 65505, 13, 0, 65505, 14, 0, 65505, 15, 0, 65505, 16, 0, 65505, 17, 0, 65505, 18, 0, 65505, 19, 0, 65505, 20, 0, 65505, 21, 0, 65505, 22, 0, 65505, 23, 0, 65505, 24, 0, 65505, 25, 0, 65505, 26, 0, 65505, 27, 0, 65505, 28, 0, 65505, 29, 0, 65505, 30, 0, 65505, 31, 0, 65505, 32, 0, 65505, 33, 0, 65505, 34, 0, 65505, 35, 0, 65506, 65504, 0, 65506, 65505, 0, 65506, 65506, 0, 65506, 65507, 0, 65506, 65508, 0, 65506, 65509, 0, 65506, 65510, 0, 65506, 65511, 0, 65506, 65512, 0, 65506, 65513, 0, 65506, 65514, 0, 65506, 65515, 0, 65506, 65516, 0, 65506, 65517, 0, 65506, 65518, 0, 65506, 65519, 0, 65506, 65520, 0, 65506, 65521, 0, 65506, 65522, 0, 65506, 65523, 0, 65506, 65524, 0, 65506, 65525, 0, 65506, 65526, 0, 65506, 65527, 0, 65506, 65528, 0, 65506, 65529, 0, 65506, 65530, 0, 65506, 65531, 0, 65506, 65532, 0, 65506, 65533, 0, 65506, 65534, 0, 65506, 65535, 0, 65506, 0, 0, 65506, 1, 0, 65506, 2, 0, 65506, 3, 0, 65506, 4, 0, 65506, 5, 0, 65506, 6, 0, 65506, 7, 0, 65506, 8, 0, 65506, 9, 0, 65506, 10, 0, 65506, 11, 0, 65506, 12, 0, 65506, 13, 0, 65506, 14, 0, 65506, 15, 0, 65506, 16, 0, 65506, 17, 0, 65506, 18, 0, 65506, 19, 0, 65506, 20, 0, 65506, 21, 0, 65506, 22, 0, 65506, 23, 0, 65506, 24, 0, 65506, 25, 0, 65506, 26, 0, 65506, 27, 0, 65506, 28, 0, 65506, 29, 0, 65506, 30, 0, 65506, 31, 0, 65506, 32, 0, 65506, 33, 0, 65506, 34, 0, 65506, 35, 0, 65507, 65504, 0, 65507, 65505, 0, 65507, 65506, 0, 65507, 65507, 0, 65507, 65508, 0, 65507, 65509, 0, 65507, 65510, 0, 65507, 65511, 0, 65507, 65512, 0, 65507, 65513, 0, 65507, 65514, 0, 65507, 65515, 0, 65507, 65516, 0, 65507, 65517, 0, 65507, 65518, 0, 65507, 65519, 0, 65507, 65520, 0, 65507, 65521, 0, 65507, 65522, 0, 65507, 65523, 0, 65507, 65524, 0, 65507, 65525, 0, 65507, 65526, 0, 65507, 65527, 0, 65507, 65528, 0, 65507, 65529, 0, 65507, 65530, 0, 65507, 65531, 0, 65507, 65532, 0, 65507, 65533, 0, 65507, 65534, 0, 65507, 65535, 0, 65507, 0, 0, 65507, 1, 0, 65507, 2, 0, 65507, 3, 0, 65507, 4, 0, 65507, 5, 0, 65507, 6, 0, 65507, 7, 0, 65507, 8, 0, 65507, 9, 0, 65507, 10, 0, 65507, 11, 0, 65507, 12, 0, 65507, 13, 0, 65507, 14, 0, 65507, 15, 0, 65507, 16, 0, 65507, 17, 0, 65507, 18, 0, 65507, 19, 0, 65507, 20, 0, 65507, 21, 0, 65507, 22, 0, 65507, 23, 0, 65507, 24, 0, 65507, 25, 0, 65507, 26, 0, 65507, 27, 0, 65507, 28, 0, 65507, 29, 0, 65507, 30, 0, 65507, 31, 0, 65507, 32, 0, 65507, 33, 0, 65507, 34, 0, 65507, 35, 0, 65508, 65504, 0, 65508, 65505, 0, 65508, 65506, 0, 65508, 65507, 0, 65508, 65508, 0, 65508, 65509, 0, 65508, 65510, 0, 65508, 65511, 0, 65508, 65512, 0, 65508, 65513, 0, 65508, 65514, 0, 65508, 65515, 0, 65508, 65516, 0, 65508, 65517, 0, 65508, 65518, 0, 65508, 65519, 0, 65508, 65520, 0, 65508, 65521, 0, 65508, 65522, 0, 65508, 65523, 0, 65508, 65524, 0, 65508, 65525, 0, 65508, 65526, 0, 65508, 65527, 0, 65508, 65528, 0, 65508, 65529, 0, 65508, 65530, 0, 65508, 65531, 0, 65508, 65532, 0, 65508, 65533, 0, 65508, 65534, 0, 65508, 65535, 0, 65508, 0, 0, 65508, 1, 0, 65508, 2, 0, 65508, 3, 0, 65508, 4, 0, 65508, 5, 0, 65508, 6, 0, 65508, 7, 0, 65508, 8, 0, 65508, 9, 0, 65508, 10, 0, 65508, 11, 0, 65508, 12, 0, 65508, 13, 0, 65508, 14, 0, 65508, 15, 0, 65508, 16, 0, 65508, 17, 0, 65508, 18, 0, 65508, 19, 0, 65508, 20, 0, 65508, 21, 0, 65508, 22, 0, 65508, 23, 0, 65508, 24, 0, 65508, 25, 0, 65508, 26, 0, 65508, 27, 0, 65508, 28, 0, 65508, 29, 0, 65508, 30, 0, 65508, 31, 0, 65508, 32, 0, 65508, 33, 0, 65508, 34, 0, 65508, 35, 0, 65509, 65504, 0, 65509, 65505, 0, 65509, 65506, 0, 65509, 65507, 0, 65509, 65508, 0, 65509, 65509, 0, 65509, 65510, 0, 65509, 65511, 0, 65509, 65512, 0, 65509, 65513, 0, 65509, 65514, 0, 65509, 65515, 0, 65509, 65516, 0, 65509, 65517, 0, 65509, 65518, 0, 65509, 65519, 0, 65509, 65520, 0, 65509, 65521, 0, 65509, 65522, 0, 65509, 65523, 0, 65509, 65524, 0, 65509, 65525, 0, 65509, 65526, 0, 65509, 65527, 0, 65509, 65528, 0, 65509, 65529, 0, 65509, 65530, 0, 65509, 65531, 0, 65509, 65532, 0, 65509, 65533, 0, 65509, 65534, 0, 65509, 65535, 0, 65509, 0, 0, 65509, 1, 0, 65509, 2, 0, 65509, 3, 0, 65509, 4, 0, 65509, 5, 0, 65509, 6, 0, 65509, 7, 0, 65509, 8, 0, 65509, 9, 0, 65509, 10, 0, 65509, 11, 0, 65509, 12, 0, 65509, 13, 0, 65509, 14, 0, 65509, 15, 0, 65509, 16, 0, 65509, 17, 0, 65509, 18, 0, 65509, 19, 0, 65509, 20, 0, 65509, 21, 0, 65509, 22, 0, 65509, 23, 0, 65509, 24, 0, 65509, 25, 0, 65509, 26, 0, 65509, 27, 0, 65509, 28, 0, 65509, 29, 0, 65509, 30, 0, 65509, 31, 0, 65509, 32, 0, 65509, 33, 0, 65509, 34, 0, 65509, 35, 0, 65510, 65504, 0, 65510, 65505, 0, 65510, 65506, 0, 65510, 65507, 0, 65510, 65508, 0, 65510, 65509, 0, 65510, 65510, 0, 65510, 65511, 0, 65510, 65512, 0, 65510, 65513, 0, 65510, 65514, 0, 65510, 65515, 0, 65510, 65516, 0, 65510, 65517, 0, 65510, 65518, 0, 65510, 65519, 0, 65510, 65520, 0, 65510, 65521, 0, 65510, 65522, 0, 65510, 65523, 0, 65510, 65524, 0, 65510, 65525, 0, 65510, 65526, 0, 65510, 65527, 0, 65510, 65528, 0, 65510, 65529, 0, 65510, 65530, 0, 65510, 65531, 0, 65510, 65532, 0, 65510, 65533, 0, 65510, 65534, 0, 65510, 65535, 0, 65510, 0, 0, 65510, 1, 0, 65510, 2, 0, 65510, 3, 0, 65510, 4, 0, 65510, 5, 0, 65510, 6, 0, 65510, 7, 0, 65510, 8, 0, 65510, 9, 0, 65510, 10, 0, 65510, 11, 0, 65510, 12, 0, 65510, 13, 0, 65510, 14, 0, 65510, 15, 0, 65510, 16, 0, 65510, 17, 0, 65510, 18, 0, 65510, 19, 0, 65510, 20, 0, 65510, 21, 0, 65510, 22, 0, 65510, 23, 0, 65510, 24, 0, 65510, 25, 0, 65510, 26, 0, 65510, 27, 0, 65510, 28, 0, 65510, 29, 0, 65510, 30, 0, 65510, 31, 0, 65510, 32, 0, 65510, 33, 0, 65510, 34, 0, 65510, 35, 0, 65511, 65504, 0, 65511, 65505, 0, 65511, 65506, 0, 65511, 65507, 0, 65511, 65508, 0, 65511, 65509, 0, 65511, 65510, 0, 65511, 65511, 0, 65511, 65512, 0, 65511, 65513, 0, 65511, 65514, 0, 65511, 65515, 0, 65511, 65516, 0, 65511, 65517, 0, 65511, 65518, 0, 65511, 65519, 0, 65511, 65520, 0, 65511, 65521, 0, 65511, 65522, 0, 65511, 65523, 0, 65511, 65524, 0, 65511, 65525, 0, 65511, 65526, 0, 65511, 65527, 0, 65511, 65528, 0, 65511, 65529, 0, 65511, 65530, 0, 65511, 65531, 0, 65511, 65532, 0, 65511, 65533, 0, 65511, 65534, 0, 65511, 65535, 0, 65511, 0, 0, 65511, 1, 0, 65511, 2, 0, 65511, 3, 0, 65511, 4, 0, 65511, 5, 0, 65511, 6, 0, 65511, 7, 0, 65511, 8, 0, 65511, 9, 0, 65511, 10, 0, 65511, 11, 0, 65511, 12, 0, 65511, 13, 0, 65511, 14, 0, 65511, 15, 0, 65511, 16, 0, 65511, 17, 0, 65511, 18, 0, 65511, 19, 0, 65511, 20, 0, 65511, 21, 0, 65511, 22, 0, 65511, 23, 0, 65511, 24, 0, 65511, 25, 0, 65511, 26, 0, 65511, 27, 0, 65511, 28, 0, 65511, 29, 0, 65511, 30, 0, 65511, 31, 0, 65511, 32, 0, 65511, 33, 0, 65511, 34, 0, 65511, 35, 0, 65512, 65504, 0, 65512, 65505, 0, 65512, 65506, 0, 65512, 65507, 0, 65512, 65508, 0, 65512, 65509, 0, 65512, 65510, 0, 65512, 65511, 0, 65512, 65512, 0, 65512, 65513, 0, 65512, 65514, 0, 65512, 65515, 0, 65512, 65516, 0, 65512, 65517, 0, 65512, 65518, 0, 65512, 65519, 0, 65512, 65520, 0, 65512, 65521, 0, 65512, 65522, 0, 65512, 65523, 0, 65512, 65524, 0, 65512, 65525, 0, 65512, 65526, 0, 65512, 65527, 0, 65512, 65528, 0, 65512, 65529, 0, 65512, 65530, 0, 65512, 65531, 0, 65512, 65532, 0, 65512, 65533, 0, 65512, 65534, 0, 65512, 65535, 0, 65512, 0, 0, 65512, 1, 0, 65512, 2, 0, 65512, 3, 0, 65512, 4, 0, 65512, 5, 0, 65512, 6, 0, 65512, 7, 0, 65512, 8, 0, 65512, 9, 0, 65512, 10, 0, 65512, 11, 0, 65512, 12, 0, 65512, 13, 0, 65512, 14, 0, 65512, 15, 0, 65512, 16, 0, 65512, 17, 0, 65512, 18, 0, 65512, 19, 0, 65512, 20, 0, 65512, 21, 0, 65512, 22, 0, 65512, 23, 0, 65512, 24, 0, 65512, 25, 0, 65512, 26, 0, 65512, 27, 0, 65512, 28, 0, 65512, 29, 0, 65512, 30, 0, 65512, 31, 0, 65512, 32, 0, 65512, 33, 0, 65512, 34, 0, 65512, 35, 0, 65513, 65504, 0, 65513, 65505, 0, 65513, 65506, 0, 65513, 65507, 0, 65513, 65508, 0, 65513, 65509, 0, 65513, 65510, 0, 65513, 65511, 0, 65513, 65512, 0, 65513, 65513, 0, 65513, 65514, 0, 65513, 65515, 0, 65513, 65516, 0, 65513, 65517, 0, 65513, 65518, 0, 65513, 65519, 0, 65513, 65520, 0, 65513, 65521, 0, 65513, 65522, 0, 65513, 65523, 0, 65513, 65524, 0, 65513, 65525, 0, 65513, 65526, 0, 65513, 65527, 0, 65513, 65528, 0, 65513, 65529, 0, 65513, 65530, 0, 65513, 65531, 0, 65513, 65532, 0, 65513, 65533, 0, 65513, 65534, 0, 65513, 65535, 0, 65513, 0, 0, 65513, 1, 0, 65513, 2, 0, 65513, 3, 0, 65513, 4, 0, 65513, 5, 0, 65513, 6, 0, 65513, 7, 0, 65513, 8, 0, 65513, 9, 0, 65513, 10, 0, 65513, 11, 0, 65513, 12, 0, 65513, 13, 0, 65513, 14, 0, 65513, 15, 0, 65513, 16, 0, 65513, 17, 0, 65513, 18, 0, 65513, 19, 0, 65513, 20, 0, 65513, 21, 0, 65513, 22, 0, 65513, 23, 0, 65513, 24, 0, 65513, 25, 0, 65513, 26, 0, 65513, 27, 0, 65513, 28, 0, 65513, 29, 0, 65513, 30, 0, 65513, 31, 0, 65513, 32, 0, 65513, 33, 0, 65513, 34, 0, 65513, 35, 0, 65514, 65504, 0, 65514, 65505, 0, 65514, 65506, 0, 65514, 65507, 0, 65514, 65508, 0, 65514, 65509, 0, 65514, 65510, 0, 65514, 65511, 0, 65514, 65512, 0, 65514, 65513, 0, 65514, 65514, 0, 65514, 65515, 0, 65514, 65516, 0, 65514, 65517, 0, 65514, 65518, 0, 65514, 65519, 0, 65514, 65520, 0, 65514, 65521, 0, 65514, 65522, 0, 65514, 65523, 0, 65514, 65524, 0, 65514, 65525, 0, 65514, 65526, 0, 65514, 65527, 0, 65514, 65528, 0, 65514, 65529, 0, 65514, 65530, 0, 65514, 65531, 0, 65514, 65532, 0, 65514, 65533, 0, 65514, 65534, 0, 65514, 65535, 0, 65514, 0, 0, 65514, 1, 0, 65514, 2, 0, 65514, 3, 0, 65514, 4, 0, 65514, 5, 0, 65514, 6, 0, 65514, 7, 0, 65514, 8, 0, 65514, 9, 0, 65514, 10, 0, 65514, 11, 0, 65514, 12, 0, 65514, 13, 0, 65514, 14, 0, 65514, 15, 0, 65514, 16, 0, 65514, 17, 0, 65514, 18, 0, 65514, 19, 0, 65514, 20, 0, 65514, 21, 0, 65514, 22, 0, 65514, 23, 0, 65514, 24, 0, 65514, 25, 0, 65514, 26, 0, 65514, 27, 0, 65514, 28, 0, 65514, 29, 0, 65514, 30, 0, 65514, 31, 0, 65514, 32, 0, 65514, 33, 0, 65514, 34, 0, 65514, 35, 0, 65515, 65504, 0, 65515, 65505, 0, 65515, 65506, 0, 65515, 65507, 0, 65515, 65508, 0, 65515, 65509, 0, 65515, 65510, 0, 65515, 65511, 0, 65515, 65512, 0, 65515, 65513, 0, 65515, 65514, 0, 65515, 65515, 0, 65515, 65516, 0, 65515, 65517, 0, 65515, 65518, 0, 65515, 65519, 0, 65515, 65520, 0, 65515, 65521, 0, 65515, 65522, 0, 65515, 65523, 0, 65515, 65524, 0, 65515, 65525, 0, 65515, 65526, 0, 65515, 65527, 0, 65515, 65528, 0, 65515, 65529, 0, 65515, 65530, 0, 65515, 65531, 0, 65515, 65532, 0, 65515, 65533, 0, 65515, 65534, 0, 65515, 65535, 0, 65515, 0, 0, 65515, 1, 0, 65515, 2, 0, 65515, 3, 0, 65515, 4, 0, 65515, 5, 0, 65515, 6, 0, 65515, 7, 0, 65515, 8, 0, 65515, 9, 0, 65515, 10, 0, 65515, 11, 0, 65515, 12, 0, 65515, 13, 0, 65515, 14, 0, 65515, 15, 0, 65515, 16, 0, 65515, 17, 0, 65515, 18, 0, 65515, 19, 0, 65515, 20, 0, 65515, 21, 0, 65515, 22, 0, 65515, 23, 0, 65515, 24, 0, 65515, 25, 0, 65515, 26, 0, 65515, 27, 0, 65515, 28, 0, 65515, 29, 0, 65515, 30, 0, 65515, 31, 0, 65515, 32, 0, 65515, 33, 0, 65515, 34, 0, 65515, 35, 0, 65516, 65504, 0, 65516, 65505, 0, 65516, 65506, 0, 65516, 65507, 0, 65516, 65508, 0, 65516, 65509, 0, 65516, 65510, 0, 65516, 65511, 0, 65516, 65512, 0, 65516, 65513, 0, 65516, 65514, 0, 65516, 65515, 0, 65516, 65516, 0, 65516, 65517, 0, 65516, 65518, 0, 65516, 65519, 0, 65516, 65520, 0, 65516, 65521, 0, 65516, 65522, 0, 65516, 65523, 0, 65516, 65524, 0, 65516, 65525, 0, 65516, 65526, 0, 65516, 65527, 0, 65516, 65528, 0, 65516, 65529, 0, 65516, 65530, 0, 65516, 65531, 0, 65516, 65532, 0, 65516, 65533, 0, 65516, 65534, 0, 65516, 65535, 0, 65516, 0, 0, 65516, 1, 0, 65516, 2, 0, 65516, 3, 0, 65516, 4, 0, 65516, 5, 0, 65516, 6, 0, 65516, 7, 0, 65516, 8, 0, 65516, 9, 0, 65516, 10, 0, 65516, 11, 0, 65516, 12, 0, 65516, 13, 0, 65516, 14, 0, 65516, 15, 0, 65516, 16, 0, 65516, 17, 0, 65516, 18, 0, 65516, 19, 0, 65516, 20, 0, 65516, 21, 0, 65516, 22, 0, 65516, 23, 0, 65516, 24, 0, 65516, 25, 0, 65516, 26, 0, 65516, 27, 0, 65516, 28, 0, 65516, 29, 0, 65516, 30, 0, 65516, 31, 0, 65516, 32, 0, 65516, 33, 0, 65516, 34, 0, 65516, 35, 0, 65517, 65504, 0, 65517, 65505, 0, 65517, 65506, 0, 65517, 65507, 0, 65517, 65508, 0, 65517, 65509, 0, 65517, 65510, 0, 65517, 65511, 0, 65517, 65512, 0, 65517, 65513, 0, 65517, 65514, 0, 65517, 65515, 0, 65517, 65516, 0, 65517, 65517, 0, 65517, 65518, 0, 65517, 65519, 0, 65517, 65520, 0, 65517, 65521, 0, 65517, 65522, 0, 65517, 65523, 0, 65517, 65524, 0, 65517, 65525, 0, 65517, 65526, 0, 65517, 65527, 0, 65517, 65528, 0, 65517, 65529, 0, 65517, 65530, 0, 65517, 65531, 0, 65517, 65532, 0, 65517, 65533, 0, 65517, 65534, 0, 65517, 65535, 0, 65517, 0, 0, 65517, 1, 0, 65517, 2, 0, 65517, 3, 0, 65517, 4, 0, 65517, 5, 0, 65517, 6, 0, 65517, 7, 0, 65517, 8, 0, 65517, 9, 0, 65517, 10, 0, 65517, 11, 0, 65517, 12, 0, 65517, 13, 0, 65517, 14, 0, 65517, 15, 0, 65517, 16, 0, 65517, 17, 0, 65517, 18, 0, 65517, 19, 0, 65517, 20, 0, 65517, 21, 0, 65517, 22, 0, 65517, 23, 0, 65517, 24, 0, 65517, 25, 0, 65517, 26, 0, 65517, 27, 0, 65517, 28, 0, 65517, 29, 0, 65517, 30, 0, 65517, 31, 0, 65517, 32, 0, 65517, 33, 0, 65517, 34, 0, 65517, 35, 0, 65518, 65504, 0, 65518, 65505, 0, 65518, 65506, 0, 65518, 65507, 0, 65518, 65508, 0, 65518, 65509, 0, 65518, 65510, 0, 65518, 65511, 0, 65518, 65512, 0, 65518, 65513, 0, 65518, 65514, 0, 65518, 65515, 0, 65518, 65516, 0, 65518, 65517, 0, 65518, 65518, 0, 65518, 65519, 0, 65518, 65520, 0, 65518, 65521, 0, 65518, 65522, 0, 65518, 65523, 0, 65518, 65524, 0, 65518, 65525, 0, 65518, 65526, 0, 65518, 65527, 0, 65518, 65528, 0, 65518, 65529, 0, 65518, 65530, 0, 65518, 65531, 0, 65518, 65532, 0, 65518, 65533, 0, 65518, 65534, 0, 65518, 65535, 0, 65518, 0, 0, 65518, 1, 0, 65518, 2, 0, 65518, 3, 0, 65518, 4, 0, 65518, 5, 0, 65518, 6, 0, 65518, 7, 0, 65518, 8, 0, 65518, 9, 0, 65518, 10, 0, 65518, 11, 0, 65518, 12, 0, 65518, 13, 0, 65518, 14, 0, 65518, 15, 0, 65518, 16, 0, 65518, 17, 0, 65518, 18, 0, 65518, 19, 0, 65518, 20, 0, 65518, 21, 0, 65518, 22, 0, 65518, 23, 0, 65518, 24, 0, 65518, 25, 0, 65518, 26, 0, 65518, 27, 0, 65518, 28, 0, 65518, 29, 0, 65518, 30, 0, 65518, 31, 0, 65518, 32, 0, 65518, 33, 0, 65518, 34, 0, 65518, 35, 0, 65519, 65504, 0, 65519, 65505, 0, 65519, 65506, 0, 65519, 65507, 0, 65519, 65508, 0, 65519, 65509, 0, 65519, 65510, 0, 65519, 65511, 0, 65519, 65512, 0, 65519, 65513, 0, 65519, 65514, 0, 65519, 65515, 0, 65519, 65516, 0, 65519, 65517, 0, 65519, 65518, 0, 65519, 65519, 0, 65519, 65520, 0, 65519, 65521, 0, 65519, 65522, 0, 65519, 65523, 0, 65519, 65524, 0, 65519, 65525, 0, 65519, 65526, 0, 65519, 65527, 0, 65519, 65528, 0, 65519, 65529, 0, 65519, 65530, 0, 65519, 65531, 0, 65519, 65532, 0, 65519, 65533, 0, 65519, 65534, 0, 65519, 65535, 0, 65519, 0, 0, 65519, 1, 0, 65519, 2, 0, 65519, 3, 0, 65519, 4, 0, 65519, 5, 0, 65519, 6, 0, 65519, 7, 0, 65519, 8, 0, 65519, 9, 0, 65519, 10, 0, 65519, 11, 0, 65519, 12, 0, 65519, 13, 0, 65519, 14, 0, 65519, 15, 0, 65519, 16, 0, 65519, 17, 0, 65519, 18, 0, 65519, 19, 0, 65519, 20, 0, 65519, 21, 0, 65519, 22, 0, 65519, 23, 0, 65519, 24, 0, 65519, 25, 0, 65519, 26, 0, 65519, 27, 0, 65519, 28, 0, 65519, 29, 0, 65519, 30, 0, 65519, 31, 0, 65519, 32, 0, 65519, 33, 0, 65519, 34, 0, 65519, 35, 0, 65520, 65504, 0, 65520, 65505, 0, 65520, 65506, 0, 65520, 65507, 0, 65520, 65508, 0, 65520, 65509, 0, 65520, 65510, 0, 65520, 65511, 0, 65520, 65512, 0, 65520, 65513, 0, 65520, 65514, 0, 65520, 65515, 0, 65520, 65516, 0, 65520, 65517, 0, 65520, 65518, 0, 65520, 65519, 0, 65520, 65520, 0, 65520, 65521, 0, 65520, 65522, 0, 65520, 65523, 0, 65520, 65524, 0, 65520, 65525, 0, 65520, 65526, 0, 65520, 65527, 0, 65520, 65528, 0, 65520, 65529, 0, 65520, 65530, 0, 65520, 65531, 0, 65520, 65532, 0, 65520, 65533, 0, 65520, 65534, 0, 65520, 65535, 0, 65520, 0, 0, 65520, 1, 0, 65520, 2, 0, 65520, 3, 0, 65520, 4, 0, 65520, 5, 0, 65520, 6, 0, 65520, 7, 0, 65520, 8, 0, 65520, 9, 0, 65520, 10, 0, 65520, 11, 0, 65520, 12, 0, 65520, 13, 0, 65520, 14, 0, 65520, 15, 0, 65520, 16, 0, 65520, 17, 0, 65520, 18, 0, 65520, 19, 0, 65520, 20, 0, 65520, 21, 0, 65520, 22, 0, 65520, 23, 0, 65520, 24, 0, 65520, 25, 0, 65520, 26, 0, 65520, 27, 0, 65520, 28, 0, 65520, 29, 0, 65520, 30, 0, 65520, 31, 0, 65520, 32, 0, 65520, 33, 0, 65520, 34, 0, 65520, 35, 0, 65521, 65504, 0, 65521, 65505, 0, 65521, 65506, 0, 65521, 65507, 0, 65521, 65508, 0, 65521, 65509, 0, 65521, 65510, 0, 65521, 65511, 0, 65521, 65512, 0, 65521, 65513, 0, 65521, 65514, 0, 65521, 65515, 0, 65521, 65516, 0, 65521, 65517, 0, 65521, 65518, 0, 65521, 65519, 0, 65521, 65520, 0, 65521, 65521, 0, 65521, 65522, 0, 65521, 65523, 0, 65521, 65524, 0, 65521, 65525, 0, 65521, 65526, 0, 65521, 65527, 0, 65521, 65528, 0, 65521, 65529, 0, 65521, 65530, 0, 65521, 65531, 0, 65521, 65532, 0, 65521, 65533, 0, 65521, 65534, 0, 65521, 65535, 0, 65521, 0, 0, 65521, 1, 0, 65521, 2, 0, 65521, 3, 0, 65521, 4, 0, 65521, 5, 0, 65522, 65530, 1, 65522, 65531, 1, 65522, 65532, 1, 65522, 65533, 1, 65522, 65534, 1, 65522, 65535, 1, 65522, 0, 1, 65522, 1, 1, 65522, 2, 1, 65522, 3, 1, 65522, 4, 1, 65522, 5, 1, 65523, 65530, 1, 65523, 65531, 1, 65523, 65532, 1, 65523, 65533, 1, 65523, 65534, 1, 65523, 65535, 1, 65523, 0, 1, 65523, 1, 1, 65523, 2, 1, 65523, 3, 1, 65523, 4, 1, 65523, 5, 1, 65524, 65530, 1, 65524, 65531, 1, 65524, 65532, 1, 65524, 65533, 1, 65524, 65534, 1, 65524, 65535, 1, 65524, 0, 1, 65524, 1, 1, 65524, 2, 1, 65524, 3, 1, 65524, 4, 1, 65524, 5, 1, 65525, 65530, 1, 65525, 65531, 1, 65525, 65532, 1, 65525, 65533, 1, 65525, 65534, 1, 65525, 65535, 1, 65525, 0, 1, 65525, 1, 1, 65525, 2, 1, 65525, 3, 1, 65525, 4, 1, 65525, 5, 1, 65526, 65530, 1, 65526, 65531, 1, 65526, 65532, 1, 65526, 65533, 1, 65526, 65534, 1, 65526, 65535, 1, 65526, 0, 1, 65526, 1, 1, 65526, 2, 1, 65526, 3, 1, 65526, 4, 1, 65526, 5, 1, 65527, 65530, 1, 65527, 65531, 1, 65527, 65532, 1, 65527, 65533, 1, 65527, 65534, 1, 65527, 65535, 1, 65527, 0, 1, 65527, 1, 1, 65527, 2, 1, 65527, 3, 1, 65527, 4, 1, 65527, 5, 1, 65528, 65530, 1, 65528, 65531, 1, 65528, 65532, 1, 65528, 65533, 1, 65528, 65534, 1, 65528, 65535, 1, 65528, 0, 1, 65528, 1, 1, 65528, 2, 1, 65528, 3, 1, 65528, 4, 1, 65528, 5, 1, 65529, 65530, 1, 65529, 65531, 1, 65529, 65532, 1, 65529, 65533, 1, 65529, 65534, 1, 65529, 65535, 1, 65529, 0, 1, 65529, 1, 1, 65529, 2, 1, 65529, 3, 1, 65529, 4, 1, 65529, 5, 1, 65530, 65530, 1, 65530, 65531, 1, 65530, 65532, 1, 65530, 65533, 1, 65530, 65534, 1, 65530, 65535, 1, 65530, 0, 1, 65530, 1, 1, 65530, 2, 1, 65530, 3, 1, 65530, 4, 1, 65530, 5, 1, 65531, 65530, 1, 65531, 65531, 1, 65531, 65532, 1, 65531, 65533, 1, 65531, 65534, 1, 65531, 65535, 1, 65531, 0, 1, 65531, 1, 1, 65531, 2, 1, 65531, 3, 1, 65531, 4, 1, 65531, 5, 1, 65532, 65530, 1, 65532, 65531, 1, 65532, 65532, 1, 65532, 65533, 1, 65532, 65534, 1, 65532, 65535, 1, 65532, 0, 1, 65532, 1, 1, 65532, 2, 1, 65532, 3, 1, 65532, 4, 1, 65532, 5, 1, 65533, 65530, 1, 65533, 65531, 1, 65533, 65532, 1, 65533, 65533, 1, 65533, 65534, 1, 65533, 65535, 1, 65533, 0, 1, 65533, 1, 1, 65533, 2, 1, 65533, 3, 1, 65533, 4, 1, 65533, 5, 1, 65534, 65530, 1, 65534, 65531, 1, 65534, 65532, 1, 65534, 65533, 1, 65534, 65534, 1, 65534, 65535, 1, 65534, 0, 1, 65534, 1, 1, 65534, 2, 1, 65534, 3, 1, 65534, 4, 1, 65534, 5, 1, 65535, 65530, 1, 65535, 65531, 1, 65535, 65532, 1, 65535, 65533, 1, 65535, 65534, 1, 65535, 65535, 1, 65535, 0, 1, 65535, 1, 1, 65535, 2, 1, 65535, 3, 1, 65535, 4, 1, 65535, 5, 1, 0, 65530, 1, 0, 65531, 1, 0, 65533, 1, 0, 65534, 1, 0, 65535, 1, 0, 0, 1, 0, 1, 1, 0, 2, 1, 0, 3, 1, 0, 4, 1, 0, 5, 1, 1, 65531, 1, 1, 65534, 1, 1, 65535, 1, 1, 0, 1, 1, 1, 1, 1, 2, 1, 1, 3, 1, 1, 4, 1, 1, 5, 1, 2, 65530, 1, 2, 65531, 1, 2, 65532, 1, 2, 65533, 1, 2, 65535, 1, 2, 0, 1, 2, 1, 1, 2, 2, 1, 2, 3, 1, 2, 4, 1, 2, 5, 1, 3, 65530, 1, 3, 65531, 1, 3, 65533, 1, 3, 65534, 1, 3, 65535, 1, 3, 0, 1, 3, 1, 1, 3, 2, 1, 3, 3, 1, 3, 4, 1, 3, 5, 1, 4, 65530, 1, 4, 65531, 1, 4, 65532, 1, 4, 65533, 1, 4, 65534, 1, 4, 65535, 1, 4, 0, 1, 4, 1, 1, 4, 2, 1, 4, 3, 1, 4, 4, 1, 4, 5, 1, 5, 65530, 1, 5, 65531, 1, 5, 65532, 1, 5, 65533, 1, 5, 2, 1, 5, 3, 1, 5, 4, 1, 5, 5, 1, 6, 65530, 1, 6, 65531, 1, 6, 65532, 1, 6, 65533, 1, 6, 65534, 1, 6, 65535, 1, 6, 0, 1, 6, 1, 1, 6, 2, 1, 6, 3, 1, 6, 4, 1, 6, 5, 1, 7, 65530, 1, 7, 65531, 1, 7, 65532, 1, 7, 65533, 1, 7, 65534, 1, 7, 65535, 1, 7, 0, 1, 7, 1, 1, 7, 2, 1, 7, 3, 1, 7, 4, 1, 7, 5, 1, 8, 65530, 1, 8, 65531, 1, 8, 65532, 1, 8, 65533, 1, 8, 65534, 1, 8, 65535, 1, 8, 0, 1, 8, 1, 1, 8, 2, 1, 8, 3, 1, 8, 4, 1, 8, 5, 1, 9, 65530, 1, 9, 65531, 1, 9, 65532, 1, 9, 65533, 1, 9, 65534, 1, 9, 65535, 1, 9, 0, 1, 9, 1, 1, 9, 2, 1, 9, 3, 1, 9, 4, 1, 9, 5, 1, 10, 65530, 1, 10, 65531, 1, 10, 65532, 1, 10, 65533, 1, 10, 65534, 1, 10, 65535, 1, 10, 0, 1, 10, 1, 1, 10, 2, 1, 10, 3, 1, 10, 4, 1, 10, 5, 1, 11, 65530, 1, 11, 65531, 1, 11, 65532, 1, 11, 65533, 1, 11, 65534, 1, 11, 65535, 1, 11, 0, 1, 11, 1, 1, 11, 2, 1, 11, 3, 1, 11, 4, 1, 11, 5, 1, 12, 65530, 1, 12, 65531, 1, 12, 65532, 1, 12, 65533, 1, 12, 65534, 1, 12, 65535, 1, 12, 0, 1, 12, 1, 1, 12, 2, 1, 12, 3, 1, 12, 4, 1, 12, 5, 1, 13, 65530, 1, 13, 65531, 1, 13, 65532, 1, 13, 65533, 1, 13, 65534, 1, 13, 65535, 1, 13, 0, 1, 13, 1, 1, 13, 2, 1, 13, 3, 1, 13, 4, 1, 13, 5, 1, 14, 65530, 1, 14, 65531, 1, 14, 65532, 1, 14, 65533, 1, 14, 65534, 1, 14, 65535, 1, 14, 0, 1, 14, 1, 1, 14, 2, 1, 14, 3, 1, 14, 4, 1, 14, 5, 1, 15, 65504, 0, 15, 65505, 0, 15, 65506, 0, 15, 65507, 0, 15, 65508, 0, 15, 65509, 0, 15, 65510, 0, 15, 65511, 0, 15, 65512, 0, 15, 65513, 0, 15, 65514, 0, 15, 65515, 0, 15, 65516, 0, 15, 65517, 0, 15, 65518, 0, 15, 65519, 0, 15, 65520, 0, 15, 65521, 0, 15, 65522, 0, 15, 65523, 0, 15, 65524, 0, 15, 65525, 0, 15, 65526, 0, 15, 65527, 0, 15, 65528, 0, 15, 65529, 0, 15, 65530, 0, 15, 65531, 0, 15, 65532, 0, 15, 65533, 0, 15, 65534, 0, 15, 65535, 0, 15, 0, 0, 15, 1, 0, 15, 2, 0, 15, 3, 0, 15, 4, 0, 15, 5, 0, 15, 6, 0, 15, 7, 0, 15, 8, 0, 15, 9, 0, 15, 10, 0, 15, 11, 0, 15, 12, 0, 15, 13, 0, 15, 14, 0, 15, 15, 0, 15, 16, 0, 15, 17, 0, 15, 18, 0, 15, 19, 0, 15, 20, 0, 15, 21, 0, 15, 22, 0, 15, 23, 0, 15, 24, 0, 15, 25, 0, 15, 26, 0, 15, 27, 0, 15, 28, 0, 15, 29, 0, 15, 30, 0, 15, 31, 0, 15, 32, 0, 15, 33, 0, 15, 34, 0, 15, 35, 0, 16, 65504, 0, 16, 65505, 0, 16, 65506, 0, 16, 65507, 0, 16, 65508, 0, 16, 65509, 0, 16, 65510, 0, 16, 65511, 0, 16, 65512, 0, 16, 65513, 0, 16, 65514, 0, 16, 65515, 0, 16, 65516, 0, 16, 65517, 0, 16, 65518, 0, 16, 65519, 0, 16, 65520, 0, 16, 65521, 0, 16, 65522, 0, 16, 65523, 0, 16, 65524, 0, 16, 65525, 0, 16, 65526, 0, 16, 65527, 0, 16, 65528, 0, 16, 65529, 0, 16, 65530, 0, 16, 65531, 0, 16, 65532, 0, 16, 65533, 0, 16, 65534, 0, 16, 65535, 0, 16, 0, 0, 16, 1, 0, 16, 2, 0, 16, 3, 0, 16, 4, 0, 16, 5, 0, 16, 6, 0, 16, 7, 0, 16, 8, 0, 16, 9, 0, 16, 10, 0, 16, 11, 0, 16, 12, 0, 16, 13, 0, 16, 14, 0, 16, 15, 0, 16, 16, 0, 16, 17, 0, 16, 18, 0, 16, 19, 0, 16, 20, 0, 16, 21, 0, 16, 22, 0, 16, 23, 0, 16, 24, 0, 16, 25, 0, 16, 26, 0, 16, 27, 0, 16, 28, 0, 16, 29, 0, 16, 30, 0, 16, 31, 0, 16, 32, 0, 16, 33, 0, 16, 34, 0, 16, 35, 0, 17, 65504, 0, 17, 65505, 0, 17, 65506, 0, 17, 65507, 0, 17, 65508, 0, 17, 65509, 0, 17, 65510, 0, 17, 65511, 0, 17, 65512, 0, 17, 65513, 0, 17, 65514, 0, 17, 65515, 0, 17, 65516, 0, 17, 65517, 0, 17, 65518, 0, 17, 65519, 0, 17, 65520, 0, 17, 65521, 0, 17, 65522, 0, 17, 65523, 0, 17, 65524, 0, 17, 65525, 0, 17, 65526, 0, 17, 65527, 0, 17, 65528, 0, 17, 65529, 0, 17, 65530, 0, 17, 65531, 0, 17, 65532, 0, 17, 65533, 0, 17, 65534, 0, 17, 65535, 0, 17, 0, 0, 17, 1, 0, 17, 2, 0, 17, 3, 0, 17, 4, 0, 17, 5, 0, 17, 6, 0, 17, 7, 0, 17, 8, 0, 17, 9, 0, 17, 10, 0, 17, 11, 0, 17, 12, 0, 17, 13, 0, 17, 14, 0, 17, 15, 0, 17, 16, 0, 17, 17, 0, 17, 18, 0, 17, 19, 0, 17, 20, 0, 17, 21, 0, 17, 22, 0, 17, 23, 0, 17, 24, 0, 17, 25, 0, 17, 26, 0, 17, 27, 0, 17, 28, 0, 17, 29, 0, 17, 30, 0, 17, 31, 0, 17, 32, 0, 17, 33, 0, 17, 34, 0, 17, 35, 0, 18, 65504, 0, 18, 65505, 0, 18, 65506, 0, 18, 65507, 0, 18, 65508, 0, 18, 65509, 0, 18, 65510, 0, 18, 65511, 0, 18, 65512, 0, 18, 65513, 0, 18, 65514, 0, 18, 65515, 0, 18, 65516, 0, 18, 65517, 0, 18, 65518, 0, 18, 65519, 0, 18, 65520, 0, 18, 65521, 0, 18, 65522, 0, 18, 65523, 0, 18, 65524, 0, 18, 65525, 0, 18, 65526, 0, 18, 65527, 0, 18, 65528, 0, 18, 65529, 0, 18, 65530, 0, 18, 65531, 0, 18, 65532, 0, 18, 65533, 0, 18, 65534, 0, 18, 65535, 0, 18, 0, 0, 18, 1, 0, 18, 2, 0, 18, 3, 0, 18, 4, 0, 18, 5, 0, 18, 6, 0, 18, 7, 0, 18, 8, 0, 18, 9, 0, 18, 10, 0, 18, 11, 0, 18, 12, 0, 18, 13, 0, 18, 14, 0, 18, 15, 0, 18, 16, 0, 18, 17, 0, 18, 18, 0, 18, 19, 0, 18, 20, 0, 18, 21, 0, 18, 22, 0, 18, 23, 0, 18, 24, 0, 18, 25, 0, 18, 26, 0, 18, 27, 0, 18, 28, 0, 18, 29, 0, 18, 30, 0, 18, 31, 0, 18, 32, 0, 18, 33, 0, 18, 34, 0, 18, 35, 0, 19, 65504, 0, 19, 65505, 0, 19, 65506, 0, 19, 65507, 0, 19, 65508, 0, 19, 65509, 0, 19, 65510, 0, 19, 65511, 0, 19, 65512, 0, 19, 65513, 0, 19, 65514, 0, 19, 65515, 0, 19, 65516, 0, 19, 65517, 0, 19, 65518, 0, 19, 65519, 0, 19, 65520, 0, 19, 65521, 0, 19, 65522, 0, 19, 65523, 0, 19, 65524, 0, 19, 65525, 0, 19, 65526, 0, 19, 65527, 0, 19, 65528, 0, 19, 65529, 0, 19, 65530, 0, 19, 65531, 0, 19, 65532, 0, 19, 65533, 0, 19, 65534, 0, 19, 65535, 0, 19, 0, 0, 19, 1, 0, 19, 2, 0, 19, 3, 0, 19, 4, 0, 19, 5, 0, 19, 6, 0, 19, 7, 0, 19, 8, 0, 19, 9, 0, 19, 10, 0, 19, 11, 0, 19, 12, 0, 19, 13, 0, 19, 14, 0, 19, 15, 0, 19, 16, 0, 19, 17, 0, 19, 18, 0, 19, 19, 0, 19, 20, 0, 19, 21, 0, 19, 22, 0, 19, 23, 0, 19, 24, 0, 19, 25, 0, 19, 26, 0, 19, 27, 0, 19, 28, 0, 19, 29, 0, 19, 30, 0, 19, 31, 0, 19, 32, 0, 19, 33, 0, 19, 34, 0, 19, 35, 0, 20, 65504, 0, 20, 65505, 0, 20, 65506, 0, 20, 65507, 0, 20, 65508, 0, 20, 65509, 0, 20, 65510, 0, 20, 65511, 0, 20, 65512, 0, 20, 65513, 0, 20, 65514, 0, 20, 65515, 0, 20, 65516, 0, 20, 65517, 0, 20, 65518, 0, 20, 65519, 0, 20, 65520, 0, 20, 65521, 0, 20, 65522, 0, 20, 65523, 0, 20, 65524, 0, 20, 65525, 0, 20, 65526, 0, 20, 65527, 0, 20, 65528, 0, 20, 65529, 0, 20, 65530, 0, 20, 65531, 0, 20, 65532, 0, 20, 65533, 0, 20, 65534, 0, 20, 65535, 0, 20, 0, 0, 20, 1, 0, 20, 2, 0, 20, 3, 0, 20, 4, 0, 20, 5, 0, 20, 6, 0, 20, 7, 0, 20, 8, 0, 20, 9, 0, 20, 10, 0, 20, 11, 0, 20, 12, 0, 20, 13, 0, 20, 14, 0, 20, 15, 0, 20, 16, 0, 20, 17, 0, 20, 18, 0, 20, 19, 0, 20, 20, 0, 20, 21, 0, 20, 22, 0, 20, 23, 0, 20, 24, 0, 20, 25, 0, 20, 26, 0, 20, 27, 0, 20, 28, 0, 20, 29, 0, 20, 30, 0, 20, 31, 0, 20, 32, 0, 20, 33, 0, 20, 34, 0, 20, 35, 0, 21, 65504, 0, 21, 65505, 0, 21, 65506, 0, 21, 65507, 0, 21, 65508, 0, 21, 65509, 0, 21, 65510, 0, 21, 65511, 0, 21, 65512, 0, 21, 65513, 0, 21, 65514, 0, 21, 65515, 0, 21, 65516, 0, 21, 65517, 0, 21, 65518, 0, 21, 65519, 0, 21, 65520, 0, 21, 65521, 0, 21, 65522, 0, 21, 65523, 0, 21, 65524, 0, 21, 65525, 0, 21, 65526, 0, 21, 65527, 0, 21, 65528, 0, 21, 65529, 0, 21, 65530, 0, 21, 65531, 0, 21, 65532, 0, 21, 65533, 0, 21, 65534, 0, 21, 65535, 0, 21, 0, 0, 21, 1, 0, 21, 2, 0, 21, 3, 0, 21, 4, 0, 21, 5, 0, 21, 6, 0, 21, 7, 0, 21, 8, 0, 21, 9, 0, 21, 10, 0, 21, 11, 0, 21, 12, 0, 21, 13, 0, 21, 14, 0, 21, 15, 0, 21, 16, 0, 21, 17, 0, 21, 18, 0, 21, 19, 0, 21, 20, 0, 21, 21, 0, 21, 22, 0, 21, 23, 0, 21, 24, 0, 21, 25, 0, 21, 26, 0, 21, 27, 0, 21, 28, 0, 21, 29, 0, 21, 30, 0, 21, 31, 0, 21, 32, 0, 21, 33, 0, 21, 34, 0, 21, 35, 0, 22, 65504, 0, 22, 65505, 0, 22, 65506, 0, 22, 65507, 0, 22, 65508, 0, 22, 65509, 0, 22, 65510, 0, 22, 65511, 0, 22, 65512, 0, 22, 65513, 0, 22, 65514, 0, 22, 65515, 0, 22, 65516, 0, 22, 65517, 0, 22, 65518, 0, 22, 65519, 0, 22, 65520, 0, 22, 65521, 0, 22, 65522, 0, 22, 65523, 0, 22, 65524, 0, 22, 65525, 0, 22, 65526, 0, 22, 65527, 0, 22, 65528, 0, 22, 65529, 0, 22, 65530, 0, 22, 65531, 0, 22, 65532, 0, 22, 65533, 0, 22, 65534, 0, 22, 65535, 0, 22, 0, 0, 22, 1, 0, 22, 2, 0, 22, 3, 0, 22, 4, 0, 22, 5, 0, 22, 6, 0, 22, 7, 0, 22, 8, 0, 22, 9, 0, 22, 10, 0, 22, 11, 0, 22, 12, 0, 22, 13, 0, 22, 14, 0, 22, 15, 0, 22, 16, 0, 22, 17, 0, 22, 18, 0, 22, 19, 0, 22, 20, 0, 22, 21, 0, 22, 22, 0, 22, 23, 0, 22, 24, 0, 22, 25, 0, 22, 26, 0, 22, 27, 0, 22, 28, 0, 22, 29, 0, 22, 30, 0, 22, 31, 0, 22, 32, 0, 22, 33, 0, 22, 34, 0, 22, 35, 0, 23, 65504, 0, 23, 65505, 0, 23, 65506, 0, 23, 65507, 0, 23, 65508, 0, 23, 65509, 0, 23, 65510, 0, 23, 65511, 0, 23, 65512, 0, 23, 65513, 0, 23, 65514, 0, 23, 65515, 0, 23, 65516, 0, 23, 65517, 0, 23, 65518, 0, 23, 65519, 0, 23, 65520, 0, 23, 65521, 0, 23, 65522, 0, 23, 65523, 0, 23, 65524, 0, 23, 65525, 0, 23, 65526, 0, 23, 65527, 0, 23, 65528, 0, 23, 65529, 0, 23, 65530, 0, 23, 65531, 0, 23, 65532, 0, 23, 65533, 0, 23, 65534, 0, 23, 65535, 0, 23, 0, 0, 23, 1, 0, 23, 2, 0, 23, 3, 0, 23, 4, 0, 23, 5, 0, 23, 6, 0, 23, 7, 0, 23, 8, 0, 23, 9, 0, 23, 10, 0, 23, 11, 0, 23, 12, 0, 23, 13, 0, 23, 14, 0, 23, 15, 0, 23, 16, 0, 23, 17, 0, 23, 18, 0, 23, 19, 0, 23, 20, 0, 23, 21, 0, 23, 22, 0, 23, 23, 0, 23, 24, 0, 23, 25, 0, 23, 26, 0, 23, 27, 0, 23, 28, 0, 23, 29, 0, 23, 30, 0, 23, 31, 0, 23, 32, 0, 23, 33, 0, 23, 34, 0, 23, 35, 0, 24, 65504, 0, 24, 65505, 0, 24, 65506, 0, 24, 65507, 0, 24, 65508, 0, 24, 65509, 0, 24, 65510, 0, 24, 65511, 0, 24, 65512, 0, 24, 65513, 0, 24, 65514, 0, 24, 65515, 0, 24, 65516, 0, 24, 65517, 0, 24, 65518, 0, 24, 65519, 0, 24, 65520, 0, 24, 65521, 0, 24, 65522, 0, 24, 65523, 0, 24, 65524, 0, 24, 65525, 0, 24, 65526, 0, 24, 65527, 0, 24, 65528, 0, 24, 65529, 0, 24, 65530, 0, 24, 65531, 0, 24, 65532, 0, 24, 65533, 0, 24, 65534, 0, 24, 65535, 0, 24, 0, 0, 24, 1, 0, 24, 2, 0, 24, 3, 0, 24, 4, 0, 24, 5, 0, 24, 6, 0, 24, 7, 0, 24, 8, 0, 24, 9, 0, 24, 10, 0, 24, 11, 0, 24, 12, 0, 24, 13, 0, 24, 14, 0, 24, 15, 0, 24, 16, 0, 24, 17, 0, 24, 18, 0, 24, 19, 0, 24, 20, 0, 24, 21, 0, 24, 22, 0, 24, 23, 0, 24, 24, 0, 24, 25, 0, 24, 26, 0, 24, 27, 0, 24, 28, 0, 24, 29, 0, 24, 30, 0, 24, 31, 0, 24, 32, 0, 24, 33, 0, 24, 34, 0, 24, 35, 0, 25, 65504, 0, 25, 65505, 0, 25, 65506, 0, 25, 65507, 0, 25, 65508, 0, 25, 65509, 0, 25, 65510, 0, 25, 65511, 0, 25, 65512, 0, 25, 65513, 0, 25, 65514, 0, 25, 65515, 0, 25, 65516, 0, 25, 65517, 0, 25, 65518, 0, 25, 65519, 0, 25, 65520, 0, 25, 65521, 0, 25, 65522, 0, 25, 65523, 0, 25, 65524, 0, 25, 65525, 0, 25, 65526, 0, 25, 65527, 0, 25, 65528, 0, 25, 65529, 0, 25, 65530, 0, 25, 65531, 0, 25, 65532, 0, 25, 65533, 0, 25, 65534, 0, 25, 65535, 0, 25, 0, 0, 25, 1, 0, 25, 2, 0, 25, 3, 0, 25, 4, 0, 25, 5, 0, 25, 6, 0, 25, 7, 0, 25, 8, 0, 25, 9, 0, 25, 10, 0, 25, 11, 0, 25, 12, 0, 25, 13, 0, 25, 14, 0, 25, 15, 0, 25, 16, 0, 25, 17, 0, 25, 18, 0, 25, 19, 0, 25, 20, 0, 25, 21, 0, 25, 22, 0, 25, 23, 0, 25, 24, 0, 25, 25, 0, 25, 26, 0, 25, 27, 0, 25, 28, 0, 25, 29, 0, 25, 30, 0, 25, 31, 0, 25, 32, 0, 25, 33, 0, 25, 34, 0, 25, 35, 0, 26, 65504, 0, 26, 65505, 0, 26, 65506, 0, 26, 65507, 0, 26, 65508, 0, 26, 65509, 0, 26, 65510, 0, 26, 65511, 0, 26, 65512, 0, 26, 65513, 0, 26, 65514, 0, 26, 65515, 0, 26, 65516, 0, 26, 65517, 0, 26, 65518, 0, 26, 65519, 0, 26, 65520, 0, 26, 65521, 0, 26, 65522, 0, 26, 65523, 0, 26, 65524, 0, 26, 65525, 0, 26, 65526, 0, 26, 65527, 0, 26, 65528, 0, 26, 65529, 0, 26, 65530, 0, 26, 65531, 0, 26, 65532, 0, 26, 65533, 0, 26, 65534, 0, 26, 65535, 0, 26, 0, 0, 26, 1, 0, 26, 2, 0, 26, 3, 0, 26, 4, 0, 26, 5, 0, 26, 6, 0, 26, 7, 0, 26, 8, 0, 26, 9, 0, 26, 10, 0, 26, 11, 0, 26, 12, 0, 26, 13, 0, 26, 14, 0, 26, 15, 0, 26, 16, 0, 26, 17, 0, 26, 18, 0, 26, 19, 0, 26, 20, 0, 26, 21, 0, 26, 22, 0, 26, 23, 0, 26, 24, 0, 26, 25, 0, 26, 26, 0, 26, 27, 0, 26, 28, 0, 26, 29, 0, 26, 30, 0, 26, 31, 0, 26, 32, 0, 26, 33, 0, 26, 34, 0, 26, 35, 0, 27, 65504, 0, 27, 65505, 0, 27, 65506, 0, 27, 65507, 0, 27, 65508, 0, 27, 65509, 0, 27, 65510, 0, 27, 65511, 0, 27, 65512, 0, 27, 65513, 0, 27, 65514, 0, 27, 65515, 0, 27, 65516, 0, 27, 65517, 0, 27, 65518, 0, 27, 65519, 0, 27, 65520, 0, 27, 65521, 0, 27, 65522, 0, 27, 65523, 0, 27, 65524, 0, 27, 65525, 0, 27, 65526, 0, 27, 65527, 0, 27, 65528, 0, 27, 65529, 0, 27, 65530, 0, 27, 65531, 0, 27, 65532, 0, 27, 65533, 0, 27, 65534, 0, 27, 65535, 0, 27, 0, 0, 27, 1, 0, 27, 2, 0, 27, 3, 0, 27, 4, 0, 27, 5, 0, 27, 6, 0, 27, 7, 0, 27, 8, 0, 27, 9, 0, 27, 10, 0, 27, 11, 0, 27, 12, 0, 27, 13, 0, 27, 14, 0, 27, 15, 0, 27, 16, 0, 27, 17, 0, 27, 18, 0, 27, 19, 0, 27, 20, 0, 27, 21, 0, 27, 22, 0, 27, 23, 0, 27, 24, 0, 27, 25, 0, 27, 26, 0, 27, 27, 0, 27, 28, 0, 27, 29, 0, 27, 30, 0, 27, 31, 0, 27, 32, 0, 27, 33, 0, 27, 34, 0, 27, 35, 0, 28, 65504, 0, 28, 65505, 0, 28, 65506, 0, 28, 65507, 0, 28, 65508, 0, 28, 65509, 0, 28, 65510, 0, 28, 65511, 0, 28, 65512, 0, 28, 65513, 0, 28, 65514, 0, 28, 65515, 0, 28, 65516, 0, 28, 65517, 0, 28, 65518, 0, 28, 65519, 0, 28, 65520, 0, 28, 65521, 0, 28, 65522, 0, 28, 65523, 0, 28, 65524, 0, 28, 65525, 0, 28, 65526, 0, 28, 65527, 0, 28, 65528, 0, 28, 65529, 0, 28, 65530, 0, 28, 65531, 0, 28, 65532, 0, 28, 65533, 0, 28, 65534, 0, 28, 65535, 0, 28, 0, 0, 28, 1, 0, 28, 2, 0, 28, 3, 0, 28, 4, 0, 28, 5, 0, 28, 6, 0, 28, 7, 0, 28, 8, 0, 28, 9, 0, 28, 10, 0, 28, 11, 0, 28, 12, 0, 28, 13, 0, 28, 14, 0, 28, 15, 0, 28, 16, 0, 28, 17, 0, 28, 18, 0, 28, 19, 0, 28, 20, 0, 28, 21, 0, 28, 22, 0, 28, 23, 0, 28, 24, 0, 28, 25, 0, 28, 26, 0, 28, 27, 0, 28, 28, 0, 28, 29, 0, 28, 30, 0, 28, 31, 0, 28, 32, 0, 28, 33, 0, 28, 34, 0, 28, 35, 0, 29, 65504, 0, 29, 65505, 0, 29, 65506, 0, 29, 65507, 0, 29, 65508, 0, 29, 65509, 0, 29, 65510, 0, 29, 65511, 0, 29, 65512, 0, 29, 65513, 0, 29, 65514, 0, 29, 65515, 0, 29, 65516, 0, 29, 65517, 0, 29, 65518, 0, 29, 65519, 0, 29, 65520, 0, 29, 65521, 0, 29, 65522, 0, 29, 65523, 0, 29, 65524, 0, 29, 65525, 0, 29, 65526, 0, 29, 65527, 0, 29, 65528, 0, 29, 65529, 0, 29, 65530, 0, 29, 65531, 0, 29, 65532, 0, 29, 65533, 0, 29, 65534, 0, 29, 65535, 0, 29, 0, 0, 29, 1, 0, 29, 2, 0, 29, 3, 0, 29, 4, 0, 29, 5, 0, 29, 6, 0, 29, 7, 0, 29, 8, 0, 29, 9, 0, 29, 10, 0, 29, 11, 0, 29, 12, 0, 29, 13, 0, 29, 14, 0, 29, 15, 0, 29, 16, 0, 29, 17, 0, 29, 18, 0, 29, 19, 0, 29, 20, 0, 29, 21, 0, 29, 22, 0, 29, 23, 0, 29, 24, 0, 29, 25, 0, 29, 26, 0, 29, 27, 0, 29, 28, 0, 29, 29, 0, 29, 30, 0, 29, 31, 0, 29, 32, 0, 29, 33, 0, 29, 34, 0, 29, 35, 0, 30, 65504, 0, 30, 65505, 0, 30, 65506, 0, 30, 65507, 0, 30, 65508, 0, 30, 65509, 0, 30, 65510, 0, 30, 65511, 0, 30, 65512, 0, 30, 65513, 0, 30, 65514, 0, 30, 65515, 0, 30, 65516, 0, 30, 65517, 0, 30, 65518, 0, 30, 65519, 0, 30, 65520, 0, 30, 65521, 0, 30, 65522, 0, 30, 65523, 0, 30, 65524, 0, 30, 65525, 0, 30, 65526, 0, 30, 65527, 0, 30, 65528, 0, 30, 65529, 0, 30, 65530, 0, 30, 65531, 0, 30, 65532, 0, 30, 65533, 0, 30, 65534, 0, 30, 65535, 0, 30, 0, 0, 30, 1, 0, 30, 2, 0, 30, 3, 0, 30, 4, 0, 30, 5, 0, 30, 6, 0, 30, 7, 0, 30, 8, 0, 30, 9, 0, 30, 10, 0, 30, 11, 0, 30, 12, 0, 30, 13, 0, 30, 14, 0, 30, 15, 0, 30, 16, 0, 30, 17, 0, 30, 18, 0, 30, 19, 0, 30, 20, 0, 30, 21, 0, 30, 22, 0, 30, 23, 0, 30, 24, 0, 30, 25, 0, 30, 26, 0, 30, 27, 0, 30, 28, 0, 30, 29, 0, 30, 30, 0, 30, 31, 0, 30, 32, 0, 30, 33, 0, 30, 34, 0, 30, 35, 0, 31, 65504, 0, 31, 65505, 0, 31, 65506, 0, 31, 65507, 0, 31, 65508, 0, 31, 65509, 0, 31, 65510, 0, 31, 65511, 0, 31, 65512, 0, 31, 65513, 0, 31, 65514, 0, 31, 65515, 0, 31, 65516, 0, 31, 65517, 0, 31, 65518, 0, 31, 65519, 0, 31, 65520, 0, 31, 65521, 0, 31, 65522, 0, 31, 65523, 0, 31, 65524, 0, 31, 65525, 0, 31, 65526, 0, 31, 65527, 0, 31, 65528, 0, 31, 65529, 0, 31, 65530, 0, 31, 65531, 0, 31, 65532, 0, 31, 65533, 0, 31, 65534, 0, 31, 65535, 0, 31, 0, 0, 31, 1, 0, 31, 2, 0, 31, 3, 0, 31, 4, 0, 31, 5, 0, 31, 6, 0, 31, 7, 0, 31, 8, 0, 31, 9, 0, 31, 10, 0, 31, 11, 0, 31, 12, 0, 31, 13, 0, 31, 14, 0, 31, 15, 0, 31, 16, 0, 31, 17, 0, 31, 18, 0, 31, 19, 0, 31, 20, 0, 31, 21, 0, 31, 22, 0, 31, 23, 0, 31, 24, 0, 31, 25, 0, 31, 26, 0, 31, 27, 0, 31, 28, 0, 31, 29, 0, 31, 30, 0, 31, 31, 0, 31, 32, 0, 31, 33, 0, 31, 34, 0, 31, 35, 0, 32, 65504, 0, 32, 65505, 0, 32, 65506, 0, 32, 65507, 0, 32, 65508, 0, 32, 65509, 0, 32, 65510, 0, 32, 65511, 0, 32, 65512, 0, 32, 65513, 0, 32, 65514, 0, 32, 65515, 0, 32, 65516, 0, 32, 65517, 0, 32, 65518, 0, 32, 65519, 0, 32, 65520, 0, 32, 65521, 0, 32, 65522, 0, 32, 65523, 0, 32, 65524, 0, 32, 65525, 0, 32, 65526, 0, 32, 65527, 0, 32, 65528, 0, 32, 65529, 0, 32, 65530, 0, 32, 65531, 0, 32, 65532, 0, 32, 65533, 0, 32, 65534, 0, 32, 65535, 0, 32, 0, 0, 32, 1, 0, 32, 2, 0, 32, 3, 0, 32, 4, 0, 32, 5, 0, 32, 6, 0, 32, 7, 0, 32, 8, 0, 32, 9, 0, 32, 10, 0, 32, 11, 0, 32, 12, 0, 32, 13, 0, 32, 14, 0, 32, 15, 0, 32, 16, 0, 32, 17, 0, 32, 18, 0, 32, 19, 0, 32, 20, 0, 32, 21, 0, 32, 22, 0, 32, 23, 0, 32, 24, 0, 32, 25, 0, 32, 26, 0, 32, 27, 0, 32, 28, 0, 32, 29, 0, 32, 30, 0, 32, 31, 0, 32, 32, 0, 32, 33, 0, 32, 34, 0, 32, 35, 0, 33, 65504, 0, 33, 65505, 0, 33, 65506, 0, 33, 65507, 0, 33, 65508, 0, 33, 65509, 0, 33, 65510, 0, 33, 65511, 0, 33, 65512, 0, 33, 65513, 0, 33, 65514, 0, 33, 65515, 0, 33, 65516, 0, 33, 65517, 0, 33, 65518, 0, 33, 65519, 0, 33, 65520, 0, 33, 65521, 0, 33, 65522, 0, 33, 65523, 0, 33, 65524, 0, 33, 65525, 0, 33, 65526, 0, 33, 65527, 0, 33, 65528, 0, 33, 65529, 0, 33, 65530, 0, 33, 65531, 0, 33, 65532, 0, 33, 65533, 0, 33, 65534, 0, 33, 65535, 0, 33, 0, 0, 33, 1, 0, 33, 2, 0, 33, 3, 0, 33, 4, 0, 33, 5, 0, 33, 6, 0, 33, 7, 0, 33, 8, 0, 33, 9, 0, 33, 10, 0, 33, 11, 0, 33, 12, 0, 33, 13, 0, 33, 14, 0, 33, 15, 0, 33, 16, 0, 33, 17, 0, 33, 18, 0, 33, 19, 0, 33, 20, 0, 33, 21, 0, 33, 22, 0, 33, 23, 0, 33, 24, 0, 33, 25, 0, 33, 26, 0, 33, 27, 0, 33, 28, 0, 33, 29, 0, 33, 30, 0, 33, 31, 0, 33, 32, 0, 33, 33, 0, 33, 34, 0, 33, 35, 0, 34, 65504, 0, 34, 65505, 0, 34, 65506, 0, 34, 65507, 0, 34, 65508, 0, 34, 65509, 0, 34, 65510, 0, 34, 65511, 0, 34, 65512, 0, 34, 65513, 0, 34, 65514, 0, 34, 65515, 0, 34, 65516, 0, 34, 65517, 0, 34, 65518, 0, 34, 65519, 0, 34, 65520, 0, 34, 65521, 0, 34, 65522, 0, 34, 65523, 0, 34, 65524, 0, 34, 65525, 0, 34, 65526, 0, 34, 65527, 0, 34, 65528, 0, 34, 65529, 0, 34, 65530, 0, 34, 65531, 0, 34, 65532, 0, 34, 65533, 0, 34, 65534, 0, 34, 65535, 0, 34, 0, 0, 34, 1, 0, 34, 2, 0, 34, 3, 0, 34, 4, 0, 34, 5, 0, 34, 6, 0, 34, 7, 0, 34, 8, 0, 34, 9, 0, 34, 10, 0, 34, 11, 0, 34, 12, 0, 34, 13, 0, 34, 14, 0, 34, 15, 0, 34, 16, 0, 34, 17, 0, 34, 18, 0, 34, 19, 0, 34, 20, 0, 34, 21, 0, 34, 22, 0, 34, 23, 0, 34, 24, 0, 34, 25, 0, 34, 26, 0, 34, 27, 0, 34, 28, 0, 34, 29, 0, 34, 30, 0, 34, 31, 0, 34, 32, 0, 34, 33, 0, 34, 34, 0, 34, 35, 0, 35, 65504, 0, 35, 65505, 0, 35, 65506, 0, 35, 65507, 0, 35, 65508, 0, 35, 65509, 0, 35, 65510, 0, 35, 65511, 0, 35, 65512, 0, 35, 65513, 0, 35, 65514, 0, 35, 65515, 0, 35, 65516, 0, 35, 65517, 0, 35, 65518, 0, 35, 65519, 0, 35, 65520, 0, 35, 65521, 0, 35, 65522, 0, 35, 65523, 0, 35, 65524, 0, 35, 65525, 0, 35, 65526, 0, 35, 65527, 0, 35, 65528, 0, 35, 65529, 0, 35, 65530, 0, 35, 65531, 0, 35, 65532, 0, 35, 65533, 0, 35, 65534, 0, 35, 65535, 0, 35, 0, 0, 35, 1, 0, 35, 2, 0, 35, 3, 0, 35, 4, 0, 35, 5, 0, 35, 6, 0, 35, 7, 0, 35, 8, 0, 35, 9, 0, 35, 10, 0, 35, 11, 0, 35, 12, 0, 35, 13, 0, 35, 14, 0, 35, 15, 0, 35, 16, 0, 35, 17, 0, 35, 18, 0, 35, 19, 0, 35, 20, 0, 35, 21, 0, 35, 22, 0, 35, 23, 0, 35, 24, 0, 35, 25, 0, 35, 26, 0, 35, 27, 0, 35, 28, 0, 35, 29, 0, 35, 30, 0, 35, 31, 0, 35, 32, 0, 35, 33, 0, 35, 34, 0, 35, 35, 0, 2, 65534, 1, 3, 65532, 1, 5, 65534, 1, 5, 65535, 1, 5, 0, 1, 5, 1, 1, 0, 65532, 1, 1, 65532, 1, 1, 65533, 1, 1, 65530, 1, 65521, 6, 0, 65521, 7, 0, 65521, 8, 0, 65521, 9, 0, 65521, 10, 0, 65521, 11, 0, 65521, 12, 0, 65521, 13, 0, 65521, 14, 0, 65521, 15, 0, 65521, 16, 0, 65521, 17, 0, 65521, 18, 0, 65521, 19, 0, 65521, 20, 0, 65521, 21, 0, 65521, 22, 0, 65521, 23, 0, 65521, 24, 0, 65521, 25, 0, 65521, 26, 0, 65521, 27, 0, 65521, 28, 0, 65521, 29, 0, 65521, 30, 0, 65521, 31, 0, 65521, 32, 0, 65521, 33, 0, 65521, 34, 0, 65521, 35, 0, 65522, 6, 1, 65523, 6, 1, 65524, 6, 1, 65525, 6, 1, 65528, 6, 1, 65527, 6, 1, 65526, 6, 1, 65529, 6, 1, 65530, 6, 1, 65531, 6, 1, 65532, 6, 1, 65533, 6, 1, 65534, 6, 1, 65535, 6, 1, 0, 6, 1, 1, 6, 1, 2, 6, 1, 3, 6, 1, 4, 6, 1, 5, 6, 1, 6, 6, 1, 7, 6, 1, 8, 6, 1, 9, 6, 1, 10, 6, 1, 11, 6, 1, 12, 6, 1, 13, 6, 1, 14, 6, 1, 65457, 65467, 0, 65457, 65468, 0, 65457, 65469, 0, 65457, 65470, 0, 65457, 65471, 0, 65457, 65472, 0, 65457, 65473, 0, 65457, 65474, 0, 65457, 65475, 0, 65457, 65476, 0, 65457, 65477, 0, 65457, 65478, 0, 65457, 65479, 0, 65457, 65480, 0, 65457, 65481, 0, 65457, 65482, 0, 65457, 65483, 0, 65457, 65484, 0, 65457, 65485, 0, 65457, 65486, 0, 65457, 65487, 0, 65457, 65488, 0, 65457, 65489, 0, 65457, 65490, 0, 65457, 65491, 0, 65457, 65492, 0, 65457, 65493, 0, 65457, 65494, 0, 65457, 65495, 0, 65457, 65496, 0, 65457, 65497, 0, 65457, 65498, 0, 65457, 65499, 0, 65457, 65500, 0, 65457, 65501, 0, 65457, 65502, 0, 65457, 65503, 0, 65457, 65504, 0, 65457, 65505, 0, 65457, 65506, 0, 65457, 65507, 0, 65457, 65508, 0, 65457, 65509, 0, 65457, 65510, 0, 65457, 65511, 0, 65457, 65512, 0, 65457, 65513, 0, 65457, 65514, 0, 65457, 65515, 0, 65457, 65516, 0, 65457, 65517, 0, 65457, 65518, 0, 65457, 65519, 0, 65457, 65520, 0, 65457, 65521, 0, 65457, 65522, 0, 65457, 65523, 0, 65457, 65524, 0, 65457, 65525, 0, 65457, 65526, 0, 65457, 65527, 0, 65457, 65528, 0, 65457, 65529, 0, 65457, 65530, 0, 65457, 65531, 0, 65457, 65532, 0, 65457, 65533, 0, 65457, 65534, 0, 65457, 65535, 0, 65457, 0, 0, 65457, 1, 0, 65457, 2, 0, 65457, 3, 0, 65457, 4, 0, 65457, 5, 0, 65457, 6, 0, 65457, 7, 0, 65457, 8, 0, 65457, 9, 0, 65457, 10, 0, 65457, 11, 0, 65457, 12, 0, 65457, 13, 0, 65457, 14, 0, 65457, 15, 0, 65457, 16, 0, 65457, 17, 0, 65457, 18, 0, 65457, 19, 0, 65457, 20, 0, 65457, 21, 0, 65457, 22, 0, 65457, 23, 0, 65457, 24, 0, 65457, 25, 0, 65457, 26, 0, 65457, 27, 0, 65457, 28, 0, 65457, 29, 0, 65457, 30, 0, 65457, 31, 0, 65457, 32, 0, 65457, 33, 0, 65457, 34, 0, 65457, 35, 0, 65457, 36, 0, 65457, 37, 0, 65457, 38, 0, 65457, 39, 0, 65457, 40, 0, 65457, 41, 0, 65457, 42, 0, 65457, 43, 0, 65457, 44, 0, 65457, 45, 0, 65457, 46, 0, 65457, 47, 0, 65457, 48, 0, 65457, 49, 0, 65457, 50, 0, 65457, 51, 0, 65457, 52, 0, 65457, 53, 0, 65457, 54, 0, 65457, 55, 0, 65457, 56, 0, 65457, 57, 0, 65457, 58, 0, 65457, 59, 0, 65457, 60, 0, 65457, 61, 0, 65457, 62, 0, 65457, 63, 0, 65458, 65467, 0, 65458, 65468, 0, 65458, 65469, 0, 65458, 65470, 0, 65458, 65471, 0, 65458, 65472, 0, 65458, 65473, 0, 65458, 65474, 0, 65458, 65475, 0, 65458, 65476, 0, 65458, 65477, 0, 65458, 65478, 0, 65458, 65479, 0, 65458, 65480, 0, 65458, 65481, 0, 65458, 65482, 0, 65458, 65483, 0, 65458, 65484, 0, 65458, 65485, 0, 65458, 65486, 0, 65458, 65487, 0, 65458, 65488, 0, 65458, 65489, 0, 65458, 65490, 0, 65458, 65491, 0, 65458, 65492, 0, 65458, 65493, 0, 65458, 65494, 0, 65458, 65495, 0, 65458, 65496, 0, 65458, 65497, 0, 65458, 65498, 0, 65458, 65499, 0, 65458, 65500, 0, 65458, 65501, 0, 65458, 65502, 0, 65458, 65503, 0, 65458, 65504, 0, 65458, 65505, 0, 65458, 65506, 0, 65458, 65507, 0, 65458, 65508, 0, 65458, 65509, 0, 65458, 65510, 0, 65458, 65511, 0, 65458, 65512, 0, 65458, 65513, 0, 65458, 65514, 0, 65458, 65515, 0, 65458, 65516, 0, 65458, 65517, 0, 65458, 65518, 0, 65458, 65519, 0, 65458, 65520, 0, 65458, 65521, 0, 65458, 65522, 0, 65458, 65523, 0, 65458, 65524, 0, 65458, 65525, 0, 65458, 65526, 0, 65458, 65527, 0, 65458, 65528, 0, 65458, 65529, 0, 65458, 65530, 0, 65458, 65531, 0, 65458, 65532, 0, 65458, 65533, 0, 65458, 65534, 0, 65458, 65535, 0, 65458, 0, 0, 65458, 1, 0, 65458, 2, 0, 65458, 3, 0, 65458, 4, 0, 65458, 5, 0, 65458, 6, 0, 65458, 7, 0, 65458, 8, 0, 65458, 9, 0, 65458, 10, 0, 65458, 11, 0, 65458, 12, 0, 65458, 13, 0, 65458, 14, 0, 65458, 15, 0, 65458, 16, 0, 65458, 17, 0, 65458, 18, 0, 65458, 19, 0, 65458, 20, 0, 65458, 21, 0, 65458, 22, 0, 65458, 23, 0, 65458, 24, 0, 65458, 25, 0, 65458, 26, 0, 65458, 27, 0, 65458, 28, 0, 65458, 29, 0, 65458, 30, 0, 65458, 31, 0, 65458, 32, 0, 65458, 33, 0, 65458, 34, 0, 65458, 35, 0, 65458, 36, 0, 65458, 37, 0, 65458, 38, 0, 65458, 39, 0, 65458, 40, 0, 65458, 41, 0, 65458, 42, 0, 65458, 43, 0, 65458, 44, 0, 65458, 45, 0, 65458, 46, 0, 65458, 47, 0, 65458, 48, 0, 65458, 49, 0, 65458, 50, 0, 65458, 51, 0, 65458, 52, 0, 65458, 53, 0, 65458, 54, 0, 65458, 55, 0, 65458, 56, 0, 65458, 57, 0, 65458, 58, 0, 65458, 59, 0, 65458, 60, 0, 65458, 61, 0, 65458, 62, 0, 65458, 63, 0, 65459, 65467, 0, 65459, 65468, 0, 65459, 65469, 0, 65459, 65470, 0, 65459, 65471, 0, 65459, 65472, 0, 65459, 65473, 0, 65459, 65474, 0, 65459, 65475, 0, 65459, 65476, 0, 65459, 65477, 0, 65459, 65478, 0, 65459, 65479, 0, 65459, 65480, 0, 65459, 65481, 0, 65459, 65482, 0, 65459, 65483, 0, 65459, 65484, 0, 65459, 65485, 0, 65459, 65486, 0, 65459, 65487, 0, 65459, 65488, 0, 65459, 65489, 0, 65459, 65490, 0, 65459, 65491, 0, 65459, 65492, 0, 65459, 65493, 0, 65459, 65494, 0, 65459, 65495, 0, 65459, 65496, 0, 65459, 65497, 0, 65459, 65498, 0, 65459, 65499, 0, 65459, 65500, 0, 65459, 65501, 0, 65459, 65502, 0, 65459, 65503, 0, 65459, 65504, 0, 65459, 65505, 0, 65459, 65506, 0, 65459, 65507, 0, 65459, 65508, 0, 65459, 65509, 0, 65459, 65510, 0, 65459, 65511, 0, 65459, 65512, 0, 65459, 65513, 0, 65459, 65514, 0, 65459, 65515, 0, 65459, 65516, 0, 65459, 65517, 0, 65459, 65518, 0, 65459, 65519, 0, 65459, 65520, 0, 65459, 65521, 0, 65459, 65522, 0, 65459, 65523, 0, 65459, 65524, 0, 65459, 65525, 0, 65459, 65526, 0, 65459, 65527, 0, 65459, 65528, 0, 65459, 65529, 0, 65459, 65530, 0, 65459, 65531, 0, 65459, 65532, 0, 65459, 65533, 0, 65459, 65534, 0, 65459, 65535, 0, 65459, 0, 0, 65459, 1, 0, 65459, 2, 0, 65459, 3, 0, 65459, 4, 0, 65459, 5, 0, 65459, 6, 0, 65459, 7, 0, 65459, 8, 0, 65459, 9, 0, 65459, 10, 0, 65459, 11, 0, 65459, 12, 0, 65459, 13, 0, 65459, 14, 0, 65459, 15, 0, 65459, 16, 0, 65459, 17, 0, 65459, 18, 0, 65459, 19, 0, 65459, 20, 0, 65459, 21, 0, 65459, 22, 0, 65459, 23, 0, 65459, 24, 0, 65459, 25, 0, 65459, 26, 0, 65459, 27, 0, 65459, 28, 0, 65459, 29, 0, 65459, 30, 0, 65459, 31, 0, 65459, 32, 0, 65459, 33, 0, 65459, 34, 0, 65459, 35, 0, 65459, 36, 0, 65459, 37, 0, 65459, 38, 0, 65459, 39, 0, 65459, 40, 0, 65459, 41, 0, 65459, 42, 0, 65459, 43, 0, 65459, 44, 0, 65459, 45, 0, 65459, 46, 0, 65459, 47, 0, 65459, 48, 0, 65459, 49, 0, 65459, 50, 0, 65459, 51, 0, 65459, 52, 0, 65459, 53, 0, 65459, 54, 0, 65459, 55, 0, 65459, 56, 0, 65459, 57, 0, 65459, 58, 0, 65459, 59, 0, 65459, 60, 0, 65459, 61, 0, 65459, 62, 0, 65459, 63, 0, 65460, 65467, 0, 65460, 65468, 0, 65460, 65469, 0, 65460, 65470, 0, 65460, 65471, 0, 65460, 65472, 0, 65460, 65473, 0, 65460, 65474, 0, 65460, 65475, 0, 65460, 65476, 0, 65460, 65477, 0, 65460, 65478, 0, 65460, 65479, 0, 65460, 65480, 0, 65460, 65481, 0, 65460, 65482, 0, 65460, 65483, 0, 65460, 65484, 0, 65460, 65485, 0, 65460, 65486, 0, 65460, 65487, 0, 65460, 65488, 0, 65460, 65489, 0, 65460, 65490, 0, 65460, 65491, 0, 65460, 65492, 0, 65460, 65493, 0, 65460, 65494, 0, 65460, 65495, 0, 65460, 65496, 0, 65460, 65497, 0, 65460, 65498, 0, 65460, 65499, 0, 65460, 65500, 0, 65460, 65501, 0, 65460, 65502, 0, 65460, 65503, 0, 65460, 65504, 0, 65460, 65505, 0, 65460, 65506, 0, 65460, 65507, 0, 65460, 65508, 0, 65460, 65509, 0, 65460, 65510, 0, 65460, 65511, 0, 65460, 65512, 0, 65460, 65513, 0, 65460, 65514, 0, 65460, 65515, 0, 65460, 65516, 0, 65460, 65517, 0, 65460, 65518, 0, 65460, 65519, 0, 65460, 65520, 0, 65460, 65521, 0, 65460, 65522, 0, 65460, 65523, 0, 65460, 65524, 0, 65460, 65525, 0, 65460, 65526, 0, 65460, 65527, 0, 65460, 65528, 0, 65460, 65529, 0, 65460, 65530, 0, 65460, 65531, 0, 65460, 65532, 0, 65460, 65533, 0, 65460, 65534, 0, 65460, 65535, 0, 65460, 0, 0, 65460, 1, 0, 65460, 2, 0, 65460, 3, 0, 65460, 4, 0, 65460, 5, 0, 65460, 6, 0, 65460, 7, 0, 65460, 8, 0, 65460, 9, 0, 65460, 10, 0, 65460, 11, 0, 65460, 12, 0, 65460, 13, 0, 65460, 14, 0, 65460, 15, 0, 65460, 16, 0, 65460, 17, 0, 65460, 18, 0, 65460, 19, 0, 65460, 20, 0, 65460, 21, 0, 65460, 22, 0, 65460, 23, 0, 65460, 24, 0, 65460, 25, 0, 65460, 26, 0, 65460, 27, 0, 65460, 28, 0, 65460, 29, 0, 65460, 30, 0, 65460, 31, 0, 65460, 32, 0, 65460, 33, 0, 65460, 34, 0, 65460, 35, 0, 65460, 36, 0, 65460, 37, 0, 65460, 38, 0, 65460, 39, 0, 65460, 40, 0, 65460, 41, 0, 65460, 42, 0, 65460, 43, 0, 65460, 44, 0, 65460, 45, 0, 65460, 46, 0, 65460, 47, 0, 65460, 48, 0, 65460, 49, 0, 65460, 50, 0, 65460, 51, 0, 65460, 52, 0, 65460, 53, 0, 65460, 54, 0, 65460, 55, 0, 65460, 56, 0, 65460, 57, 0, 65460, 58, 0, 65460, 59, 0, 65460, 60, 0, 65460, 61, 0, 65460, 62, 0, 65460, 63, 0, 65461, 65467, 0, 65461, 65468, 0, 65461, 65469, 0, 65461, 65470, 0, 65461, 65471, 0, 65461, 65472, 0, 65461, 65473, 0, 65461, 65474, 0, 65461, 65475, 0, 65461, 65476, 0, 65461, 65477, 0, 65461, 65478, 0, 65461, 65479, 0, 65461, 65480, 0, 65461, 65481, 0, 65461, 65482, 0, 65461, 65483, 0, 65461, 65484, 0, 65461, 65485, 0, 65461, 65486, 0, 65461, 65487, 0, 65461, 65488, 0, 65461, 65489, 0, 65461, 65490, 0, 65461, 65491, 0, 65461, 65492, 0, 65461, 65493, 0, 65461, 65494, 0, 65461, 65495, 0, 65461, 65496, 0, 65461, 65497, 0, 65461, 65498, 0, 65461, 65499, 0, 65461, 65500, 0, 65461, 65501, 0, 65461, 65502, 0, 65461, 65503, 0, 65461, 65504, 0, 65461, 65505, 0, 65461, 65506, 0, 65461, 65507, 0, 65461, 65508, 0, 65461, 65509, 0, 65461, 65510, 0, 65461, 65511, 0, 65461, 65512, 0, 65461, 65513, 0, 65461, 65514, 0, 65461, 65515, 0, 65461, 65516, 0, 65461, 65517, 0, 65461, 65518, 0, 65461, 65519, 0, 65461, 65520, 0, 65461, 65521, 0, 65461, 65522, 0, 65461, 65523, 0, 65461, 65524, 0, 65461, 65525, 0, 65461, 65526, 0, 65461, 65527, 0, 65461, 65528, 0, 65461, 65529, 0, 65461, 65530, 0, 65461, 65531, 0, 65461, 65532, 0, 65461, 65533, 0, 65461, 65534, 0, 65461, 65535, 0, 65461, 0, 0, 65461, 1, 0, 65461, 2, 0, 65461, 3, 0, 65461, 4, 0, 65461, 5, 0, 65461, 6, 0, 65461, 7, 0, 65461, 8, 0, 65461, 9, 0, 65461, 10, 0, 65461, 11, 0, 65461, 12, 0, 65461, 13, 0, 65461, 14, 0, 65461, 15, 0, 65461, 16, 0, 65461, 17, 0, 65461, 18, 0, 65461, 19, 0, 65461, 20, 0, 65461, 21, 0, 65461, 22, 0, 65461, 23, 0, 65461, 24, 0, 65461, 25, 0, 65461, 26, 0, 65461, 27, 0, 65461, 28, 0, 65461, 29, 0, 65461, 30, 0, 65461, 31, 0, 65461, 32, 0, 65461, 33, 0, 65461, 34, 0, 65461, 35, 0, 65461, 36, 0, 65461, 37, 0, 65461, 38, 0, 65461, 39, 0, 65461, 40, 0, 65461, 41, 0, 65461, 42, 0, 65461, 43, 0, 65461, 44, 0, 65461, 45, 0, 65461, 46, 0, 65461, 47, 0, 65461, 48, 0, 65461, 49, 0, 65461, 50, 0, 65461, 51, 0, 65461, 52, 0, 65461, 53, 0, 65461, 54, 0, 65461, 55, 0, 65461, 56, 0, 65461, 57, 0, 65461, 58, 0, 65461, 59, 0, 65461, 60, 0, 65461, 61, 0, 65461, 62, 0, 65461, 63, 0, 65462, 65467, 0, 65462, 65468, 0, 65462, 65469, 0, 65462, 65470, 0, 65462, 65471, 0, 65462, 65472, 0, 65462, 65473, 0, 65462, 65474, 0, 65462, 65475, 0, 65462, 65476, 0, 65462, 65477, 0, 65462, 65478, 0, 65462, 65479, 0, 65462, 65480, 0, 65462, 65481, 0, 65462, 65482, 0, 65462, 65483, 0, 65462, 65484, 0, 65462, 65485, 0, 65462, 65486, 0, 65462, 65487, 0, 65462, 65488, 0, 65462, 65489, 0, 65462, 65490, 0, 65462, 65491, 0, 65462, 65492, 0, 65462, 65493, 0, 65462, 65494, 0, 65462, 65495, 0, 65462, 65496, 0, 65462, 65497, 0, 65462, 65498, 0, 65462, 65499, 0, 65462, 65500, 0, 65462, 65501, 0, 65462, 65502, 0, 65462, 65503, 0, 65462, 65504, 0, 65462, 65505, 0, 65462, 65506, 0, 65462, 65507, 0, 65462, 65508, 0, 65462, 65509, 0, 65462, 65510, 0, 65462, 65511, 0, 65462, 65512, 0, 65462, 65513, 0, 65462, 65514, 0, 65462, 65515, 0, 65462, 65516, 0, 65462, 65517, 0, 65462, 65518, 0, 65462, 65519, 0, 65462, 65520, 0, 65462, 65521, 0, 65462, 65522, 0, 65462, 65523, 0, 65462, 65524, 0, 65462, 65525, 0, 65462, 65526, 0, 65462, 65527, 0, 65462, 65528, 0, 65462, 65529, 0, 65462, 65530, 0, 65462, 65531, 0, 65462, 65532, 0, 65462, 65533, 0, 65462, 65534, 0, 65462, 65535, 0, 65462, 0, 0, 65462, 1, 0, 65462, 2, 0, 65462, 3, 0, 65462, 4, 0, 65462, 5, 0, 65462, 6, 0, 65462, 7, 0, 65462, 8, 0, 65462, 9, 0, 65462, 10, 0, 65462, 11, 0, 65462, 12, 0, 65462, 13, 0, 65462, 14, 0, 65462, 15, 0, 65462, 16, 0, 65462, 17, 0, 65462, 18, 0, 65462, 19, 0, 65462, 20, 0, 65462, 21, 0, 65462, 22, 0, 65462, 23, 0, 65462, 24, 0, 65462, 25, 0, 65462, 26, 0, 65462, 27, 0, 65462, 28, 0, 65462, 29, 0, 65462, 30, 0, 65462, 31, 0, 65462, 32, 0, 65462, 33, 0, 65462, 34, 0, 65462, 35, 0, 65462, 36, 0, 65462, 37, 0, 65462, 38, 0, 65462, 39, 0, 65462, 40, 0, 65462, 41, 0, 65462, 42, 0, 65462, 43, 0, 65462, 44, 0, 65462, 45, 0, 65462, 46, 0, 65462, 47, 0, 65462, 48, 0, 65462, 49, 0, 65462, 50, 0, 65462, 51, 0, 65462, 52, 0, 65462, 53, 0, 65462, 54, 0, 65462, 55, 0, 65462, 56, 0, 65462, 57, 0, 65462, 58, 0, 65462, 59, 0, 65462, 60, 0, 65462, 61, 0, 65462, 62, 0, 65462, 63, 0, 65463, 65467, 0, 65463, 65468, 0, 65463, 65469, 0, 65463, 65470, 0, 65463, 65471, 0, 65463, 65472, 0, 65463, 65473, 0, 65463, 65474, 0, 65463, 65475, 0, 65463, 65476, 0, 65463, 65477, 0, 65463, 65478, 0, 65463, 65479, 0, 65463, 65480, 0, 65463, 65481, 0, 65463, 65482, 0, 65463, 65483, 0, 65463, 65484, 0, 65463, 65485, 0, 65463, 65486, 0, 65463, 65487, 0, 65463, 65488, 0, 65463, 65489, 0, 65463, 65490, 0, 65463, 65491, 0, 65463, 65492, 0, 65463, 65493, 0, 65463, 65494, 0, 65463, 65495, 0, 65463, 65496, 0, 65463, 65497, 0, 65463, 65498, 0, 65463, 65499, 0, 65463, 65500, 0, 65463, 65501, 0, 65463, 65502, 0, 65463, 65503, 0, 65463, 65504, 0, 65463, 65505, 0, 65463, 65506, 0, 65463, 65507, 0, 65463, 65508, 0, 65463, 65509, 0, 65463, 65510, 0, 65463, 65511, 0, 65463, 65512, 0, 65463, 65513, 0, 65463, 65514, 0, 65463, 65515, 0, 65463, 65516, 0, 65463, 65517, 0, 65463, 65518, 0, 65463, 65519, 0, 65463, 65520, 0, 65463, 65521, 0, 65463, 65522, 0, 65463, 65523, 0, 65463, 65524, 0, 65463, 65525, 0, 65463, 65526, 0, 65463, 65527, 0, 65463, 65528, 0, 65463, 65529, 0, 65463, 65530, 0, 65463, 65531, 0, 65463, 65532, 0, 65463, 65533, 0, 65463, 65534, 0, 65463, 65535, 0, 65463, 0, 0, 65463, 1, 0, 65463, 2, 0, 65463, 3, 0, 65463, 4, 0, 65463, 5, 0, 65463, 6, 0, 65463, 7, 0, 65463, 8, 0, 65463, 9, 0, 65463, 10, 0, 65463, 11, 0, 65463, 12, 0, 65463, 13, 0, 65463, 14, 0, 65463, 15, 0, 65463, 16, 0, 65463, 17, 0, 65463, 18, 0, 65463, 19, 0, 65463, 20, 0, 65463, 21, 0, 65463, 22, 0, 65463, 23, 0, 65463, 24, 0, 65463, 25, 0, 65463, 26, 0, 65463, 27, 0, 65463, 28, 0, 65463, 29, 0, 65463, 30, 0, 65463, 31, 0, 65463, 32, 0, 65463, 33, 0, 65463, 34, 0, 65463, 35, 0, 65463, 36, 0, 65463, 37, 0, 65463, 38, 0, 65463, 39, 0, 65463, 40, 0, 65463, 41, 0, 65463, 42, 0, 65463, 43, 0, 65463, 44, 0, 65463, 45, 0, 65463, 46, 0, 65463, 47, 0, 65463, 48, 0, 65463, 49, 0, 65463, 50, 0, 65463, 51, 0, 65463, 52, 0, 65463, 53, 0, 65463, 54, 0, 65463, 55, 0, 65463, 56, 0, 65463, 57, 0, 65463, 58, 0, 65463, 59, 0, 65463, 60, 0, 65463, 61, 0, 65463, 62, 0, 65463, 63, 0, 65464, 65467, 0, 65464, 65468, 0, 65464, 65469, 0, 65464, 65470, 0, 65464, 65471, 0, 65464, 65472, 0, 65464, 65473, 0, 65464, 65474, 0, 65464, 65475, 0, 65464, 65476, 0, 65464, 65477, 0, 65464, 65478, 0, 65464, 65479, 0, 65464, 65480, 0, 65464, 65481, 0, 65464, 65482, 0, 65464, 65483, 0, 65464, 65484, 0, 65464, 65485, 0, 65464, 65486, 0, 65464, 65487, 0, 65464, 65488, 0, 65464, 65489, 0, 65464, 65490, 0, 65464, 65491, 0, 65464, 65492, 0, 65464, 65493, 0, 65464, 65494, 0, 65464, 65495, 0, 65464, 65496, 0, 65464, 65497, 0, 65464, 65498, 0, 65464, 65499, 0, 65464, 65500, 0, 65464, 65501, 0, 65464, 65502, 0, 65464, 65503, 0, 65464, 65504, 0, 65464, 65505, 0, 65464, 65506, 0, 65464, 65507, 0, 65464, 65508, 0, 65464, 65509, 0, 65464, 65510, 0, 65464, 65511, 0, 65464, 65512, 0, 65464, 65513, 0, 65464, 65514, 0, 65464, 65515, 0, 65464, 65516, 0, 65464, 65517, 0, 65464, 65518, 0, 65464, 65519, 0, 65464, 65520, 0, 65464, 65521, 0, 65464, 65522, 0, 65464, 65523, 0, 65464, 65524, 0, 65464, 65525, 0, 65464, 65526, 0, 65464, 65527, 0, 65464, 65528, 0, 65464, 65529, 0, 65464, 65530, 0, 65464, 65531, 0, 65464, 65532, 0, 65464, 65533, 0, 65464, 65534, 0, 65464, 65535, 0, 65464, 0, 0, 65464, 1, 0, 65464, 2, 0, 65464, 3, 0, 65464, 4, 0, 65464, 5, 0, 65464, 6, 0, 65464, 7, 0, 65464, 8, 0, 65464, 9, 0, 65464, 10, 0, 65464, 11, 0, 65464, 12, 0, 65464, 13, 0, 65464, 14, 0, 65464, 15, 0, 65464, 16, 0, 65464, 17, 0, 65464, 18, 0, 65464, 19, 0, 65464, 20, 0, 65464, 21, 0, 65464, 22, 0, 65464, 23, 0, 65464, 24, 0, 65464, 25, 0, 65464, 26, 0, 65464, 27, 0, 65464, 28, 0, 65464, 29, 0, 65464, 30, 0, 65464, 31, 0, 65464, 32, 0, 65464, 33, 0, 65464, 34, 0, 65464, 35, 0, 65464, 36, 0, 65464, 37, 0, 65464, 38, 0, 65464, 39, 0, 65464, 40, 0, 65464, 41, 0, 65464, 42, 0, 65464, 43, 0, 65464, 44, 0, 65464, 45, 0, 65464, 46, 0, 65464, 47, 0, 65464, 48, 0, 65464, 49, 0, 65464, 50, 0, 65464, 51, 0, 65464, 52, 0, 65464, 53, 0, 65464, 54, 0, 65464, 55, 0, 65464, 56, 0, 65464, 57, 0, 65464, 58, 0, 65464, 59, 0, 65464, 60, 0, 65464, 61, 0, 65464, 62, 0, 65464, 63, 0, 65465, 65467, 0, 65465, 65468, 0, 65465, 65469, 0, 65465, 65470, 0, 65465, 65471, 0, 65465, 65472, 0, 65465, 65473, 0, 65465, 65474, 0, 65465, 65475, 0, 65465, 65476, 0, 65465, 65477, 0, 65465, 65478, 0, 65465, 65479, 0, 65465, 65480, 0, 65465, 65481, 0, 65465, 65482, 0, 65465, 65483, 0, 65465, 65484, 0, 65465, 65485, 0, 65465, 65486, 0, 65465, 65487, 0, 65465, 65488, 0, 65465, 65489, 0, 65465, 65490, 0, 65465, 65491, 0, 65465, 65492, 0, 65465, 65493, 0, 65465, 65494, 0, 65465, 65495, 0, 65465, 65496, 0, 65465, 65497, 0, 65465, 65498, 0, 65465, 65499, 0, 65465, 65500, 0, 65465, 65501, 0, 65465, 65502, 0, 65465, 65503, 0, 65465, 65504, 0, 65465, 65505, 0, 65465, 65506, 0, 65465, 65507, 0, 65465, 65508, 0, 65465, 65509, 0, 65465, 65510, 0, 65465, 65511, 0, 65465, 65512, 0, 65465, 65513, 0, 65465, 65514, 0, 65465, 65515, 0, 65465, 65516, 0, 65465, 65517, 0, 65465, 65518, 0, 65465, 65519, 0, 65465, 65520, 0, 65465, 65521, 0, 65465, 65522, 0, 65465, 65523, 0, 65465, 65524, 0, 65465, 65525, 0, 65465, 65526, 0, 65465, 65527, 0, 65465, 65528, 0, 65465, 65529, 0, 65465, 65530, 0, 65465, 65531, 0, 65465, 65532, 0, 65465, 65533, 0, 65465, 65534, 0, 65465, 65535, 0, 65465, 0, 0, 65465, 1, 0, 65465, 2, 0, 65465, 3, 0, 65465, 4, 0, 65465, 5, 0, 65465, 6, 0, 65465, 7, 0, 65465, 8, 0, 65465, 9, 0, 65465, 10, 0, 65465, 11, 0, 65465, 12, 0, 65465, 13, 0, 65465, 14, 0, 65465, 15, 0, 65465, 16, 0, 65465, 17, 0, 65465, 18, 0, 65465, 19, 0, 65465, 20, 0, 65465, 21, 0, 65465, 22, 0, 65465, 23, 0, 65465, 24, 0, 65465, 25, 0, 65465, 26, 0, 65465, 27, 0, 65465, 28, 0, 65465, 29, 0, 65465, 30, 0, 65465, 31, 0, 65465, 32, 0, 65465, 33, 0, 65465, 34, 0, 65465, 35, 0, 65465, 36, 0, 65465, 37, 0, 65465, 38, 0, 65465, 39, 0, 65465, 40, 0, 65465, 41, 0, 65465, 42, 0, 65465, 43, 0, 65465, 44, 0, 65465, 45, 0, 65465, 46, 0, 65465, 47, 0, 65465, 48, 0, 65465, 49, 0, 65465, 50, 0, 65465, 51, 0, 65465, 52, 0, 65465, 53, 0, 65465, 54, 0, 65465, 55, 0, 65465, 56, 0, 65465, 57, 0, 65465, 58, 0, 65465, 59, 0, 65465, 60, 0, 65465, 61, 0, 65465, 62, 0, 65465, 63, 0, 65466, 65467, 0, 65466, 65468, 0, 65466, 65469, 0, 65466, 65470, 0, 65466, 65471, 0, 65466, 65472, 0, 65466, 65473, 0, 65466, 65474, 0, 65466, 65475, 0, 65466, 65476, 0, 65466, 65477, 0, 65466, 65478, 0, 65466, 65479, 0, 65466, 65480, 0, 65466, 65481, 0, 65466, 65482, 0, 65466, 65483, 0, 65466, 65484, 0, 65466, 65485, 0, 65466, 65486, 0, 65466, 65487, 0, 65466, 65488, 0, 65466, 65489, 0, 65466, 65490, 0, 65466, 65491, 0, 65466, 65492, 0, 65466, 65493, 0, 65466, 65494, 0, 65466, 65495, 0, 65466, 65496, 0, 65466, 65497, 0, 65466, 65498, 0, 65466, 65499, 0, 65466, 65500, 0, 65466, 65501, 0, 65466, 65502, 0, 65466, 65503, 0, 65466, 65504, 0, 65466, 65505, 0, 65466, 65506, 0, 65466, 65507, 0, 65466, 65508, 0, 65466, 65509, 0, 65466, 65510, 0, 65466, 65511, 0, 65466, 65512, 0, 65466, 65513, 0, 65466, 65514, 0, 65466, 65515, 0, 65466, 65516, 0, 65466, 65517, 0, 65466, 65518, 0, 65466, 65519, 0, 65466, 65520, 0, 65466, 65521, 0, 65466, 65522, 0, 65466, 65523, 0, 65466, 65524, 0, 65466, 65525, 0, 65466, 65526, 0, 65466, 65527, 0, 65466, 65528, 0, 65466, 65529, 0, 65466, 65530, 0, 65466, 65531, 0, 65466, 65532, 0, 65466, 65533, 0, 65466, 65534, 0, 65466, 65535, 0, 65466, 0, 0, 65466, 1, 0, 65466, 2, 0, 65466, 3, 0, 65466, 4, 0, 65466, 5, 0, 65466, 6, 0, 65466, 7, 0, 65466, 8, 0, 65466, 9, 0, 65466, 10, 0, 65466, 11, 0, 65466, 12, 0, 65466, 13, 0, 65466, 14, 0, 65466, 15, 0, 65466, 16, 0, 65466, 17, 0, 65466, 18, 0, 65466, 19, 0, 65466, 20, 0, 65466, 21, 0, 65466, 22, 0, 65466, 23, 0, 65466, 24, 0, 65466, 25, 0, 65466, 26, 0, 65466, 27, 0, 65466, 28, 0, 65466, 29, 0, 65466, 30, 0, 65466, 31, 0, 65466, 32, 0, 65466, 33, 0, 65466, 34, 0, 65466, 35, 0, 65466, 36, 0, 65466, 37, 0, 65466, 38, 0, 65466, 39, 0, 65466, 40, 0, 65466, 41, 0, 65466, 42, 0, 65466, 43, 0, 65466, 44, 0, 65466, 45, 0, 65466, 46, 0, 65466, 47, 0, 65466, 48, 0, 65466, 49, 0, 65466, 50, 0, 65466, 51, 0, 65466, 52, 0, 65466, 53, 0, 65466, 54, 0, 65466, 55, 0, 65466, 56, 0, 65466, 57, 0, 65466, 58, 0, 65466, 59, 0, 65466, 60, 0, 65466, 61, 0, 65466, 62, 0, 65466, 63, 0, 65467, 65467, 0, 65467, 65468, 0, 65467, 65469, 0, 65467, 65470, 0, 65467, 65471, 0, 65467, 65472, 0, 65467, 65473, 0, 65467, 65474, 0, 65467, 65475, 0, 65467, 65476, 0, 65467, 65477, 0, 65467, 65478, 0, 65467, 65479, 0, 65467, 65480, 0, 65467, 65481, 0, 65467, 65482, 0, 65467, 65483, 0, 65467, 65484, 0, 65467, 65485, 0, 65467, 65486, 0, 65467, 65487, 0, 65467, 65488, 0, 65467, 65489, 0, 65467, 65490, 0, 65467, 65491, 0, 65467, 65492, 0, 65467, 65493, 0, 65467, 65494, 0, 65467, 65495, 0, 65467, 65496, 0, 65467, 65497, 0, 65467, 65498, 0, 65467, 65499, 0, 65467, 65500, 0, 65467, 65501, 0, 65467, 65502, 0, 65467, 65503, 0, 65467, 65504, 0, 65467, 65505, 0, 65467, 65506, 0, 65467, 65507, 0, 65467, 65508, 0, 65467, 65509, 0, 65467, 65510, 0, 65467, 65511, 0, 65467, 65512, 0, 65467, 65513, 0, 65467, 65514, 0, 65467, 65515, 0, 65467, 65516, 0, 65467, 65517, 0, 65467, 65518, 0, 65467, 65519, 0, 65467, 65520, 0, 65467, 65521, 0, 65467, 65522, 0, 65467, 65523, 0, 65467, 65524, 0, 65467, 65525, 0, 65467, 65526, 0, 65467, 65527, 0, 65467, 65528, 0, 65467, 65529, 0, 65467, 65530, 0, 65467, 65531, 0, 65467, 65532, 0, 65467, 65533, 0, 65467, 65534, 0, 65467, 65535, 0, 65467, 0, 0, 65467, 1, 0, 65467, 2, 0, 65467, 3, 0, 65467, 4, 0, 65467, 5, 0, 65467, 6, 0, 65467, 7, 0, 65467, 8, 0, 65467, 9, 0, 65467, 10, 0, 65467, 11, 0, 65467, 12, 0, 65467, 13, 0, 65467, 14, 0, 65467, 15, 0, 65467, 16, 0, 65467, 17, 0, 65467, 18, 0, 65467, 19, 0, 65467, 20, 0, 65467, 21, 0, 65467, 22, 0, 65467, 23, 0, 65467, 24, 0, 65467, 25, 0, 65467, 26, 0, 65467, 27, 0, 65467, 28, 0, 65467, 29, 0, 65467, 30, 0, 65467, 31, 0, 65467, 32, 0, 65467, 33, 0, 65467, 34, 0, 65467, 35, 0, 65467, 36, 0, 65467, 37, 0, 65467, 38, 0, 65467, 39, 0, 65467, 40, 0, 65467, 41, 0, 65467, 42, 0, 65467, 43, 0, 65467, 44, 0, 65467, 45, 0, 65467, 46, 0, 65467, 47, 0, 65467, 48, 0, 65467, 49, 0, 65467, 50, 0, 65467, 51, 0, 65467, 52, 0, 65467, 53, 0, 65467, 54, 0, 65467, 55, 0, 65467, 56, 0, 65467, 57, 0, 65467, 58, 0, 65467, 59, 0, 65467, 60, 0, 65467, 61, 0, 65467, 62, 0, 65467, 63, 0, 65468, 65467, 0, 65468, 65468, 0, 65468, 65469, 0, 65468, 65470, 0, 65468, 65471, 0, 65468, 65472, 0, 65468, 65473, 0, 65468, 65474, 0, 65468, 65475, 0, 65468, 65476, 0, 65468, 65477, 0, 65468, 65478, 0, 65468, 65479, 0, 65468, 65480, 0, 65468, 65481, 0, 65468, 65482, 0, 65468, 65483, 0, 65468, 65484, 0, 65468, 65485, 0, 65468, 65486, 0, 65468, 65487, 0, 65468, 65488, 0, 65468, 65489, 0, 65468, 65490, 0, 65468, 65491, 0, 65468, 65492, 0, 65468, 65493, 0, 65468, 65494, 0, 65468, 65495, 0, 65468, 65496, 0, 65468, 65497, 0, 65468, 65498, 0, 65468, 65499, 0, 65468, 65500, 0, 65468, 65501, 0, 65468, 65502, 0, 65468, 65503, 0, 65468, 65504, 0, 65468, 65505, 0, 65468, 65506, 0, 65468, 65507, 0, 65468, 65508, 0, 65468, 65509, 0, 65468, 65510, 0, 65468, 65511, 0, 65468, 65512, 0, 65468, 65513, 0, 65468, 65514, 0, 65468, 65515, 0, 65468, 65516, 0, 65468, 65517, 0, 65468, 65518, 0, 65468, 65519, 0, 65468, 65520, 0, 65468, 65521, 0, 65468, 65522, 0, 65468, 65523, 0, 65468, 65524, 0, 65468, 65525, 0, 65468, 65526, 0, 65468, 65527, 0, 65468, 65528, 0, 65468, 65529, 0, 65468, 65530, 0, 65468, 65531, 0, 65468, 65532, 0, 65468, 65533, 0, 65468, 65534, 0, 65468, 65535, 0, 65468, 0, 0, 65468, 1, 0, 65468, 2, 0, 65468, 3, 0, 65468, 4, 0, 65468, 5, 0, 65468, 6, 0, 65468, 7, 0, 65468, 8, 0, 65468, 9, 0, 65468, 10, 0, 65468, 11, 0, 65468, 12, 0, 65468, 13, 0, 65468, 14, 0, 65468, 15, 0, 65468, 16, 0, 65468, 17, 0, 65468, 18, 0, 65468, 19, 0, 65468, 20, 0, 65468, 21, 0, 65468, 22, 0, 65468, 23, 0, 65468, 24, 0, 65468, 25, 0, 65468, 26, 0, 65468, 27, 0, 65468, 28, 0, 65468, 29, 0, 65468, 30, 0, 65468, 31, 0, 65468, 32, 0, 65468, 33, 0, 65468, 34, 0, 65468, 35, 0, 65468, 36, 0, 65468, 37, 0, 65468, 38, 0, 65468, 39, 0, 65468, 40, 0, 65468, 41, 0, 65468, 42, 0, 65468, 43, 0, 65468, 44, 0, 65468, 45, 0, 65468, 46, 0, 65468, 47, 0, 65468, 48, 0, 65468, 49, 0, 65468, 50, 0, 65468, 51, 0, 65468, 52, 0, 65468, 53, 0, 65468, 54, 0, 65468, 55, 0, 65468, 56, 0, 65468, 57, 0, 65468, 58, 0, 65468, 59, 0, 65468, 60, 0, 65468, 61, 0, 65468, 62, 0, 65468, 63, 0, 65469, 65467, 0, 65469, 65468, 0, 65469, 65469, 0, 65469, 65470, 0, 65469, 65471, 0, 65469, 65472, 0, 65469, 65473, 0, 65469, 65474, 0, 65469, 65475, 0, 65469, 65476, 0, 65469, 65477, 0, 65469, 65478, 0, 65469, 65479, 0, 65469, 65480, 0, 65469, 65481, 0, 65469, 65482, 0, 65469, 65483, 0, 65469, 65484, 0, 65469, 65485, 0, 65469, 65486, 0, 65469, 65487, 0, 65469, 65488, 0, 65469, 65489, 0, 65469, 65490, 0, 65469, 65491, 0, 65469, 65492, 0, 65469, 65493, 0, 65469, 65494, 0, 65469, 65495, 0, 65469, 65496, 0, 65469, 65497, 0, 65469, 65498, 0, 65469, 65499, 0, 65469, 65500, 0, 65469, 65501, 0, 65469, 65502, 0, 65469, 65503, 0, 65469, 65504, 0, 65469, 65505, 0, 65469, 65506, 0, 65469, 65507, 0, 65469, 65508, 0, 65469, 65509, 0, 65469, 65510, 0, 65469, 65511, 0, 65469, 65512, 0, 65469, 65513, 0, 65469, 65514, 0, 65469, 65515, 0, 65469, 65516, 0, 65469, 65517, 0, 65469, 65518, 0, 65469, 65519, 0, 65469, 65520, 0, 65469, 65521, 0, 65469, 65522, 0, 65469, 65523, 0, 65469, 65524, 0, 65469, 65525, 0, 65469, 65526, 0, 65469, 65527, 0, 65469, 65528, 0, 65469, 65529, 0, 65469, 65530, 0, 65469, 65531, 0, 65469, 65532, 0, 65469, 65533, 0, 65469, 65534, 0, 65469, 65535, 0, 65469, 0, 0, 65469, 1, 0, 65469, 2, 0, 65469, 3, 0, 65469, 4, 0, 65469, 5, 0, 65469, 6, 0, 65469, 7, 0, 65469, 8, 0, 65469, 9, 0, 65469, 10, 0, 65469, 11, 0, 65469, 12, 0, 65469, 13, 0, 65469, 14, 0, 65469, 15, 0, 65469, 16, 0, 65469, 17, 0, 65469, 18, 0, 65469, 19, 0, 65469, 20, 0, 65469, 21, 0, 65469, 22, 0, 65469, 23, 0, 65469, 24, 0, 65469, 25, 0, 65469, 26, 0, 65469, 27, 0, 65469, 28, 0, 65469, 29, 0, 65469, 30, 0, 65469, 31, 0, 65469, 32, 0, 65469, 33, 0, 65469, 34, 0, 65469, 35, 0, 65469, 36, 0, 65469, 37, 0, 65469, 38, 0, 65469, 39, 0, 65469, 40, 0, 65469, 41, 0, 65469, 42, 0, 65469, 43, 0, 65469, 44, 0, 65469, 45, 0, 65469, 46, 0, 65469, 47, 0, 65469, 48, 0, 65469, 49, 0, 65469, 50, 0, 65469, 51, 0, 65469, 52, 0, 65469, 53, 0, 65469, 54, 0, 65469, 55, 0, 65469, 56, 0, 65469, 57, 0, 65469, 58, 0, 65469, 59, 0, 65469, 60, 0, 65469, 61, 0, 65469, 62, 0, 65469, 63, 0, 65470, 65467, 0, 65470, 65468, 0, 65470, 65469, 0, 65470, 65470, 0, 65470, 65471, 0, 65470, 65472, 0, 65470, 65473, 0, 65470, 65474, 0, 65470, 65475, 0, 65470, 65476, 0, 65470, 65477, 0, 65470, 65478, 0, 65470, 65479, 0, 65470, 65480, 0, 65470, 65481, 0, 65470, 65482, 0, 65470, 65483, 0, 65470, 65484, 0, 65470, 65485, 0, 65470, 65486, 0, 65470, 65487, 0, 65470, 65488, 0, 65470, 65489, 0, 65470, 65490, 0, 65470, 65491, 0, 65470, 65492, 0, 65470, 65493, 0, 65470, 65494, 0, 65470, 65495, 0, 65470, 65496, 0, 65470, 65497, 0, 65470, 65498, 0, 65470, 65499, 0, 65470, 65500, 0, 65470, 65501, 0, 65470, 65502, 0, 65470, 65503, 0, 65470, 65504, 0, 65470, 65505, 0, 65470, 65506, 0, 65470, 65507, 0, 65470, 65508, 0, 65470, 65509, 0, 65470, 65510, 0, 65470, 65511, 0, 65470, 65512, 0, 65470, 65513, 0, 65470, 65514, 0, 65470, 65515, 0, 65470, 65516, 0, 65470, 65517, 0, 65470, 65518, 0, 65470, 65519, 0, 65470, 65520, 0, 65470, 65521, 0, 65470, 65522, 0, 65470, 65523, 0, 65470, 65524, 0, 65470, 65525, 0, 65470, 65526, 0, 65470, 65527, 0, 65470, 65528, 0, 65470, 65529, 0, 65470, 65530, 0, 65470, 65531, 0, 65470, 65532, 0, 65470, 65533, 0, 65470, 65534, 0, 65470, 65535, 0, 65470, 0, 0, 65470, 1, 0, 65470, 2, 0, 65470, 3, 0, 65470, 4, 0, 65470, 5, 0, 65470, 6, 0, 65470, 7, 0, 65470, 8, 0, 65470, 9, 0, 65470, 10, 0, 65470, 11, 0, 65470, 12, 0, 65470, 13, 0, 65470, 14, 0, 65470, 15, 0, 65470, 16, 0, 65470, 17, 0, 65470, 18, 0, 65470, 19, 0, 65470, 20, 0, 65470, 21, 0, 65470, 22, 0, 65470, 23, 0, 65470, 24, 0, 65470, 25, 0, 65470, 26, 0, 65470, 27, 0, 65470, 28, 0, 65470, 29, 0, 65470, 30, 0, 65470, 31, 0, 65470, 32, 0, 65470, 33, 0, 65470, 34, 0, 65470, 35, 0, 65470, 36, 0, 65470, 37, 0, 65470, 38, 0, 65470, 39, 0, 65470, 40, 0, 65470, 41, 0, 65470, 42, 0, 65470, 43, 0, 65470, 44, 0, 65470, 45, 0, 65470, 46, 0, 65470, 47, 0, 65470, 48, 0, 65470, 49, 0, 65470, 50, 0, 65470, 51, 0, 65470, 52, 0, 65470, 53, 0, 65470, 54, 0, 65470, 55, 0, 65470, 56, 0, 65470, 57, 0, 65470, 58, 0, 65470, 59, 0, 65470, 60, 0, 65470, 61, 0, 65470, 62, 0, 65470, 63, 0, 65471, 65467, 0, 65471, 65468, 0, 65471, 65469, 0, 65471, 65470, 0, 65471, 65471, 0, 65471, 65472, 0, 65471, 65473, 0, 65471, 65474, 0, 65471, 65475, 0, 65471, 65476, 0, 65471, 65477, 0, 65471, 65478, 0, 65471, 65479, 0, 65471, 65480, 0, 65471, 65481, 0, 65471, 65482, 0, 65471, 65483, 0, 65471, 65484, 0, 65471, 65485, 0, 65471, 65486, 0, 65471, 65487, 0, 65471, 65488, 0, 65471, 65489, 0, 65471, 65490, 0, 65471, 65491, 0, 65471, 65492, 0, 65471, 65493, 0, 65471, 65494, 0, 65471, 65495, 0, 65471, 65496, 0, 65471, 65497, 0, 65471, 65498, 0, 65471, 65499, 0, 65471, 65500, 0, 65471, 65501, 0, 65471, 65502, 0, 65471, 65503, 0, 65471, 65504, 0, 65471, 65505, 0, 65471, 65506, 0, 65471, 65507, 0, 65471, 65508, 0, 65471, 65509, 0, 65471, 65510, 0, 65471, 65511, 0, 65471, 65512, 0, 65471, 65513, 0, 65471, 65514, 0, 65471, 65515, 0, 65471, 65516, 0, 65471, 65517, 0, 65471, 65518, 0, 65471, 65519, 0, 65471, 65520, 0, 65471, 65521, 0, 65471, 65522, 0, 65471, 65523, 0, 65471, 65524, 0, 65471, 65525, 0, 65471, 65526, 0, 65471, 65527, 0, 65471, 65528, 0, 65471, 65529, 0, 65471, 65530, 0, 65471, 65531, 0, 65471, 65532, 0, 65471, 65533, 0, 65471, 65534, 0, 65471, 65535, 0, 65471, 0, 0, 65471, 1, 0, 65471, 2, 0, 65471, 3, 0, 65471, 4, 0, 65471, 5, 0, 65471, 6, 0, 65471, 7, 0, 65471, 8, 0, 65471, 9, 0, 65471, 10, 0, 65471, 11, 0, 65471, 12, 0, 65471, 13, 0, 65471, 14, 0, 65471, 15, 0, 65471, 16, 0, 65471, 17, 0, 65471, 18, 0, 65471, 19, 0, 65471, 20, 0, 65471, 21, 0, 65471, 22, 0, 65471, 23, 0, 65471, 24, 0, 65471, 25, 0, 65471, 26, 0, 65471, 27, 0, 65471, 28, 0, 65471, 29, 0, 65471, 30, 0, 65471, 31, 0, 65471, 32, 0, 65471, 33, 0, 65471, 34, 0, 65471, 35, 0, 65471, 36, 0, 65471, 37, 0, 65471, 38, 0, 65471, 39, 0, 65471, 40, 0, 65471, 41, 0, 65471, 42, 0, 65471, 43, 0, 65471, 44, 0, 65471, 45, 0, 65471, 46, 0, 65471, 47, 0, 65471, 48, 0, 65471, 49, 0, 65471, 50, 0, 65471, 51, 0, 65471, 52, 0, 65471, 53, 0, 65471, 54, 0, 65471, 55, 0, 65471, 56, 0, 65471, 57, 0, 65471, 58, 0, 65471, 59, 0, 65471, 60, 0, 65471, 61, 0, 65471, 62, 0, 65471, 63, 0, 65472, 65467, 0, 65472, 65468, 0, 65472, 65469, 0, 65472, 65470, 0, 65472, 65471, 0, 65472, 65472, 0, 65472, 65473, 0, 65472, 65474, 0, 65472, 65475, 0, 65472, 65476, 0, 65472, 65477, 0, 65472, 65478, 0, 65472, 65479, 0, 65472, 65480, 0, 65472, 65481, 0, 65472, 65482, 0, 65472, 65483, 0, 65472, 65484, 0, 65472, 65485, 0, 65472, 65486, 0, 65472, 65487, 0, 65472, 65488, 0, 65472, 65489, 0, 65472, 65490, 0, 65472, 65491, 0, 65472, 65492, 0, 65472, 65493, 0, 65472, 65494, 0, 65472, 65495, 0, 65472, 65496, 0, 65472, 65497, 0, 65472, 65498, 0, 65472, 65499, 0, 65472, 65500, 0, 65472, 65501, 0, 65472, 65502, 0, 65472, 65503, 0, 65472, 65504, 0, 65472, 65505, 0, 65472, 65506, 0, 65472, 65507, 0, 65472, 65508, 0, 65472, 65509, 0, 65472, 65510, 0, 65472, 65511, 0, 65472, 65512, 0, 65472, 65513, 0, 65472, 65514, 0, 65472, 65515, 0, 65472, 65516, 0, 65472, 65517, 0, 65472, 65518, 0, 65472, 65519, 0, 65472, 65520, 0, 65472, 65521, 0, 65472, 65522, 0, 65472, 65523, 0, 65472, 65524, 0, 65472, 65525, 0, 65472, 65526, 0, 65472, 65527, 0, 65472, 65528, 0, 65472, 65529, 0, 65472, 65530, 0, 65472, 65531, 0, 65472, 65532, 0, 65472, 65533, 0, 65472, 65534, 0, 65472, 65535, 0, 65472, 0, 0, 65472, 1, 0, 65472, 2, 0, 65472, 3, 0, 65472, 4, 0, 65472, 5, 0, 65472, 6, 0, 65472, 7, 0, 65472, 8, 0, 65472, 9, 0, 65472, 10, 0, 65472, 11, 0, 65472, 12, 0, 65472, 13, 0, 65472, 14, 0, 65472, 15, 0, 65472, 16, 0, 65472, 17, 0, 65472, 18, 0, 65472, 19, 0, 65472, 20, 0, 65472, 21, 0, 65472, 22, 0, 65472, 23, 0, 65472, 24, 0, 65472, 25, 0, 65472, 26, 0, 65472, 27, 0, 65472, 28, 0, 65472, 29, 0, 65472, 30, 0, 65472, 31, 0, 65472, 32, 0, 65472, 33, 0, 65472, 34, 0, 65472, 35, 0, 65472, 36, 0, 65472, 37, 0, 65472, 38, 0, 65472, 39, 0, 65472, 40, 0, 65472, 41, 0, 65472, 42, 0, 65472, 43, 0, 65472, 44, 0, 65472, 45, 0, 65472, 46, 0, 65472, 47, 0, 65472, 48, 0, 65472, 49, 0, 65472, 50, 0, 65472, 51, 0, 65472, 52, 0, 65472, 53, 0, 65472, 54, 0, 65472, 55, 0, 65472, 56, 0, 65472, 57, 0, 65472, 58, 0, 65472, 59, 0, 65472, 60, 0, 65472, 61, 0, 65472, 62, 0, 65472, 63, 0, 65473, 65467, 0, 65473, 65468, 0, 65473, 65469, 0, 65473, 65470, 0, 65473, 65471, 0, 65473, 65472, 0, 65473, 65473, 0, 65473, 65474, 0, 65473, 65475, 0, 65473, 65476, 0, 65473, 65477, 0, 65473, 65478, 0, 65473, 65479, 0, 65473, 65480, 0, 65473, 65481, 0, 65473, 65482, 0, 65473, 65483, 0, 65473, 65484, 0, 65473, 65485, 0, 65473, 65486, 0, 65473, 65487, 0, 65473, 65488, 0, 65473, 65489, 0, 65473, 65490, 0, 65473, 65491, 0, 65473, 65492, 0, 65473, 65493, 0, 65473, 65494, 0, 65473, 65495, 0, 65473, 65496, 0, 65473, 65497, 0, 65473, 65498, 0, 65473, 65499, 0, 65473, 65500, 0, 65473, 65501, 0, 65473, 65502, 0, 65473, 65503, 0, 65473, 65504, 0, 65473, 65505, 0, 65473, 65506, 0, 65473, 65507, 0, 65473, 65508, 0, 65473, 65509, 0, 65473, 65510, 0, 65473, 65511, 0, 65473, 65512, 0, 65473, 65513, 0, 65473, 65514, 0, 65473, 65515, 0, 65473, 65516, 0, 65473, 65517, 0, 65473, 65518, 0, 65473, 65519, 0, 65473, 65520, 0, 65473, 65521, 0, 65473, 65522, 0, 65473, 65523, 0, 65473, 65524, 0, 65473, 65525, 0, 65473, 65526, 0, 65473, 65527, 0, 65473, 65528, 0, 65473, 65529, 0, 65473, 65530, 0, 65473, 65531, 0, 65473, 65532, 0, 65473, 65533, 0, 65473, 65534, 0, 65473, 65535, 0, 65473, 0, 0, 65473, 1, 0, 65473, 2, 0, 65473, 3, 0, 65473, 4, 0, 65473, 5, 0, 65473, 6, 0, 65473, 7, 0, 65473, 8, 0, 65473, 9, 0, 65473, 10, 0, 65473, 11, 0, 65473, 12, 0, 65473, 13, 0, 65473, 14, 0, 65473, 15, 0, 65473, 16, 0, 65473, 17, 0, 65473, 18, 0, 65473, 19, 0, 65473, 20, 0, 65473, 21, 0, 65473, 22, 0, 65473, 23, 0, 65473, 24, 0, 65473, 25, 0, 65473, 26, 0, 65473, 27, 0, 65473, 28, 0, 65473, 29, 0, 65473, 30, 0, 65473, 31, 0, 65473, 32, 0, 65473, 33, 0, 65473, 34, 0, 65473, 35, 0, 65473, 36, 0, 65473, 37, 0, 65473, 38, 0, 65473, 39, 0, 65473, 40, 0, 65473, 41, 0, 65473, 42, 0, 65473, 43, 0, 65473, 44, 0, 65473, 45, 0, 65473, 46, 0, 65473, 47, 0, 65473, 48, 0, 65473, 49, 0, 65473, 50, 0, 65473, 51, 0, 65473, 52, 0, 65473, 53, 0, 65473, 54, 0, 65473, 55, 0, 65473, 56, 0, 65473, 57, 0, 65473, 58, 0, 65473, 59, 0, 65473, 60, 0, 65473, 61, 0, 65473, 62, 0, 65473, 63, 0, 65474, 65467, 0, 65474, 65468, 0, 65474, 65469, 0, 65474, 65470, 0, 65474, 65471, 0, 65474, 65472, 0, 65474, 65473, 0, 65474, 65474, 0, 65474, 65475, 0, 65474, 65476, 0, 65474, 65477, 0, 65474, 65478, 0, 65474, 65479, 0, 65474, 65480, 0, 65474, 65481, 0, 65474, 65482, 0, 65474, 65483, 0, 65474, 65484, 0, 65474, 65485, 0, 65474, 65486, 0, 65474, 65487, 0, 65474, 65488, 0, 65474, 65489, 0, 65474, 65490, 0, 65474, 65491, 0, 65474, 65492, 0, 65474, 65493, 0, 65474, 65494, 0, 65474, 65495, 0, 65474, 65496, 0, 65474, 65497, 0, 65474, 65498, 0, 65474, 65499, 0, 65474, 65500, 0, 65474, 65501, 0, 65474, 65502, 0, 65474, 65503, 0, 65474, 65504, 0, 65474, 65505, 0, 65474, 65506, 0, 65474, 65507, 0, 65474, 65508, 0, 65474, 65509, 0, 65474, 65510, 0, 65474, 65511, 0, 65474, 65512, 0, 65474, 65513, 0, 65474, 65514, 0, 65474, 65515, 0, 65474, 65516, 0, 65474, 65517, 0, 65474, 65518, 0, 65474, 65519, 0, 65474, 65520, 0, 65474, 65521, 0, 65474, 65522, 0, 65474, 65523, 0, 65474, 65524, 0, 65474, 65525, 0, 65474, 65526, 0, 65474, 65527, 0, 65474, 65528, 0, 65474, 65529, 0, 65474, 65530, 0, 65474, 65531, 0, 65474, 65532, 0, 65474, 65533, 0, 65474, 65534, 0, 65474, 65535, 0, 65474, 0, 0, 65474, 1, 0, 65474, 2, 0, 65474, 3, 0, 65474, 4, 0, 65474, 5, 0, 65474, 6, 0, 65474, 7, 0, 65474, 8, 0, 65474, 9, 0, 65474, 10, 0, 65474, 11, 0, 65474, 12, 0, 65474, 13, 0, 65474, 14, 0, 65474, 15, 0, 65474, 16, 0, 65474, 17, 0, 65474, 18, 0, 65474, 19, 0, 65474, 20, 0, 65474, 21, 0, 65474, 22, 0, 65474, 23, 0, 65474, 24, 0, 65474, 25, 0, 65474, 26, 0, 65474, 27, 0, 65474, 28, 0, 65474, 29, 0, 65474, 30, 0, 65474, 31, 0, 65474, 32, 0, 65474, 33, 0, 65474, 34, 0, 65474, 35, 0, 65474, 36, 0, 65474, 37, 0, 65474, 38, 0, 65474, 39, 0, 65474, 40, 0, 65474, 41, 0, 65474, 42, 0, 65474, 43, 0, 65474, 44, 0, 65474, 45, 0, 65474, 46, 0, 65474, 47, 0, 65474, 48, 0, 65474, 49, 0, 65474, 50, 0, 65474, 51, 0, 65474, 52, 0, 65474, 53, 0, 65474, 54, 0, 65474, 55, 0, 65474, 56, 0, 65474, 57, 0, 65474, 58, 0, 65474, 59, 0, 65474, 60, 0, 65474, 61, 0, 65474, 62, 0, 65474, 63, 0, 65475, 65467, 0, 65475, 65468, 0, 65475, 65469, 0, 65475, 65470, 0, 65475, 65471, 0, 65475, 65472, 0, 65475, 65473, 0, 65475, 65474, 0, 65475, 65475, 0, 65475, 65476, 0, 65475, 65477, 0, 65475, 65478, 0, 65475, 65479, 0, 65475, 65480, 0, 65475, 65481, 0, 65475, 65482, 0, 65475, 65483, 0, 65475, 65484, 0, 65475, 65485, 0, 65475, 65486, 0, 65475, 65487, 0, 65475, 65488, 0, 65475, 65489, 0, 65475, 65490, 0, 65475, 65491, 0, 65475, 65492, 0, 65475, 65493, 0, 65475, 65494, 0, 65475, 65495, 0, 65475, 65496, 0, 65475, 65497, 0, 65475, 65498, 0, 65475, 65499, 0, 65475, 65500, 0, 65475, 65501, 0, 65475, 65502, 0, 65475, 65503, 0, 65475, 65504, 0, 65475, 65505, 0, 65475, 65506, 0, 65475, 65507, 0, 65475, 65508, 0, 65475, 65509, 0, 65475, 65510, 0, 65475, 65511, 0, 65475, 65512, 0, 65475, 65513, 0, 65475, 65514, 0, 65475, 65515, 0, 65475, 65516, 0, 65475, 65517, 0, 65475, 65518, 0, 65475, 65519, 0, 65475, 65520, 0, 65475, 65521, 0, 65475, 65522, 0, 65475, 65523, 0, 65475, 65524, 0, 65475, 65525, 0, 65475, 65526, 0, 65475, 65527, 0, 65475, 65528, 0, 65475, 65529, 0, 65475, 65530, 0, 65475, 65531, 0, 65475, 65532, 0, 65475, 65533, 0, 65475, 65534, 0, 65475, 65535, 0, 65475, 0, 0, 65475, 1, 0, 65475, 2, 0, 65475, 3, 0, 65475, 4, 0, 65475, 5, 0, 65475, 6, 0, 65475, 7, 0, 65475, 8, 0, 65475, 9, 0, 65475, 10, 0, 65475, 11, 0, 65475, 12, 0, 65475, 13, 0, 65475, 14, 0, 65475, 15, 0, 65475, 16, 0, 65475, 17, 0, 65475, 18, 0, 65475, 19, 0, 65475, 20, 0, 65475, 21, 0, 65475, 22, 0, 65475, 23, 0, 65475, 24, 0, 65475, 25, 0, 65475, 26, 0, 65475, 27, 0, 65475, 28, 0, 65475, 29, 0, 65475, 30, 0, 65475, 31, 0, 65475, 32, 0, 65475, 33, 0, 65475, 34, 0, 65475, 35, 0, 65475, 36, 0, 65475, 37, 0, 65475, 38, 0, 65475, 39, 0, 65475, 40, 0, 65475, 41, 0, 65475, 42, 0, 65475, 43, 0, 65475, 44, 0, 65475, 45, 0, 65475, 46, 0, 65475, 47, 0, 65475, 48, 0, 65475, 49, 0, 65475, 50, 0, 65475, 51, 0, 65475, 52, 0, 65475, 53, 0, 65475, 54, 0, 65475, 55, 0, 65475, 56, 0, 65475, 57, 0, 65475, 58, 0, 65475, 59, 0, 65475, 60, 0, 65475, 61, 0, 65475, 62, 0, 65475, 63, 0, 65476, 65467, 0, 65476, 65468, 0, 65476, 65469, 0, 65476, 65470, 0, 65476, 65471, 0, 65476, 65472, 0, 65476, 65473, 0, 65476, 65474, 0, 65476, 65475, 0, 65476, 65476, 0, 65476, 65477, 0, 65476, 65478, 0, 65476, 65479, 0, 65476, 65480, 0, 65476, 65481, 0, 65476, 65482, 0, 65476, 65483, 0, 65476, 65484, 0, 65476, 65485, 0, 65476, 65486, 0, 65476, 65487, 0, 65476, 65488, 0, 65476, 65489, 0, 65476, 65490, 0, 65476, 65491, 0, 65476, 65492, 0, 65476, 65493, 0, 65476, 65494, 0, 65476, 65495, 0, 65476, 65496, 0, 65476, 65497, 0, 65476, 65498, 0, 65476, 65499, 0, 65476, 65500, 0, 65476, 65501, 0, 65476, 65502, 0, 65476, 65503, 0, 65476, 65504, 0, 65476, 65505, 0, 65476, 65506, 0, 65476, 65507, 0, 65476, 65508, 0, 65476, 65509, 0, 65476, 65510, 0, 65476, 65511, 0, 65476, 65512, 0, 65476, 65513, 0, 65476, 65514, 0, 65476, 65515, 0, 65476, 65516, 0, 65476, 65517, 0, 65476, 65518, 0, 65476, 65519, 0, 65476, 65520, 0, 65476, 65521, 0, 65476, 65522, 0, 65476, 65523, 0, 65476, 65524, 0, 65476, 65525, 0, 65476, 65526, 0, 65476, 65527, 0, 65476, 65528, 0, 65476, 65529, 0, 65476, 65530, 0, 65476, 65531, 0, 65476, 65532, 0, 65476, 65533, 0, 65476, 65534, 0, 65476, 65535, 0, 65476, 0, 0, 65476, 1, 0, 65476, 2, 0, 65476, 3, 0, 65476, 4, 0, 65476, 5, 0, 65476, 6, 0, 65476, 7, 0, 65476, 8, 0, 65476, 9, 0, 65476, 10, 0, 65476, 11, 0, 65476, 12, 0, 65476, 13, 0, 65476, 14, 0, 65476, 15, 0, 65476, 16, 0, 65476, 17, 0, 65476, 18, 0, 65476, 19, 0, 65476, 20, 0, 65476, 21, 0, 65476, 22, 0, 65476, 23, 0, 65476, 24, 0, 65476, 25, 0, 65476, 26, 0, 65476, 27, 0, 65476, 28, 0, 65476, 29, 0, 65476, 30, 0, 65476, 31, 0, 65476, 32, 0, 65476, 33, 0, 65476, 34, 0, 65476, 35, 0, 65476, 36, 0, 65476, 37, 0, 65476, 38, 0, 65476, 39, 0, 65476, 40, 0, 65476, 41, 0, 65476, 42, 0, 65476, 43, 0, 65476, 44, 0, 65476, 45, 0, 65476, 46, 0, 65476, 47, 0, 65476, 48, 0, 65476, 49, 0, 65476, 50, 0, 65476, 51, 0, 65476, 52, 0, 65476, 53, 0, 65476, 54, 0, 65476, 55, 0, 65476, 56, 0, 65476, 57, 0, 65476, 58, 0, 65476, 59, 0, 65476, 60, 0, 65476, 61, 0, 65476, 62, 0, 65476, 63, 0, 65477, 65467, 0, 65477, 65468, 0, 65477, 65469, 0, 65477, 65470, 0, 65477, 65471, 0, 65477, 65472, 0, 65477, 65473, 0, 65477, 65474, 0, 65477, 65475, 0, 65477, 65476, 0, 65477, 65477, 0, 65477, 65478, 0, 65477, 65479, 0, 65477, 65480, 0, 65477, 65481, 0, 65477, 65482, 0, 65477, 65483, 0, 65477, 65484, 0, 65477, 65485, 0, 65477, 65486, 0, 65477, 65487, 0, 65477, 65488, 0, 65477, 65489, 0, 65477, 65490, 0, 65477, 65491, 0, 65477, 65492, 0, 65477, 65493, 0, 65477, 65494, 0, 65477, 65495, 0, 65477, 65496, 0, 65477, 65497, 0, 65477, 65498, 0, 65477, 65499, 0, 65477, 65500, 0, 65477, 65501, 0, 65477, 65502, 0, 65477, 65503, 0, 65477, 65504, 0, 65477, 65505, 0, 65477, 65506, 0, 65477, 65507, 0, 65477, 65508, 0, 65477, 65509, 0, 65477, 65510, 0, 65477, 65511, 0, 65477, 65512, 0, 65477, 65513, 0, 65477, 65514, 0, 65477, 65515, 0, 65477, 65516, 0, 65477, 65517, 0, 65477, 65518, 0, 65477, 65519, 0, 65477, 65520, 0, 65477, 65521, 0, 65477, 65522, 0, 65477, 65523, 0, 65477, 65524, 0, 65477, 65525, 0, 65477, 65526, 0, 65477, 65527, 0, 65477, 65528, 0, 65477, 65529, 0, 65477, 65530, 0, 65477, 65531, 0, 65477, 65532, 0, 65477, 65533, 0, 65477, 65534, 0, 65477, 65535, 0, 65477, 0, 0, 65477, 1, 0, 65477, 2, 0, 65477, 3, 0, 65477, 4, 0, 65477, 5, 0, 65477, 6, 0, 65477, 7, 0, 65477, 8, 0, 65477, 9, 0, 65477, 10, 0, 65477, 11, 0, 65477, 12, 0, 65477, 13, 0, 65477, 14, 0, 65477, 15, 0, 65477, 16, 0, 65477, 17, 0, 65477, 18, 0, 65477, 19, 0, 65477, 20, 0, 65477, 21, 0, 65477, 22, 0, 65477, 23, 0, 65477, 24, 0, 65477, 25, 0, 65477, 26, 0, 65477, 27, 0, 65477, 28, 0, 65477, 29, 0, 65477, 30, 0, 65477, 31, 0, 65477, 32, 0, 65477, 33, 0, 65477, 34, 0, 65477, 35, 0, 65477, 36, 0, 65477, 37, 0, 65477, 38, 0, 65477, 39, 0, 65477, 40, 0, 65477, 41, 0, 65477, 42, 0, 65477, 43, 0, 65477, 44, 0, 65477, 45, 0, 65477, 46, 0, 65477, 47, 0, 65477, 48, 0, 65477, 49, 0, 65477, 50, 0, 65477, 51, 0, 65477, 52, 0, 65477, 53, 0, 65477, 54, 0, 65477, 55, 0, 65477, 56, 0, 65477, 57, 0, 65477, 58, 0, 65477, 59, 0, 65477, 60, 0, 65477, 61, 0, 65477, 62, 0, 65477, 63, 0, 65478, 65467, 0, 65478, 65468, 0, 65478, 65469, 0, 65478, 65470, 0, 65478, 65471, 0, 65478, 65472, 0, 65478, 65473, 0, 65478, 65474, 0, 65478, 65475, 0, 65478, 65476, 0, 65478, 65477, 0, 65478, 65478, 0, 65478, 65479, 0, 65478, 65480, 0, 65478, 65481, 0, 65478, 65482, 0, 65478, 65483, 0, 65478, 65484, 0, 65478, 65485, 0, 65478, 65486, 0, 65478, 65487, 0, 65478, 65488, 0, 65478, 65489, 0, 65478, 65490, 0, 65478, 65491, 0, 65478, 65492, 0, 65478, 65493, 0, 65478, 65494, 0, 65478, 65495, 0, 65478, 65496, 0, 65478, 65497, 0, 65478, 65498, 0, 65478, 65499, 0, 65478, 65500, 0, 65478, 65501, 0, 65478, 65502, 0, 65478, 65503, 0, 65478, 65504, 0, 65478, 65505, 0, 65478, 65506, 0, 65478, 65507, 0, 65478, 65508, 0, 65478, 65509, 0, 65478, 65510, 0, 65478, 65511, 0, 65478, 65512, 0, 65478, 65513, 0, 65478, 65514, 0, 65478, 65515, 0, 65478, 65516, 0, 65478, 65517, 0, 65478, 65518, 0, 65478, 65519, 0, 65478, 65520, 0, 65478, 65521, 0, 65478, 65522, 0, 65478, 65523, 0, 65478, 65524, 0, 65478, 65525, 0, 65478, 65526, 0, 65478, 65527, 0, 65478, 65528, 0, 65478, 65529, 0, 65478, 65530, 0, 65478, 65531, 0, 65478, 65532, 0, 65478, 65533, 0, 65478, 65534, 0, 65478, 65535, 0, 65478, 0, 0, 65478, 1, 0, 65478, 2, 0, 65478, 3, 0, 65478, 4, 0, 65478, 5, 0, 65478, 6, 0, 65478, 7, 0, 65478, 8, 0, 65478, 9, 0, 65478, 10, 0, 65478, 11, 0, 65478, 12, 0, 65478, 13, 0, 65478, 14, 0, 65478, 15, 0, 65478, 16, 0, 65478, 17, 0, 65478, 18, 0, 65478, 19, 0, 65478, 20, 0, 65478, 21, 0, 65478, 22, 0, 65478, 23, 0, 65478, 24, 0, 65478, 25, 0, 65478, 26, 0, 65478, 27, 0, 65478, 28, 0, 65478, 29, 0, 65478, 30, 0, 65478, 31, 0, 65478, 32, 0, 65478, 33, 0, 65478, 34, 0, 65478, 35, 0, 65478, 36, 0, 65478, 37, 0, 65478, 38, 0, 65478, 39, 0, 65478, 40, 0, 65478, 41, 0, 65478, 42, 0, 65478, 43, 0, 65478, 44, 0, 65478, 45, 0, 65478, 46, 0, 65478, 47, 0, 65478, 48, 0, 65478, 49, 0, 65478, 50, 0, 65478, 51, 0, 65478, 52, 0, 65478, 53, 0, 65478, 54, 0, 65478, 55, 0, 65478, 56, 0, 65478, 57, 0, 65478, 58, 0, 65478, 59, 0, 65478, 60, 0, 65478, 61, 0, 65478, 62, 0, 65478, 63, 0, 65479, 65467, 0, 65479, 65468, 0, 65479, 65469, 0, 65479, 65470, 0, 65479, 65471, 0, 65479, 65472, 0, 65479, 65473, 0, 65479, 65474, 0, 65479, 65475, 0, 65479, 65476, 0, 65479, 65477, 0, 65479, 65478, 0, 65479, 65479, 0, 65479, 65480, 0, 65479, 65481, 0, 65479, 65482, 0, 65479, 65483, 0, 65479, 65484, 0, 65479, 65485, 0, 65479, 65486, 0, 65479, 65487, 0, 65479, 65488, 0, 65479, 65489, 0, 65479, 65490, 0, 65479, 65491, 0, 65479, 65492, 0, 65479, 65493, 0, 65479, 65494, 0, 65479, 65495, 0, 65479, 65496, 0, 65479, 65497, 0, 65479, 65498, 0, 65479, 65499, 0, 65479, 65500, 0, 65479, 65501, 0, 65479, 65502, 0, 65479, 65503, 0, 65479, 65504, 0, 65479, 65505, 0, 65479, 65506, 0, 65479, 65507, 0, 65479, 65508, 0, 65479, 65509, 0, 65479, 65510, 0, 65479, 65511, 0, 65479, 65512, 0, 65479, 65513, 0, 65479, 65514, 0, 65479, 65515, 0, 65479, 65516, 0, 65479, 65517, 0, 65479, 65518, 0, 65479, 65519, 0, 65479, 65520, 0, 65479, 65521, 0, 65479, 65522, 0, 65479, 65523, 0, 65479, 65524, 0, 65479, 65525, 0, 65479, 65526, 0, 65479, 65527, 0, 65479, 65528, 0, 65479, 65529, 0, 65479, 65530, 0, 65479, 65531, 0, 65479, 65532, 0, 65479, 65533, 0, 65479, 65534, 0, 65479, 65535, 0, 65479, 0, 0, 65479, 1, 0, 65479, 2, 0, 65479, 3, 0, 65479, 4, 0, 65479, 5, 0, 65479, 6, 0, 65479, 7, 0, 65479, 8, 0, 65479, 9, 0, 65479, 10, 0, 65479, 11, 0, 65479, 12, 0, 65479, 13, 0, 65479, 14, 0, 65479, 15, 0, 65479, 16, 0, 65479, 17, 0, 65479, 18, 0, 65479, 19, 0, 65479, 20, 0, 65479, 21, 0, 65479, 22, 0, 65479, 23, 0, 65479, 24, 0, 65479, 25, 0, 65479, 26, 0, 65479, 27, 0, 65479, 28, 0, 65479, 29, 0, 65479, 30, 0, 65479, 31, 0, 65479, 32, 0, 65479, 33, 0, 65479, 34, 0, 65479, 35, 0, 65479, 36, 0, 65479, 37, 0, 65479, 38, 0, 65479, 39, 0, 65479, 40, 0, 65479, 41, 0, 65479, 42, 0, 65479, 43, 0, 65479, 44, 0, 65479, 45, 0, 65479, 46, 0, 65479, 47, 0, 65479, 48, 0, 65479, 49, 0, 65479, 50, 0, 65479, 51, 0, 65479, 52, 0, 65479, 53, 0, 65479, 54, 0, 65479, 55, 0, 65479, 56, 0, 65479, 57, 0, 65479, 58, 0, 65479, 59, 0, 65479, 60, 0, 65479, 61, 0, 65479, 62, 0, 65479, 63, 0, 65480, 65467, 0, 65480, 65468, 0, 65480, 65469, 0, 65480, 65470, 0, 65480, 65471, 0, 65480, 65472, 0, 65480, 65473, 0, 65480, 65474, 0, 65480, 65475, 0, 65480, 65476, 0, 65480, 65477, 0, 65480, 65478, 0, 65480, 65479, 0, 65480, 65480, 0, 65480, 65481, 0, 65480, 65482, 0, 65480, 65483, 0, 65480, 65484, 0, 65480, 65485, 0, 65480, 65486, 0, 65480, 65487, 0, 65480, 65488, 0, 65480, 65489, 0, 65480, 65490, 0, 65480, 65491, 0, 65480, 65492, 0, 65480, 65493, 0, 65480, 65494, 0, 65480, 65495, 0, 65480, 65496, 0, 65480, 65497, 0, 65480, 65498, 0, 65480, 65499, 0, 65480, 65500, 0, 65480, 65501, 0, 65480, 65502, 0, 65480, 65503, 0, 65480, 65504, 0, 65480, 65505, 0, 65480, 65506, 0, 65480, 65507, 0, 65480, 65508, 0, 65480, 65509, 0, 65480, 65510, 0, 65480, 65511, 0, 65480, 65512, 0, 65480, 65513, 0, 65480, 65514, 0, 65480, 65515, 0, 65480, 65516, 0, 65480, 65517, 0, 65480, 65518, 0, 65480, 65519, 0, 65480, 65520, 0, 65480, 65521, 0, 65480, 65522, 0, 65480, 65523, 0, 65480, 65524, 0, 65480, 65525, 0, 65480, 65526, 0, 65480, 65527, 0, 65480, 65528, 0, 65480, 65529, 0, 65480, 65530, 0, 65480, 65531, 0, 65480, 65532, 0, 65480, 65533, 0, 65480, 65534, 0, 65480, 65535, 0, 65480, 0, 0, 65480, 1, 0, 65480, 2, 0, 65480, 3, 0, 65480, 4, 0, 65480, 5, 0, 65480, 6, 0, 65480, 7, 0, 65480, 8, 0, 65480, 9, 0, 65480, 10, 0, 65480, 11, 0, 65480, 12, 0, 65480, 13, 0, 65480, 14, 0, 65480, 15, 0, 65480, 16, 0, 65480, 17, 0, 65480, 18, 0, 65480, 19, 0, 65480, 20, 0, 65480, 21, 0, 65480, 22, 0, 65480, 23, 0, 65480, 24, 0, 65480, 25, 0, 65480, 26, 0, 65480, 27, 0, 65480, 28, 0, 65480, 29, 0, 65480, 30, 0, 65480, 31, 0, 65480, 32, 0, 65480, 33, 0, 65480, 34, 0, 65480, 35, 0, 65480, 36, 0, 65480, 37, 0, 65480, 38, 0, 65480, 39, 0, 65480, 40, 0, 65480, 41, 0, 65480, 42, 0, 65480, 43, 0, 65480, 44, 0, 65480, 45, 0, 65480, 46, 0, 65480, 47, 0, 65480, 48, 0, 65480, 49, 0, 65480, 50, 0, 65480, 51, 0, 65480, 52, 0, 65480, 53, 0, 65480, 54, 0, 65480, 55, 0, 65480, 56, 0, 65480, 57, 0, 65480, 58, 0, 65480, 59, 0, 65480, 60, 0, 65480, 61, 0, 65480, 62, 0, 65480, 63, 0, 65481, 65467, 0, 65481, 65468, 0, 65481, 65469, 0, 65481, 65470, 0, 65481, 65471, 0, 65481, 65472, 0, 65481, 65473, 0, 65481, 65474, 0, 65481, 65475, 0, 65481, 65476, 0, 65481, 65477, 0, 65481, 65478, 0, 65481, 65479, 0, 65481, 65480, 0, 65481, 65481, 0, 65481, 65482, 0, 65481, 65483, 0, 65481, 65484, 0, 65481, 65485, 0, 65481, 65486, 0, 65481, 65487, 0, 65481, 65488, 0, 65481, 65489, 0, 65481, 65490, 0, 65481, 65491, 0, 65481, 65492, 0, 65481, 65493, 0, 65481, 65494, 0, 65481, 65495, 0, 65481, 65496, 0, 65481, 65497, 0, 65481, 65498, 0, 65481, 65499, 0, 65481, 65500, 0, 65481, 65501, 0, 65481, 65502, 0, 65481, 65503, 0, 65481, 65504, 0, 65481, 65505, 0, 65481, 65506, 0, 65481, 65507, 0, 65481, 65508, 0, 65481, 65509, 0, 65481, 65510, 0, 65481, 65511, 0, 65481, 65512, 0, 65481, 65513, 0, 65481, 65514, 0, 65481, 65515, 0, 65481, 65516, 0, 65481, 65517, 0, 65481, 65518, 0, 65481, 65519, 0, 65481, 65520, 0, 65481, 65521, 0, 65481, 65522, 0, 65481, 65523, 0, 65481, 65524, 0, 65481, 65525, 0, 65481, 65526, 0, 65481, 65527, 0, 65481, 65528, 0, 65481, 65529, 0, 65481, 65530, 0, 65481, 65531, 0, 65481, 65532, 0, 65481, 65533, 0, 65481, 65534, 0, 65481, 65535, 0, 65481, 0, 0, 65481, 1, 0, 65481, 2, 0, 65481, 3, 0, 65481, 4, 0, 65481, 5, 0, 65481, 6, 0, 65481, 7, 0, 65481, 8, 0, 65481, 9, 0, 65481, 10, 0, 65481, 11, 0, 65481, 12, 0, 65481, 13, 0, 65481, 14, 0, 65481, 15, 0, 65481, 16, 0, 65481, 17, 0, 65481, 18, 0, 65481, 19, 0, 65481, 20, 0, 65481, 21, 0, 65481, 22, 0, 65481, 23, 0, 65481, 24, 0, 65481, 25, 0, 65481, 26, 0, 65481, 27, 0, 65481, 28, 0, 65481, 29, 0, 65481, 30, 0, 65481, 31, 0, 65481, 32, 0, 65481, 33, 0, 65481, 34, 0, 65481, 35, 0, 65481, 36, 0, 65481, 37, 0, 65481, 38, 0, 65481, 39, 0, 65481, 40, 0, 65481, 41, 0, 65481, 42, 0, 65481, 43, 0, 65481, 44, 0, 65481, 45, 0, 65481, 46, 0, 65481, 47, 0, 65481, 48, 0, 65481, 49, 0, 65481, 50, 0, 65481, 51, 0, 65481, 52, 0, 65481, 53, 0, 65481, 54, 0, 65481, 55, 0, 65481, 56, 0, 65481, 57, 0, 65481, 58, 0, 65481, 59, 0, 65481, 60, 0, 65481, 61, 0, 65481, 62, 0, 65481, 63, 0, 65482, 65467, 0, 65482, 65468, 0, 65482, 65469, 0, 65482, 65470, 0, 65482, 65471, 0, 65482, 65472, 0, 65482, 65473, 0, 65482, 65474, 0, 65482, 65475, 0, 65482, 65476, 0, 65482, 65477, 0, 65482, 65478, 0, 65482, 65479, 0, 65482, 65480, 0, 65482, 65481, 0, 65482, 65482, 0, 65482, 65483, 0, 65482, 65484, 0, 65482, 65485, 0, 65482, 65486, 0, 65482, 65487, 0, 65482, 65488, 0, 65482, 65489, 0, 65482, 65490, 0, 65482, 65491, 0, 65482, 65492, 0, 65482, 65493, 0, 65482, 65494, 0, 65482, 65495, 0, 65482, 65496, 0, 65482, 65497, 0, 65482, 65498, 0, 65482, 65499, 0, 65482, 65500, 0, 65482, 65501, 0, 65482, 65502, 0, 65482, 65503, 0, 65482, 65504, 0, 65482, 65505, 0, 65482, 65506, 0, 65482, 65507, 0, 65482, 65508, 0, 65482, 65509, 0, 65482, 65510, 0, 65482, 65511, 0, 65482, 65512, 0, 65482, 65513, 0, 65482, 65514, 0, 65482, 65515, 0, 65482, 65516, 0, 65482, 65517, 0, 65482, 65518, 0, 65482, 65519, 0, 65482, 65520, 0, 65482, 65521, 0, 65482, 65522, 0, 65482, 65523, 0, 65482, 65524, 0, 65482, 65525, 0, 65482, 65526, 0, 65482, 65527, 0, 65482, 65528, 0, 65482, 65529, 0, 65482, 65530, 0, 65482, 65531, 0, 65482, 65532, 0, 65482, 65533, 0, 65482, 65534, 0, 65482, 65535, 0, 65482, 0, 0, 65482, 1, 0, 65482, 2, 0, 65482, 3, 0, 65482, 4, 0, 65482, 5, 0, 65482, 6, 0, 65482, 7, 0, 65482, 8, 0, 65482, 9, 0, 65482, 10, 0, 65482, 11, 0, 65482, 12, 0, 65482, 13, 0, 65482, 14, 0, 65482, 15, 0, 65482, 16, 0, 65482, 17, 0, 65482, 18, 0, 65482, 19, 0, 65482, 20, 0, 65482, 21, 0, 65482, 22, 0, 65482, 23, 0, 65482, 24, 0, 65482, 25, 0, 65482, 26, 0, 65482, 27, 0, 65482, 28, 0, 65482, 29, 0, 65482, 30, 0, 65482, 31, 0, 65482, 32, 0, 65482, 33, 0, 65482, 34, 0, 65482, 35, 0, 65482, 36, 0, 65482, 37, 0, 65482, 38, 0, 65482, 39, 0, 65482, 40, 0, 65482, 41, 0, 65482, 42, 0, 65482, 43, 0, 65482, 44, 0, 65482, 45, 0, 65482, 46, 0, 65482, 47, 0, 65482, 48, 0, 65482, 49, 0, 65482, 50, 0, 65482, 51, 0, 65482, 52, 0, 65482, 53, 0, 65482, 54, 0, 65482, 55, 0, 65482, 56, 0, 65482, 57, 0, 65482, 58, 0, 65482, 59, 0, 65482, 60, 0, 65482, 61, 0, 65482, 62, 0, 65482, 63, 0, 65483, 65467, 0, 65483, 65468, 0, 65483, 65469, 0, 65483, 65470, 0, 65483, 65471, 0, 65483, 65472, 0, 65483, 65473, 0, 65483, 65474, 0, 65483, 65475, 0, 65483, 65476, 0, 65483, 65477, 0, 65483, 65478, 0, 65483, 65479, 0, 65483, 65480, 0, 65483, 65481, 0, 65483, 65482, 0, 65483, 65483, 0, 65483, 65484, 0, 65483, 65485, 0, 65483, 65486, 0, 65483, 65487, 0, 65483, 65488, 0, 65483, 65489, 0, 65483, 65490, 0, 65483, 65491, 0, 65483, 65492, 0, 65483, 65493, 0, 65483, 65494, 0, 65483, 65495, 0, 65483, 65496, 0, 65483, 65497, 0, 65483, 65498, 0, 65483, 65499, 0, 65483, 65500, 0, 65483, 65501, 0, 65483, 65502, 0, 65483, 65503, 0, 65483, 65504, 0, 65483, 65505, 0, 65483, 65506, 0, 65483, 65507, 0, 65483, 65508, 0, 65483, 65509, 0, 65483, 65510, 0, 65483, 65511, 0, 65483, 65512, 0, 65483, 65513, 0, 65483, 65514, 0, 65483, 65515, 0, 65483, 65516, 0, 65483, 65517, 0, 65483, 65518, 0, 65483, 65519, 0, 65483, 65520, 0, 65483, 65521, 0, 65483, 65522, 0, 65483, 65523, 0, 65483, 65524, 0, 65483, 65525, 0, 65483, 65526, 0, 65483, 65527, 0, 65483, 65528, 0, 65483, 65529, 0, 65483, 65530, 0, 65483, 65531, 0, 65483, 65532, 0, 65483, 65533, 0, 65483, 65534, 0, 65483, 65535, 0, 65483, 0, 0, 65483, 1, 0, 65483, 2, 0, 65483, 3, 0, 65483, 4, 0, 65483, 5, 0, 65483, 6, 0, 65483, 7, 0, 65483, 8, 0, 65483, 9, 0, 65483, 10, 0, 65483, 11, 0, 65483, 12, 0, 65483, 13, 0, 65483, 14, 0, 65483, 15, 0, 65483, 16, 0, 65483, 17, 0, 65483, 18, 0, 65483, 19, 0, 65483, 20, 0, 65483, 21, 0, 65483, 22, 0, 65483, 23, 0, 65483, 24, 0, 65483, 25, 0, 65483, 26, 0, 65483, 27, 0, 65483, 28, 0, 65483, 29, 0, 65483, 30, 0, 65483, 31, 0, 65483, 32, 0, 65483, 33, 0, 65483, 34, 0, 65483, 35, 0, 65483, 36, 0, 65483, 37, 0, 65483, 38, 0, 65483, 39, 0, 65483, 40, 0, 65483, 41, 0, 65483, 42, 0, 65483, 43, 0, 65483, 44, 0, 65483, 45, 0, 65483, 46, 0, 65483, 47, 0, 65483, 48, 0, 65483, 49, 0, 65483, 50, 0, 65483, 51, 0, 65483, 52, 0, 65483, 53, 0, 65483, 54, 0, 65483, 55, 0, 65483, 56, 0, 65483, 57, 0, 65483, 58, 0, 65483, 59, 0, 65483, 60, 0, 65483, 61, 0, 65483, 62, 0, 65483, 63, 0, 65484, 65467, 0, 65484, 65468, 0, 65484, 65469, 0, 65484, 65470, 0, 65484, 65471, 0, 65484, 65472, 0, 65484, 65473, 0, 65484, 65474, 0, 65484, 65475, 0, 65484, 65476, 0, 65484, 65477, 0, 65484, 65478, 0, 65484, 65479, 0, 65484, 65480, 0, 65484, 65481, 0, 65484, 65482, 0, 65484, 65483, 0, 65484, 65484, 0, 65484, 65485, 0, 65484, 65486, 0, 65484, 65487, 0, 65484, 65488, 0, 65484, 65489, 0, 65484, 65490, 0, 65484, 65491, 0, 65484, 65492, 0, 65484, 65493, 0, 65484, 65494, 0, 65484, 65495, 0, 65484, 65496, 0, 65484, 65497, 0, 65484, 65498, 0, 65484, 65499, 0, 65484, 65500, 0, 65484, 65501, 0, 65484, 65502, 0, 65484, 65503, 0, 65484, 65504, 0, 65484, 65505, 0, 65484, 65506, 0, 65484, 65507, 0, 65484, 65508, 0, 65484, 65509, 0, 65484, 65510, 0, 65484, 65511, 0, 65484, 65512, 0, 65484, 65513, 0, 65484, 65514, 0, 65484, 65515, 0, 65484, 65516, 0, 65484, 65517, 0, 65484, 65518, 0, 65484, 65519, 0, 65484, 65520, 0, 65484, 65521, 0, 65484, 65522, 0, 65484, 65523, 0, 65484, 65524, 0, 65484, 65525, 0, 65484, 65526, 0, 65484, 65527, 0, 65484, 65528, 0, 65484, 65529, 0, 65484, 65530, 0, 65484, 65531, 0, 65484, 65532, 0, 65484, 65533, 0, 65484, 65534, 0, 65484, 65535, 0, 65484, 0, 0, 65484, 1, 0, 65484, 2, 0, 65484, 3, 0, 65484, 4, 0, 65484, 5, 0, 65484, 6, 0, 65484, 7, 0, 65484, 8, 0, 65484, 9, 0, 65484, 10, 0, 65484, 11, 0, 65484, 12, 0, 65484, 13, 0, 65484, 14, 0, 65484, 15, 0, 65484, 16, 0, 65484, 17, 0, 65484, 18, 0, 65484, 19, 0, 65484, 20, 0, 65484, 21, 0, 65484, 22, 0, 65484, 23, 0, 65484, 24, 0, 65484, 25, 0, 65484, 26, 0, 65484, 27, 0, 65484, 28, 0, 65484, 29, 0, 65484, 30, 0, 65484, 31, 0, 65484, 32, 0, 65484, 33, 0, 65484, 34, 0, 65484, 35, 0, 65484, 36, 0, 65484, 37, 0, 65484, 38, 0, 65484, 39, 0, 65484, 40, 0, 65484, 41, 0, 65484, 42, 0, 65484, 43, 0, 65484, 44, 0, 65484, 45, 0, 65484, 46, 0, 65484, 47, 0, 65484, 48, 0, 65484, 49, 0, 65484, 50, 0, 65484, 51, 0, 65484, 52, 0, 65484, 53, 0, 65484, 54, 0, 65484, 55, 0, 65484, 56, 0, 65484, 57, 0, 65484, 58, 0, 65484, 59, 0, 65484, 60, 0, 65484, 61, 0, 65484, 62, 0, 65484, 63, 0, 65485, 65467, 0, 65485, 65468, 0, 65485, 65469, 0, 65485, 65470, 0, 65485, 65471, 0, 65485, 65472, 0, 65485, 65473, 0, 65485, 65474, 0, 65485, 65475, 0, 65485, 65476, 0, 65485, 65477, 0, 65485, 65478, 0, 65485, 65479, 0, 65485, 65480, 0, 65485, 65481, 0, 65485, 65482, 0, 65485, 65483, 0, 65485, 65484, 0, 65485, 65485, 0, 65485, 65486, 0, 65485, 65487, 0, 65485, 65488, 0, 65485, 65489, 0, 65485, 65490, 0, 65485, 65491, 0, 65485, 65492, 0, 65485, 65493, 0, 65485, 65494, 0, 65485, 65495, 0, 65485, 65496, 0, 65485, 65497, 0, 65485, 65498, 0, 65485, 65499, 0, 65485, 65500, 0, 65485, 65501, 0, 65485, 65502, 0, 65485, 65503, 0, 65485, 65504, 0, 65485, 65505, 0, 65485, 65506, 0, 65485, 65507, 0, 65485, 65508, 0, 65485, 65509, 0, 65485, 65510, 0, 65485, 65511, 0, 65485, 65512, 0, 65485, 65513, 0, 65485, 65514, 0, 65485, 65515, 0, 65485, 65516, 0, 65485, 65517, 0, 65485, 65518, 0, 65485, 65519, 0, 65485, 65520, 0, 65485, 65521, 0, 65485, 65522, 0, 65485, 65523, 0, 65485, 65524, 0, 65485, 65525, 0, 65485, 65526, 0, 65485, 65527, 0, 65485, 65528, 0, 65485, 65529, 0, 65485, 65530, 0, 65485, 65531, 0, 65485, 65532, 0, 65485, 65533, 0, 65485, 65534, 0, 65485, 65535, 0, 65485, 0, 0, 65485, 1, 0, 65485, 2, 0, 65485, 3, 0, 65485, 4, 0, 65485, 5, 0, 65485, 6, 0, 65485, 7, 0, 65485, 8, 0, 65485, 9, 0, 65485, 10, 0, 65485, 11, 0, 65485, 12, 0, 65485, 13, 0, 65485, 14, 0, 65485, 15, 0, 65485, 16, 0, 65485, 17, 0, 65485, 18, 0, 65485, 19, 0, 65485, 20, 0, 65485, 21, 0, 65485, 22, 0, 65485, 23, 0, 65485, 24, 0, 65485, 25, 0, 65485, 26, 0, 65485, 27, 0, 65485, 28, 0, 65485, 29, 0, 65485, 30, 0, 65485, 31, 0, 65485, 32, 0, 65485, 33, 0, 65485, 34, 0, 65485, 35, 0, 65485, 36, 0, 65485, 37, 0, 65485, 38, 0, 65485, 39, 0, 65485, 40, 0, 65485, 41, 0, 65485, 42, 0, 65485, 43, 0, 65485, 44, 0, 65485, 45, 0, 65485, 46, 0, 65485, 47, 0, 65485, 48, 0, 65485, 49, 0, 65485, 50, 0, 65485, 51, 0, 65485, 52, 0, 65485, 53, 0, 65485, 54, 0, 65485, 55, 0, 65485, 56, 0, 65485, 57, 0, 65485, 58, 0, 65485, 59, 0, 65485, 60, 0, 65485, 61, 0, 65485, 62, 0, 65485, 63, 0, 65486, 65467, 0, 65486, 65468, 0, 65486, 65469, 0, 65486, 65470, 0, 65486, 65471, 0, 65486, 65472, 0, 65486, 65473, 0, 65486, 65474, 0, 65486, 65475, 0, 65486, 65476, 0, 65486, 65477, 0, 65486, 65478, 0, 65486, 65479, 0, 65486, 65480, 0, 65486, 65481, 0, 65486, 65482, 0, 65486, 65483, 0, 65486, 65484, 0, 65486, 65485, 0, 65486, 65486, 0, 65486, 65487, 0, 65486, 65488, 0, 65486, 65489, 0, 65486, 65490, 0, 65486, 65491, 0, 65486, 65492, 0, 65486, 65493, 0, 65486, 65494, 0, 65486, 65495, 0, 65486, 65496, 0, 65486, 65497, 0, 65486, 65498, 0, 65486, 65499, 0, 65486, 65500, 0, 65486, 65501, 0, 65486, 65502, 0, 65486, 65503, 0, 65486, 65504, 0, 65486, 65505, 0, 65486, 65506, 0, 65486, 65507, 0, 65486, 65508, 0, 65486, 65509, 0, 65486, 65510, 0, 65486, 65511, 0, 65486, 65512, 0, 65486, 65513, 0, 65486, 65514, 0, 65486, 65515, 0, 65486, 65516, 0, 65486, 65517, 0, 65486, 65518, 0, 65486, 65519, 0, 65486, 65520, 0, 65486, 65521, 0, 65486, 65522, 0, 65486, 65523, 0, 65486, 65524, 0, 65486, 65525, 0, 65486, 65526, 0, 65486, 65527, 0, 65486, 65528, 0, 65486, 65529, 0, 65486, 65530, 0, 65486, 65531, 0, 65486, 65532, 0, 65486, 65533, 0, 65486, 65534, 0, 65486, 65535, 0, 65486, 0, 0, 65486, 1, 0, 65486, 2, 0, 65486, 3, 0, 65486, 4, 0, 65486, 5, 0, 65486, 6, 0, 65486, 7, 0, 65486, 8, 0, 65486, 9, 0, 65486, 10, 0, 65486, 11, 0, 65486, 12, 0, 65486, 13, 0, 65486, 14, 0, 65486, 15, 0, 65486, 16, 0, 65486, 17, 0, 65486, 18, 0, 65486, 19, 0, 65486, 20, 0, 65486, 21, 0, 65486, 22, 0, 65486, 23, 0, 65486, 24, 0, 65486, 25, 0, 65486, 26, 0, 65486, 27, 0, 65486, 28, 0, 65486, 29, 0, 65486, 30, 0, 65486, 31, 0, 65486, 32, 0, 65486, 33, 0, 65486, 34, 0, 65486, 35, 0, 65486, 36, 0, 65486, 37, 0, 65486, 38, 0, 65486, 39, 0, 65486, 40, 0, 65486, 41, 0, 65486, 42, 0, 65486, 43, 0, 65486, 44, 0, 65486, 45, 0, 65486, 46, 0, 65486, 47, 0, 65486, 48, 0, 65486, 49, 0, 65486, 50, 0, 65486, 51, 0, 65486, 52, 0, 65486, 53, 0, 65486, 54, 0, 65486, 55, 0, 65486, 56, 0, 65486, 57, 0, 65486, 58, 0, 65486, 59, 0, 65486, 60, 0, 65486, 61, 0, 65486, 62, 0, 65486, 63, 0, 65487, 65467, 0, 65487, 65468, 0, 65487, 65469, 0, 65487, 65470, 0, 65487, 65471, 0, 65487, 65472, 0, 65487, 65473, 0, 65487, 65474, 0, 65487, 65475, 0, 65487, 65476, 0, 65487, 65477, 0, 65487, 65478, 0, 65487, 65479, 0, 65487, 65480, 0, 65487, 65481, 0, 65487, 65482, 0, 65487, 65483, 0, 65487, 65484, 0, 65487, 65485, 0, 65487, 65486, 0, 65487, 65487, 0, 65487, 65488, 0, 65487, 65489, 0, 65487, 65490, 0, 65487, 65491, 0, 65487, 65492, 0, 65487, 65493, 0, 65487, 65494, 0, 65487, 65495, 0, 65487, 65496, 0, 65487, 65497, 0, 65487, 65498, 0, 65487, 65499, 0, 65487, 65500, 0, 65487, 65501, 0, 65487, 65502, 0, 65487, 65503, 0, 65487, 65504, 0, 65487, 65505, 0, 65487, 65506, 0, 65487, 65507, 0, 65487, 65508, 0, 65487, 65509, 0, 65487, 65510, 0, 65487, 65511, 0, 65487, 65512, 0, 65487, 65513, 0, 65487, 65514, 0, 65487, 65515, 0, 65487, 65516, 0, 65487, 65517, 0, 65487, 65518, 0, 65487, 65519, 0, 65487, 65520, 0, 65487, 65521, 0, 65487, 65522, 0, 65487, 65523, 0, 65487, 65524, 0, 65487, 65525, 0, 65487, 65526, 0, 65487, 65527, 0, 65487, 65528, 0, 65487, 65529, 0, 65487, 65530, 0, 65487, 65531, 0, 65487, 65532, 0, 65487, 65533, 0, 65487, 65534, 0, 65487, 65535, 0, 65487, 0, 0, 65487, 1, 0, 65487, 2, 0, 65487, 3, 0, 65487, 4, 0, 65487, 5, 0, 65487, 6, 0, 65487, 7, 0, 65487, 8, 0, 65487, 9, 0, 65487, 10, 0, 65487, 11, 0, 65487, 12, 0, 65487, 13, 0, 65487, 14, 0, 65487, 15, 0, 65487, 16, 0, 65487, 17, 0, 65487, 18, 0, 65487, 19, 0, 65487, 20, 0, 65487, 21, 0, 65487, 22, 0, 65487, 23, 0, 65487, 24, 0, 65487, 25, 0, 65487, 26, 0, 65487, 27, 0, 65487, 28, 0, 65487, 29, 0, 65487, 30, 0, 65487, 31, 0, 65487, 32, 0, 65487, 33, 0, 65487, 34, 0, 65487, 35, 0, 65487, 36, 0, 65487, 37, 0, 65487, 38, 0, 65487, 39, 0, 65487, 40, 0, 65487, 41, 0, 65487, 42, 0, 65487, 43, 0, 65487, 44, 0, 65487, 45, 0, 65487, 46, 0, 65487, 47, 0, 65487, 48, 0, 65487, 49, 0, 65487, 50, 0, 65487, 51, 0, 65487, 52, 0, 65487, 53, 0, 65487, 54, 0, 65487, 55, 0, 65487, 56, 0, 65487, 57, 0, 65487, 58, 0, 65487, 59, 0, 65487, 60, 0, 65487, 61, 0, 65487, 62, 0, 65487, 63, 0, 65488, 65467, 0, 65488, 65468, 0, 65488, 65469, 0, 65488, 65470, 0, 65488, 65471, 0, 65488, 65472, 0, 65488, 65473, 0, 65488, 65474, 0, 65488, 65475, 0, 65488, 65476, 0, 65488, 65477, 0, 65488, 65478, 0, 65488, 65479, 0, 65488, 65480, 0, 65488, 65481, 0, 65488, 65482, 0, 65488, 65483, 0, 65488, 65484, 0, 65488, 65485, 0, 65488, 65486, 0, 65488, 65487, 0, 65488, 65488, 0, 65488, 65489, 0, 65488, 65490, 0, 65488, 65491, 0, 65488, 65492, 0, 65488, 65493, 0, 65488, 65494, 0, 65488, 65495, 0, 65488, 65496, 0, 65488, 65497, 0, 65488, 65498, 0, 65488, 65499, 0, 65488, 65500, 0, 65488, 65501, 0, 65488, 65502, 0, 65488, 65503, 0, 65488, 65504, 0, 65488, 65505, 0, 65488, 65506, 0, 65488, 65507, 0, 65488, 65508, 0, 65488, 65509, 0, 65488, 65510, 0, 65488, 65511, 0, 65488, 65512, 0, 65488, 65513, 0, 65488, 65514, 0, 65488, 65515, 0, 65488, 65516, 0, 65488, 65517, 0, 65488, 65518, 0, 65488, 65519, 0, 65488, 65520, 0, 65488, 65521, 0, 65488, 65522, 0, 65488, 65523, 0, 65488, 65524, 0, 65488, 65525, 0, 65488, 65526, 0, 65488, 65527, 0, 65488, 65528, 0, 65488, 65529, 0, 65488, 65530, 0, 65488, 65531, 0, 65488, 65532, 0, 65488, 65533, 0, 65488, 65534, 0, 65488, 65535, 0, 65488, 0, 0, 65488, 1, 0, 65488, 2, 0, 65488, 3, 0, 65488, 4, 0, 65488, 5, 0, 65488, 6, 0, 65488, 7, 0, 65488, 8, 0, 65488, 9, 0, 65488, 10, 0, 65488, 11, 0, 65488, 12, 0, 65488, 13, 0, 65488, 14, 0, 65488, 15, 0, 65488, 16, 0, 65488, 17, 0, 65488, 18, 0, 65488, 19, 0, 65488, 20, 0, 65488, 21, 0, 65488, 22, 0, 65488, 23, 0, 65488, 24, 0, 65488, 25, 0, 65488, 26, 0, 65488, 27, 0, 65488, 28, 0, 65488, 29, 0, 65488, 30, 0, 65488, 31, 0, 65488, 32, 0, 65488, 33, 0, 65488, 34, 0, 65488, 35, 0, 65488, 36, 0, 65488, 37, 0, 65488, 38, 0, 65488, 39, 0, 65488, 40, 0, 65488, 41, 0, 65488, 42, 0, 65488, 43, 0, 65488, 44, 0, 65488, 45, 0, 65488, 46, 0, 65488, 47, 0, 65488, 48, 0, 65488, 49, 0, 65488, 50, 0, 65488, 51, 0, 65488, 52, 0, 65488, 53, 0, 65488, 54, 0, 65488, 55, 0, 65488, 56, 0, 65488, 57, 0, 65488, 58, 0, 65488, 59, 0, 65488, 60, 0, 65488, 61, 0, 65488, 62, 0, 65488, 63, 0, 65489, 65467, 0, 65489, 65468, 0, 65489, 65469, 0, 65489, 65470, 0, 65489, 65471, 0, 65489, 65472, 0, 65489, 65473, 0, 65489, 65474, 0, 65489, 65475, 0, 65489, 65476, 0, 65489, 65477, 0, 65489, 65478, 0, 65489, 65479, 0, 65489, 65480, 0, 65489, 65481, 0, 65489, 65482, 0, 65489, 65483, 0, 65489, 65484, 0, 65489, 65485, 0, 65489, 65486, 0, 65489, 65487, 0, 65489, 65488, 0, 65489, 65489, 0, 65489, 65490, 0, 65489, 65491, 0, 65489, 65492, 0, 65489, 65493, 0, 65489, 65494, 0, 65489, 65495, 0, 65489, 65496, 0, 65489, 65497, 0, 65489, 65498, 0, 65489, 65499, 0, 65489, 65500, 0, 65489, 65501, 0, 65489, 65502, 0, 65489, 65503, 0, 65489, 65504, 0, 65489, 65505, 0, 65489, 65506, 0, 65489, 65507, 0, 65489, 65508, 0, 65489, 65509, 0, 65489, 65510, 0, 65489, 65511, 0, 65489, 65512, 0, 65489, 65513, 0, 65489, 65514, 0, 65489, 65515, 0, 65489, 65516, 0, 65489, 65517, 0, 65489, 65518, 0, 65489, 65519, 0, 65489, 65520, 0, 65489, 65521, 0, 65489, 65522, 0, 65489, 65523, 0, 65489, 65524, 0, 65489, 65525, 0, 65489, 65526, 0, 65489, 65527, 0, 65489, 65528, 0, 65489, 65529, 0, 65489, 65530, 0, 65489, 65531, 0, 65489, 65532, 0, 65489, 65533, 0, 65489, 65534, 0, 65489, 65535, 0, 65489, 0, 0, 65489, 1, 0, 65489, 2, 0, 65489, 3, 0, 65489, 4, 0, 65489, 5, 0, 65489, 6, 0, 65489, 7, 0, 65489, 8, 0, 65489, 9, 0, 65489, 10, 0, 65489, 11, 0, 65489, 12, 0, 65489, 13, 0, 65489, 14, 0, 65489, 15, 0, 65489, 16, 0, 65489, 17, 0, 65489, 18, 0, 65489, 19, 0, 65489, 20, 0, 65489, 21, 0, 65489, 22, 0, 65489, 23, 0, 65489, 24, 0, 65489, 25, 0, 65489, 26, 0, 65489, 27, 0, 65489, 28, 0, 65489, 29, 0, 65489, 30, 0, 65489, 31, 0, 65489, 32, 0, 65489, 33, 0, 65489, 34, 0, 65489, 35, 0, 65489, 36, 0, 65489, 37, 0, 65489, 38, 0, 65489, 39, 0, 65489, 40, 0, 65489, 41, 0, 65489, 42, 0, 65489, 43, 0, 65489, 44, 0, 65489, 45, 0, 65489, 46, 0, 65489, 47, 0, 65489, 48, 0, 65489, 49, 0, 65489, 50, 0, 65489, 51, 0, 65489, 52, 0, 65489, 53, 0, 65489, 54, 0, 65489, 55, 0, 65489, 56, 0, 65489, 57, 0, 65489, 58, 0, 65489, 59, 0, 65489, 60, 0, 65489, 61, 0, 65489, 62, 0, 65489, 63, 0, 65490, 65467, 0, 65490, 65468, 0, 65490, 65469, 0, 65490, 65470, 0, 65490, 65471, 0, 65490, 65472, 0, 65490, 65473, 0, 65490, 65474, 0, 65490, 65475, 0, 65490, 65476, 0, 65490, 65477, 0, 65490, 65478, 0, 65490, 65479, 0, 65490, 65480, 0, 65490, 65481, 0, 65490, 65482, 0, 65490, 65483, 0, 65490, 65484, 0, 65490, 65485, 0, 65490, 65486, 0, 65490, 65487, 0, 65490, 65488, 0, 65490, 65489, 0, 65490, 65490, 0, 65490, 65491, 0, 65490, 65492, 0, 65490, 65493, 0, 65490, 65494, 0, 65490, 65495, 0, 65490, 65496, 0, 65490, 65497, 0, 65490, 65498, 0, 65490, 65499, 0, 65490, 65500, 0, 65490, 65501, 0, 65490, 65502, 0, 65490, 65503, 0, 65490, 36, 0, 65490, 37, 0, 65490, 38, 0, 65490, 39, 0, 65490, 40, 0, 65490, 41, 0, 65490, 42, 0, 65490, 43, 0, 65490, 44, 0, 65490, 45, 0, 65490, 46, 0, 65490, 47, 0, 65490, 48, 0, 65490, 49, 0, 65490, 50, 0, 65490, 51, 0, 65490, 52, 0, 65490, 53, 0, 65490, 54, 0, 65490, 55, 0, 65490, 56, 0, 65490, 57, 0, 65490, 58, 0, 65490, 59, 0, 65490, 60, 0, 65490, 61, 0, 65490, 62, 0, 65490, 63, 0, 65491, 65467, 0, 65491, 65468, 0, 65491, 65469, 0, 65491, 65470, 0, 65491, 65471, 0, 65491, 65472, 0, 65491, 65473, 0, 65491, 65474, 0, 65491, 65475, 0, 65491, 65476, 0, 65491, 65477, 0, 65491, 65478, 0, 65491, 65479, 0, 65491, 65480, 0, 65491, 65481, 0, 65491, 65482, 0, 65491, 65483, 0, 65491, 65484, 0, 65491, 65485, 0, 65491, 65486, 0, 65491, 65487, 0, 65491, 65488, 0, 65491, 65489, 0, 65491, 65490, 0, 65491, 65491, 0, 65491, 65492, 0, 65491, 65493, 0, 65491, 65494, 0, 65491, 65495, 0, 65491, 65496, 0, 65491, 65497, 0, 65491, 65498, 0, 65491, 65499, 0, 65491, 65500, 0, 65491, 65501, 0, 65491, 65502, 0, 65491, 65503, 0, 65491, 36, 0, 65491, 37, 0, 65491, 38, 0, 65491, 39, 0, 65491, 40, 0, 65491, 41, 0, 65491, 42, 0, 65491, 43, 0, 65491, 44, 0, 65491, 45, 0, 65491, 46, 0, 65491, 47, 0, 65491, 48, 0, 65491, 49, 0, 65491, 50, 0, 65491, 51, 0, 65491, 52, 0, 65491, 53, 0, 65491, 54, 0, 65491, 55, 0, 65491, 56, 0, 65491, 57, 0, 65491, 58, 0, 65491, 59, 0, 65491, 60, 0, 65491, 61, 0, 65491, 62, 0, 65491, 63, 0, 65492, 65467, 0, 65492, 65468, 0, 65492, 65469, 0, 65492, 65470, 0, 65492, 65471, 0, 65492, 65472, 0, 65492, 65473, 0, 65492, 65474, 0, 65492, 65475, 0, 65492, 65476, 0, 65492, 65477, 0, 65492, 65478, 0, 65492, 65479, 0, 65492, 65480, 0, 65492, 65481, 0, 65492, 65482, 0, 65492, 65483, 0, 65492, 65484, 0, 65492, 65485, 0, 65492, 65486, 0, 65492, 65487, 0, 65492, 65488, 0, 65492, 65489, 0, 65492, 65490, 0, 65492, 65491, 0, 65492, 65492, 0, 65492, 65493, 0, 65492, 65494, 0, 65492, 65495, 0, 65492, 65496, 0, 65492, 65497, 0, 65492, 65498, 0, 65492, 65499, 0, 65492, 65500, 0, 65492, 65501, 0, 65492, 65502, 0, 65492, 65503, 0, 65492, 36, 0, 65492, 37, 0, 65492, 38, 0, 65492, 39, 0, 65492, 40, 0, 65492, 41, 0, 65492, 42, 0, 65492, 43, 0, 65492, 44, 0, 65492, 45, 0, 65492, 46, 0, 65492, 47, 0, 65492, 48, 0, 65492, 49, 0, 65492, 50, 0, 65492, 51, 0, 65492, 52, 0, 65492, 53, 0, 65492, 54, 0, 65492, 55, 0, 65492, 56, 0, 65492, 57, 0, 65492, 58, 0, 65492, 59, 0, 65492, 60, 0, 65492, 61, 0, 65492, 62, 0, 65492, 63, 0, 65493, 65467, 0, 65493, 65468, 0, 65493, 65469, 0, 65493, 65470, 0, 65493, 65471, 0, 65493, 65472, 0, 65493, 65473, 0, 65493, 65474, 0, 65493, 65475, 0, 65493, 65476, 0, 65493, 65477, 0, 65493, 65478, 0, 65493, 65479, 0, 65493, 65480, 0, 65493, 65481, 0, 65493, 65482, 0, 65493, 65483, 0, 65493, 65484, 0, 65493, 65485, 0, 65493, 65486, 0, 65493, 65487, 0, 65493, 65488, 0, 65493, 65489, 0, 65493, 65490, 0, 65493, 65491, 0, 65493, 65492, 0, 65493, 65493, 0, 65493, 65494, 0, 65493, 65495, 0, 65493, 65496, 0, 65493, 65497, 0, 65493, 65498, 0, 65493, 65499, 0, 65493, 65500, 0, 65493, 65501, 0, 65493, 65502, 0, 65493, 65503, 0, 65493, 36, 0, 65493, 37, 0, 65493, 38, 0, 65493, 39, 0, 65493, 40, 0, 65493, 41, 0, 65493, 42, 0, 65493, 43, 0, 65493, 44, 0, 65493, 45, 0, 65493, 46, 0, 65493, 47, 0, 65493, 48, 0, 65493, 49, 0, 65493, 50, 0, 65493, 51, 0, 65493, 52, 0, 65493, 53, 0, 65493, 54, 0, 65493, 55, 0, 65493, 56, 0, 65493, 57, 0, 65493, 58, 0, 65493, 59, 0, 65493, 60, 0, 65493, 61, 0, 65493, 62, 0, 65493, 63, 0, 65494, 65467, 0, 65494, 65468, 0, 65494, 65469, 0, 65494, 65470, 0, 65494, 65471, 0, 65494, 65472, 0, 65494, 65473, 0, 65494, 65474, 0, 65494, 65475, 0, 65494, 65476, 0, 65494, 65477, 0, 65494, 65478, 0, 65494, 65479, 0, 65494, 65480, 0, 65494, 65481, 0, 65494, 65482, 0, 65494, 65483, 0, 65494, 65484, 0, 65494, 65485, 0, 65494, 65486, 0, 65494, 65487, 0, 65494, 65488, 0, 65494, 65489, 0, 65494, 65490, 0, 65494, 65491, 0, 65494, 65492, 0, 65494, 65493, 0, 65494, 65494, 0, 65494, 65495, 0, 65494, 65496, 0, 65494, 65497, 0, 65494, 65498, 0, 65494, 65499, 0, 65494, 65500, 0, 65494, 65501, 0, 65494, 65502, 0, 65494, 65503, 0, 65494, 36, 0, 65494, 37, 0, 65494, 38, 0, 65494, 39, 0, 65494, 40, 0, 65494, 41, 0, 65494, 42, 0, 65494, 43, 0, 65494, 44, 0, 65494, 45, 0, 65494, 46, 0, 65494, 47, 0, 65494, 48, 0, 65494, 49, 0, 65494, 50, 0, 65494, 51, 0, 65494, 52, 0, 65494, 53, 0, 65494, 54, 0, 65494, 55, 0, 65494, 56, 0, 65494, 57, 0, 65494, 58, 0, 65494, 59, 0, 65494, 60, 0, 65494, 61, 0, 65494, 62, 0, 65494, 63, 0, 65495, 65467, 0, 65495, 65468, 0, 65495, 65469, 0, 65495, 65470, 0, 65495, 65471, 0, 65495, 65472, 0, 65495, 65473, 0, 65495, 65474, 0, 65495, 65475, 0, 65495, 65476, 0, 65495, 65477, 0, 65495, 65478, 0, 65495, 65479, 0, 65495, 65480, 0, 65495, 65481, 0, 65495, 65482, 0, 65495, 65483, 0, 65495, 65484, 0, 65495, 65485, 0, 65495, 65486, 0, 65495, 65487, 0, 65495, 65488, 0, 65495, 65489, 0, 65495, 65490, 0, 65495, 65491, 0, 65495, 65492, 0, 65495, 65493, 0, 65495, 65494, 0, 65495, 65495, 0, 65495, 65496, 0, 65495, 65497, 0, 65495, 65498, 0, 65495, 65499, 0, 65495, 65500, 0, 65495, 65501, 0, 65495, 65502, 0, 65495, 65503, 0, 65495, 36, 0, 65495, 37, 0, 65495, 38, 0, 65495, 39, 0, 65495, 40, 0, 65495, 41, 0, 65495, 42, 0, 65495, 43, 0, 65495, 44, 0, 65495, 45, 0, 65495, 46, 0, 65495, 47, 0, 65495, 48, 0, 65495, 49, 0, 65495, 50, 0, 65495, 51, 0, 65495, 52, 0, 65495, 53, 0, 65495, 54, 0, 65495, 55, 0, 65495, 56, 0, 65495, 57, 0, 65495, 58, 0, 65495, 59, 0, 65495, 60, 0, 65495, 61, 0, 65495, 62, 0, 65495, 63, 0, 65496, 65467, 0, 65496, 65468, 0, 65496, 65469, 0, 65496, 65470, 0, 65496, 65471, 0, 65496, 65472, 0, 65496, 65473, 0, 65496, 65474, 0, 65496, 65475, 0, 65496, 65476, 0, 65496, 65477, 0, 65496, 65478, 0, 65496, 65479, 0, 65496, 65480, 0, 65496, 65481, 0, 65496, 65482, 0, 65496, 65483, 0, 65496, 65484, 0, 65496, 65485, 0, 65496, 65486, 0, 65496, 65487, 0, 65496, 65488, 0, 65496, 65489, 0, 65496, 65490, 0, 65496, 65491, 0, 65496, 65492, 0, 65496, 65493, 0, 65496, 65494, 0, 65496, 65495, 0, 65496, 65496, 0, 65496, 65497, 0, 65496, 65498, 0, 65496, 65499, 0, 65496, 65500, 0, 65496, 65501, 0, 65496, 65502, 0, 65496, 65503, 0, 65496, 36, 0, 65496, 37, 0, 65496, 38, 0, 65496, 39, 0, 65496, 40, 0, 65496, 41, 0, 65496, 42, 0, 65496, 43, 0, 65496, 44, 0, 65496, 45, 0, 65496, 46, 0, 65496, 47, 0, 65496, 48, 0, 65496, 49, 0, 65496, 50, 0, 65496, 51, 0, 65496, 52, 0, 65496, 53, 0, 65496, 54, 0, 65496, 55, 0, 65496, 56, 0, 65496, 57, 0, 65496, 58, 0, 65496, 59, 0, 65496, 60, 0, 65496, 61, 0, 65496, 62, 0, 65496, 63, 0, 65497, 65467, 0, 65497, 65468, 0, 65497, 65469, 0, 65497, 65470, 0, 65497, 65471, 0, 65497, 65472, 0, 65497, 65473, 0, 65497, 65474, 0, 65497, 65475, 0, 65497, 65476, 0, 65497, 65477, 0, 65497, 65478, 0, 65497, 65479, 0, 65497, 65480, 0, 65497, 65481, 0, 65497, 65482, 0, 65497, 65483, 0, 65497, 65484, 0, 65497, 65485, 0, 65497, 65486, 0, 65497, 65487, 0, 65497, 65488, 0, 65497, 65489, 0, 65497, 65490, 0, 65497, 65491, 0, 65497, 65492, 0, 65497, 65493, 0, 65497, 65494, 0, 65497, 65495, 0, 65497, 65496, 0, 65497, 65497, 0, 65497, 65498, 0, 65497, 65499, 0, 65497, 65500, 0, 65497, 65501, 0, 65497, 65502, 0, 65497, 65503, 0, 65497, 36, 0, 65497, 37, 0, 65497, 38, 0, 65497, 39, 0, 65497, 40, 0, 65497, 41, 0, 65497, 42, 0, 65497, 43, 0, 65497, 44, 0, 65497, 45, 0, 65497, 46, 0, 65497, 47, 0, 65497, 48, 0, 65497, 49, 0, 65497, 50, 0, 65497, 51, 0, 65497, 52, 0, 65497, 53, 0, 65497, 54, 0, 65497, 55, 0, 65497, 56, 0, 65497, 57, 0, 65497, 58, 0, 65497, 59, 0, 65497, 60, 0, 65497, 61, 0, 65497, 62, 0, 65497, 63, 0, 65498, 65467, 0, 65498, 65468, 0, 65498, 65469, 0, 65498, 65470, 0, 65498, 65471, 0, 65498, 65472, 0, 65498, 65473, 0, 65498, 65474, 0, 65498, 65475, 0, 65498, 65476, 0, 65498, 65477, 0, 65498, 65478, 0, 65498, 65479, 0, 65498, 65480, 0, 65498, 65481, 0, 65498, 65482, 0, 65498, 65483, 0, 65498, 65484, 0, 65498, 65485, 0, 65498, 65486, 0, 65498, 65487, 0, 65498, 65488, 0, 65498, 65489, 0, 65498, 65490, 0, 65498, 65491, 0, 65498, 65492, 0, 65498, 65493, 0, 65498, 65494, 0, 65498, 65495, 0, 65498, 65496, 0, 65498, 65497, 0, 65498, 65498, 0, 65498, 65499, 0, 65498, 65500, 0, 65498, 65501, 0, 65498, 65502, 0, 65498, 65503, 0, 65498, 36, 0, 65498, 37, 0, 65498, 38, 0, 65498, 39, 0, 65498, 40, 0, 65498, 41, 0, 65498, 42, 0, 65498, 43, 0, 65498, 44, 0, 65498, 45, 0, 65498, 46, 0, 65498, 47, 0, 65498, 48, 0, 65498, 49, 0, 65498, 50, 0, 65498, 51, 0, 65498, 52, 0, 65498, 53, 0, 65498, 54, 0, 65498, 55, 0, 65498, 56, 0, 65498, 57, 0, 65498, 58, 0, 65498, 59, 0, 65498, 60, 0, 65498, 61, 0, 65498, 62, 0, 65498, 63, 0, 65499, 65467, 0, 65499, 65468, 0, 65499, 65469, 0, 65499, 65470, 0, 65499, 65471, 0, 65499, 65472, 0, 65499, 65473, 0, 65499, 65474, 0, 65499, 65475, 0, 65499, 65476, 0, 65499, 65477, 0, 65499, 65478, 0, 65499, 65479, 0, 65499, 65480, 0, 65499, 65481, 0, 65499, 65482, 0, 65499, 65483, 0, 65499, 65484, 0, 65499, 65485, 0, 65499, 65486, 0, 65499, 65487, 0, 65499, 65488, 0, 65499, 65489, 0, 65499, 65490, 0, 65499, 65491, 0, 65499, 65492, 0, 65499, 65493, 0, 65499, 65494, 0, 65499, 65495, 0, 65499, 65496, 0, 65499, 65497, 0, 65499, 65498, 0, 65499, 65499, 0, 65499, 65500, 0, 65499, 65501, 0, 65499, 65502, 0, 65499, 65503, 0, 65499, 36, 0, 65499, 37, 0, 65499, 38, 0, 65499, 39, 0, 65499, 40, 0, 65499, 41, 0, 65499, 42, 0, 65499, 43, 0, 65499, 44, 0, 65499, 45, 0, 65499, 46, 0, 65499, 47, 0, 65499, 48, 0, 65499, 49, 0, 65499, 50, 0, 65499, 51, 0, 65499, 52, 0, 65499, 53, 0, 65499, 54, 0, 65499, 55, 0, 65499, 56, 0, 65499, 57, 0, 65499, 58, 0, 65499, 59, 0, 65499, 60, 0, 65499, 61, 0, 65499, 62, 0, 65499, 63, 0, 65500, 65467, 0, 65500, 65468, 0, 65500, 65469, 0, 65500, 65470, 0, 65500, 65471, 0, 65500, 65472, 0, 65500, 65473, 0, 65500, 65474, 0, 65500, 65475, 0, 65500, 65476, 0, 65500, 65477, 0, 65500, 65478, 0, 65500, 65479, 0, 65500, 65480, 0, 65500, 65481, 0, 65500, 65482, 0, 65500, 65483, 0, 65500, 65484, 0, 65500, 65485, 0, 65500, 65486, 0, 65500, 65487, 0, 65500, 65488, 0, 65500, 65489, 0, 65500, 65490, 0, 65500, 65491, 0, 65500, 65492, 0, 65500, 65493, 0, 65500, 65494, 0, 65500, 65495, 0, 65500, 65496, 0, 65500, 65497, 0, 65500, 65498, 0, 65500, 65499, 0, 65500, 65500, 0, 65500, 65501, 0, 65500, 65502, 0, 65500, 65503, 0, 65500, 36, 0, 65500, 37, 0, 65500, 38, 0, 65500, 39, 0, 65500, 40, 0, 65500, 41, 0, 65500, 42, 0, 65500, 43, 0, 65500, 44, 0, 65500, 45, 0, 65500, 46, 0, 65500, 47, 0, 65500, 48, 0, 65500, 49, 0, 65500, 50, 0, 65500, 51, 0, 65500, 52, 0, 65500, 53, 0, 65500, 54, 0, 65500, 55, 0, 65500, 56, 0, 65500, 57, 0, 65500, 58, 0, 65500, 59, 0, 65500, 60, 0, 65500, 61, 0, 65500, 62, 0, 65500, 63, 0, 65501, 65467, 0, 65501, 65468, 0, 65501, 65469, 0, 65501, 65470, 0, 65501, 65471, 0, 65501, 65472, 0, 65501, 65473, 0, 65501, 65474, 0, 65501, 65475, 0, 65501, 65476, 0, 65501, 65477, 0, 65501, 65478, 0, 65501, 65479, 0, 65501, 65480, 0, 65501, 65481, 0, 65501, 65482, 0, 65501, 65483, 0, 65501, 65484, 0, 65501, 65485, 0, 65501, 65486, 0, 65501, 65487, 0, 65501, 65488, 0, 65501, 65489, 0, 65501, 65490, 0, 65501, 65491, 0, 65501, 65492, 0, 65501, 65493, 0, 65501, 65494, 0, 65501, 65495, 0, 65501, 65496, 0, 65501, 65497, 0, 65501, 65498, 0, 65501, 65499, 0, 65501, 65500, 0, 65501, 65501, 0, 65501, 65502, 0, 65501, 65503, 0, 65501, 36, 0, 65501, 37, 0, 65501, 38, 0, 65501, 39, 0, 65501, 40, 0, 65501, 41, 0, 65501, 42, 0, 65501, 43, 0, 65501, 44, 0, 65501, 45, 0, 65501, 46, 0, 65501, 47, 0, 65501, 48, 0, 65501, 49, 0, 65501, 50, 0, 65501, 51, 0, 65501, 52, 0, 65501, 53, 0, 65501, 54, 0, 65501, 55, 0, 65501, 56, 0, 65501, 57, 0, 65501, 58, 0, 65501, 59, 0, 65501, 60, 0, 65501, 61, 0, 65501, 62, 0, 65501, 63, 0, 65502, 65467, 0, 65502, 65468, 0, 65502, 65469, 0, 65502, 65470, 0, 65502, 65471, 0, 65502, 65472, 0, 65502, 65473, 0, 65502, 65474, 0, 65502, 65475, 0, 65502, 65476, 0, 65502, 65477, 0, 65502, 65478, 0, 65502, 65479, 0, 65502, 65480, 0, 65502, 65481, 0, 65502, 65482, 0, 65502, 65483, 0, 65502, 65484, 0, 65502, 65485, 0, 65502, 65486, 0, 65502, 65487, 0, 65502, 65488, 0, 65502, 65489, 0, 65502, 65490, 0, 65502, 65491, 0, 65502, 65492, 0, 65502, 65493, 0, 65502, 65494, 0, 65502, 65495, 0, 65502, 65496, 0, 65502, 65497, 0, 65502, 65498, 0, 65502, 65499, 0, 65502, 65500, 0, 65502, 65501, 0, 65502, 65502, 0, 65502, 65503, 0, 65502, 36, 0, 65502, 37, 0, 65502, 38, 0, 65502, 39, 0, 65502, 40, 0, 65502, 41, 0, 65502, 42, 0, 65502, 43, 0, 65502, 44, 0, 65502, 45, 0, 65502, 46, 0, 65502, 47, 0, 65502, 48, 0, 65502, 49, 0, 65502, 50, 0, 65502, 51, 0, 65502, 52, 0, 65502, 53, 0, 65502, 54, 0, 65502, 55, 0, 65502, 56, 0, 65502, 57, 0, 65502, 58, 0, 65502, 59, 0, 65502, 60, 0, 65502, 61, 0, 65502, 62, 0, 65502, 63, 0, 65503, 65467, 0, 65503, 65468, 0, 65503, 65469, 0, 65503, 65470, 0, 65503, 65471, 0, 65503, 65472, 0, 65503, 65473, 0, 65503, 65474, 0, 65503, 65475, 0, 65503, 65476, 0, 65503, 65477, 0, 65503, 65478, 0, 65503, 65479, 0, 65503, 65480, 0, 65503, 65481, 0, 65503, 65482, 0, 65503, 65483, 0, 65503, 65484, 0, 65503, 65485, 0, 65503, 65486, 0, 65503, 65487, 0, 65503, 65488, 0, 65503, 65489, 0, 65503, 65490, 0, 65503, 65491, 0, 65503, 65492, 0, 65503, 65493, 0, 65503, 65494, 0, 65503, 65495, 0, 65503, 65496, 0, 65503, 65497, 0, 65503, 65498, 0, 65503, 65499, 0, 65503, 65500, 0, 65503, 65501, 0, 65503, 65502, 0, 65503, 65503, 0, 65503, 36, 0, 65503, 37, 0, 65503, 38, 0, 65503, 39, 0, 65503, 40, 0, 65503, 41, 0, 65503, 42, 0, 65503, 43, 0, 65503, 44, 0, 65503, 45, 0, 65503, 46, 0, 65503, 47, 0, 65503, 48, 0, 65503, 49, 0, 65503, 50, 0, 65503, 51, 0, 65503, 52, 0, 65503, 53, 0, 65503, 54, 0, 65503, 55, 0, 65503, 56, 0, 65503, 57, 0, 65503, 58, 0, 65503, 59, 0, 65503, 60, 0, 65503, 61, 0, 65503, 62, 0, 65503, 63, 0, 65504, 65467, 0, 65504, 65468, 0, 65504, 65469, 0, 65504, 65470, 0, 65504, 65471, 0, 65504, 65472, 0, 65504, 65473, 0, 65504, 65474, 0, 65504, 65475, 0, 65504, 65476, 0, 65504, 65477, 0, 65504, 65478, 0, 65504, 65479, 0, 65504, 65480, 0, 65504, 65481, 0, 65504, 65482, 0, 65504, 65483, 0, 65504, 65484, 0, 65504, 65485, 0, 65504, 65486, 0, 65504, 65487, 0, 65504, 65488, 0, 65504, 65489, 0, 65504, 65490, 0, 65504, 65491, 0, 65504, 65492, 0, 65504, 65493, 0, 65504, 65494, 0, 65504, 65495, 0, 65504, 65496, 0, 65504, 65497, 0, 65504, 65498, 0, 65504, 65499, 0, 65504, 65500, 0, 65504, 65501, 0, 65504, 65502, 0, 65504, 65503, 0, 65504, 36, 0, 65504, 37, 0, 65504, 38, 0, 65504, 39, 0, 65504, 40, 0, 65504, 41, 0, 65504, 42, 0, 65504, 43, 0, 65504, 44, 0, 65504, 45, 0, 65504, 46, 0, 65504, 47, 0, 65504, 48, 0, 65504, 49, 0, 65504, 50, 0, 65504, 51, 0, 65504, 52, 0, 65504, 53, 0, 65504, 54, 0, 65504, 55, 0, 65504, 56, 0, 65504, 57, 0, 65504, 58, 0, 65504, 59, 0, 65504, 60, 0, 65504, 61, 0, 65504, 62, 0, 65504, 63, 0, 65505, 65467, 0, 65505, 65468, 0, 65505, 65469, 0, 65505, 65470, 0, 65505, 65471, 0, 65505, 65472, 0, 65505, 65473, 0, 65505, 65474, 0, 65505, 65475, 0, 65505, 65476, 0, 65505, 65477, 0, 65505, 65478, 0, 65505, 65479, 0, 65505, 65480, 0, 65505, 65481, 0, 65505, 65482, 0, 65505, 65483, 0, 65505, 65484, 0, 65505, 65485, 0, 65505, 65486, 0, 65505, 65487, 0, 65505, 65488, 0, 65505, 65489, 0, 65505, 65490, 0, 65505, 65491, 0, 65505, 65492, 0, 65505, 65493, 0, 65505, 65494, 0, 65505, 65495, 0, 65505, 65496, 0, 65505, 65497, 0, 65505, 65498, 0, 65505, 65499, 0, 65505, 65500, 0, 65505, 65501, 0, 65505, 65502, 0, 65505, 65503, 0, 65505, 36, 0, 65505, 37, 0, 65505, 38, 0, 65505, 39, 0, 65505, 40, 0, 65505, 41, 0, 65505, 42, 0, 65505, 43, 0, 65505, 44, 0, 65505, 45, 0, 65505, 46, 0, 65505, 47, 0, 65505, 48, 0, 65505, 49, 0, 65505, 50, 0, 65505, 51, 0, 65505, 52, 0, 65505, 53, 0, 65505, 54, 0, 65505, 55, 0, 65505, 56, 0, 65505, 57, 0, 65505, 58, 0, 65505, 59, 0, 65505, 60, 0, 65505, 61, 0, 65505, 62, 0, 65505, 63, 0, 65506, 65467, 0, 65506, 65468, 0, 65506, 65469, 0, 65506, 65470, 0, 65506, 65471, 0, 65506, 65472, 0, 65506, 65473, 0, 65506, 65474, 0, 65506, 65475, 0, 65506, 65476, 0, 65506, 65477, 0, 65506, 65478, 0, 65506, 65479, 0, 65506, 65480, 0, 65506, 65481, 0, 65506, 65482, 0, 65506, 65483, 0, 65506, 65484, 0, 65506, 65485, 0, 65506, 65486, 0, 65506, 65487, 0, 65506, 65488, 0, 65506, 65489, 0, 65506, 65490, 0, 65506, 65491, 0, 65506, 65492, 0, 65506, 65493, 0, 65506, 65494, 0, 65506, 65495, 0, 65506, 65496, 0, 65506, 65497, 0, 65506, 65498, 0, 65506, 65499, 0, 65506, 65500, 0, 65506, 65501, 0, 65506, 65502, 0, 65506, 65503, 0, 65506, 36, 0, 65506, 37, 0, 65506, 38, 0, 65506, 39, 0, 65506, 40, 0, 65506, 41, 0, 65506, 42, 0, 65506, 43, 0, 65506, 44, 0, 65506, 45, 0, 65506, 46, 0, 65506, 47, 0, 65506, 48, 0, 65506, 49, 0, 65506, 50, 0, 65506, 51, 0, 65506, 52, 0, 65506, 53, 0, 65506, 54, 0, 65506, 55, 0, 65506, 56, 0, 65506, 57, 0, 65506, 58, 0, 65506, 59, 0, 65506, 60, 0, 65506, 61, 0, 65506, 62, 0, 65506, 63, 0, 65507, 65467, 0, 65507, 65468, 0, 65507, 65469, 0, 65507, 65470, 0, 65507, 65471, 0, 65507, 65472, 0, 65507, 65473, 0, 65507, 65474, 0, 65507, 65475, 0, 65507, 65476, 0, 65507, 65477, 0, 65507, 65478, 0, 65507, 65479, 0, 65507, 65480, 0, 65507, 65481, 0, 65507, 65482, 0, 65507, 65483, 0, 65507, 65484, 0, 65507, 65485, 0, 65507, 65486, 0, 65507, 65487, 0, 65507, 65488, 0, 65507, 65489, 0, 65507, 65490, 0, 65507, 65491, 0, 65507, 65492, 0, 65507, 65493, 0, 65507, 65494, 0, 65507, 65495, 0, 65507, 65496, 0, 65507, 65497, 0, 65507, 65498, 0, 65507, 65499, 0, 65507, 65500, 0, 65507, 65501, 0, 65507, 65502, 0, 65507, 65503, 0, 65507, 36, 0, 65507, 37, 0, 65507, 38, 0, 65507, 39, 0, 65507, 40, 0, 65507, 41, 0, 65507, 42, 0, 65507, 43, 0, 65507, 44, 0, 65507, 45, 0, 65507, 46, 0, 65507, 47, 0, 65507, 48, 0, 65507, 49, 0, 65507, 50, 0, 65507, 51, 0, 65507, 52, 0, 65507, 53, 0, 65507, 54, 0, 65507, 55, 0, 65507, 56, 0, 65507, 57, 0, 65507, 58, 0, 65507, 59, 0, 65507, 60, 0, 65507, 61, 0, 65507, 62, 0, 65507, 63, 0, 65508, 65467, 0, 65508, 65468, 0, 65508, 65469, 0, 65508, 65470, 0, 65508, 65471, 0, 65508, 65472, 0, 65508, 65473, 0, 65508, 65474, 0, 65508, 65475, 0, 65508, 65476, 0, 65508, 65477, 0, 65508, 65478, 0, 65508, 65479, 0, 65508, 65480, 0, 65508, 65481, 0, 65508, 65482, 0, 65508, 65483, 0, 65508, 65484, 0, 65508, 65485, 0, 65508, 65486, 0, 65508, 65487, 0, 65508, 65488, 0, 65508, 65489, 0, 65508, 65490, 0, 65508, 65491, 0, 65508, 65492, 0, 65508, 65493, 0, 65508, 65494, 0, 65508, 65495, 0, 65508, 65496, 0, 65508, 65497, 0, 65508, 65498, 0, 65508, 65499, 0, 65508, 65500, 0, 65508, 65501, 0, 65508, 65502, 0, 65508, 65503, 0, 65508, 36, 0, 65508, 37, 0, 65508, 38, 0, 65508, 39, 0, 65508, 40, 0, 65508, 41, 0, 65508, 42, 0, 65508, 43, 0, 65508, 44, 0, 65508, 45, 0, 65508, 46, 0, 65508, 47, 0, 65508, 48, 0, 65508, 49, 0, 65508, 50, 0, 65508, 51, 0, 65508, 52, 0, 65508, 53, 0, 65508, 54, 0, 65508, 55, 0, 65508, 56, 0, 65508, 57, 0, 65508, 58, 0, 65508, 59, 0, 65508, 60, 0, 65508, 61, 0, 65508, 62, 0, 65508, 63, 0, 65509, 65467, 0, 65509, 65468, 0, 65509, 65469, 0, 65509, 65470, 0, 65509, 65471, 0, 65509, 65472, 0, 65509, 65473, 0, 65509, 65474, 0, 65509, 65475, 0, 65509, 65476, 0, 65509, 65477, 0, 65509, 65478, 0, 65509, 65479, 0, 65509, 65480, 0, 65509, 65481, 0, 65509, 65482, 0, 65509, 65483, 0, 65509, 65484, 0, 65509, 65485, 0, 65509, 65486, 0, 65509, 65487, 0, 65509, 65488, 0, 65509, 65489, 0, 65509, 65490, 0, 65509, 65491, 0, 65509, 65492, 0, 65509, 65493, 0, 65509, 65494, 0, 65509, 65495, 0, 65509, 65496, 0, 65509, 65497, 0, 65509, 65498, 0, 65509, 65499, 0, 65509, 65500, 0, 65509, 65501, 0, 65509, 65502, 0, 65509, 65503, 0, 65509, 36, 0, 65509, 37, 0, 65509, 38, 0, 65509, 39, 0, 65509, 40, 0, 65509, 41, 0, 65509, 42, 0, 65509, 43, 0, 65509, 44, 0, 65509, 45, 0, 65509, 46, 0, 65509, 47, 0, 65509, 48, 0, 65509, 49, 0, 65509, 50, 0, 65509, 51, 0, 65509, 52, 0, 65509, 53, 0, 65509, 54, 0, 65509, 55, 0, 65509, 56, 0, 65509, 57, 0, 65509, 58, 0, 65509, 59, 0, 65509, 60, 0, 65509, 61, 0, 65509, 62, 0, 65509, 63, 0, 65510, 65467, 0, 65510, 65468, 0, 65510, 65469, 0, 65510, 65470, 0, 65510, 65471, 0, 65510, 65472, 0, 65510, 65473, 0, 65510, 65474, 0, 65510, 65475, 0, 65510, 65476, 0, 65510, 65477, 0, 65510, 65478, 0, 65510, 65479, 0, 65510, 65480, 0, 65510, 65481, 0, 65510, 65482, 0, 65510, 65483, 0, 65510, 65484, 0, 65510, 65485, 0, 65510, 65486, 0, 65510, 65487, 0, 65510, 65488, 0, 65510, 65489, 0, 65510, 65490, 0, 65510, 65491, 0, 65510, 65492, 0, 65510, 65493, 0, 65510, 65494, 0, 65510, 65495, 0, 65510, 65496, 0, 65510, 65497, 0, 65510, 65498, 0, 65510, 65499, 0, 65510, 65500, 0, 65510, 65501, 0, 65510, 65502, 0, 65510, 65503, 0, 65510, 36, 0, 65510, 37, 0, 65510, 38, 0, 65510, 39, 0, 65510, 40, 0, 65510, 41, 0, 65510, 42, 0, 65510, 43, 0, 65510, 44, 0, 65510, 45, 0, 65510, 46, 0, 65510, 47, 0, 65510, 48, 0, 65510, 49, 0, 65510, 50, 0, 65510, 51, 0, 65510, 52, 0, 65510, 53, 0, 65510, 54, 0, 65510, 55, 0, 65510, 56, 0, 65510, 57, 0, 65510, 58, 0, 65510, 59, 0, 65510, 60, 0, 65510, 61, 0, 65510, 62, 0, 65510, 63, 0, 65511, 65467, 0, 65511, 65468, 0, 65511, 65469, 0, 65511, 65470, 0, 65511, 65471, 0, 65511, 65472, 0, 65511, 65473, 0, 65511, 65474, 0, 65511, 65475, 0, 65511, 65476, 0, 65511, 65477, 0, 65511, 65478, 0, 65511, 65479, 0, 65511, 65480, 0, 65511, 65481, 0, 65511, 65482, 0, 65511, 65483, 0, 65511, 65484, 0, 65511, 65485, 0, 65511, 65486, 0, 65511, 65487, 0, 65511, 65488, 0, 65511, 65489, 0, 65511, 65490, 0, 65511, 65491, 0, 65511, 65492, 0, 65511, 65493, 0, 65511, 65494, 0, 65511, 65495, 0, 65511, 65496, 0, 65511, 65497, 0, 65511, 65498, 0, 65511, 65499, 0, 65511, 65500, 0, 65511, 65501, 0, 65511, 65502, 0, 65511, 65503, 0, 65511, 36, 0, 65511, 37, 0, 65511, 38, 0, 65511, 39, 0, 65511, 40, 0, 65511, 41, 0, 65511, 42, 0, 65511, 43, 0, 65511, 44, 0, 65511, 45, 0, 65511, 46, 0, 65511, 47, 0, 65511, 48, 0, 65511, 49, 0, 65511, 50, 0, 65511, 51, 0, 65511, 52, 0, 65511, 53, 0, 65511, 54, 0, 65511, 55, 0, 65511, 56, 0, 65511, 57, 0, 65511, 58, 0, 65511, 59, 0, 65511, 60, 0, 65511, 61, 0, 65511, 62, 0, 65511, 63, 0, 65512, 65467, 0, 65512, 65468, 0, 65512, 65469, 0, 65512, 65470, 0, 65512, 65471, 0, 65512, 65472, 0, 65512, 65473, 0, 65512, 65474, 0, 65512, 65475, 0, 65512, 65476, 0, 65512, 65477, 0, 65512, 65478, 0, 65512, 65479, 0, 65512, 65480, 0, 65512, 65481, 0, 65512, 65482, 0, 65512, 65483, 0, 65512, 65484, 0, 65512, 65485, 0, 65512, 65486, 0, 65512, 65487, 0, 65512, 65488, 0, 65512, 65489, 0, 65512, 65490, 0, 65512, 65491, 0, 65512, 65492, 0, 65512, 65493, 0, 65512, 65494, 0, 65512, 65495, 0, 65512, 65496, 0, 65512, 65497, 0, 65512, 65498, 0, 65512, 65499, 0, 65512, 65500, 0, 65512, 65501, 0, 65512, 65502, 0, 65512, 65503, 0, 65512, 36, 0, 65512, 37, 0, 65512, 38, 0, 65512, 39, 0, 65512, 40, 0, 65512, 41, 0, 65512, 42, 0, 65512, 43, 0, 65512, 44, 0, 65512, 45, 0, 65512, 46, 0, 65512, 47, 0, 65512, 48, 0, 65512, 49, 0, 65512, 50, 0, 65512, 51, 0, 65512, 52, 0, 65512, 53, 0, 65512, 54, 0, 65512, 55, 0, 65512, 56, 0, 65512, 57, 0, 65512, 58, 0, 65512, 59, 0, 65512, 60, 0, 65512, 61, 0, 65512, 62, 0, 65512, 63, 0, 65513, 65467, 0, 65513, 65468, 0, 65513, 65469, 0, 65513, 65470, 0, 65513, 65471, 0, 65513, 65472, 0, 65513, 65473, 0, 65513, 65474, 0, 65513, 65475, 0, 65513, 65476, 0, 65513, 65477, 0, 65513, 65478, 0, 65513, 65479, 0, 65513, 65480, 0, 65513, 65481, 0, 65513, 65482, 0, 65513, 65483, 0, 65513, 65484, 0, 65513, 65485, 0, 65513, 65486, 0, 65513, 65487, 0, 65513, 65488, 0, 65513, 65489, 0, 65513, 65490, 0, 65513, 65491, 0, 65513, 65492, 0, 65513, 65493, 0, 65513, 65494, 0, 65513, 65495, 0, 65513, 65496, 0, 65513, 65497, 0, 65513, 65498, 0, 65513, 65499, 0, 65513, 65500, 0, 65513, 65501, 0, 65513, 65502, 0, 65513, 65503, 0, 65513, 36, 0, 65513, 37, 0, 65513, 38, 0, 65513, 39, 0, 65513, 40, 0, 65513, 41, 0, 65513, 42, 0, 65513, 43, 0, 65513, 44, 0, 65513, 45, 0, 65513, 46, 0, 65513, 47, 0, 65513, 48, 0, 65513, 49, 0, 65513, 50, 0, 65513, 51, 0, 65513, 52, 0, 65513, 53, 0, 65513, 54, 0, 65513, 55, 0, 65513, 56, 0, 65513, 57, 0, 65513, 58, 0, 65513, 59, 0, 65513, 60, 0, 65513, 61, 0, 65513, 62, 0, 65513, 63, 0, 65514, 65467, 0, 65514, 65468, 0, 65514, 65469, 0, 65514, 65470, 0, 65514, 65471, 0, 65514, 65472, 0, 65514, 65473, 0, 65514, 65474, 0, 65514, 65475, 0, 65514, 65476, 0, 65514, 65477, 0, 65514, 65478, 0, 65514, 65479, 0, 65514, 65480, 0, 65514, 65481, 0, 65514, 65482, 0, 65514, 65483, 0, 65514, 65484, 0, 65514, 65485, 0, 65514, 65486, 0, 65514, 65487, 0, 65514, 65488, 0, 65514, 65489, 0, 65514, 65490, 0, 65514, 65491, 0, 65514, 65492, 0, 65514, 65493, 0, 65514, 65494, 0, 65514, 65495, 0, 65514, 65496, 0, 65514, 65497, 0, 65514, 65498, 0, 65514, 65499, 0, 65514, 65500, 0, 65514, 65501, 0, 65514, 65502, 0, 65514, 65503, 0, 65514, 36, 0, 65514, 37, 0, 65514, 38, 0, 65514, 39, 0, 65514, 40, 0, 65514, 41, 0, 65514, 42, 0, 65514, 43, 0, 65514, 44, 0, 65514, 45, 0, 65514, 46, 0, 65514, 47, 0, 65514, 48, 0, 65514, 49, 0, 65514, 50, 0, 65514, 51, 0, 65514, 52, 0, 65514, 53, 0, 65514, 54, 0, 65514, 55, 0, 65514, 56, 0, 65514, 57, 0, 65514, 58, 0, 65514, 59, 0, 65514, 60, 0, 65514, 61, 0, 65514, 62, 0, 65514, 63, 0, 65515, 65467, 0, 65515, 65468, 0, 65515, 65469, 0, 65515, 65470, 0, 65515, 65471, 0, 65515, 65472, 0, 65515, 65473, 0, 65515, 65474, 0, 65515, 65475, 0, 65515, 65476, 0, 65515, 65477, 0, 65515, 65478, 0, 65515, 65479, 0, 65515, 65480, 0, 65515, 65481, 0, 65515, 65482, 0, 65515, 65483, 0, 65515, 65484, 0, 65515, 65485, 0, 65515, 65486, 0, 65515, 65487, 0, 65515, 65488, 0, 65515, 65489, 0, 65515, 65490, 0, 65515, 65491, 0, 65515, 65492, 0, 65515, 65493, 0, 65515, 65494, 0, 65515, 65495, 0, 65515, 65496, 0, 65515, 65497, 0, 65515, 65498, 0, 65515, 65499, 0, 65515, 65500, 0, 65515, 65501, 0, 65515, 65502, 0, 65515, 65503, 0, 65515, 36, 0, 65515, 37, 0, 65515, 38, 0, 65515, 39, 0, 65515, 40, 0, 65515, 41, 0, 65515, 42, 0, 65515, 43, 0, 65515, 44, 0, 65515, 45, 0, 65515, 46, 0, 65515, 47, 0, 65515, 48, 0, 65515, 49, 0, 65515, 50, 0, 65515, 51, 0, 65515, 52, 0, 65515, 53, 0, 65515, 54, 0, 65515, 55, 0, 65515, 56, 0, 65515, 57, 0, 65515, 58, 0, 65515, 59, 0, 65515, 60, 0, 65515, 61, 0, 65515, 62, 0, 65515, 63, 0, 65516, 65467, 0, 65516, 65468, 0, 65516, 65469, 0, 65516, 65470, 0, 65516, 65471, 0, 65516, 65472, 0, 65516, 65473, 0, 65516, 65474, 0, 65516, 65475, 0, 65516, 65476, 0, 65516, 65477, 0, 65516, 65478, 0, 65516, 65479, 0, 65516, 65480, 0, 65516, 65481, 0, 65516, 65482, 0, 65516, 65483, 0, 65516, 65484, 0, 65516, 65485, 0, 65516, 65486, 0, 65516, 65487, 0, 65516, 65488, 0, 65516, 65489, 0, 65516, 65490, 0, 65516, 65491, 0, 65516, 65492, 0, 65516, 65493, 0, 65516, 65494, 0, 65516, 65495, 0, 65516, 65496, 0, 65516, 65497, 0, 65516, 65498, 0, 65516, 65499, 0, 65516, 65500, 0, 65516, 65501, 0, 65516, 65502, 0, 65516, 65503, 0, 65516, 36, 0, 65516, 37, 0, 65516, 38, 0, 65516, 39, 0, 65516, 40, 0, 65516, 41, 0, 65516, 42, 0, 65516, 43, 0, 65516, 44, 0, 65516, 45, 0, 65516, 46, 0, 65516, 47, 0, 65516, 48, 0, 65516, 49, 0, 65516, 50, 0, 65516, 51, 0, 65516, 52, 0, 65516, 53, 0, 65516, 54, 0, 65516, 55, 0, 65516, 56, 0, 65516, 57, 0, 65516, 58, 0, 65516, 59, 0, 65516, 60, 0, 65516, 61, 0, 65516, 62, 0, 65516, 63, 0, 65517, 65467, 0, 65517, 65468, 0, 65517, 65469, 0, 65517, 65470, 0, 65517, 65471, 0, 65517, 65472, 0, 65517, 65473, 0, 65517, 65474, 0, 65517, 65475, 0, 65517, 65476, 0, 65517, 65477, 0, 65517, 65478, 0, 65517, 65479, 0, 65517, 65480, 0, 65517, 65481, 0, 65517, 65482, 0, 65517, 65483, 0, 65517, 65484, 0, 65517, 65485, 0, 65517, 65486, 0, 65517, 65487, 0, 65517, 65488, 0, 65517, 65489, 0, 65517, 65490, 0, 65517, 65491, 0, 65517, 65492, 0, 65517, 65493, 0, 65517, 65494, 0, 65517, 65495, 0, 65517, 65496, 0, 65517, 65497, 0, 65517, 65498, 0, 65517, 65499, 0, 65517, 65500, 0, 65517, 65501, 0, 65517, 65502, 0, 65517, 65503, 0, 65517, 36, 0, 65517, 37, 0, 65517, 38, 0, 65517, 39, 0, 65517, 40, 0, 65517, 41, 0, 65517, 42, 0, 65517, 43, 0, 65517, 44, 0, 65517, 45, 0, 65517, 46, 0, 65517, 47, 0, 65517, 48, 0, 65517, 49, 0, 65517, 50, 0, 65517, 51, 0, 65517, 52, 0, 65517, 53, 0, 65517, 54, 0, 65517, 55, 0, 65517, 56, 0, 65517, 57, 0, 65517, 58, 0, 65517, 59, 0, 65517, 60, 0, 65517, 61, 0, 65517, 62, 0, 65517, 63, 0, 65518, 65467, 0, 65518, 65468, 0, 65518, 65469, 0, 65518, 65470, 0, 65518, 65471, 0, 65518, 65472, 0, 65518, 65473, 0, 65518, 65474, 0, 65518, 65475, 0, 65518, 65476, 0, 65518, 65477, 0, 65518, 65478, 0, 65518, 65479, 0, 65518, 65480, 0, 65518, 65481, 0, 65518, 65482, 0, 65518, 65483, 0, 65518, 65484, 0, 65518, 65485, 0, 65518, 65486, 0, 65518, 65487, 0, 65518, 65488, 0, 65518, 65489, 0, 65518, 65490, 0, 65518, 65491, 0, 65518, 65492, 0, 65518, 65493, 0, 65518, 65494, 0, 65518, 65495, 0, 65518, 65496, 0, 65518, 65497, 0, 65518, 65498, 0, 65518, 65499, 0, 65518, 65500, 0, 65518, 65501, 0, 65518, 65502, 0, 65518, 65503, 0, 65518, 36, 0, 65518, 37, 0, 65518, 38, 0, 65518, 39, 0, 65518, 40, 0, 65518, 41, 0, 65518, 42, 0, 65518, 43, 0, 65518, 44, 0, 65518, 45, 0, 65518, 46, 0, 65518, 47, 0, 65518, 48, 0, 65518, 49, 0, 65518, 50, 0, 65518, 51, 0, 65518, 52, 0, 65518, 53, 0, 65518, 54, 0, 65518, 55, 0, 65518, 56, 0, 65518, 57, 0, 65518, 58, 0, 65518, 59, 0, 65518, 60, 0, 65518, 61, 0, 65518, 62, 0, 65518, 63, 0, 65519, 65467, 0, 65519, 65468, 0, 65519, 65469, 0, 65519, 65470, 0, 65519, 65471, 0, 65519, 65472, 0, 65519, 65473, 0, 65519, 65474, 0, 65519, 65475, 0, 65519, 65476, 0, 65519, 65477, 0, 65519, 65478, 0, 65519, 65479, 0, 65519, 65480, 0, 65519, 65481, 0, 65519, 65482, 0, 65519, 65483, 0, 65519, 65484, 0, 65519, 65485, 0, 65519, 65486, 0, 65519, 65487, 0, 65519, 65488, 0, 65519, 65489, 0, 65519, 65490, 0, 65519, 65491, 0, 65519, 65492, 0, 65519, 65493, 0, 65519, 65494, 0, 65519, 65495, 0, 65519, 65496, 0, 65519, 65497, 0, 65519, 65498, 0, 65519, 65499, 0, 65519, 65500, 0, 65519, 65501, 0, 65519, 65502, 0, 65519, 65503, 0, 65519, 36, 0, 65519, 37, 0, 65519, 38, 0, 65519, 39, 0, 65519, 40, 0, 65519, 41, 0, 65519, 42, 0, 65519, 43, 0, 65519, 44, 0, 65519, 45, 0, 65519, 46, 0, 65519, 47, 0, 65519, 48, 0, 65519, 49, 0, 65519, 50, 0, 65519, 51, 0, 65519, 52, 0, 65519, 53, 0, 65519, 54, 0, 65519, 55, 0, 65519, 56, 0, 65519, 57, 0, 65519, 58, 0, 65519, 59, 0, 65519, 60, 0, 65519, 61, 0, 65519, 62, 0, 65519, 63, 0, 65520, 65467, 0, 65520, 65468, 0, 65520, 65469, 0, 65520, 65470, 0, 65520, 65471, 0, 65520, 65472, 0, 65520, 65473, 0, 65520, 65474, 0, 65520, 65475, 0, 65520, 65476, 0, 65520, 65477, 0, 65520, 65478, 0, 65520, 65479, 0, 65520, 65480, 0, 65520, 65481, 0, 65520, 65482, 0, 65520, 65483, 0, 65520, 65484, 0, 65520, 65485, 0, 65520, 65486, 0, 65520, 65487, 0, 65520, 65488, 0, 65520, 65489, 0, 65520, 65490, 0, 65520, 65491, 0, 65520, 65492, 0, 65520, 65493, 0, 65520, 65494, 0, 65520, 65495, 0, 65520, 65496, 0, 65520, 65497, 0, 65520, 65498, 0, 65520, 65499, 0, 65520, 65500, 0, 65520, 65501, 0, 65520, 65502, 0, 65520, 65503, 0, 65520, 36, 0, 65520, 37, 0, 65520, 38, 0, 65520, 39, 0, 65520, 40, 0, 65520, 41, 0, 65520, 42, 0, 65520, 43, 0, 65520, 44, 0, 65520, 45, 0, 65520, 46, 0, 65520, 47, 0, 65520, 48, 0, 65520, 49, 0, 65520, 50, 0, 65520, 51, 0, 65520, 52, 0, 65520, 53, 0, 65520, 54, 0, 65520, 55, 0, 65520, 56, 0, 65520, 57, 0, 65520, 58, 0, 65520, 59, 0, 65520, 60, 0, 65520, 61, 0, 65520, 62, 0, 65520, 63, 0, 65521, 65467, 0, 65521, 65468, 0, 65521, 65469, 0, 65521, 65470, 0, 65521, 65471, 0, 65521, 65472, 0, 65521, 65473, 0, 65521, 65474, 0, 65521, 65475, 0, 65521, 65476, 0, 65521, 65477, 0, 65521, 65478, 0, 65521, 65479, 0, 65521, 65480, 0, 65521, 65481, 0, 65521, 65482, 0, 65521, 65483, 0, 65521, 65484, 0, 65521, 65485, 0, 65521, 65486, 0, 65521, 65487, 0, 65521, 65488, 0, 65521, 65489, 0, 65521, 65490, 0, 65521, 65491, 0, 65521, 65492, 0, 65521, 65493, 0, 65521, 65494, 0, 65521, 65495, 0, 65521, 65496, 0, 65521, 65497, 0, 65521, 65498, 0, 65521, 65499, 0, 65521, 65500, 0, 65521, 65501, 0, 65521, 65502, 0, 65521, 65503, 0, 65521, 36, 0, 65521, 37, 0, 65521, 38, 0, 65521, 39, 0, 65521, 40, 0, 65521, 41, 0, 65521, 42, 0, 65521, 43, 0, 65521, 44, 0, 65521, 45, 0, 65521, 46, 0, 65521, 47, 0, 65521, 48, 0, 65521, 49, 0, 65521, 50, 0, 65521, 51, 0, 65521, 52, 0, 65521, 53, 0, 65521, 54, 0, 65521, 55, 0, 65521, 56, 0, 65521, 57, 0, 65521, 58, 0, 65521, 59, 0, 65521, 60, 0, 65521, 61, 0, 65521, 62, 0, 65521, 63, 0, 15, 65474, 0, 15, 65475, 0, 15, 65476, 0, 15, 65477, 0, 15, 65478, 0, 15, 65479, 0, 15, 65480, 0, 15, 65481, 0, 15, 65482, 0, 15, 65483, 0, 15, 65484, 0, 15, 65485, 0, 15, 65486, 0, 15, 65487, 0, 15, 65488, 0, 15, 65489, 0, 15, 65490, 0, 15, 65491, 0, 15, 65492, 0, 15, 65493, 0, 15, 65494, 0, 15, 65495, 0, 15, 65496, 0, 15, 65497, 0, 15, 65498, 0, 15, 65499, 0, 15, 65500, 0, 15, 65501, 0, 15, 65502, 0, 15, 65503, 0, 15, 36, 0, 15, 37, 0, 15, 38, 0, 15, 39, 0, 15, 40, 0, 15, 41, 0, 15, 42, 0, 15, 43, 0, 15, 44, 0, 15, 45, 0, 15, 46, 0, 15, 47, 0, 15, 48, 0, 15, 49, 0, 15, 50, 0, 15, 51, 0, 15, 52, 0, 15, 53, 0, 15, 54, 0, 15, 55, 0, 15, 56, 0, 15, 57, 0, 15, 58, 0, 15, 59, 0, 15, 60, 0, 15, 61, 0, 15, 62, 0, 16, 65474, 0, 16, 65475, 0, 16, 65476, 0, 16, 65477, 0, 16, 65478, 0, 16, 65479, 0, 16, 65480, 0, 16, 65481, 0, 16, 65482, 0, 16, 65483, 0, 16, 65484, 0, 16, 65485, 0, 16, 65486, 0, 16, 65487, 0, 16, 65488, 0, 16, 65489, 0, 16, 65490, 0, 16, 65491, 0, 16, 65492, 0, 16, 65493, 0, 16, 65494, 0, 16, 65495, 0, 16, 65496, 0, 16, 65497, 0, 16, 65498, 0, 16, 65499, 0, 16, 65500, 0, 16, 65501, 0, 16, 65502, 0, 16, 65503, 0, 16, 36, 0, 16, 37, 0, 16, 38, 0, 16, 39, 0, 16, 40, 0, 16, 41, 0, 16, 42, 0, 16, 43, 0, 16, 44, 0, 16, 45, 0, 16, 46, 0, 16, 47, 0, 16, 48, 0, 16, 49, 0, 16, 50, 0, 16, 51, 0, 16, 52, 0, 16, 53, 0, 16, 54, 0, 16, 55, 0, 16, 56, 0, 16, 57, 0, 16, 58, 0, 16, 59, 0, 16, 60, 0, 16, 61, 0, 16, 62, 0, 17, 65474, 0, 17, 65475, 0, 17, 65476, 0, 17, 65477, 0, 17, 65478, 0, 17, 65479, 0, 17, 65480, 0, 17, 65481, 0, 17, 65482, 0, 17, 65483, 0, 17, 65484, 0, 17, 65485, 0, 17, 65486, 0, 17, 65487, 0, 17, 65488, 0, 17, 65489, 0, 17, 65490, 0, 17, 65491, 0, 17, 65492, 0, 17, 65493, 0, 17, 65494, 0, 17, 65495, 0, 17, 65496, 0, 17, 65497, 0, 17, 65498, 0, 17, 65499, 0, 17, 65500, 0, 17, 65501, 0, 17, 65502, 0, 17, 65503, 0, 17, 36, 0, 17, 37, 0, 17, 38, 0, 17, 39, 0, 17, 40, 0, 17, 41, 0, 17, 42, 0, 17, 43, 0, 17, 44, 0, 17, 45, 0, 17, 46, 0, 17, 47, 0, 17, 48, 0, 17, 49, 0, 17, 50, 0, 17, 51, 0, 17, 52, 0, 17, 53, 0, 17, 54, 0, 17, 55, 0, 17, 56, 0, 17, 57, 0, 17, 58, 0, 17, 59, 0, 17, 60, 0, 17, 61, 0, 17, 62, 0, 18, 65474, 0, 18, 65475, 0, 18, 65476, 0, 18, 65477, 0, 18, 65478, 0, 18, 65479, 0, 18, 65480, 0, 18, 65481, 0, 18, 65482, 0, 18, 65483, 0, 18, 65484, 0, 18, 65485, 0, 18, 65486, 0, 18, 65487, 0, 18, 65488, 0, 18, 65489, 0, 18, 65490, 0, 18, 65491, 0, 18, 65492, 0, 18, 65493, 0, 18, 65494, 0, 18, 65495, 0, 18, 65496, 0, 18, 65497, 0, 18, 65498, 0, 18, 65499, 0, 18, 65500, 0, 18, 65501, 0, 18, 65502, 0, 18, 65503, 0, 18, 36, 0, 18, 37, 0, 18, 38, 0, 18, 39, 0, 18, 40, 0, 18, 41, 0, 18, 42, 0, 18, 43, 0, 18, 44, 0, 18, 45, 0, 18, 46, 0, 18, 47, 0, 18, 48, 0, 18, 49, 0, 18, 50, 0, 18, 51, 0, 18, 52, 0, 18, 53, 0, 18, 54, 0, 18, 55, 0, 18, 56, 0, 18, 57, 0, 18, 58, 0, 18, 59, 0, 18, 60, 0, 18, 61, 0, 18, 62, 0, 19, 65474, 0, 19, 65475, 0, 19, 65476, 0, 19, 65477, 0, 19, 65478, 0, 19, 65479, 0, 19, 65480, 0, 19, 65481, 0, 19, 65482, 0, 19, 65483, 0, 19, 65484, 0, 19, 65485, 0, 19, 65486, 0, 19, 65487, 0, 19, 65488, 0, 19, 65489, 0, 19, 65490, 0, 19, 65491, 0, 19, 65492, 0, 19, 65493, 0, 19, 65494, 0, 19, 65495, 0, 19, 65496, 0, 19, 65497, 0, 19, 65498, 0, 19, 65499, 0, 19, 65500, 0, 19, 65501, 0, 19, 65502, 0, 19, 65503, 0, 19, 36, 0, 19, 37, 0, 19, 38, 0, 19, 39, 0, 19, 40, 0, 19, 41, 0, 19, 42, 0, 19, 43, 0, 19, 44, 0, 19, 45, 0, 19, 46, 0, 19, 47, 0, 19, 48, 0, 19, 49, 0, 19, 50, 0, 19, 51, 0, 19, 52, 0, 19, 53, 0, 19, 54, 0, 19, 55, 0, 19, 56, 0, 19, 57, 0, 19, 58, 0, 19, 59, 0, 19, 60, 0, 19, 61, 0, 19, 62, 0, 20, 65474, 0, 20, 65475, 0, 20, 65476, 0, 20, 65477, 0, 20, 65478, 0, 20, 65479, 0, 20, 65480, 0, 20, 65481, 0, 20, 65482, 0, 20, 65483, 0, 20, 65484, 0, 20, 65485, 0, 20, 65486, 0, 20, 65487, 0, 20, 65488, 0, 20, 65489, 0, 20, 65490, 0, 20, 65491, 0, 20, 65492, 0, 20, 65493, 0, 20, 65494, 0, 20, 65495, 0, 20, 65496, 0, 20, 65497, 0, 20, 65498, 0, 20, 65499, 0, 20, 65500, 0, 20, 65501, 0, 20, 65502, 0, 20, 65503, 0, 20, 36, 0, 20, 37, 0, 20, 38, 0, 20, 39, 0, 20, 40, 0, 20, 41, 0, 20, 42, 0, 20, 43, 0, 20, 44, 0, 20, 45, 0, 20, 46, 0, 20, 47, 0, 20, 48, 0, 20, 49, 0, 20, 50, 0, 20, 51, 0, 20, 52, 0, 20, 53, 0, 20, 54, 0, 20, 55, 0, 20, 56, 0, 20, 57, 0, 20, 58, 0, 20, 59, 0, 20, 60, 0, 20, 61, 0, 20, 62, 0, 21, 65474, 0, 21, 65475, 0, 21, 65476, 0, 21, 65477, 0, 21, 65478, 0, 21, 65479, 0, 21, 65480, 0, 21, 65481, 0, 21, 65482, 0, 21, 65483, 0, 21, 65484, 0, 21, 65485, 0, 21, 65486, 0, 21, 65487, 0, 21, 65488, 0, 21, 65489, 0, 21, 65490, 0, 21, 65491, 0, 21, 65492, 0, 21, 65493, 0, 21, 65494, 0, 21, 65495, 0, 21, 65496, 0, 21, 65497, 0, 21, 65498, 0, 21, 65499, 0, 21, 65500, 0, 21, 65501, 0, 21, 65502, 0, 21, 65503, 0, 21, 36, 0, 21, 37, 0, 21, 38, 0, 21, 39, 0, 21, 40, 0, 21, 41, 0, 21, 42, 0, 21, 43, 0, 21, 44, 0, 21, 45, 0, 21, 46, 0, 21, 47, 0, 21, 48, 0, 21, 49, 0, 21, 50, 0, 21, 51, 0, 21, 52, 0, 21, 53, 0, 21, 54, 0, 21, 55, 0, 21, 56, 0, 21, 57, 0, 21, 58, 0, 21, 59, 0, 21, 60, 0, 21, 61, 0, 21, 62, 0, 22, 65474, 0, 22, 65475, 0, 22, 65476, 0, 22, 65477, 0, 22, 65478, 0, 22, 65479, 0, 22, 65480, 0, 22, 65481, 0, 22, 65482, 0, 22, 65483, 0, 22, 65484, 0, 22, 65485, 0, 22, 65486, 0, 22, 65487, 0, 22, 65488, 0, 22, 65489, 0, 22, 65490, 0, 22, 65491, 0, 22, 65492, 0, 22, 65493, 0, 22, 65494, 0, 22, 65495, 0, 22, 65496, 0, 22, 65497, 0, 22, 65498, 0, 22, 65499, 0, 22, 65500, 0, 22, 65501, 0, 22, 65502, 0, 22, 65503, 0, 22, 36, 0, 22, 37, 0, 22, 38, 0, 22, 39, 0, 22, 40, 0, 22, 41, 0, 22, 42, 0, 22, 43, 0, 22, 44, 0, 22, 45, 0, 22, 46, 0, 22, 47, 0, 22, 48, 0, 22, 49, 0, 22, 50, 0, 22, 51, 0, 22, 52, 0, 22, 53, 0, 22, 54, 0, 22, 55, 0, 22, 56, 0, 22, 57, 0, 22, 58, 0, 22, 59, 0, 22, 60, 0, 22, 61, 0, 22, 62, 0, 23, 65474, 0, 23, 65475, 0, 23, 65476, 0, 23, 65477, 0, 23, 65478, 0, 23, 65479, 0, 23, 65480, 0, 23, 65481, 0, 23, 65482, 0, 23, 65483, 0, 23, 65484, 0, 23, 65485, 0, 23, 65486, 0, 23, 65487, 0, 23, 65488, 0, 23, 65489, 0, 23, 65490, 0, 23, 65491, 0, 23, 65492, 0, 23, 65493, 0, 23, 65494, 0, 23, 65495, 0, 23, 65496, 0, 23, 65497, 0, 23, 65498, 0, 23, 65499, 0, 23, 65500, 0, 23, 65501, 0, 23, 65502, 0, 23, 65503, 0, 23, 36, 0, 23, 37, 0, 23, 38, 0, 23, 39, 0, 23, 40, 0, 23, 41, 0, 23, 42, 0, 23, 43, 0, 23, 44, 0, 23, 45, 0, 23, 46, 0, 23, 47, 0, 23, 48, 0, 23, 49, 0, 23, 50, 0, 23, 51, 0, 23, 52, 0, 23, 53, 0, 23, 54, 0, 23, 55, 0, 23, 56, 0, 23, 57, 0, 23, 58, 0, 23, 59, 0, 23, 60, 0, 23, 61, 0, 23, 62, 0, 24, 65474, 0, 24, 65475, 0, 24, 65476, 0, 24, 65477, 0, 24, 65478, 0, 24, 65479, 0, 24, 65480, 0, 24, 65481, 0, 24, 65482, 0, 24, 65483, 0, 24, 65484, 0, 24, 65485, 0, 24, 65486, 0, 24, 65487, 0, 24, 65488, 0, 24, 65489, 0, 24, 65490, 0, 24, 65491, 0, 24, 65492, 0, 24, 65493, 0, 24, 65494, 0, 24, 65495, 0, 24, 65496, 0, 24, 65497, 0, 24, 65498, 0, 24, 65499, 0, 24, 65500, 0, 24, 65501, 0, 24, 65502, 0, 24, 65503, 0, 24, 36, 0, 24, 37, 0, 24, 38, 0, 24, 39, 0, 24, 40, 0, 24, 41, 0, 24, 42, 0, 24, 43, 0, 24, 44, 0, 24, 45, 0, 24, 46, 0, 24, 47, 0, 24, 48, 0, 24, 49, 0, 24, 50, 0, 24, 51, 0, 24, 52, 0, 24, 53, 0, 24, 54, 0, 24, 55, 0, 24, 56, 0, 24, 57, 0, 24, 58, 0, 24, 59, 0, 24, 60, 0, 24, 61, 0, 24, 62, 0, 25, 65474, 0, 25, 65475, 0, 25, 65476, 0, 25, 65477, 0, 25, 65478, 0, 25, 65479, 0, 25, 65480, 0, 25, 65481, 0, 25, 65482, 0, 25, 65483, 0, 25, 65484, 0, 25, 65485, 0, 25, 65486, 0, 25, 65487, 0, 25, 65488, 0, 25, 65489, 0, 25, 65490, 0, 25, 65491, 0, 25, 65492, 0, 25, 65493, 0, 25, 65494, 0, 25, 65495, 0, 25, 65496, 0, 25, 65497, 0, 25, 65498, 0, 25, 65499, 0, 25, 65500, 0, 25, 65501, 0, 25, 65502, 0, 25, 65503, 0, 25, 36, 0, 25, 37, 0, 25, 38, 0, 25, 39, 0, 25, 40, 0, 25, 41, 0, 25, 42, 0, 25, 43, 0, 25, 44, 0, 25, 45, 0, 25, 46, 0, 25, 47, 0, 25, 48, 0, 25, 49, 0, 25, 50, 0, 25, 51, 0, 25, 52, 0, 25, 53, 0, 25, 54, 0, 25, 55, 0, 25, 56, 0, 25, 57, 0, 25, 58, 0, 25, 59, 0, 25, 60, 0, 25, 61, 0, 25, 62, 0, 26, 65474, 0, 26, 65475, 0, 26, 65476, 0, 26, 65477, 0, 26, 65478, 0, 26, 65479, 0, 26, 65480, 0, 26, 65481, 0, 26, 65482, 0, 26, 65483, 0, 26, 65484, 0, 26, 65485, 0, 26, 65486, 0, 26, 65487, 0, 26, 65488, 0, 26, 65489, 0, 26, 65490, 0, 26, 65491, 0, 26, 65492, 0, 26, 65493, 0, 26, 65494, 0, 26, 65495, 0, 26, 65496, 0, 26, 65497, 0, 26, 65498, 0, 26, 65499, 0, 26, 65500, 0, 26, 65501, 0, 26, 65502, 0, 26, 65503, 0, 26, 36, 0, 26, 37, 0, 26, 38, 0, 26, 39, 0, 26, 40, 0, 26, 41, 0, 26, 42, 0, 26, 43, 0, 26, 44, 0, 26, 45, 0, 26, 46, 0, 26, 47, 0, 26, 48, 0, 26, 49, 0, 26, 50, 0, 26, 51, 0, 26, 52, 0, 26, 53, 0, 26, 54, 0, 26, 55, 0, 26, 56, 0, 26, 57, 0, 26, 58, 0, 26, 59, 0, 26, 60, 0, 26, 61, 0, 26, 62, 0, 27, 65474, 0, 27, 65475, 0, 27, 65476, 0, 27, 65477, 0, 27, 65478, 0, 27, 65479, 0, 27, 65480, 0, 27, 65481, 0, 27, 65482, 0, 27, 65483, 0, 27, 65484, 0, 27, 65485, 0, 27, 65486, 0, 27, 65487, 0, 27, 65488, 0, 27, 65489, 0, 27, 65490, 0, 27, 65491, 0, 27, 65492, 0, 27, 65493, 0, 27, 65494, 0, 27, 65495, 0, 27, 65496, 0, 27, 65497, 0, 27, 65498, 0, 27, 65499, 0, 27, 65500, 0, 27, 65501, 0, 27, 65502, 0, 27, 65503, 0, 27, 36, 0, 27, 37, 0, 27, 38, 0, 27, 39, 0, 27, 40, 0, 27, 41, 0, 27, 42, 0, 27, 43, 0, 27, 44, 0, 27, 45, 0, 27, 46, 0, 27, 47, 0, 27, 48, 0, 27, 49, 0, 27, 50, 0, 27, 51, 0, 27, 52, 0, 27, 53, 0, 27, 54, 0, 27, 55, 0, 27, 56, 0, 27, 57, 0, 27, 58, 0, 27, 59, 0, 27, 60, 0, 27, 61, 0, 27, 62, 0, 28, 65474, 0, 28, 65475, 0, 28, 65476, 0, 28, 65477, 0, 28, 65478, 0, 28, 65479, 0, 28, 65480, 0, 28, 65481, 0, 28, 65482, 0, 28, 65483, 0, 28, 65484, 0, 28, 65485, 0, 28, 65486, 0, 28, 65487, 0, 28, 65488, 0, 28, 65489, 0, 28, 65490, 0, 28, 65491, 0, 28, 65492, 0, 28, 65493, 0, 28, 65494, 0, 28, 65495, 0, 28, 65496, 0, 28, 65497, 0, 28, 65498, 0, 28, 65499, 0, 28, 65500, 0, 28, 65501, 0, 28, 65502, 0, 28, 65503, 0, 28, 36, 0, 28, 37, 0, 28, 38, 0, 28, 39, 0, 28, 40, 0, 28, 41, 0, 28, 42, 0, 28, 43, 0, 28, 44, 0, 28, 45, 0, 28, 46, 0, 28, 47, 0, 28, 48, 0, 28, 49, 0, 28, 50, 0, 28, 51, 0, 28, 52, 0, 28, 53, 0, 28, 54, 0, 28, 55, 0, 28, 56, 0, 28, 57, 0, 28, 58, 0, 28, 59, 0, 28, 60, 0, 28, 61, 0, 28, 62, 0, 29, 65474, 0, 29, 65475, 0, 29, 65476, 0, 29, 65477, 0, 29, 65478, 0, 29, 65479, 0, 29, 65480, 0, 29, 65481, 0, 29, 65482, 0, 29, 65483, 0, 29, 65484, 0, 29, 65485, 0, 29, 65486, 0, 29, 65487, 0, 29, 65488, 0, 29, 65489, 0, 29, 65490, 0, 29, 65491, 0, 29, 65492, 0, 29, 65493, 0, 29, 65494, 0, 29, 65495, 0, 29, 65496, 0, 29, 65497, 0, 29, 65498, 0, 29, 65499, 0, 29, 65500, 0, 29, 65501, 0, 29, 65502, 0, 29, 65503, 0, 29, 36, 0, 29, 37, 0, 29, 38, 0, 29, 39, 0, 29, 40, 0, 29, 41, 0, 29, 42, 0, 29, 43, 0, 29, 44, 0, 29, 45, 0, 29, 46, 0, 29, 47, 0, 29, 48, 0, 29, 49, 0, 29, 50, 0, 29, 51, 0, 29, 52, 0, 29, 53, 0, 29, 54, 0, 29, 55, 0, 29, 56, 0, 29, 57, 0, 29, 58, 0, 29, 59, 0, 29, 60, 0, 29, 61, 0, 29, 62, 0, 30, 65474, 0, 30, 65475, 0, 30, 65476, 0, 30, 65477, 0, 30, 65478, 0, 30, 65479, 0, 30, 65480, 0, 30, 65481, 0, 30, 65482, 0, 30, 65483, 0, 30, 65484, 0, 30, 65485, 0, 30, 65486, 0, 30, 65487, 0, 30, 65488, 0, 30, 65489, 0, 30, 65490, 0, 30, 65491, 0, 30, 65492, 0, 30, 65493, 0, 30, 65494, 0, 30, 65495, 0, 30, 65496, 0, 30, 65497, 0, 30, 65498, 0, 30, 65499, 0, 30, 65500, 0, 30, 65501, 0, 30, 65502, 0, 30, 65503, 0, 30, 36, 0, 30, 37, 0, 30, 38, 0, 30, 39, 0, 30, 40, 0, 30, 41, 0, 30, 42, 0, 30, 43, 0, 30, 44, 0, 30, 45, 0, 30, 46, 0, 30, 47, 0, 30, 48, 0, 30, 49, 0, 30, 50, 0, 30, 51, 0, 30, 52, 0, 30, 53, 0, 30, 54, 0, 30, 55, 0, 30, 56, 0, 30, 57, 0, 30, 58, 0, 30, 59, 0, 30, 60, 0, 30, 61, 0, 30, 62, 0, 31, 65474, 0, 31, 65475, 0, 31, 65476, 0, 31, 65477, 0, 31, 65478, 0, 31, 65479, 0, 31, 65480, 0, 31, 65481, 0, 31, 65482, 0, 31, 65483, 0, 31, 65484, 0, 31, 65485, 0, 31, 65486, 0, 31, 65487, 0, 31, 65488, 0, 31, 65489, 0, 31, 65490, 0, 31, 65491, 0, 31, 65492, 0, 31, 65493, 0, 31, 65494, 0, 31, 65495, 0, 31, 65496, 0, 31, 65497, 0, 31, 65498, 0, 31, 65499, 0, 31, 65500, 0, 31, 65501, 0, 31, 65502, 0, 31, 65503, 0, 31, 36, 0, 31, 37, 0, 31, 38, 0, 31, 39, 0, 31, 40, 0, 31, 41, 0, 31, 42, 0, 31, 43, 0, 31, 44, 0, 31, 45, 0, 31, 46, 0, 31, 47, 0, 31, 48, 0, 31, 49, 0, 31, 50, 0, 31, 51, 0, 31, 52, 0, 31, 53, 0, 31, 54, 0, 31, 55, 0, 31, 56, 0, 31, 57, 0, 31, 58, 0, 31, 59, 0, 31, 60, 0, 31, 61, 0, 31, 62, 0, 32, 65474, 0, 32, 65475, 0, 32, 65476, 0, 32, 65477, 0, 32, 65478, 0, 32, 65479, 0, 32, 65480, 0, 32, 65481, 0, 32, 65482, 0, 32, 65483, 0, 32, 65484, 0, 32, 65485, 0, 32, 65486, 0, 32, 65487, 0, 32, 65488, 0, 32, 65489, 0, 32, 65490, 0, 32, 65491, 0, 32, 65492, 0, 32, 65493, 0, 32, 65494, 0, 32, 65495, 0, 32, 65496, 0, 32, 65497, 0, 32, 65498, 0, 32, 65499, 0, 32, 65500, 0, 32, 65501, 0, 32, 65502, 0, 32, 65503, 0, 32, 36, 0, 32, 37, 0, 32, 38, 0, 32, 39, 0, 32, 40, 0, 32, 41, 0, 32, 42, 0, 32, 43, 0, 32, 44, 0, 32, 45, 0, 32, 46, 0, 32, 47, 0, 32, 48, 0, 32, 49, 0, 32, 50, 0, 32, 51, 0, 32, 52, 0, 32, 53, 0, 32, 54, 0, 32, 55, 0, 32, 56, 0, 32, 57, 0, 32, 58, 0, 32, 59, 0, 32, 60, 0, 32, 61, 0, 32, 62, 0, 33, 65474, 0, 33, 65475, 0, 33, 65476, 0, 33, 65477, 0, 33, 65478, 0, 33, 65479, 0, 33, 65480, 0, 33, 65481, 0, 33, 65482, 0, 33, 65483, 0, 33, 65484, 0, 33, 65485, 0, 33, 65486, 0, 33, 65487, 0, 33, 65488, 0, 33, 65489, 0, 33, 65490, 0, 33, 65491, 0, 33, 65492, 0, 33, 65493, 0, 33, 65494, 0, 33, 65495, 0, 33, 65496, 0, 33, 65497, 0, 33, 65498, 0, 33, 65499, 0, 33, 65500, 0, 33, 65501, 0, 33, 65502, 0, 33, 65503, 0, 33, 36, 0, 33, 37, 0, 33, 38, 0, 33, 39, 0, 33, 40, 0, 33, 41, 0, 33, 42, 0, 33, 43, 0, 33, 44, 0, 33, 45, 0, 33, 46, 0, 33, 47, 0, 33, 48, 0, 33, 49, 0, 33, 50, 0, 33, 51, 0, 33, 52, 0, 33, 53, 0, 33, 54, 0, 33, 55, 0, 33, 56, 0, 33, 57, 0, 33, 58, 0, 33, 59, 0, 33, 60, 0, 33, 61, 0, 33, 62, 0, 34, 65474, 0, 34, 65475, 0, 34, 65476, 0, 34, 65477, 0, 34, 65478, 0, 34, 65479, 0, 34, 65480, 0, 34, 65481, 0, 34, 65482, 0, 34, 65483, 0, 34, 65484, 0, 34, 65485, 0, 34, 65486, 0, 34, 65487, 0, 34, 65488, 0, 34, 65489, 0, 34, 65490, 0, 34, 65491, 0, 34, 65492, 0, 34, 65493, 0, 34, 65494, 0, 34, 65495, 0, 34, 65496, 0, 34, 65497, 0, 34, 65498, 0, 34, 65499, 0, 34, 65500, 0, 34, 65501, 0, 34, 65502, 0, 34, 65503, 0, 34, 36, 0, 34, 37, 0, 34, 38, 0, 34, 39, 0, 34, 40, 0, 34, 41, 0, 34, 42, 0, 34, 43, 0, 34, 44, 0, 34, 45, 0, 34, 46, 0, 34, 47, 0, 34, 48, 0, 34, 49, 0, 34, 50, 0, 34, 51, 0, 34, 52, 0, 34, 53, 0, 34, 54, 0, 34, 55, 0, 34, 56, 0, 34, 57, 0, 34, 58, 0, 34, 59, 0, 34, 60, 0, 34, 61, 0, 34, 62, 0, 35, 65474, 0, 35, 65475, 0, 35, 65476, 0, 35, 65477, 0, 35, 65478, 0, 35, 65479, 0, 35, 65480, 0, 35, 65481, 0, 35, 65482, 0, 35, 65483, 0, 35, 65484, 0, 35, 65485, 0, 35, 65486, 0, 35, 65487, 0, 35, 65488, 0, 35, 65489, 0, 35, 65490, 0, 35, 65491, 0, 35, 65492, 0, 35, 65493, 0, 35, 65494, 0, 35, 65495, 0, 35, 65496, 0, 35, 65497, 0, 35, 65498, 0, 35, 65499, 0, 35, 65500, 0, 35, 65501, 0, 35, 65502, 0, 35, 65503, 0, 35, 36, 0, 35, 37, 0, 35, 38, 0, 35, 39, 0, 35, 40, 0, 35, 41, 0, 35, 42, 0, 35, 43, 0, 35, 44, 0, 35, 45, 0, 35, 46, 0, 35, 47, 0, 35, 48, 0, 35, 49, 0, 35, 50, 0, 35, 51, 0, 35, 52, 0, 35, 53, 0, 35, 54, 0, 35, 55, 0, 35, 56, 0, 35, 57, 0, 35, 58, 0, 35, 59, 0, 35, 60, 0, 35, 61, 0, 35, 62, 0, 36, 65474, 0, 36, 65475, 0, 36, 65476, 0, 36, 65477, 0, 36, 65478, 0, 36, 65479, 0, 36, 65480, 0, 36, 65481, 0, 36, 65482, 0, 36, 65483, 0, 36, 65484, 0, 36, 65485, 0, 36, 65486, 0, 36, 65487, 0, 36, 65488, 0, 36, 65489, 0, 36, 65490, 0, 36, 65491, 0, 36, 65492, 0, 36, 65493, 0, 36, 65494, 0, 36, 65495, 0, 36, 65496, 0, 36, 65497, 0, 36, 65498, 0, 36, 65499, 0, 36, 65500, 0, 36, 65501, 0, 36, 65502, 0, 36, 65503, 0, 36, 65504, 0, 36, 65505, 0, 36, 65506, 0, 36, 65507, 0, 36, 65508, 0, 36, 65509, 0, 36, 65510, 0, 36, 65511, 0, 36, 65512, 0, 36, 65513, 0, 36, 65514, 0, 36, 65515, 0, 36, 65516, 0, 36, 65517, 0, 36, 65518, 0, 36, 65519, 0, 36, 65520, 0, 36, 65521, 0, 36, 65522, 0, 36, 65523, 0, 36, 65524, 0, 36, 65525, 0, 36, 65526, 0, 36, 65527, 0, 36, 65528, 0, 36, 65529, 0, 36, 65530, 0, 36, 65531, 0, 36, 65532, 0, 36, 65533, 0, 36, 65534, 0, 36, 65535, 0, 36, 0, 0, 36, 1, 0, 36, 2, 0, 36, 3, 0, 36, 4, 0, 36, 5, 0, 36, 6, 0, 36, 7, 0, 36, 8, 0, 36, 9, 0, 36, 10, 0, 36, 11, 0, 36, 12, 0, 36, 13, 0, 36, 14, 0, 36, 15, 0, 36, 16, 0, 36, 17, 0, 36, 18, 0, 36, 19, 0, 36, 20, 0, 36, 21, 0, 36, 22, 0, 36, 23, 0, 36, 24, 0, 36, 25, 0, 36, 26, 0, 36, 27, 0, 36, 28, 0, 36, 29, 0, 36, 30, 0, 36, 31, 0, 36, 32, 0, 36, 33, 0, 36, 34, 0, 36, 35, 0, 36, 36, 0, 36, 37, 0, 36, 38, 0, 36, 39, 0, 36, 40, 0, 36, 41, 0, 36, 42, 0, 36, 43, 0, 36, 44, 0, 36, 45, 0, 36, 46, 0, 36, 47, 0, 36, 48, 0, 36, 49, 0, 36, 50, 0, 36, 51, 0, 36, 52, 0, 36, 53, 0, 36, 54, 0, 36, 55, 0, 36, 56, 0, 36, 57, 0, 36, 58, 0, 36, 59, 0, 36, 60, 0, 36, 61, 0, 36, 62, 0, 37, 65474, 0, 37, 65475, 0, 37, 65476, 0, 37, 65477, 0, 37, 65478, 0, 37, 65479, 0, 37, 65480, 0, 37, 65481, 0, 37, 65482, 0, 37, 65483, 0, 37, 65484, 0, 37, 65485, 0, 37, 65486, 0, 37, 65487, 0, 37, 65488, 0, 37, 65489, 0, 37, 65490, 0, 37, 65491, 0, 37, 65492, 0, 37, 65493, 0, 37, 65494, 0, 37, 65495, 0, 37, 65496, 0, 37, 65497, 0, 37, 65498, 0, 37, 65499, 0, 37, 65500, 0, 37, 65501, 0, 37, 65502, 0, 37, 65503, 0, 37, 65504, 0, 37, 65505, 0, 37, 65506, 0, 37, 65507, 0, 37, 65508, 0, 37, 65509, 0, 37, 65510, 0, 37, 65511, 0, 37, 65512, 0, 37, 65513, 0, 37, 65514, 0, 37, 65515, 0, 37, 65516, 0, 37, 65517, 0, 37, 65518, 0, 37, 65519, 0, 37, 65520, 0, 37, 65521, 0, 37, 65522, 0, 37, 65523, 0, 37, 65524, 0, 37, 65525, 0, 37, 65526, 0, 37, 65527, 0, 37, 65528, 0, 37, 65529, 0, 37, 65530, 0, 37, 65531, 0, 37, 65532, 0, 37, 65533, 0, 37, 65534, 0, 37, 65535, 0, 37, 0, 0, 37, 1, 0, 37, 2, 0, 37, 3, 0, 37, 4, 0, 37, 5, 0, 37, 6, 0, 37, 7, 0, 37, 8, 0, 37, 9, 0, 37, 10, 0, 37, 11, 0, 37, 12, 0, 37, 13, 0, 37, 14, 0, 37, 15, 0, 37, 16, 0, 37, 17, 0, 37, 18, 0, 37, 19, 0, 37, 20, 0, 37, 21, 0, 37, 22, 0, 37, 23, 0, 37, 24, 0, 37, 25, 0, 37, 26, 0, 37, 27, 0, 37, 28, 0, 37, 29, 0, 37, 30, 0, 37, 31, 0, 37, 32, 0, 37, 33, 0, 37, 34, 0, 37, 35, 0, 37, 36, 0, 37, 37, 0, 37, 38, 0, 37, 39, 0, 37, 40, 0, 37, 41, 0, 37, 42, 0, 37, 43, 0, 37, 44, 0, 37, 45, 0, 37, 46, 0, 37, 47, 0, 37, 48, 0, 37, 49, 0, 37, 50, 0, 37, 51, 0, 37, 52, 0, 37, 53, 0, 37, 54, 0, 37, 55, 0, 37, 56, 0, 37, 57, 0, 37, 58, 0, 37, 59, 0, 37, 60, 0, 37, 61, 0, 37, 62, 0, 38, 65474, 0, 38, 65475, 0, 38, 65476, 0, 38, 65477, 0, 38, 65478, 0, 38, 65479, 0, 38, 65480, 0, 38, 65481, 0, 38, 65482, 0, 38, 65483, 0, 38, 65484, 0, 38, 65485, 0, 38, 65486, 0, 38, 65487, 0, 38, 65488, 0, 38, 65489, 0, 38, 65490, 0, 38, 65491, 0, 38, 65492, 0, 38, 65493, 0, 38, 65494, 0, 38, 65495, 0, 38, 65496, 0, 38, 65497, 0, 38, 65498, 0, 38, 65499, 0, 38, 65500, 0, 38, 65501, 0, 38, 65502, 0, 38, 65503, 0, 38, 65504, 0, 38, 65505, 0, 38, 65506, 0, 38, 65507, 0, 38, 65508, 0, 38, 65509, 0, 38, 65510, 0, 38, 65511, 0, 38, 65512, 0, 38, 65513, 0, 38, 65514, 0, 38, 65515, 0, 38, 65516, 0, 38, 65517, 0, 38, 65518, 0, 38, 65519, 0, 38, 65520, 0, 38, 65521, 0, 38, 65522, 0, 38, 65523, 0, 38, 65524, 0, 38, 65525, 0, 38, 65526, 0, 38, 65527, 0, 38, 65528, 0, 38, 65529, 0, 38, 65530, 0, 38, 65531, 0, 38, 65532, 0, 38, 65533, 0, 38, 65534, 0, 38, 65535, 0, 38, 0, 0, 38, 1, 0, 38, 2, 0, 38, 3, 0, 38, 4, 0, 38, 5, 0, 38, 6, 0, 38, 7, 0, 38, 8, 0, 38, 9, 0, 38, 10, 0, 38, 11, 0, 38, 12, 0, 38, 13, 0, 38, 14, 0, 38, 15, 0, 38, 16, 0, 38, 17, 0, 38, 18, 0, 38, 19, 0, 38, 20, 0, 38, 21, 0, 38, 22, 0, 38, 23, 0, 38, 24, 0, 38, 25, 0, 38, 26, 0, 38, 27, 0, 38, 28, 0, 38, 29, 0, 38, 30, 0, 38, 31, 0, 38, 32, 0, 38, 33, 0, 38, 34, 0, 38, 35, 0, 38, 36, 0, 38, 37, 0, 38, 38, 0, 38, 39, 0, 38, 40, 0, 38, 41, 0, 38, 42, 0, 38, 43, 0, 38, 44, 0, 38, 45, 0, 38, 46, 0, 38, 47, 0, 38, 48, 0, 38, 49, 0, 38, 50, 0, 38, 51, 0, 38, 52, 0, 38, 53, 0, 38, 54, 0, 38, 55, 0, 38, 56, 0, 38, 57, 0, 38, 58, 0, 38, 59, 0, 38, 60, 0, 38, 61, 0, 38, 62, 0, 39, 65474, 0, 39, 65475, 0, 39, 65476, 0, 39, 65477, 0, 39, 65478, 0, 39, 65479, 0, 39, 65480, 0, 39, 65481, 0, 39, 65482, 0, 39, 65483, 0, 39, 65484, 0, 39, 65485, 0, 39, 65486, 0, 39, 65487, 0, 39, 65488, 0, 39, 65489, 0, 39, 65490, 0, 39, 65491, 0, 39, 65492, 0, 39, 65493, 0, 39, 65494, 0, 39, 65495, 0, 39, 65496, 0, 39, 65497, 0, 39, 65498, 0, 39, 65499, 0, 39, 65500, 0, 39, 65501, 0, 39, 65502, 0, 39, 65503, 0, 39, 65504, 0, 39, 65505, 0, 39, 65506, 0, 39, 65507, 0, 39, 65508, 0, 39, 65509, 0, 39, 65510, 0, 39, 65511, 0, 39, 65512, 0, 39, 65513, 0, 39, 65514, 0, 39, 65515, 0, 39, 65516, 0, 39, 65517, 0, 39, 65518, 0, 39, 65519, 0, 39, 65520, 0, 39, 65521, 0, 39, 65522, 0, 39, 65523, 0, 39, 65524, 0, 39, 65525, 0, 39, 65526, 0, 39, 65527, 0, 39, 65528, 0, 39, 65529, 0, 39, 65530, 0, 39, 65531, 0, 39, 65532, 0, 39, 65533, 0, 39, 65534, 0, 39, 65535, 0, 39, 0, 0, 39, 1, 0, 39, 2, 0, 39, 3, 0, 39, 4, 0, 39, 5, 0, 39, 6, 0, 39, 7, 0, 39, 8, 0, 39, 9, 0, 39, 10, 0, 39, 11, 0, 39, 12, 0, 39, 13, 0, 39, 14, 0, 39, 15, 0, 39, 16, 0, 39, 17, 0, 39, 18, 0, 39, 19, 0, 39, 20, 0, 39, 21, 0, 39, 22, 0, 39, 23, 0, 39, 24, 0, 39, 25, 0, 39, 26, 0, 39, 27, 0, 39, 28, 0, 39, 29, 0, 39, 30, 0, 39, 31, 0, 39, 32, 0, 39, 33, 0, 39, 34, 0, 39, 35, 0, 39, 36, 0, 39, 37, 0, 39, 38, 0, 39, 39, 0, 39, 40, 0, 39, 41, 0, 39, 42, 0, 39, 43, 0, 39, 44, 0, 39, 45, 0, 39, 46, 0, 39, 47, 0, 39, 48, 0, 39, 49, 0, 39, 50, 0, 39, 51, 0, 39, 52, 0, 39, 53, 0, 39, 54, 0, 39, 55, 0, 39, 56, 0, 39, 57, 0, 39, 58, 0, 39, 59, 0, 39, 60, 0, 39, 61, 0, 39, 62, 0, 40, 65474, 0, 40, 65475, 0, 40, 65476, 0, 40, 65477, 0, 40, 65478, 0, 40, 65479, 0, 40, 65480, 0, 40, 65481, 0, 40, 65482, 0, 40, 65483, 0, 40, 65484, 0, 40, 65485, 0, 40, 65486, 0, 40, 65487, 0, 40, 65488, 0, 40, 65489, 0, 40, 65490, 0, 40, 65491, 0, 40, 65492, 0, 40, 65493, 0, 40, 65494, 0, 40, 65495, 0, 40, 65496, 0, 40, 65497, 0, 40, 65498, 0, 40, 65499, 0, 40, 65500, 0, 40, 65501, 0, 40, 65502, 0, 40, 65503, 0, 40, 65504, 0, 40, 65505, 0, 40, 65506, 0, 40, 65507, 0, 40, 65508, 0, 40, 65509, 0, 40, 65510, 0, 40, 65511, 0, 40, 65512, 0, 40, 65513, 0, 40, 65514, 0, 40, 65515, 0, 40, 65516, 0, 40, 65517, 0, 40, 65518, 0, 40, 65519, 0, 40, 65520, 0, 40, 65521, 0, 40, 65522, 0, 40, 65523, 0, 40, 65524, 0, 40, 65525, 0, 40, 65526, 0, 40, 65527, 0, 40, 65528, 0, 40, 65529, 0, 40, 65530, 0, 40, 65531, 0, 40, 65532, 0, 40, 65533, 0, 40, 65534, 0, 40, 65535, 0, 40, 0, 0, 40, 1, 0, 40, 2, 0, 40, 3, 0, 40, 4, 0, 40, 5, 0, 40, 6, 0, 40, 7, 0, 40, 8, 0, 40, 9, 0, 40, 10, 0, 40, 11, 0, 40, 12, 0, 40, 13, 0, 40, 14, 0, 40, 15, 0, 40, 16, 0, 40, 17, 0, 40, 18, 0, 40, 19, 0, 40, 20, 0, 40, 21, 0, 40, 22, 0, 40, 23, 0, 40, 24, 0, 40, 25, 0, 40, 26, 0, 40, 27, 0, 40, 28, 0, 40, 29, 0, 40, 30, 0, 40, 31, 0, 40, 32, 0, 40, 33, 0, 40, 34, 0, 40, 35, 0, 40, 36, 0, 40, 37, 0, 40, 38, 0, 40, 39, 0, 40, 40, 0, 40, 41, 0, 40, 42, 0, 40, 43, 0, 40, 44, 0, 40, 45, 0, 40, 46, 0, 40, 47, 0, 40, 48, 0, 40, 49, 0, 40, 50, 0, 40, 51, 0, 40, 52, 0, 40, 53, 0, 40, 54, 0, 40, 55, 0, 40, 56, 0, 40, 57, 0, 40, 58, 0, 40, 59, 0, 40, 60, 0, 40, 61, 0, 40, 62, 0, 41, 65474, 0, 41, 65475, 0, 41, 65476, 0, 41, 65477, 0, 41, 65478, 0, 41, 65479, 0, 41, 65480, 0, 41, 65481, 0, 41, 65482, 0, 41, 65483, 0, 41, 65484, 0, 41, 65485, 0, 41, 65486, 0, 41, 65487, 0, 41, 65488, 0, 41, 65489, 0, 41, 65490, 0, 41, 65491, 0, 41, 65492, 0, 41, 65493, 0, 41, 65494, 0, 41, 65495, 0, 41, 65496, 0, 41, 65497, 0, 41, 65498, 0, 41, 65499, 0, 41, 65500, 0, 41, 65501, 0, 41, 65502, 0, 41, 65503, 0, 41, 65504, 0, 41, 65505, 0, 41, 65506, 0, 41, 65507, 0, 41, 65508, 0, 41, 65509, 0, 41, 65510, 0, 41, 65511, 0, 41, 65512, 0, 41, 65513, 0, 41, 65514, 0, 41, 65515, 0, 41, 65516, 0, 41, 65517, 0, 41, 65518, 0, 41, 65519, 0, 41, 65520, 0, 41, 65521, 0, 41, 65522, 0, 41, 65523, 0, 41, 65524, 0, 41, 65525, 0, 41, 65526, 0, 41, 65527, 0, 41, 65528, 0, 41, 65529, 0, 41, 65530, 0, 41, 65531, 0, 41, 65532, 0, 41, 65533, 0, 41, 65534, 0, 41, 65535, 0, 41, 0, 0, 41, 1, 0, 41, 2, 0, 41, 3, 0, 41, 4, 0, 41, 5, 0, 41, 6, 0, 41, 7, 0, 41, 8, 0, 41, 9, 0, 41, 10, 0, 41, 11, 0, 41, 12, 0, 41, 13, 0, 41, 14, 0, 41, 15, 0, 41, 16, 0, 41, 17, 0, 41, 18, 0, 41, 19, 0, 41, 20, 0, 41, 21, 0, 41, 22, 0, 41, 23, 0, 41, 24, 0, 41, 25, 0, 41, 26, 0, 41, 27, 0, 41, 28, 0, 41, 29, 0, 41, 30, 0, 41, 31, 0, 41, 32, 0, 41, 33, 0, 41, 34, 0, 41, 35, 0, 41, 36, 0, 41, 37, 0, 41, 38, 0, 41, 39, 0, 41, 40, 0, 41, 41, 0, 41, 42, 0, 41, 43, 0, 41, 44, 0, 41, 45, 0, 41, 46, 0, 41, 47, 0, 41, 48, 0, 41, 49, 0, 41, 50, 0, 41, 51, 0, 41, 52, 0, 41, 53, 0, 41, 54, 0, 41, 55, 0, 41, 56, 0, 41, 57, 0, 41, 58, 0, 41, 59, 0, 41, 60, 0, 41, 61, 0, 41, 62, 0, 42, 65474, 0, 42, 65475, 0, 42, 65476, 0, 42, 65477, 0, 42, 65478, 0, 42, 65479, 0, 42, 65480, 0, 42, 65481, 0, 42, 65482, 0, 42, 65483, 0, 42, 65484, 0, 42, 65485, 0, 42, 65486, 0, 42, 65487, 0, 42, 65488, 0, 42, 65489, 0, 42, 65490, 0, 42, 65491, 0, 42, 65492, 0, 42, 65493, 0, 42, 65494, 0, 42, 65495, 0, 42, 65496, 0, 42, 65497, 0, 42, 65498, 0, 42, 65499, 0, 42, 65500, 0, 42, 65501, 0, 42, 65502, 0, 42, 65503, 0, 42, 65504, 0, 42, 65505, 0, 42, 65506, 0, 42, 65507, 0, 42, 65508, 0, 42, 65509, 0, 42, 65510, 0, 42, 65511, 0, 42, 65512, 0, 42, 65513, 0, 42, 65514, 0, 42, 65515, 0, 42, 65516, 0, 42, 65517, 0, 42, 65518, 0, 42, 65519, 0, 42, 65520, 0, 42, 65521, 0, 42, 65522, 0, 42, 65523, 0, 42, 65524, 0, 42, 65525, 0, 42, 65526, 0, 42, 65527, 0, 42, 65528, 0, 42, 65529, 0, 42, 65530, 0, 42, 65531, 0, 42, 65532, 0, 42, 65533, 0, 42, 65534, 0, 42, 65535, 0, 42, 0, 0, 42, 1, 0, 42, 2, 0, 42, 3, 0, 42, 4, 0, 42, 5, 0, 42, 6, 0, 42, 7, 0, 42, 8, 0, 42, 9, 0, 42, 10, 0, 42, 11, 0, 42, 12, 0, 42, 13, 0, 42, 14, 0, 42, 15, 0, 42, 16, 0, 42, 17, 0, 42, 18, 0, 42, 19, 0, 42, 20, 0, 42, 21, 0, 42, 22, 0, 42, 23, 0, 42, 24, 0, 42, 25, 0, 42, 26, 0, 42, 27, 0, 42, 28, 0, 42, 29, 0, 42, 30, 0, 42, 31, 0, 42, 32, 0, 42, 33, 0, 42, 34, 0, 42, 35, 0, 42, 36, 0, 42, 37, 0, 42, 38, 0, 42, 39, 0, 42, 40, 0, 42, 41, 0, 42, 42, 0, 42, 43, 0, 42, 44, 0, 42, 45, 0, 42, 46, 0, 42, 47, 0, 42, 48, 0, 42, 49, 0, 42, 50, 0, 42, 51, 0, 42, 52, 0, 42, 53, 0, 42, 54, 0, 42, 55, 0, 42, 56, 0, 42, 57, 0, 42, 58, 0, 42, 59, 0, 42, 60, 0, 42, 61, 0, 42, 62, 0, 43, 65474, 0, 43, 65475, 0, 43, 65476, 0, 43, 65477, 0, 43, 65478, 0, 43, 65479, 0, 43, 65480, 0, 43, 65481, 0, 43, 65482, 0, 43, 65483, 0, 43, 65484, 0, 43, 65485, 0, 43, 65486, 0, 43, 65487, 0, 43, 65488, 0, 43, 65489, 0, 43, 65490, 0, 43, 65491, 0, 43, 65492, 0, 43, 65493, 0, 43, 65494, 0, 43, 65495, 0, 43, 65496, 0, 43, 65497, 0, 43, 65498, 0, 43, 65499, 0, 43, 65500, 0, 43, 65501, 0, 43, 65502, 0, 43, 65503, 0, 43, 65504, 0, 43, 65505, 0, 43, 65506, 0, 43, 65507, 0, 43, 65508, 0, 43, 65509, 0, 43, 65510, 0, 43, 65511, 0, 43, 65512, 0, 43, 65513, 0, 43, 65514, 0, 43, 65515, 0, 43, 65516, 0, 43, 65517, 0, 43, 65518, 0, 43, 65519, 0, 43, 65520, 0, 43, 65521, 0, 43, 65522, 0, 43, 65523, 0, 43, 65524, 0, 43, 65525, 0, 43, 65526, 0, 43, 65527, 0, 43, 65528, 0, 43, 65529, 0, 43, 65530, 0, 43, 65531, 0, 43, 65532, 0, 43, 65533, 0, 43, 65534, 0, 43, 65535, 0, 43, 0, 0, 43, 1, 0, 43, 2, 0, 43, 3, 0, 43, 4, 0, 43, 5, 0, 43, 6, 0, 43, 7, 0, 43, 8, 0, 43, 9, 0, 43, 10, 0, 43, 11, 0, 43, 12, 0, 43, 13, 0, 43, 14, 0, 43, 15, 0, 43, 16, 0, 43, 17, 0, 43, 18, 0, 43, 19, 0, 43, 20, 0, 43, 21, 0, 43, 22, 0, 43, 23, 0, 43, 24, 0, 43, 25, 0, 43, 26, 0, 43, 27, 0, 43, 28, 0, 43, 29, 0, 43, 30, 0, 43, 31, 0, 43, 32, 0, 43, 33, 0, 43, 34, 0, 43, 35, 0, 43, 36, 0, 43, 37, 0, 43, 38, 0, 43, 39, 0, 43, 40, 0, 43, 41, 0, 43, 42, 0, 43, 43, 0, 43, 44, 0, 43, 45, 0, 43, 46, 0, 43, 47, 0, 43, 48, 0, 43, 49, 0, 43, 50, 0, 43, 51, 0, 43, 52, 0, 43, 53, 0, 43, 54, 0, 43, 55, 0, 43, 56, 0, 43, 57, 0, 43, 58, 0, 43, 59, 0, 43, 60, 0, 43, 61, 0, 43, 62, 0, 44, 65474, 0, 44, 65475, 0, 44, 65476, 0, 44, 65477, 0, 44, 65478, 0, 44, 65479, 0, 44, 65480, 0, 44, 65481, 0, 44, 65482, 0, 44, 65483, 0, 44, 65484, 0, 44, 65485, 0, 44, 65486, 0, 44, 65487, 0, 44, 65488, 0, 44, 65489, 0, 44, 65490, 0, 44, 65491, 0, 44, 65492, 0, 44, 65493, 0, 44, 65494, 0, 44, 65495, 0, 44, 65496, 0, 44, 65497, 0, 44, 65498, 0, 44, 65499, 0, 44, 65500, 0, 44, 65501, 0, 44, 65502, 0, 44, 65503, 0, 44, 65504, 0, 44, 65505, 0, 44, 65506, 0, 44, 65507, 0, 44, 65508, 0, 44, 65509, 0, 44, 65510, 0, 44, 65511, 0, 44, 65512, 0, 44, 65513, 0, 44, 65514, 0, 44, 65515, 0, 44, 65516, 0, 44, 65517, 0, 44, 65518, 0, 44, 65519, 0, 44, 65520, 0, 44, 65521, 0, 44, 65522, 0, 44, 65523, 0, 44, 65524, 0, 44, 65525, 0, 44, 65526, 0, 44, 65527, 0, 44, 65528, 0, 44, 65529, 0, 44, 65530, 0, 44, 65531, 0, 44, 65532, 0, 44, 65533, 0, 44, 65534, 0, 44, 65535, 0, 44, 0, 0, 44, 1, 0, 44, 2, 0, 44, 3, 0, 44, 4, 0, 44, 5, 0, 44, 6, 0, 44, 7, 0, 44, 8, 0, 44, 9, 0, 44, 10, 0, 44, 11, 0, 44, 12, 0, 44, 13, 0, 44, 14, 0, 44, 15, 0, 44, 16, 0, 44, 17, 0, 44, 18, 0, 44, 19, 0, 44, 20, 0, 44, 21, 0, 44, 22, 0, 44, 23, 0, 44, 24, 0, 44, 25, 0, 44, 26, 0, 44, 27, 0, 44, 28, 0, 44, 29, 0, 44, 30, 0, 44, 31, 0, 44, 32, 0, 44, 33, 0, 44, 34, 0, 44, 35, 0, 44, 36, 0, 44, 37, 0, 44, 38, 0, 44, 39, 0, 44, 40, 0, 44, 41, 0, 44, 42, 0, 44, 43, 0, 44, 44, 0, 44, 45, 0, 44, 46, 0, 44, 47, 0, 44, 48, 0, 44, 49, 0, 44, 50, 0, 44, 51, 0, 44, 52, 0, 44, 53, 0, 44, 54, 0, 44, 55, 0, 44, 56, 0, 44, 57, 0, 44, 58, 0, 44, 59, 0, 44, 60, 0, 44, 61, 0, 44, 62, 0, 45, 65474, 0, 45, 65475, 0, 45, 65476, 0, 45, 65477, 0, 45, 65478, 0, 45, 65479, 0, 45, 65480, 0, 45, 65481, 0, 45, 65482, 0, 45, 65483, 0, 45, 65484, 0, 45, 65485, 0, 45, 65486, 0, 45, 65487, 0, 45, 65488, 0, 45, 65489, 0, 45, 65490, 0, 45, 65491, 0, 45, 65492, 0, 45, 65493, 0, 45, 65494, 0, 45, 65495, 0, 45, 65496, 0, 45, 65497, 0, 45, 65498, 0, 45, 65499, 0, 45, 65500, 0, 45, 65501, 0, 45, 65502, 0, 45, 65503, 0, 45, 65504, 0, 45, 65505, 0, 45, 65506, 0, 45, 65507, 0, 45, 65508, 0, 45, 65509, 0, 45, 65510, 0, 45, 65511, 0, 45, 65512, 0, 45, 65513, 0, 45, 65514, 0, 45, 65515, 0, 45, 65516, 0, 45, 65517, 0, 45, 65518, 0, 45, 65519, 0, 45, 65520, 0, 45, 65521, 0, 45, 65522, 0, 45, 65523, 0, 45, 65524, 0, 45, 65525, 0, 45, 65526, 0, 45, 65527, 0, 45, 65528, 0, 45, 65529, 0, 45, 65530, 0, 45, 65531, 0, 45, 65532, 0, 45, 65533, 0, 45, 65534, 0, 45, 65535, 0, 45, 0, 0, 45, 1, 0, 45, 2, 0, 45, 3, 0, 45, 4, 0, 45, 5, 0, 45, 6, 0, 45, 7, 0, 45, 8, 0, 45, 9, 0, 45, 10, 0, 45, 11, 0, 45, 12, 0, 45, 13, 0, 45, 14, 0, 45, 15, 0, 45, 16, 0, 45, 17, 0, 45, 18, 0, 45, 19, 0, 45, 20, 0, 45, 21, 0, 45, 22, 0, 45, 23, 0, 45, 24, 0, 45, 25, 0, 45, 26, 0, 45, 27, 0, 45, 28, 0, 45, 29, 0, 45, 30, 0, 45, 31, 0, 45, 32, 0, 45, 33, 0, 45, 34, 0, 45, 35, 0, 45, 36, 0, 45, 37, 0, 45, 38, 0, 45, 39, 0, 45, 40, 0, 45, 41, 0, 45, 42, 0, 45, 43, 0, 45, 44, 0, 45, 45, 0, 45, 46, 0, 45, 47, 0, 45, 48, 0, 45, 49, 0, 45, 50, 0, 45, 51, 0, 45, 52, 0, 45, 53, 0, 45, 54, 0, 45, 55, 0, 45, 56, 0, 45, 57, 0, 45, 58, 0, 45, 59, 0, 45, 60, 0, 45, 61, 0, 45, 62, 0, 46, 65474, 0, 46, 65475, 0, 46, 65476, 0, 46, 65477, 0, 46, 65478, 0, 46, 65479, 0, 46, 65480, 0, 46, 65481, 0, 46, 65482, 0, 46, 65483, 0, 46, 65484, 0, 46, 65485, 0, 46, 65486, 0, 46, 65487, 0, 46, 65488, 0, 46, 65489, 0, 46, 65490, 0, 46, 65491, 0, 46, 65492, 0, 46, 65493, 0, 46, 65494, 0, 46, 65495, 0, 46, 65496, 0, 46, 65497, 0, 46, 65498, 0, 46, 65499, 0, 46, 65500, 0, 46, 65501, 0, 46, 65502, 0, 46, 65503, 0, 46, 65504, 0, 46, 65505, 0, 46, 65506, 0, 46, 65507, 0, 46, 65508, 0, 46, 65509, 0, 46, 65510, 0, 46, 65511, 0, 46, 65512, 0, 46, 65513, 0, 46, 65514, 0, 46, 65515, 0, 46, 65516, 0, 46, 65517, 0, 46, 65518, 0, 46, 65519, 0, 46, 65520, 0, 46, 65521, 0, 46, 65522, 0, 46, 65523, 0, 46, 65524, 0, 46, 65525, 0, 46, 65526, 0, 46, 65527, 0, 46, 65528, 0, 46, 65529, 0, 46, 65530, 0, 46, 65531, 0, 46, 65532, 0, 46, 65533, 0, 46, 65534, 0, 46, 65535, 0, 46, 0, 0, 46, 1, 0, 46, 2, 0, 46, 3, 0, 46, 4, 0, 46, 5, 0, 46, 6, 0, 46, 7, 0, 46, 8, 0, 46, 9, 0, 46, 10, 0, 46, 11, 0, 46, 12, 0, 46, 13, 0, 46, 14, 0, 46, 15, 0, 46, 16, 0, 46, 17, 0, 46, 18, 0, 46, 19, 0, 46, 20, 0, 46, 21, 0, 46, 22, 0, 46, 23, 0, 46, 24, 0, 46, 25, 0, 46, 26, 0, 46, 27, 0, 46, 28, 0, 46, 29, 0, 46, 30, 0, 46, 31, 0, 46, 32, 0, 46, 33, 0, 46, 34, 0, 46, 35, 0, 46, 36, 0, 46, 37, 0, 46, 38, 0, 46, 39, 0, 46, 40, 0, 46, 41, 0, 46, 42, 0, 46, 43, 0, 46, 44, 0, 46, 45, 0, 46, 46, 0, 46, 47, 0, 46, 48, 0, 46, 49, 0, 46, 50, 0, 46, 51, 0, 46, 52, 0, 46, 53, 0, 46, 54, 0, 46, 55, 0, 46, 56, 0, 46, 57, 0, 46, 58, 0, 46, 59, 0, 46, 60, 0, 46, 61, 0, 46, 62, 0, 47, 65474, 0, 47, 65475, 0, 47, 65476, 0, 47, 65477, 0, 47, 65478, 0, 47, 65479, 0, 47, 65480, 0, 47, 65481, 0, 47, 65482, 0, 47, 65483, 0, 47, 65484, 0, 47, 65485, 0, 47, 65486, 0, 47, 65487, 0, 47, 65488, 0, 47, 65489, 0, 47, 65490, 0, 47, 65491, 0, 47, 65492, 0, 47, 65493, 0, 47, 65494, 0, 47, 65495, 0, 47, 65496, 0, 47, 65497, 0, 47, 65498, 0, 47, 65499, 0, 47, 65500, 0, 47, 65501, 0, 47, 65502, 0, 47, 65503, 0, 47, 65504, 0, 47, 65505, 0, 47, 65506, 0, 47, 65507, 0, 47, 65508, 0, 47, 65509, 0, 47, 65510, 0, 47, 65511, 0, 47, 65512, 0, 47, 65513, 0, 47, 65514, 0, 47, 65515, 0, 47, 65516, 0, 47, 65517, 0, 47, 65518, 0, 47, 65519, 0, 47, 65520, 0, 47, 65521, 0, 47, 65522, 0, 47, 65523, 0, 47, 65524, 0, 47, 65525, 0, 47, 65526, 0, 47, 65527, 0, 47, 65528, 0, 47, 65529, 0, 47, 65530, 0, 47, 65531, 0, 47, 65532, 0, 47, 65533, 0, 47, 65534, 0, 47, 65535, 0, 47, 0, 0, 47, 1, 0, 47, 2, 0, 47, 3, 0, 47, 4, 0, 47, 5, 0, 47, 6, 0, 47, 7, 0, 47, 8, 0, 47, 9, 0, 47, 10, 0, 47, 11, 0, 47, 12, 0, 47, 13, 0, 47, 14, 0, 47, 15, 0, 47, 16, 0, 47, 17, 0, 47, 18, 0, 47, 19, 0, 47, 20, 0, 47, 21, 0, 47, 22, 0, 47, 23, 0, 47, 24, 0, 47, 25, 0, 47, 26, 0, 47, 27, 0, 47, 28, 0, 47, 29, 0, 47, 30, 0, 47, 31, 0, 47, 32, 0, 47, 33, 0, 47, 34, 0, 47, 35, 0, 47, 36, 0, 47, 37, 0, 47, 38, 0, 47, 39, 0, 47, 40, 0, 47, 41, 0, 47, 42, 0, 47, 43, 0, 47, 44, 0, 47, 45, 0, 47, 46, 0, 47, 47, 0, 47, 48, 0, 47, 49, 0, 47, 50, 0, 47, 51, 0, 47, 52, 0, 47, 53, 0, 47, 54, 0, 47, 55, 0, 47, 56, 0, 47, 57, 0, 47, 58, 0, 47, 59, 0, 47, 60, 0, 47, 61, 0, 47, 62, 0, 48, 65474, 0, 48, 65475, 0, 48, 65476, 0, 48, 65477, 0, 48, 65478, 0, 48, 65479, 0, 48, 65480, 0, 48, 65481, 0, 48, 65482, 0, 48, 65483, 0, 48, 65484, 0, 48, 65485, 0, 48, 65486, 0, 48, 65487, 0, 48, 65488, 0, 48, 65489, 0, 48, 65490, 0, 48, 65491, 0, 48, 65492, 0, 48, 65493, 0, 48, 65494, 0, 48, 65495, 0, 48, 65496, 0, 48, 65497, 0, 48, 65498, 0, 48, 65499, 0, 48, 65500, 0, 48, 65501, 0, 48, 65502, 0, 48, 65503, 0, 48, 65504, 0, 48, 65505, 0, 48, 65506, 0, 48, 65507, 0, 48, 65508, 0, 48, 65509, 0, 48, 65510, 0, 48, 65511, 0, 48, 65512, 0, 48, 65513, 0, 48, 65514, 0, 48, 65515, 0, 48, 65516, 0, 48, 65517, 0, 48, 65518, 0, 48, 65519, 0, 48, 65520, 0, 48, 65521, 0, 48, 65522, 0, 48, 65523, 0, 48, 65524, 0, 48, 65525, 0, 48, 65526, 0, 48, 65527, 0, 48, 65528, 0, 48, 65529, 0, 48, 65530, 0, 48, 65531, 0, 48, 65532, 0, 48, 65533, 0, 48, 65534, 0, 48, 65535, 0, 48, 0, 0, 48, 1, 0, 48, 2, 0, 48, 3, 0, 48, 4, 0, 48, 5, 0, 48, 6, 0, 48, 7, 0, 48, 8, 0, 48, 9, 0, 48, 10, 0, 48, 11, 0, 48, 12, 0, 48, 13, 0, 48, 14, 0, 48, 15, 0, 48, 16, 0, 48, 17, 0, 48, 18, 0, 48, 19, 0, 48, 20, 0, 48, 21, 0, 48, 22, 0, 48, 23, 0, 48, 24, 0, 48, 25, 0, 48, 26, 0, 48, 27, 0, 48, 28, 0, 48, 29, 0, 48, 30, 0, 48, 31, 0, 48, 32, 0, 48, 33, 0, 48, 34, 0, 48, 35, 0, 48, 36, 0, 48, 37, 0, 48, 38, 0, 48, 39, 0, 48, 40, 0, 48, 41, 0, 48, 42, 0, 48, 43, 0, 48, 44, 0, 48, 45, 0, 48, 46, 0, 48, 47, 0, 48, 48, 0, 48, 49, 0, 48, 50, 0, 48, 51, 0, 48, 52, 0, 48, 53, 0, 48, 54, 0, 48, 55, 0, 48, 56, 0, 48, 57, 0, 48, 58, 0, 48, 59, 0, 48, 60, 0, 48, 61, 0, 48, 62, 0, 49, 65474, 0, 49, 65475, 0, 49, 65476, 0, 49, 65477, 0, 49, 65478, 0, 49, 65479, 0, 49, 65480, 0, 49, 65481, 0, 49, 65482, 0, 49, 65483, 0, 49, 65484, 0, 49, 65485, 0, 49, 65486, 0, 49, 65487, 0, 49, 65488, 0, 49, 65489, 0, 49, 65490, 0, 49, 65491, 0, 49, 65492, 0, 49, 65493, 0, 49, 65494, 0, 49, 65495, 0, 49, 65496, 0, 49, 65497, 0, 49, 65498, 0, 49, 65499, 0, 49, 65500, 0, 49, 65501, 0, 49, 65502, 0, 49, 65503, 0, 49, 65504, 0, 49, 65505, 0, 49, 65506, 0, 49, 65507, 0, 49, 65508, 0, 49, 65509, 0, 49, 65510, 0, 49, 65511, 0, 49, 65512, 0, 49, 65513, 0, 49, 65514, 0, 49, 65515, 0, 49, 65516, 0, 49, 65517, 0, 49, 65518, 0, 49, 65519, 0, 49, 65520, 0, 49, 65521, 0, 49, 65522, 0, 49, 65523, 0, 49, 65524, 0, 49, 65525, 0, 49, 65526, 0, 49, 65527, 0, 49, 65528, 0, 49, 65529, 0, 49, 65530, 0, 49, 65531, 0, 49, 65532, 0, 49, 65533, 0, 49, 65534, 0, 49, 65535, 0, 49, 0, 0, 49, 1, 0, 49, 2, 0, 49, 3, 0, 49, 4, 0, 49, 5, 0, 49, 6, 0, 49, 7, 0, 49, 8, 0, 49, 9, 0, 49, 10, 0, 49, 11, 0, 49, 12, 0, 49, 13, 0, 49, 14, 0, 49, 15, 0, 49, 16, 0, 49, 17, 0, 49, 18, 0, 49, 19, 0, 49, 20, 0, 49, 21, 0, 49, 22, 0, 49, 23, 0, 49, 24, 0, 49, 25, 0, 49, 26, 0, 49, 27, 0, 49, 28, 0, 49, 29, 0, 49, 30, 0, 49, 31, 0, 49, 32, 0, 49, 33, 0, 49, 34, 0, 49, 35, 0, 49, 36, 0, 49, 37, 0, 49, 38, 0, 49, 39, 0, 49, 40, 0, 49, 41, 0, 49, 42, 0, 49, 43, 0, 49, 44, 0, 49, 45, 0, 49, 46, 0, 49, 47, 0, 49, 48, 0, 49, 49, 0, 49, 50, 0, 49, 51, 0, 49, 52, 0, 49, 53, 0, 49, 54, 0, 49, 55, 0, 49, 56, 0, 49, 57, 0, 49, 58, 0, 49, 59, 0, 49, 60, 0, 49, 61, 0, 49, 62, 0, 50, 65474, 0, 50, 65475, 0, 50, 65476, 0, 50, 65477, 0, 50, 65478, 0, 50, 65479, 0, 50, 65480, 0, 50, 65481, 0, 50, 65482, 0, 50, 65483, 0, 50, 65484, 0, 50, 65485, 0, 50, 65486, 0, 50, 65487, 0, 50, 65488, 0, 50, 65489, 0, 50, 65490, 0, 50, 65491, 0, 50, 65492, 0, 50, 65493, 0, 50, 65494, 0, 50, 65495, 0, 50, 65496, 0, 50, 65497, 0, 50, 65498, 0, 50, 65499, 0, 50, 65500, 0, 50, 65501, 0, 50, 65502, 0, 50, 65503, 0, 50, 65504, 0, 50, 65505, 0, 50, 65506, 0, 50, 65507, 0, 50, 65508, 0, 50, 65509, 0, 50, 65510, 0, 50, 65511, 0, 50, 65512, 0, 50, 65513, 0, 50, 65514, 0, 50, 65515, 0, 50, 65516, 0, 50, 65517, 0, 50, 65518, 0, 50, 65519, 0, 50, 65520, 0, 50, 65521, 0, 50, 65522, 0, 50, 65523, 0, 50, 65524, 0, 50, 65525, 0, 50, 65526, 0, 50, 65527, 0, 50, 65528, 0, 50, 65529, 0, 50, 65530, 0, 50, 65531, 0, 50, 65532, 0, 50, 65533, 0, 50, 65534, 0, 50, 65535, 0, 50, 0, 0, 50, 1, 0, 50, 2, 0, 50, 3, 0, 50, 4, 0, 50, 5, 0, 50, 6, 0, 50, 7, 0, 50, 8, 0, 50, 9, 0, 50, 10, 0, 50, 11, 0, 50, 12, 0, 50, 13, 0, 50, 14, 0, 50, 15, 0, 50, 16, 0, 50, 17, 0, 50, 18, 0, 50, 19, 0, 50, 20, 0, 50, 21, 0, 50, 22, 0, 50, 23, 0, 50, 24, 0, 50, 25, 0, 50, 26, 0, 50, 27, 0, 50, 28, 0, 50, 29, 0, 50, 30, 0, 50, 31, 0, 50, 32, 0, 50, 33, 0, 50, 34, 0, 50, 35, 0, 50, 36, 0, 50, 37, 0, 50, 38, 0, 50, 39, 0, 50, 40, 0, 50, 41, 0, 50, 42, 0, 50, 43, 0, 50, 44, 0, 50, 45, 0, 50, 46, 0, 50, 47, 0, 50, 48, 0, 50, 49, 0, 50, 50, 0, 50, 51, 0, 50, 52, 0, 50, 53, 0, 50, 54, 0, 50, 55, 0, 50, 56, 0, 50, 57, 0, 50, 58, 0, 50, 59, 0, 50, 60, 0, 50, 61, 0, 50, 62, 0, 51, 65474, 0, 51, 65475, 0, 51, 65476, 0, 51, 65477, 0, 51, 65478, 0, 51, 65479, 0, 51, 65480, 0, 51, 65481, 0, 51, 65482, 0, 51, 65483, 0, 51, 65484, 0, 51, 65485, 0, 51, 65486, 0, 51, 65487, 0, 51, 65488, 0, 51, 65489, 0, 51, 65490, 0, 51, 65491, 0, 51, 65492, 0, 51, 65493, 0, 51, 65494, 0, 51, 65495, 0, 51, 65496, 0, 51, 65497, 0, 51, 65498, 0, 51, 65499, 0, 51, 65500, 0, 51, 65501, 0, 51, 65502, 0, 51, 65503, 0, 51, 65504, 0, 51, 65505, 0, 51, 65506, 0, 51, 65507, 0, 51, 65508, 0, 51, 65509, 0, 51, 65510, 0, 51, 65511, 0, 51, 65512, 0, 51, 65513, 0, 51, 65514, 0, 51, 65515, 0, 51, 65516, 0, 51, 65517, 0, 51, 65518, 0, 51, 65519, 0, 51, 65520, 0, 51, 65521, 0, 51, 65522, 0, 51, 65523, 0, 51, 65524, 0, 51, 65525, 0, 51, 65526, 0, 51, 65527, 0, 51, 65528, 0, 51, 65529, 0, 51, 65530, 0, 51, 65531, 0, 51, 65532, 0, 51, 65533, 0, 51, 65534, 0, 51, 65535, 0, 51, 0, 0, 51, 1, 0, 51, 2, 0, 51, 3, 0, 51, 4, 0, 51, 5, 0, 51, 6, 0, 51, 7, 0, 51, 8, 0, 51, 9, 0, 51, 10, 0, 51, 11, 0, 51, 12, 0, 51, 13, 0, 51, 14, 0, 51, 15, 0, 51, 16, 0, 51, 17, 0, 51, 18, 0, 51, 19, 0, 51, 20, 0, 51, 21, 0, 51, 22, 0, 51, 23, 0, 51, 24, 0, 51, 25, 0, 51, 26, 0, 51, 27, 0, 51, 28, 0, 51, 29, 0, 51, 30, 0, 51, 31, 0, 51, 32, 0, 51, 33, 0, 51, 34, 0, 51, 35, 0, 51, 36, 0, 51, 37, 0, 51, 38, 0, 51, 39, 0, 51, 40, 0, 51, 41, 0, 51, 42, 0, 51, 43, 0, 51, 44, 0, 51, 45, 0, 51, 46, 0, 51, 47, 0, 51, 48, 0, 51, 49, 0, 51, 50, 0, 51, 51, 0, 51, 52, 0, 51, 53, 0, 51, 54, 0, 51, 55, 0, 51, 56, 0, 51, 57, 0, 51, 58, 0, 51, 59, 0, 51, 60, 0, 51, 61, 0, 51, 62, 0, 52, 65474, 0, 52, 65475, 0, 52, 65476, 0, 52, 65477, 0, 52, 65478, 0, 52, 65479, 0, 52, 65480, 0, 52, 65481, 0, 52, 65482, 0, 52, 65483, 0, 52, 65484, 0, 52, 65485, 0, 52, 65486, 0, 52, 65487, 0, 52, 65488, 0, 52, 65489, 0, 52, 65490, 0, 52, 65491, 0, 52, 65492, 0, 52, 65493, 0, 52, 65494, 0, 52, 65495, 0, 52, 65496, 0, 52, 65497, 0, 52, 65498, 0, 52, 65499, 0, 52, 65500, 0, 52, 65501, 0, 52, 65502, 0, 52, 65503, 0, 52, 65504, 0, 52, 65505, 0, 52, 65506, 0, 52, 65507, 0, 52, 65508, 0, 52, 65509, 0, 52, 65510, 0, 52, 65511, 0, 52, 65512, 0, 52, 65513, 0, 52, 65514, 0, 52, 65515, 0, 52, 65516, 0, 52, 65517, 0, 52, 65518, 0, 52, 65519, 0, 52, 65520, 0, 52, 65521, 0, 52, 65522, 0, 52, 65523, 0, 52, 65524, 0, 52, 65525, 0, 52, 65526, 0, 52, 65527, 0, 52, 65528, 0, 52, 65529, 0, 52, 65530, 0, 52, 65531, 0, 52, 65532, 0, 52, 65533, 0, 52, 65534, 0, 52, 65535, 0, 52, 0, 0, 52, 1, 0, 52, 2, 0, 52, 3, 0, 52, 4, 0, 52, 5, 0, 52, 6, 0, 52, 7, 0, 52, 8, 0, 52, 9, 0, 52, 10, 0, 52, 11, 0, 52, 12, 0, 52, 13, 0, 52, 14, 0, 52, 15, 0, 52, 16, 0, 52, 17, 0, 52, 18, 0, 52, 19, 0, 52, 20, 0, 52, 21, 0, 52, 22, 0, 52, 23, 0, 52, 24, 0, 52, 25, 0, 52, 26, 0, 52, 27, 0, 52, 28, 0, 52, 29, 0, 52, 30, 0, 52, 31, 0, 52, 32, 0, 52, 33, 0, 52, 34, 0, 52, 35, 0, 52, 36, 0, 52, 37, 0, 52, 38, 0, 52, 39, 0, 52, 40, 0, 52, 41, 0, 52, 42, 0, 52, 43, 0, 52, 44, 0, 52, 45, 0, 52, 46, 0, 52, 47, 0, 52, 48, 0, 52, 49, 0, 52, 50, 0, 52, 51, 0, 52, 52, 0, 52, 53, 0, 52, 54, 0, 52, 55, 0, 52, 56, 0, 52, 57, 0, 52, 58, 0, 52, 59, 0, 52, 60, 0, 52, 61, 0, 52, 62, 0, 53, 65474, 0, 53, 65475, 0, 53, 65476, 0, 53, 65477, 0, 53, 65478, 0, 53, 65479, 0, 53, 65480, 0, 53, 65481, 0, 53, 65482, 0, 53, 65483, 0, 53, 65484, 0, 53, 65485, 0, 53, 65486, 0, 53, 65487, 0, 53, 65488, 0, 53, 65489, 0, 53, 65490, 0, 53, 65491, 0, 53, 65492, 0, 53, 65493, 0, 53, 65494, 0, 53, 65495, 0, 53, 65496, 0, 53, 65497, 0, 53, 65498, 0, 53, 65499, 0, 53, 65500, 0, 53, 65501, 0, 53, 65502, 0, 53, 65503, 0, 53, 65504, 0, 53, 65505, 0, 53, 65506, 0, 53, 65507, 0, 53, 65508, 0, 53, 65509, 0, 53, 65510, 0, 53, 65511, 0, 53, 65512, 0, 53, 65513, 0, 53, 65514, 0, 53, 65515, 0, 53, 65516, 0, 53, 65517, 0, 53, 65518, 0, 53, 65519, 0, 53, 65520, 0, 53, 65521, 0, 53, 65522, 0, 53, 65523, 0, 53, 65524, 0, 53, 65525, 0, 53, 65526, 0, 53, 65527, 0, 53, 65528, 0, 53, 65529, 0, 53, 65530, 0, 53, 65531, 0, 53, 65532, 0, 53, 65533, 0, 53, 65534, 0, 53, 65535, 0, 53, 0, 0, 53, 1, 0, 53, 2, 0, 53, 3, 0, 53, 4, 0, 53, 5, 0, 53, 6, 0, 53, 7, 0, 53, 8, 0, 53, 9, 0, 53, 10, 0, 53, 11, 0, 53, 12, 0, 53, 13, 0, 53, 14, 0, 53, 15, 0, 53, 16, 0, 53, 17, 0, 53, 18, 0, 53, 19, 0, 53, 20, 0, 53, 21, 0, 53, 22, 0, 53, 23, 0, 53, 24, 0, 53, 25, 0, 53, 26, 0, 53, 27, 0, 53, 28, 0, 53, 29, 0, 53, 30, 0, 53, 31, 0, 53, 32, 0, 53, 33, 0, 53, 34, 0, 53, 35, 0, 53, 36, 0, 53, 37, 0, 53, 38, 0, 53, 39, 0, 53, 40, 0, 53, 41, 0, 53, 42, 0, 53, 43, 0, 53, 44, 0, 53, 45, 0, 53, 46, 0, 53, 47, 0, 53, 48, 0, 53, 49, 0, 53, 50, 0, 53, 51, 0, 53, 52, 0, 53, 53, 0, 53, 54, 0, 53, 55, 0, 53, 56, 0, 53, 57, 0, 53, 58, 0, 53, 59, 0, 53, 60, 0, 53, 61, 0, 53, 62, 0, 54, 65474, 0, 54, 65475, 0, 54, 65476, 0, 54, 65477, 0, 54, 65478, 0, 54, 65479, 0, 54, 65480, 0, 54, 65481, 0, 54, 65482, 0, 54, 65483, 0, 54, 65484, 0, 54, 65485, 0, 54, 65486, 0, 54, 65487, 0, 54, 65488, 0, 54, 65489, 0, 54, 65490, 0, 54, 65491, 0, 54, 65492, 0, 54, 65493, 0, 54, 65494, 0, 54, 65495, 0, 54, 65496, 0, 54, 65497, 0, 54, 65498, 0, 54, 65499, 0, 54, 65500, 0, 54, 65501, 0, 54, 65502, 0, 54, 65503, 0, 54, 65504, 0, 54, 65505, 0, 54, 65506, 0, 54, 65507, 0, 54, 65508, 0, 54, 65509, 0, 54, 65510, 0, 54, 65511, 0, 54, 65512, 0, 54, 65513, 0, 54, 65514, 0, 54, 65515, 0, 54, 65516, 0, 54, 65517, 0, 54, 65518, 0, 54, 65519, 0, 54, 65520, 0, 54, 65521, 0, 54, 65522, 0, 54, 65523, 0, 54, 65524, 0, 54, 65525, 0, 54, 65526, 0, 54, 65527, 0, 54, 65528, 0, 54, 65529, 0, 54, 65530, 0, 54, 65531, 0, 54, 65532, 0, 54, 65533, 0, 54, 65534, 0, 54, 65535, 0, 54, 0, 0, 54, 1, 0, 54, 2, 0, 54, 3, 0, 54, 4, 0, 54, 5, 0, 54, 6, 0, 54, 7, 0, 54, 8, 0, 54, 9, 0, 54, 10, 0, 54, 11, 0, 54, 12, 0, 54, 13, 0, 54, 14, 0, 54, 15, 0, 54, 16, 0, 54, 17, 0, 54, 18, 0, 54, 19, 0, 54, 20, 0, 54, 21, 0, 54, 22, 0, 54, 23, 0, 54, 24, 0, 54, 25, 0, 54, 26, 0, 54, 27, 0, 54, 28, 0, 54, 29, 0, 54, 30, 0, 54, 31, 0, 54, 32, 0, 54, 33, 0, 54, 34, 0, 54, 35, 0, 54, 36, 0, 54, 37, 0, 54, 38, 0, 54, 39, 0, 54, 40, 0, 54, 41, 0, 54, 42, 0, 54, 43, 0, 54, 44, 0, 54, 45, 0, 54, 46, 0, 54, 47, 0, 54, 48, 0, 54, 49, 0, 54, 50, 0, 54, 51, 0, 54, 52, 0, 54, 53, 0, 54, 54, 0, 54, 55, 0, 54, 56, 0, 54, 57, 0, 54, 58, 0, 54, 59, 0, 54, 60, 0, 54, 61, 0, 54, 62, 0, 55, 65474, 0, 55, 65475, 0, 55, 65476, 0, 55, 65477, 0, 55, 65478, 0, 55, 65479, 0, 55, 65480, 0, 55, 65481, 0, 55, 65482, 0, 55, 65483, 0, 55, 65484, 0, 55, 65485, 0, 55, 65486, 0, 55, 65487, 0, 55, 65488, 0, 55, 65489, 0, 55, 65490, 0, 55, 65491, 0, 55, 65492, 0, 55, 65493, 0, 55, 65494, 0, 55, 65495, 0, 55, 65496, 0, 55, 65497, 0, 55, 65498, 0, 55, 65499, 0, 55, 65500, 0, 55, 65501, 0, 55, 65502, 0, 55, 65503, 0, 55, 65504, 0, 55, 65505, 0, 55, 65506, 0, 55, 65507, 0, 55, 65508, 0, 55, 65509, 0, 55, 65510, 0, 55, 65511, 0, 55, 65512, 0, 55, 65513, 0, 55, 65514, 0, 55, 65515, 0, 55, 65516, 0, 55, 65517, 0, 55, 65518, 0, 55, 65519, 0, 55, 65520, 0, 55, 65521, 0, 55, 65522, 0, 55, 65523, 0, 55, 65524, 0, 55, 65525, 0, 55, 65526, 0, 55, 65527, 0, 55, 65528, 0, 55, 65529, 0, 55, 65530, 0, 55, 65531, 0, 55, 65532, 0, 55, 65533, 0, 55, 65534, 0, 55, 65535, 0, 55, 0, 0, 55, 1, 0, 55, 2, 0, 55, 3, 0, 55, 4, 0, 55, 5, 0, 55, 6, 0, 55, 7, 0, 55, 8, 0, 55, 9, 0, 55, 10, 0, 55, 11, 0, 55, 12, 0, 55, 13, 0, 55, 14, 0, 55, 15, 0, 55, 16, 0, 55, 17, 0, 55, 18, 0, 55, 19, 0, 55, 20, 0, 55, 21, 0, 55, 22, 0, 55, 23, 0, 55, 24, 0, 55, 25, 0, 55, 26, 0, 55, 27, 0, 55, 28, 0, 55, 29, 0, 55, 30, 0, 55, 31, 0, 55, 32, 0, 55, 33, 0, 55, 34, 0, 55, 35, 0, 55, 36, 0, 55, 37, 0, 55, 38, 0, 55, 39, 0, 55, 40, 0, 55, 41, 0, 55, 42, 0, 55, 43, 0, 55, 44, 0, 55, 45, 0, 55, 46, 0, 55, 47, 0, 55, 48, 0, 55, 49, 0, 55, 50, 0, 55, 51, 0, 55, 52, 0, 55, 53, 0, 55, 54, 0, 55, 55, 0, 55, 56, 0, 55, 57, 0, 55, 58, 0, 55, 59, 0, 55, 60, 0, 55, 61, 0, 55, 62, 0, 56, 65474, 0, 56, 65475, 0, 56, 65476, 0, 56, 65477, 0, 56, 65478, 0, 56, 65479, 0, 56, 65480, 0, 56, 65481, 0, 56, 65482, 0, 56, 65483, 0, 56, 65484, 0, 56, 65485, 0, 56, 65486, 0, 56, 65487, 0, 56, 65488, 0, 56, 65489, 0, 56, 65490, 0, 56, 65491, 0, 56, 65492, 0, 56, 65493, 0, 56, 65494, 0, 56, 65495, 0, 56, 65496, 0, 56, 65497, 0, 56, 65498, 0, 56, 65499, 0, 56, 65500, 0, 56, 65501, 0, 56, 65502, 0, 56, 65503, 0, 56, 65504, 0, 56, 65505, 0, 56, 65506, 0, 56, 65507, 0, 56, 65508, 0, 56, 65509, 0, 56, 65510, 0, 56, 65511, 0, 56, 65512, 0, 56, 65513, 0, 56, 65514, 0, 56, 65515, 0, 56, 65516, 0, 56, 65517, 0, 56, 65518, 0, 56, 65519, 0, 56, 65520, 0, 56, 65521, 0, 56, 65522, 0, 56, 65523, 0, 56, 65524, 0, 56, 65525, 0, 56, 65526, 0, 56, 65527, 0, 56, 65528, 0, 56, 65529, 0, 56, 65530, 0, 56, 65531, 0, 56, 65532, 0, 56, 65533, 0, 56, 65534, 0, 56, 65535, 0, 56, 0, 0, 56, 1, 0, 56, 2, 0, 56, 3, 0, 56, 4, 0, 56, 5, 0, 56, 6, 0, 56, 7, 0, 56, 8, 0, 56, 9, 0, 56, 10, 0, 56, 11, 0, 56, 12, 0, 56, 13, 0, 56, 14, 0, 56, 15, 0, 56, 16, 0, 56, 17, 0, 56, 18, 0, 56, 19, 0, 56, 20, 0, 56, 21, 0, 56, 22, 0, 56, 23, 0, 56, 24, 0, 56, 25, 0, 56, 26, 0, 56, 27, 0, 56, 28, 0, 56, 29, 0, 56, 30, 0, 56, 31, 0, 56, 32, 0, 56, 33, 0, 56, 34, 0, 56, 35, 0, 56, 36, 0, 56, 37, 0, 56, 38, 0, 56, 39, 0, 56, 40, 0, 56, 41, 0, 56, 42, 0, 56, 43, 0, 56, 44, 0, 56, 45, 0, 56, 46, 0, 56, 47, 0, 56, 48, 0, 56, 49, 0, 56, 50, 0, 56, 51, 0, 56, 52, 0, 56, 53, 0, 56, 54, 0, 56, 55, 0, 56, 56, 0, 56, 57, 0, 56, 58, 0, 56, 59, 0, 56, 60, 0, 56, 61, 0, 56, 62, 0, 57, 65474, 0, 57, 65475, 0, 57, 65476, 0, 57, 65477, 0, 57, 65478, 0, 57, 65479, 0, 57, 65480, 0, 57, 65481, 0, 57, 65482, 0, 57, 65483, 0, 57, 65484, 0, 57, 65485, 0, 57, 65486, 0, 57, 65487, 0, 57, 65488, 0, 57, 65489, 0, 57, 65490, 0, 57, 65491, 0, 57, 65492, 0, 57, 65493, 0, 57, 65494, 0, 57, 65495, 0, 57, 65496, 0, 57, 65497, 0, 57, 65498, 0, 57, 65499, 0, 57, 65500, 0, 57, 65501, 0, 57, 65502, 0, 57, 65503, 0, 57, 65504, 0, 57, 65505, 0, 57, 65506, 0, 57, 65507, 0, 57, 65508, 0, 57, 65509, 0, 57, 65510, 0, 57, 65511, 0, 57, 65512, 0, 57, 65513, 0, 57, 65514, 0, 57, 65515, 0, 57, 65516, 0, 57, 65517, 0, 57, 65518, 0, 57, 65519, 0, 57, 65520, 0, 57, 65521, 0, 57, 65522, 0, 57, 65523, 0, 57, 65524, 0, 57, 65525, 0, 57, 65526, 0, 57, 65527, 0, 57, 65528, 0, 57, 65529, 0, 57, 65530, 0, 57, 65531, 0, 57, 65532, 0, 57, 65533, 0, 57, 65534, 0, 57, 65535, 0, 57, 0, 0, 57, 1, 0, 57, 2, 0, 57, 3, 0, 57, 4, 0, 57, 5, 0, 57, 6, 0, 57, 7, 0, 57, 8, 0, 57, 9, 0, 57, 10, 0, 57, 11, 0, 57, 12, 0, 57, 13, 0, 57, 14, 0, 57, 15, 0, 57, 16, 0, 57, 17, 0, 57, 18, 0, 57, 19, 0, 57, 20, 0, 57, 21, 0, 57, 22, 0, 57, 23, 0, 57, 24, 0, 57, 25, 0, 57, 26, 0, 57, 27, 0, 57, 28, 0, 57, 29, 0, 57, 30, 0, 57, 31, 0, 57, 32, 0, 57, 33, 0, 57, 34, 0, 57, 35, 0, 57, 36, 0, 57, 37, 0, 57, 38, 0, 57, 39, 0, 57, 40, 0, 57, 41, 0, 57, 42, 0, 57, 43, 0, 57, 44, 0, 57, 45, 0, 57, 46, 0, 57, 47, 0, 57, 48, 0, 57, 49, 0, 57, 50, 0, 57, 51, 0, 57, 52, 0, 57, 53, 0, 57, 54, 0, 57, 55, 0, 57, 56, 0, 57, 57, 0, 57, 58, 0, 57, 59, 0, 57, 60, 0, 57, 61, 0, 57, 62, 0, 58, 65474, 0, 58, 65475, 0, 58, 65476, 0, 58, 65477, 0, 58, 65478, 0, 58, 65479, 0, 58, 65480, 0, 58, 65481, 0, 58, 65482, 0, 58, 65483, 0, 58, 65484, 0, 58, 65485, 0, 58, 65486, 0, 58, 65487, 0, 58, 65488, 0, 58, 65489, 0, 58, 65490, 0, 58, 65491, 0, 58, 65492, 0, 58, 65493, 0, 58, 65494, 0, 58, 65495, 0, 58, 65496, 0, 58, 65497, 0, 58, 65498, 0, 58, 65499, 0, 58, 65500, 0, 58, 65501, 0, 58, 65502, 0, 58, 65503, 0, 58, 65504, 0, 58, 65505, 0, 58, 65506, 0, 58, 65507, 0, 58, 65508, 0, 58, 65509, 0, 58, 65510, 0, 58, 65511, 0, 58, 65512, 0, 58, 65513, 0, 58, 65514, 0, 58, 65515, 0, 58, 65516, 0, 58, 65517, 0, 58, 65518, 0, 58, 65519, 0, 58, 65520, 0, 58, 65521, 0, 58, 65522, 0, 58, 65523, 0, 58, 65524, 0, 58, 65525, 0, 58, 65526, 0, 58, 65527, 0, 58, 65528, 0, 58, 65529, 0, 58, 65530, 0, 58, 65531, 0, 58, 65532, 0, 58, 65533, 0, 58, 65534, 0, 58, 65535, 0, 58, 0, 0, 58, 1, 0, 58, 2, 0, 58, 3, 0, 58, 4, 0, 58, 5, 0, 58, 6, 0, 58, 7, 0, 58, 8, 0, 58, 9, 0, 58, 10, 0, 58, 11, 0, 58, 12, 0, 58, 13, 0, 58, 14, 0, 58, 15, 0, 58, 16, 0, 58, 17, 0, 58, 18, 0, 58, 19, 0, 58, 20, 0, 58, 21, 0, 58, 22, 0, 58, 23, 0, 58, 24, 0, 58, 25, 0, 58, 26, 0, 58, 27, 0, 58, 28, 0, 58, 29, 0, 58, 30, 0, 58, 31, 0, 58, 32, 0, 58, 33, 0, 58, 34, 0, 58, 35, 0, 58, 36, 0, 58, 37, 0, 58, 38, 0, 58, 39, 0, 58, 40, 0, 58, 41, 0, 58, 42, 0, 58, 43, 0, 58, 44, 0, 58, 45, 0, 58, 46, 0, 58, 47, 0, 58, 48, 0, 58, 49, 0, 58, 50, 0, 58, 51, 0, 58, 52, 0, 58, 53, 0, 58, 54, 0, 58, 55, 0, 58, 56, 0, 58, 57, 0, 58, 58, 0, 58, 59, 0, 58, 60, 0, 58, 61, 0, 58, 62, 0, 59, 65474, 0, 59, 65475, 0, 59, 65476, 0, 59, 65477, 0, 59, 65478, 0, 59, 65479, 0, 59, 65480, 0, 59, 65481, 0, 59, 65482, 0, 59, 65483, 0, 59, 65484, 0, 59, 65485, 0, 59, 65486, 0, 59, 65487, 0, 59, 65488, 0, 59, 65489, 0, 59, 65490, 0, 59, 65491, 0, 59, 65492, 0, 59, 65493, 0, 59, 65494, 0, 59, 65495, 0, 59, 65496, 0, 59, 65497, 0, 59, 65498, 0, 59, 65499, 0, 59, 65500, 0, 59, 65501, 0, 59, 65502, 0, 59, 65503, 0, 59, 65504, 0, 59, 65505, 0, 59, 65506, 0, 59, 65507, 0, 59, 65508, 0, 59, 65509, 0, 59, 65510, 0, 59, 65511, 0, 59, 65512, 0, 59, 65513, 0, 59, 65514, 0, 59, 65515, 0, 59, 65516, 0, 59, 65517, 0, 59, 65518, 0, 59, 65519, 0, 59, 65520, 0, 59, 65521, 0, 59, 65522, 0, 59, 65523, 0, 59, 65524, 0, 59, 65525, 0, 59, 65526, 0, 59, 65527, 0, 59, 65528, 0, 59, 65529, 0, 59, 65530, 0, 59, 65531, 0, 59, 65532, 0, 59, 65533, 0, 59, 65534, 0, 59, 65535, 0, 59, 0, 0, 59, 1, 0, 59, 2, 0, 59, 3, 0, 59, 4, 0, 59, 5, 0, 59, 6, 0, 59, 7, 0, 59, 8, 0, 59, 9, 0, 59, 10, 0, 59, 11, 0, 59, 12, 0, 59, 13, 0, 59, 14, 0, 59, 15, 0, 59, 16, 0, 59, 17, 0, 59, 18, 0, 59, 19, 0, 59, 20, 0, 59, 21, 0, 59, 22, 0, 59, 23, 0, 59, 24, 0, 59, 25, 0, 59, 26, 0, 59, 27, 0, 59, 28, 0, 59, 29, 0, 59, 30, 0, 59, 31, 0, 59, 32, 0, 59, 33, 0, 59, 34, 0, 59, 35, 0, 59, 36, 0, 59, 37, 0, 59, 38, 0, 59, 39, 0, 59, 40, 0, 59, 41, 0, 59, 42, 0, 59, 43, 0, 59, 44, 0, 59, 45, 0, 59, 46, 0, 59, 47, 0, 59, 48, 0, 59, 49, 0, 59, 50, 0, 59, 51, 0, 59, 52, 0, 59, 53, 0, 59, 54, 0, 59, 55, 0, 59, 56, 0, 59, 57, 0, 59, 58, 0, 59, 59, 0, 59, 60, 0, 59, 61, 0, 59, 62, 0, 65535, 65529, 1, 65535, 65528, 1, 65534, 65528, 1, 65533, 65528, 1, 65532, 65528, 1, 65531, 65528, 1, 65530, 65528, 1, 65529, 65528, 1, 65528, 65528, 1, 65527, 65528, 1, 65526, 65528, 1, 65525, 65528, 1, 65524, 65528, 1, 65523, 65528, 1, 65522, 65528, 1, 65522, 65529, 1, 65523, 65529, 1, 65524, 65529, 1, 65525, 65529, 1, 65526, 65529, 1, 65527, 65529, 1, 65528, 65529, 1, 65529, 65529, 1, 65532, 65529, 1, 65533, 65529, 1, 65534, 65529, 1, 65531, 65529, 1, 65530, 65529, 1, 0, 65529, 1, 1, 65529, 1, 2, 65529, 1, 3, 65529, 1, 4, 65529, 1, 5, 65529, 1, 6, 65529, 1, 7, 65529, 1, 8, 65529, 1, 9, 65529, 1, 10, 65529, 1, 11, 65529, 1, 12, 65529, 1, 13, 65529, 1, 14, 65529, 1, 14, 65528, 1, 13, 65528, 1, 12, 65528, 1, 11, 65528, 1, 10, 65528, 1, 9, 65528, 1, 8, 65528, 1, 7, 65528, 1, 6, 65528, 1, 5, 65528, 1, 4, 65528, 1, 3, 65528, 1, 2, 65528, 1, 1, 65528, 1, 0, 65528, 1, 6, 7, 1, 6, 8, 1, 7, 8, 1, 8, 8, 1, 9, 8, 1, 10, 8, 1, 11, 8, 1, 12, 8, 1, 13, 8, 1, 14, 8, 1, 14, 7, 1, 13, 7, 1, 12, 7, 1, 11, 7, 1, 10, 7, 1, 9, 7, 1, 8, 7, 1, 7, 7, 1, 5, 7, 1, 4, 7, 1, 3, 7, 1, 2, 7, 1, 1, 7, 1, 0, 7, 1, 65535, 7, 1, 65534, 7, 1, 65533, 7, 1, 65532, 7, 1, 5, 8, 1, 4, 8, 1, 3, 8, 1, 2, 8, 1, 1, 8, 1, 0, 8, 1, 65535, 8, 1, 65534, 8, 1, 65533, 8, 1, 65532, 8, 1, 65531, 8, 1, 65530, 8, 1, 65529, 8, 1, 65528, 8, 1, 65527, 8, 1, 65526, 8, 1, 65525, 8, 1, 65524, 8, 1, 65524, 7, 1, 65523, 7, 1, 65522, 7, 1, 65522, 8, 1, 65523, 8, 1, 65525, 7, 1, 65526, 7, 1, 65527, 7, 1, 65528, 7, 1, 65529, 7, 1, 65530, 7, 1, 65531, 7, 1) } script = ExtResource("1_ws6nn") -enemy_pool = Array[Resource("res://Scripts/Resources/enemy.gd")]([ExtResource("3_l3ehn"), ExtResource("4_0gtw5"), ExtResource("5_hppyg"), ExtResource("6_oty0h"), ExtResource("7_07st7"), ExtResource("8_sf1ao")]) +enemy_pool = Array[ExtResource("3_6od8s")]([SubResource("Resource_ttr7n"), ExtResource("4_0gtw5"), ExtResource("5_hppyg"), ExtResource("6_oty0h"), ExtResource("7_07st7"), ExtResource("8_sf1ao")]) player_spawns = [NodePath("PlayerSpawnLocations/PlayerSpawn1"), NodePath("PlayerSpawnLocations/PlayerSpawn2"), NodePath("PlayerSpawnLocations/PlayerSpawn3"), NodePath("PlayerSpawnLocations/PlayerSpawn4")] -enemy_spawns = [NodePath("GroundSpawn"), NodePath("AirSpawn")] +enemy_spawns = [NodePath("AirSpawn"), NodePath("GroundSpawn"), NodePath("GroundSpawn2"), NodePath("GroundSpawn3"), NodePath("GroundSpawn4"), NodePath("GroundSpawn5")] enemy_goals = [NodePath("EnemyGoal")] corpses = NodePath("Corpses") a_star_graph_3d = NodePath("AStarGraph3D") @@ -214,22 +247,49 @@ shape = SubResource("BoxShape3D_awjk1") [node name="AudioStreamPlayer3D" type="AudioStreamPlayer3D" parent="EnemyGoal"] stream = ExtResource("11_l537x") -[node name="VisualizedPath" type="Path3D" parent="."] -curve = SubResource("Curve3D_suxqu") -script = ExtResource("11_d7ofl") +[node name="GroundSpawn" parent="." node_paths=PackedStringArray("dest", "enemy_path") instance=ExtResource("3_5imwp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30, 0.5, 0) +leap_enemy_scene = ExtResource("20_ttr7n") +type = 1 +dest = NodePath("../EnemyGoal") +enemy_path = NodePath("../Enemies") -[node name="GroundSpawn" parent="." node_paths=PackedStringArray("path", "dest", "enemy_path") instance=ExtResource("3_5imwp")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.9396, 0.5, 0) -visible = false -path = NodePath("../VisualizedPath") +[node name="GroundSpawn2" parent="." node_paths=PackedStringArray("dest", "enemy_path") instance=ExtResource("3_5imwp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -27.5, 0.5, -5) +leap_enemy_scene = ExtResource("20_ttr7n") +own_id = 1 +type = 1 +dest = NodePath("../EnemyGoal") +enemy_path = NodePath("../Enemies") + +[node name="GroundSpawn3" parent="." node_paths=PackedStringArray("dest", "enemy_path") instance=ExtResource("3_5imwp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -27.5, 0.5, 5) +leap_enemy_scene = ExtResource("20_ttr7n") +own_id = 2 +type = 1 +dest = NodePath("../EnemyGoal") +enemy_path = NodePath("../Enemies") + +[node name="GroundSpawn4" parent="." node_paths=PackedStringArray("dest", "enemy_path") instance=ExtResource("3_5imwp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25, 0.5, 10) +leap_enemy_scene = ExtResource("20_ttr7n") +own_id = 3 +type = 1 +dest = NodePath("../EnemyGoal") +enemy_path = NodePath("../Enemies") + +[node name="GroundSpawn5" parent="." node_paths=PackedStringArray("dest", "enemy_path") instance=ExtResource("3_5imwp")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25, 0.5, -10) +leap_enemy_scene = ExtResource("20_ttr7n") +own_id = 4 type = 1 dest = NodePath("../EnemyGoal") enemy_path = NodePath("../Enemies") [node name="AirSpawn" parent="." node_paths=PackedStringArray("dest", "enemy_path") instance=ExtResource("3_5imwp")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -47.0801, 22.5492, 0) -visible = false -own_id = 1 +leap_enemy_scene = ExtResource("20_ttr7n") +own_id = 5 type = 2 dest = NodePath("../EnemyGoal") enemy_path = NodePath("../Enemies") @@ -237,657 +297,6 @@ enemy_path = NodePath("../Enemies") [node name="CardPrinter" parent="." instance=ExtResource("9_r25gu")] transform = Transform3D(-0.779163, 0, -0.626821, 0, 1, 0, 0.626821, 0, -0.779163, 20.0805, 0.499996, 6.0729) -[node name="Trees" type="Node3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.55, 0) - -[node name="Tree2" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.3403, 0, 3.00628) - -[node name="Tree3" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.0176, 0, 10.5107) - -[node name="Tree4" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.6608, 0, 8.54912) - -[node name="Tree5" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.8033, 0, 5.85091) - -[node name="Tree6" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.7746, 0, 1.14891) - -[node name="Tree18" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.3895, -4.76837e-07, -3.85961) - -[node name="Tree19" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.6508, 0, 8.11816) - -[node name="Tree20" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.2925, 4.76837e-07, 9.41892) - -[node name="Tree44" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -37.896, 0, 20.2391) - -[node name="Tree45" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -28.3333, 0, 33.25) - -[node name="Tree46" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -43.0955, 0, 50.204) - -[node name="Tree47" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -72.2579, 0, 31.1871) - -[node name="Tree48" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -42.9442, 0, 7.12354) - -[node name="Tree49" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -62.7098, -3.8147e-06, -11.0038) - -[node name="Tree50" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -43.955, -3.8147e-06, -8.39754) - -[node name="Tree51" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -73.2665, -7.62939e-06, 9.33591) - -[node name="Tree52" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -41.5577, -7.62939e-06, -30.1732) - -[node name="Tree53" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -24.3901, -7.62939e-06, -35.6228) - -[node name="Tree66" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -45.1995, -3.8147e-06, -56.6147) - -[node name="Tree67" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -66.1382, -3.8147e-06, -36.5257) - -[node name="Tree21" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.9768, 0, 5.03441) - -[node name="Tree23" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.8067, 0, -5.67147) - -[node name="Tree35" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.3298, 0, -10.1502) - -[node name="Tree36" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -35.6059, 0, -18.3245) - -[node name="Tree37" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37.678, 0, -11.2225) - -[node name="Tree38" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38.5167, 0, -6.731) - -[node name="Tree7" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -27.2258, 0, -2.92603) - -[node name="Tree8" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -35.1576, 0, -2.93234) - -[node name="Tree9" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -35.4654, 0, -1.21667) - -[node name="Tree10" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -35.1971, 0, 1.76769) - -[node name="Tree11" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -34.0165, 0, 4.2918) - -[node name="Tree12" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -36.1443, 0, 6.60157) - -[node name="Tree13" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -35.4516, 0, 9.1856) - -[node name="Tree14" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37.002, 0, 11.8086) - -[node name="Tree15" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.0605, 0, -9.98104) - -[node name="Tree16" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.1546, 0, -16.4042) - -[node name="Tree17" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.3462, 0, -21.2664) - -[node name="Tree24" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.7496, 0, -23.5671) - -[node name="Tree25" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.9642, 0, -21.0381) - -[node name="Tree26" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.9642, 0, -17.0381) - -[node name="Tree27" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27.5112, 0, -11.2182) - -[node name="Tree28" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29.8624, 0, -6.18511) - -[node name="Tree29" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31.2855, 0, -0.657061) - -[node name="Tree30" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.825, 0, 4.91539) - -[node name="Tree31" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28.0303, 0, 11.771) - -[node name="Tree32" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.0303, 0, 17.771) - -[node name="Tree33" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.0073, 0, 21.2305) - -[node name="Tree34" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.2908, 0, 26.4282) - -[node name="Tree39" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.3671, 0, 30.2392) - -[node name="Tree40" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.4585, 0, 28.571) - -[node name="Tree41" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.4585, 0, 25.571) - -[node name="Tree42" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -28.8191, 0, 20.3102) - -[node name="Tree43" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.3912, 0, 15.0072) - -[node name="Tree54" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.8463, 0, 11.6802) - -[node name="Tree56" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.7092, 0, 14.7241) - -[node name="Tree62" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19.8335, 0, 18.0612) - -[node name="Tree63" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23.8938, 0, -7.98461) - -[node name="Tree64" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.7106, 0, -11.6952) - -[node name="Tree65" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.6874, 0, -17.3584) - -[node name="Tree55" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.8631, 0, 15.6216) - -[node name="Tree57" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.9242, 0, 21.5176) - -[node name="Tree58" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.1782, 0, 12.0249) - -[node name="Tree59" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.1783, 0, 8.53849) - -[node name="Tree60" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.3879, 0, 1.70052) - -[node name="Tree61" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.0971, 0, -2.90985) - -[node name="Tree71" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.3715, 0, 21.0323) - -[node name="Tree72" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.121, 0, 22.4372) - -[node name="Tree73" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.7273, 0, 15.004) - -[node name="Tree74" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.3204, 0, 17.9194) - -[node name="Tree75" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.7465, 0, 11.8229) - -[node name="Tree76" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.1312, 0, 13.1821) - -[node name="Tree77" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.577, 0, 17.4094) - -[node name="Tree78" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.0632, 0, 18.5666) - -[node name="Tree79" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.2817, 0, 12.5708) - -[node name="Tree80" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -27.5906, 0, 17.0615) - -[node name="Tree81" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -31.0431, 0, 13.0007) - -[node name="Tree82" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.0381, 0, -5.96004) - -[node name="Tree83" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -31.3643, 0, -1.82155) - -[node name="Tree84" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -31.4774, 0, 2.90493) - -[node name="Tree85" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.2843, 0, 6.28406) - -[node name="Tree86" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -31.5584, 0, 10.5879) - -[node name="Tree87" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -33.459, 0, 20.2242) - -[node name="Tree97" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.243, 0, -13.5111) - -[node name="Tree98" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.1907, 0, -16.3335) - -[node name="Tree99" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.8111, 0, -13.5834) - -[node name="Tree100" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.9089, 4.76837e-07, -8.82091) - -[node name="Tree101" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.9397, 0, -8.70021) - -[node name="Tree102" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -27.6153, 0, -13.0484) - -[node name="Tree109" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.2171, 0, -19.789) - -[node name="Tree111" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.0888, 0, -16.1715) - -[node name="Tree112" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19.4365, 0, -19.5705) - -[node name="Tree113" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.0866, 0, -13.4566) - -[node name="Tree114" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.2342, 0, -11.617) - -[node name="Tree115" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.0725, 0, -9.5091) - -[node name="Tree116" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.43, 0, -5.85608) - -[node name="Tree119" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.4071, 0, 6.07061) - -[node name="Tree122" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.7564, 0, 10.602) - -[node name="Tree129" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.0541, 0, 9.42008) - -[node name="Tree133" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.4983, 0, -11.4034) - -[node name="Tree134" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.2138, 0, -6.79625) - -[node name="Tree135" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -32.7927, 0, -7.05431) - -[node name="Tree136" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.9384, 0, -9.08715) - -[node name="Tree137" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -32.6106, 0, -13.041) - -[node name="Tree138" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.7699, 0, -14.4419) - -[node name="Tree139" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.6869, 0, -19.7922) - -[node name="Tree140" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.9105, 0, -21.0025) - -[node name="Tree141" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -27.9706, 0, -19.5254) - -[node name="Tree68" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -52.6958, 3.8147e-06, -8.3289) - -[node name="Tree69" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -52.078, 3.8147e-06, -1.16233) - -[node name="Tree70" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -52.7553, 3.8147e-06, 6.34209) - -[node name="Tree88" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -54.3985, 3.8147e-06, 4.38051) - -[node name="Tree89" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -53.541, 3.8147e-06, 1.6823) - -[node name="Tree90" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -54.5123, 3.8147e-06, -3.0197) - -[node name="Tree91" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -52.9063, 3.8147e-06, -5.67646) - -[node name="Tree92" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -49.3885, 3.8147e-06, 3.94955) - -[node name="Tree93" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -45.2342, 3.8147e-06, 4.14671) - -[node name="Tree94" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -48.7145, 3.8147e-06, 0.865802) - -[node name="Tree95" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -49.0792, 3.8147e-06, -5.03605) - -[node name="Tree96" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -47.3796, 3.8147e-06, -9.54968) - -[node name="Tree103" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -43.6528, 3.8147e-06, -12.8624) - -[node name="Tree104" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -54.9635, 3.8147e-06, -7.09464) - -[node name="Tree105" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -53.7982, 3.8147e-06, -14.1496) - -[node name="Tree106" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -49.8923, 3.8147e-06, -20.5728) - -[node name="Tree107" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -56.5568, 3.8147e-06, 16.1416) - -[node name="Tree108" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -57.1289, 3.8147e-06, 10.8386) - -[node name="Tree110" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -48.8587, 3.8147e-06, 18.2686) - -[node name="Tree117" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -43.465, 3.8147e-06, 10.8354) - -[node name="Tree118" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -43.0581, 3.8147e-06, 13.7508) - -[node name="Tree120" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -43.4842, 3.8147e-06, 7.65429) - -[node name="Tree121" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -47.8689, 3.8147e-06, 9.01349) - -[node name="Tree123" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -48.3147, 3.8147e-06, 13.2408) - -[node name="Tree124" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -52.8009, 3.8147e-06, 14.398) - -[node name="Tree125" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -51.0194, 3.8147e-06, 8.40219) - -[node name="Tree126" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -55.3283, 3.8147e-06, 12.8929) - -[node name="Tree127" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -56.7758, 3.8147e-06, -10.1286) - -[node name="Tree128" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -48.5488, 3.8147e-06, -17.752) - -[node name="Tree130" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -46.2518, 3.8147e-06, -12.3806) - -[node name="Tree131" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -50.6774, 3.8147e-06, -12.8688) - -[node name="Tree132" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -55.353, 3.8147e-06, -17.217) - -[node name="Tree143" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -46.236, 3.8147e-06, -15.572) - -[node name="Tree144" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -53.9515, 3.8147e-06, -10.9649) - -[node name="Tree145" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -52.5076, 3.8147e-06, -18.6105) - -[node name="Tree146" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -55.7083, 3.8147e-06, -23.694) - -[node name="Tree147" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -29.0079, 3.8147e-06, -35.3405) - -[node name="Tree148" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -34.5276, 3.8147e-06, -30.7281) - -[node name="Tree149" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -41.0662, 3.8147e-06, -26.9836) - -[node name="Tree150" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -40.4, 3.8147e-06, -29.4542) - -[node name="Tree151" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -37.6972, 3.8147e-06, -30.2973) - -[node name="Tree152" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -34.4, 3.8147e-06, -33.7874) - -[node name="Tree153" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -31.3024, 3.8147e-06, -33.9933) - -[node name="Tree154" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -37.1763, 3.8147e-06, -25.595) - -[node name="Tree155" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -34.9577, 3.8147e-06, -22.0772) - -[node name="Tree156" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -34.2627, 3.8147e-06, -26.8094) - -[node name="Tree157" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -29.6345, 3.8147e-06, -30.4897) - -[node name="Tree158" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -24.9614, 3.8147e-06, -31.6829) - -[node name="Tree159" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -20.1111, 3.8147e-06, -30.5264) - -[node name="Tree160" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -31.3187, 3.8147e-06, -36.4919) - -[node name="Tree161" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -24.8688, 3.8147e-06, -39.579) - -[node name="Tree162" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -17.3666, 3.8147e-06, -40.0579) - -[node name="Tree163" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -51.2758, 3.8147e-06, -24.4847) - -[node name="Tree164" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -47.2573, 3.8147e-06, -27.9919) - -[node name="Tree165" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -48.6085, 3.8147e-06, -16.9567) - -[node name="Tree166" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -39.426, 3.8147e-06, -16.7949) - -[node name="Tree167" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -41.5823, 3.8147e-06, -14.791) - -[node name="Tree168" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -36.8298, 3.8147e-06, -18.6332) - -[node name="Tree169" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -40.456, 3.8147e-06, -21.4481) - -[node name="Tree170" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -44.1761, 3.8147e-06, -19.3915) - -[node name="Tree171" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -47.6949, 3.8147e-06, -22.4053) - -[node name="Tree172" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -41.7601, 3.8147e-06, -24.3805) - -[node name="Tree173" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -47.9094, 3.8147e-06, -25.3391) - -[node name="Tree174" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -29.8704, 3.8147e-06, -39.7156) - -[node name="Tree175" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -18.9087, 3.8147e-06, -37.3406) - -[node name="Tree176" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -21.995, 3.8147e-06, -32.3805) - -[node name="Tree177" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -24.1306, 3.8147e-06, -36.2874) - -[node name="Tree178" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -23.2457, 3.8147e-06, -42.6107) - -[node name="Tree179" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -19.3703, 3.8147e-06, -34.196) - -[node name="Tree180" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -27.5669, 3.8147e-06, -37.8799) - -[node name="Tree181" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -20.4733, 3.8147e-06, -41.0771) - -[node name="Tree182" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -18.1407, 3.8147e-06, -46.6129) - -[node name="Tree183" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -40.6019, 3.8147e-06, 32.7089) - -[node name="Tree184" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -35.1593, 3.8147e-06, 37.4121) - -[node name="Tree185" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -30.4089, 3.8147e-06, 43.2609) - -[node name="Tree186" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -32.9546, 3.8147e-06, 43.002) - -[node name="Tree187" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -34.2228, 3.8147e-06, 40.4707) - -[node name="Tree188" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -38.1991, 3.8147e-06, 37.7798) - -[node name="Tree189" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -38.9021, 3.8147e-06, 34.756) - -[node name="Tree190" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -29.6661, 3.8147e-06, 39.1979) - -[node name="Tree191" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -26.5524, 3.8147e-06, 36.4408) - -[node name="Tree192" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -31.3347, 3.8147e-06, 36.5184) - -[node name="Tree193" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -35.7135, 3.8147e-06, 32.5447) - -[node name="Tree194" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -37.645, 3.8147e-06, 28.1254) - -[node name="Tree195" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -37.2863, 3.8147e-06, 23.1519) - -[node name="Tree196" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -41.3654, 3.8147e-06, 35.1753) - -[node name="Tree197" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -45.4527, 3.8147e-06, 29.308) - -[node name="Tree198" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -47.1357, 3.8147e-06, 21.9813) - -[node name="Tree199" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -26.2954, 3.8147e-06, 52.9336) - -[node name="Tree200" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -30.4051, 3.8147e-06, 49.5336) - -[node name="Tree201" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -19.2965, 3.8147e-06, 49.0866) - -[node name="Tree202" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -20.6183, 3.8147e-06, 39.9983) - -[node name="Tree203" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -18.2928, 3.8147e-06, 41.8031) - -[node name="Tree204" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -22.8515, 3.8147e-06, 37.7327) - -[node name="Tree205" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -25.0444, 3.8147e-06, 41.7656) - -[node name="Tree206" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -22.4145, 3.8147e-06, 45.1051) - -[node name="Tree207" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -24.8211, 3.8147e-06, 49.0641) - -[node name="Tree208" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -27.728, 3.8147e-06, 43.5257) - -[node name="Tree209" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -27.6819, 3.8147e-06, 49.7491) - -[node name="Tree210" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -44.7805, 3.8147e-06, 34.2661) - -[node name="Tree211" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -44.2052, 3.8147e-06, 23.0648) - -[node name="Tree212" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -38.8121, 3.8147e-06, 25.3104) - -[node name="Tree213" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -42.3233, 3.8147e-06, 28.0483) - -[node name="Tree214" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -48.7066, 3.8147e-06, 28.1952) - -[node name="Tree215" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -41.0274, 3.8147e-06, 23.013) - -[node name="Tree216" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -43.3405, 3.8147e-06, 31.6966) - -[node name="Tree217" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -47.6403, 3.8147e-06, 25.2118) - -[node name="Tree218" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -53.48, 3.8147e-06, 23.8029) - -[node name="Tree142" parent="Trees" instance=ExtResource("10_7v1co")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.5192, 0, -17.6837) - [node name="PlayerSpawnLocations" type="Node3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.428, 0, 0) @@ -903,12 +312,10 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 1, 1) [node name="PlayerSpawn4" type="Node3D" parent="PlayerSpawnLocations"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1) -[node name="AStarGraph3D" type="Node3D" parent="." node_paths=PackedStringArray("start", "end", "spawner", "visualized_path", "tower_path")] +[node name="AStarGraph3D" type="Node3D" parent="." node_paths=PackedStringArray("end", "spawners", "tower_path")] script = ExtResource("11_07ukk") -start = NodePath("../GroundSpawn") end = NodePath("../EnemyGoal") -spawner = NodePath("../GroundSpawn") -visualized_path = NodePath("../VisualizedPath") +spawners = [NodePath("../GroundSpawn"), NodePath("../GroundSpawn2"), NodePath("../GroundSpawn3"), NodePath("../GroundSpawn4"), NodePath("../GroundSpawn5"), NodePath("../AirSpawn")] tower_path = NodePath("../Towers") [node name="InvisibleWalls" type="Node3D" parent="."] @@ -994,13 +401,24 @@ transform = Transform3D(4.37114e-08, 1, -8.74228e-08, 1, -4.37114e-08, 0, -3.821 mesh = SubResource("QuadMesh_hjuie") [node name="MeshInstance3D6" type="MeshInstance3D" parent="."] -transform = Transform3D(4.37114e-08, 1, -8.74228e-08, 1, -4.37114e-08, 0, -3.82137e-15, -8.74228e-08, -1, 0, -0.5, 6.5) +transform = Transform3D(4.37114e-08, 1, -8.74228e-08, 1, -4.37114e-08, 0, -3.82137e-15, -8.74228e-08, -1, 0, -0.311338, 6.5) mesh = SubResource("QuadMesh_hjuie") +[node name="StaticBody3D" type="StaticBody3D" parent="MeshInstance3D6"] + +[node name="CollisionShape3D" type="CollisionShape3D" parent="MeshInstance3D6/StaticBody3D"] +shape = SubResource("BoxShape3D_gmgg4") + [node name="MeshInstance3D7" type="MeshInstance3D" parent="."] -transform = Transform3D(4.37114e-08, 1, -8.74228e-08, 1, -4.37114e-08, 0, -3.82137e-15, -8.74228e-08, -1, 0, -0.5, -6.5) +transform = Transform3D(4.37114e-08, 1, -8.74228e-08, 1, -4.37114e-08, 0, -3.82137e-15, -8.74228e-08, -1, 0, -0.311338, -6.5) mesh = SubResource("QuadMesh_hjuie") +[node name="StaticBody3D2" type="StaticBody3D" parent="MeshInstance3D7"] +transform = Transform3D(1, 3.34075e-22, 0, 3.34075e-22, 1, 0, 0, 0, 1, 0, 0, 0) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="MeshInstance3D7/StaticBody3D2"] +shape = SubResource("BoxShape3D_gmgg4") + [node name="StaticBody3D" type="StaticBody3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.5, -7.5) @@ -1073,30 +491,6 @@ skeleton = NodePath("../..") transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0) shape = SubResource("BoxShape3D_6x7pa") -[node name="Bush" parent="." instance=ExtResource("16_lhsvw")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.8009, 0.55, -0.714496) - -[node name="Bush2" parent="." instance=ExtResource("16_lhsvw")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.8697, 0.55, 7.03917) - -[node name="Bush3" parent="." instance=ExtResource("16_lhsvw")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.7036, 0.55, 15.4819) - -[node name="Bush4" parent="." instance=ExtResource("16_lhsvw")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.0564, 0.550002, -17.205) - -[node name="Bush5" parent="." instance=ExtResource("16_lhsvw")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -32.453, 0.550006, -14.9963) - -[node name="Bush6" parent="." instance=ExtResource("16_lhsvw")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -32.7016, 0.550006, -9.91291) - -[node name="Bush7" parent="." instance=ExtResource("16_lhsvw")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -33.5845, 0.550006, 5.24479) - -[node name="Bush8" parent="." instance=ExtResource("16_lhsvw")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.3475, 0.550006, 15.0865) - [node name="MeshInstance3D" type="MeshInstance3D" parent="."] transform = Transform3D(-5.24537e-06, 0, 1, 0, 20, 0, -120, 0, -4.37114e-08, -14.5, -9.5, 0) mesh = SubResource("QuadMesh_dyydf") @@ -1138,5 +532,684 @@ shape = SubResource("BoxShape3D_134um") [node name="Shredder" parent="." instance=ExtResource("27_gppb4")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.365, 0.5, 4.44575) +[node name="Vegetation" type="Node3D" parent="."] + +[node name="Bushes" type="Node3D" parent="Vegetation"] + +[node name="Bush" parent="Vegetation/Bushes" instance=ExtResource("16_lhsvw")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.8009, 0.55, -0.714496) + +[node name="Bush2" parent="Vegetation/Bushes" instance=ExtResource("16_lhsvw")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.8697, 0.55, 7.03917) + +[node name="Bush3" parent="Vegetation/Bushes" instance=ExtResource("16_lhsvw")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.7036, 0.55, 15.4819) + +[node name="Bush4" parent="Vegetation/Bushes" instance=ExtResource("16_lhsvw")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.0564, 0.550002, -17.205) + +[node name="Bush5" parent="Vegetation/Bushes" instance=ExtResource("16_lhsvw")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -32.453, 0.550006, -14.9963) + +[node name="Bush6" parent="Vegetation/Bushes" instance=ExtResource("16_lhsvw")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -32.7016, 0.550006, -9.91291) + +[node name="Bush7" parent="Vegetation/Bushes" instance=ExtResource("16_lhsvw")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -33.5845, 0.550006, 5.24479) + +[node name="Bush8" parent="Vegetation/Bushes" instance=ExtResource("16_lhsvw")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.3475, 0.550006, 15.0865) + +[node name="Trees" type="Node3D" parent="Vegetation"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.55, 0) + +[node name="Tree2" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.3403, 0, 3.00628) + +[node name="Tree3" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.0176, 0, 10.5107) + +[node name="Tree4" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.6608, 0, 8.54912) + +[node name="Tree5" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.8033, 0, 5.85091) + +[node name="Tree6" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.7746, 0, 1.14891) + +[node name="Tree18" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.3895, -4.76837e-07, -3.85961) + +[node name="Tree19" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.6508, 0, 8.11816) + +[node name="Tree20" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.2925, 4.76837e-07, 9.41892) + +[node name="Tree44" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -37.896, 0, 20.2391) + +[node name="Tree45" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -28.3333, 0, 33.25) + +[node name="Tree46" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -43.0955, 0, 50.204) + +[node name="Tree47" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -72.2579, 0, 31.1871) + +[node name="Tree48" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -42.9442, 0, 7.12354) + +[node name="Tree49" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -62.7098, -3.8147e-06, -11.0038) + +[node name="Tree50" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -43.955, -3.8147e-06, -8.39754) + +[node name="Tree51" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -73.2665, -7.62939e-06, 9.33591) + +[node name="Tree52" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -41.5577, -7.62939e-06, -30.1732) + +[node name="Tree53" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -24.3901, -7.62939e-06, -35.6228) + +[node name="Tree66" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -45.1995, -3.8147e-06, -56.6147) + +[node name="Tree67" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(6, 0, 0, 0, 6, 0, 0, 0, 6, -66.1382, -3.8147e-06, -36.5257) + +[node name="Tree21" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.9768, 0, 5.03441) + +[node name="Tree23" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.8067, 0, -5.67147) + +[node name="Tree35" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.3298, 0, -10.1502) + +[node name="Tree36" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -35.6059, 0, -18.3245) + +[node name="Tree37" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37.678, 0, -11.2225) + +[node name="Tree38" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -38.5167, 0, -6.731) + +[node name="Tree7" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -27.2258, 0, -2.92603) + +[node name="Tree8" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -35.1576, 0, -2.93234) + +[node name="Tree9" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -35.4654, 0, -1.21667) + +[node name="Tree10" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -35.1971, 0, 1.76769) + +[node name="Tree11" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -34.0165, 0, 4.2918) + +[node name="Tree12" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -36.1443, 0, 6.60157) + +[node name="Tree13" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -35.4516, 0, 9.1856) + +[node name="Tree14" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -37.002, 0, 11.8086) + +[node name="Tree15" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.0605, 0, -9.98104) + +[node name="Tree16" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.1546, 0, -16.4042) + +[node name="Tree17" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.3462, 0, -21.2664) + +[node name="Tree24" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.7496, 0, -23.5671) + +[node name="Tree25" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.9642, 0, -21.0381) + +[node name="Tree26" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.9642, 0, -17.0381) + +[node name="Tree27" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 27.5112, 0, -11.2182) + +[node name="Tree28" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29.8624, 0, -6.18511) + +[node name="Tree29" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 31.2855, 0, -0.657061) + +[node name="Tree30" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.825, 0, 4.91539) + +[node name="Tree31" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 28.0303, 0, 11.771) + +[node name="Tree32" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.0303, 0, 17.771) + +[node name="Tree33" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.0073, 0, 21.2305) + +[node name="Tree34" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 20.2908, 0, 26.4282) + +[node name="Tree39" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.3671, 0, 30.2392) + +[node name="Tree40" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.4585, 0, 28.571) + +[node name="Tree41" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.4585, 0, 25.571) + +[node name="Tree42" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -28.8191, 0, 20.3102) + +[node name="Tree43" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.3912, 0, 15.0072) + +[node name="Tree54" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.8463, 0, 11.6802) + +[node name="Tree56" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.7092, 0, 14.7241) + +[node name="Tree62" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19.8335, 0, 18.0612) + +[node name="Tree63" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 23.8938, 0, -7.98461) + +[node name="Tree64" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.7106, 0, -11.6952) + +[node name="Tree65" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.6874, 0, -17.3584) + +[node name="Tree55" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.8631, 0, 15.6216) + +[node name="Tree57" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.9242, 0, 21.5176) + +[node name="Tree58" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.1782, 0, 12.0249) + +[node name="Tree59" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.1783, 0, 8.53849) + +[node name="Tree60" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.3879, 0, 1.70052) + +[node name="Tree61" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.0971, 0, -2.90985) + +[node name="Tree71" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.3715, 0, 21.0323) + +[node name="Tree72" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.121, 0, 22.4372) + +[node name="Tree73" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.7273, 0, 15.004) + +[node name="Tree74" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.3204, 0, 17.9194) + +[node name="Tree75" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.7465, 0, 11.8229) + +[node name="Tree76" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.1312, 0, 13.1821) + +[node name="Tree77" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.577, 0, 17.4094) + +[node name="Tree78" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -25.0632, 0, 18.5666) + +[node name="Tree79" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.2817, 0, 12.5708) + +[node name="Tree80" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -27.5906, 0, 17.0615) + +[node name="Tree81" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -31.0431, 0, 13.0007) + +[node name="Tree82" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.0381, 0, -5.96004) + +[node name="Tree83" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -31.3643, 0, -1.82155) + +[node name="Tree84" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -31.4774, 0, 2.90493) + +[node name="Tree85" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.2843, 0, 6.28406) + +[node name="Tree86" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -31.5584, 0, 10.5879) + +[node name="Tree87" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -33.459, 0, 20.2242) + +[node name="Tree97" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -15.243, 0, -13.5111) + +[node name="Tree98" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.1907, 0, -16.3335) + +[node name="Tree99" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -20.8111, 0, -13.5834) + +[node name="Tree100" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.9089, 4.76837e-07, -8.82091) + +[node name="Tree101" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -22.9397, 0, -8.70021) + +[node name="Tree102" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -27.6153, 0, -13.0484) + +[node name="Tree109" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.2171, 0, -19.789) + +[node name="Tree111" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.0888, 0, -16.1715) + +[node name="Tree112" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 19.4365, 0, -19.5705) + +[node name="Tree113" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.0866, 0, -13.4566) + +[node name="Tree114" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.2342, 0, -11.617) + +[node name="Tree115" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.0725, 0, -9.5091) + +[node name="Tree116" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 26.43, 0, -5.85608) + +[node name="Tree119" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.4071, 0, 6.07061) + +[node name="Tree122" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.7564, 0, 10.602) + +[node name="Tree129" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.0541, 0, 9.42008) + +[node name="Tree133" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.4983, 0, -11.4034) + +[node name="Tree134" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.2138, 0, -6.79625) + +[node name="Tree135" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -32.7927, 0, -7.05431) + +[node name="Tree136" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.9384, 0, -9.08715) + +[node name="Tree137" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -32.6106, 0, -13.041) + +[node name="Tree138" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.7699, 0, -14.4419) + +[node name="Tree139" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -19.6869, 0, -19.7922) + +[node name="Tree140" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.9105, 0, -21.0025) + +[node name="Tree141" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -27.9706, 0, -19.5254) + +[node name="Tree68" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -52.6958, 3.8147e-06, -8.3289) + +[node name="Tree69" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -52.078, 3.8147e-06, -1.16233) + +[node name="Tree70" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -52.7553, 3.8147e-06, 6.34209) + +[node name="Tree88" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -54.3985, 3.8147e-06, 4.38051) + +[node name="Tree89" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -53.541, 3.8147e-06, 1.6823) + +[node name="Tree90" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -54.5123, 3.8147e-06, -3.0197) + +[node name="Tree91" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -52.9063, 3.8147e-06, -5.67646) + +[node name="Tree92" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -49.3885, 3.8147e-06, 3.94955) + +[node name="Tree93" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -45.2342, 3.8147e-06, 4.14671) + +[node name="Tree94" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -48.7145, 3.8147e-06, 0.865802) + +[node name="Tree95" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -49.0792, 3.8147e-06, -5.03605) + +[node name="Tree96" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -47.3796, 3.8147e-06, -9.54968) + +[node name="Tree103" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -43.6528, 3.8147e-06, -12.8624) + +[node name="Tree104" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -54.9635, 3.8147e-06, -7.09464) + +[node name="Tree105" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -53.7982, 3.8147e-06, -14.1496) + +[node name="Tree106" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -49.8923, 3.8147e-06, -20.5728) + +[node name="Tree107" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -56.5568, 3.8147e-06, 16.1416) + +[node name="Tree108" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -57.1289, 3.8147e-06, 10.8386) + +[node name="Tree110" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -48.8587, 3.8147e-06, 18.2686) + +[node name="Tree117" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -43.465, 3.8147e-06, 10.8354) + +[node name="Tree118" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -43.0581, 3.8147e-06, 13.7508) + +[node name="Tree120" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -43.4842, 3.8147e-06, 7.65429) + +[node name="Tree121" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -47.8689, 3.8147e-06, 9.01349) + +[node name="Tree123" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -48.3147, 3.8147e-06, 13.2408) + +[node name="Tree124" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -52.8009, 3.8147e-06, 14.398) + +[node name="Tree125" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -51.0194, 3.8147e-06, 8.40219) + +[node name="Tree126" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -55.3283, 3.8147e-06, 12.8929) + +[node name="Tree127" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -56.7758, 3.8147e-06, -10.1286) + +[node name="Tree128" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -48.5488, 3.8147e-06, -17.752) + +[node name="Tree130" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -46.2518, 3.8147e-06, -12.3806) + +[node name="Tree131" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -50.6774, 3.8147e-06, -12.8688) + +[node name="Tree132" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -55.353, 3.8147e-06, -17.217) + +[node name="Tree143" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -46.236, 3.8147e-06, -15.572) + +[node name="Tree144" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -53.9515, 3.8147e-06, -10.9649) + +[node name="Tree145" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -52.5076, 3.8147e-06, -18.6105) + +[node name="Tree146" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -55.7083, 3.8147e-06, -23.694) + +[node name="Tree147" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -29.0079, 3.8147e-06, -35.3405) + +[node name="Tree148" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -34.5276, 3.8147e-06, -30.7281) + +[node name="Tree149" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -41.0662, 3.8147e-06, -26.9836) + +[node name="Tree150" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -40.4, 3.8147e-06, -29.4542) + +[node name="Tree151" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -37.6972, 3.8147e-06, -30.2973) + +[node name="Tree152" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -34.4, 3.8147e-06, -33.7874) + +[node name="Tree153" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -31.3024, 3.8147e-06, -33.9933) + +[node name="Tree154" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -37.1763, 3.8147e-06, -25.595) + +[node name="Tree155" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -34.9577, 3.8147e-06, -22.0772) + +[node name="Tree156" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -34.2627, 3.8147e-06, -26.8094) + +[node name="Tree157" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -29.6345, 3.8147e-06, -30.4897) + +[node name="Tree158" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -24.9614, 3.8147e-06, -31.6829) + +[node name="Tree159" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -20.1111, 3.8147e-06, -30.5264) + +[node name="Tree160" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -31.3187, 3.8147e-06, -36.4919) + +[node name="Tree161" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -24.8688, 3.8147e-06, -39.579) + +[node name="Tree162" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -17.3666, 3.8147e-06, -40.0579) + +[node name="Tree163" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -51.2758, 3.8147e-06, -24.4847) + +[node name="Tree164" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -47.2573, 3.8147e-06, -27.9919) + +[node name="Tree165" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -48.6085, 3.8147e-06, -16.9567) + +[node name="Tree166" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -39.426, 3.8147e-06, -16.7949) + +[node name="Tree167" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -41.5823, 3.8147e-06, -14.791) + +[node name="Tree168" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -36.8298, 3.8147e-06, -18.6332) + +[node name="Tree169" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -40.456, 3.8147e-06, -21.4481) + +[node name="Tree170" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -44.1761, 3.8147e-06, -19.3915) + +[node name="Tree171" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -47.6949, 3.8147e-06, -22.4053) + +[node name="Tree172" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -41.7601, 3.8147e-06, -24.3805) + +[node name="Tree173" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -47.9094, 3.8147e-06, -25.3391) + +[node name="Tree174" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -29.8704, 3.8147e-06, -39.7156) + +[node name="Tree175" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -18.9087, 3.8147e-06, -37.3406) + +[node name="Tree176" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -21.995, 3.8147e-06, -32.3805) + +[node name="Tree177" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -24.1306, 3.8147e-06, -36.2874) + +[node name="Tree178" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -23.2457, 3.8147e-06, -42.6107) + +[node name="Tree179" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -19.3703, 3.8147e-06, -34.196) + +[node name="Tree180" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -27.5669, 3.8147e-06, -37.8799) + +[node name="Tree181" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -20.4733, 3.8147e-06, -41.0771) + +[node name="Tree182" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.572947, 0, -0.819592, 0, 1, 0, 0.819592, 0, 0.572947, -18.1407, 3.8147e-06, -46.6129) + +[node name="Tree183" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -40.6019, 3.8147e-06, 32.7089) + +[node name="Tree184" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -35.1593, 3.8147e-06, 37.4121) + +[node name="Tree185" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -30.4089, 3.8147e-06, 43.2609) + +[node name="Tree186" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -32.9546, 3.8147e-06, 43.002) + +[node name="Tree187" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -34.2228, 3.8147e-06, 40.4707) + +[node name="Tree188" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -38.1991, 3.8147e-06, 37.7798) + +[node name="Tree189" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -38.9021, 3.8147e-06, 34.756) + +[node name="Tree190" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -29.6661, 3.8147e-06, 39.1979) + +[node name="Tree191" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -26.5524, 3.8147e-06, 36.4408) + +[node name="Tree192" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -31.3347, 3.8147e-06, 36.5184) + +[node name="Tree193" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -35.7135, 3.8147e-06, 32.5447) + +[node name="Tree194" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -37.645, 3.8147e-06, 28.1254) + +[node name="Tree195" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -37.2863, 3.8147e-06, 23.1519) + +[node name="Tree196" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -41.3654, 3.8147e-06, 35.1753) + +[node name="Tree197" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -45.4527, 3.8147e-06, 29.308) + +[node name="Tree198" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -47.1357, 3.8147e-06, 21.9813) + +[node name="Tree199" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -26.2954, 3.8147e-06, 52.9336) + +[node name="Tree200" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -30.4051, 3.8147e-06, 49.5336) + +[node name="Tree201" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -19.2965, 3.8147e-06, 49.0866) + +[node name="Tree202" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -20.6183, 3.8147e-06, 39.9983) + +[node name="Tree203" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -18.2928, 3.8147e-06, 41.8031) + +[node name="Tree204" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -22.8515, 3.8147e-06, 37.7327) + +[node name="Tree205" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -25.0444, 3.8147e-06, 41.7656) + +[node name="Tree206" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -22.4145, 3.8147e-06, 45.1051) + +[node name="Tree207" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -24.8211, 3.8147e-06, 49.0641) + +[node name="Tree208" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -27.728, 3.8147e-06, 43.5257) + +[node name="Tree209" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -27.6819, 3.8147e-06, 49.7491) + +[node name="Tree210" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -44.7805, 3.8147e-06, 34.2661) + +[node name="Tree211" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -44.2052, 3.8147e-06, 23.0648) + +[node name="Tree212" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -38.8121, 3.8147e-06, 25.3104) + +[node name="Tree213" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -42.3233, 3.8147e-06, 28.0483) + +[node name="Tree214" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -48.7066, 3.8147e-06, 28.1952) + +[node name="Tree215" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -41.0274, 3.8147e-06, 23.013) + +[node name="Tree216" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -43.3405, 3.8147e-06, 31.6966) + +[node name="Tree217" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -47.6403, 3.8147e-06, 25.2118) + +[node name="Tree218" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(0.716412, 0, 0.697678, 0, 1, 0, -0.697678, 0, 0.716412, -53.48, 3.8147e-06, 23.8029) + +[node name="Tree142" parent="Vegetation/Trees" instance=ExtResource("10_7v1co")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -30.5192, 0, -17.6837) + [connection signal="body_entered" from="EnemyGoal/Area3D" to="EnemyGoal" method="_on_area_3d_body_entered"] [connection signal="body_entered" from="Area3D" to="Area3D" method="_on_body_entered"] diff --git a/Worlds/GreenPlanet/tilemap.tres b/Worlds/GreenPlanet/tilemap.tres index 94929a4..05ac7fd 100644 --- a/Worlds/GreenPlanet/tilemap.tres +++ b/Worlds/GreenPlanet/tilemap.tres @@ -12,7 +12,7 @@ texture_filter = 0 material = SubResource("StandardMaterial3D_ulcfh") orientation = 1 -[sub_resource type="Image" id="Image_7cc38"] +[sub_resource type="Image" id="Image_wdi0k"] data = { "data": PackedByteArray(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, 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, 95, 179, 91, 255, 95, 179, 91, 255, 95, 179, 91, 255, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 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, 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, 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, 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, 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, 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, 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, 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, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 61, 129, 57, 255, 61, 129, 57, 255, 61, 129, 57, 255, 74, 149, 70, 255, 74, 149, 70, 255, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 74, 149, 70, 255, 74, 149, 70, 255, 74, 149, 70, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 74, 149, 70, 255, 74, 149, 70, 255, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 74, 149, 70, 255, 74, 149, 70, 255, 74, 149, 70, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 60, 129, 57, 255, 74, 149, 70, 255, 74, 149, 70, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 60, 129, 57, 255, 60, 129, 57, 255, 74, 149, 70, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 60, 129, 57, 255, 60, 129, 57, 255, 60, 129, 57, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 60, 128, 57, 255, 60, 128, 57, 255, 60, 128, 57, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 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, 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, 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, 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, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 60, 129, 57, 255, 60, 129, 57, 255, 60, 129, 57, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 74, 149, 70, 255, 74, 149, 70, 255, 60, 128, 57, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 74, 148, 70, 255, 74, 148, 70, 255, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 128, 57, 255, 60, 128, 57, 255, 60, 128, 57, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 74, 149, 70, 255, 74, 149, 70, 255, 74, 149, 70, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 74, 148, 70, 255, 74, 148, 70, 255, 60, 128, 57, 255, 60, 128, 57, 255, 60, 128, 57, 255, 60, 128, 57, 255, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 149, 70, 255, 60, 128, 57, 255, 60, 128, 57, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 60, 128, 57, 255, 60, 128, 57, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 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, 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, 0, 0, 0, 0, 74, 148, 70, 255, 74, 148, 70, 255, 74, 148, 70, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 60, 128, 57, 255, 60, 128, 57, 255, 60, 128, 57, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 95, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 60, 128, 56, 255, 60, 128, 56, 255, 74, 148, 70, 255, 74, 148, 70, 255, 74, 148, 70, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 0, 0, 0, 0, 0, 0, 0, 0, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 74, 148, 70, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 74, 148, 70, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 74, 148, 70, 255, 74, 148, 70, 255, 74, 148, 70, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 74, 148, 70, 255, 74, 148, 70, 255, 74, 148, 70, 255, 74, 148, 70, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 74, 148, 70, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 179, 90, 255, 74, 148, 70, 255, 74, 148, 70, 255, 74, 148, 70, 255, 74, 148, 70, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 60, 128, 56, 255, 74, 148, 70, 255, 74, 148, 70, 255, 74, 148, 69, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 74, 148, 69, 255, 74, 148, 69, 255, 74, 148, 69, 255, 74, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 74, 148, 69, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 179, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 73, 148, 69, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 73, 148, 69, 255, 73, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 73, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 73, 148, 69, 255, 73, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 60, 128, 56, 255, 73, 148, 69, 255, 73, 148, 69, 255, 73, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 73, 148, 69, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 73, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 73, 148, 69, 255, 73, 148, 69, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 73, 148, 69, 255, 73, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 73, 148, 69, 255, 73, 148, 69, 255, 73, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 73, 148, 69, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 73, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 73, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 73, 148, 69, 255, 73, 148, 69, 255, 73, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 73, 148, 69, 255, 73, 148, 69, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 73, 148, 69, 255, 73, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 60, 128, 56, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 73, 148, 69, 255, 73, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 60, 128, 56, 255, 73, 148, 69, 255, 73, 148, 69, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 90, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 73, 148, 69, 255, 73, 148, 69, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 60, 128, 56, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 60, 128, 56, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 73, 147, 69, 255, 60, 128, 56, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 60, 128, 56, 255, 60, 128, 56, 255, 73, 147, 69, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 73, 147, 69, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 60, 128, 56, 255, 60, 128, 56, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 73, 147, 69, 255, 60, 127, 56, 255, 60, 127, 56, 255, 60, 127, 56, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 60, 127, 56, 255, 60, 127, 56, 255, 60, 127, 56, 255, 60, 127, 56, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 60, 127, 56, 255, 60, 127, 56, 255, 60, 127, 56, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 60, 127, 56, 255, 60, 127, 56, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 60, 127, 56, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 178, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 73, 147, 69, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 59, 127, 56, 255, 59, 127, 56, 255, 59, 127, 56, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 73, 147, 69, 255, 59, 127, 56, 255, 59, 127, 56, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 59, 127, 56, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 59, 127, 56, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 94, 177, 89, 255, 94, 177, 89, 255, 59, 127, 56, 255, 59, 127, 56, 255, 59, 127, 56, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 59, 127, 56, 255, 59, 127, 56, 255, 59, 127, 56, 255, 59, 127, 56, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 59, 127, 56, 255, 73, 147, 69, 255, 73, 147, 69, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 59, 127, 56, 255, 59, 127, 56, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 59, 127, 56, 255, 59, 127, 56, 255, 59, 127, 56, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 59, 127, 56, 255, 59, 127, 56, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 73, 147, 69, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 94, 177, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 73, 147, 69, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 94, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 59, 127, 56, 255, 73, 147, 69, 255, 73, 147, 69, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 59, 127, 56, 255, 59, 127, 56, 255, 59, 127, 56, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 59, 127, 56, 255, 59, 127, 56, 255, 59, 127, 56, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 59, 127, 56, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 59, 127, 56, 255, 73, 147, 69, 255, 73, 147, 69, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 0, 0, 0, 0, 0, 0, 0, 0, 93, 177, 89, 255, 93, 177, 89, 255, 59, 127, 56, 255, 59, 127, 56, 255, 59, 127, 56, 255, 73, 147, 69, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 59, 127, 56, 255, 59, 127, 56, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 59, 127, 56, 255, 59, 127, 56, 255, 59, 127, 56, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 59, 127, 56, 255, 59, 127, 56, 255, 59, 127, 56, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 147, 69, 255, 73, 147, 69, 255, 73, 147, 69, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 59, 127, 55, 255, 59, 127, 55, 255, 59, 127, 55, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 59, 127, 55, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 73, 147, 69, 255, 59, 127, 55, 255, 59, 127, 55, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 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, 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, 0, 0, 0, 0, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 59, 127, 55, 255, 59, 127, 55, 255, 59, 127, 55, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 73, 147, 68, 255, 73, 147, 68, 255, 73, 147, 68, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 73, 147, 68, 255, 73, 147, 68, 255, 73, 147, 68, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 73, 147, 68, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 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, 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, 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, 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, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 59, 127, 55, 255, 59, 127, 55, 255, 59, 127, 55, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 59, 127, 55, 255, 59, 127, 55, 255, 72, 147, 68, 255, 72, 147, 68, 255, 72, 147, 68, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 59, 127, 55, 255, 59, 127, 55, 255, 59, 127, 55, 255, 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, 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, 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, 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, 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, 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, 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, 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, 93, 177, 89, 255, 93, 177, 89, 255, 93, 177, 89, 255, 72, 146, 68, 255, 72, 146, 68, 255, 72, 146, 68, 255, 59, 127, 55, 255, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 146, 68, 255, 72, 146, 68, 255, 72, 146, 68, 255, 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, 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), "format": "RGBA8", @@ -22,7 +22,7 @@ data = { } [sub_resource type="ImageTexture" id="ImageTexture_a0dlb"] -image = SubResource("Image_7cc38") +image = SubResource("Image_wdi0k") [sub_resource type="BoxShape3D" id="BoxShape3D_mtfk2"] @@ -34,7 +34,7 @@ texture_filter = 0 material = SubResource("StandardMaterial3D_jnpkd") orientation = 1 -[sub_resource type="Image" id="Image_h3oxp"] +[sub_resource type="Image" id="Image_dag22"] data = { "data": PackedByteArray(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, 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, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 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, 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, 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, 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, 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, 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, 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, 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, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 102, 102, 102, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 148, 148, 148, 255, 148, 148, 148, 255, 148, 148, 148, 255, 148, 148, 148, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 148, 148, 148, 255, 148, 148, 148, 255, 148, 148, 148, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 102, 102, 102, 255, 147, 147, 147, 255, 147, 147, 147, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 102, 102, 102, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 77, 255, 132, 132, 132, 255, 132, 132, 132, 255, 132, 132, 132, 255, 102, 102, 102, 255, 102, 102, 102, 255, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 194, 194, 194, 255, 194, 194, 194, 255, 102, 102, 102, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 77, 255, 77, 77, 77, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 100, 100, 100, 255, 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, 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, 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, 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, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 194, 194, 194, 255, 194, 194, 194, 255, 194, 194, 194, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 100, 100, 100, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 131, 131, 131, 255, 131, 131, 131, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 102, 102, 102, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 77, 255, 77, 77, 77, 255, 102, 102, 102, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 100, 100, 100, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 77, 77, 255, 102, 102, 102, 255, 102, 102, 102, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 194, 194, 194, 255, 194, 194, 194, 255, 102, 102, 102, 255, 102, 102, 102, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 100, 100, 100, 255, 100, 100, 100, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 77, 77, 77, 255, 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, 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, 0, 0, 0, 0, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 100, 100, 100, 255, 100, 100, 100, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 194, 194, 194, 255, 194, 194, 194, 255, 194, 194, 194, 255, 194, 194, 194, 255, 100, 100, 100, 255, 100, 100, 100, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 77, 77, 77, 255, 77, 77, 77, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 147, 147, 147, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 131, 131, 131, 255, 147, 147, 147, 255, 147, 147, 147, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 131, 131, 131, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 0, 0, 0, 0, 0, 0, 0, 0, 102, 102, 102, 255, 194, 194, 194, 255, 194, 194, 194, 255, 194, 194, 194, 255, 194, 194, 194, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 100, 100, 100, 255, 100, 100, 100, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 131, 131, 131, 255, 131, 131, 131, 255, 77, 77, 77, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 131, 131, 131, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 77, 77, 77, 255, 102, 102, 102, 255, 102, 102, 102, 255, 100, 100, 100, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 100, 100, 100, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 77, 77, 77, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 77, 77, 77, 255, 102, 102, 102, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 77, 77, 77, 255, 77, 77, 77, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 100, 100, 100, 255, 100, 100, 100, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 100, 100, 100, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 77, 77, 77, 255, 100, 100, 100, 255, 100, 100, 100, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 100, 100, 100, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 77, 77, 77, 255, 77, 77, 77, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 193, 193, 193, 255, 193, 193, 193, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 102, 102, 102, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 100, 100, 100, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 193, 193, 193, 255, 193, 193, 193, 255, 193, 193, 193, 255, 193, 193, 193, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 131, 131, 131, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 77, 77, 77, 255, 77, 77, 77, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 77, 77, 77, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 77, 77, 77, 255, 77, 77, 77, 255, 100, 100, 100, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 101, 101, 101, 255, 147, 147, 147, 255, 147, 147, 147, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 101, 101, 101, 255, 101, 101, 101, 255, 100, 100, 100, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 100, 100, 100, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 77, 77, 77, 255, 77, 77, 77, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 101, 101, 101, 255, 101, 101, 101, 255, 147, 147, 147, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 193, 193, 193, 255, 193, 193, 193, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 100, 100, 100, 255, 100, 100, 100, 255, 101, 101, 101, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 193, 193, 193, 255, 193, 193, 193, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 147, 147, 147, 255, 147, 147, 147, 255, 147, 147, 147, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 147, 147, 147, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 131, 131, 131, 255, 193, 193, 193, 255, 193, 193, 193, 255, 193, 193, 193, 255, 77, 77, 77, 255, 77, 77, 77, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 100, 100, 100, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 131, 131, 131, 255, 131, 131, 131, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 100, 100, 100, 255, 99, 99, 99, 255, 99, 99, 99, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 99, 99, 99, 255, 99, 99, 99, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 77, 77, 77, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 193, 193, 193, 255, 193, 193, 193, 255, 193, 193, 193, 255, 193, 193, 193, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 193, 193, 193, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 99, 99, 99, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 99, 99, 99, 255, 99, 99, 99, 255, 101, 101, 101, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 146, 146, 146, 255, 77, 77, 77, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 99, 99, 99, 255, 99, 99, 99, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 131, 131, 131, 255, 131, 131, 131, 255, 131, 131, 131, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 101, 101, 101, 255, 146, 146, 146, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 101, 101, 101, 255, 99, 99, 99, 255, 99, 99, 99, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 193, 193, 193, 255, 131, 131, 131, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 77, 77, 77, 255, 77, 77, 77, 255, 77, 77, 77, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 146, 146, 146, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 193, 193, 193, 255, 193, 193, 193, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 192, 192, 192, 255, 192, 192, 192, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 99, 99, 99, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 192, 192, 192, 255, 192, 192, 192, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 76, 76, 76, 255, 76, 76, 76, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 193, 193, 193, 255, 193, 193, 193, 255, 192, 192, 192, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 192, 192, 192, 255, 192, 192, 192, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 76, 76, 76, 255, 76, 76, 76, 255, 101, 101, 101, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 146, 146, 146, 255, 146, 146, 146, 255, 99, 99, 99, 255, 99, 99, 99, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 99, 99, 99, 255, 99, 99, 99, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 192, 192, 192, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 76, 76, 76, 255, 76, 76, 76, 255, 99, 99, 99, 255, 99, 99, 99, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 99, 99, 99, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 146, 146, 146, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 146, 146, 146, 255, 146, 146, 146, 255, 130, 130, 130, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 130, 130, 130, 255, 146, 146, 146, 255, 146, 146, 146, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 76, 76, 76, 255, 76, 76, 76, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 146, 146, 146, 255, 99, 99, 99, 255, 99, 99, 99, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 99, 99, 99, 255, 99, 99, 99, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 99, 99, 99, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 99, 99, 99, 255, 99, 99, 99, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 99, 99, 99, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 192, 192, 192, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 146, 146, 146, 255, 146, 146, 146, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 76, 76, 76, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 76, 76, 76, 255, 76, 76, 76, 255, 99, 99, 99, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 0, 0, 0, 0, 0, 0, 0, 0, 146, 146, 146, 255, 146, 146, 146, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 192, 192, 192, 255, 192, 192, 192, 255, 130, 130, 130, 255, 130, 130, 130, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 76, 76, 76, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 76, 76, 76, 255, 76, 76, 76, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 101, 101, 101, 255, 101, 101, 101, 255, 101, 101, 101, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 146, 146, 146, 255, 76, 76, 76, 255, 76, 76, 76, 255, 100, 100, 100, 255, 100, 100, 100, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 100, 100, 100, 255, 100, 100, 100, 255, 192, 192, 192, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 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, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 99, 99, 99, 255, 99, 99, 99, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 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, 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, 0, 0, 0, 0, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 99, 99, 99, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 76, 76, 76, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 76, 76, 76, 255, 76, 76, 76, 255, 100, 100, 100, 255, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 145, 145, 145, 255, 145, 145, 145, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 192, 192, 192, 255, 192, 192, 192, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 76, 76, 76, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 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, 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, 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, 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, 99, 99, 99, 255, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 192, 192, 192, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 145, 145, 145, 255, 145, 145, 145, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 130, 130, 130, 255, 130, 130, 130, 255, 100, 100, 100, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 145, 145, 145, 255, 145, 145, 145, 255, 99, 99, 99, 255, 99, 99, 99, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 192, 192, 192, 255, 192, 192, 192, 255, 192, 192, 192, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 130, 130, 130, 255, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 130, 130, 130, 255, 130, 130, 130, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 145, 145, 145, 255, 145, 145, 145, 255, 130, 130, 130, 255, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 100, 100, 100, 255, 100, 100, 100, 255, 76, 76, 76, 255, 76, 76, 76, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 145, 145, 145, 255, 145, 145, 145, 255, 145, 145, 145, 255, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 100, 100, 100, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 100, 100, 100, 255, 100, 100, 100, 255, 76, 76, 76, 255, 76, 76, 76, 255, 76, 76, 76, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 99, 99, 99, 255, 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, 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, 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, 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, 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, 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, 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, 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, 98, 98, 98, 255, 98, 98, 98, 255, 98, 98, 98, 255, 98, 98, 98, 255, 98, 98, 98, 255, 98, 98, 98, 255, 98, 98, 98, 255, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 98, 98, 255, 98, 98, 98, 255, 98, 98, 98, 255, 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, 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), "format": "RGBA8", @@ -44,7 +44,7 @@ data = { } [sub_resource type="ImageTexture" id="ImageTexture_2v752"] -image = SubResource("Image_h3oxp") +image = SubResource("Image_dag22") [sub_resource type="BoxShape3D" id="BoxShape3D_d3j6k"] @@ -57,7 +57,7 @@ material = SubResource("StandardMaterial3D_e3y4s") size = Vector2(2, 2) center_offset = Vector3(0, -1, 1) -[sub_resource type="Image" id="Image_q7xnp"] +[sub_resource type="Image" id="Image_1fexm"] data = { "data": PackedByteArray(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, 33, 22, 14, 255, 33, 22, 14, 255, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 22, 14, 255, 33, 22, 14, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 55, 35, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 21, 255, 47, 34, 21, 255, 72, 55, 35, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 21, 255, 47, 34, 21, 255, 72, 55, 35, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 33, 22, 14, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 33, 22, 14, 255, 33, 22, 14, 255, 58, 37, 17, 255, 47, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 21, 255, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 37, 17, 255, 33, 22, 14, 255, 33, 22, 14, 255, 58, 37, 17, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 22, 14, 255, 33, 22, 14, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 14, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 72, 55, 35, 255, 72, 55, 35, 255, 33, 22, 14, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 33, 22, 13, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 33, 22, 13, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 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, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 58, 37, 17, 255, 46, 34, 20, 255, 46, 34, 20, 255, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 20, 255, 46, 34, 20, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 55, 35, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 20, 255, 33, 22, 13, 255, 58, 37, 17, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 58, 37, 17, 255, 46, 34, 20, 255, 46, 34, 20, 255, 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, 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, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 72, 55, 35, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 21, 255, 33, 22, 13, 255, 33, 22, 13, 255, 46, 34, 21, 255, 33, 22, 13, 255, 33, 22, 13, 255, 46, 34, 20, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 20, 255, 46, 34, 20, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 14, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 13, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 46, 34, 21, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 20, 255, 46, 34, 20, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 72, 55, 36, 255, 58, 38, 18, 255, 58, 38, 18, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 55, 35, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 33, 22, 13, 255, 33, 22, 13, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 20, 255, 46, 34, 20, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 13, 255, 33, 22, 13, 255, 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, 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, 33, 22, 14, 255, 47, 34, 21, 255, 72, 55, 36, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 13, 255, 33, 22, 13, 255, 33, 22, 13, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 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, 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, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 72, 55, 35, 255, 72, 55, 35, 255, 33, 22, 14, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 13, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 46, 34, 20, 255, 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, 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, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 47, 34, 21, 255, 72, 55, 35, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 58, 37, 17, 255, 33, 22, 13, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 20, 255, 58, 37, 17, 255, 58, 37, 17, 255, 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, 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, 47, 34, 21, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 33, 22, 14, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 13, 255, 33, 22, 13, 255, 33, 22, 13, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 20, 255, 58, 37, 17, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 17, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 14, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 33, 22, 13, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 72, 55, 35, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 20, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 33, 22, 14, 255, 33, 22, 14, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 47, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 33, 22, 13, 255, 33, 22, 13, 255, 46, 34, 21, 255, 33, 22, 13, 255, 46, 34, 21, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 72, 55, 36, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 72, 55, 35, 255, 72, 55, 35, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 55, 35, 255, 72, 55, 35, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 13, 255, 33, 22, 13, 255, 46, 34, 21, 255, 33, 22, 13, 255, 33, 22, 13, 255, 72, 55, 35, 255, 72, 55, 35, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 33, 22, 13, 255, 33, 22, 13, 255, 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, 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, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 58, 38, 18, 255, 72, 55, 36, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 47, 34, 21, 255, 72, 55, 35, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 47, 34, 21, 255, 72, 55, 35, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 33, 22, 13, 255, 33, 22, 13, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 72, 55, 35, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 21, 255, 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, 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, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 33, 22, 13, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 33, 22, 14, 255, 33, 22, 14, 255, 33, 22, 14, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 33, 22, 14, 255, 33, 22, 14, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 33, 22, 14, 255, 33, 22, 14, 255, 33, 22, 14, 255, 33, 22, 14, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 58, 38, 17, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 33, 22, 13, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 33, 22, 14, 255, 33, 22, 14, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 46, 34, 21, 255, 33, 22, 13, 255, 33, 22, 13, 255, 58, 37, 17, 255, 58, 37, 17, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 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, 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, 33, 23, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 56, 36, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 13, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 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, 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, 33, 23, 14, 255, 33, 22, 14, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 56, 36, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 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, 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, 73, 56, 36, 255, 73, 56, 36, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 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, 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, 47, 34, 21, 255, 73, 56, 36, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 72, 56, 36, 255, 72, 55, 36, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 55, 35, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 56, 36, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 55, 36, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 47, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 55, 36, 255, 72, 55, 36, 255, 47, 34, 21, 255, 58, 38, 17, 255, 33, 22, 14, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 55, 35, 255, 47, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 46, 34, 21, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 33, 22, 14, 255, 33, 22, 14, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 72, 55, 35, 255, 72, 55, 35, 255, 47, 34, 21, 255, 47, 34, 21, 255, 46, 34, 21, 255, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 33, 22, 14, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 33, 23, 14, 255, 33, 23, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 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, 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, 33, 23, 14, 255, 33, 23, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 14, 255, 58, 37, 17, 255, 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, 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, 47, 34, 22, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 56, 36, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 33, 22, 14, 255, 33, 22, 14, 255, 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, 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, 47, 34, 22, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 33, 23, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 56, 36, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 33, 22, 14, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 17, 255, 47, 34, 21, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 58, 37, 17, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 33, 22, 14, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 47, 34, 22, 255, 47, 34, 22, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 55, 36, 255, 72, 55, 36, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 55, 36, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 33, 22, 14, 255, 33, 22, 14, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 47, 34, 22, 255, 47, 34, 22, 255, 47, 34, 22, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 55, 36, 255, 72, 55, 36, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 17, 255, 47, 34, 21, 255, 72, 55, 36, 255, 72, 55, 36, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 47, 34, 22, 255, 47, 34, 22, 255, 47, 34, 22, 255, 47, 34, 22, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 47, 34, 22, 255, 47, 34, 22, 255, 47, 34, 22, 255, 47, 34, 22, 255, 47, 34, 22, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 58, 37, 17, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 22, 255, 47, 34, 22, 255, 47, 34, 22, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 37, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 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, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 33, 22, 14, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 58, 38, 17, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 33, 22, 14, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 72, 56, 36, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 22, 14, 255, 72, 56, 36, 255, 72, 56, 36, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 72, 55, 36, 255, 72, 55, 36, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 33, 22, 14, 255, 33, 22, 14, 255, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 58, 38, 18, 255, 72, 55, 36, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 33, 22, 14, 255, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 58, 38, 17, 255, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 38, 18, 255, 58, 38, 18, 255, 58, 38, 18, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 58, 38, 17, 255, 58, 38, 17, 255, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 22, 14, 255, 33, 22, 14, 255, 47, 34, 21, 255, 47, 34, 21, 255, 47, 34, 21, 255, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 34, 21, 255, 47, 34, 21, 255, 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), "format": "RGBA8", @@ -67,12 +67,13 @@ data = { } [sub_resource type="ImageTexture" id="ImageTexture_ktf6m"] -image = SubResource("Image_q7xnp") +image = SubResource("Image_1fexm") [resource] item/0/name = "MeshInstance3D" item/0/mesh = SubResource("QuadMesh_odji0") item/0/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) +item/0/mesh_cast_shadow = 1 item/0/shapes = [SubResource("BoxShape3D_mtfk2"), Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0)] item/0/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) item/0/navigation_layers = 1 @@ -80,6 +81,7 @@ item/0/preview = SubResource("ImageTexture_a0dlb") item/1/name = "MeshInstance3D2" item/1/mesh = SubResource("QuadMesh_sayb6") item/1/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) +item/1/mesh_cast_shadow = 1 item/1/shapes = [SubResource("BoxShape3D_d3j6k"), Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0)] item/1/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) item/1/navigation_layers = 1 @@ -87,6 +89,7 @@ item/1/preview = SubResource("ImageTexture_2v752") item/2/name = "MeshInstance3D3" item/2/mesh = SubResource("QuadMesh_psgwy") item/2/mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) +item/2/mesh_cast_shadow = 1 item/2/shapes = [] item/2/navigation_mesh_transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) item/2/navigation_layers = 1 diff --git a/Worlds/TestingRange/Enemies/dummy.tres b/Worlds/TestingRange/Enemies/dummy.tres index 3a09017..cd05a2f 100644 --- a/Worlds/TestingRange/Enemies/dummy.tres +++ b/Worlds/TestingRange/Enemies/dummy.tres @@ -1,6 +1,6 @@ [gd_resource type="Resource" script_class="Enemy" load_steps=3 format=3 uid="uid://bdkcwve6d35gl"] -[ext_resource type="Script" path="res://Scripts/Resources/enemy.gd" id="1_o7yng"] +[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="1_o7yng"] [ext_resource type="Texture2D" uid="uid://brjk5pu0up85s" path="res://Assets/TextureAtlases/dummy.tres" id="2_bbk0y"] [resource] @@ -8,6 +8,7 @@ script = ExtResource("1_o7yng") title = "dummy" target_type = 1 sprite = ExtResource("2_bbk0y") +spawn_power = 10 health = 100 penalty = 10 movement_speed = 1.0 diff --git a/Worlds/TestingRange/Enemies/target_dummy.tscn b/Worlds/TestingRange/Enemies/target_dummy.tscn index 56841f5..7238346 100644 --- a/Worlds/TestingRange/Enemies/target_dummy.tscn +++ b/Worlds/TestingRange/Enemies/target_dummy.tscn @@ -1,14 +1,14 @@ [gd_scene load_steps=12 format=3 uid="uid://cgcslt0rsg6e3"] -[ext_resource type="Script" path="res://Scripts/target_dummy.gd" id="1_f72ee"] +[ext_resource type="Script" uid="uid://du13pv0e5fah" path="res://Scripts/target_dummy.gd" id="1_f72ee"] [ext_resource type="Resource" uid="uid://bdkcwve6d35gl" path="res://Worlds/TestingRange/Enemies/dummy.tres" id="2_7pldl"] -[ext_resource type="Script" path="res://Scripts/health.gd" id="3_8hqew"] +[ext_resource type="Script" uid="uid://bamhci3kawuyt" path="res://Scripts/health.gd" id="3_8hqew"] [ext_resource type="PackedScene" uid="uid://cqtew0t8sttpm" path="res://Scenes/damage_particle.tscn" id="4_0ruff"] -[ext_resource type="Script" path="res://Scripts/hitbox.gd" id="4_yinjs"] +[ext_resource type="Script" uid="uid://cummt2be3r1gq" path="res://Scripts/hitbox.gd" id="4_yinjs"] [ext_resource type="PackedScene" uid="uid://ri8r03wqy80t" path="res://Scenes/8_direction_sprite.tscn" id="5_t0dpu"] [ext_resource type="Texture2D" uid="uid://brjk5pu0up85s" path="res://Assets/TextureAtlases/dummy.tres" id="6_agkvc"] [ext_resource type="Texture2D" uid="uid://r202vo47jw1q" path="res://Assets/Textures/enemyhealth.png" id="8_m8sgd"] -[ext_resource type="Script" path="res://Scripts/status_effector.gd" id="8_melp1"] +[ext_resource type="Script" uid="uid://cojjgevmbhwal" path="res://Scripts/status_effector.gd" id="8_melp1"] [sub_resource type="SphereShape3D" id="SphereShape3D_21dgw"] radius = 0.7173 diff --git a/Worlds/TestingRange/Levels/training_arena.tscn b/Worlds/TestingRange/Levels/training_arena.tscn index 2bc5da5..746f9f2 100644 --- a/Worlds/TestingRange/Levels/training_arena.tscn +++ b/Worlds/TestingRange/Levels/training_arena.tscn @@ -1,19 +1,13 @@ -[gd_scene load_steps=22 format=3 uid="uid://uv7hjsgisy31"] +[gd_scene load_steps=16 format=3 uid="uid://uv7hjsgisy31"] [ext_resource type="Texture2D" uid="uid://dgwsvkmnesjjm" path="res://Assets/Textures/stone.png" id="1_45ikc"] [ext_resource type="PackedScene" uid="uid://dxgxbtf68lcv5" path="res://PCs/hero.tscn" id="2_w387b"] [ext_resource type="PackedScene" uid="uid://b0nady5xm88bo" path="res://Worlds/GreenPlanet/Enemies/land_enemy.tscn" id="3_y4upj"] [ext_resource type="PackedScene" uid="uid://dsasunnk47n8o" path="res://Scenes/item_card.tscn" id="4_i7krx"] -[ext_resource type="Script" path="res://Scripts/Resources/enemy.gd" id="4_ucmnf"] +[ext_resource type="Script" uid="uid://cbwxa2a4hfcy4" path="res://Scripts/Resources/enemy.gd" id="4_ucmnf"] [ext_resource type="Texture2D" uid="uid://dj13g1w14mekw" path="res://Assets/Textures/eye_dog.png" id="5_15cd7"] -[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://PCs/Mechanic/ClassCards/Assault/card_assault.tres" id="5_806m0"] -[ext_resource type="Resource" uid="uid://ckm88acryitl4" path="res://PCs/Mechanic/ClassCards/Sniper/card_sniper.tres" id="6_evvng"] -[ext_resource type="Resource" uid="uid://cvto66tp7rrst" path="res://PCs/Mechanic/ClassCards/Gatling/card_gatling.tres" id="8_k80ff"] +[ext_resource type="Resource" uid="uid://deer0awg4d18o" path="res://Cards/assault.tres" id="5_806m0"] [ext_resource type="PackedScene" uid="uid://ddbbwx0yy16lh" path="res://Scenes/TowerBase/tower_base.tscn" id="9_imodf"] -[ext_resource type="Resource" uid="uid://blgngx360vff1" path="res://PCs/Mechanic/ClassCards/BombLauncher/card_bomb_launcher.tres" id="10_g0syk"] -[ext_resource type="Resource" uid="uid://dg4pjt47q8xpw" path="res://PCs/Mechanic/ClassCards/Flamethrower/card_flamethrower.tres" id="11_d3sci"] -[ext_resource type="Resource" uid="uid://b37r54q84vqoi" path="res://PCs/Mechanic/ClassCards/RocketLauncher/card_rocket_launcher.tres" id="11_jk0fe"] -[ext_resource type="Resource" uid="uid://fwsg5av1egp2" path="res://PCs/Mechanic/ClassCards/GlueLauncher/card_glue_launcher.tres" id="12_7lpov"] [sub_resource type="PhysicsMaterial" id="PhysicsMaterial_mqtlc"] @@ -25,34 +19,34 @@ texture_filter = 0 [sub_resource type="BoxShape3D" id="BoxShape3D_3mcyj"] size = Vector3(15, 1, 30) -[sub_resource type="AtlasTexture" id="AtlasTexture_jx270"] +[sub_resource type="AtlasTexture" id="AtlasTexture_dpehd"] resource_local_to_scene = true atlas = ExtResource("5_15cd7") region = Rect2(0, 0, 32, 32) -[sub_resource type="Resource" id="Resource_dn3eg"] +[sub_resource type="Resource" id="Resource_mmghc"] resource_local_to_scene = true script = ExtResource("4_ucmnf") title = "dog" target_type = 0 -sprite = SubResource("AtlasTexture_jx270") +sprite = SubResource("AtlasTexture_dpehd") spawn_power = 10 health = 100 penalty = 10 movement_speed = 1.0 spawn_cooldown = 1.0 -[sub_resource type="AtlasTexture" id="AtlasTexture_qwrm2"] +[sub_resource type="AtlasTexture" id="AtlasTexture_u1euk"] resource_local_to_scene = true atlas = ExtResource("5_15cd7") region = Rect2(0, 0, 32, 32) -[sub_resource type="Resource" id="Resource_bb3cf"] +[sub_resource type="Resource" id="Resource_1m7kn"] resource_local_to_scene = true script = ExtResource("4_ucmnf") title = "dog" target_type = 0 -sprite = SubResource("AtlasTexture_qwrm2") +sprite = SubResource("AtlasTexture_u1euk") spawn_power = 10 health = 100 penalty = 10 @@ -80,40 +74,16 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.805513, 0.5, 2.30163) [node name="Enemy" parent="." instance=ExtResource("3_y4upj")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.28337, 0.601179, -1.23188) -stats = SubResource("Resource_dn3eg") +stats = SubResource("Resource_mmghc") [node name="Enemy2" parent="." instance=ExtResource("3_y4upj")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.26298, 0.601179, -3.22988) -stats = SubResource("Resource_bb3cf") +stats = SubResource("Resource_1m7kn") [node name="assaultcard" parent="." instance=ExtResource("4_i7krx")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.7802, 0.5, 3.16356) card = ExtResource("5_806m0") -[node name="acceleratorcard" parent="." instance=ExtResource("4_i7krx")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.11938, 0.5, 4.73946) -card = ExtResource("8_k80ff") - -[node name="snipercard" parent="." instance=ExtResource("4_i7krx")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.1017, 0.5, 5.17215) -card = ExtResource("6_evvng") - -[node name="grenadecard" parent="." instance=ExtResource("4_i7krx")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.385228, 0.5, 6.25718) -card = ExtResource("10_g0syk") - -[node name="grenadecard2" parent="." instance=ExtResource("4_i7krx")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.51176, 0.499999, -5.26455) -card = ExtResource("11_d3sci") - -[node name="rocketcard" parent="." instance=ExtResource("4_i7krx")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.13185, 0.5, 6.25718) -card = ExtResource("11_jk0fe") - -[node name="gluecard" parent="." instance=ExtResource("4_i7krx")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.12773, 0.5, 6.25718) -card = ExtResource("12_7lpov") - [node name="towerbase" parent="." instance=ExtResource("9_imodf")] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4.77234, 0.5, 2.6958) diff --git a/achievement_popup.gd b/achievement_popup.gd new file mode 100644 index 0000000..8e4ca3a --- /dev/null +++ b/achievement_popup.gd @@ -0,0 +1,5 @@ +class_name AchievementPopup extends PanelContainer + + +func set_achievement() -> void: + $HBoxContainer/Label.text = "wuh" diff --git a/achievement_popup.gd.uid b/achievement_popup.gd.uid new file mode 100644 index 0000000..a297e82 --- /dev/null +++ b/achievement_popup.gd.uid @@ -0,0 +1 @@ +uid://3n5mrdgjsn8e diff --git a/achievement_popup.tscn b/achievement_popup.tscn new file mode 100644 index 0000000..1af1eab --- /dev/null +++ b/achievement_popup.tscn @@ -0,0 +1,39 @@ +[gd_scene load_steps=4 format=3 uid="uid://cmn22yceqewx1"] + +[ext_resource type="Script" uid="uid://3n5mrdgjsn8e" path="res://achievement_popup.gd" id="1_ah4h2"] +[ext_resource type="Texture2D" uid="uid://ctbi3gm1me1t5" path="res://Assets/Textures/unlock_mage_achievement.png" id="2_nbrip"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_um1rr"] +atlas = ExtResource("2_nbrip") +region = Rect2(36, 0, 36, 36) + +[node name="AchievementPopup" type="PanelContainer"] +anchors_preset = 6 +anchor_left = 1.0 +anchor_top = 0.5 +anchor_right = 1.0 +anchor_bottom = 0.5 +offset_left = -483.0 +offset_top = -61.5 +offset_bottom = 61.5 +grow_horizontal = 0 +grow_vertical = 2 +script = ExtResource("1_ah4h2") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 2 +alignment = 2 + +[node name="TextureRect" type="TextureRect" parent="HBoxContainer"] +layout_mode = 2 +texture = SubResource("AtlasTexture_um1rr") +expand_mode = 3 +stretch_mode = 5 + +[node name="Label" type="Label" parent="HBoxContainer"] +custom_minimum_size = Vector2(350, 0) +layout_mode = 2 +text = "unlock the thing and then go to the place to do the other thing" +horizontal_alignment = 1 +vertical_alignment = 1 +autowrap_mode = 3 diff --git a/bridge.blend b/bridge.blend new file mode 100644 index 0000000..3de11e3 Binary files /dev/null and b/bridge.blend differ diff --git a/bridge.glb b/bridge.glb new file mode 100644 index 0000000..992a38a Binary files /dev/null and b/bridge.glb differ diff --git a/bridge.glb.import b/bridge.glb.import new file mode 100644 index 0000000..429f025 --- /dev/null +++ b/bridge.glb.import @@ -0,0 +1,52 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://ca174636iktc6" +path="res://.godot/imported/bridge.glb-b17fbcafeb02ffc55d5c37667de99850.scn" + +[deps] + +source_file="res://bridge.glb" +dest_files=["res://.godot/imported/bridge.glb-b17fbcafeb02ffc55d5c37667de99850.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +_subresources={ +"materials": { +"Dirt": { +"use_external/enabled": true, +"use_external/path": "uid://bjr7u7ixxokw6" +}, +"Grass": { +"use_external/enabled": true, +"use_external/path": "uid://jdg8tb7g3d4o" +}, +"Stone": { +"use_external/enabled": true, +"use_external/path": "uid://bajfn46md8pyy" +} +} +} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/card_item.gd b/card_item.gd new file mode 100644 index 0000000..8717749 --- /dev/null +++ b/card_item.gd @@ -0,0 +1,34 @@ +class_name CardItem extends InteractButton + +signal pressed(card_item: CardItem) + +@export var outline_mesh: MeshInstance3D +@export var card_ui: CardInHand +var card: Card = null +var rarity_colors: Array[Color] = [ + Color8(255, 255, 255), + Color8(50, 204, 36), + Color8(36, 59, 204), + Color8(181, 36, 204), + Color8(225, 112, 30) +] + + +func set_card(new_card: Card) -> void: + card = new_card + card_ui.set_card(card) + card_ui.view_tower() + outline_mesh.get_surface_override_material(0).albedo_color = rarity_colors[card.rarity] + #print(rarity_colors[card.rarity]) + + +func press(callback_player: Hero) -> void: + pressed.emit(self) + + +func enable_hover_effect() -> void: + $Sprite3D.visible = true + + +func disable_hover_effect() -> void: + $Sprite3D.visible = false diff --git a/card_item.gd.uid b/card_item.gd.uid new file mode 100644 index 0000000..cc89f15 --- /dev/null +++ b/card_item.gd.uid @@ -0,0 +1 @@ +uid://bj7oafusrrsk diff --git a/enemy_card_ui.gd b/enemy_card_ui.gd new file mode 100644 index 0000000..b07fb55 --- /dev/null +++ b/enemy_card_ui.gd @@ -0,0 +1,22 @@ +class_name EnemyCardUI extends Control + +@export var enemy_name: Label +@export var enemy_rarity: TextureRect +@export var enemy_tex: TextureRect +@export var enemy_count: Label + + +func set_enemy(enemy: EnemyCard) -> void: + enemy_name.text = enemy.enemy.title + enemy_rarity.texture.region = Rect2(0.0, 92.0 - (23.0 * int(enemy.rarity)), 124.0, 23.0) + enemy_tex.texture = enemy.enemy.icon + if enemy.rarity == Data.Rarity.COMMON: + enemy_count.text = str(enemy.enemy.common_group) + elif enemy.rarity == Data.Rarity.UNCOMMON: + enemy_count.text = str(enemy.enemy.uncommon_group) + elif enemy.rarity == Data.Rarity.RARE: + enemy_count.text = str(enemy.enemy.rare_group) + elif enemy.rarity == Data.Rarity.EPIC: + enemy_count.text = str(enemy.enemy.epic_group) + elif enemy.rarity == Data.Rarity.LEGENDARY: + enemy_count.text = str(enemy.enemy.legendary_group) diff --git a/enemy_card_ui.gd.uid b/enemy_card_ui.gd.uid new file mode 100644 index 0000000..ddf2201 --- /dev/null +++ b/enemy_card_ui.gd.uid @@ -0,0 +1 @@ +uid://b8j7mw1xwisi diff --git a/enemy_card_ui.tscn b/enemy_card_ui.tscn new file mode 100644 index 0000000..2653685 --- /dev/null +++ b/enemy_card_ui.tscn @@ -0,0 +1,76 @@ +[gd_scene load_steps=6 format=3 uid="uid://d17c77pqsi8oy"] + +[ext_resource type="Script" uid="uid://b8j7mw1xwisi" path="res://enemy_card_ui.gd" id="1_i1ei4"] +[ext_resource type="Texture2D" uid="uid://g00wwrlxxdc5" path="res://Assets/Textures/icon_eye_dog.png" id="2_3r04h"] +[ext_resource type="Texture2D" uid="uid://c7tnda7he8u5l" path="res://Assets/Textures/stars_legendary-Sheet.png" id="3_uu1bb"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_uu1bb"] +bg_color = Color(0.691357, 0.691357, 0.691357, 1) +corner_radius_top_left = 15 +corner_radius_top_right = 15 +corner_radius_bottom_right = 15 +corner_radius_bottom_left = 15 +expand_margin_left = 5.0 +expand_margin_top = 5.0 +expand_margin_right = 5.0 +expand_margin_bottom = 5.0 + +[sub_resource type="AtlasTexture" id="AtlasTexture_4b8gd"] +resource_local_to_scene = true +atlas = ExtResource("3_uu1bb") +region = Rect2(0, 0, 124, 23) + +[node name="EnemyCardUI" type="Control" node_paths=PackedStringArray("enemy_name", "enemy_rarity", "enemy_tex", "enemy_count")] +layout_mode = 3 +anchors_preset = 0 +mouse_filter = 2 +script = ExtResource("1_i1ei4") +enemy_name = NodePath("PanelContainer/HBoxContainer/EnemyName") +enemy_rarity = NodePath("PanelContainer/HBoxContainer/HBoxContainer/TextureRect") +enemy_tex = NodePath("PanelContainer/HBoxContainer/TextureRect") +enemy_count = NodePath("PanelContainer/HBoxContainer/HBoxContainer/Amount") + +[node name="PanelContainer" type="PanelContainer" parent="."] +custom_minimum_size = Vector2(0, 300) +layout_mode = 0 +offset_right = 241.0 +offset_bottom = 138.0 +mouse_filter = 2 +theme_override_styles/panel = SubResource("StyleBoxFlat_uu1bb") + +[node name="HBoxContainer" type="VBoxContainer" parent="PanelContainer"] +layout_mode = 2 +mouse_filter = 2 + +[node name="EnemyName" type="Label" parent="PanelContainer/HBoxContainer"] +layout_mode = 2 +size_flags_vertical = 0 +theme_override_colors/font_color = Color(0, 0, 0, 1) +text = "enemy name" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="PanelContainer/HBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 +mouse_filter = 2 +texture = ExtResource("2_3r04h") +expand_mode = 1 +stretch_mode = 5 + +[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/HBoxContainer"] +layout_mode = 2 +size_flags_vertical = 8 + +[node name="Amount" type="Label" parent="PanelContainer/HBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_colors/font_color = Color(0, 0, 0, 1) +text = "15" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="TextureRect" type="TextureRect" parent="PanelContainer/HBoxContainer/HBoxContainer"] +layout_mode = 2 +texture = SubResource("AtlasTexture_4b8gd") +stretch_mode = 5 diff --git a/energy_bar.gd b/energy_bar.gd new file mode 100644 index 0000000..f6c2776 --- /dev/null +++ b/energy_bar.gd @@ -0,0 +1,80 @@ +class_name EnergyBar extends Control + +@export var cell_icon_tex: Texture +@export var bar_overlay: TextureRect +@export var progress_bar: ProgressBar +var cell_icons: Array[TextureRect] +var energy: float = 0 +var max_energy: float = 0 : + get(): + return max_energy + set(value): + max_energy = value + energy = max_energy + + +#TODO: we can just create all 12 of these not even in a script, just create them +#and use the bar overlay to hide the unused ones, we just need to change the algorithm +#for setting the used ones invisible to account for the ones that are there but hidden +func create_discrete_icons(new_energy: int) -> void: + progress_bar.visible = false + for icon: TextureRect in cell_icons: + icon.queue_free() + if new_energy < 12: + bar_overlay.visible = true + bar_overlay.texture.region = Rect2(159.0 * (-new_energy + 11), 0.0, 159.0, 422.0) + else: + bar_overlay.visible = false + cell_icons = [] + energy = new_energy + for x: int in energy: + var new_icon: TextureRect = TextureRect.new() + new_icon.texture = cell_icon_tex + #new_icon.expand_mode = TextureRect.EXPAND_FIT_HEIGHT_PROPORTIONAL + #new_icon.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED + new_icon.size = Vector2(42.0, 35.0) + new_icon.position = Vector2(-70, -70 + (-27 * x)) + cell_icons.append(new_icon) + add_child(new_icon) + + +func enable_progress_bar() -> void: + for icon: TextureRect in cell_icons: + icon.queue_free() + cell_icons = [] + bar_overlay.visible = false + progress_bar.visible = true + progress_bar.max_value = max_energy + progress_bar.value = max_energy + + +func blank() -> void: + progress_bar.visible = false + bar_overlay.visible = false + for icon: TextureRect in cell_icons: + icon.queue_free() + cell_icons = [] + + +func use_energy(energy_used: float, energy_type: Data.EnergyType = Data.EnergyType.DISCRETE) -> void: + if energy <= 0: + return + if energy_type == Data.EnergyType.DISCRETE: + for x: int in int(energy_used): + energy -= 1 + cell_icons[energy].visible = false + else: + energy -= energy_used + progress_bar.value = energy + + +func gain_energy(energy_gained: float, energy_type: Data.EnergyType = Data.EnergyType.DISCRETE) -> void: + if energy >= max_energy: + return + if energy_type == Data.EnergyType.DISCRETE: + for x: int in int(energy_gained): + cell_icons[energy].visible = true + energy += 1 + else: + energy += energy_gained + progress_bar.value = energy diff --git a/energy_bar.gd.uid b/energy_bar.gd.uid new file mode 100644 index 0000000..4bdb494 --- /dev/null +++ b/energy_bar.gd.uid @@ -0,0 +1 @@ +uid://gjcl34fan741 diff --git a/energy_bar.tscn b/energy_bar.tscn new file mode 100644 index 0000000..2f5b14f --- /dev/null +++ b/energy_bar.tscn @@ -0,0 +1,75 @@ +[gd_scene load_steps=8 format=3 uid="uid://c2id8hjico4w8"] + +[ext_resource type="Script" uid="uid://gjcl34fan741" path="res://energy_bar.gd" id="1_rdnti"] +[ext_resource type="Texture2D" uid="uid://bm13bgpre6ubr" path="res://Assets/Textures/energy_cell.png" id="2_q48n7"] +[ext_resource type="Texture2D" uid="uid://b1y1d1ge4fl8p" path="res://Assets/Textures/energy_bar.png" id="3_d65ol"] +[ext_resource type="Texture2D" uid="uid://3vqulb1vpy7h" path="res://Assets/Textures/energy_bar_bg.png" id="3_wymtn"] +[ext_resource type="Texture2D" uid="uid://cxh488oh3jtr7" path="res://Assets/Textures/energy_bar_overlay.png" id="4_77ucw"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_77ucw"] +bg_color = Color(0, 0.667, 0.87, 1) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wymtn"] +atlas = ExtResource("4_77ucw") +region = Rect2(0, 0, 159, 422) + +[node name="EnergyBar" type="Control" node_paths=PackedStringArray("bar_overlay", "progress_bar")] +layout_mode = 3 +anchors_preset = 3 +anchor_left = 1.0 +anchor_top = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 0 +grow_vertical = 0 +script = ExtResource("1_rdnti") +cell_icon_tex = ExtResource("2_q48n7") +bar_overlay = NodePath("TextureRect/TextureRect") +progress_bar = NodePath("TextureRect/ProgressBar") + +[node name="TextureRect2" type="TextureRect" parent="."] +layout_mode = 0 +offset_left = -128.0 +offset_top = -421.0 +offset_right = 31.0 +offset_bottom = 1.0 +texture = ExtResource("3_wymtn") + +[node name="TextureRect" type="TextureRect" parent="."] +layout_mode = 0 +offset_left = -128.0 +offset_top = -421.0 +offset_right = 31.0 +offset_bottom = 1.0 +texture = ExtResource("3_d65ol") +stretch_mode = 5 + +[node name="ProgressBar" type="ProgressBar" parent="TextureRect"] +visible = false +layout_mode = 1 +anchors_preset = -1 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 56.0 +offset_top = 52.0 +offset_right = -57.0 +offset_bottom = -34.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_styles/fill = SubResource("StyleBoxFlat_77ucw") +value = 100.0 +fill_mode = 3 +show_percentage = false + +[node name="TextureRect2" type="TextureRect" parent="TextureRect"] +layout_mode = 0 +offset_right = 40.0 +offset_bottom = 40.0 +texture = ExtResource("3_d65ol") + +[node name="TextureRect" type="TextureRect" parent="TextureRect"] +visible = false +layout_mode = 0 +offset_right = 159.0 +offset_bottom = 422.0 +texture = SubResource("AtlasTexture_wymtn") diff --git a/export_presets.cfg b/export_presets.cfg index 57cd156..df924ab 100644 --- a/export_presets.cfg +++ b/export_presets.cfg @@ -1,18 +1,23 @@ [preset.0] name="Linux/X11" -platform="Linux/X11" +platform="Linux" runnable=true +advanced_options=false dedicated_server=false custom_features="" -export_filter="all_resources" +export_filter="exclude" +export_files=PackedStringArray("res://Classes/Engineer/class.tres", "res://Classes/Engineer/doe.png", "res://Classes/Engineer/podium.tscn", "res://Classes/Engineer/red.png", "res://Classes/Engineer/red_hand.png", "res://Classes/Mage/blue.png", "res://Classes/Mage/blue_hand.png", "res://Classes/Mage/class.tres", "res://Classes/Mage/podium.tscn", "res://Classes/Mage/yeen.png", "res://Classes/NewHero3/class.tres", "res://Classes/NewHero3/green.png", "res://Classes/NewHero3/green_hand.png", "res://Classes/NewHero3/podium.tscn", "res://Classes/NewHero4/class.tres", "res://Classes/NewHero4/podium.tscn", "res://Cards/ascension.tres", "res://Cards/assault.tres", "res://Cards/blowdart.tres", "res://Cards/bomb_launcher.tres", "res://Cards/fireball.tres", "res://Cards/flamethrower.tres", "res://Cards/gatling.tres", "res://Cards/glue_launcher.tres", "res://Cards/icicle.tres", "res://Cards/overclock_card.tres", "res://Cards/reactor.tres", "res://Cards/refrigerator.tres", "res://Cards/rocket_launcher.tres", "res://Cards/sniper.tres") include_filter="" exclude_filter="" -export_path="../../tower_defense/Linux/DeckedOutDefense" +export_path="../../tower_defense/Linux/DeckedOutDefense.x86_64" +patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" +seed=0 encrypt_pck=false encrypt_directory=false +script_export_mode=2 [preset.0.options] @@ -20,10 +25,8 @@ custom_template/debug="" custom_template/release="" debug/export_console_wrapper=1 binary_format/embed_pck=true -texture_format/bptc=true -texture_format/s3tc=true -texture_format/etc=false -texture_format/etc2=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false binary_format/architecture="x86_64" ssh_remote_deploy/enabled=false ssh_remote_deploy/host="user@host_ip" @@ -37,22 +40,31 @@ unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\") rm -rf \"{temp_dir}\"" +texture_format/bptc=true +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false [preset.1] name="Windows Desktop" platform="Windows Desktop" runnable=true +advanced_options=false dedicated_server=false custom_features="" -export_filter="all_resources" +export_filter="exclude" +export_files=PackedStringArray("res://Classes/Engineer/class.tres", "res://Classes/Engineer/doe.png", "res://Classes/Engineer/podium.tscn", "res://Classes/Engineer/red.png", "res://Classes/Engineer/red_hand.png", "res://Classes/Mage/blue.png", "res://Classes/Mage/blue_hand.png", "res://Classes/Mage/class.tres", "res://Classes/Mage/podium.tscn", "res://Classes/Mage/yeen.png", "res://Classes/NewHero3/class.tres", "res://Classes/NewHero3/green.png", "res://Classes/NewHero3/green_hand.png", "res://Classes/NewHero3/podium.tscn", "res://Classes/NewHero4/class.tres", "res://Classes/NewHero4/podium.tscn", "res://Cards/ascension.tres", "res://Cards/assault.tres", "res://Cards/blowdart.tres", "res://Cards/bomb_launcher.tres", "res://Cards/fireball.tres", "res://Cards/flamethrower.tres", "res://Cards/gatling.tres", "res://Cards/glue_launcher.tres", "res://Cards/icicle.tres", "res://Cards/overclock_card.tres", "res://Cards/reactor.tres", "res://Cards/refrigerator.tres", "res://Cards/rocket_launcher.tres", "res://Cards/sniper.tres") include_filter="" exclude_filter="" export_path="../../tower_defense/Windows/DeckedOutDefense.exe" +patches=PackedStringArray() encryption_include_filters="" encryption_exclude_filters="" +seed=0 encrypt_pck=false encrypt_directory=false +script_export_mode=2 [preset.1.options] @@ -60,10 +72,8 @@ custom_template/debug="" custom_template/release="" debug/export_console_wrapper=1 binary_format/embed_pck=true -texture_format/bptc=true -texture_format/s3tc=true -texture_format/etc=false -texture_format/etc2=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false binary_format/architecture="x86_64" codesign/enable=false codesign/timestamp=true @@ -83,6 +93,8 @@ application/file_description="" application/copyright="" application/trademarks="" application/export_angle=0 +application/export_d3d12=0 +application/d3d12_agility_sdk_multiarch=true ssh_remote_deploy/enabled=false ssh_remote_deploy/host="user@host_ip" ssh_remote_deploy/port="22" @@ -100,3 +112,50 @@ Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorActi ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue Remove-Item -Recurse -Force '{temp_dir}'" +texture_format/bptc=true +texture_format/s3tc=true +texture_format/etc=false +texture_format/etc2=false + +[preset.2] + +name="Linux mod test" +platform="Linux" +runnable=false +advanced_options=false +dedicated_server=false +custom_features="" +export_filter="resources" +export_files=PackedStringArray("res://Classes/Engineer/class.tres", "res://Classes/Engineer/doe.png", "res://Classes/Engineer/podium.tscn", "res://Classes/Engineer/red.png", "res://Classes/Engineer/red_hand.png", "res://Classes/Mage/blue.png", "res://Classes/Mage/blue_hand.png", "res://Classes/Mage/class.tres", "res://Classes/Mage/podium.tscn", "res://Classes/Mage/yeen.png", "res://Classes/NewHero3/class.tres", "res://Classes/NewHero3/green.png", "res://Classes/NewHero3/green_hand.png", "res://Classes/NewHero3/podium.tscn", "res://Classes/NewHero4/class.tres", "res://Classes/NewHero4/podium.tscn", "res://Cards/ascension.tres", "res://Cards/assault.tres", "res://Cards/blowdart.tres", "res://Cards/bomb_launcher.tres", "res://Cards/fireball.tres", "res://Cards/flamethrower.tres", "res://Cards/gatling.tres", "res://Cards/glue_launcher.tres", "res://Cards/icicle.tres", "res://Cards/overclock_card.tres", "res://Cards/reactor.tres", "res://Cards/refrigerator.tres", "res://Cards/rocket_launcher.tres", "res://Cards/sniper.tres") +include_filter="" +exclude_filter="" +export_path="" +patches=PackedStringArray() +encryption_include_filters="" +encryption_exclude_filters="" +seed=0 +encrypt_pck=false +encrypt_directory=false +script_export_mode=2 + +[preset.2.options] + +custom_template/debug="" +custom_template/release="" +debug/export_console_wrapper=1 +binary_format/embed_pck=false +texture_format/s3tc_bptc=true +texture_format/etc2_astc=false +binary_format/architecture="x86_64" +ssh_remote_deploy/enabled=false +ssh_remote_deploy/host="user@host_ip" +ssh_remote_deploy/port="22" +ssh_remote_deploy/extra_args_ssh="" +ssh_remote_deploy/extra_args_scp="" +ssh_remote_deploy/run_script="#!/usr/bin/env bash +export DISPLAY=:0 +unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\" +\"{temp_dir}/{exe_name}\" {cmd_args}" +ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash +kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\") +rm -rf \"{temp_dir}\"" diff --git a/joytest.gd b/joytest.gd deleted file mode 100644 index 9635616..0000000 --- a/joytest.gd +++ /dev/null @@ -1,13 +0,0 @@ -extends Sprite2D - -var look_vector: Vector2 -var joystick_deadzone: float = 0.15 - - -func _process(delta: float) -> void: - look_vector.x = Input.get_joy_axis(0, JOY_AXIS_RIGHT_X) - look_vector.y = Input.get_joy_axis(0, JOY_AXIS_RIGHT_Y) - if look_vector.length_squared() <= joystick_deadzone: - look_vector = Vector2(0.0, 0.0) - position.x = look_vector.x * 190 - position.y = look_vector.y * 190 diff --git a/joytest.tscn b/joytest.tscn deleted file mode 100644 index c138dac..0000000 --- a/joytest.tscn +++ /dev/null @@ -1,16 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://qiwkf7xhnvlb"] - -[ext_resource type="Texture2D" uid="uid://b1urq78k0nx6j" path="res://Assets/Textures/366b37e2ed7b3a075b71dedae0440081.png" id="1_lvpuv"] -[ext_resource type="Script" path="res://joytest.gd" id="2_syday"] - -[node name="Node2D" type="Node2D"] - -[node name="Sprite2D" type="Sprite2D" parent="."] -texture = ExtResource("1_lvpuv") - -[node name="Sprite2D2" type="Sprite2D" parent="Sprite2D"] -scale = Vector2(0.15, 0.15) -texture = ExtResource("1_lvpuv") -script = ExtResource("2_syday") - -[node name="Camera2D" type="Camera2D" parent="."] diff --git a/ladder.gd b/ladder.gd new file mode 100644 index 0000000..1133667 --- /dev/null +++ b/ladder.gd @@ -0,0 +1,11 @@ +class_name Ladder extends Area3D + + +func _on_body_entered(body: Node3D) -> void: + if body is Hero: + body.movement.enable_climbing() + + +func _on_body_exited(body: Node3D) -> void: + if body is Hero: + body.movement.disable_climbing() diff --git a/ladder.gd.uid b/ladder.gd.uid new file mode 100644 index 0000000..1b92fb3 --- /dev/null +++ b/ladder.gd.uid @@ -0,0 +1 @@ +uid://7pd2edvb845w diff --git a/ladder.tscn b/ladder.tscn new file mode 100644 index 0000000..2699ce5 --- /dev/null +++ b/ladder.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=2 format=3 uid="uid://cx8f6tsipvmls"] + +[ext_resource type="Script" uid="uid://7pd2edvb845w" path="res://ladder.gd" id="1_cq4ai"] + +[node name="Ladder" type="Area3D"] +collision_mask = 2 +script = ExtResource("1_cq4ai") + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] +[connection signal="body_exited" from="." to="." method="_on_body_exited"] diff --git a/mat1.tres b/mat1.tres new file mode 100644 index 0000000..806cc30 --- /dev/null +++ b/mat1.tres @@ -0,0 +1,25 @@ +[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://bajfn46md8pyy"] + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_lxu40"] + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_pnl7j"] +seamless = true +seamless_blend_skirt = 0.247 +as_normal_map = true +noise = SubResource("FastNoiseLite_lxu40") + +[resource] +albedo_color = Color(0.347817, 0.347817, 0.347817, 1) +normal_enabled = true +normal_scale = 0.5 +normal_texture = SubResource("NoiseTexture2D_pnl7j") +rim = 0.35 +rim_tint = 1.0 +clearcoat = 0.0 +clearcoat_roughness = 1.0 +detail_blend_mode = 3 +uv1_scale = Vector3(200, 200, 200) +texture_filter = 0 +grow_amount = -5.818 +distance_fade_min_distance = 0.1 +distance_fade_max_distance = 1.0 diff --git a/mat13.tres b/mat13.tres new file mode 100644 index 0000000..88980ea --- /dev/null +++ b/mat13.tres @@ -0,0 +1,4 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://bjr7u7ixxokw6"] + +[resource] +albedo_color = Color(0.271402, 0.205872, 0.0389318, 1) diff --git a/mat2.tres b/mat2.tres new file mode 100644 index 0000000..3ab1e13 --- /dev/null +++ b/mat2.tres @@ -0,0 +1,16 @@ +[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://jdg8tb7g3d4o"] + +[sub_resource type="FastNoiseLite" id="FastNoiseLite_mrvo6"] + +[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_ah5r4"] +seamless = true +as_normal_map = true +noise = SubResource("FastNoiseLite_mrvo6") + +[resource] +albedo_color = Color(0.207653, 0.448041, 0.223187, 1) +normal_enabled = true +normal_scale = 3.91 +normal_texture = SubResource("NoiseTexture2D_ah5r4") +uv1_scale = Vector3(97.955, 97.955, 97.955) +texture_filter = 0 diff --git a/mod_menu.gd b/mod_menu.gd new file mode 100644 index 0000000..f81c8a5 --- /dev/null +++ b/mod_menu.gd @@ -0,0 +1,29 @@ +class_name ModMenu extends PanelContainer + +var entry_containers: Array[HBoxContainer] +var entry_names: Dictionary[String, Label] +var entry_boxes: Dictionary[String, CheckBox] + +func _ready() -> void: + for mod_name: String in Data.mods: + var container: HBoxContainer = HBoxContainer.new() + entry_containers.append(container) + $VBoxContainer/ScrollContainer/VBoxContainer.add_child(container) + var label: Label = Label.new() + label.text = mod_name + container.add_child(label) + var box: CheckBox = CheckBox.new() + box.button_pressed = false + container.add_child(box) + entry_names[mod_name] = label + entry_boxes[mod_name] = box + load_mod_list() + + +#TODO: make this remember preferences instead of always starting not loaded +#TODO: make this always load the base mod +func load_mod_list() -> void: + var mod_list: Dictionary[String, bool] = {} + for entry: String in entry_boxes: + mod_list[entry] = entry_boxes[entry].button_pressed + Data.load_mods(mod_list) diff --git a/mod_menu.gd.uid b/mod_menu.gd.uid new file mode 100644 index 0000000..382db94 --- /dev/null +++ b/mod_menu.gd.uid @@ -0,0 +1 @@ +uid://cxrm2naq75jo1 diff --git a/mouse_hover_material.tres b/mouse_hover_material.tres new file mode 100644 index 0000000..a430b1e --- /dev/null +++ b/mouse_hover_material.tres @@ -0,0 +1,9 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://dq30v3hgyi4da"] + +[resource] +resource_local_to_scene = true +cull_mode = 1 +shading_mode = 0 +albedo_color = Color(0.751102, 0.459619, 0.112211, 1) +grow = true +grow_amount = 0.15 diff --git a/new_standard_material_3d.tres b/new_standard_material_3d.tres new file mode 100644 index 0000000..815e417 --- /dev/null +++ b/new_standard_material_3d.tres @@ -0,0 +1,5 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://chxjofsr2lq1r"] + +[resource] +transparency = 1 +albedo_color = Color(0, 0.596078, 0.6, 0.482353) diff --git a/new_style_box_flat.tres b/new_style_box_flat.tres new file mode 100644 index 0000000..e9ce8e2 --- /dev/null +++ b/new_style_box_flat.tres @@ -0,0 +1,12 @@ +[gd_resource type="StyleBoxFlat" format=3 uid="uid://lpof3jdy7hr7"] + +[resource] +content_margin_left = 20.0 +content_margin_top = 20.0 +content_margin_right = 20.0 +content_margin_bottom = 20.0 +bg_color = Color(0.470588, 0.462745, 0.411765, 1) +border_width_top = 6 +border_width_bottom = 6 +border_color = Color(0.34902, 0.294118, 0.207843, 1) +shadow_color = Color(0, 0, 0, 0) diff --git a/new_theme.tres b/new_theme.tres deleted file mode 100644 index a36dcac..0000000 --- a/new_theme.tres +++ /dev/null @@ -1,40 +0,0 @@ -[gd_resource type="Theme" load_steps=5 format=3 uid="uid://b6a0ip4p72tgx"] - -[ext_resource type="StyleBox" uid="uid://d34i78f4dnq2k" path="res://hover_button_stylebox.tres" id="1_21vrg"] -[ext_resource type="StyleBox" uid="uid://de3eok2g4r2k" path="res://button_stylebox.tres" id="1_jlhwk"] - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_c2xpa"] -content_margin_left = 10.0 -bg_color = Color(0.505882, 0.678431, 0.901961, 1) -corner_radius_top_left = 10 -corner_radius_top_right = 10 -corner_radius_bottom_right = 10 -corner_radius_bottom_left = 10 - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_06uvd"] -content_margin_left = 20.0 -content_margin_top = 20.0 -content_margin_right = 20.0 -content_margin_bottom = 20.0 -bg_color = Color(0, 0, 0, 0.556863) -border_width_left = 4 -border_width_top = 4 -border_width_right = 4 -border_width_bottom = 4 -border_color = Color(1, 1, 1, 0.745098) - -[resource] -Button/colors/font_color = Color(1, 1, 1, 1) -Button/colors/font_focus_color = Color(0.113725, 0.113725, 0.113725, 1) -Button/colors/font_hover_color = Color(0.105882, 0.105882, 0.105882, 1) -Button/font_sizes/font_size = 24 -Button/styles/hover = ExtResource("1_21vrg") -Button/styles/normal = ExtResource("1_jlhwk") -HBoxContainer/constants/separation = 10 -Label/colors/font_color = Color(0.890196, 0.890196, 0.890196, 1) -Label/colors/font_outline_color = Color(1, 1, 1, 1) -Label/font_sizes/font_size = 32 -LineEdit/colors/font_color = Color(0.113725, 0.113725, 0.113725, 1) -LineEdit/colors/font_placeholder_color = Color(0.243137, 0.243137, 0.243137, 0.6) -LineEdit/styles/normal = SubResource("StyleBoxFlat_c2xpa") -PanelContainer/styles/panel = SubResource("StyleBoxFlat_06uvd") diff --git a/plan.glb b/plan.glb new file mode 100644 index 0000000..6e51c85 Binary files /dev/null and b/plan.glb differ diff --git a/plan.glb.import b/plan.glb.import new file mode 100644 index 0000000..4c9c742 --- /dev/null +++ b/plan.glb.import @@ -0,0 +1,44 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://bycbnjk8snesp" +path="res://.godot/imported/plan.glb-2c2d7728d6bf7c4f7aa3b51315acac6d.scn" + +[deps] + +source_file="res://plan.glb" +dest_files=["res://.godot/imported/plan.glb-2c2d7728d6bf7c4f7aa3b51315acac6d.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +nodes/use_node_type_suffixes=true +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +_subresources={ +"materials": { +"Material.001": { +"use_external/enabled": false, +"use_external/path": "uid://dq30v3hgyi4da" +} +} +} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/plan.tscn b/plan.tscn new file mode 100644 index 0000000..c1f257c --- /dev/null +++ b/plan.tscn @@ -0,0 +1,139 @@ +[gd_scene load_steps=14 format=4 uid="uid://dq8v5e11rvyi6"] + +[ext_resource type="Script" uid="uid://bj7oafusrrsk" path="res://card_item.gd" id="2_kobsv"] +[ext_resource type="Script" uid="uid://cl2mi4bnpatwk" path="res://Scripts/float_and_spin.gd" id="3_b2a1t"] +[ext_resource type="Texture2D" uid="uid://dds48gjgiyjp6" path="res://plan_plan_tex.png" id="4_75s6s"] +[ext_resource type="Material" uid="uid://dq30v3hgyi4da" path="res://mouse_hover_material.tres" id="5_2u312"] +[ext_resource type="PackedScene" uid="uid://dixtx38u4jhd7" path="res://Scenes/UI/card_hand.tscn" id="6_etati"] + +[sub_resource type="BoxShape3D" id="BoxShape3D_2u312"] +size = Vector3(0.436279, 1.47153, 1.05554) + +[sub_resource type="ViewportTexture" id="ViewportTexture_b2a1t"] +viewport_path = NodePath("SubViewport") + +[sub_resource type="Curve" id="Curve_kobsv"] +_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] +point_count = 3 + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_iuiy0"] +resource_name = "Material.001" +cull_mode = 2 +albedo_texture = ExtResource("4_75s6s") + +[sub_resource type="ArrayMesh" id="ArrayMesh_svx87"] +_surfaces = [{ +"aabb": AABB(3.17991, -5.35115, -1.46296, 1.99128, 10.0249, 8.3705), +"format": 34359742465, +"index_count": 1788, +"index_data": PackedByteArray("QgBDAEQAQgBEACEARAAjACEARABFACMARABDAEUARQAiACMAIgAhACMARQBDACIAQgAhAEYARgAhACIAJABDAEIAJABCAEYAJABGACUAJQBGACIAQwBHACIAJQAiAEcAQwBJAEcAJABJAEMAggAkACUAggBJACQAggAlAEgASAAlAEcASQAmAEcASABHACYASQAgACYAggAgAEkAHwCCAEgAHwAgAIIAHwBIACcAJwBIACYAIABKACYAJwAmAEoAIABLAEoAHwBLACAAgwAfACcAgwBLAB8AgwAnAIQAhAAnAEoASwApAEoAhABKACkASwAoACkAgwAoAEsATACDAIQATAAoAIMATACEAE0ATQCEACkAKACFACkATQApAIUAKACGAIUATACGACgAhwBMAE0AhwCGAEwAhwBNAIgAiABNAIUAhgBOAIUAiACFAE4AhgAdAE4AhwAdAIYAHgCHAIgAHgAdAIcAHgCIACoAKgCIAE4AHQArAE4AKgBOACsAHQBPACsAHgBPAB0AiQAeACoAiQBPAB4AiQAqAIoAigAqACsATwBQACsAigArAFAATwCLAFAAiQCLAE8AjACJAIoAjACLAIkAjACKAI0AjQCKAFAAiwBRAFAAjQBQAFEAiwAcAFEAjAAcAIsALACMAI0ALAAcAIwALACNABsAGwCNAFEAHAAtAFEAGwBRAC0AHABSAC0ALABSABwAjgAsABsAjgBSACwAjgAbAI8AjwAbAC0AUgCQAC0AjwAtAJAAUgCRAJAAjgCRAFIAUwCOAI8AUwCRAI4AUwCPAFQAVACPAJAAkQBVAJAAVACQAFUAkQAuAFUAUwAuAJEAkgBTAFQAkgAuAFMAkgBUAJMAkwBUAFUALgBXAFUAkwBVAFcALgCUAFcAkgCUAC4AlQCSAJMAlQCUAJIAlQCTAC8ALwCTAFcAlAAMAFcALwBXAAwAlABWAAwAlQBWAJQAGgCVAC8AGgBWAJUAGgAvAFgAWAAvAAwAVgCWAAwAWAAMAJYAVgCXAJYAGgCXAFYAmAAaAFgAmACXABoAmABYAJkAmQBYAJYAlwBZAJYAmQCWAFkAlwBaAFkAmABaAJcAmgCYAJkAmgBaAJgAmgCZADAAMACZAFkAWgBbAFkAMABZAFsAWgALAFsAmgALAFoAMQCaADAAMQALAJoAMQAwAFwAXAAwAFsACwAyAFsAXABbADIACwCbADIAMQCbAAsAnAAxAFwAnACbADEAnABcAJ0AnQBcADIAmwCeADIAnQAyAJ4AmwCfAJ4AnACfAJsAXgCcAJ0AXgCfAJwAXgCdAF0AXQCdAJ4AnwBfAJ4AXQCeAF8AnwAZAF8AXgAZAJ8AoABeAF0AoAAZAF4AoABdAKEAoQBdAF8AGQCiAF8AoQBfAKIAGQCjAKIAoACjABkACgCgAKEACgCjAKAACgChABcAFwChAKIAowAzAKIAFwCiADMAowBgADMACgBgAKMApAAKABcApABgAAoApAAXAKUApQAXADMAYACmADMApQAzAKYAYACnAKYApACnAGAAqACkAKUAqACnAKQAqAClAKkAqQClAKYApwBhAKYAqQCmAGEApwAYAGEAqAAYAKcANACoAKkANAAYAKgANACpADUANQCpAGEAGABiAGEANQBhAGIAGACqAGIANACqABgAqwA0ADUAqwCqADQAqwA1AKwArAA1AGIAqgCtAGIArABiAK0AqgCuAK0AqwCuAKoArwCrAKwArwCuAKsArwCsALAAsACsAK0ArgAWAK0AsACtABYArgA2ABYArwA2AK4AsQCvALAAsQA2AK8AsQCwALIAsgCwABYANgCzABYAsgAWALMANgC0ALMAsQC0ADYACQCxALIACQC0ALEACQCyADcANwCyALMAtABkALMANwCzAGQAtABjAGQACQBjALQAtQAJADcAtQBjAAkAtQA3ALYAtgA3AGQAYwC3AGQAtgBkALcAYwC4ALcAtQC4AGMAZgC1ALYAZgC4ALUAZgC2ADkAOQC2ALcAuAA4ALcAOQC3ADgAuABlADgAZgBlALgAuQBmADkAuQBlAGYAuQA5ALoAugA5ADgAZQC7ADgAugA4ALsAZQC8ALsAuQC8AGUAaAC5ALoAaAC8ALkAaAC6AGcAZwC6ALsAvAAIALsAZwC7AAgAvAAVAAgAaAAVALwAvQBoAGcAvQAVAGgAvQBnAL4AvgBnAAgAFQC/AAgAvgAIAL8AFQDAAL8AvQDAABUAOgC9AL4AOgDAAL0AOgC+AAcABwC+AL8AwABqAL8ABwC/AGoAwABpAGoAOgBpAMAAwQA6AAcAwQBpADoAwQAHAMIAwgAHAGoAaQBsAGoAwgBqAGwAaQDDAGwAwQDDAGkAxADBAMIAxADDAMEAxADCAGsAawDCAGwAwwBtAGwAawBsAG0AwwAUAG0AxAAUAMMABQDEAGsABQAUAMQABQBrAG4AbgBrAG0AFABvAG0AbgBtAG8AFADFAG8ABQDFABQAxgAFAG4AxgDFAAUAxgBuAMcAxwBuAG8AxQDIAG8AxwBvAMgAxQDJAMgAxgDJAMUAygDGAMcAygDJAMYAygDHAHAAcADHAMgAyQAGAMgAcADIAAYAyQA7AAYAygA7AMkAywDKAHAAywA7AMoAywBwAMwAzABwAAYAOwDNAAYAzAAGAM0AOwDOAM0AywDOADsAPADLAMwAPADOAMsAPADMABMAEwDMAM0AzgByAM0AEwDNAHIAzgBxAHIAPABxAM4AzwA8ABMAzwBxADwAzwATANAA0AATAHIAcQDRAHIA0AByANEAcQDSANEAzwDSAHEA0wDPANAA0wDSAM8A0wDQAHMAcwDQANEA0gA9ANEAcwDRAD0A0gB0AD0A0wB0ANIAdQDTAHMAdQB0ANMAdQBzAHYAdgBzAD0AdADUAD0AdgA9ANQAdADVANQAdQDVAHQABAB1AHYABADVAHUABAB2AD4APgB2ANQA1QA/ANQAPgDUAD8A1QASAD8ABAASANUAeAAEAD4AeAASAAQAeAA+AHcAdwA+AD8AEgDWAD8AdwA/ANYAEgDXANYAeADXABIA2AB4AHcA2ADXAHgA2AB3ANkA2QB3ANYA1wB5ANYA2QDWAHkA1wB6AHkA2AB6ANcA2gDYANkA2gB6ANgA2gDZANsA2wDZAHkAegADAHkA2wB5AAMAegARAAMA2gARAHoAAgDaANsAAgARANoAAgDbANwA3ADbAAMAEQDdAAMA3AADAN0AEQDeAN0AAgDeABEA3wACANwA3wDeAAIA3wDcAHwAfADcAN0A3gBBAN0AfADdAEEA3gB7AEEA3wB7AN4A4ADfAHwA4AB7AN8A4AB8AEAAQAB8AEEAewDhAEEAQABBAOEAewDiAOEA4ADiAHsA4wDgAEAA4wDiAOAA4wBAAOQA5ABAAOEA4gDlAOEA5ADhAOUA4gDmAOUA4wDmAOIA5wDjAOQA5wDmAOMA5wDkAOgA6ADkAOUA5gDpAOUA6ADlAOkA5gDqAOkA5wDqAOYAfQDnAOgAfQDqAOcAfQDoAH4AfgDoAOkA6gDrAOkAfgDpAOsA6gDsAOsAfQDsAOoA7QB9AH4A7QDsAH0A7QB+AO4A7gB+AOsA7ADvAOsA7gDrAO8A7ADwAO8A7QDwAOwA8QDtAO4A8QDwAO0A8QDuAPIA8gDuAO8A8ADzAO8A8gDvAPMA8AD0APMA8QD0APAA9QDxAPIA9QD0APEA9QDyAPYA9gDyAPMA9AD3APMA9gDzAPcA9AD4APcA9QD4APQA+QD1APYA+QD4APUA+QD2APoA+gD2APcA+AD7APcA+gD3APsA+AD8APsA+QD8APgA/QD5APoA/QD8APkA/QD6AP4A/gD6APsA/AD/APsA/gD7AP8A/AAAAf8A/QAAAfwAAQH9AP4AAQEAAf0AAQH+AAIBAgH+AP8AAAEDAf8AAgH/AAMBAAEEAQMBAQEEAQABBQEBAQIBBQEEAQEBBQECAQYBBgECAQMBBAEHAQMBBgEDAQcBBAEIAQcBBQEIAQQBCQEFAQYBCQEIAQUBCQEGAQoBCgEGAQcBCAELAQcBCgEHAQsBCAEMAQsBCQEMAQgBDQEJAQoBDQEMAQkBDQEKAQ4BDgEKAQsBDAEPAQsBDgELAQ8BDAEQAQ8BDQEQAQwBEQENAQ4BEQEQAQ0BEQEOARIBEgEOAQ8BEAETAQ8BEgEPARMBEAF/ABMBEQF/ABABFAERARIBFAF/ABEBFAESARUBFQESARMBfwAWARMBFQETARYBfwAXARYBFAEXAX8AGAEUARUBGAEXARQBGAEVARkBGQEVARYBFwEaARYBGQEWARoBFwEbARoBGAEbARcBHAEYARkBHAEbARgBHAEZAR0BHQEZARoBGwEeARoBHQEaAR4BGwEfAR4BHAEfARsBIAEcAR0BIAEfARwBIAEdASEBIQEdAR4BHwEiAR4BIQEeASIBHwEjASIBIAEjAR8BJAEgASEBJAEjASABJAEhASUBJQEhASIBIwEmASIBJQEiASYBIwEnASYBJAEnASMBKAEkASUBKAEnASQBKAElASkBKQElASYBJwEqASYBKQEmASoBJwErASoBKAErAScBDgAoASkBDgArASgBDgApAQAAAAApASoBKwEPACoBAAAqAQ8AKwEBAA8ADgABACsBAQAQAA8AgAAOAAAAgAABAA4AAQCBABAAgACBAAEADQAPABAADQAAAA8AgQANABAAgAAAAA0AgQCAAA0A"), +"lods": [0.114267, PackedByteArray("QgBDAEQAQgBEACEARAAjACEARABFACMARABDAEUARQAiACMAIgAhACMARQBDACIAQgAhAEYARgAhACIAJABDAEIAJABCAEYAJQBGACIAJABGACUAJQAiAEcAQwBHACIASAAlAEcAJAAlAEgAQwBJAEcAJABJAEMASQAmAEcASABHACYAJAAgAEkASQAgACYAHwAkAEgAHwAgACQAJwBIACYAHwBIACcAIABKACYAJwAmAEoAHwBLACAAIABLAEoATAAfACcAHwAoAEsATAAoAB8ASwApAEoAJwBKACkASwAoACkATAAnAE0ATQAnACkATAAdACgAKAAdACkATABNACoAKgBNACkAKgApAE4AHQBOACkAHQArAE4AKgBOACsAHgAdAEwAHgBMACoAHgBPAB0AHQBPACsALAAeACoAHgAcAE8ALAAcAB4ATwBQACsAKgArAFAATwAcAFAAGwAqAFAALAAqABsAHABRAFAAGwBQAFEALABSABwAHAAtAFEAGwBRAC0AHABSAC0ALAAuAFIAUgAuAC0AUwAsABsAUwAuACwAVAAbAC0AUwAbAFQALgBVAC0AVAAtAFUAUwBUAC8ALwBUAFUAUwBWAC4ALgBXAFUALwBVAFcALgBWAFcAGgBTAC8AGgBWAFMALwBXAAwAVgAMAFcAWAAvAAwAGgAvAFgAVgBZAAwAWAAMAFkAGgBaAFYAVgBaAFkAGgBYADAAMABYAFkAMQBaABoAMQAaADAAWgBbAFkAMABZAFsAWgALAFsAMQALAFoAXAAwAFsAMQAwAFwACwAyAFsAXABbADIAMQAZAAsACwAZADIAMQBcAF0AXQBcADIAXgAxAF0AXgAZADEAXQAyAF8AGQBfADIAXgBdABcAFwBdAF8AGQAzAF8AFwBfADMAXgBgABkAGQBgADMACgBeABcACgBgAF4ACgAYAGAAYAAYADMANAAKABcANAAYAAoANAAXADUANQAXADMAGABhADMANQAzAGEAGABiAGEANQBhAGIANAA2ABgAGAA2AGIACQA0ADUACQA2ADQANwA1AGIACQA1ADcANgAWAGIANwBiABYANgBjABYACQBjADYANwAWAGQAYwBkABYACQA3ADkAOQA3AGQACQBlAGMAYwBlAGQAZgAJADkAZgBlAAkAOQBkADgAZQA4AGQAZgA5AGcAZwA5ADgAZgAVAGUAZQAVADgAaABmAGcAaAAVAGYAZwA4AAgAFQAIADgAaABnAAcABwBnAAgAaABpABUAFQBpAAgAOgBoAAcAOgBpAGgABwAIAGoAaQBqAAgAOgAHAGsAawAHAGoAOgAUAGkAaQBsAGoAawBqAGwAaQAUAGwABQA6AGsABQAUADoAawBsAG0AFABtAGwAbgBrAG0ABQBrAG4AFABvAG0AbgBtAG8ABQA7ABQAFAA7AG8ABQBuAHAAcABuAG8APAA7AAUAPAAFAHAAOwAGAG8AcABvAAYAOwBxAAYAPABxADsAEwBwAAYAPABwABMAcQByAAYAEwAGAHIAPAATAHMAcwATAHIAcwByAD0AcQA9AHIAPAB0AHEAcQB0AD0AdQB0ADwAdQA8AHMAdAA/AD0AdQASAHQAdAASAD8AdgBzAD0AdQBzAHYAdgA9AD8ABAB1AHYABAASAHUAPgB2AD8ABAB2AD4AdwA+AD8AeAAEAD4AeAASAAQAeAA+AHcAEgB5AD8AdwA/AHkAeAB6ABIAEgB6AHkAAgB4AHcAAgB6AHgAdwB5AAMAegADAHkAAgARAHoAegARAAMAEQB7AAMAAgB7ABEAfAB3AAMAAgB3AHwAewBBAAMAfAADAEEAAgB8AEAAQAB8AEEAfQACAEAAfQB7AAIAfgBAAEEAfQBAAH4AewB/AEEAfQB/AHsAfwAPAEEAfgBBAA8ADgB/AH0ADgB9AH4ADgABAH8AfwABAA8ADgB+AAAAAAB+AA8AgAABAA4AgAAOAAAAgACBAAEAAQAQAA8AAQCBABAADQAAAA8AgAAAAA0ADQAPABAAgQCAAA0AgQANABAA"), 0.293989, PackedByteArray("IQAiACMAIgAhACMAJAAiACEAJQAhACIAJAAhACUAJAAgACIAJQAiACYAIAAmACIAHwAkACUAHwAgACQAJwAlACYAHwAlACcAIAAoACYAHwAoACAAKAApACYAJwAmACkAHgAoAB8AHgAfACcAKAAdACkAHgAdACgAKgAnACkAHgAnACoAKgApAB0AKgAdACsAHgAcAB0AHQAcACsALAAeACoALAAcAB4AGwAqACsAGwArABwALAAqABsAGwAcAC0AHAAuAC0AGwAtAC4ALAAuABwALAAbAC8ALwAbAC4AGgAsAC8AGgAuACwALwAuAAwAGgAvAAwALgALAAwAGgALAC4AMAAaAAwAMAAMAAsAMQAaADAAMQALABoAMQAwAAsAMQALADIACwAZADIAMQAZAAsAFwAxADIAFwAyABkACgAZADEACgAxABcAFwAZADMAGQAYADMACgAYABkAFwAzABgANAAKABcANAAYAAoANQAXABgANAAXADUANQAYABYANAA2ABgAGAA2ABYACQA0ADUACQA2ADQANwA1ABYACQA1ADcANgA4ABYANwAWADgACQAVADYANgAVADgACQA3ADkAOQA3ADgAOgAVAAkAOgAJADkAFQAIADgAOQA4AAgAOgAUABUAFQAUAAgABwA5AAgAOgA5AAcABwAIABQABQA6AAcABQAUADoABQAHABQABQAUAAYAFAA7AAYABQA7ABQAEwAFAAYAPAA7AAUAPAAFABMAOwA9AAYAEwAGAD0APAASADsAOwASAD0ABAA8ABMABAASADwABAATAD4APgATAD0AEgA/AD0APgA9AD8AEgADAD8APgA/AAMABAARABIAEgARAAMAAgAEAD4AAgARAAQAQAA+AAMAAgA+AEAAEQBBAAMAQAADAEEAAgABABEAEQABAEEAAgBAAAAAAABAAEEADgACAAAADgABAAIAAABBAA8AAQAPAEEADQAOAAAADQABAA4ADQAAAA8AAQAQAA8ADQAPABAADQAQAAEA"), 2.16303, PackedByteArray("DQABAA4ADQAOAAAADgACAAAADgABAAIADQAAAA8ADQAPABAADQAQAAEAAQAQAA8AAAADAA8AAQAPAAMAAAACAAMAAgABABEAEQABAAMAAgAEAAMAAgARAAQAEgARAAMABAARABIABAASAAMABAAGABIABAATAAYABAAFABMAEwAFAAYABAASAAUAFAASAAYABQASABQABQAUAAYABQAHABQABwAIABQABQAUABUAFQAUAAgABQAJAAcABQAVAAkABwAJAAgAFgAVAAgACQAVABYACQAWAAgACQAXABYACQAWAAoACQAKABcACgAWABgAFwAYABYACgAYABkAFwAZABgACgAZABoACgAaABcAFwALABkAGgAZAAsAFwAaAAsAGgAMAAsAGgALAAwAGgAbAAwAGgAMABsAGwAMABwAGwAcAAwAGwAdABwAGwAcAB4AHgAcAB0AGwAeAB0AHgAfAB0AHgAdACAAHwAgAB0AHgAgAB8AHwAhACAAHwAgACEA"), 2.17544, PackedByteArray("AAABAAIAAAADAAEAAgABAAMAAAACAAMAAgAEAAMAAgADAAQABAAFAAYABQAEAAYABQAHAAYABwAIAAYABQAGAAgABwAJAAgABQAIAAkABQAJAAcACgALAAwACgAMAAsA")], +"name": "Material.001", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 300, +"vertex_data": PackedByteArray("KTlMQMIEqsA/E55ANQFOQOwMckDE3dNAX41gQL5EkcAwITS/0uZpQGSPlUAf4DW/MW1+QG2pksBx0I2/wqefQGJgk8AzTDQ+eT2kQGGZk0B6zs6+oaaUQD5/k8Ca2jw/XsWHQLaBk0C4coY/gWJyQJ9ok8D9bMk9FY6RQHNvk8BNmVK/BxSdQPiGk0BOuO4+A0yHQBV3k0AMH1Q/qINLQJU8q8A/P6dAlrxNQMMEqsBiEp5AyH1MQOwMckCi3tNASMhLQEadb0ChCt1ALjRrQIaFlUC1xDG/drCLQHCCk0BZsba/As+ZQDNqk8B821G/GAOiQGOMk0BlChE/6tqHQEmHk0AoboI/8UVpQI59k0D7nAe/fgGSQOB0k8CWF1m/cWeFQGt/k0COaJa/ymGdQPiJk0BQDPu+vsqOQAJ0k8AEuQo/WoOAQNVxk8D8QYa+y0qBQDB/k0C+ZCa/hJSXQLh2k0B2g9O+wEeOQLh2k8D+kt2+OvOOQLh2k8DXxX0+hh6IQIR4k0D/JgA/BCmIQNFFk8DTNRW+c42HQKGpk0B5okK+TJGTQFAzk0CoDxC/TtyHQIdkk8DHepI9LhyHQC9nk8AaP4o9FM2HQGlyk0DefAc/oSCPQAl9k8AYm44+/vuXQLh2k0BDkI0+bqeYQGlwk0AGFZU+mqWOQAh9k8Dot+u+DOCRQGlwk0CVITS/GzqBQHRsk8BC6IC+16l2QA6Dk0AHALm+63p4QMKIk0BXk6M+3aOIQCt6k8B+kRM/QfSYQANzk8DxnbI+gaaZQAprk8Cd69w9ju2fQI6Fk0DG5Qw+KiqVQMh/k0ARHIa/PGuBQDZ0k8AtN1e/HfyAQON5k8Bu1l2/W7VqQBqDk0D4DQW/C+FwQPltk8AUxM89wPVxQKKOk0DzMjg/Fj96QChok8BewRI/CG2UQFh5k8BfIjU/1IKjQPWdk0Asfcq+ojWZQG5lk8Bo60y/tZORQLh8k0BYCbK/oxB+QNOrksC0vZG/L4KLQAqAk0Cdnrq/ScVaQAFYksBvTQG/+A5cQNxyk0D/5so+lo+JQOtak8AQAdq98S2IQI2rk0A5hTC+GFaIQB4/k8DqhOu9YL6TQAM6k0DVMgi/F++IQNdck8CLO/69sfGDQFyXk0DqjTY+W1uJQNN7k8C/ooY+0rGEQASak0DJqzo+WLCQQGhwk0Afgww/8oKQQLh2k0D8pgQ/NP2SQLl2k8ByJ4O9rr6TQAl9k8DJ0IW96D+YQGhwk0AmCtu+MoKRQLh2k0AgDy2/WCiJQMBwk0Co2ki/AN2AQFF5k0DLDS2/Whd4QG6Ik0BPprO+/lqBQDtsk8ATIF0+z6aAQJpxk8AO+2g+jBJ3QGODk0DZgKk+JICHQPF8k0CKVUw/uv1/QG19k0AIQCA/i+KOQOR5k8A6vxI//DaXQLh6k0DgTD4/pOCWQHyAk0AREDc/Kr+dQI2Bk0AxSvY+bmeaQE9wk8C1k+I9aN2YQBVxk8BCNte+0iWYQM5rk8BxENK+YhmeQLCEk0AWGQC/wraUQDSFk0Dq3IK/nEOFQMd5k0CsYZq/ryR7QOV4k0DdNom/3ApnQHWMk0ChbMk9ZollQBuHk0C5w889cRxzQMaTk0CK8zI/yGV7QAVjk8D+gQ0/jjCHQNxwk8BL6Ew/GkaHQEprk8Ai30Q/VjGWQJd3k0AT9nQ/8GqWQLBxk0BKrnw/aqSeQIBuk8Bkq9c+dEmdQDl4k0AtBFg/Sq6iQE2Hk0BH0hQ/D2egQBFlk8CnWDk+gCWlQFqUk0BdIYA+F6WfQDVhk8AYma6+w7WcQICTk0B2m3S/I0+dQLiOk0CMi3m/6AyQQDR5k8BEg5W/3j+RQOeBk0BWZK6/Ss2HQCpxk8Ajfpq/FNCHQE92k8ARiZ6/k6lqQHu3kcDIFHO/Z2BrQDi6kcBu82u/DUl6QD4JlUCI1ZC/OFV7QHIBlUAk642/kI9dQLNuk0CO1cw+K49cQPKrkcCARCK/OspZQLBPlcCujIk9zUZYQK9PlcC3w4k9y/dSQEGNgUC1qZNAFgdNQJY8q8BkPqdAtEtNQEadb0DDCd1AzqyJQLh1k8AD7m8+chaSQLh2k8CStRY+4sGSQAh9k8AavyU+V2aaQGlwk0BcO5293KSZQLh2k0DPkZq9Uq+RQLh2k8CsP5G+tlqSQAh9k8Bkxpi+HzSJQIJ2k8DBdfO+ZyuJQM58k8CfzgG/EDGJQAt3k0DoxkC/h/yDQFtxk8DykNO+vI6DQDp3k8AN4+C+tFyAQK5qk8Bq8HC8FjZ/QPhvk8AouXS8qwt0QL6Fk0CflI68/Y51QAiLk0CqsYy8h26EQFdwk8CPM9Y+S+CDQOl1k8AdLeE+GY2AQACDk0A+wxo//teIQFF0k8D0xws/+HSPQCh3k0C44FQ/LF2PQAp9k0B92kw/75+UQGhxk8DA0/Q+RvaUQCx3k8CzpgE/H0mYQJhtk8AJDKs+oiyfQNOKk0CoEQo+x2aZQAVrk8DdShy++yaaQElwk8D0QSC+0qefQKeFk0B0aT++nueeQOmKk0BMcju+sYiVQFVtk8AFxCO/yiiWQKpyk8DFUCi/FqyaQLGCk0DCWky//QuaQAeIk0ABzke/NlmMQMVxk8DQmmy//4eMQFB3k8B6c3S/R6eNQHN8k0Bx8Ji/f3iNQP2Bk0AaBJW//K2GQJZzk8DJn26/KIqGQDx5k8AGkna/7gJ8QJF+k0A+54W/qsp6QB5zk8Bl0Ci/wIp5QMB4k8AyXy2/uIdwQFh6k0BFRFG/o8dxQPl/k0B4tUy/Po91QJNwk8Cqbdq+1B90QB92k8Cvi9++NQBzQNxsk8AsSim+6n9xQFNyk8BNVC2+6C9mQPGBk0C5TWG+MrBnQGeHk0C0Q12+gV51QNVkk8CXLK8+p/hzQAxqk8C4XLU+fIFpQCmMk0CBYto+V+dqQF2Rk0BWMtQ+eQuCQORkk8BjTTM/Jq+BQCJqk8AUaTo/6yJ/QMCLk0ChWHE/j9t/QP2Qk0DnPGo/frONQIJ1k8BREUM/J8iNQFd7k8BuG0s/u2CPQKh1k0AIsIU/E0yPQHx7k0D8qoE/rymaQAB0k8Dw5RY/8p2aQK55k8BcXR0/MdWcQOZ9k0C+jFE/OPmdQGtpk8CoG9A+MmakQAmZk0BXNns+oeSfQIZck8BJTZy966WgQBlhk8DkYqC9XHqlQISZk0AXlai9ErmkQBeek0BYf6S9ceqeQKFck8DKR6q+M5ycQOBfk8CzrRO/CEmdQIdkk8D8Uxe/02mhQGqVk0D3WjS//rygQBGak0CmtDC/Kt6UQHpsk8AEZ36/9VyVQGtxk8DqQYK/LBCYQDOGk0CtpJq/YZGXQCSLk0BFlpe/EbmPQAV0k8BA3pG/O9eLQKt2k0AkQru/cdSLQNB7k0A4N7e/HayGQIkTlEBjIrC/hweHQMsQlEC2kay/WGtmQN5QkcBvhFW/LF9lQBNJkcA4WVu/84liQHYckcDSikW/mTxhQJkSkcA6pkm/uBtfQJQ8kcDliDa/WcVhQI77lEDk7h6+ADdjQGLzlEAUUBW+yhBeQJiukcCkqSG/tkhcQAJYksBQVAG/8qtaQARjkUByc2M/YC9cQARjkUCMbGM/Y0dbQB5Fk8D7Cr2+9sNZQB1Fk8A4/by+cPZZQDArkEDIaZY/3nlbQDArkEBXZpY/vH9aQNwXlMAGumC+UPxYQNsXlMCBnmC+70BZQFzzjkDQGbs/XMRaQFzzjkBcFrs/a4tYQIi7jUDbyd8/2A5aQIi7jUBoxt8/uhRZQISHlsBVI7U+TZFXQIOHlsAYMbU+6tVXQLSDjED0PAJAWFlZQLSDjEA6OwJAOF9YQFi/l8DB8SM/y9tWQFe/l8Ci+CM/aCBXQOBLi0D5lBRA1qNYQOBLi0A/kxRAs6lXQCz3mMDXUW0/RiZWQCv3mMC4WG0/42pWQAwUikD+7CZAUO5XQAwUikBF6yZANPRWQAAvmsD2WJs/yHBVQP8umsBnXJs/ZrVVQDnciEADRTlA0zhXQDnciEBKQzlAsD5WQNRmm8ADCcA/RLtUQNNmm8BzDMA/3/9UQGSkh0AInUtATINWQGSkh0BPm0tAMIlVQKeenMAPueQ/xAVUQKaenMB/vOQ/X0pUQJFshkAP9V1AzM1VQJFshkBW811ArNNUQHzWncCMtARAQFBTQHvWncBFtgRA3pRTQLw0hUAUTXBATBhVQLw0hUBbS3BALB5UQE8On8CRDBdAwJpSQE4On8BKDhdAW99SQOn8g0CNUoFAyGJUQOn8g0CwUYFArGhTQCRGoMCYZClAQOVRQCNGoMBRZilA1ylSQBXFgkCQfopARK1TQBXFgkC0fYpAJbNSQPh9ocCdvDtAuC9RQPZ9ocBWvjtAXnRRQEGNgUCSqpNApf1RQMu1osCiFE5AOHpQQMq1osBbFk5A1r5QQG1VgECU1pxAREJSQG1VgEC41ZxAJEhRQJ/to8CobGBAuMRPQJ/to8BgbmBAUAlQQDM7fkCVAqZAvYxRQDM7fkC5AaZApJJQQHMlpcCtxHJAOA9PQHIlpcBlxnJA1lNPQIvLe0CZLq9ARNdQQIvLe0C9La9AHd1PQEhdpsBZjoJAsFlOQEZdpsA1j4JAT55OQONbeUCaWrhAvCFQQONbeUC+WbhAlidPQBuVp8BduotAKqRNQBqVp8A5u4tAz+hNQDvsdkCdhsFAPGxPQDvsdkC/hcFAHHJOQO/MqMBf5pRAsO5MQO/MqMA755RATjNNQJN8dECesspAvLZOQJN8dEDBscpA") +}] +blend_shape_mode = 0 + +[sub_resource type="ArrayMesh" id="ArrayMesh_kobsv"] +resource_name = "plan_Plane_002" +_surfaces = [{ +"aabb": AABB(3.17991, -5.35115, -1.46296, 1.99128, 10.0249, 8.3705), +"attribute_data": PackedByteArray("+v5/P5TKez8AAMAzlMp7P/r+fz+1Ryk/AACAM5eHJT/6/n8/MEcaP/r+fz9KjPg+AACAM2vGAz/6/n8/ggviPgAAgDMCC9M++v5/P/AJtT76/n8/HoiAPgAAADO4DTY+AAAAMyQMCT76/n8/tIp/P/r+fz+Uyns/AADAM5TKez8AAMAztIp/PwAAgDOXhyU/AACAMzRHGj/6/n8/qkYLPwAAgDMODPE+AACAMwIL0z4AAAAzdAmmPvr+fz8eiIA+AAAAM6qIjz4AAAAzQA9jPvr+fz+gDBg++v5/P/ATmj0AAAAzQCZ4PQAAADOAP4g8+v5/P7AhAD36/n8/AM3fvAAAADOg6Cu9+v5/P2D3r736/n8/8BOaPQAAAABQ9pG9AAAAAGD3r736/n8/wOpnvfr+fz/A6me9AAAAM6DoK736/n8/AM3fvAAAADOAkU+8AAAAM4CRT7z6/n8/sCEAPQAAADPgIQA9AAAAMxgUmj0AAAAzQBbWPfr+fz8UDAk++v5/P6gNNj76/n8/KA5FPgAAADM4DkU+AAAAMyiIgD76/n8/6AiXPvr+fz/oCJc+AAAAM3QJpj76/n8/8Am1PgAAgDOACsQ++v5/P3gKxD76/n8/ggviPgAAgDNrxgM/+v5/P6pGCz8AAIAz8MYSP/r+fz8wRxo/AACAMzRHGj/8/n8/RuUyPwAAgDPZBy0/+v5/P2D2kb0AAAAAUPaRvfr+fz9g96+9AAAAAGD3r736/n8/YPaRvQAAADOA6me9+v5/P6DoK70AAAAzgOpnvQAAADPAzN+8AAAAM8DM37z6/n8/ANoBO/r+fz8A2gE7AAAAM4A/iDwAAAAz4CEAPQAAADMAJDw9AAAAM0AmeD0AAAAzGBSaPfr+fz8YFtY9+v5/PxgW1j0AAAAzQBbWPQAAADMkDAk+AAAAM0gX9D36/n8/oAwYPgAAADM0DSc+AAAAMzQNJz4AAAAzuA02Pvr+fz8oDkU++v5/PzgPYz76/n8/OA9jPgAAADNAD2M+AAAAMyiIgD4AAAAzqoiPPgAAADPwCJc+AAAAM/gJtT4AAAAz+Am1PgAAgDOACsQ++v5/P3gKxD76/n8//ArTPvr+fz/8CtM+AACAM4gL4j4AAIAziAviPvr+fz8GDPE+AACAM8qL6T4AAIAzDgzxPvr+fz9KjPg+AACAM1CM+D76/n8/aMYDPwAAgDOuRgs/AACAM65GCz/6/n8/7MYSPwAAgDPwxhI/+v5/Pw6HFj/6/n8/DocWP/r+fz9QBx4/+v5/P1AHHj8AAIAzdschPwAAgDN2xyE/AACAM9kHLT/6/n8/0CkvP/r+fz9cCDw/+v5/P1wIPD8AAMAzrYlhP/r+fz+0in8/AADAM7SKfz/6/n8/oOgrvfr+fz8Akk+8+v5/PwCST7wAAAAzANsBOwAAADMA2wE7+v5/P4A/iDz6/n8/gD+IPPr+fz/gIzw9+v5/P+AjPD0AAAAzACQ8Pfr+fz/QJXg9+v5/P9AleD36/n8/CBW4Pfr+fz8IFbg9AAAAMzAVuD0AAAAzMBW4Pfr+fz8gF/Q9+v5/PyAX9D0AAAAzSBf0Pfr+fz8UDAk+AAAAM6gMGD4AAAAzqAwYPvr+fz8oDSc++v5/PygNJz76/n8/qA02PgAAADM4DkU++v5/P7AOVD76/n8/sA5UPgAAADO8DlQ+AAAAM7wOVD76/n8/uA9yPvr+fz+4D3I+AAAAM8gPcj4AAAAzyA9yPvr+fz9gCIg++v5/P2AIiD4AAAAzagiIPgAAADNqCIg++v5/P6aIjz76/n8/poiPPgAAADPwCJc++v5/PyqJnj76/n8/KomePgAAADMyiZ4+AAAAMzKJnj76/n8/bAmmPvr+fz9sCaY++v5/P7CJrT76/n8/sImtPgAAADO2ia0+AAAAM7aJrT76/n8/Noq8Pvr+fz82irw+AACAMzqKvD4AAIAzOoq8Pvr+fz+8iss++v5/P7yKyz4AAIAzwIrLPgAAgDPAiss++v5/Pz6L2j76/n8/PovaPgAAgDNGi9o+AACAM0aL2j76/n8/xIvpPvr+fz/Ei+k+AACAM8qL6T76/n8/BgzxPgAAgDNQjPg++v5/P0YGAD/6/n8/RgYAPwAAgDNKBgA/AACAM0oGAD/6/n8/aMYDP/r+fz+Ihgc/+v5/P4iGBz8AAIAzjYYHPwAAgDONhgc/+v5/P8wGDz/6/n8/zAYPPwAAgDPPBg8/AACAM88GDz/6/n8/7MYSPwAAgDMShxY/AACAMxKHFj8AAIAzVAcePwAAgDNUBx4/+v5/P3LHIT/6/n8/cschP/r+fz+ThyU/+v5/P5OHJT/6/n8/tUcpPwAAgDO4Ryk/AACAM7hHKT/5/n8/0SkvP/r+fz9G5TI/AACAM/rHMD8AAIAz+scwP/v+fz9YvzU/+/5/P1i/NT8AAIAzHYg0PwAAgDMdiDQ/+v5/PzpIOD/6/n8/Okg4PwAAgDM+SDg/AACAMz5IOD8AAIAzXgg8PwAAgDNeCDw/+v5/P3zIPz/6/n8/fMg/PwAAgDOByD8/AACAM4HIPz/6/n8/nohDP/r+fz+eiEM/AACAM6KIQz8AAIAzoohDP/r+fz/ASEc/+v5/P8BIRz8AAIAzxEhHPwAAgDPESEc/+v5/P+EISz/6/n8/4QhLPwAAwDPlCEs/AADAM+UISz/6/n8/A8lOP/r+fz8DyU4/AADAMwbJTj8AAMAzBslOP/r+fz8kiVI/+v5/PySJUj8AAMAzKIlSPwAAwDMoiVI/+v5/P0ZJVj/6/n8/RklWPwAAwDNISVY/AADAM0hJVj/6/n8/ZwlaP/r+fz9nCVo/AADAM2oJWj8AAMAzaglaP/r+fz+IyV0/+v5/P4jJXT8AAMAzjMldPwAAwDOMyV0/+v5/P6mJYT/6/n8/qYlhPwAAwDOtiWE/+v5/P8pJZT/6/n8/ykllPwAAwDPMSWU/AADAM8xJZT/6/n8/7AlpP/r+fz/sCWk/AADAM+4JaT8AAMAz7glpP/r+fz8Oymw/+v5/Pw7KbD8AAMAzEcpsPwAAwDMRymw/+v5/Py6KcD/6/n8/LopwPwAAwDMxinA/AADAMzGKcD/6/n8/Ukp0P/r+fz9SSnQ/AADAM1NKdD8AAMAzU0p0P/r+fz9yCng/+v5/P3IKeD8AAMAzdQp4PwAAwDN1Cng/"), +"format": 34359742487, +"index_count": 1788, +"index_data": PackedByteArray("QgBDAEQAQgBEACEARAAkACEARABFACQARABDAEUARQAjACQAIwAhACQARQBDACMAQgAhAEYARgAhACMAJQBDAEIAJQBCAEYAJQBGACYAJgBGACMAQwBHACMAJgAjAEcAQwBJAEcAJQBJAEMAggAlACYAggBJACUAggAmAEgASAAmAEcASQAnAEcASABHACcASQAgACcAggAgAEkAHwCCAEgAHwAgAIIAHwBIACgAKABIACcAIABKACcAKAAnAEoAIABLAEoAHwBLACAAgwAfACgAgwBLAB8AgwAoAIQAhAAoAEoASwAqAEoAhABKACoASwApACoAgwApAEsATACDAIQATAApAIMATACEAE0ATQCEACoAKQCFACoATQAqAIUAKQCGAIUATACGACkAhwBMAE0AhwCGAEwAhwBNAIgAiABNAIUAhgBOAIUAiACFAE4AhgAdAE4AhwAdAIYAHgCHAIgAHgAdAIcAHgCIACsAKwCIAE4AHQAsAE4AKwBOACwAHQBPACwAHgBPAB0AiQAeACsAiQBPAB4AiQArAIoAigArACwATwBQACwAigAsAFAATwCLAFAAiQCLAE8AjACJAIoAjACLAIkAjACKAI0AjQCKAFAAiwBRAFAAjQBQAFEAiwAcAFEAjAAcAIsAIgCMAI0AIgAcAIwAIgCNABsAGwCNAFEAHAAtAFEAGwBRAC0AHABSAC0AIgBSABwAjgAiABsAjgBSACIAjgAbAI8AjwAbAC0AUgCQAC0AjwAtAJAAUgCRAJAAjgCRAFIAUwCOAI8AUwCRAI4AUwCPAFQAVACPAJAAkQBVAJAAVACQAFUAkQAuAFUAUwAuAJEAkgBTAFQAkgAuAFMAkgBUAJMAkwBUAFUALgBXAFUAkwBVAFcALgCUAFcAkgCUAC4AlQCSAJMAlQCUAJIAlQCTAC8ALwCTAFcAlAAMAFcALwBXAAwAlABWAAwAlQBWAJQAGgCVAC8AGgBWAJUAGgAvAFgAWAAvAAwAVgCWAAwAWAAMAJYAVgCXAJYAGgCXAFYAmAAaAFgAmACXABoAmABYAJkAmQBYAJYAlwBZAJYAmQCWAFkAlwBaAFkAmABaAJcAmgCYAJkAmgBaAJgAmgCZADAAMACZAFkAWgBbAFkAMABZAFsAWgALAFsAmgALAFoAMQCaADAAMQALAJoAMQAwAFwAXAAwAFsACwAyAFsAXABbADIACwCbADIAMQCbAAsAnAAxAFwAnACbADEAnABcAJ0AnQBcADIAmwCeADIAnQAyAJ4AmwCfAJ4AnACfAJsAXgCcAJ0AXgCfAJwAXgCdAF0AXQCdAJ4AnwBfAJ4AXQCeAF8AnwAZAF8AXgAZAJ8AoABeAF0AoAAZAF4AoABdAKEAoQBdAF8AGQCiAF8AoQBfAKIAGQCjAKIAoACjABkACgCgAKEACgCjAKAACgChABcAFwChAKIAowAzAKIAFwCiADMAowBgADMACgBgAKMApAAKABcApABgAAoApAAXAKUApQAXADMAYACmADMApQAzAKYAYACnAKYApACnAGAAqACkAKUAqACnAKQAqAClAKkAqQClAKYApwBhAKYAqQCmAGEApwAYAGEAqAAYAKcANACoAKkANAAYAKgANACpADUANQCpAGEAGABiAGEANQBhAGIAGACqAGIANACqABgAqwA0ADUAqwCqADQAqwA1AKwArAA1AGIAqgCtAGIArABiAK0AqgCuAK0AqwCuAKoArwCrAKwArwCuAKsArwCsALAAsACsAK0ArgAWAK0AsACtABYArgA2ABYArwA2AK4AsQCvALAAsQA2AK8AsQCwALIAsgCwABYANgCzABYAsgAWALMANgC0ALMAsQC0ADYACQCxALIACQC0ALEACQCyADcANwCyALMAtABkALMANwCzAGQAtABjAGQACQBjALQAtQAJADcAtQBjAAkAtQA3ALYAtgA3AGQAYwC3AGQAtgBkALcAYwC4ALcAtQC4AGMAZgC1ALYAZgC4ALUAZgC2ADkAOQC2ALcAuAA4ALcAOQC3ADgAuABlADgAZgBlALgAuQBmADkAuQBlAGYAuQA5ALoAugA5ADgAZQC7ADgAugA4ALsAZQC8ALsAuQC8AGUAaAC5ALoAaAC8ALkAaAC6AGcAZwC6ALsAvAAIALsAZwC7AAgAvAAVAAgAaAAVALwAvQBoAGcAvQAVAGgAvQBnAL4AvgBnAAgAFQC/AAgAvgAIAL8AFQDAAL8AvQDAABUAOgC9AL4AOgDAAL0AOgC+AAcABwC+AL8AwABqAL8ABwC/AGoAwABpAGoAOgBpAMAAwQA6AAcAwQBpADoAwQAHAMIAwgAHAGoAaQBsAGoAwgBqAGwAaQDDAGwAwQDDAGkAxADBAMIAxADDAMEAxADCAGsAawDCAGwAwwBtAGwAawBsAG0AwwAUAG0AxAAUAMMABQDEAGsABQAUAMQABQBrAG4AbgBrAG0AFABvAG0AbgBtAG8AFADFAG8ABQDFABQAxgAFAG4AxgDFAAUAxgBuAMcAxwBuAG8AxQDIAG8AxwBvAMgAxQDJAMgAxgDJAMUAygDGAMcAygDJAMYAygDHAHAAcADHAMgAyQAGAMgAcADIAAYAyQA7AAYAygA7AMkAywDKAHAAywA7AMoAywBwAMwAzABwAAYAOwDNAAYAzAAGAM0AOwDOAM0AywDOADsAPADLAMwAPADOAMsAPADMABMAEwDMAM0AzgByAM0AEwDNAHIAzgBxAHIAPABxAM4AzwA8ABMAzwBxADwAzwATANAA0AATAHIAcQDRAHIA0AByANEAcQDSANEAzwDSAHEA0wDPANAA0wDSAM8A0wDQAHMAcwDQANEA0gA9ANEAcwDRAD0A0gB0AD0A0wB0ANIAdQDTAHMAdQB0ANMAdQBzAHYAdgBzAD0AdADUAD0AdgA9ANQAdADVANQAdQDVAHQABAB1AHYABADVAHUABAB2AD4APgB2ANQA1QA/ANQAPgDUAD8A1QASAD8ABAASANUAeAAEAD4AeAASAAQAeAA+AHcAdwA+AD8AEgDWAD8AdwA/ANYAEgDXANYAeADXABIA2AB4AHcA2ADXAHgA2AB3ANkA2QB3ANYA1wB5ANYA2QDWAHkA1wB6AHkA2AB6ANcA2gDYANkA2gB6ANgA2gDZANsA2wDZAHkAegADAHkA2wB5AAMAegARAAMA2gARAHoAAgDaANsAAgARANoAAgDbANwA3ADbAAMAEQDdAAMA3AADAN0AEQDeAN0AAgDeABEA3wACANwA3wDeAAIA3wDcAHwAfADcAN0A3gBBAN0AfADdAEEA3gB7AEEA3wB7AN4A4ADfAHwA4AB7AN8A4AB8AEAAQAB8AEEAewDhAEEAQABBAOEAewDiAOEA4ADiAHsA4wDgAEAA4wDiAOAA4wBAAOQA5ABAAOEA4gDlAOEA5ADhAOUA4gDmAOUA4wDmAOIA5wDjAOQA5wDmAOMA5wDkAOgA6ADkAOUA5gDpAOUA6ADlAOkA5gDqAOkA5wDqAOYAfQDnAOgAfQDqAOcAfQDoAH4AfgDoAOkA6gDrAOkAfgDpAOsA6gDsAOsAfQDsAOoA7QB9AH4A7QDsAH0A7QB+AO4A7gB+AOsA7ADvAOsA7gDrAO8A7ADwAO8A7QDwAOwA8QDtAO4A8QDwAO0A8QDuAPIA8gDuAO8A8ADzAO8A8gDvAPMA8AD0APMA8QD0APAA9QDxAPIA9QD0APEA9QDyAPYA9gDyAPMA9AD3APMA9gDzAPcA9AD4APcA9QD4APQA+QD1APYA+QD4APUA+QD2APoA+gD2APcA+AD7APcA+gD3APsA+AD8APsA+QD8APgA/QD5APoA/QD8APkA/QD6AP4A/gD6APsA/AD/APsA/gD7AP8A/AAAAf8A/QAAAfwAAQH9AP4AAQEAAf0AAQH+AAIBAgH+AP8AAAEDAf8AAgH/AAMBAAEEAQMBAQEEAQABBQEBAQIBBQEEAQEBBQECAQYBBgECAQMBBAEHAQMBBgEDAQcBBAEIAQcBBQEIAQQBCQEFAQYBCQEIAQUBCQEGAQoBCgEGAQcBCAELAQcBCgEHAQsBCAEMAQsBCQEMAQgBDQEJAQoBDQEMAQkBDQEKAQ4BDgEKAQsBDAEPAQsBDgELAQ8BDAEQAQ8BDQEQAQwBEQENAQ4BEQEQAQ0BEQEOARIBEgEOAQ8BEAETAQ8BEgEPARMBEAF/ABMBEQF/ABABFAERARIBFAF/ABEBFAESARUBFQESARMBfwAWARMBFQETARYBfwAXARYBFAEXAX8AGAEUARUBGAEXARQBGAEVARkBGQEVARYBFwEaARYBGQEWARoBFwEbARoBGAEbARcBHAEYARkBHAEbARgBHAEZAR0BHQEZARoBGwEeARoBHQEaAR4BGwEfAR4BHAEfARsBIAEcAR0BIAEfARwBIAEdASEBIQEdAR4BHwEiAR4BIQEeASIBHwEjASIBIAEjAR8BJAEgASEBJAEjASABJAEhASUBJQEhASIBIwEmASIBJQEiASYBIwEnASYBJAEnASMBKAEkASUBKAEnASQBKAElASkBKQElASYBJwEqASYBKQEmASoBJwErASoBKAErAScBDgAoASkBDgArASgBDgApAQAAAAApASoBKwEPACoBAAAqAQ8AKwEBAA8ADgABACsBAQAQAA8AgAAOAAAAgAABAA4AAQCBABAAgACBAAEADQAPABAADQAAAA8AgQANABAAgAAAAA0AgQCAAA0A"), +"lods": [0.114267, PackedByteArray("QgBDAEQAQgBEACEARAAkACEARABFACQARABDAEUARQAjACQAIwAhACQARQBDACMAQgAhAEYARgAhACMAJQBDAEIAJQBCAEYAJgBGACMAJQBGACYAJgAjAEcAQwBHACMASAAmAEcAJQAmAEgAQwBJAEcAJQBJAEMASQAnAEcASABHACcAJQAgAEkASQAgACcAHwAlAEgAHwAgACUAKABIACcAHwBIACgAIABKACcAKAAnAEoAHwBLACAAIABLAEoATAAfACgAHwApAEsATAApAB8ASwAqAEoAKABKACoASwApACoATAAoAE0ATQAoACoATAAdACkAKQAdACoATABNACsAKwBNACoAKwAqAE4AHQBOACoAHQAsAE4AKwBOACwAHgAdAEwAHgBMACsAHgBPAB0AHQBPACwAIgAeACsAHgAcAE8AIgAcAB4ATwBQACwAKwAsAFAATwAcAFAAGwArAFAAIgArABsAHABRAFAAGwBQAFEAIgBSABwAHAAtAFEAGwBRAC0AHABSAC0AIgAuAFIAUgAuAC0AUwAiABsAUwAuACIAVAAbAC0AUwAbAFQALgBVAC0AVAAtAFUAUwBUAC8ALwBUAFUAUwBWAC4ALgBXAFUALwBVAFcALgBWAFcAGgBTAC8AGgBWAFMALwBXAAwAVgAMAFcAWAAvAAwAGgAvAFgAVgBZAAwAWAAMAFkAGgBaAFYAVgBaAFkAGgBYADAAMABYAFkAMQBaABoAMQAaADAAWgBbAFkAMABZAFsAWgALAFsAMQALAFoAXAAwAFsAMQAwAFwACwAyAFsAXABbADIAMQAZAAsACwAZADIAMQBcAF0AXQBcADIAXgAxAF0AXgAZADEAXQAyAF8AGQBfADIAXgBdABcAFwBdAF8AGQAzAF8AFwBfADMAXgBgABkAGQBgADMACgBeABcACgBgAF4ACgAYAGAAYAAYADMANAAKABcANAAYAAoANAAXADUANQAXADMAGABhADMANQAzAGEAGABiAGEANQBhAGIANAA2ABgAGAA2AGIACQA0ADUACQA2ADQANwA1AGIACQA1ADcANgAWAGIANwBiABYANgBjABYACQBjADYANwAWAGQAYwBkABYACQA3ADkAOQA3AGQACQBlAGMAYwBlAGQAZgAJADkAZgBlAAkAOQBkADgAZQA4AGQAZgA5AGcAZwA5ADgAZgAVAGUAZQAVADgAaABmAGcAaAAVAGYAZwA4AAgAFQAIADgAaABnAAcABwBnAAgAaABpABUAFQBpAAgAOgBoAAcAOgBpAGgABwAIAGoAaQBqAAgAOgAHAGsAawAHAGoAOgAUAGkAaQBsAGoAawBqAGwAaQAUAGwABQA6AGsABQAUADoAawBsAG0AFABtAGwAbgBrAG0ABQBrAG4AFABvAG0AbgBtAG8ABQA7ABQAFAA7AG8ABQBuAHAAcABuAG8APAA7AAUAPAAFAHAAOwAGAG8AcABvAAYAOwBxAAYAPABxADsAEwBwAAYAPABwABMAcQByAAYAEwAGAHIAPAATAHMAcwATAHIAcwByAD0AcQA9AHIAPAB0AHEAcQB0AD0AdQB0ADwAdQA8AHMAdAA/AD0AdQASAHQAdAASAD8AdgBzAD0AdQBzAHYAdgA9AD8ABAB1AHYABAASAHUAPgB2AD8ABAB2AD4AdwA+AD8AeAAEAD4AeAASAAQAeAA+AHcAEgB5AD8AdwA/AHkAeAB6ABIAEgB6AHkAAgB4AHcAAgB6AHgAdwB5AAMAegADAHkAAgARAHoAegARAAMAEQB7AAMAAgB7ABEAfAB3AAMAAgB3AHwAewBBAAMAfAADAEEAAgB8AEAAQAB8AEEAfQACAEAAfQB7AAIAfgBAAEEAfQBAAH4AewB/AEEAfQB/AHsAfwAPAEEAfgBBAA8ADgB/AH0ADgB9AH4ADgABAH8AfwABAA8ADgB+AAAAAAB+AA8AgAABAA4AgAAOAAAAgACBAAEAAQAQAA8AAQCBABAADQAAAA8AgAAAAA0ADQAPABAAgQCAAA0AgQANABAA"), 0.293989, PackedByteArray("IQAjACQAIwAhACQAJQAjACEAJgAhACMAJQAhACYAJQAgACMAJgAjACcAIAAnACMAHwAlACYAHwAgACUAKAAmACcAHwAmACgAIAApACcAHwApACAAKQAqACcAKAAnACoAHgApAB8AHgAfACgAKQAdACoAHgAdACkAKwAoACoAHgAoACsAKwAqAB0AKwAdACwAHgAcAB0AHQAcACwAIgAeACsAIgAcAB4AGwArACwAGwAsABwAIgArABsAGwAcAC0AHAAuAC0AGwAtAC4AIgAuABwAIgAbAC8ALwAbAC4AGgAiAC8AGgAuACIALwAuAAwAGgAvAAwALgALAAwAGgALAC4AMAAaAAwAMAAMAAsAMQAaADAAMQALABoAMQAwAAsAMQALADIACwAZADIAMQAZAAsAFwAxADIAFwAyABkACgAZADEACgAxABcAFwAZADMAGQAYADMACgAYABkAFwAzABgANAAKABcANAAYAAoANQAXABgANAAXADUANQAYABYANAA2ABgAGAA2ABYACQA0ADUACQA2ADQANwA1ABYACQA1ADcANgA4ABYANwAWADgACQAVADYANgAVADgACQA3ADkAOQA3ADgAOgAVAAkAOgAJADkAFQAIADgAOQA4AAgAOgAUABUAFQAUAAgABwA5AAgAOgA5AAcABwAIABQABQA6AAcABQAUADoABQAHABQABQAUAAYAFAA7AAYABQA7ABQAEwAFAAYAPAA7AAUAPAAFABMAOwA9AAYAEwAGAD0APAASADsAOwASAD0ABAA8ABMABAASADwABAATAD4APgATAD0AEgA/AD0APgA9AD8AEgADAD8APgA/AAMABAARABIAEgARAAMAAgAEAD4AAgARAAQAQAA+AAMAAgA+AEAAEQBBAAMAQAADAEEAAgABABEAEQABAEEAAgBAAAAAAABAAEEADgACAAAADgABAAIAAABBAA8AAQAPAEEADQAOAAAADQABAA4ADQAAAA8AAQAQAA8ADQAPABAADQAQAAEA"), 2.16303, PackedByteArray("DQABAA4ADQAOAAAADgACAAAADgABAAIADQAAAA8ADQAPABAADQAQAAEAAQAQAA8AAAADAA8AAQAPAAMAAAACAAMAAgABABEAEQABAAMAAgAEAAMAAgARAAQAEgARAAMABAARABIABAASAAMABAAGABIABAATAAYABAAFABMAEwAFAAYABAASAAUAFAASAAYABQASABQABQAUAAYABQAHABQABwAIABQABQAUABUAFQAUAAgABQAJAAcABQAVAAkABwAJAAgAFgAVAAgACQAVABYACQAWAAgACQAXABYACQAWAAoACQAKABcACgAWABgAFwAYABYACgAYABkAFwAZABgACgAZABoACgAaABcAFwALABkAGgAZAAsAFwAaAAsAGgAMAAsAGgALAAwAGgAbAAwAGgAMABsAGwAMABwAGwAcAAwAGwAdABwAGwAcAB4AHgAcAB0AGwAeAB0AHgAfAB0AHgAdACAAHwAgAB0AHgAgAB8AHwAhACAAHwAgACEA"), 2.17544, PackedByteArray("AAABAAIAAAADAAEAAgABAAMAAAACAAMAAgAEAAMAAgADAAQABAAFAAYABQAEAAYABQAHAAYABwAIAAYABQAGAAgABwAJAAgABQAIAAkABQAJAAcACgALAAwACgAMAAsA")], +"material": SubResource("StandardMaterial3D_iuiy0"), +"name": "Material.001", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 300, +"vertex_data": PackedByteArray("KTlMQMIEqsA/E55ANQFOQOwMckDE3dNAX41gQL5EkcAwITS/0uZpQGSPlUAf4DW/MW1+QG2pksBx0I2/wqefQGJgk8AzTDQ+eT2kQGGZk0B6zs6+oaaUQD5/k8Ca2jw/XsWHQLaBk0C4coY/gWJyQJ9ok8D9bMk9FY6RQHNvk8BNmVK/BxSdQPiGk0BOuO4+A0yHQBV3k0AMH1Q/qINLQJU8q8A/P6dAlrxNQMMEqsBiEp5AyH1MQOwMckCi3tNASMhLQEadb0ChCt1ALjRrQIaFlUC1xDG/drCLQHCCk0BZsba/As+ZQDNqk8B821G/GAOiQGOMk0BlChE/6tqHQEmHk0AoboI/8UVpQI59k0D7nAe/fgGSQOB0k8CWF1m/cWeFQGt/k0COaJa/ymGdQPiJk0BQDPu+vsqOQAJ0k8AEuQo/WoOAQNVxk8D8QYa+y0qBQDB/k0C+ZCa/hJSXQLh2k0B2g9O+wEeOQLh2k8D+kt2+OvOOQLh2k8DXxX0+hh6IQIR4k0D/JgA/BCmIQNFFk8DTNRW+GzqBQHRsk8BC6IC+c42HQKGpk0B5okK+TJGTQFAzk0CoDxC/TtyHQIdkk8DHepI9LhyHQC9nk8AaP4o9FM2HQGlyk0DefAc/oSCPQAl9k8AYm44+/vuXQLh2k0BDkI0+bqeYQGlwk0AGFZU+mqWOQAh9k8Dot+u+DOCRQGlwk0CVITS/16l2QA6Dk0AHALm+63p4QMKIk0BXk6M+3aOIQCt6k8B+kRM/QfSYQANzk8DxnbI+gaaZQAprk8Cd69w9ju2fQI6Fk0DG5Qw+KiqVQMh/k0ARHIa/PGuBQDZ0k8AtN1e/HfyAQON5k8Bu1l2/W7VqQBqDk0D4DQW/C+FwQPltk8AUxM89wPVxQKKOk0DzMjg/Fj96QChok8BewRI/CG2UQFh5k8BfIjU/1IKjQPWdk0Asfcq+ojWZQG5lk8Bo60y/tZORQLh8k0BYCbK/oxB+QNOrksC0vZG/L4KLQAqAk0Cdnrq/ScVaQAFYksBvTQG/+A5cQNxyk0D/5so+lo+JQOtak8AQAdq98S2IQI2rk0A5hTC+GFaIQB4/k8DqhOu9YL6TQAM6k0DVMgi/F++IQNdck8CLO/69sfGDQFyXk0DqjTY+W1uJQNN7k8C/ooY+0rGEQASak0DJqzo+WLCQQGhwk0Afgww/8oKQQLh2k0D8pgQ/NP2SQLl2k8ByJ4O9rr6TQAl9k8DJ0IW96D+YQGhwk0AmCtu+MoKRQLh2k0AgDy2/WCiJQMBwk0Co2ki/AN2AQFF5k0DLDS2/Whd4QG6Ik0BPprO+/lqBQDtsk8ATIF0+z6aAQJpxk8AO+2g+jBJ3QGODk0DZgKk+JICHQPF8k0CKVUw/uv1/QG19k0AIQCA/i+KOQOR5k8A6vxI//DaXQLh6k0DgTD4/pOCWQHyAk0AREDc/Kr+dQI2Bk0AxSvY+bmeaQE9wk8C1k+I9aN2YQBVxk8BCNte+0iWYQM5rk8BxENK+YhmeQLCEk0AWGQC/wraUQDSFk0Dq3IK/nEOFQMd5k0CsYZq/ryR7QOV4k0DdNom/3ApnQHWMk0ChbMk9ZollQBuHk0C5w889cRxzQMaTk0CK8zI/yGV7QAVjk8D+gQ0/jjCHQNxwk8BL6Ew/GkaHQEprk8Ai30Q/VjGWQJd3k0AT9nQ/8GqWQLBxk0BKrnw/aqSeQIBuk8Bkq9c+dEmdQDl4k0AtBFg/Sq6iQE2Hk0BH0hQ/D2egQBFlk8CnWDk+gCWlQFqUk0BdIYA+F6WfQDVhk8AYma6+w7WcQICTk0B2m3S/I0+dQLiOk0CMi3m/6AyQQDR5k8BEg5W/3j+RQOeBk0BWZK6/Ss2HQCpxk8Ajfpq/FNCHQE92k8ARiZ6/k6lqQHu3kcDIFHO/Z2BrQDi6kcBu82u/DUl6QD4JlUCI1ZC/OFV7QHIBlUAk642/kI9dQLNuk0CO1cw+K49cQPKrkcCARCK/OspZQLBPlcCujIk9zUZYQK9PlcC3w4k9y/dSQEGNgUC1qZNAFgdNQJY8q8BkPqdAtEtNQEadb0DDCd1AzqyJQLh1k8AD7m8+chaSQLh2k8CStRY+4sGSQAh9k8AavyU+V2aaQGlwk0BcO5293KSZQLh2k0DPkZq9Uq+RQLh2k8CsP5G+tlqSQAh9k8Bkxpi+HzSJQIJ2k8DBdfO+ZyuJQM58k8CfzgG/EDGJQAt3k0DoxkC/h/yDQFtxk8DykNO+vI6DQDp3k8AN4+C+tFyAQK5qk8Bq8HC8FjZ/QPhvk8AouXS8qwt0QL6Fk0CflI68/Y51QAiLk0CqsYy8h26EQFdwk8CPM9Y+S+CDQOl1k8AdLeE+GY2AQACDk0A+wxo//teIQFF0k8D0xws/+HSPQCh3k0C44FQ/LF2PQAp9k0B92kw/75+UQGhxk8DA0/Q+RvaUQCx3k8CzpgE/H0mYQJhtk8AJDKs+oiyfQNOKk0CoEQo+x2aZQAVrk8DdShy++yaaQElwk8D0QSC+0qefQKeFk0B0aT++nueeQOmKk0BMcju+sYiVQFVtk8AFxCO/yiiWQKpyk8DFUCi/FqyaQLGCk0DCWky//QuaQAeIk0ABzke/NlmMQMVxk8DQmmy//4eMQFB3k8B6c3S/R6eNQHN8k0Bx8Ji/f3iNQP2Bk0AaBJW//K2GQJZzk8DJn26/KIqGQDx5k8AGkna/7gJ8QJF+k0A+54W/qsp6QB5zk8Bl0Ci/wIp5QMB4k8AyXy2/uIdwQFh6k0BFRFG/o8dxQPl/k0B4tUy/Po91QJNwk8Cqbdq+1B90QB92k8Cvi9++NQBzQNxsk8AsSim+6n9xQFNyk8BNVC2+6C9mQPGBk0C5TWG+MrBnQGeHk0C0Q12+gV51QNVkk8CXLK8+p/hzQAxqk8C4XLU+fIFpQCmMk0CBYto+V+dqQF2Rk0BWMtQ+eQuCQORkk8BjTTM/Jq+BQCJqk8AUaTo/6yJ/QMCLk0ChWHE/j9t/QP2Qk0DnPGo/frONQIJ1k8BREUM/J8iNQFd7k8BuG0s/u2CPQKh1k0AIsIU/E0yPQHx7k0D8qoE/rymaQAB0k8Dw5RY/8p2aQK55k8BcXR0/MdWcQOZ9k0C+jFE/OPmdQGtpk8CoG9A+MmakQAmZk0BXNns+oeSfQIZck8BJTZy966WgQBlhk8DkYqC9XHqlQISZk0AXlai9ErmkQBeek0BYf6S9ceqeQKFck8DKR6q+M5ycQOBfk8CzrRO/CEmdQIdkk8D8Uxe/02mhQGqVk0D3WjS//rygQBGak0CmtDC/Kt6UQHpsk8AEZ36/9VyVQGtxk8DqQYK/LBCYQDOGk0CtpJq/YZGXQCSLk0BFlpe/EbmPQAV0k8BA3pG/O9eLQKt2k0AkQru/cdSLQNB7k0A4N7e/HayGQIkTlEBjIrC/hweHQMsQlEC2kay/WGtmQN5QkcBvhFW/LF9lQBNJkcA4WVu/84liQHYckcDSikW/mTxhQJkSkcA6pkm/uBtfQJQ8kcDliDa/WcVhQI77lEDk7h6+ADdjQGLzlEAUUBW+yhBeQJiukcCkqSG/tkhcQAJYksBQVAG/8qtaQARjkUByc2M/YC9cQARjkUCMbGM/Y0dbQB5Fk8D7Cr2+9sNZQB1Fk8A4/by+cPZZQDArkEDIaZY/3nlbQDArkEBXZpY/vH9aQNwXlMAGumC+UPxYQNsXlMCBnmC+70BZQFzzjkDQGbs/XMRaQFzzjkBcFrs/a4tYQIi7jUDbyd8/2A5aQIi7jUBoxt8/uhRZQISHlsBVI7U+TZFXQIOHlsAYMbU+6tVXQLSDjED0PAJAWFlZQLSDjEA6OwJAOF9YQFi/l8DB8SM/y9tWQFe/l8Ci+CM/aCBXQOBLi0D5lBRA1qNYQOBLi0A/kxRAs6lXQCz3mMDXUW0/RiZWQCv3mMC4WG0/42pWQAwUikD+7CZAUO5XQAwUikBF6yZANPRWQAAvmsD2WJs/yHBVQP8umsBnXJs/ZrVVQDnciEADRTlA0zhXQDnciEBKQzlAsD5WQNRmm8ADCcA/RLtUQNNmm8BzDMA/3/9UQGSkh0AInUtATINWQGSkh0BPm0tAMIlVQKeenMAPueQ/xAVUQKaenMB/vOQ/X0pUQJFshkAP9V1AzM1VQJFshkBW811ArNNUQHzWncCMtARAQFBTQHvWncBFtgRA3pRTQLw0hUAUTXBATBhVQLw0hUBbS3BALB5UQE8On8CRDBdAwJpSQE4On8BKDhdAW99SQOn8g0CNUoFAyGJUQOn8g0CwUYFArGhTQCRGoMCYZClAQOVRQCNGoMBRZilA1ylSQBXFgkCQfopARK1TQBXFgkC0fYpAJbNSQPh9ocCdvDtAuC9RQPZ9ocBWvjtAXnRRQEGNgUCSqpNApf1RQMu1osCiFE5AOHpQQMq1osBbFk5A1r5QQG1VgECU1pxAREJSQG1VgEC41ZxAJEhRQJ/to8CobGBAuMRPQJ/to8BgbmBAUAlQQDM7fkCVAqZAvYxRQDM7fkC5AaZApJJQQHMlpcCtxHJAOA9PQHIlpcBlxnJA1lNPQIvLe0CZLq9ARNdQQIvLe0C9La9AHd1PQEhdpsBZjoJAsFlOQEZdpsA1j4JAT55OQONbeUCaWrhAvCFQQONbeUC+WbhAlidPQBuVp8BduotAKqRNQBqVp8A5u4tAz+hNQDvsdkCdhsFAPGxPQDvsdkC/hcFAHHJOQO/MqMBf5pRAsO5MQO/MqMA755RATjNNQJN8dECesspAvLZOQJN8dEDBscpAfjpxO////79wu326NsZlnQi92UOWO8CcwjZazf///78XkxJG/DTUiwA9KzsVve+hJMg2xP///78Al1RK////P6R09bX///8/YcHNPORBpqG9XPxH6s04k/89qdJQMFSbG2qWsP///z/mUyRP////P97CHj2MN4Cc4UIgvf///z9uVMSj////PxGxLbnItQ2lX50oswqWN6NLyhYv////v7M8gdAwMi+bm77q9frKjoUGNnjF////v1jN9iX///+/uIs9wgCP7abOSla9r0X+pCM99wkwi1+jqjbDN////7+vnvO+j6clqvRRG76BScqnnGNxRGzQpZDGQKARq5eOqOW4A+fm2gaTdOE96v///78ftLVEojZznI0xLc7///+/bdSS7P///7+duuw4ozqGo5c7Q0X///8/hltNq////z97lchN////Pw5AJ9XZLa2borX4r////z/Qzqgg////v2/RbN7///+/2jNYxv///7/8wRTNIczbnH1qMk3///8/ObTlS////z9XPqc8ir5moZjAALr///8/5M/92P///79ZonVHlTFFk3syPCX///+/srSXva+6J6XaQRVD////P71QdLH///8/KFIDTP///z8ZOeMVpJd1pQ5JyL1jRE6kplGGSUjKqJcuznrj////v+Az0Bv///+/zzc/7f///7+aNsI62Ecf3Pc+EMH///+/db4QXp5N4JDQq3G8CbL7p3nGU6vmq7qaZ7/hsOite59NKezP////v9866Lj///8/HVynUf///z+zt3DIuslNow6WdK////8/9kTl73sru4tMQhg/usIyoATClUD///+/Jc5hyf///79oZUy/oF7Xqcw2bvz///+/OS6k2f///7+usam+irp8pirFUjXtR1ikCEhrSP///z8fRs+0////P4C9Ae8T0uaKf1JdsP///z9yihNG////P7GhRK////8/nz035JgtJZGvtZix////PwW+G0P///8/o8ZmOP///79gSLRFp8ZBnHbJccX///+/SF4fu1FZbajOM2nx////v2kva9n///+/ab4xxmXGdKAhPzC6////P1nFRdZYz3GXWsimK+JRIaZ3dJZH////P5HBBArDdAekbzwo6xUy2Yvel42y////P5+0g0r///8/Daj7r////z/htfOy////P5S8NkT///8/h74ouf///z+zxeA5////vyVTK7kKUI+mxsyjz////7/izFEc////v8Vmj7sjY52nrn1wOo3H1IBTO1oD////v3oxiCT///+/J5nqRUwx0JC9MyvZ////vyepLreJqWSmx7frufvDu5/tNBw6XUUC397CHj2MN4CcfTpyO////79wu326NsZlnVeqm05LOMyOFKrlo12iU5zjvF8aZ1nOq0M8kC3ktSOn2bMtTf///z+Kxfq7////vyxG1sTTO1ejKU+nRZvLdJr9yoY0////v9eCyzthOCaCkTqWA////7/ogkvIXITbpTKgWUSrLsqTcDC9Jf///78vv5w+kT/eoFE/Q0H///8/ezziu////z/8u4zE5sTLoRDIUyl0U5Sm51OxTP///z+cxJXYmNCWlr3A8BH4aaun2Ipxtv///z/jQIj2yDWPhS06PR01oqqn4aAOTv///z/VOnYvk7UupolBOcbHOZGgrELgQnrCZp5kwug8////v1TFbsD///+/fkUzwJRA2KIsUDtIicrPmG/KVDH///+/Nc38zP///787Uty6XE3ppihw50JTy+2IWMq6Ef///78RzdDt////v+NwacAxbiWnkow/QTE1goemNgoO////v3egKLznpuSowK85SJE1C5loNVkx////vzszWs3///+/GK5HuraylKZot/FFgjlNnF85DTj///+/Qr0dQ+M9gp6rPcI8////v4c6lsD///+/dromwJK/x6I8xoA1KkkWpD1JEkj///8/GUcytf///z84w/7McctRnErHWx3JX9emC2AaTf///z9aX3mw////PzPE0OOA0B6QqDyrCOKIZKJUiFpE////PyyJKLj///8/QUBE+AY4d4T3NxwkFajvphWnP03///8/KTs+3RMvIpS2OTcxlLVPpfI/GcfsOHmfm0EaQczBR5+cwcU+////vwnEzL7///+/QUSIwdo+PKLkRt1EvcXvnBhM0UdfyFCaZciCNP///7/fyuvJ////v+RN2bo/SqKl3FjzSd7LWZTCy2Io////vz7OpNb///+/FFrNuBFXTac9ZklGi81sjuDKxf7///+/YYYXyM2EyaYZNczj////v7+i9bXWnsilF6TOSckz6pQ5M2Us////v5+vCEQ0M5yb0zDiNv///78JNsE2GkNc3c88k8b///+/MreXuGG9T6F6vv87bzeBnhzDJzzcOkee/UE1vv///z+Fuq+5MsXrnZvDZzvaOLWdOTinOf///79rQsm9////P/O67LmAxbCdlsL4O1U3H52oOeE6////v7dCXb3///8/RLtHugLGe53hQiC9////P3C7fbo2xmWd3sIePYw3gJx9OnI7////v+FCIL3///8/cLt9ujbGZZ3ewh49jDeAnH06cjv///+/4UIgvf///z9wu326NsZlnd7CHj2MN4CcfTpyO////7/hQiC9////P3C7fbo2xmWd3sIePYw3gJx9OnI7////v+FCIL3///8/cLt9ujbGZZ3ewh49jDeAnH06cjv///+/4UIgvf///z9wu326NsZlnd7CHj2MN4CcfTpyO////7/hQiC9////P3C7fbo2xmWd3sIePYw3gJx9OnI7////v+FCIL3///8/cLt9ujbGZZ3ewh49jDeAnH06cjv///+/4UIgvf///z9wu326NsZlnd7CHj2MN4CcfTpyO////7/hQiC9////P3C7fbo2xmWd3sIePYw3gJx9OnI7////v+FCIL3///8/3sIePYw3gJx9OnI7////v+FCIL3///8/cLt9ujbGZZ3ewh49jDeAnH46cTv///+/4UIgvf///z9wu326NsZlnd7CHj2MN4CcfTpyO////7/hQiC9////P3C7fbo2xmWd3sIePYw3gJx9OnI7////v+FCIL3///8/cLt9ujbGZZ3ewh49jDeAnH06cjv///+/4UIgvf///z9wu326NsZlnd7CHj2MN4CcfjpxO////7/hQiC9////P3C7fbo2xmWd") +}] +blend_shape_mode = 0 +shadow_mesh = SubResource("ArrayMesh_svx87") + +[sub_resource type="ArrayMesh" id="ArrayMesh_lw2q8"] +_surfaces = [{ +"aabb": AABB(3.17991, -5.35115, -1.46296, 1.99128, 10.0249, 8.3705), +"format": 34359742465, +"index_count": 1788, +"index_data": PackedByteArray("QgBDAEQAQgBEACEARAAjACEARABFACMARABDAEUARQAiACMAIgAhACMARQBDACIAQgAhAEYARgAhACIAJABDAEIAJABCAEYAJABGACUAJQBGACIAQwBHACIAJQAiAEcAQwBJAEcAJABJAEMAggAkACUAggBJACQAggAlAEgASAAlAEcASQAmAEcASABHACYASQAgACYAggAgAEkAHwCCAEgAHwAgAIIAHwBIACcAJwBIACYAIABKACYAJwAmAEoAIABLAEoAHwBLACAAgwAfACcAgwBLAB8AgwAnAIQAhAAnAEoASwApAEoAhABKACkASwAoACkAgwAoAEsATACDAIQATAAoAIMATACEAE0ATQCEACkAKACFACkATQApAIUAKACGAIUATACGACgAhwBMAE0AhwCGAEwAhwBNAIgAiABNAIUAhgBOAIUAiACFAE4AhgAdAE4AhwAdAIYAHgCHAIgAHgAdAIcAHgCIACoAKgCIAE4AHQArAE4AKgBOACsAHQBPACsAHgBPAB0AiQAeACoAiQBPAB4AiQAqAIoAigAqACsATwBQACsAigArAFAATwCLAFAAiQCLAE8AjACJAIoAjACLAIkAjACKAI0AjQCKAFAAiwBRAFAAjQBQAFEAiwAcAFEAjAAcAIsALACMAI0ALAAcAIwALACNABsAGwCNAFEAHAAtAFEAGwBRAC0AHABSAC0ALABSABwAjgAsABsAjgBSACwAjgAbAI8AjwAbAC0AUgCQAC0AjwAtAJAAUgCRAJAAjgCRAFIAUwCOAI8AUwCRAI4AUwCPAFQAVACPAJAAkQBVAJAAVACQAFUAkQAuAFUAUwAuAJEAkgBTAFQAkgAuAFMAkgBUAJMAkwBUAFUALgBXAFUAkwBVAFcALgCUAFcAkgCUAC4AlQCSAJMAlQCUAJIAlQCTAC8ALwCTAFcAlAAMAFcALwBXAAwAlABWAAwAlQBWAJQAGgCVAC8AGgBWAJUAGgAvAFgAWAAvAAwAVgCWAAwAWAAMAJYAVgCXAJYAGgCXAFYAmAAaAFgAmACXABoAmABYAJkAmQBYAJYAlwBZAJYAmQCWAFkAlwBaAFkAmABaAJcAmgCYAJkAmgBaAJgAmgCZADAAMACZAFkAWgBbAFkAMABZAFsAWgALAFsAmgALAFoAMQCaADAAMQALAJoAMQAwAFwAXAAwAFsACwAyAFsAXABbADIACwCbADIAMQCbAAsAnAAxAFwAnACbADEAnABcAJ0AnQBcADIAmwCeADIAnQAyAJ4AmwCfAJ4AnACfAJsAXgCcAJ0AXgCfAJwAXgCdAF0AXQCdAJ4AnwBfAJ4AXQCeAF8AnwAZAF8AXgAZAJ8AoABeAF0AoAAZAF4AoABdAKEAoQBdAF8AGQCiAF8AoQBfAKIAGQCjAKIAoACjABkACgCgAKEACgCjAKAACgChABcAFwChAKIAowAzAKIAFwCiADMAowBgADMACgBgAKMApAAKABcApABgAAoApAAXAKUApQAXADMAYACmADMApQAzAKYAYACnAKYApACnAGAAqACkAKUAqACnAKQAqAClAKkAqQClAKYApwBhAKYAqQCmAGEApwAYAGEAqAAYAKcANACoAKkANAAYAKgANACpADUANQCpAGEAGABiAGEANQBhAGIAGACqAGIANACqABgAqwA0ADUAqwCqADQAqwA1AKwArAA1AGIAqgCtAGIArABiAK0AqgCuAK0AqwCuAKoArwCrAKwArwCuAKsArwCsALAAsACsAK0ArgAWAK0AsACtABYArgA2ABYArwA2AK4AsQCvALAAsQA2AK8AsQCwALIAsgCwABYANgCzABYAsgAWALMANgC0ALMAsQC0ADYACQCxALIACQC0ALEACQCyADcANwCyALMAtABkALMANwCzAGQAtABjAGQACQBjALQAtQAJADcAtQBjAAkAtQA3ALYAtgA3AGQAYwC3AGQAtgBkALcAYwC4ALcAtQC4AGMAZgC1ALYAZgC4ALUAZgC2ADkAOQC2ALcAuAA4ALcAOQC3ADgAuABlADgAZgBlALgAuQBmADkAuQBlAGYAuQA5ALoAugA5ADgAZQC7ADgAugA4ALsAZQC8ALsAuQC8AGUAaAC5ALoAaAC8ALkAaAC6AGcAZwC6ALsAvAAIALsAZwC7AAgAvAAVAAgAaAAVALwAvQBoAGcAvQAVAGgAvQBnAL4AvgBnAAgAFQC/AAgAvgAIAL8AFQDAAL8AvQDAABUAOgC9AL4AOgDAAL0AOgC+AAcABwC+AL8AwABqAL8ABwC/AGoAwABpAGoAOgBpAMAAwQA6AAcAwQBpADoAwQAHAMIAwgAHAGoAaQBsAGoAwgBqAGwAaQDDAGwAwQDDAGkAxADBAMIAxADDAMEAxADCAGsAawDCAGwAwwBtAGwAawBsAG0AwwAUAG0AxAAUAMMABQDEAGsABQAUAMQABQBrAG4AbgBrAG0AFABvAG0AbgBtAG8AFADFAG8ABQDFABQAxgAFAG4AxgDFAAUAxgBuAMcAxwBuAG8AxQDIAG8AxwBvAMgAxQDJAMgAxgDJAMUAygDGAMcAygDJAMYAygDHAHAAcADHAMgAyQAGAMgAcADIAAYAyQA7AAYAygA7AMkAywDKAHAAywA7AMoAywBwAMwAzABwAAYAOwDNAAYAzAAGAM0AOwDOAM0AywDOADsAPADLAMwAPADOAMsAPADMABMAEwDMAM0AzgByAM0AEwDNAHIAzgBxAHIAPABxAM4AzwA8ABMAzwBxADwAzwATANAA0AATAHIAcQDRAHIA0AByANEAcQDSANEAzwDSAHEA0wDPANAA0wDSAM8A0wDQAHMAcwDQANEA0gA9ANEAcwDRAD0A0gB0AD0A0wB0ANIAdQDTAHMAdQB0ANMAdQBzAHYAdgBzAD0AdADUAD0AdgA9ANQAdADVANQAdQDVAHQABAB1AHYABADVAHUABAB2AD4APgB2ANQA1QA/ANQAPgDUAD8A1QASAD8ABAASANUAeAAEAD4AeAASAAQAeAA+AHcAdwA+AD8AEgDWAD8AdwA/ANYAEgDXANYAeADXABIA2AB4AHcA2ADXAHgA2AB3ANkA2QB3ANYA1wB5ANYA2QDWAHkA1wB6AHkA2AB6ANcA2gDYANkA2gB6ANgA2gDZANsA2wDZAHkAegADAHkA2wB5AAMAegARAAMA2gARAHoAAgDaANsAAgARANoAAgDbANwA3ADbAAMAEQDdAAMA3AADAN0AEQDeAN0AAgDeABEA3wACANwA3wDeAAIA3wDcAHwAfADcAN0A3gBBAN0AfADdAEEA3gB7AEEA3wB7AN4A4ADfAHwA4AB7AN8A4AB8AEAAQAB8AEEAewDhAEEAQABBAOEAewDiAOEA4ADiAHsA4wDgAEAA4wDiAOAA4wBAAOQA5ABAAOEA4gDlAOEA5ADhAOUA4gDmAOUA4wDmAOIA5wDjAOQA5wDmAOMA5wDkAOgA6ADkAOUA5gDpAOUA6ADlAOkA5gDqAOkA5wDqAOYAfQDnAOgAfQDqAOcAfQDoAH4AfgDoAOkA6gDrAOkAfgDpAOsA6gDsAOsAfQDsAOoA7QB9AH4A7QDsAH0A7QB+AO4A7gB+AOsA7ADvAOsA7gDrAO8A7ADwAO8A7QDwAOwA8QDtAO4A8QDwAO0A8QDuAPIA8gDuAO8A8ADzAO8A8gDvAPMA8AD0APMA8QD0APAA9QDxAPIA9QD0APEA9QDyAPYA9gDyAPMA9AD3APMA9gDzAPcA9AD4APcA9QD4APQA+QD1APYA+QD4APUA+QD2APoA+gD2APcA+AD7APcA+gD3APsA+AD8APsA+QD8APgA/QD5APoA/QD8APkA/QD6AP4A/gD6APsA/AD/APsA/gD7AP8A/AAAAf8A/QAAAfwAAQH9AP4AAQEAAf0AAQH+AAIBAgH+AP8AAAEDAf8AAgH/AAMBAAEEAQMBAQEEAQABBQEBAQIBBQEEAQEBBQECAQYBBgECAQMBBAEHAQMBBgEDAQcBBAEIAQcBBQEIAQQBCQEFAQYBCQEIAQUBCQEGAQoBCgEGAQcBCAELAQcBCgEHAQsBCAEMAQsBCQEMAQgBDQEJAQoBDQEMAQkBDQEKAQ4BDgEKAQsBDAEPAQsBDgELAQ8BDAEQAQ8BDQEQAQwBEQENAQ4BEQEQAQ0BEQEOARIBEgEOAQ8BEAETAQ8BEgEPARMBEAF/ABMBEQF/ABABFAERARIBFAF/ABEBFAESARUBFQESARMBfwAWARMBFQETARYBfwAXARYBFAEXAX8AGAEUARUBGAEXARQBGAEVARkBGQEVARYBFwEaARYBGQEWARoBFwEbARoBGAEbARcBHAEYARkBHAEbARgBHAEZAR0BHQEZARoBGwEeARoBHQEaAR4BGwEfAR4BHAEfARsBIAEcAR0BIAEfARwBIAEdASEBIQEdAR4BHwEiAR4BIQEeASIBHwEjASIBIAEjAR8BJAEgASEBJAEjASABJAEhASUBJQEhASIBIwEmASIBJQEiASYBIwEnASYBJAEnASMBKAEkASUBKAEnASQBKAElASkBKQElASYBJwEqASYBKQEmASoBJwErASoBKAErAScBDgAoASkBDgArASgBDgApAQAAAAApASoBKwEPACoBAAAqAQ8AKwEBAA8ADgABACsBAQAQAA8AgAAOAAAAgAABAA4AAQCBABAAgACBAAEADQAPABAADQAAAA8AgQANABAAgAAAAA0AgQCAAA0A"), +"lods": [0.114267, PackedByteArray("QgBDAEQAQgBEACEARAAjACEARABFACMARABDAEUARQAiACMAIgAhACMARQBDACIAQgAhAEYARgAhACIAJABDAEIAJABCAEYAJQBGACIAJABGACUAJQAiAEcAQwBHACIASAAlAEcAJAAlAEgAQwBJAEcAJABJAEMASQAmAEcASABHACYAJAAgAEkASQAgACYAHwAkAEgAHwAgACQAJwBIACYAHwBIACcAIABKACYAJwAmAEoAHwBLACAAIABLAEoATAAfACcAHwAoAEsATAAoAB8ASwApAEoAJwBKACkASwAoACkATAAnAE0ATQAnACkATAAdACgAKAAdACkATABNACoAKgBNACkAKgApAE4AHQBOACkAHQArAE4AKgBOACsAHgAdAEwAHgBMACoAHgBPAB0AHQBPACsALAAeACoAHgAcAE8ALAAcAB4ATwBQACsAKgArAFAATwAcAFAAGwAqAFAALAAqABsAHABRAFAAGwBQAFEALABSABwAHAAtAFEAGwBRAC0AHABSAC0ALAAuAFIAUgAuAC0AUwAsABsAUwAuACwAVAAbAC0AUwAbAFQALgBVAC0AVAAtAFUAUwBUAC8ALwBUAFUAUwBWAC4ALgBXAFUALwBVAFcALgBWAFcAGgBTAC8AGgBWAFMALwBXAAwAVgAMAFcAWAAvAAwAGgAvAFgAVgBZAAwAWAAMAFkAGgBaAFYAVgBaAFkAGgBYADAAMABYAFkAMQBaABoAMQAaADAAWgBbAFkAMABZAFsAWgALAFsAMQALAFoAXAAwAFsAMQAwAFwACwAyAFsAXABbADIAMQAZAAsACwAZADIAMQBcAF0AXQBcADIAXgAxAF0AXgAZADEAXQAyAF8AGQBfADIAXgBdABcAFwBdAF8AGQAzAF8AFwBfADMAXgBgABkAGQBgADMACgBeABcACgBgAF4ACgAYAGAAYAAYADMANAAKABcANAAYAAoANAAXADUANQAXADMAGABhADMANQAzAGEAGABiAGEANQBhAGIANAA2ABgAGAA2AGIACQA0ADUACQA2ADQANwA1AGIACQA1ADcANgAWAGIANwBiABYANgBjABYACQBjADYANwAWAGQAYwBkABYACQA3ADkAOQA3AGQACQBlAGMAYwBlAGQAZgAJADkAZgBlAAkAOQBkADgAZQA4AGQAZgA5AGcAZwA5ADgAZgAVAGUAZQAVADgAaABmAGcAaAAVAGYAZwA4AAgAFQAIADgAaABnAAcABwBnAAgAaABpABUAFQBpAAgAOgBoAAcAOgBpAGgABwAIAGoAaQBqAAgAOgAHAGsAawAHAGoAOgAUAGkAaQBsAGoAawBqAGwAaQAUAGwABQA6AGsABQAUADoAawBsAG0AFABtAGwAbgBrAG0ABQBrAG4AFABvAG0AbgBtAG8ABQA7ABQAFAA7AG8ABQBuAHAAcABuAG8APAA7AAUAPAAFAHAAOwAGAG8AcABvAAYAOwBxAAYAPABxADsAEwBwAAYAPABwABMAcQByAAYAEwAGAHIAPAATAHMAcwATAHIAcwByAD0AcQA9AHIAPAB0AHEAcQB0AD0AdQB0ADwAdQA8AHMAdAA/AD0AdQASAHQAdAASAD8AdgBzAD0AdQBzAHYAdgA9AD8ABAB1AHYABAASAHUAPgB2AD8ABAB2AD4AdwA+AD8AeAAEAD4AeAASAAQAeAA+AHcAEgB5AD8AdwA/AHkAeAB6ABIAEgB6AHkAAgB4AHcAAgB6AHgAdwB5AAMAegADAHkAAgARAHoAegARAAMAEQB7AAMAAgB7ABEAfAB3AAMAAgB3AHwAewBBAAMAfAADAEEAAgB8AEAAQAB8AEEAfQACAEAAfQB7AAIAfgBAAEEAfQBAAH4AewB/AEEAfQB/AHsAfwAPAEEAfgBBAA8ADgB/AH0ADgB9AH4ADgABAH8AfwABAA8ADgB+AAAAAAB+AA8AgAABAA4AgAAOAAAAgACBAAEAAQAQAA8AAQCBABAADQAAAA8AgAAAAA0ADQAPABAAgQCAAA0AgQANABAA"), 0.293989, PackedByteArray("IQAiACMAIgAhACMAJAAiACEAJQAhACIAJAAhACUAJAAgACIAJQAiACYAIAAmACIAHwAkACUAHwAgACQAJwAlACYAHwAlACcAIAAoACYAHwAoACAAKAApACYAJwAmACkAHgAoAB8AHgAfACcAKAAdACkAHgAdACgAKgAnACkAHgAnACoAKgApAB0AKgAdACsAHgAcAB0AHQAcACsALAAeACoALAAcAB4AGwAqACsAGwArABwALAAqABsAGwAcAC0AHAAuAC0AGwAtAC4ALAAuABwALAAbAC8ALwAbAC4AGgAsAC8AGgAuACwALwAuAAwAGgAvAAwALgALAAwAGgALAC4AMAAaAAwAMAAMAAsAMQAaADAAMQALABoAMQAwAAsAMQALADIACwAZADIAMQAZAAsAFwAxADIAFwAyABkACgAZADEACgAxABcAFwAZADMAGQAYADMACgAYABkAFwAzABgANAAKABcANAAYAAoANQAXABgANAAXADUANQAYABYANAA2ABgAGAA2ABYACQA0ADUACQA2ADQANwA1ABYACQA1ADcANgA4ABYANwAWADgACQAVADYANgAVADgACQA3ADkAOQA3ADgAOgAVAAkAOgAJADkAFQAIADgAOQA4AAgAOgAUABUAFQAUAAgABwA5AAgAOgA5AAcABwAIABQABQA6AAcABQAUADoABQAHABQABQAUAAYAFAA7AAYABQA7ABQAEwAFAAYAPAA7AAUAPAAFABMAOwA9AAYAEwAGAD0APAASADsAOwASAD0ABAA8ABMABAASADwABAATAD4APgATAD0AEgA/AD0APgA9AD8AEgADAD8APgA/AAMABAARABIAEgARAAMAAgAEAD4AAgARAAQAQAA+AAMAAgA+AEAAEQBBAAMAQAADAEEAAgABABEAEQABAEEAAgBAAAAAAABAAEEADgACAAAADgABAAIAAABBAA8AAQAPAEEADQAOAAAADQABAA4ADQAAAA8AAQAQAA8ADQAPABAADQAQAAEA"), 2.16303, PackedByteArray("DQABAA4ADQAOAAAADgACAAAADgABAAIADQAAAA8ADQAPABAADQAQAAEAAQAQAA8AAAADAA8AAQAPAAMAAAACAAMAAgABABEAEQABAAMAAgAEAAMAAgARAAQAEgARAAMABAARABIABAASAAMABAAGABIABAATAAYABAAFABMAEwAFAAYABAASAAUAFAASAAYABQASABQABQAUAAYABQAHABQABwAIABQABQAUABUAFQAUAAgABQAJAAcABQAVAAkABwAJAAgAFgAVAAgACQAVABYACQAWAAgACQAXABYACQAWAAoACQAKABcACgAWABgAFwAYABYACgAYABkAFwAZABgACgAZABoACgAaABcAFwALABkAGgAZAAsAFwAaAAsAGgAMAAsAGgALAAwAGgAbAAwAGgAMABsAGwAMABwAGwAcAAwAGwAdABwAGwAcAB4AHgAcAB0AGwAeAB0AHgAfAB0AHgAdACAAHwAgAB0AHgAgAB8AHwAhACAAHwAgACEA"), 2.17544, PackedByteArray("AAABAAIAAAADAAEAAgABAAMAAAACAAMAAgAEAAMAAgADAAQABAAFAAYABQAEAAYABQAHAAYABwAIAAYABQAGAAgABwAJAAgABQAIAAkABQAJAAcACgALAAwACgAMAAsA")], +"name": "Material.001", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 300, +"vertex_data": PackedByteArray("KTlMQMIEqsA/E55ANQFOQOwMckDE3dNAX41gQL5EkcAwITS/0uZpQGSPlUAf4DW/MW1+QG2pksBx0I2/wqefQGJgk8AzTDQ+eT2kQGGZk0B6zs6+oaaUQD5/k8Ca2jw/XsWHQLaBk0C4coY/gWJyQJ9ok8D9bMk9FY6RQHNvk8BNmVK/BxSdQPiGk0BOuO4+A0yHQBV3k0AMH1Q/qINLQJU8q8A/P6dAlrxNQMMEqsBiEp5AyH1MQOwMckCi3tNASMhLQEadb0ChCt1ALjRrQIaFlUC1xDG/drCLQHCCk0BZsba/As+ZQDNqk8B821G/GAOiQGOMk0BlChE/6tqHQEmHk0AoboI/8UVpQI59k0D7nAe/fgGSQOB0k8CWF1m/cWeFQGt/k0COaJa/ymGdQPiJk0BQDPu+vsqOQAJ0k8AEuQo/WoOAQNVxk8D8QYa+y0qBQDB/k0C+ZCa/hJSXQLh2k0B2g9O+wEeOQLh2k8D+kt2+OvOOQLh2k8DXxX0+hh6IQIR4k0D/JgA/BCmIQNFFk8DTNRW+c42HQKGpk0B5okK+TJGTQFAzk0CoDxC/TtyHQIdkk8DHepI9LhyHQC9nk8AaP4o9FM2HQGlyk0DefAc/oSCPQAl9k8AYm44+/vuXQLh2k0BDkI0+bqeYQGlwk0AGFZU+mqWOQAh9k8Dot+u+DOCRQGlwk0CVITS/GzqBQHRsk8BC6IC+16l2QA6Dk0AHALm+63p4QMKIk0BXk6M+3aOIQCt6k8B+kRM/QfSYQANzk8DxnbI+gaaZQAprk8Cd69w9ju2fQI6Fk0DG5Qw+KiqVQMh/k0ARHIa/PGuBQDZ0k8AtN1e/HfyAQON5k8Bu1l2/W7VqQBqDk0D4DQW/C+FwQPltk8AUxM89wPVxQKKOk0DzMjg/Fj96QChok8BewRI/CG2UQFh5k8BfIjU/1IKjQPWdk0Asfcq+ojWZQG5lk8Bo60y/tZORQLh8k0BYCbK/oxB+QNOrksC0vZG/L4KLQAqAk0Cdnrq/ScVaQAFYksBvTQG/+A5cQNxyk0D/5so+lo+JQOtak8AQAdq98S2IQI2rk0A5hTC+GFaIQB4/k8DqhOu9YL6TQAM6k0DVMgi/F++IQNdck8CLO/69sfGDQFyXk0DqjTY+W1uJQNN7k8C/ooY+0rGEQASak0DJqzo+WLCQQGhwk0Afgww/8oKQQLh2k0D8pgQ/NP2SQLl2k8ByJ4O9rr6TQAl9k8DJ0IW96D+YQGhwk0AmCtu+MoKRQLh2k0AgDy2/WCiJQMBwk0Co2ki/AN2AQFF5k0DLDS2/Whd4QG6Ik0BPprO+/lqBQDtsk8ATIF0+z6aAQJpxk8AO+2g+jBJ3QGODk0DZgKk+JICHQPF8k0CKVUw/uv1/QG19k0AIQCA/i+KOQOR5k8A6vxI//DaXQLh6k0DgTD4/pOCWQHyAk0AREDc/Kr+dQI2Bk0AxSvY+bmeaQE9wk8C1k+I9aN2YQBVxk8BCNte+0iWYQM5rk8BxENK+YhmeQLCEk0AWGQC/wraUQDSFk0Dq3IK/nEOFQMd5k0CsYZq/ryR7QOV4k0DdNom/3ApnQHWMk0ChbMk9ZollQBuHk0C5w889cRxzQMaTk0CK8zI/yGV7QAVjk8D+gQ0/jjCHQNxwk8BL6Ew/GkaHQEprk8Ai30Q/VjGWQJd3k0AT9nQ/8GqWQLBxk0BKrnw/aqSeQIBuk8Bkq9c+dEmdQDl4k0AtBFg/Sq6iQE2Hk0BH0hQ/D2egQBFlk8CnWDk+gCWlQFqUk0BdIYA+F6WfQDVhk8AYma6+w7WcQICTk0B2m3S/I0+dQLiOk0CMi3m/6AyQQDR5k8BEg5W/3j+RQOeBk0BWZK6/Ss2HQCpxk8Ajfpq/FNCHQE92k8ARiZ6/k6lqQHu3kcDIFHO/Z2BrQDi6kcBu82u/DUl6QD4JlUCI1ZC/OFV7QHIBlUAk642/kI9dQLNuk0CO1cw+K49cQPKrkcCARCK/OspZQLBPlcCujIk9zUZYQK9PlcC3w4k9y/dSQEGNgUC1qZNAFgdNQJY8q8BkPqdAtEtNQEadb0DDCd1AzqyJQLh1k8AD7m8+chaSQLh2k8CStRY+4sGSQAh9k8AavyU+V2aaQGlwk0BcO5293KSZQLh2k0DPkZq9Uq+RQLh2k8CsP5G+tlqSQAh9k8Bkxpi+HzSJQIJ2k8DBdfO+ZyuJQM58k8CfzgG/EDGJQAt3k0DoxkC/h/yDQFtxk8DykNO+vI6DQDp3k8AN4+C+tFyAQK5qk8Bq8HC8FjZ/QPhvk8AouXS8qwt0QL6Fk0CflI68/Y51QAiLk0CqsYy8h26EQFdwk8CPM9Y+S+CDQOl1k8AdLeE+GY2AQACDk0A+wxo//teIQFF0k8D0xws/+HSPQCh3k0C44FQ/LF2PQAp9k0B92kw/75+UQGhxk8DA0/Q+RvaUQCx3k8CzpgE/H0mYQJhtk8AJDKs+oiyfQNOKk0CoEQo+x2aZQAVrk8DdShy++yaaQElwk8D0QSC+0qefQKeFk0B0aT++nueeQOmKk0BMcju+sYiVQFVtk8AFxCO/yiiWQKpyk8DFUCi/FqyaQLGCk0DCWky//QuaQAeIk0ABzke/NlmMQMVxk8DQmmy//4eMQFB3k8B6c3S/R6eNQHN8k0Bx8Ji/f3iNQP2Bk0AaBJW//K2GQJZzk8DJn26/KIqGQDx5k8AGkna/7gJ8QJF+k0A+54W/qsp6QB5zk8Bl0Ci/wIp5QMB4k8AyXy2/uIdwQFh6k0BFRFG/o8dxQPl/k0B4tUy/Po91QJNwk8Cqbdq+1B90QB92k8Cvi9++NQBzQNxsk8AsSim+6n9xQFNyk8BNVC2+6C9mQPGBk0C5TWG+MrBnQGeHk0C0Q12+gV51QNVkk8CXLK8+p/hzQAxqk8C4XLU+fIFpQCmMk0CBYto+V+dqQF2Rk0BWMtQ+eQuCQORkk8BjTTM/Jq+BQCJqk8AUaTo/6yJ/QMCLk0ChWHE/j9t/QP2Qk0DnPGo/frONQIJ1k8BREUM/J8iNQFd7k8BuG0s/u2CPQKh1k0AIsIU/E0yPQHx7k0D8qoE/rymaQAB0k8Dw5RY/8p2aQK55k8BcXR0/MdWcQOZ9k0C+jFE/OPmdQGtpk8CoG9A+MmakQAmZk0BXNns+oeSfQIZck8BJTZy966WgQBlhk8DkYqC9XHqlQISZk0AXlai9ErmkQBeek0BYf6S9ceqeQKFck8DKR6q+M5ycQOBfk8CzrRO/CEmdQIdkk8D8Uxe/02mhQGqVk0D3WjS//rygQBGak0CmtDC/Kt6UQHpsk8AEZ36/9VyVQGtxk8DqQYK/LBCYQDOGk0CtpJq/YZGXQCSLk0BFlpe/EbmPQAV0k8BA3pG/O9eLQKt2k0AkQru/cdSLQNB7k0A4N7e/HayGQIkTlEBjIrC/hweHQMsQlEC2kay/WGtmQN5QkcBvhFW/LF9lQBNJkcA4WVu/84liQHYckcDSikW/mTxhQJkSkcA6pkm/uBtfQJQ8kcDliDa/WcVhQI77lEDk7h6+ADdjQGLzlEAUUBW+yhBeQJiukcCkqSG/tkhcQAJYksBQVAG/8qtaQARjkUByc2M/YC9cQARjkUCMbGM/Y0dbQB5Fk8D7Cr2+9sNZQB1Fk8A4/by+cPZZQDArkEDIaZY/3nlbQDArkEBXZpY/vH9aQNwXlMAGumC+UPxYQNsXlMCBnmC+70BZQFzzjkDQGbs/XMRaQFzzjkBcFrs/a4tYQIi7jUDbyd8/2A5aQIi7jUBoxt8/uhRZQISHlsBVI7U+TZFXQIOHlsAYMbU+6tVXQLSDjED0PAJAWFlZQLSDjEA6OwJAOF9YQFi/l8DB8SM/y9tWQFe/l8Ci+CM/aCBXQOBLi0D5lBRA1qNYQOBLi0A/kxRAs6lXQCz3mMDXUW0/RiZWQCv3mMC4WG0/42pWQAwUikD+7CZAUO5XQAwUikBF6yZANPRWQAAvmsD2WJs/yHBVQP8umsBnXJs/ZrVVQDnciEADRTlA0zhXQDnciEBKQzlAsD5WQNRmm8ADCcA/RLtUQNNmm8BzDMA/3/9UQGSkh0AInUtATINWQGSkh0BPm0tAMIlVQKeenMAPueQ/xAVUQKaenMB/vOQ/X0pUQJFshkAP9V1AzM1VQJFshkBW811ArNNUQHzWncCMtARAQFBTQHvWncBFtgRA3pRTQLw0hUAUTXBATBhVQLw0hUBbS3BALB5UQE8On8CRDBdAwJpSQE4On8BKDhdAW99SQOn8g0CNUoFAyGJUQOn8g0CwUYFArGhTQCRGoMCYZClAQOVRQCNGoMBRZilA1ylSQBXFgkCQfopARK1TQBXFgkC0fYpAJbNSQPh9ocCdvDtAuC9RQPZ9ocBWvjtAXnRRQEGNgUCSqpNApf1RQMu1osCiFE5AOHpQQMq1osBbFk5A1r5QQG1VgECU1pxAREJSQG1VgEC41ZxAJEhRQJ/to8CobGBAuMRPQJ/to8BgbmBAUAlQQDM7fkCVAqZAvYxRQDM7fkC5AaZApJJQQHMlpcCtxHJAOA9PQHIlpcBlxnJA1lNPQIvLe0CZLq9ARNdQQIvLe0C9La9AHd1PQEhdpsBZjoJAsFlOQEZdpsA1j4JAT55OQONbeUCaWrhAvCFQQONbeUC+WbhAlidPQBuVp8BduotAKqRNQBqVp8A5u4tAz+hNQDvsdkCdhsFAPGxPQDvsdkC/hcFAHHJOQO/MqMBf5pRAsO5MQO/MqMA755RATjNNQJN8dECesspAvLZOQJN8dEDBscpA") +}] +blend_shape_mode = 0 + +[sub_resource type="ArrayMesh" id="ArrayMesh_75s6s"] +resource_name = "plan_Plane_002" +_surfaces = [{ +"aabb": AABB(3.17991, -5.35115, -1.46296, 1.99128, 10.0249, 8.3705), +"attribute_data": PackedByteArray("+v5/P5TKez8AAMAzlMp7P/r+fz+1Ryk/AACAM5eHJT/6/n8/MEcaP/r+fz9KjPg+AACAM2vGAz/6/n8/ggviPgAAgDMCC9M++v5/P/AJtT76/n8/HoiAPgAAADO4DTY+AAAAMyQMCT76/n8/tIp/P/r+fz+Uyns/AADAM5TKez8AAMAztIp/PwAAgDOXhyU/AACAMzRHGj/6/n8/qkYLPwAAgDMODPE+AACAMwIL0z4AAAAzdAmmPvr+fz8eiIA+AAAAM6qIjz4AAAAzQA9jPvr+fz+gDBg++v5/P/ATmj0AAAAzQCZ4PQAAADOAP4g8+v5/P7AhAD36/n8/AM3fvAAAADOg6Cu9+v5/P2D3r736/n8/8BOaPQAAAABQ9pG9AAAAAGD3r736/n8/wOpnvfr+fz/A6me9AAAAM6DoK736/n8/AM3fvAAAADOAkU+8AAAAM4CRT7z6/n8/sCEAPQAAADPgIQA9AAAAMxgUmj0AAAAzQBbWPfr+fz8UDAk++v5/P6gNNj76/n8/KA5FPgAAADM4DkU+AAAAMyiIgD76/n8/6AiXPvr+fz/oCJc+AAAAM3QJpj76/n8/8Am1PgAAgDOACsQ++v5/P3gKxD76/n8/ggviPgAAgDNrxgM/+v5/P6pGCz8AAIAz8MYSP/r+fz8wRxo/AACAMzRHGj/8/n8/RuUyPwAAgDPZBy0/+v5/P2D2kb0AAAAAUPaRvfr+fz9g96+9AAAAAGD3r736/n8/YPaRvQAAADOA6me9+v5/P6DoK70AAAAzgOpnvQAAADPAzN+8AAAAM8DM37z6/n8/ANoBO/r+fz8A2gE7AAAAM4A/iDwAAAAz4CEAPQAAADMAJDw9AAAAM0AmeD0AAAAzGBSaPfr+fz8YFtY9+v5/PxgW1j0AAAAzQBbWPQAAADMkDAk+AAAAM0gX9D36/n8/oAwYPgAAADM0DSc+AAAAMzQNJz4AAAAzuA02Pvr+fz8oDkU++v5/PzgPYz76/n8/OA9jPgAAADNAD2M+AAAAMyiIgD4AAAAzqoiPPgAAADPwCJc+AAAAM/gJtT4AAAAz+Am1PgAAgDOACsQ++v5/P3gKxD76/n8//ArTPvr+fz/8CtM+AACAM4gL4j4AAIAziAviPvr+fz8GDPE+AACAM8qL6T4AAIAzDgzxPvr+fz9KjPg+AACAM1CM+D76/n8/aMYDPwAAgDOuRgs/AACAM65GCz/6/n8/7MYSPwAAgDPwxhI/+v5/Pw6HFj/6/n8/DocWP/r+fz9QBx4/+v5/P1AHHj8AAIAzdschPwAAgDN2xyE/AACAM9kHLT/6/n8/0CkvP/r+fz9cCDw/+v5/P1wIPD8AAMAzrYlhP/r+fz+0in8/AADAM7SKfz/6/n8/oOgrvfr+fz8Akk+8+v5/PwCST7wAAAAzANsBOwAAADMA2wE7+v5/P4A/iDz6/n8/gD+IPPr+fz/gIzw9+v5/P+AjPD0AAAAzACQ8Pfr+fz/QJXg9+v5/P9AleD36/n8/CBW4Pfr+fz8IFbg9AAAAMzAVuD0AAAAzMBW4Pfr+fz8gF/Q9+v5/PyAX9D0AAAAzSBf0Pfr+fz8UDAk+AAAAM6gMGD4AAAAzqAwYPvr+fz8oDSc++v5/PygNJz76/n8/qA02PgAAADM4DkU++v5/P7AOVD76/n8/sA5UPgAAADO8DlQ+AAAAM7wOVD76/n8/uA9yPvr+fz+4D3I+AAAAM8gPcj4AAAAzyA9yPvr+fz9gCIg++v5/P2AIiD4AAAAzagiIPgAAADNqCIg++v5/P6aIjz76/n8/poiPPgAAADPwCJc++v5/PyqJnj76/n8/KomePgAAADMyiZ4+AAAAMzKJnj76/n8/bAmmPvr+fz9sCaY++v5/P7CJrT76/n8/sImtPgAAADO2ia0+AAAAM7aJrT76/n8/Noq8Pvr+fz82irw+AACAMzqKvD4AAIAzOoq8Pvr+fz+8iss++v5/P7yKyz4AAIAzwIrLPgAAgDPAiss++v5/Pz6L2j76/n8/PovaPgAAgDNGi9o+AACAM0aL2j76/n8/xIvpPvr+fz/Ei+k+AACAM8qL6T76/n8/BgzxPgAAgDNQjPg++v5/P0YGAD/6/n8/RgYAPwAAgDNKBgA/AACAM0oGAD/6/n8/aMYDP/r+fz+Ihgc/+v5/P4iGBz8AAIAzjYYHPwAAgDONhgc/+v5/P8wGDz/6/n8/zAYPPwAAgDPPBg8/AACAM88GDz/6/n8/7MYSPwAAgDMShxY/AACAMxKHFj8AAIAzVAcePwAAgDNUBx4/+v5/P3LHIT/6/n8/cschP/r+fz+ThyU/+v5/P5OHJT/6/n8/tUcpPwAAgDO4Ryk/AACAM7hHKT/5/n8/0SkvP/r+fz9G5TI/AACAM/rHMD8AAIAz+scwP/v+fz9YvzU/+/5/P1i/NT8AAIAzHYg0PwAAgDMdiDQ/+v5/PzpIOD/6/n8/Okg4PwAAgDM+SDg/AACAMz5IOD8AAIAzXgg8PwAAgDNeCDw/+v5/P3zIPz/6/n8/fMg/PwAAgDOByD8/AACAM4HIPz/6/n8/nohDP/r+fz+eiEM/AACAM6KIQz8AAIAzoohDP/r+fz/ASEc/+v5/P8BIRz8AAIAzxEhHPwAAgDPESEc/+v5/P+EISz/6/n8/4QhLPwAAwDPlCEs/AADAM+UISz/6/n8/A8lOP/r+fz8DyU4/AADAMwbJTj8AAMAzBslOP/r+fz8kiVI/+v5/PySJUj8AAMAzKIlSPwAAwDMoiVI/+v5/P0ZJVj/6/n8/RklWPwAAwDNISVY/AADAM0hJVj/6/n8/ZwlaP/r+fz9nCVo/AADAM2oJWj8AAMAzaglaP/r+fz+IyV0/+v5/P4jJXT8AAMAzjMldPwAAwDOMyV0/+v5/P6mJYT/6/n8/qYlhPwAAwDOtiWE/+v5/P8pJZT/6/n8/ykllPwAAwDPMSWU/AADAM8xJZT/6/n8/7AlpP/r+fz/sCWk/AADAM+4JaT8AAMAz7glpP/r+fz8Oymw/+v5/Pw7KbD8AAMAzEcpsPwAAwDMRymw/+v5/Py6KcD/6/n8/LopwPwAAwDMxinA/AADAMzGKcD/6/n8/Ukp0P/r+fz9SSnQ/AADAM1NKdD8AAMAzU0p0P/r+fz9yCng/+v5/P3IKeD8AAMAzdQp4PwAAwDN1Cng/"), +"format": 34359742487, +"index_count": 1788, +"index_data": PackedByteArray("QgBDAEQAQgBEACEARAAkACEARABFACQARABDAEUARQAjACQAIwAhACQARQBDACMAQgAhAEYARgAhACMAJQBDAEIAJQBCAEYAJQBGACYAJgBGACMAQwBHACMAJgAjAEcAQwBJAEcAJQBJAEMAggAlACYAggBJACUAggAmAEgASAAmAEcASQAnAEcASABHACcASQAgACcAggAgAEkAHwCCAEgAHwAgAIIAHwBIACgAKABIACcAIABKACcAKAAnAEoAIABLAEoAHwBLACAAgwAfACgAgwBLAB8AgwAoAIQAhAAoAEoASwAqAEoAhABKACoASwApACoAgwApAEsATACDAIQATAApAIMATACEAE0ATQCEACoAKQCFACoATQAqAIUAKQCGAIUATACGACkAhwBMAE0AhwCGAEwAhwBNAIgAiABNAIUAhgBOAIUAiACFAE4AhgAdAE4AhwAdAIYAHgCHAIgAHgAdAIcAHgCIACsAKwCIAE4AHQAsAE4AKwBOACwAHQBPACwAHgBPAB0AiQAeACsAiQBPAB4AiQArAIoAigArACwATwBQACwAigAsAFAATwCLAFAAiQCLAE8AjACJAIoAjACLAIkAjACKAI0AjQCKAFAAiwBRAFAAjQBQAFEAiwAcAFEAjAAcAIsAIgCMAI0AIgAcAIwAIgCNABsAGwCNAFEAHAAtAFEAGwBRAC0AHABSAC0AIgBSABwAjgAiABsAjgBSACIAjgAbAI8AjwAbAC0AUgCQAC0AjwAtAJAAUgCRAJAAjgCRAFIAUwCOAI8AUwCRAI4AUwCPAFQAVACPAJAAkQBVAJAAVACQAFUAkQAuAFUAUwAuAJEAkgBTAFQAkgAuAFMAkgBUAJMAkwBUAFUALgBXAFUAkwBVAFcALgCUAFcAkgCUAC4AlQCSAJMAlQCUAJIAlQCTAC8ALwCTAFcAlAAMAFcALwBXAAwAlABWAAwAlQBWAJQAGgCVAC8AGgBWAJUAGgAvAFgAWAAvAAwAVgCWAAwAWAAMAJYAVgCXAJYAGgCXAFYAmAAaAFgAmACXABoAmABYAJkAmQBYAJYAlwBZAJYAmQCWAFkAlwBaAFkAmABaAJcAmgCYAJkAmgBaAJgAmgCZADAAMACZAFkAWgBbAFkAMABZAFsAWgALAFsAmgALAFoAMQCaADAAMQALAJoAMQAwAFwAXAAwAFsACwAyAFsAXABbADIACwCbADIAMQCbAAsAnAAxAFwAnACbADEAnABcAJ0AnQBcADIAmwCeADIAnQAyAJ4AmwCfAJ4AnACfAJsAXgCcAJ0AXgCfAJwAXgCdAF0AXQCdAJ4AnwBfAJ4AXQCeAF8AnwAZAF8AXgAZAJ8AoABeAF0AoAAZAF4AoABdAKEAoQBdAF8AGQCiAF8AoQBfAKIAGQCjAKIAoACjABkACgCgAKEACgCjAKAACgChABcAFwChAKIAowAzAKIAFwCiADMAowBgADMACgBgAKMApAAKABcApABgAAoApAAXAKUApQAXADMAYACmADMApQAzAKYAYACnAKYApACnAGAAqACkAKUAqACnAKQAqAClAKkAqQClAKYApwBhAKYAqQCmAGEApwAYAGEAqAAYAKcANACoAKkANAAYAKgANACpADUANQCpAGEAGABiAGEANQBhAGIAGACqAGIANACqABgAqwA0ADUAqwCqADQAqwA1AKwArAA1AGIAqgCtAGIArABiAK0AqgCuAK0AqwCuAKoArwCrAKwArwCuAKsArwCsALAAsACsAK0ArgAWAK0AsACtABYArgA2ABYArwA2AK4AsQCvALAAsQA2AK8AsQCwALIAsgCwABYANgCzABYAsgAWALMANgC0ALMAsQC0ADYACQCxALIACQC0ALEACQCyADcANwCyALMAtABkALMANwCzAGQAtABjAGQACQBjALQAtQAJADcAtQBjAAkAtQA3ALYAtgA3AGQAYwC3AGQAtgBkALcAYwC4ALcAtQC4AGMAZgC1ALYAZgC4ALUAZgC2ADkAOQC2ALcAuAA4ALcAOQC3ADgAuABlADgAZgBlALgAuQBmADkAuQBlAGYAuQA5ALoAugA5ADgAZQC7ADgAugA4ALsAZQC8ALsAuQC8AGUAaAC5ALoAaAC8ALkAaAC6AGcAZwC6ALsAvAAIALsAZwC7AAgAvAAVAAgAaAAVALwAvQBoAGcAvQAVAGgAvQBnAL4AvgBnAAgAFQC/AAgAvgAIAL8AFQDAAL8AvQDAABUAOgC9AL4AOgDAAL0AOgC+AAcABwC+AL8AwABqAL8ABwC/AGoAwABpAGoAOgBpAMAAwQA6AAcAwQBpADoAwQAHAMIAwgAHAGoAaQBsAGoAwgBqAGwAaQDDAGwAwQDDAGkAxADBAMIAxADDAMEAxADCAGsAawDCAGwAwwBtAGwAawBsAG0AwwAUAG0AxAAUAMMABQDEAGsABQAUAMQABQBrAG4AbgBrAG0AFABvAG0AbgBtAG8AFADFAG8ABQDFABQAxgAFAG4AxgDFAAUAxgBuAMcAxwBuAG8AxQDIAG8AxwBvAMgAxQDJAMgAxgDJAMUAygDGAMcAygDJAMYAygDHAHAAcADHAMgAyQAGAMgAcADIAAYAyQA7AAYAygA7AMkAywDKAHAAywA7AMoAywBwAMwAzABwAAYAOwDNAAYAzAAGAM0AOwDOAM0AywDOADsAPADLAMwAPADOAMsAPADMABMAEwDMAM0AzgByAM0AEwDNAHIAzgBxAHIAPABxAM4AzwA8ABMAzwBxADwAzwATANAA0AATAHIAcQDRAHIA0AByANEAcQDSANEAzwDSAHEA0wDPANAA0wDSAM8A0wDQAHMAcwDQANEA0gA9ANEAcwDRAD0A0gB0AD0A0wB0ANIAdQDTAHMAdQB0ANMAdQBzAHYAdgBzAD0AdADUAD0AdgA9ANQAdADVANQAdQDVAHQABAB1AHYABADVAHUABAB2AD4APgB2ANQA1QA/ANQAPgDUAD8A1QASAD8ABAASANUAeAAEAD4AeAASAAQAeAA+AHcAdwA+AD8AEgDWAD8AdwA/ANYAEgDXANYAeADXABIA2AB4AHcA2ADXAHgA2AB3ANkA2QB3ANYA1wB5ANYA2QDWAHkA1wB6AHkA2AB6ANcA2gDYANkA2gB6ANgA2gDZANsA2wDZAHkAegADAHkA2wB5AAMAegARAAMA2gARAHoAAgDaANsAAgARANoAAgDbANwA3ADbAAMAEQDdAAMA3AADAN0AEQDeAN0AAgDeABEA3wACANwA3wDeAAIA3wDcAHwAfADcAN0A3gBBAN0AfADdAEEA3gB7AEEA3wB7AN4A4ADfAHwA4AB7AN8A4AB8AEAAQAB8AEEAewDhAEEAQABBAOEAewDiAOEA4ADiAHsA4wDgAEAA4wDiAOAA4wBAAOQA5ABAAOEA4gDlAOEA5ADhAOUA4gDmAOUA4wDmAOIA5wDjAOQA5wDmAOMA5wDkAOgA6ADkAOUA5gDpAOUA6ADlAOkA5gDqAOkA5wDqAOYAfQDnAOgAfQDqAOcAfQDoAH4AfgDoAOkA6gDrAOkAfgDpAOsA6gDsAOsAfQDsAOoA7QB9AH4A7QDsAH0A7QB+AO4A7gB+AOsA7ADvAOsA7gDrAO8A7ADwAO8A7QDwAOwA8QDtAO4A8QDwAO0A8QDuAPIA8gDuAO8A8ADzAO8A8gDvAPMA8AD0APMA8QD0APAA9QDxAPIA9QD0APEA9QDyAPYA9gDyAPMA9AD3APMA9gDzAPcA9AD4APcA9QD4APQA+QD1APYA+QD4APUA+QD2APoA+gD2APcA+AD7APcA+gD3APsA+AD8APsA+QD8APgA/QD5APoA/QD8APkA/QD6AP4A/gD6APsA/AD/APsA/gD7AP8A/AAAAf8A/QAAAfwAAQH9AP4AAQEAAf0AAQH+AAIBAgH+AP8AAAEDAf8AAgH/AAMBAAEEAQMBAQEEAQABBQEBAQIBBQEEAQEBBQECAQYBBgECAQMBBAEHAQMBBgEDAQcBBAEIAQcBBQEIAQQBCQEFAQYBCQEIAQUBCQEGAQoBCgEGAQcBCAELAQcBCgEHAQsBCAEMAQsBCQEMAQgBDQEJAQoBDQEMAQkBDQEKAQ4BDgEKAQsBDAEPAQsBDgELAQ8BDAEQAQ8BDQEQAQwBEQENAQ4BEQEQAQ0BEQEOARIBEgEOAQ8BEAETAQ8BEgEPARMBEAF/ABMBEQF/ABABFAERARIBFAF/ABEBFAESARUBFQESARMBfwAWARMBFQETARYBfwAXARYBFAEXAX8AGAEUARUBGAEXARQBGAEVARkBGQEVARYBFwEaARYBGQEWARoBFwEbARoBGAEbARcBHAEYARkBHAEbARgBHAEZAR0BHQEZARoBGwEeARoBHQEaAR4BGwEfAR4BHAEfARsBIAEcAR0BIAEfARwBIAEdASEBIQEdAR4BHwEiAR4BIQEeASIBHwEjASIBIAEjAR8BJAEgASEBJAEjASABJAEhASUBJQEhASIBIwEmASIBJQEiASYBIwEnASYBJAEnASMBKAEkASUBKAEnASQBKAElASkBKQElASYBJwEqASYBKQEmASoBJwErASoBKAErAScBDgAoASkBDgArASgBDgApAQAAAAApASoBKwEPACoBAAAqAQ8AKwEBAA8ADgABACsBAQAQAA8AgAAOAAAAgAABAA4AAQCBABAAgACBAAEADQAPABAADQAAAA8AgQANABAAgAAAAA0AgQCAAA0A"), +"lods": [0.114267, PackedByteArray("QgBDAEQAQgBEACEARAAkACEARABFACQARABDAEUARQAjACQAIwAhACQARQBDACMAQgAhAEYARgAhACMAJQBDAEIAJQBCAEYAJgBGACMAJQBGACYAJgAjAEcAQwBHACMASAAmAEcAJQAmAEgAQwBJAEcAJQBJAEMASQAnAEcASABHACcAJQAgAEkASQAgACcAHwAlAEgAHwAgACUAKABIACcAHwBIACgAIABKACcAKAAnAEoAHwBLACAAIABLAEoATAAfACgAHwApAEsATAApAB8ASwAqAEoAKABKACoASwApACoATAAoAE0ATQAoACoATAAdACkAKQAdACoATABNACsAKwBNACoAKwAqAE4AHQBOACoAHQAsAE4AKwBOACwAHgAdAEwAHgBMACsAHgBPAB0AHQBPACwAIgAeACsAHgAcAE8AIgAcAB4ATwBQACwAKwAsAFAATwAcAFAAGwArAFAAIgArABsAHABRAFAAGwBQAFEAIgBSABwAHAAtAFEAGwBRAC0AHABSAC0AIgAuAFIAUgAuAC0AUwAiABsAUwAuACIAVAAbAC0AUwAbAFQALgBVAC0AVAAtAFUAUwBUAC8ALwBUAFUAUwBWAC4ALgBXAFUALwBVAFcALgBWAFcAGgBTAC8AGgBWAFMALwBXAAwAVgAMAFcAWAAvAAwAGgAvAFgAVgBZAAwAWAAMAFkAGgBaAFYAVgBaAFkAGgBYADAAMABYAFkAMQBaABoAMQAaADAAWgBbAFkAMABZAFsAWgALAFsAMQALAFoAXAAwAFsAMQAwAFwACwAyAFsAXABbADIAMQAZAAsACwAZADIAMQBcAF0AXQBcADIAXgAxAF0AXgAZADEAXQAyAF8AGQBfADIAXgBdABcAFwBdAF8AGQAzAF8AFwBfADMAXgBgABkAGQBgADMACgBeABcACgBgAF4ACgAYAGAAYAAYADMANAAKABcANAAYAAoANAAXADUANQAXADMAGABhADMANQAzAGEAGABiAGEANQBhAGIANAA2ABgAGAA2AGIACQA0ADUACQA2ADQANwA1AGIACQA1ADcANgAWAGIANwBiABYANgBjABYACQBjADYANwAWAGQAYwBkABYACQA3ADkAOQA3AGQACQBlAGMAYwBlAGQAZgAJADkAZgBlAAkAOQBkADgAZQA4AGQAZgA5AGcAZwA5ADgAZgAVAGUAZQAVADgAaABmAGcAaAAVAGYAZwA4AAgAFQAIADgAaABnAAcABwBnAAgAaABpABUAFQBpAAgAOgBoAAcAOgBpAGgABwAIAGoAaQBqAAgAOgAHAGsAawAHAGoAOgAUAGkAaQBsAGoAawBqAGwAaQAUAGwABQA6AGsABQAUADoAawBsAG0AFABtAGwAbgBrAG0ABQBrAG4AFABvAG0AbgBtAG8ABQA7ABQAFAA7AG8ABQBuAHAAcABuAG8APAA7AAUAPAAFAHAAOwAGAG8AcABvAAYAOwBxAAYAPABxADsAEwBwAAYAPABwABMAcQByAAYAEwAGAHIAPAATAHMAcwATAHIAcwByAD0AcQA9AHIAPAB0AHEAcQB0AD0AdQB0ADwAdQA8AHMAdAA/AD0AdQASAHQAdAASAD8AdgBzAD0AdQBzAHYAdgA9AD8ABAB1AHYABAASAHUAPgB2AD8ABAB2AD4AdwA+AD8AeAAEAD4AeAASAAQAeAA+AHcAEgB5AD8AdwA/AHkAeAB6ABIAEgB6AHkAAgB4AHcAAgB6AHgAdwB5AAMAegADAHkAAgARAHoAegARAAMAEQB7AAMAAgB7ABEAfAB3AAMAAgB3AHwAewBBAAMAfAADAEEAAgB8AEAAQAB8AEEAfQACAEAAfQB7AAIAfgBAAEEAfQBAAH4AewB/AEEAfQB/AHsAfwAPAEEAfgBBAA8ADgB/AH0ADgB9AH4ADgABAH8AfwABAA8ADgB+AAAAAAB+AA8AgAABAA4AgAAOAAAAgACBAAEAAQAQAA8AAQCBABAADQAAAA8AgAAAAA0ADQAPABAAgQCAAA0AgQANABAA"), 0.293989, PackedByteArray("IQAjACQAIwAhACQAJQAjACEAJgAhACMAJQAhACYAJQAgACMAJgAjACcAIAAnACMAHwAlACYAHwAgACUAKAAmACcAHwAmACgAIAApACcAHwApACAAKQAqACcAKAAnACoAHgApAB8AHgAfACgAKQAdACoAHgAdACkAKwAoACoAHgAoACsAKwAqAB0AKwAdACwAHgAcAB0AHQAcACwAIgAeACsAIgAcAB4AGwArACwAGwAsABwAIgArABsAGwAcAC0AHAAuAC0AGwAtAC4AIgAuABwAIgAbAC8ALwAbAC4AGgAiAC8AGgAuACIALwAuAAwAGgAvAAwALgALAAwAGgALAC4AMAAaAAwAMAAMAAsAMQAaADAAMQALABoAMQAwAAsAMQALADIACwAZADIAMQAZAAsAFwAxADIAFwAyABkACgAZADEACgAxABcAFwAZADMAGQAYADMACgAYABkAFwAzABgANAAKABcANAAYAAoANQAXABgANAAXADUANQAYABYANAA2ABgAGAA2ABYACQA0ADUACQA2ADQANwA1ABYACQA1ADcANgA4ABYANwAWADgACQAVADYANgAVADgACQA3ADkAOQA3ADgAOgAVAAkAOgAJADkAFQAIADgAOQA4AAgAOgAUABUAFQAUAAgABwA5AAgAOgA5AAcABwAIABQABQA6AAcABQAUADoABQAHABQABQAUAAYAFAA7AAYABQA7ABQAEwAFAAYAPAA7AAUAPAAFABMAOwA9AAYAEwAGAD0APAASADsAOwASAD0ABAA8ABMABAASADwABAATAD4APgATAD0AEgA/AD0APgA9AD8AEgADAD8APgA/AAMABAARABIAEgARAAMAAgAEAD4AAgARAAQAQAA+AAMAAgA+AEAAEQBBAAMAQAADAEEAAgABABEAEQABAEEAAgBAAAAAAABAAEEADgACAAAADgABAAIAAABBAA8AAQAPAEEADQAOAAAADQABAA4ADQAAAA8AAQAQAA8ADQAPABAADQAQAAEA"), 2.16303, PackedByteArray("DQABAA4ADQAOAAAADgACAAAADgABAAIADQAAAA8ADQAPABAADQAQAAEAAQAQAA8AAAADAA8AAQAPAAMAAAACAAMAAgABABEAEQABAAMAAgAEAAMAAgARAAQAEgARAAMABAARABIABAASAAMABAAGABIABAATAAYABAAFABMAEwAFAAYABAASAAUAFAASAAYABQASABQABQAUAAYABQAHABQABwAIABQABQAUABUAFQAUAAgABQAJAAcABQAVAAkABwAJAAgAFgAVAAgACQAVABYACQAWAAgACQAXABYACQAWAAoACQAKABcACgAWABgAFwAYABYACgAYABkAFwAZABgACgAZABoACgAaABcAFwALABkAGgAZAAsAFwAaAAsAGgAMAAsAGgALAAwAGgAbAAwAGgAMABsAGwAMABwAGwAcAAwAGwAdABwAGwAcAB4AHgAcAB0AGwAeAB0AHgAfAB0AHgAdACAAHwAgAB0AHgAgAB8AHwAhACAAHwAgACEA"), 2.17544, PackedByteArray("AAABAAIAAAADAAEAAgABAAMAAAACAAMAAgAEAAMAAgADAAQABAAFAAYABQAEAAYABQAHAAYABwAIAAYABQAGAAgABwAJAAgABQAIAAkABQAJAAcACgALAAwACgAMAAsA")], +"material": SubResource("StandardMaterial3D_iuiy0"), +"name": "Material.001", +"primitive": 3, +"uv_scale": Vector4(0, 0, 0, 0), +"vertex_count": 300, +"vertex_data": PackedByteArray("KTlMQMIEqsA/E55ANQFOQOwMckDE3dNAX41gQL5EkcAwITS/0uZpQGSPlUAf4DW/MW1+QG2pksBx0I2/wqefQGJgk8AzTDQ+eT2kQGGZk0B6zs6+oaaUQD5/k8Ca2jw/XsWHQLaBk0C4coY/gWJyQJ9ok8D9bMk9FY6RQHNvk8BNmVK/BxSdQPiGk0BOuO4+A0yHQBV3k0AMH1Q/qINLQJU8q8A/P6dAlrxNQMMEqsBiEp5AyH1MQOwMckCi3tNASMhLQEadb0ChCt1ALjRrQIaFlUC1xDG/drCLQHCCk0BZsba/As+ZQDNqk8B821G/GAOiQGOMk0BlChE/6tqHQEmHk0AoboI/8UVpQI59k0D7nAe/fgGSQOB0k8CWF1m/cWeFQGt/k0COaJa/ymGdQPiJk0BQDPu+vsqOQAJ0k8AEuQo/WoOAQNVxk8D8QYa+y0qBQDB/k0C+ZCa/hJSXQLh2k0B2g9O+wEeOQLh2k8D+kt2+OvOOQLh2k8DXxX0+hh6IQIR4k0D/JgA/BCmIQNFFk8DTNRW+GzqBQHRsk8BC6IC+c42HQKGpk0B5okK+TJGTQFAzk0CoDxC/TtyHQIdkk8DHepI9LhyHQC9nk8AaP4o9FM2HQGlyk0DefAc/oSCPQAl9k8AYm44+/vuXQLh2k0BDkI0+bqeYQGlwk0AGFZU+mqWOQAh9k8Dot+u+DOCRQGlwk0CVITS/16l2QA6Dk0AHALm+63p4QMKIk0BXk6M+3aOIQCt6k8B+kRM/QfSYQANzk8DxnbI+gaaZQAprk8Cd69w9ju2fQI6Fk0DG5Qw+KiqVQMh/k0ARHIa/PGuBQDZ0k8AtN1e/HfyAQON5k8Bu1l2/W7VqQBqDk0D4DQW/C+FwQPltk8AUxM89wPVxQKKOk0DzMjg/Fj96QChok8BewRI/CG2UQFh5k8BfIjU/1IKjQPWdk0Asfcq+ojWZQG5lk8Bo60y/tZORQLh8k0BYCbK/oxB+QNOrksC0vZG/L4KLQAqAk0Cdnrq/ScVaQAFYksBvTQG/+A5cQNxyk0D/5so+lo+JQOtak8AQAdq98S2IQI2rk0A5hTC+GFaIQB4/k8DqhOu9YL6TQAM6k0DVMgi/F++IQNdck8CLO/69sfGDQFyXk0DqjTY+W1uJQNN7k8C/ooY+0rGEQASak0DJqzo+WLCQQGhwk0Afgww/8oKQQLh2k0D8pgQ/NP2SQLl2k8ByJ4O9rr6TQAl9k8DJ0IW96D+YQGhwk0AmCtu+MoKRQLh2k0AgDy2/WCiJQMBwk0Co2ki/AN2AQFF5k0DLDS2/Whd4QG6Ik0BPprO+/lqBQDtsk8ATIF0+z6aAQJpxk8AO+2g+jBJ3QGODk0DZgKk+JICHQPF8k0CKVUw/uv1/QG19k0AIQCA/i+KOQOR5k8A6vxI//DaXQLh6k0DgTD4/pOCWQHyAk0AREDc/Kr+dQI2Bk0AxSvY+bmeaQE9wk8C1k+I9aN2YQBVxk8BCNte+0iWYQM5rk8BxENK+YhmeQLCEk0AWGQC/wraUQDSFk0Dq3IK/nEOFQMd5k0CsYZq/ryR7QOV4k0DdNom/3ApnQHWMk0ChbMk9ZollQBuHk0C5w889cRxzQMaTk0CK8zI/yGV7QAVjk8D+gQ0/jjCHQNxwk8BL6Ew/GkaHQEprk8Ai30Q/VjGWQJd3k0AT9nQ/8GqWQLBxk0BKrnw/aqSeQIBuk8Bkq9c+dEmdQDl4k0AtBFg/Sq6iQE2Hk0BH0hQ/D2egQBFlk8CnWDk+gCWlQFqUk0BdIYA+F6WfQDVhk8AYma6+w7WcQICTk0B2m3S/I0+dQLiOk0CMi3m/6AyQQDR5k8BEg5W/3j+RQOeBk0BWZK6/Ss2HQCpxk8Ajfpq/FNCHQE92k8ARiZ6/k6lqQHu3kcDIFHO/Z2BrQDi6kcBu82u/DUl6QD4JlUCI1ZC/OFV7QHIBlUAk642/kI9dQLNuk0CO1cw+K49cQPKrkcCARCK/OspZQLBPlcCujIk9zUZYQK9PlcC3w4k9y/dSQEGNgUC1qZNAFgdNQJY8q8BkPqdAtEtNQEadb0DDCd1AzqyJQLh1k8AD7m8+chaSQLh2k8CStRY+4sGSQAh9k8AavyU+V2aaQGlwk0BcO5293KSZQLh2k0DPkZq9Uq+RQLh2k8CsP5G+tlqSQAh9k8Bkxpi+HzSJQIJ2k8DBdfO+ZyuJQM58k8CfzgG/EDGJQAt3k0DoxkC/h/yDQFtxk8DykNO+vI6DQDp3k8AN4+C+tFyAQK5qk8Bq8HC8FjZ/QPhvk8AouXS8qwt0QL6Fk0CflI68/Y51QAiLk0CqsYy8h26EQFdwk8CPM9Y+S+CDQOl1k8AdLeE+GY2AQACDk0A+wxo//teIQFF0k8D0xws/+HSPQCh3k0C44FQ/LF2PQAp9k0B92kw/75+UQGhxk8DA0/Q+RvaUQCx3k8CzpgE/H0mYQJhtk8AJDKs+oiyfQNOKk0CoEQo+x2aZQAVrk8DdShy++yaaQElwk8D0QSC+0qefQKeFk0B0aT++nueeQOmKk0BMcju+sYiVQFVtk8AFxCO/yiiWQKpyk8DFUCi/FqyaQLGCk0DCWky//QuaQAeIk0ABzke/NlmMQMVxk8DQmmy//4eMQFB3k8B6c3S/R6eNQHN8k0Bx8Ji/f3iNQP2Bk0AaBJW//K2GQJZzk8DJn26/KIqGQDx5k8AGkna/7gJ8QJF+k0A+54W/qsp6QB5zk8Bl0Ci/wIp5QMB4k8AyXy2/uIdwQFh6k0BFRFG/o8dxQPl/k0B4tUy/Po91QJNwk8Cqbdq+1B90QB92k8Cvi9++NQBzQNxsk8AsSim+6n9xQFNyk8BNVC2+6C9mQPGBk0C5TWG+MrBnQGeHk0C0Q12+gV51QNVkk8CXLK8+p/hzQAxqk8C4XLU+fIFpQCmMk0CBYto+V+dqQF2Rk0BWMtQ+eQuCQORkk8BjTTM/Jq+BQCJqk8AUaTo/6yJ/QMCLk0ChWHE/j9t/QP2Qk0DnPGo/frONQIJ1k8BREUM/J8iNQFd7k8BuG0s/u2CPQKh1k0AIsIU/E0yPQHx7k0D8qoE/rymaQAB0k8Dw5RY/8p2aQK55k8BcXR0/MdWcQOZ9k0C+jFE/OPmdQGtpk8CoG9A+MmakQAmZk0BXNns+oeSfQIZck8BJTZy966WgQBlhk8DkYqC9XHqlQISZk0AXlai9ErmkQBeek0BYf6S9ceqeQKFck8DKR6q+M5ycQOBfk8CzrRO/CEmdQIdkk8D8Uxe/02mhQGqVk0D3WjS//rygQBGak0CmtDC/Kt6UQHpsk8AEZ36/9VyVQGtxk8DqQYK/LBCYQDOGk0CtpJq/YZGXQCSLk0BFlpe/EbmPQAV0k8BA3pG/O9eLQKt2k0AkQru/cdSLQNB7k0A4N7e/HayGQIkTlEBjIrC/hweHQMsQlEC2kay/WGtmQN5QkcBvhFW/LF9lQBNJkcA4WVu/84liQHYckcDSikW/mTxhQJkSkcA6pkm/uBtfQJQ8kcDliDa/WcVhQI77lEDk7h6+ADdjQGLzlEAUUBW+yhBeQJiukcCkqSG/tkhcQAJYksBQVAG/8qtaQARjkUByc2M/YC9cQARjkUCMbGM/Y0dbQB5Fk8D7Cr2+9sNZQB1Fk8A4/by+cPZZQDArkEDIaZY/3nlbQDArkEBXZpY/vH9aQNwXlMAGumC+UPxYQNsXlMCBnmC+70BZQFzzjkDQGbs/XMRaQFzzjkBcFrs/a4tYQIi7jUDbyd8/2A5aQIi7jUBoxt8/uhRZQISHlsBVI7U+TZFXQIOHlsAYMbU+6tVXQLSDjED0PAJAWFlZQLSDjEA6OwJAOF9YQFi/l8DB8SM/y9tWQFe/l8Ci+CM/aCBXQOBLi0D5lBRA1qNYQOBLi0A/kxRAs6lXQCz3mMDXUW0/RiZWQCv3mMC4WG0/42pWQAwUikD+7CZAUO5XQAwUikBF6yZANPRWQAAvmsD2WJs/yHBVQP8umsBnXJs/ZrVVQDnciEADRTlA0zhXQDnciEBKQzlAsD5WQNRmm8ADCcA/RLtUQNNmm8BzDMA/3/9UQGSkh0AInUtATINWQGSkh0BPm0tAMIlVQKeenMAPueQ/xAVUQKaenMB/vOQ/X0pUQJFshkAP9V1AzM1VQJFshkBW811ArNNUQHzWncCMtARAQFBTQHvWncBFtgRA3pRTQLw0hUAUTXBATBhVQLw0hUBbS3BALB5UQE8On8CRDBdAwJpSQE4On8BKDhdAW99SQOn8g0CNUoFAyGJUQOn8g0CwUYFArGhTQCRGoMCYZClAQOVRQCNGoMBRZilA1ylSQBXFgkCQfopARK1TQBXFgkC0fYpAJbNSQPh9ocCdvDtAuC9RQPZ9ocBWvjtAXnRRQEGNgUCSqpNApf1RQMu1osCiFE5AOHpQQMq1osBbFk5A1r5QQG1VgECU1pxAREJSQG1VgEC41ZxAJEhRQJ/to8CobGBAuMRPQJ/to8BgbmBAUAlQQDM7fkCVAqZAvYxRQDM7fkC5AaZApJJQQHMlpcCtxHJAOA9PQHIlpcBlxnJA1lNPQIvLe0CZLq9ARNdQQIvLe0C9La9AHd1PQEhdpsBZjoJAsFlOQEZdpsA1j4JAT55OQONbeUCaWrhAvCFQQONbeUC+WbhAlidPQBuVp8BduotAKqRNQBqVp8A5u4tAz+hNQDvsdkCdhsFAPGxPQDvsdkC/hcFAHHJOQO/MqMBf5pRAsO5MQO/MqMA755RATjNNQJN8dECesspAvLZOQJN8dEDBscpAfjpxO////79wu326NsZlnQi92UOWO8CcwjZazf///78XkxJG/DTUiwA9KzsVve+hJMg2xP///78Al1RK////P6R09bX///8/YcHNPORBpqG9XPxH6s04k/89qdJQMFSbG2qWsP///z/mUyRP////P97CHj2MN4Cc4UIgvf///z9uVMSj////PxGxLbnItQ2lX50oswqWN6NLyhYv////v7M8gdAwMi+bm77q9frKjoUGNnjF////v1jN9iX///+/uIs9wgCP7abOSla9r0X+pCM99wkwi1+jqjbDN////7+vnvO+j6clqvRRG76BScqnnGNxRGzQpZDGQKARq5eOqOW4A+fm2gaTdOE96v///78ftLVEojZznI0xLc7///+/bdSS7P///7+duuw4ozqGo5c7Q0X///8/hltNq////z97lchN////Pw5AJ9XZLa2borX4r////z/Qzqgg////v2/RbN7///+/2jNYxv///7/8wRTNIczbnH1qMk3///8/ObTlS////z9XPqc8ir5moZjAALr///8/5M/92P///79ZonVHlTFFk3syPCX///+/srSXva+6J6XaQRVD////P71QdLH///8/KFIDTP///z8ZOeMVpJd1pQ5JyL1jRE6kplGGSUjKqJcuznrj////v+Az0Bv///+/zzc/7f///7+aNsI62Ecf3Pc+EMH///+/db4QXp5N4JDQq3G8CbL7p3nGU6vmq7qaZ7/hsOite59NKezP////v9866Lj///8/HVynUf///z+zt3DIuslNow6WdK////8/9kTl73sru4tMQhg/usIyoATClUD///+/Jc5hyf///79oZUy/oF7Xqcw2bvz///+/OS6k2f///7+usam+irp8pirFUjXtR1ikCEhrSP///z8fRs+0////P4C9Ae8T0uaKf1JdsP///z9yihNG////P7GhRK////8/nz035JgtJZGvtZix////PwW+G0P///8/o8ZmOP///79gSLRFp8ZBnHbJccX///+/SF4fu1FZbajOM2nx////v2kva9n///+/ab4xxmXGdKAhPzC6////P1nFRdZYz3GXWsimK+JRIaZ3dJZH////P5HBBArDdAekbzwo6xUy2Yvel42y////P5+0g0r///8/Daj7r////z/htfOy////P5S8NkT///8/h74ouf///z+zxeA5////vyVTK7kKUI+mxsyjz////7/izFEc////v8Vmj7sjY52nrn1wOo3H1IBTO1oD////v3oxiCT///+/J5nqRUwx0JC9MyvZ////vyepLreJqWSmx7frufvDu5/tNBw6XUUC397CHj2MN4CcfTpyO////79wu326NsZlnVeqm05LOMyOFKrlo12iU5zjvF8aZ1nOq0M8kC3ktSOn2bMtTf///z+Kxfq7////vyxG1sTTO1ejKU+nRZvLdJr9yoY0////v9eCyzthOCaCkTqWA////7/ogkvIXITbpTKgWUSrLsqTcDC9Jf///78vv5w+kT/eoFE/Q0H///8/ezziu////z/8u4zE5sTLoRDIUyl0U5Sm51OxTP///z+cxJXYmNCWlr3A8BH4aaun2Ipxtv///z/jQIj2yDWPhS06PR01oqqn4aAOTv///z/VOnYvk7UupolBOcbHOZGgrELgQnrCZp5kwug8////v1TFbsD///+/fkUzwJRA2KIsUDtIicrPmG/KVDH///+/Nc38zP///787Uty6XE3ppihw50JTy+2IWMq6Ef///78RzdDt////v+NwacAxbiWnkow/QTE1goemNgoO////v3egKLznpuSowK85SJE1C5loNVkx////vzszWs3///+/GK5HuraylKZot/FFgjlNnF85DTj///+/Qr0dQ+M9gp6rPcI8////v4c6lsD///+/dromwJK/x6I8xoA1KkkWpD1JEkj///8/GUcytf///z84w/7McctRnErHWx3JX9emC2AaTf///z9aX3mw////PzPE0OOA0B6QqDyrCOKIZKJUiFpE////PyyJKLj///8/QUBE+AY4d4T3NxwkFajvphWnP03///8/KTs+3RMvIpS2OTcxlLVPpfI/GcfsOHmfm0EaQczBR5+cwcU+////vwnEzL7///+/QUSIwdo+PKLkRt1EvcXvnBhM0UdfyFCaZciCNP///7/fyuvJ////v+RN2bo/SqKl3FjzSd7LWZTCy2Io////vz7OpNb///+/FFrNuBFXTac9ZklGi81sjuDKxf7///+/YYYXyM2EyaYZNczj////v7+i9bXWnsilF6TOSckz6pQ5M2Us////v5+vCEQ0M5yb0zDiNv///78JNsE2GkNc3c88k8b///+/MreXuGG9T6F6vv87bzeBnhzDJzzcOkee/UE1vv///z+Fuq+5MsXrnZvDZzvaOLWdOTinOf///79rQsm9////P/O67LmAxbCdlsL4O1U3H52oOeE6////v7dCXb3///8/RLtHugLGe53hQiC9////P3C7fbo2xmWd3sIePYw3gJx9OnI7////v+FCIL3///8/cLt9ujbGZZ3ewh49jDeAnH06cjv///+/4UIgvf///z9wu326NsZlnd7CHj2MN4CcfTpyO////7/hQiC9////P3C7fbo2xmWd3sIePYw3gJx9OnI7////v+FCIL3///8/cLt9ujbGZZ3ewh49jDeAnH06cjv///+/4UIgvf///z9wu326NsZlnd7CHj2MN4CcfTpyO////7/hQiC9////P3C7fbo2xmWd3sIePYw3gJx9OnI7////v+FCIL3///8/cLt9ujbGZZ3ewh49jDeAnH06cjv///+/4UIgvf///z9wu326NsZlnd7CHj2MN4CcfTpyO////7/hQiC9////P3C7fbo2xmWd3sIePYw3gJx9OnI7////v+FCIL3///8/3sIePYw3gJx9OnI7////v+FCIL3///8/cLt9ujbGZZ3ewh49jDeAnH46cTv///+/4UIgvf///z9wu326NsZlnd7CHj2MN4CcfTpyO////7/hQiC9////P3C7fbo2xmWd3sIePYw3gJx9OnI7////v+FCIL3///8/cLt9ujbGZZ3ewh49jDeAnH06cjv///+/4UIgvf///z9wu326NsZlnd7CHj2MN4CcfjpxO////7/hQiC9////P3C7fbo2xmWd") +}] +blend_shape_mode = 0 +shadow_mesh = SubResource("ArrayMesh_lw2q8") + +[node name="Node3D" type="StaticBody3D" node_paths=PackedStringArray("outline_mesh", "card_ui")] +collision_layer = 16 +script = ExtResource("2_kobsv") +outline_mesh = NodePath("Node3D/Plane") +card_ui = NodePath("SubViewport/Node2D") +hover_text = "[center]#Interact# to pick up" +metadata/_custom_type_script = "uid://bj7oafusrrsk" + +[node name="CollisionShape3D" type="CollisionShape3D" parent="."] +shape = SubResource("BoxShape3D_2u312") + +[node name="SubViewport" type="SubViewport" parent="."] +transparent_bg = true +size = Vector2i(352, 512) + +[node name="Node2D" parent="SubViewport" instance=ExtResource("6_etati")] +position = Vector2(-56, 0) + +[node name="Sprite3D" type="Sprite3D" parent="."] +transform = Transform3D(0.13, 0, 0, 0, 0.13, 0, 0, 0, 0.13, 0, 0, 0) +visible = false +billboard = 1 +no_depth_test = true +fixed_size = true +texture = SubResource("ViewportTexture_b2a1t") + +[node name="Node3D" type="RayCast3D" parent="."] +target_position = Vector3(0, -2, 0) +script = ExtResource("3_b2a1t") +bounce_speed = 0.5 +spin_speed = 0.7 +curve = SubResource("Curve_kobsv") +metadata/_custom_type_script = "uid://cl2mi4bnpatwk" + +[node name="Plane" type="MeshInstance3D" parent="Node3D"] +transform = Transform3D(0.183, 0, 0, 0, 0.153, 0, 0, 0, 0.137, -0.64295, 0.0293462, -0.313285) +mesh = SubResource("ArrayMesh_kobsv") +skeleton = NodePath("") +surface_material_override/0 = ExtResource("5_2u312") + +[node name="Plane2" type="MeshInstance3D" parent="Node3D"] +transform = Transform3D(0.183, 0, 0, 0, 0.153, 0, 0, 0, 0.137, -0.64295, 0.0293462, -0.313285) +mesh = SubResource("ArrayMesh_75s6s") +skeleton = NodePath("") + +[node name="RemoteTransform3D" type="RemoteTransform3D" parent="Node3D"] +remote_path = NodePath("../../CollisionShape3D") +use_global_coordinates = false diff --git a/plan_mat.tres b/plan_mat.tres new file mode 100644 index 0000000..a0e8128 --- /dev/null +++ b/plan_mat.tres @@ -0,0 +1,6 @@ +[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dlftx7c32euh0"] + +[ext_resource type="Texture2D" uid="uid://dds48gjgiyjp6" path="res://plan_plan_tex.png" id="1_jpetr"] + +[resource] +albedo_texture = ExtResource("1_jpetr") diff --git a/plan_plan_tex.png b/plan_plan_tex.png new file mode 100644 index 0000000..fea01e0 Binary files /dev/null and b/plan_plan_tex.png differ diff --git a/plan_plan_tex.png.import b/plan_plan_tex.png.import new file mode 100644 index 0000000..253ed8a --- /dev/null +++ b/plan_plan_tex.png.import @@ -0,0 +1,38 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dds48gjgiyjp6" +path.s3tc="res://.godot/imported/plan_plan_tex.png-901144cd225dba1a169b1b1548c880b8.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} +generator_parameters={ +"md5": "f6894ba0243c1df76fb5fa0fd58f104b" +} + +[deps] + +source_file="res://plan_plan_tex.png" +dest_files=["res://.godot/imported/plan_plan_tex.png-901144cd225dba1a169b1b1548c880b8.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/project.godot b/project.godot index a702460..df5c114 100644 --- a/project.godot +++ b/project.godot @@ -12,14 +12,14 @@ config_version=5 config/name="Decked Out Defense" run/main_scene="res://Scenes/Menus/MainMenu/main_menu.tscn" -config/features=PackedStringArray("4.2", "Forward Plus") +config/features=PackedStringArray("4.4", "Forward Plus") config/icon="res://Assets/Textures/icon.svg" [autoload] Data="*res://Scripts/data.gd" -Game="*res://Scripts/game.gd" WaveManager="*res://Scripts/wave_manager.gd" +Game="*res://Scripts/game.gd" [debug] @@ -31,6 +31,10 @@ gdscript/warnings/inferred_declaration=2 window/size/viewport_width=1920 window/size/viewport_height=1080 +[editor] + +export/convert_text_resources_to_binary=false + [file_customization] folder_colors={ @@ -50,48 +54,48 @@ import/blender/enabled=false [gui] -theme/custom="res://new_theme.tres" +theme/custom="res://UI/new_theme.tres" [input] "Move Forward"={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":70,"key_label":0,"unicode":102,"location":0,"echo":false,"script":null) ] } "Move Left"={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":114,"location":0,"echo":false,"script":null) ] } "Move Right"={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":84,"key_label":0,"unicode":116,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":84,"key_label":0,"unicode":116,"location":0,"echo":false,"script":null) ] } "Move Backward"={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) ] } Jump={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194328,"key_label":0,"unicode":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194328,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } Sprint={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":90,"key_label":0,"unicode":122,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":90,"key_label":0,"unicode":122,"location":0,"echo":false,"script":null) ] } Interact={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":80,"key_label":0,"unicode":112,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":80,"key_label":0,"unicode":112,"location":0,"echo":false,"script":null) ] } "Open Text Chat"={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194309,"key_label":0,"unicode":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194309,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } "Primary Fire"={ @@ -106,17 +110,17 @@ Interact={ } Ready={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":71,"key_label":0,"unicode":103,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":71,"key_label":0,"unicode":103,"location":0,"echo":false,"script":null) ] } Pause={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } "Equip In Gauntlet"={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) ] } "Select Next Card"={ @@ -131,7 +135,22 @@ Pause={ } "View Map"={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194306,"key_label":0,"unicode":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194306,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +Crouch={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +"Equip Primary Weapon"={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":49,"key_label":0,"unicode":49,"location":0,"echo":false,"script":null) +] +} +"Equip Secondary Weapon"={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":50,"key_label":0,"unicode":50,"location":0,"echo":false,"script":null) ] } diff --git a/shot1.wav b/shot1.wav deleted file mode 100644 index 8fd2309..0000000 Binary files a/shot1.wav and /dev/null differ diff --git a/visualized_path.tscn b/visualized_path.tscn new file mode 100644 index 0000000..1b231cd --- /dev/null +++ b/visualized_path.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=3 format=3 uid="uid://bi8f3vowymalg"] + +[ext_resource type="Script" uid="uid://cd500cyj1tdyw" path="res://Scripts/visualized_path.gd" id="1_kqywm"] + +[sub_resource type="Curve3D" id="Curve3D_suxqu"] + +[node name="VisualizedPath" type="Path3D"] +curve = SubResource("Curve3D_suxqu") +script = ExtResource("1_kqywm") diff --git a/world_test.tscn b/world_test.tscn new file mode 100644 index 0000000..47365a6 --- /dev/null +++ b/world_test.tscn @@ -0,0 +1,42 @@ +[gd_scene load_steps=7 format=3 uid="uid://c6udxwlq3h1p3"] + +[ext_resource type="PackedScene" uid="uid://ca174636iktc6" path="res://bridge.glb" id="1_avm4t"] +[ext_resource type="PackedScene" uid="uid://dxgxbtf68lcv5" path="res://PCs/hero.tscn" id="2_o0eve"] + +[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_o0eve"] +sky_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) +ground_horizon_color = Color(0.662243, 0.671743, 0.686743, 1) + +[sub_resource type="Sky" id="Sky_6ivlp"] +sky_material = SubResource("ProceduralSkyMaterial_o0eve") + +[sub_resource type="Environment" id="Environment_o8y75"] +background_mode = 2 +sky = SubResource("Sky_6ivlp") +tonemap_mode = 2 +glow_enabled = true + +[sub_resource type="BoxShape3D" id="BoxShape3D_avm4t"] +size = Vector3(100, 1, 100) + +[node name="Node3D" type="Node3D"] + +[node name="WorldEnvironment" type="WorldEnvironment" parent="."] +environment = SubResource("Environment_o8y75") + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(-0.866023, -0.433016, 0.250001, 0, 0.499998, 0.866027, -0.500003, 0.749999, -0.43301, 0, 0, 0) +shadow_enabled = true + +[node name="bridge" parent="." instance=ExtResource("1_avm4t")] + +[node name="bridge2" parent="." instance=ExtResource("1_avm4t")] + +[node name="StaticBody3D" type="StaticBody3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2.47564, 0) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"] +shape = SubResource("BoxShape3D_avm4t") + +[node name="Hero" parent="." instance=ExtResource("2_o0eve")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 17.5001, -1.93117, 29.4459)